Commit Graph
100 Commits
Author SHA1 Message Date
Turtle f266121f10 test(ui-primitives): drop unnecessary template literals 2026-10-26 19:28:41 +08:00
Turtle ca40dc544e fix(ui-primitives): end bare URLs before astral symbols and add Web snapshot 2026-10-26 19:10:55 +08:00
Turtle b84fea6768 fix(client): guard retained files trees by binding
Split the store's restore seed from start, accept a retained tree only
from the binding that currently owns the tab, drop the new unknown cast
in the body harness, document the watch lifetime limitation, and expect
the e2e Files directory to stay expanded after a Session round trip.
2026-10-26 18:58:55 +08:00
Turtle bdfc0c1d12 fix(ui-primitives): end bare URLs before CJK punctuation 2026-10-26 18:43:12 +08:00
Turtle b4c2706c41 fix(client): keep files tree view across session switches
The Files tab's session-scoped store is released when the reader leaves
the Session, so returning reseeded a fresh tree at scroll offset 0 with
every directory collapsed. Retain each tab's last drawn tree in the face
per Session and tab, seed the next store with it, and replace the
earlier binding's watches.

Fixes #7361
2026-10-26 18:37:44 +08:00
Turtle 884077bf72 Merge pull request #7043 from deepseek-harness/turtle/cross-session-path-link-9836d52f7a4d
fix(ui-conversation): decorate pasted file and folder paths as whole tokens
2026-10-26 16:45:25 +08:00
Turtle deebbf3191 fix(ui-conversation): decorate pasted file paths as whole tokens
Closed @"…" paths and unquoted @ tokens with a separator or extension now decorate in full, matching the spans the sent message renders as references.
2026-10-26 16:33:21 +08:00
Turtle 93fefc4fbd Merge pull request #7153 from deepseek-harness/turtle/resume-blocked-goal-f1301e734784
fix(ui-goal): offer resume for a blocked goal
2026-10-26 16:12:15 +08:00
Turtle 9a6ab782fc Merge pull request #7120 from deepseek-harness/turtle/plugin-preview-image-e7b209c5fe5a
docs(plugin-market): redraw the feature preview after the real Discover tab
2026-10-26 16:08:21 +08:00
Turtle 699cecb83d Merge pull request #4719 from deepseek-harness/fix/toolcall-unused-args
fix(tools): tolerate unambiguous optional arguments
2026-10-26 16:06:45 +08:00
Turtle 093457deb0 Merge remote-tracking branch 'origin/master' into turtle/plugin-preview-image-e7b209c5fe5a
# Conflicts:
#	packages/experimental/plugin-market-bundle/docs/DETAIL.md
#	packages/experimental/plugin-market-bundle/docs/DETAIL.zh.md
2026-10-26 14:56:56 +08:00
Turtle e409f6a7f8 Merge remote-tracking branch 'origin/master' into turtle/take-over-4719-fa0c7f5f8327
# Conflicts:
#	packages/fs/tool-fs-search/tests/integration.spec.ts
2026-10-26 12:56:58 +08:00
Turtle 63a67f9ef1 Merge remote-tracking branch 'origin/master' into turtle/take-over-4719-fa0c7f5f8327 2026-10-26 12:31:19 +08:00
Turtle da3055de3e Merge pull request #7048 from deepseek-harness/turtle/plugin-detail-pages-5c09dd3d0a33
docs(experimental): move plugin detail text into descriptions
2026-10-26 11:39:55 +08:00
Turtle a9fe502214 Merge remote-tracking branch 'origin/master' into turtle/plugin-detail-pages-5c09dd3d0a33
# Conflicts:
#	snapshots/web/plugin-recommendations/session.v4.jsonl
2026-10-26 11:22:27 +08:00
Turtle daf7a0cc43 refactor(scripts): share npm os/cpu matching for pnpm pruning
Move the release verifier's npm platform check into scripts/npm-platform.ts and use it when pruning pnpm's bundled packages, so negations, 'any' and invalid fields follow npm. Skip non-directories and name the manifest on invalid fields.
2026-10-26 03:25:12 +08:00
Turtle 44494c0c83 fix(desktop): drop other targets' native packages from bundled pnpm
pnpm's npm package carries reflink bindings for darwin-arm64, darwin-x64, win32-arm64 and win32-x64. The primary runtime copied all of them, so the Apple silicon app contained an x86_64 Mach-O module that triggers macOS's Intel app warning. Prune packages whose os/cpu fields exclude the target and bump the payload format.
2026-10-26 02:37:23 +08:00
TurtleandYudong Han 2a2664cd21 chore(client-ui-conversation): regenerate slot catalog and README pairing
Co-authored-by: Yudong Han <[email protected]>
2026-10-24 22:27:58 +08:00
TurtleandYudong Han 8b48ec1673 fix(client-ui-conversation): clip header actions without a scroll timeline
Fade overflowing actions inside the gap before the next header control and
clip with overflow: clip, so no animation stays attached to the header and
focus cannot scroll the title area.

