Commit Graph
4005 Commits
Author SHA1 Message Date
imccyu ee61acfe7e docs(client): describe session row entries as plain menuitem buttons
The Client Slot catalog serves `cordis-client-runner` closures, which cannot
`require` anything, so the `sidebar.workspaces.session.menu.item` example
now renders a `role="menuitem"` `<button>` and the doc names
`MenuItemButton` as what the shipped rows use rather than what an entry must
render; the README separates the Module Loader lane, which does reach the
primitive through `require`, from the runner lane. The Agent Note and the
contract module doc say the entries read the pin and archive sets through
hooks their own faces inject, that the owner draws no separator, and that
the strip keeps clicks from opening the row. `RowActionToast` gets its
contract sentence and the rename-assembly spec points at the e2e that
exists.
2026-09-20 13:33:58 +08:00
imccyu c4949c4d0c fix(client): isolate row action clicks and collapse submenus from the menu list
The Session row's action strip stops click propagation itself, so a
`sidebar.workspaces.session.row.action` entry that renders a plain button no
longer opens the row as a side effect; the shipped buttons drop their own
handling. `Menu` decides submenu exclusivity on the list's own bubbles, by
DOM: reaching a top-level row that is not a submenu parent, by pointer or by
focus, closes the open card for data rows and component rows alike, which
the per-row handlers only did for data rows. A group start on the list's
first row draws no hairline.

The first live-fixture e2e case registers the scaffold's cleanup right after
launch, as the file's other cases do. The three pin scenarios the browser
spec lost when the order write moved into `UiWorkspace.pinSession` — newer
saved orders during a pending pin, a Workspace disappearing during one, and
members whose summaries are temporarily missing — return as service cases.
2026-09-20 13:33:55 +08:00
imccyu 4517603c28 fix(client): rename the row rename request type off the Host name
The typert Cordis catalog drops any exported name that two declarations
share, so ui-workspace's `SessionRenameRequest` made the generator remove
Session Controller's request type from the model-facing API catalog. The
row-side pending rename is `SessionRenameTarget`: the Session and the title
the dialog seeds from.
2026-09-20 12:40:11 +08:00
imccyu 21586fe28c feat(client): compose session row actions from slot lists
A Session row's "..." menu and its hover buttons become two list slots the
WorkspaceBrowser entry declares, `sidebar.workspaces.session.menu.item` and
`sidebar.workspaces.session.row.action`. The shipped actions register from
apply the way a client plugin does: pin (menu 100, button 200), rename (200),
fork (300), archive (menu 400, button 100). An entry receives only the row
identity, reads the pin and archive sets through Set hooks its own face
injects, decides its own visibility, renders `MenuItemButton` or one icon
button, and dismisses the menu through the slot-level `useMenuOpenState`
hook bound from the row's render occurrence.

Each action's behavior lives in its injected callbacks. `UiWorkspace` gains
`pinSession` and `unpinSession`; the pin write into the saved orders happens
there, through the viewing-store instance the apply creates and hands the
browser's registration as its handle (the ui-layout pattern), reading the
memberships current at completion. The rename dialog and the row-action
notice are `shell.overlay` entries fed by apply-closure observables through
the faces' `hooks`; the archived notice switches the archived filter
directly. WorkspaceBrowser threads no action callbacks, renders no toast,
and hosts no rename dialog; its title double-click raises the same rename
request.

