Commit Graph

4165 Commits

Author SHA1 Message Date
Tianyi Cui
3a4c436d83 refactor: narrow web image input v1 2026-07-29 23:18:57 +08:00
imccyu
8348a409aa Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input 2026-07-29 23:04:39 +08:00
imccyu
0a1c0dcb07 Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input 2026-07-29 22:52:14 +08:00
imccyu
67acf86b2e Merge branch 'master' into fix/page-scroll 2026-07-29 22:35:13 +08:00
imccyu
87b19a1ded Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input 2026-07-29 22:35:12 +08:00
imccyu
20c446e033 Merge branch 'master' into worktree-renameweb 2026-07-29 22:28:34 +08:00
imccyu
b0ee207a2a Merge remote-tracking branch 'origin/master' into mergebot/pr908
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-29 22:27:37 +08:00
imccyu
55ff7761b0 Merge branch 'master' into fix/page-scroll 2026-07-29 22:22:01 +08:00
imccyu
98a23fc88c Merge branch 'master' into feat/input-command-interaction 2026-07-29 22:20:09 +08:00
imccyu
2b56d972eb Merge remote-tracking branch 'origin/master' into mergebot/pr908
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-trajectory/src/client/views.module.css
2026-07-29 22:15:22 +08:00
Tianyi Cui
637c5c9b7b Merge remote-tracking branch 'origin/master' into worktree/fix-agent-loop-scheduler-quiescence 2026-07-29 22:10:52 +08:00
imccyu
fd356b92c8 Merge branch 'master' into feat/input-command-interaction 2026-07-29 22:10:39 +08:00
Tianyi Cui
1a21fc3a06 fix(agent-loop): quiesce scheduler failures 2026-07-29 22:10:26 +08:00
imccyu
32c3d1e17f Merge remote-tracking branch 'origin/master' into worktree-renameweb
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
#	packages/client/test-runtime/src/sessions.ts
2026-07-29 21:45:29 +08:00
Tianyi Cui
d70cfed4e8 Merge master into fix/subprocess-password-scrub 2026-07-29 21:40:50 +08:00
imccyu
f4bc0a4a86 Merge remote-tracking branch 'origin/master' into feat/input-command-interaction 2026-07-29 21:40:28 +08:00
Tianyi Cui
a5446e3160 Merge master into fix/subprocess-password-scrub
# Conflicts:
#	packages/lsp/lsp-local/README.i18n.yaml
#	packages/subprocess/subprocess-local/README.i18n.yaml
#	packages/subprocess/subprocess-local/README.zh.md
2026-07-29 21:38:24 +08:00
imccyu
f2aa63f756 Merge branch 'master' into worktree-renameweb 2026-07-29 21:25:14 +08:00
imccyu
76b4563380 Merge remote-tracking branch 'origin/master' into feat/input-command-interaction 2026-07-29 21:23:13 +08:00
imccyu
70c6ffda7e Merge branch 'master' into fix/page-scroll 2026-07-29 21:21:25 +08:00
imccyu
bf8db964d4 Merge branch 'master' into xtr/trajectory-inspection-ui 2026-07-29 21:20:38 +08:00
imccyu
45b21bcc3c fix(client): mark independent replay projections 2026-07-29 21:07:53 +08:00
07akioni
08d097077e fix: cr 2026-07-29 21:03:40 +08:00
imccyu
6e8ad4b382 Merge remote-tracking branch 'origin/master' into worktree-renameweb
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/README.zh.md
#	packages/session-title/session-title/README.i18n.yaml
#	packages/session-title/session-title/README.zh.md
2026-07-29 20:58:22 +08:00
imccyu
b23c3d596a Merge remote-tracking branch 'origin/master' into trajectory-history-source 2026-07-29 20:58:04 +08:00
07akioni
2a12057345 fix: ci 2026-07-29 20:56:56 +08:00
Tianyi Cui
b060b6f5f6 Merge commit 'refs/codex/pr758/master' into HEAD
# Conflicts:
#	packages/context/README.i18n.yaml
#	packages/context/README.zh.md
2026-07-29 20:55:09 +08:00
Yif
be9042e5a1 docs(client): sync package READMEs and agent notes with the input interaction rework
Update the six touched client package README pairs (slash menu ordering,
localized group titles and dismiss, permission label twin, goal pause,
plan hint localization, useAnchoredMaxHeight) and keep the owning agent
notes current: SlashSource.order and the MenuView dismiss/localize/clamp
face in the slash-pipeline note, the pause verb in the goal bar note.
2026-07-29 20:46:29 +08:00
imccyu
64acc5874b test(client): cover independent trajectory history 2026-07-29 20:46:02 +08:00
07akioni
382884e237 fix: scroll to bottom 2026-07-29 20:39:45 +08:00
07akioni
63e1054916 Merge branch 'master' into fix/page-scroll 2026-07-29 20:36:11 +08:00
07akioni
a4602b959e feat: optimize chat page scroll area 2026-07-29 20:26:48 +08:00
xjt
795bdda223 Merge remote-tracking branch 'origin/master' into xjt/readme-proofreading-batch-1
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.zh.md
2026-07-29 20:21:48 +08:00
imccyu
e0022ff19e refactor(client): isolate trajectory history 2026-07-29 20:21:37 +08:00
imccyu
37a75aa85e docs: regenerate catalogs for the rename JSDoc and invariant companion
gen-cordis-catalog/gen-cordis-api pick up the SessionTitleService rename
JSDoc and line shifts; gen-doc-graphs picks up the session-title invariant
companion's session/event edge.
2026-07-29 20:20:27 +08:00
xjt
de0348bd9e docs(i18n): standardize reviewed README headings 2026-07-29 20:16:45 +08:00
imccyu
ee9ea7e3aa docs(client): document independent trajectory history 2026-07-29 20:16:13 +08:00
imccyu
acd9716634 fix(client): fixture rename via requireSession, unchanged-title pin gesture
The fixture route shares the requireSession guard, reads the accepted seq off
the appended event, and gains the error-arm spec the workspace.rename case
set as precedent; WorkspaceBrowser drops the unchanged-title block — confirming
the current automatic title IS the pin gesture — and both touched client
READMEs document the new dialog and the unary-settle rule bilingually.
2026-07-29 20:11:43 +08:00
imccyu
1c3fa6edcd fix(apiproxy): title-invalid only for the input's fault, presentable messages
The rename impl narrows on SessionTitleInvalidError: only an
empty-normalizing title maps to title-invalid (its message renders verbatim
in the rename dialog alert), while liveness/disposal races fall to internal;
the absent-service message trims to one presentable sentence. rpc-schemas
gains the title-invalid accept/missing-details lines; cosmetic ordering
(type-only import comment, tsconfig reference, schema import order) restored.
2026-07-29 20:11:19 +08:00
imccyu
c8374e916f fix(session-title): typed rename rejection, provenance invariant, contract docs
SessionTitleInvalidError narrows the one rename failure that blames the
input; the fallback-unpin append extracts to appendFallback beside
ensureFallback's guarded twin; a deferred-provider test proves rename
supersedes ACTIVE generation; the invariant companion enforces
messageSeqs-empty iff user-source on every appended session/title event
(tsconfig gains the session-title invariant path); SessionTitleEventData
field docs state the third source kind and the empty-seqs rule, mirrored
into the bilingual core-data-structures page; the note qualifies the
refresh unpin as conditional on a derivable replacement.
2026-07-29 20:10:42 +08:00
Yif
82a43a7240 test(client): cover menu dismiss, goal pause, and permission label paths
Close the per-file coverage gaps the new UI behavior introduced: MenuView
pointer-outside dismiss (all guard branches), the GoalBar pause action,
the ui-slash injected onDismiss face, and the non-kebab permission name
passthrough.
2026-07-29 19:59:42 +08:00
Yif
45c9205caf feat(client): localize composer hints and rework input command interaction
Unify the /plan claimed hint with the plan placeholder through a locale
namespace, localize slash menu group titles, replace the PermissionSelect
native select with the Menu primitive, add a goal pause verb chain, clamp
anchored popups to the viewport with scroll-into-view and outside-dismiss,
and fix onPasteUpgrade insertedRange to account for the chip trailing gap.
2026-07-29 19:46:48 +08:00
creatixchu
f73bf425ec fix: address ds-review-bot v8 findings
- llm-deepseek: the uncatalogued resolveModel fallback declares text-only
  modalities — the wire route is text-only regardless of catalog
  membership, so "unknown" must not let the host persist-then-fail images.