Co-authored-by: Yudong Han <[email protected]>
2026-10-24 22:00:35 +08:00
TurtleandYudong Han 585fc2577a fix(client-ui-conversation): drop the header fade without scroll timelines
Co-authored-by: Yudong Han <[email protected]>
2026-10-24 20:48:24 +08:00
TurtleandYudong Han bf75167423 fix(client-ui-conversation): fade overflowing header actions before the utilities
Co-authored-by: Yudong Han <[email protected]>
2026-10-24 20:36:49 +08:00
Turtle 685b4fc5b3 test(ui-goal): pin the blocked goal strip and simplify resume visibility 2026-10-24 18:01:29 +08:00
Turtle 83644b6b37 fix(ui-goal): offer resume for a blocked goal
The goal service and /goal resume accept blocked goals, and editing keeps
the phase blocked, but the Web goal bar showed only edit and clear, so a
Web user could not continue a blocked goal after editing it.

Refs #1425
2026-10-24 17:26:02 +08:00
Turtle d3da3b7640 fix(tool-ask-user): share skip guidance with the timed description
Refs #7134
2026-10-24 13:39:08 +08:00
Turtle 94ed636380 fix(tool-ask-user): tell the model a skipped question is answered
The blocking ask_user_question description did not explain that an answer
item with empty selected and no custom is a user skip, so models re-asked
the same question after the user clicked Skip.

Refs #7134
2026-10-24 13:23:53 +08:00
Turtle 376e00b639 docs(plugin-market): show the plus icon on the preview's Add button 2026-10-24 04:05:57 +08:00
Turtle e43acd19d1 docs(plugin-market): redraw the feature preview after the real Discover tab
The preview now shows an index URL being added and the Discover tab that lists its plugins, with the segmented Installed/Discover switch, index menu, search field, framed icons, and the Install, Installed, and Update available actions used by the real page.
2026-10-24 03:10:47 +08:00
Turtle b268c91066 docs(experimental): keep plugin descriptions to high-level behavior
Shorten the experimental plugin descriptions to what each plugin does and
how to use it, and keep the official-plugin catalogs unchanged.
2026-10-23 20:59:10 +08:00
Turtle faba7faa92 Merge remote-tracking branch 'origin/master' into turtle/plugin-detail-pages-5c09dd3d0a33 2026-10-23 20:49:27 +08:00
Turtle 4c4f88af86 fix(experimental): keep plugin risks in descriptions and bound skill catalogs
Add the remaining material risks to the experimental plugin descriptions,
serialize only English descriptions in the official-plugin catalogs so the
skill results stay below their previous size, and read description test
literals from the locale resources.
2026-10-23 17:43:22 +08:00
Turtle 91bc8630c4 test(snapshot): port unused-argument fixtures to current runtime context 2026-10-23 17:10:15 +08:00
Turtle d838d7ba79 Merge remote-tracking branch 'origin/master' into turtle/plugin-detail-pages-5c09dd3d0a33
# Conflicts:
#	packages/experimental/plugin-recommendations/README.i18n.yaml
#	packages/experimental/plugin-recommendations/README.md
#	packages/experimental/plugin-recommendations/README.zh.md
#	snapshots/web/creation-recommendations/session.v4.jsonl
#	snapshots/web/plugin-recommendations/session.v4.jsonl
2026-10-23 16:55:56 +08:00
Turtle 7c385c957c Merge remote-tracking branch 'origin/master' into turtle/take-over-4719-fa0c7f5f8327
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml
#	apps/web/tsconfig.json
#	packages/client/ui-tool/README.i18n.yaml
#	packages/client/ui-tool/README.md
#	packages/client/ui-tool/README.zh.md
#	packages/client/ui-tool/src/client/tool/models/raw-tool-call.ts
#	packages/client/ui-tool/tests/diff-card.client.spec.tsx
#	packages/client/ui-tool/tests/terminal-card.client.spec.tsx
#	packages/fs/tool-fs-search/README.i18n.yaml
#	packages/fs/tool-fs/README.i18n.yaml
#	packages/fs/tool-fs/README.md
#	packages/fs/tool-fs/README.zh.md
#	packages/fs/tool-fs/src/sandbox.ts
#	packages/goal/tool-goal/README.i18n.yaml
#	packages/goal/tool-goal/tests/tool-goal.spec.ts
#	snapshots/session/headless.snapshot.ts
#	tsconfig.host.json
2026-10-23 16:46:40 +08:00
Turtle 0b8eabaf66 fix(dockkit): record the strip offset when the strip unmounts
Reading scrollLeft in the layout cleanup also captures positions that fire no
scroll event, such as a restore the browser clamps to the current offset.