In ui-primitives, `MenuItemButton` is the plain `role="menuitem"` row for
menus whose rows are components: it shares a data row's markup and styling
and needs no shared state, because `Menu` decides the keyboard walk from the
DOM and now runs the post-selection focus return once on the list's click
bubble for every row kind. `Menu` accepts such rows as `children` beside
`items`, which becomes optional together with `onSelect`; `separatorBefore`
lets a row start a group with the same hairline a separator entry draws. The
context-based `MenuAction` goes away with its extension group.
2026-09-20 12:20:24 +08:00
imccyu 5ca9b77c44 test(client): expect the pin row ahead of the session menu actions
master's session row menu now leads with Pin session and SessionNode
carries pinned/archived, so the slot-action specs and the Web golden take
the row as it is after the rebase.
2026-09-20 12:17:48 +08:00
Magolor d849d656a5 fix(client): use baseline menu primitive 2026-09-20 12:17:48 +08:00
Magolor 4db234b408 fix(client): align session action slot contract 2026-09-20 12:17:47 +08:00
Magolor fec5c888c4 fix(client): preserve session action slot contract 2026-09-20 12:17:47 +08:00
Magolor cfcd3f3b0e test(client): cover session action focus handoff 2026-09-20 12:17:47 +08:00
Magolor e5a72d73df feat(client): add extensible session menu actions 2026-09-20 12:17:47 +08:00
imccyu 54b0aae8e6 docs(web): clarify retained subagent status sources 2026-09-19 23:31:31 +08:00
imccyu cdd082c4ae test(web): preserve terminal liveness evidence after layout loss 2026-09-19 23:31:31 +08:00
imccyu a05f2244cf fix(plugins): remove unknown casts from metadata loading and fixtures 2026-09-19 23:05:40 +08:00
imccyu d67545f367 docs: sync catalogs and contracts for session fixes 2026-09-19 23:05:40 +08:00
imccyu 8771607f8b test: cover sidebar fork and persistent shell cancellation regressions 2026-09-19 23:05:40 +08:00
imccyu b7b587692d fix(web): disable terminal recovery and cleanup slots 2026-09-19 23:05:39 +08:00
imccyu a7ce695461 fix(web): position new forks before their source 2026-09-19 23:05:39 +08:00
imccyu 1e48dae2aa fix(web): keep sidebar forks from switching sessions 2026-09-19 23:05:39 +08:00
imccyu 3863992e67 Merge pull request #4571 from deepseek-harness/worktree-pluginlocale
feat: 插件元信息支持按 export 多语言展示
2026-09-19 22:15:53 +08:00
imccyu a9f205c584 refactor(plugins): rename PackageMeta to PluginLocalizedMeta 2026-09-19 20:19:08 +08:00
imccyu 0d611ea151 feat(web): display plugin-owned locale metadata 2026-09-19 20:19:04 +08:00
imccyu f8240240fa docs(plugins): define localized display metadata and fallback rules 2026-09-19 20:19:03 +08:00
Tianyi Cui 580bdc7258 refactor: remove redundant unknown casts 2026-09-19 20:13:58 +08:00
Tianyi Cui 8b0b2dc1d8 Merge master b86916de into release/session-log-v4
Integrate the master tip observed for the final V4 landing preparation on
top of the already merged migration stack. Preserve the V4 writer, flat
message migration, extension policy, catalog validation and historical
recordings while bringing in upstream profile resolution and desktop/UI
changes.

