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.
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
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.
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.
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]>
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
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
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.
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.
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
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
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.
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.
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.
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]>
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]>
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]>
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
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.
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.
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.
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.
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.
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
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.
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.