Refs #7049
2026-10-23 16:27:34 +08:00
Turtle c403ca4d77 fix(ui-conversation): end closed quoted folder tokens at the quote
A closed @"dir/" followed directly by text stays a folder reference, as in the sent-message rule; add a paste regression for the composer marks.
2026-10-23 15:57:24 +08:00
Turtle 7623307aaf fix(dockkit): continue the tab strip from its last offset on selection changes
Each tab host draws its own strip while selected, so every open, close, or
selection mounted a strip at offset 0 that then glided across the whole row
to the active chip. Record each pane's chip-box offset in TabLayout, jump a
new strip to it, and glide only the remaining distance; a first placement
with no recorded offset jumps.

Refs #7049
2026-10-23 15:33:11 +08:00
Turtle a3110727ca docs(experimental): keep material plugin risks in descriptions 2026-10-23 15:19:16 +08:00
Turtle 64f4efe31d fix(ui-conversation): decorate only whole folder tokens in the composer
A pasted file path such as @src/a.ts or @"dir/a b.md" styled its directory prefix as a folder reference.
2026-10-23 15:14:06 +08:00
Turtle 39bc53fbce docs(experimental): move plugin detail text into descriptions
Experimental plugin detail documents keep only their feature preview; each
bundle's meta.description states what it does, how to use it, and its
material risks.
2026-10-23 15:03:51 +08:00
Turtle 09c74eca30 Merge pull request #7018 from deepseek-harness/turtle/docs/unify-plugin-lists-b09478de437d
docs(official-bundles): state the util data-list exception and list contracts
2026-10-23 13:14:44 +08:00
Turtle b11d3ac198 docs(official-bundles): limit the protected-list contract to its own refusal 2026-10-23 12:56:17 +08:00
Turtle 2d130c7e61 Merge pull request #5610 from deepseek-harness/turtle/image-cache-stale-0a243f674e12
fix(client): reload overwritten local Markdown images in new renders
2026-10-23 12:44:17 +08:00
Turtle 3264972ac3 docs(official-bundles): state the util data-list exception and list contracts
Group READMEs no longer place the bundle lists under boot/, util/ names its
data-only exception, PROTECTED_PLUGINS states what removing a name allows,
EXTENSION_BUNDLES is described as a ranking, and the package README records
the browser inlining constraint.
2026-10-23 12:42:11 +08:00
Turtle b6380c865b Merge pull request #7012 from deepseek-harness/turtle/unify-plugin-lists-b09478de437d
refactor(util): collect hardcoded official plugin lists in dsh-official-bundles
2026-10-23 12:31:19 +08:00
Turtle 7f324909a9 docs(official-bundles): describe the plugin manager lists precisely 2026-10-23 12:12:38 +08:00
Turtle 9b4aacb41a refactor(util): collect hardcoded official plugin lists in dsh-official-bundles
Move @deepseek-ai/dsh-official-bundles from packages/boot to packages/util
and move the plugin manager's protected plugin list and the Web plugin
page's hidden, ordered, and experimental bundle lists into it, so editing
any of these lists no longer touches app-boot or either plugin manager
package.
2026-10-23 12:12:38 +08:00
Turtle b3189f6fad Merge pull request #6804 from deepseek-harness/turtle/subagent-picker-row-align-5fdaf8a5d12d
fix(web): align subagent switcher rows without a sidebar button
2026-10-23 10:31:22 +08:00
Turtle 918c01c1bf Merge pull request #6889 from deepseek-harness/turtle/menu-trigger-gap-a6ac85a85cd9
fix(ui-primitives): keep header menus next to their trigger on macOS desktop
2026-10-23 10:31:07 +08:00
Turtle 153b760fe8 Merge branch 'master' into turtle/subagent-picker-row-align-5fdaf8a5d12d 2026-10-23 10:19:27 +08:00
Turtle a0cbe9331c Merge pull request #6887 from deepseek-harness/turtle/trace-tab-indicator-clip-bede5ab93d0f
fix(ui-conversation): keep the active tab bar visible over Trajectory and widen tab targets
2026-10-23 10:14:02 +08:00
Turtle af5ab40ac5 Merge remote-tracking branch 'origin/master' into turtle/menu-trigger-gap-a6ac85a85cd9
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.md
#	packages/client/ui-primitives/README.zh.md
2026-10-23 10:01:13 +08:00
Turtle 424cde1de2 Merge pull request #6950 from deepseek-harness/turtle/preview-codemirror-slow-e4bae59874fa
fix(web): speed up lazy bundle loads in the Web preview
2026-10-23 09:56:19 +08:00
Turtle 06f960d705 Merge pull request #6984 from deepseek-harness/turtle/hover-truncated-text-e74d638a44b5
feat(ui-chat): show cut-off composer statistics in a tooltip
2026-10-23 08:40:51 +08:00
TurtleandTianyi Cui 747cbf13b6 Describe the ask approval policy by its meaning
Replace the literal "Approval policy: ask." runtime-context sentence
with a statement parallel to the never-policy sentence, and refresh the
current-generation fixtures that persist it.