Resolve four generated translation-pairing records from the combined
English/Chinese text. Keep this master checkpoint separate from any
integration fixes and retain all reviewed parent history. Follow-up
validation covers the affected launch/UI paths and migration replay.
2026-09-19 18:00:36 +08:00
imccyu cf3505b88e docs: call the package table the runtime resolution everywhere it is named
The generation note keeps generation for succession only and names the table, the interception, and the routes with the code's words; the CLI reference, Desktop, plugin-package-inventory, and loader-smoke READMEs, the bundled-runtime, agent-teams, plugin-bundles, and source-launch notes, and the client AGENTS guide follow. Pairing records re-recorded.
2026-09-19 17:06:35 +08:00
imccyu bffd317c8c Merge pull request #4570 from deepseek-harness/worktree-removelink
fix(boot): keep runtime-only profile resolution and real package anchors
2026-09-19 17:04:22 +08:00
Yif 45d77b0e8e fix(ui-theme): match the scrollbar sheet exclusion against /-separated scan paths 2026-09-19 16:39:46 +08:00
Yif 9e95a7b183 fix(client): keep fullscreen sidebar strips draggable via fine-grained dockkit subtraction
Drop the fullscreen panel's whole-box no-drag: it swallowed the strips'
blank-run window drag and made no-drag the steady state, turning the
open/close app-region nudge into a computed-value no-op (electron#32341)
exactly when a hidden panel opens straight into fullscreen. The panel now
declares no steady-state app-region in either presentation, and ui-dockkit
subtracts the one box base.css never matches — the plain-div split divider —
alongside tabs, strip-end chrome, and pane bodies. New specs pin both
contracts against the stylesheets on disk.
2026-09-19 16:19:44 +08:00
Yif c6c1df6869 fix(ui-theme): normalize stylesheet-scan paths to forward slashes for Windows 2026-09-19 16:19:34 +08:00
Tianyi Cui 1613a10c03 merge: integrate pinned master into session-log-v4
Merge master 7e2b049d8e2523127a3b4fba38cab4748ef0c72f, observed on
2026-09-19 at 07:38:37 UTC, into release/session-log-v4 at
c4663e8671e33bc2cfdbc868b0b18d979508d39b. Keep this base integration
separate from the five persistence repair PRs so their review diffs
remain focused and can be rebased without moving their fixes here.

Combine master's pin ordering and archived-session filter with V4's
parent-owned direct child catalog. Both grouped and flat sidebar rows
must pass the Session list to the V4 activity calculation; restoring
master's summary-lineage traversal would reintroduce the removed
subagent ownership and count unrelated descendants.

Keep master's removal of the archived-session settings page. Its only
release-side test change renamed a Session list fixture field, so no
runtime behavior is lost by deleting that obsolete test. Adapt the
release-side direct-child-status regression to the new row/filter
arguments and preserve its assertions.

Retain master's workspace ordering and row-motion documentation while
keeping the V4 child-catalog wording. Reconcile the generated bilingual
records against the merged documents. Frozen V0-V3 codecs, recorded
Session JSONL inputs, and the current V4 persistence schema are unchanged.

Refs #2692, #3273
2026-09-19 15:42:11 +08:00
Yif 699d06a7eb feat(client): widen overlay top margins to the frame's top clearance
Publish --dsh-frame-top-clearance on html[data-platform='darwin'] so
body-portalled overlays inherit it; useAnchoredMaxHeight and the portalled
Menu widen their 12px viewport margin to it, Modal centralizes the vertical
padding its cards previously each computed, and the trigger menu keeps an
84px margin on every platform so it stops below the conversation header.
Reduce Transparency replaces the sidebar tint with a 90%-opaque fill.
2026-09-19 15:37:47 +08:00
Yif a80f5186a6 Merge remote-tracking branch 'origin/master' into feat/macos-sidebar-ui-and-drag-refine 2026-09-19 14:05:21 +08:00
Yif 3f7a209835 revert(ui-primitives): drop the tooltip pointer-focus suppression 2026-09-19 13:42:50 +08:00
Yichen Jiang ff3d162401 Merge pull request #4600 from deepseek-harness/worktree/fix-markdown-preview-images
fix(web): render local images in Markdown previews
2026-09-19 13:31:42 +08:00
imccyu fcc6cc8c12 docs(boot): align runtime-only resolution contracts 2026-09-19 13:29:13 +08:00
Yif 8f2f13bc48 Merge remote-tracking branch 'origin/master' into feat/macos-sidebar-ui-and-drag-refine 2026-09-19 13:26:16 +08:00
Yichen Jiang 7951cee0d5 fix(web): render local images in Markdown previews 2026-09-19 13:21:37 +08:00
imccyu 7e4045c4c0 test(client): align sidebar interactions and browser snapshots 2026-09-19 12:54:14 +08:00
imccyu 7baccf5d85 fix(workspace): unify pin IDs and preserve complete session order 2026-09-19 12:54:13 +08:00
imccyu f1e06a69ef fix(ui-primitives): preserve toast lifetime across rerenders 2026-09-19 12:54:13 +08:00
imccyu 842bf71350 perf(workspace): replace auto-animate with scoped row motion 2026-09-19 12:53:24 +08:00
Yif 34d78d843d feat(workspace): restore the hover title reveal with an 8px jitter floor
Hovering a session row again scrolls a clipped title to its far edge
(the #4423 reveal), but overflow of at most 8px stays put so barely
clipped titles do not jitter. The hover mask fade yields back to plain
clipping — at the scrolled extent the fade would cover the revealed
tail. Row action buttons tighten from gap 12 to 10.
2026-09-19 12:04:07 +08:00
Yif 1d221f9723 fix(workspace): end-aligned action tooltips, slower hover cards, archived-row alignment 2026-09-19 12:04:07 +08:00
Yif 9ca19474ab fix(workspace): tooltip the row hover actions and open the sliders glyph 2026-09-19 12:04:07 +08:00
Yif 94c62ea564 fix(client): draw the sidebar new-chat glyph at the regular weight 2026-09-19 12:04:07 +08:00
Yif 5474efe890 fix(client): lighten the ellipsis glyph and adopt the Toast success tone 2026-09-19 12:04:07 +08:00
Yif bd0461c894 fix(workspace): give the compact-label row spec the pin/archive props 2026-09-19 12:04:07 +08:00
Yif 3e96ed79a7 fix(workspace): steady hovered session titles and polish the sidebar controls
Hovering a session row no longer scrolls its clipped title (the mask fade
stays), the one-time archived-filter callout and the content-search
unavailable notice are gone, the group-row new-session button shares the
new-chat glyph, and the view-options trigger uses the two-slider icon with
a 200px menu floor and a visible separator hairline.
2026-09-19 12:04:07 +08:00
Yif 33d496951c feat(workspace): session pinning and the sidebar archived filter
Pin sessions to the top of the sidebar and reach archived sessions
through the view-options filter instead of a settings page; archiving
gains an undo/filter toast, and row motion stays reserved for pin jumps
and archive fades.
2026-09-19 12:04:07 +08:00
Tianyi Cui 87f0df0550 Merge pinned master 5ec3ffe337 into session-log-v4
Keep the master refresh separate from the V3-to-V4 lossless-conversion and
checkpoint JSON fixes so the release baseline and each feature change remain
independently reviewable. This checkpoint extends the already-published
4435f6f519 merge before the #4583 child is rebased.

Integrate exactly master 5ec3ffe337062ab5bb4955933008afe8d0a0b915. Its #4156
changes add watched file/document refresh, filesystem watch readiness,
directory expansion restoration, and chat bottom-follow fixes. They update
shared filesystem and Client consumers without changing Session format or
snapshot generation.

The merge has no conflicts. Its 114-file scope and line counts match upstream;
code and prose additions/removals are unchanged. Only the two translation
pairing records incorporate the release branch's retained V4 documentation.

Validation: 762 owner tests passed (1 platform skip), 11 focused Web tests
passed, full build passed, and all 41 doc-sync checks passed. Runtime closure
and Client package checks passed; fs-local publint completed with the existing
source-wildcard export warning.
2026-09-19 02:39:04 +08:00