- session.selectModel also consults the pending-inbox mirror: a queued
  image prompt enters the log only when claimed, after a switch would land.
- attachment store: ensureDurableDirectory syncs every ancestor entry up to
  a caller-vouched boundary regardless of what mkdir reports — a raced
  "already existed" is not "already durable".
- One image walker (imageBlockIn/imageInEvent) now serves both attachment
  authorization and the selection gate; referencedImage therefore also
  authorizes references inside wrapped message content.
- InputHub: the scope disposer resolves the conversation service optionally
  (teardown/HMR must reach quiescence), and a send failing after its scope
  died releases the in-flight drafts instead of restoring them onto a
  disposed shell.
- http-bridge destroys declared-oversize requests with connection: close
  instead of draining a body the client can trickle indefinitely.
- LlmService validates AND detaches modality arrays identically on the
  advisory and exact routes; READMEs record the fourth INVALID_MODEL_INFO
  rejection reason.
- CLI provider docs (JSDoc, README pair, Agent Note pair) describe the
  reuse behavior; llm-route.spec now parses the SHIPPED cordis.yml through
  the production extraction, pinning the row coupling.
- image-display lane pins gallery/rail shape in inline snapshots and the
  object-URL scheme this environment must take; stale host.schema comment
  dropped.
2026-07-29 19:40:17 +08:00
imccyu
c54bbc0f7e test(web): cover the spacer-write and dead-lead spacer branches 2026-07-29 19:38:43 +08:00
imccyu
833d999abf test(session-title): mark the assertNever guard arm v8-ignored
The default arm of copySessionTitleSource is a closed-union exhaustiveness
guard (compile-time protection for the next kind); it is unreachable at
runtime, so the per-file coverage gate ignores it like every other
assertNever arm.
2026-07-29 19:09:22 +08:00
imccyu
d257c3878e feat(web): session-row Rename menu action with a browser-owned dialog
The row menu's Rename item opens the same dialog pattern as workspace rename
(no client-side conflict rule; the host normalizes) and resolves through the
session face via ctx.sessions.binding. Assembled-app snapshot covers the
row-menu -> dialog -> unary-settle flow.
2026-07-29 18:59:46 +08:00
imccyu
ff049f1e82 feat(client): ISession.rename settles the title projection cell from the response
rename is a per-session verb on the outward session face (prompt/cancel
precedent), not a list-service verb: the Session calls session.rename and
applies the response {title, seq} to its projection store under
higher-seq-wins, so the list row updates before the push frame. The fixture
api and the test-runtime double follow the same face.
2026-07-29 18:59:34 +08:00
imccyu
19336686a6 feat(apiproxy): session.rename RPC delegating to the session-title service
New unary method in RpcMethodMap with the title-invalid error code; the impl
resolves the agent (cold sessions resume first) and delegates to
ctx.sessionTitle.rename, returning the normalized title plus its event seq so
clients settle the title projection cell ahead of the push frame. session.fork
stays on the reserved-seam list.
2026-07-29 18:59:23 +08:00
imccyu
abbcacf42a feat(session-title): user rename pins the title against automatic generation
sessionTitle.rename appends a user-source session/title event; onUserMessage
skips scheduling while a user title stands, and an explicit refresh is the
deliberate unpin (provider regeneration, or a re-derived fallback when no
provider is registered).
2026-07-29 18:59:09 +08:00
creatixchu
adce3b833d fix: address ds-review-bot v6/v7 findings on the image-input assembly
- resolveLlmRoute: reuse the yml pi-ai row for providers it already routes
  (DUPLICATE_ADAPTER boot failure) and detect an unset model by origin, not
  by comparison against one deployment default; covered by a new spec.
- LlmService.resolveModelInfoFor preserves (and validates) modality
  metadata, arming the host image preflight for exact-route resolution.
- session.selectModel refuses a text-only target once the session log
  carries an image on any replayed route; an accepted switch would strand
  every later turn with no in-product recovery.
- The composer no longer gates image intake on the handshake activeModel
  snapshot (wrong authority for a per-session decision); the host preflight
  plus the error strip own capability, deployment limits stay client-side.
- InputHub shell teardown releases the scope's draft images (File objects
  and object URLs leaked for the page lifetime).
- session.prompt image parts carry optional alt into the durable block;
  ImageBlock documents assistant-side rendering as forward compatibility.
- Assembled built-client lane apps/web/tests/image-display.snapshot.ts pins
  the history galleries over the authorized attachment route, the lightbox,
  and the composer paste rail; the attachment rail is an accessible group.
- Docs: validateImage on the seam page, fixture byte metadata matches its
  PNG, and the Agent Note claims now match the shipped coverage.
2026-07-29 18:56:40 +08:00