Co-authored-by: Tianyi Cui <[email protected]>
2026-10-22 23:13:19 +08:00
TurtleandTianyi Cui 43149cd905 Sync approval switch notice snapshot and docs
Update the Web permission-policy snapshot, the config catalog line
reference and README text for the new switch notice; pin both switch
directions in the unit test.

Co-authored-by: Tianyi Cui <[email protected]>
2026-10-22 23:13:19 +08:00
TurtleandTianyi Cui c29cda3777 Clarify approval policy switch notice wording
Name each policy by its meaning in the model-visible switch notice so a
bare "never" is not read as "approval is never granted".

Refs #6496

Co-authored-by: Tianyi Cui <[email protected]>
2026-10-22 23:13:19 +08:00
TurtleandZiyaZhang 701c0a41c5 refactor(ui-primitives): measure tooltip clipping when the bubble shows
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-22 21:18:15 +08:00
Turtle d10f417f13 Merge pull request #6979 from deepseek-harness/turtle/rename-plugin-index-again-2424dbab6ad1
fix(plugin-market): present custom plugin markets as custom plugin indexes
2026-10-22 21:10:29 +08:00
Turtle 77b2d919c4 docs(plugin-market): fix index wording left by the rename 2026-10-22 20:42:15 +08:00
TurtleandZiyaZhang 9ede8f237d feat(ui-chat): show cut-off composer statistics in a tooltip
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-22 20:40:28 +08:00
Turtle 6c07e02afa fix(plugin-market): finish the plugin index wording and restore generated docs 2026-10-22 20:20:02 +08:00
Turtle 5b0e089f40 fix(plugin-market): present custom plugin markets as custom plugin indexes 2026-10-22 20:19:30 +08:00
Turtle 644eb3158e Merge pull request #6838 from deepseek-harness/turtle/market-install-allowbuilds-8b6f87a8284b
fix(plugin-manager): offer script approval for git-hosted packages
2026-10-22 15:52:14 +08:00
Turtle ca28551037 Merge remote-tracking branch 'origin/master' into turtle/preview-codemirror-slow-e4bae59874fa 2026-10-22 15:44:16 +08:00
Turtle b70735089d docs(plugin-manager): keep pendingBuilds JSDoc on one line 2026-10-22 15:38:14 +08:00
Turtle a8bf3e7600 fix(plugin-manager): harden git allowBuilds key parsing
Capture git keys that contain spaces, skip keys whose git URL carries a
credential, and isolate Git configuration for the real pnpm test.
2026-10-22 15:38:14 +08:00
Turtle 220301c614 fix(plugin-manager): offer script approval for git-hosted packages
pnpm 11 refuses to prepare a git-hosted dependency with
ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED instead of reporting ignored build
scripts. Classify that error as build-blocked and record the allowBuilds
key pnpm suggests, so the existing approval-and-retry flow applies.

