creatixchu
c03753fe48
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/chat/AssistantMarkdown.tsx
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api/sessions.ts
2026-07-31 00:09:49 +08:00
creatixchu
7a52bedae7
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
# scripts/test-invariants.ts
2026-07-30 23:05:51 +08:00
imccyu
da9f02221e
Merge remote-tracking branch 'origin/master' into worktree-forkweb
2026-07-30 22:53:07 +08:00
imccyu
3b370549a1
feat(client): increment forked session titles
2026-07-30 21:28:17 +08:00
imccyu
213de9a737
feat(ui-conversation): wire assistant session forks
2026-07-30 21:28:17 +08:00
imccyu
36f1489398
fix(web): address session fork review findings
2026-07-30 21:28:13 +08:00
imccyu
57fb5b488e
feat: fork
2026-07-30 21:27:14 +08:00
kingwl
29d8ca5ee5
Merge remote-tracking branch 'origin/master' into codex/queue-collapse
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
2026-07-30 20:11:46 +08:00
creatixchu
98ed9d8d4b
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# apps/cli/cordis.yml
# apps/cli/package.json
# apps/cli/src/bin.ts
# apps/cli/tests/args.spec.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
# pnpm-lock.yaml
2026-07-30 20:04:22 +08:00
kingwl
5f87c7a89c
fix(web): close queue collapse review gaps
2026-07-30 19:20:13 +08:00
kingwl
1f5d09c2d7
Merge origin/master into codex/figma-context-injection-row
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
2026-07-30 18:27:49 +08:00
kingwl
cdd1074805
Merge remote-tracking branch 'origin/master' into codex/queue-collapse
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
2026-07-30 18:21:07 +08:00
kingwl
3d6cacc59b
Merge remote-tracking branch 'origin/master' into codex/composer-dock-stacking
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
2026-07-30 17:35:22 +08:00
kingwl
f5228e7c71
Merge origin/master into codex/figma-context-injection-row
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/ToolRow.module.css
# packages/client/ui-conversation/src/client/chat/ToolRow.tsx
2026-07-30 17:34:14 +08:00
kingwl
abf498b8dc
fix(web): align composer context stack
2026-07-30 17:26:44 +08:00
creatixchu
44d7dc7a73
fix(web): keep image intake inert without a session
2026-07-30 17:17:25 +08:00
creatixchu
352d669e4d
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
2026-07-30 17:16:28 +08:00
kingwl
0a25c0d237
feat(web): add queue collapse control
2026-07-30 16:41:55 +08:00
kingwl
17893c503e
feat(web): match context injection disclosure design
2026-07-30 16:20:34 +08:00
imccyu
4c33ca8bec
fix: hero layout when no-workspace
2026-07-30 15:25:50 +08:00
imccyu
6ea1238714
docs(web): the composer bar is one session-maybe slot, not a swapped pair
...
fix(web): keep one composer bar DOM across the no-workspace transition
The composer.bar slot moves from session to session-maybe scope: with no
current session the entry still mounts, the machine faces (keyboard, stop,
command) arrive undefined, and the bar renders its normal DOM inert via the
disabled owner prop. DisabledInputBar and its parallel tree are gone, so the
textarea node survives the cold-start workspace pick instead of flashing
through a remount. A blank session whose workspace was deleted takes the
same inert path through owner props.
test(web): add the composer DOM-continuity acceptance probe
Drives a real dsh web server with headless chromium through the cold-start
-> pick-workspace -> type flow and asserts the composer textarea is the
same DOM node throughout (a marker property must survive). Rerun
prerequisites are in the header comment.
docs(web): session-maybe identity is adoption, not hold-forever
fix(web): session-maybe entries adopt the first session, then remount like strict entries
A session-maybe entry used to keep one React instance across every
transition, so component-local state leaked between sessions once the
composer bar moved to that scope (PermissionSelect's optimistic pick, the
IME composition guard). Identity is now adoption: an incarnation born
session-less holds through the arrival of the first session (the blank
shell's DOM survives the workspace pick), and afterwards behaves exactly
like a strict session entry — a switch or a drop to no-session remounts,
clearing local state by construction. The child key is an incarnation
counter kept in the stable outlet wrapper via render-phase setState.
chore: knip knows the root acceptance probe's playwright dependency
scripts/hero-composer-dom-continuity.mjs resolves playwright through
apps/web's devDependency tree (createRequire), which knip cannot follow;
ignore it at the root workspace.
2026-07-30 15:18:06 +08:00
imccyu
03936cb320
Merge remote-tracking branch 'origin/master' into mergebot/pr883
...
# Conflicts:
# packages/client/ui-question/package.json
# packages/client/ui-question/src/client/QuestionComposer.tsx
# packages/client/ui-question/src/client/contract/slots.ts
# packages/client/ui-question/src/client/index.ts
# packages/client/ui-question/src/client/locales.ts
# packages/client/ui-question/tests/browser-plugin.spec.ts
# packages/client/ui-question/tests/question-composer.spec.tsx
2026-07-30 15:01:10 +08:00
creatixchu
0d1250f743
fix: address ds-review-bot v7 findings on the merged image-input head
...
- gate model selection on steering-placement image carriers from enqueue
until their steering/message event publishes; release the gate when an
admission ends idle without publication (both behaviorally asserted)
- reject session.updateQueue edits carrying non-text blocks at the RPC
boundary (queue edits cannot bypass image admission)
- extend the durable-directory walk past a first-created DSH_HOME to the
deepest pre-existing ancestor
- strip Windows-style separators from attachment display names on POSIX
- verify attachment reads with a header-only probe (digest already proves
the bytes decoded fully at admission); document the read path
- make SessionInputShell.addImages refusal observable and keep workspace
transfers/composer intake from leaking refused drafts
- own ONE recursive image walk (dsh-llm contentHasImage) across apiproxy,
pi-ai, compact-basic, and the DeepSeek text-only assertion
- drop the redundant canonical-base64 regex and the no-op role read
- move AttachmentId/AttachmentError out of types.ts (brand.ts/error.ts);
document why AttachmentError does not extend HarnessError
- document the hard attachments inject in both consumer READMEs
2026-07-30 14:34:08 +08:00
creatixchu
0a9b6e75d6
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/core-data-structures/core.i18n.yaml
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/README.i18n.yaml
# packages/README.md
# packages/README.zh.md
# packages/client/connection/src/client/fixture.ts
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/contract/session.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/test-runtime/src/sessions.ts
# packages/client/test-runtime/tests/runtime.spec.tsx
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/service.ts
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/queue-dock.spec.tsx
# packages/client/ui-conversation/tests/service-orchestration.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/src/api/rpc-map.ts
# packages/host/apiproxy/src/api/rpc.schema.ts
# packages/host/apiproxy/src/api/rpc.ts
# packages/host/apiproxy/src/api/sessions.schema.ts
# packages/host/apiproxy/src/api/sessions.ts
# packages/host/apiproxy/src/fetch/client.ts
# packages/host/apiproxy/src/fetch/handler.ts
# packages/host/apiproxy/tests/api-proxy-commands.spec.ts
# packages/host/apiproxy/tests/client-handler.spec.ts
# packages/host/apiproxy/tests/fetch-carrier.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
2026-07-30 13:48:33 +08:00
creatixchu
a703575dab
Merge remote-tracking branch 'origin/worktree/web-multimodal-image-input' into worktree/pr555-fixes
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md
2026-07-30 13:11:07 +08:00
creatixchu
6bc0335fcc
Merge remote-tracking branch 'origin/worktree/web-multimodal-image-input' into worktree/pr555-simplify
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml
# apps/web/tests/image-display.snapshot.ts
# docs/core-data-structures/core.i18n.yaml
# packages/client/ui-trajectory/tests/client-bundle.spec.ts
2026-07-30 13:02:44 +08:00
imccyu
6e99027917
Merge remote-tracking branch 'origin/master' into mergebot/pr937
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/queue/QueueDock.module.css
2026-07-30 11:59:59 +08:00
kingwl
ad1bb84425
Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
2026-07-30 11:38:54 +08:00
07akioni
b92c6bcc66
Merge branch 'master' into fix/ui-action-display
2026-07-30 11:15:35 +08:00
imccyu
60620ec36c
Green the jsdom lane for the composer-seat ResizeObserver and new StatsLine format
...
The seat's height publisher needs a ResizeObserver stub in every spec that
renders ConversationRoot (jsdom has none), and the two branch-tail StatsLine
assertions move to the grouped detail-row output.
2026-07-30 11:09:03 +08:00
creatixchu
18aa6c381b
Merge remote-tracking branch 'origin/worktree/web-multimodal-image-input' into worktree/web-multimodal-image-input
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml
# apps/web/tests/code-mode-fixture.snapshot.ts
# apps/web/tests/image-display.snapshot.ts
# docs/architecture.i18n.yaml
# docs/module-graph.md
# packages/client/test-runtime/tests/runtime.spec.tsx
# packages/client/ui-conversation/src/client/skeleton/ConversationSession.tsx
# packages/client/ui-conversation/tests/terminal-card.spec.tsx
# packages/client/ui-trajectory/src/client/layout.ts
2026-07-30 10:46:50 +08:00
creatixchu
6a96c8dd42
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml
# apps/web/tests/code-mode-fixture.snapshot.ts
# docs/architecture.i18n.yaml
# docs/core-data-structures/core.i18n.yaml
# docs/module-graph.md
# packages/README.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/test-runtime/tests/runtime.spec.tsx
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/package.json
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/skeleton/ConversationSession.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/compact/compact-basic/README.zh.md
# packages/compact/compact-basic/src/summarizer.ts
# packages/host/apiproxy/src/api/sessions.ts
# packages/llm/llm-pi-ai/README.i18n.yaml
# packages/llm/llm/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
# pnpm-lock.yaml
2026-07-30 10:36:41 +08:00
Yif
04f6dfdc29
Web composer stats detail row and input-zone polish
...
Stats line moves into the InputBar's new footer slot (sharing the card's
width column) and expands to the design's grouped detail row: turns/steps,
LLM and tool wall time, cache hit, and input/output token split, all
derived client-side from the snapshot. The composer stack owns one 8px
rhythm, the seat fades the transcript through a fixed 36px gradient band,
back-to-bottom follows a live --dsh-composer-height, and goal/todo strips
share one 752px tip-fill column.
2026-07-30 10:22:44 +08:00
kingwl
112b0fbad1
fix(web): address queue review feedback
2026-07-30 04:12:38 +08:00
kingwl
ebbcfdd03b
Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
...
# Conflicts:
# packages/core/agent-loop/src/agent.ts
2026-07-30 03:33:41 +08:00
kingwl
7ce330f0e4
refactor(agent): scope queue actions to edit and remove
2026-07-30 01:58:51 +08:00
Tianyi Cui
515d48875e
fix: harden Web image admission
2026-07-30 01:58:36 +08:00
imccyu
93fc1e2ab8
Merge branch 'master' into feat/ask-question-gui
2026-07-30 01:46:05 +08:00
imccyu
3c8cd4eca3
fix(web): repair merge tails — todo-row selector and composer handler clone
...
The #921 selector change and the duplication gate both first ran against
this branch after the merge made it MERGEABLE: assembly-surfaces still
queried the retired data-sample="todo-row" hook (the composed TodoRow
carries ToolRow's data-tool attribute instead), and the redesigned
QuestionComposer duplicated the custom-draft onChange/onKeyDown pair
across its inline input and optionless textarea. The spec now anchors on
data-tool="todo_write", and the composer shares one draftCustom /
continueFromCustom handler pair (Enter continues, Shift+Enter stays a
newline, IME composition stays inert).
2026-07-30 01:34:56 +08:00
imccyu
e56c0699a9
Merge branch 'master' into codex/web-queue-actions
2026-07-30 01:21:13 +08:00
Tianyi Cui
4582e1425c
Merge commit 'refs/codex/pr885/master-20260730' into worktree/retarget-pr885-20260729
...
# Conflicts:
# eslint.config.mjs
2026-07-30 01:18:28 +08:00
Tianyi Cui
d6c82001b3
Merge remote-tracking branch 'refs/remotes/origin/worktree/web-multimodal-image-input' into worktree/pr555-simplify
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md
# .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md
# apps/cli/README.i18n.yaml
# apps/cli/README.md
# apps/cli/README.zh.md
# apps/cli/src/app-cli-entry.ts
# packages/client/connection/src/client/fixture.ts
# packages/client/ui-conversation/src/client/service.ts
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/host.schema.ts
# packages/host/apiproxy/src/api/host.ts
# packages/host/apiproxy/tests/fetch-carrier.spec.ts
2026-07-30 01:16:58 +08:00
imccyu
643f9be33f
Merge remote-tracking branch 'origin/master' into mergebot/pr883
...
# Conflicts:
# apps/web/tests/todo-display.snapshot.ts
# docs/event-producer-consumer.md
2026-07-30 01:16:46 +08:00
imccyu
d9eb3545d8
Merge remote-tracking branch 'origin/master' into mergebot/pr883
...
# Conflicts:
# packages/client/tsdown.client.ts
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/PendingCard.tsx
# packages/client/ui-conversation/src/client/chat/ToolRow.tsx
# packages/client/ui-conversation/src/client/toolviews/todo-row.module.css
# packages/client/ui-conversation/src/client/toolviews/todo-row.tsx
# packages/client/ui-conversation/tests/chat-apply.spec.tsx
# packages/client/ui-conversation/tests/coverage-tails.spec.tsx
# packages/client/ui-conversation/tests/todo-panel.spec.tsx
# packages/client/ui-primitives/src/icons/index.tsx
# packages/client/ui-primitives/tests/icons.spec.tsx
# packages/client/ui-question/README.i18n.yaml
# packages/client/ui-question/src/client/QuestionComposer.module.css
# packages/client/ui-question/src/client/QuestionComposer.tsx
2026-07-30 01:01:14 +08:00
Tianyi Cui
6312e43a11
fix: preserve multi-image prompt batches
2026-07-30 00:58:35 +08:00
Yichen Jiang
3733bd1374
fix(gui): remove temporary multimodal routing state
2026-07-30 00:30:58 +08:00
kingwl
c97b1d025e
Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
...
# Conflicts:
# apps/web/tsconfig.json
# docs/architecture.i18n.yaml
# docs/event-producer-consumer.md
# packages/client/runtime/README.i18n.yaml
# packages/client/tsdown.client.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent/README.i18n.yaml
# packages/core/agent/README.zh.md
# packages/host/apiproxy/README.i18n.yaml
# tsconfig.host.json
2026-07-30 00:30:38 +08:00
Tianyi Cui
0440c4cc0c
Merge latest master into codex/migrate-to-oxlint
2026-07-30 00:13:30 +08:00
07akioni
b71fbe770d
fix: ci
2026-07-30 00:08:59 +08:00
Tianyi Cui
60c8f5ea69
Merge remote-tracking branch 'origin/pr-555-head' into worktree/pr555-simplify
...
# Conflicts:
# apps/web/tests/image-display.snapshot.ts
2026-07-30 00:06:12 +08:00