Fixes #6837
2026-10-22 15:37:59 +08:00
Turtle 7df9a5a93b Merge pull request #6943 from deepseek-harness/turtle/git-https-source-auth-b46e6aff6136
fix(plugin-manager): install self-hosted Git plugins over SSH when only SSH can read them
2026-10-22 15:26:48 +08:00
Turtle f313e7911b Merge pull request #6564 from deepseek-harness/turtle/plugin-sticky-header-29bfdb179e18
feat(plugin-manager): pin the Plugins page title bar while scrolling
2026-10-22 15:15:12 +08:00
Turtle 39d973322b test(web): compare the worker Buffer with an unmodified Node reference
Vitest resolves the shim's `buffer` import to Node's built-in module, so
the differential spec patched and then compared the same implementation.
Mock node:buffer with the npm package the Worker bundle uses. Also keep the
UTF-8 encoding check symmetric, call the package methods directly, and
document that the patch applies to every Buffer user in the Worker.
2026-10-22 15:13:05 +08:00
Turtle b908e13271 Merge remote-tracking branch 'origin/master' into turtle/image-cache-stale-0a243f674e12
# Conflicts:
#	packages/api/session-controller/README.i18n.yaml
#	packages/api/session-controller/README.md
#	packages/api/session-controller/README.zh.md
#	packages/client/ui-primitives/README.i18n.yaml
2026-10-22 14:57:42 +08:00
Turtle f837cdbfbf Merge remote-tracking branch 'origin/master' into turtle/plugin-sticky-header-29bfdb179e18
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
2026-10-22 14:50:11 +08:00
Turtle c063b70b85 Merge pull request #6891 from deepseek-harness/turtle/sidebar-first-open-flash-c291a96690d1
fix(ui-sidebar-right): slide the panel in on its first open
2026-10-22 14:33:13 +08:00
Turtle 4b1d4c814e fix(web): speed up lazy bundle loads in the Web preview
The Web preview Worker converted multi-megabyte combo scripts and source
maps with the buffer package's JavaScript UTF-8 codec, and the page
re-encoded each source map to Base64 in JavaScript before running the
bundle. Use TextEncoder/TextDecoder for whole-buffer UTF-8 conversions
and FileReader for the inline source-map data URL.
2026-10-22 14:32:35 +08:00
Turtle f228c3ffa6 Merge pull request #6064 from deepseek-harness/turtle/async-notice-efficiency
feat(jobs): deliver job output in completion notices and drop repeated notice text
2026-10-22 14:30:55 +08:00
turtle1999 6f4ce88207 Merge remote-tracking branch 'origin/master' into turtle/async-notice-efficiency
# Conflicts:
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
2026-10-22 14:12:42 +08:00
Turtle cce67394c9 docs(config-catalog): regenerate after merging master 2026-10-22 14:11:15 +08:00
Turtle 8255ebe3cc Merge remote-tracking branch 'origin/master' into turtle/git-https-source-auth-b46e6aff6136 2026-10-22 14:09:45 +08:00
Turtle 420a7797f6 fix(plugin-manager): harden Git transport probe prompts, fragments and attribution
Refs #6938
2026-10-22 14:07:10 +08:00
Turtle 1b7923db9d refactor(ui-sidebar-right): start the first-open slide with @starting-style
Replace the layout effect that forced a closed style with an opening marker derived during render. A @starting-style rule under the marker starts items mounted by the opening at the closed position. The marker clears when a transition ends, the panel closes, or the panel leaves the screen.
2026-10-22 14:07:05 +08:00
Turtle f59f0dfc67 fix(plugin-manager): install self-hosted Git plugins over SSH when only SSH can read them
Refs #6938
2026-10-22 13:42:56 +08:00
Turtleandimccyu 140496c750 Credit review by @imccyu
Co-authored-by: imccyu <[email protected]>
2026-10-22 13:37:32 +08:00
Turtle 5f77d80555 Merge remote-tracking branch 'origin/master' into turtle/icon-tokens/icons-plugin-tokens-e20dec90761c
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
2026-10-22 13:24:28 +08:00
Turtle 2e0ce8d448 Merge pull request #6924 from deepseek-harness/turtle/extract-bundle-lists-349637056285
refactor(boot): move official bundle lists out of app-boot
2026-10-22 13:16:20 +08:00
Turtle bde671f984 test(web): ignore scroll-driven animations when waiting for settled layout
The model selector's clipped-text fade runs on a scroll timeline, which
never finishes, so document-wide waits never settled.
2026-10-22 12:48:28 +08:00
Turtle f0ced1aa47 docs(boot): state which bundle lists app-boot applies 2026-10-22 12:44:00 +08:00
Turtle f60cbc909b docs(boot): point remaining bundle-list references at official-bundles
Move the template value assertions into the official-bundles tests so a
template edit leaves app-boot tests untouched.
2026-10-22 12:05:04 +08:00
Turtle e0e37bfd3d refactor(boot): move official bundle lists out of app-boot
Profile templates and the default, optional, on-demand, retired, and
installation-owned bundle lists move to the new data-only package
@deepseek-ai/dsh-official-bundles, so editing a bundle list no longer
touches app-boot.
2026-10-22 11:56:47 +08:00
Turtle 3e5deca05d Merge remote-tracking branch 'origin/master' into turtle/plugin-sticky-header-29bfdb179e18
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
2026-10-22 11:37:26 +08:00
Turtle 9009edb7c2 Merge remote-tracking branch 'origin/master' into turtle/icon-tokens/icons-plugin-tokens-e20dec90761c
# Conflicts:
#	packages/client/ui-primitives/src/icons/index.tsx
2026-10-22 01:13:40 +08:00
Turtle f58b6c41bb chore(extensions): regenerate the Cordis inspect catalog for icon replacements 2026-10-22 01:00:52 +08:00
Turtle 6470b39557 fix(client): harden theme icon replacements and add a real-composition test
Store a frozen copy of ThemeDefinition.icons, treat null as absent,
require replacement element ids under the symbol id, document the trust
level and ignored root attributes, and boot a theme plugin through the
Loader to check the sprite swaps and restores icons.
2026-10-22 00:59:21 +08:00
Turtle c422eac3b9 chore(extensions): regenerate the Cordis inspect catalog for theme icons 2026-10-22 00:46:06 +08:00
Turtle e3490f371a test(client): drop an unneeded cast in the icon sprite spec 2026-10-22 00:34:57 +08:00
Turtle c3eead771d feat(client): let themes replace product icons through an SVG sprite
Product icons drew fixed inline paths, so a theme could only recolor them.
Each glyph weight is now a dsw-icon-<glyph>-<weight> symbol: ui-primitives
keeps the default SVG documents and icons render one <use> of their symbol,
while ui-theme keeps a document sprite filled from the active theme's
ThemeDefinition.icons replacements or the defaults. Replacements may be
multi-color and paint with currentColor or --dsw-* tokens.

Refs #6894
2026-10-22 00:21:07 +08:00
Turtle a55c9c5ddf fix(ui-sidebar-right): keep the panel still on open for reduced motion
The reduced-motion rule only matched the closed selectors, so the more specific open rule kept its slide. Match the open selectors too.
2026-10-22 00:10:29 +08:00
Turtle 36f0bae72e fix(ui-primitives): document the top-strip cap for hover cards
Name the Menu anchor gap once, describe the HoverCard exception in the
README and JSDoc, and cover a top-side menu from an anchor in the strip.
2026-10-21 23:45:37 +08:00
Turtle f2a52f6f3c test(ui-sidebar-right): pin the settling slide styles
Check that the slide rules list the same docked items as the opening effect and that the settling rule overrides the open rule. Name the shared selector list on both sides and describe the opening step in the module header.
2026-10-21 23:32:12 +08:00
TurtleandShigma 4f7ebe8d34 test(web): cover conversation view tab hit testing in the browser
Co-authored-by: Shigma <[email protected]>
2026-10-21 23:15:02 +08:00
Turtle 3acbd08867 fix(ui-sidebar-right): slide the panel in on its first open
The first expansion of an empty column mounts the seeded tab already open, so it appeared in place instead of sliding in like later opens and every close.
2026-10-21 22:59:34 +08:00