qwen-code/docs/design
jinye f3ad4fcffb
feat(serve): page large text files by byte cursor (#8002)
* fix(serve): allow bounded reads of large text files

* fix(serve): bound large-text reads by scan cost, not by which knob was set

Follow-up to the bounded large-text read path. Three changes:

Gate on any explicit window argument, not on `limit`. Gating on `limit`
had the cost model backwards in both directions: `{ line: 900_000_000,
limit: 20 }` was admitted despite walking the whole file, while
`{ maxBytes: 4096 }` — satisfiable from the first 4 KiB — was refused. A
read with no window argument at all still fails, since a caller that
believes it holds the whole file may write it back truncated.

Add MAX_TEXT_SCAN_BYTES (8 MiB). MAX_READ_BYTES caps what a read
returns; nothing capped what it cost. Line offsets are resolved by
scanning from byte 0, so a query param could turn into an
uninterruptible multi-second scan of an arbitrarily large file — and on
Windows hold a read handle for that span, blocking renames and deletes.
Past the budget the read is refused with `file_too_large` pointing at
readBytes, which reaches any offset in O(1).

Tolerate appends on streamed windows. Requiring whole-file size/mtime
stability after reading a prefix rejected reads whose returned bytes
were still valid, and the case it rejected — tailing a live log — is the
one this path exists for. Streamed windows now assert inode identity
plus "did not shrink"; truncation and replacement are still rejected.

Also: non-UTF-8 large text now returns `binary_file` rather than
`file_too_large`, so a client retrying on 413 with a smaller window
can't loop forever; and `readFileWithLineAndLimit` throws instead of
silently ignoring a caller-supplied `fileHandle` on the by-path
fallback.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* refactor(core): thread the descriptor instead of forking text-read helpers

PR #7947 pinned large-text reads to one inode by threading a caller-owned
FileHandle into readTextRange as an optional field, plus a second field,
forceStreaming, to suppress the buffering fast path. Two optional fields
produced four combinations: one meaningful, one used by a single test, one
unreachable, and — in readFileWithLineAndLimit — one that silently fell
through to a by-path read, defeating the reason the caller opened a handle.

Unify the two encoding detectors. detectFileEncoding now takes a path or a
borrowed handle, so detectFileHandleEncoding is deleted along with the
message discrepancy between them: an encoding iconv-lite cannot load now
raises LargeNonUtf8TextError naming that encoding rather than deferring to
the decoder's generic invalid-utf8 variant. Both still refuse the file, and
the Serve boundary maps both to binary_file.

Split the reader into readTextRange (path) and readTextRangeFromHandle
(always streams, both byte bounds required). The unreachable combination and
its untested readFileHandleBuffer are gone, and with no fileHandle parameter
left for readFileWithLineAndLimit to ignore, the RangeError guarding that
fallthrough is deleted too — the trap can no longer be expressed.

CoreReadTextFileHandleRequest drops its required stats field. Nothing
downstream read it, and because the ACP request type it extends permits
extra properties, TypeScript accepted the dead argument silently.

readFileHandleChunks becomes chunksFromHandle(fh, from) — the one seam
byte-cursor text paging needs.

No observable change at the Serve boundary: its 222 tests pass unmodified.
Two fileSystemService tests were deleted rather than repaired; they asserted
the arguments readFileWithLineAndLimit received, which is nothing once the
handle path stops calling it. Their coverage lives in read-text-range.test.ts
against real files and in workspace-file-system.test.ts at the real boundary.

258 production lines in core, net -71 overall.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* refactor(core): make CoreReadTextFileHandleRequest standalone

Self-audit follow-up to f55c867a. Two fields survived the reshape that the
handle path never reads:

- `stats` was documented as required ("must pass the Stats captured from that
  handle") and nothing downstream read it. The handle path always streams, so
  it never needs a size to choose a strategy, and the encoding probe does its
  own fstat.
- `path` became dead once readTextRangeFromHandle replaced the path-plus-handle
  call. Errors are labelled with the path by the Serve boundary that owns it.

Neither was caught by the compiler: the ACP ReadTextFileRequest the type
derived from permits extra properties, so the CLI kept passing both silently.
That is the argument for declaring the type standalone rather than Omit-ing
four of six inherited fields and quietly re-admitting the rest.

Also record the second behaviour delta of the detector merge in the design
doc: detectFileEncoding catches I/O errors and falls back to 'utf-8', where
detectFileHandleEncoding let them propagate. The failure is not lost — a handle
that fails the 8 KiB probe fails the streaming read immediately after — but a
different call now reports it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* feat(serve): page large text files by byte cursor

Line offsets address a byte stream, so `readText` resolves them by scanning
from byte 0. Paging a large log that way is O(n^2) across pages, and past
MAX_TEXT_SCAN_BYTES (8 MiB) a deep page is refused outright — agents had no
O(1) path short of dropping to GET /file/bytes and splitting lines themselves,
losing encoding handling, multibyte safety, and the binary_file refusal.

A response that leaves content behind now returns `hasMore`, and where a file
byte offset is derivable, an opaque `nextCursor`. Passing it back as `cursor`
resumes in O(1). Page 1 is an ordinary `limit` read, so clients never compute
byte offsets themselves, and a paging loop does not break when a file happens
to be small.

The cursor is unsigned base64url JSON carrying {off, size, dev, ino}, matching
encodeOrganizedCursor rather than the HMAC-signed transcript codec: the path is
re-resolved through the workspace boundary on every request, so a forged cursor
can only move the offset within a file the caller may already read — what
GET /file/bytes?offset= allows today. What the payload is for is staleness:
a replaced or truncated file yields hash_mismatch instead of bytes from the
wrong place, while an append leaves an outstanding cursor valid — the case the
feature exists for.

Every minted cursor points at the start of a line. When a single line exceeds
maxOutputBytes the reader emits a truncated prefix and skips to the next line
rather than resuming mid-line, because a mid-line cursor makes the following
page snap forward and silently drop the rest of that line at the seam. Windows
cut mid-line by a byte cap therefore report hasMore with no cursor, as do
non-UTF-8 snapshot reads whose decoded text is a UTF-8 re-encoding with no
mapping back to file offsets. That is why hasMore is a field rather than a
restatement of nextCursor.

Cursor reads branch before the size check, not by widening the window gate:
a cursor read of a file under MAX_READ_BYTES would otherwise land on the
snapshot path, which knows only line/limit, and silently return line 0.

Adds the workspace_file_read_cursor capability, per the convention that new
behavior gets a new tag, and retargets the scan-budget hint at cursor paging.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(core): advance UTF-8 cursors after truncation

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* docs(serve): clarify cursor bootstrap limits

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(sdk): raise daemon browser bundle budget

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* test(serve): cover ACP cursor dispatch and cursor binary_file mapping (#8002)

* fix(core): only set sawCrlf for emitted lines in cursor paging (#8002)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Qwen Code Bot <qwen-code-bot@users.noreply.github.com>
2026-07-30 12:07:05 +00:00
..
adaptive-output-token-escalation fix(core): stop repeated truncated write_file/edit retries from looping (#5934) 2026-06-27 12:17:12 +00:00
assets feat(channels): add DingTalk interactive cards (#6930) 2026-07-29 07:32:53 +00:00
auth refactor(cli): provider-first auth registry with unified install pipeline (#3864) 2026-05-08 12:19:28 +08:00
auto-memory fix(core): prevent OOM in auto-memory extraction during /quit (#5147) (#5181) 2026-06-19 08:17:45 +08:00
channels feat(channels): GitHub polling adapter with notification-as-wakeup architecture (#7632) 2026-07-25 09:31:50 +00:00
compact-mode feat: optimize compact mode UX — shortcuts, settings sync, and safety (#3100) 2026-04-16 09:29:24 +08:00
compaction-image-stripping feat(core): strip inline media before chat compaction summary (#4101) 2026-05-14 10:20:11 +08:00
ctrl-o-detail-expand fix(cli): default to virtualized terminal history (#5738) 2026-07-28 12:51:55 +00:00
customize-banner-area feat(cli): customize banner area (logo, title, hide) (#3710) 2026-05-07 10:17:53 +08:00
daemon-acp-http docs(serve): Close multi-workspace hardening gaps (#7019) 2026-07-16 17:33:53 +00:00
daemon-session-artifacts feat(serve): add workspace persisted transcript reader (#6740) 2026-07-12 10:39:05 +00:00
daemon-sidechannel-coordination docs(design): daemon side-channel coordination (A1/A2/A4/A5) (#4511) 2026-07-05 09:43:46 +00:00
daemon-transport-abstraction feat(serve): add daemon idle detection to GET /health?deep=true (#4934) 2026-06-18 06:55:03 +00:00
fork-subagent feat(core): implement fork subagent for context sharing (#2936) 2026-04-14 14:27:38 +08:00
hot-reload Feat: LSP Server support hot reload (#5953) 2026-07-05 13:50:00 +00:00
performance perf(cli): defer startup prefetch tasks (#6303) 2026-07-07 15:31:55 +00:00
prompt-cache feat(core): stabilize tool schema declaration order (#6339) 2026-07-05 12:24:59 +00:00
prompt-suggestion fix(followup): prevent tool call UI leak and Enter accept buffer race (#2872) 2026-04-09 00:07:03 +08:00
rt-optimization feat(telemetry): foundation for skill-based RT optimization (P0+P1) (#4565) 2026-05-29 02:17:40 +08:00
session-crash-recovery feat(core): add unified session recovery planning (#6731) 2026-07-11 11:15:40 +00:00
session-idle-reaper feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
session-recap feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
session-title fix: Make chat recording failures durable and visible (#6743) 2026-07-12 10:52:26 +00:00
skill-nudge feat(memory): add autoSkill background project skill extraction (#3673) 2026-05-09 14:25:02 +08:00
slash-command feat(cli): improve slash command discovery (#3736) 2026-05-09 14:25:44 +08:00
standalone-clipboard-native-addon/assets fix(packaging): bundle clipboard addon in standalone builds (#6708) 2026-07-11 15:18:24 +00:00
structured-output docs: user + design docs for --json-schema structured output (#4051) 2026-05-17 23:10:34 +08:00
tool-use-summary feat(tui): partition tool display by type — collapse read/search, show mutation tools individually (#5661) 2026-06-25 12:44:50 +00:00
tools feat: robust ripgrep (#7888) 2026-07-29 06:08:22 +00:00
usage-only-stream-memory/assets fix: bound usage-only streams and abort on quit (#7038) 2026-07-16 18:11:53 +00:00
virtual-viewport fix(cli): default to virtualized terminal history (#5738) 2026-07-28 12:51:55 +00:00
vp-mouse-selection feat(cli): preserve semantic text when copying VP selections (#7286) 2026-07-22 14:06:03 +00:00
web-shell-pane-header-actions feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
2026-05-15-async-memory-recall-design.md fix(core): decouple auto-memory recall from main-agent request path (#4172) 2026-05-19 13:58:58 +08:00
2026-05-21-memory-pressure-monitor-design.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-05-26-daemon-logger-design.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-05-27-daemon-workspace-service-design.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-12-session-shell-permission-policy.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-13-file-history-snapshot-persistence.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-15-simulated-sed-file-history.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-23-fix-conflicts-command.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-24-daemon-clientid-self-heal-design.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-24-stream-inactivity-timeout-design.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-06-30-unified-reasoning-effort-cli.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-07-01-channel-lifecycle-status-adapters.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-07-01-channel-lifecycle-status-umbrella.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-07-01-channel-p0-identity-task-lifecycle-design.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-07-05-large-frame-handling-measurement.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
2026-07-06-session-start-profiler.md feat(daemon): Trace cold first-session startup (#6907) 2026-07-16 16:53:56 +00:00
2026-07-07-bounded-replay-snapshot-window.md fix(acp-bridge): raise live journal caps and expose as daemon config (#7715) 2026-07-25 14:14:09 +00:00
2026-07-09-webshell-user-message-input-annotations.md feat(web-shell): render composer references in user messages (#6537) 2026-07-11 17:44:47 +00:00
2026-07-11-daemon-persistent-workspace-registration.md feat(serve): persist dynamic workspace registrations (#6716) 2026-07-11 16:49:40 +00:00
2026-07-11-daemon-workspace-runtime-removal.md feat(serve): support runtime workspace removal (#6745) 2026-07-13 15:43:38 +00:00
2026-07-11-managed-memory-microcompaction.md fix(core): preserve managed memory during microcompaction (#6714) 2026-07-11 15:58:54 +00:00
2026-07-11-tool-call-preparing-events.md feat(acp): expose tool-call preparation lifecycle (#6819) 2026-07-15 00:40:02 +00:00
2026-07-13-cold-first-session-support.md feat(daemon): Trace cold first-session startup (#6907) 2026-07-16 16:53:56 +00:00
2026-07-13-pdf-vision-bridge-fallback.md feat(core): add PDF vision bridge fallback (#6846) 2026-07-15 03:42:14 +00:00
2026-07-13-workspace-skills-installed-path.md feat(serve): expose skill installation paths (#6811) 2026-07-13 09:29:09 +00:00
2026-07-14-chat-record-daemon-transcript-block-projection.md fix(transcript): mark dangling tool history incomplete (#7340) 2026-07-21 09:26:56 +00:00
2026-07-14-dingtalk-webhook-direct-message.md feat(channels): support DingTalk webhook delivery to direct messages (#6891) 2026-07-15 03:07:30 +00:00
2026-07-14-silent-command-heartbeat.md feat(core): emit liveness heartbeats for silent foreground shell commands (#6876) 2026-07-15 00:07:26 +00:00
2026-07-14-web-shell-readonly-daemon-transcript.md feat(webshell): replay ChatRecord history in readonly WebShell (#6999) 2026-07-19 00:09:44 +00:00
2026-07-15-daemon-log-stable-rotation.md feat(cli): Add bounded daemon log rotation (#6969) 2026-07-18 16:18:58 +00:00
2026-07-15-daemon-session-source-metadata.md feat(channels): stamp daemon sourceId with channel instance name on created sessions (#7078) 2026-07-17 14:57:27 +00:00
2026-07-15-dingtalk-interactive-cards.md feat(channels): add DingTalk interactive cards (#6930) 2026-07-29 07:32:53 +00:00
2026-07-16-default-background-subagents.md feat(core): improve subagent delegation defaults and guardrails (#7048) 2026-07-18 08:52:48 +00:00
2026-07-16-subagent-prompt-guardrails.md feat(core): improve subagent delegation defaults and guardrails (#7048) 2026-07-18 08:52:48 +00:00
2026-07-16-webshell-git-status-diff.md feat(web-shell): git status chip, visual working-tree diff, and sidebar git status (#7054) 2026-07-18 10:06:07 +00:00
2026-07-16-webshell-transcript-batched-dispatch.md fix(web-shell): batch transcript dispatch to avoid tab-return freeze (#7012) 2026-07-17 00:58:27 +00:00
2026-07-17-adaptive-tool-call-cap.md fix(core): make the per-turn tool-call cap adaptive (#7052) 2026-07-17 16:42:41 +00:00
2026-07-17-daemon-workspace-trust-hot-reload.md feat(serve): Hot-reload workspace trust changes (#7268) 2026-07-25 08:43:07 +00:00
2026-07-17-observed-channel-delivery-targets.md feat(channels): observe group names from inbound messages (#7155) 2026-07-18 09:26:12 +00:00
2026-07-17-plan-mode-shell-routing.md feat(core): Route Plan-mode shell commands by safety (#7172) 2026-07-19 16:00:22 +00:00
2026-07-17-workspace-session-info.md feat(serve): add GET /workspace/:id/session-info for session totals (#7077) 2026-07-17 06:18:49 +00:00
2026-07-18-daemon-workspace-display-names.md feat: support workspace display names (#7179) 2026-07-20 15:16:44 +00:00
2026-07-18-observed-channel-group-names.md feat(channels): observe group names from inbound messages (#7155) 2026-07-18 09:26:12 +00:00
2026-07-19-lazy-telemetry-sdk-loading.md perf(telemetry): lazy-load the SDK and split OTLP exporter chains by protocol (#7276) 2026-07-21 07:35:30 +00:00
2026-07-19-telemetry-protocol-split.md perf(telemetry): lazy-load the SDK and split OTLP exporter chains by protocol (#7276) 2026-07-21 07:35:30 +00:00
2026-07-19-webshell-git-log.md feat(web-shell): add git commit history browser (#7204) 2026-07-20 15:02:48 +00:00
2026-07-19-webshell-worktree-sessions.md feat(daemon): worktree-isolated sessions for parallel tasks (#7221) 2026-07-19 23:47:03 +00:00
2026-07-20-background-agent-hot-continuation.md feat(core): keep completed background agents resident (#7426) 2026-07-22 07:05:33 +00:00
2026-07-20-plan-mode-mid-turn-guidance.md fix(core): Enforce Plan mode entry boundary (#7248) 2026-07-20 04:35:22 +00:00
2026-07-20-skills-default-disabled.md feat(skills): add overridable default-disabled state (#7357) 2026-07-25 18:29:20 +00:00
2026-07-20-worktree-empty-state-toggle.md feat(web-shell): surface worktree isolation in the new-session empty state (#7365) 2026-07-21 07:38:33 +00:00
2026-07-21-headless-fork-subagents.md fix: support context-inheriting subagents in headless mode (#7378) 2026-07-21 12:33:13 +00:00
2026-07-21-lazy-undici-loading.md perf(startup): Load undici lazily behind package-local dynamic imports (#7455) 2026-07-22 00:25:52 +00:00
2026-07-21-tool-result-vision-bridge.md fix(core): bridge tool-result images for text-only models (#7484) 2026-07-28 08:47:40 +00:00
2026-07-22-background-agent-roster-restore.md feat(core): restore background agent roster (#7459) 2026-07-22 12:35:02 +00:00
2026-07-22-daemon-mcp-force-reconnect.md feat(serve): support forced MCP reconnects (#7488) 2026-07-22 09:02:28 +00:00
2026-07-22-lazy-google-genai-loading.md perf(startup): lazy-load Google GenAI SDK on first use (#7512) 2026-07-23 02:07:39 +00:00
2026-07-22-webshell-session-git-mode.md feat(web-shell): add git mode selector for new session creation (#7471) 2026-07-24 03:48:43 +00:00
2026-07-23-defer-acp-telemetry-initialization.md perf(cli): Defer ACP telemetry initialization (#7558) 2026-07-23 09:43:13 +00:00
2026-07-24-generation-stats.md feat(stats): show generation timing metrics (#7677) 2026-07-25 09:06:33 +00:00
2026-07-24-webshell-git-status-fast-path.md perf(web-shell): paint the composer git chip before git status completes (#7680) 2026-07-25 07:05:52 +00:00
2026-07-25-channel-interaction-presentation-contract.md feat(channels): add DingTalk interactive cards (#6930) 2026-07-29 07:32:53 +00:00
2026-07-26-manual-plan-exit-notice-delivery.md fix(core): reliably deliver manual plan-exit notices (#7744) 2026-07-26 13:25:56 +00:00
2026-07-27-github-channel-reason-dispatch.md feat(channels): dispatch GitHub notifications by reason (#7826) 2026-07-28 14:05:21 +00:00
2026-07-27-revert-pattern-triage-gate.md feat(triage): add revert-pattern high-risk path detection (#7414) 2026-07-28 05:53:57 +00:00
2026-07-28-user-prompt-submit-context-provenance.md feat(core): tag UserPromptSubmit hook context and record display provenance (#7956) 2026-07-30 11:45:23 +00:00
2026-07-28-web-shell-composer-intent-suggestions.md fix(web-shell): reduce composer input latency (#8015) 2026-07-29 08:06:53 +00:00
2026-07-29-github-channel-publication-contract.md fix(channels): make GitHub final response publication single-shot (#8033) 2026-07-29 23:15:04 +00:00
2026-07-29-handle-bound-text-range-reads.md feat(serve): page large text files by byte cursor (#8002) 2026-07-30 12:07:05 +00:00
2026-07-30-web-shell-ask-user-question-submit-retry.md fix(web-shell): make question submission retryable (#8096) 2026-07-30 08:58:12 +00:00
acp-channel-initialize-profiling.md perf(cli): Defer TUI runtime from ACP startup (#7182) 2026-07-19 00:10:15 +00:00
acp-compile-cache-propagation.md perf(cli): Propagate compile cache to ACP children (#7594) 2026-07-24 04:06:14 +00:00
acp-model-route-identity.md fix(acp): disambiguate model routes (#7028) 2026-07-16 18:24:41 +00:00
acp-preheat-contract.md feat(daemon): Advertise ACP preheat readiness (#7200) 2026-07-19 13:00:32 +00:00
active-todo-context.md fix(core): preserve active Todo context across tool turns (#7919) 2026-07-30 01:33:40 +00:00
auto-classifier-unavailable-fallback.md fix: ask when auto classifier is unavailable (#7331) 2026-07-21 03:27:17 +00:00
auto-compaction-threshold-redesign.md feat(core)!: redesign auto-compaction thresholds with three-tier ladder (#4345) 2026-05-25 21:11:08 +08:00
background-agent-status-and-details.md fix(web-shell): sync background agent status (#7561) 2026-07-23 06:35:04 +00:00
certified-session-writer-handoff.md fix(serve): Add certified session writer handoff (#7976) 2026-07-29 23:36:58 +00:00
channel-delivery-v1.md feat(daemon): add explicit channel delivery (#7388) 2026-07-23 17:44:23 +00:00
channel-worker-startup-failures.md fix(cli): Preserve channel startup failure details (#6950) 2026-07-16 01:17:19 +00:00
chat-recording-failure-observability.md fix: Make chat recording failures durable and visible (#6743) 2026-07-12 10:52:26 +00:00
conversation-branch-inspection.md feat(core): inspect persisted conversation branches (#7185) 2026-07-19 15:46:13 +00:00
cua-driver-mcp-reliability.md fix(cua-driver): harden MCP tool reliability (#6968) 2026-07-15 15:40:31 +00:00
custom-api-key-auth-wizard-prd.md docs(auth): add custom API key wizard PRD (#3583) 2026-05-13 14:04:41 +08:00
daemon-archived-session-export.md feat(cli): Add archived session export (#6911) 2026-07-15 12:21:07 +00:00
daemon-channel-runtime-control.md feat(cli): Add runtime daemon channel control (#6741) 2026-07-13 02:53:27 +00:00
daemon-extension-at-mention.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
daemon-extension-install-interactions.md feat(web-shell): add extension management page (#6815) 2026-07-14 08:31:13 +00:00
daemon-first-output-latency.md test(integration): Measure immediate prompt dispatch stages (#7994) 2026-07-29 23:37:46 +00:00
daemon-generation-sse.md feat(daemon): add stateless generation SSE (#6947) 2026-07-16 00:00:08 +00:00
daemon-global-deep-health.md feat(daemon): Aggregate deep health across workspaces (#6961) 2026-07-16 01:30:55 +00:00
daemon-idle-detection-api.md feat(loop): wire prompt-only /loop to self-paced wakeups (#5197) 2026-06-18 18:36:24 +08:00
daemon-legacy-session-workspace-telemetry.md feat(serve): Complete legacy session workspace telemetry (#7003) 2026-07-17 15:25:15 +00:00
daemon-multi-workspace-hardening.md docs(serve): Close multi-workspace hardening gaps (#7019) 2026-07-16 17:33:53 +00:00
daemon-multi-workspace-phase1-registry.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
daemon-multi-workspace-phase2a-sessions.md docs(serve): Close multi-workspace hardening gaps (#7019) 2026-07-16 17:33:53 +00:00
daemon-multi-workspace-phase4-acp.md feat(cli): workspace-qualified ACP transport (daemon multi-workspace phase 4) (#6621) 2026-07-11 00:24:01 +00:00
daemon-multi-workspace-phase4b-channel-workers.md feat(cli): group daemon channel workers by workspace (phase 4b) (#6635) 2026-07-11 13:08:02 +00:00
daemon-multi-workspace-phase4b-voice.md feat(serve): Add workspace-qualified Voice (#6839) 2026-07-14 03:42:58 +00:00
daemon-multi-workspace-session-export.md feat(serve): Add workspace-qualified session export (#6844) 2026-07-14 03:50:06 +00:00
daemon-multi-workspace-session-file-ops.md feat(serve): support multi-workspace rewind and shell (#6826) 2026-07-13 15:32:44 +00:00
daemon-multi-workspace-session-organization-mutations.md fix(cli): Scope session organization mutations by workspace (#6724) 2026-07-11 12:25:16 +00:00
daemon-session-runtime-status.md feat(daemon): expose session runtime status (#6645) 2026-07-10 10:15:12 +00:00
daemon-skill-toggle.md feat(skills): add overridable default-disabled state (#7357) 2026-07-25 18:29:20 +00:00
daemon-todo-stop-guard-hardening.md fix(daemon): harden Todo Stop Guard continuations (#7821) 2026-07-28 06:51:40 +00:00
daemon-todo-stop-guard.md feat(cli): add daemon Todo stop guard (#6945) 2026-07-18 01:48:20 +00:00
daemon-untrusted-workspace-session-catalog.md feat(serve): Expose read-only untrusted session catalogs (#6717) 2026-07-11 15:28:41 +00:00
daemon-workspace-remember.md fix(memory): allow forget to remove user managed memory (#6432) 2026-07-08 09:51:36 +00:00
declarative-agents-port.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
direct-external-context-auto-recall.md feat(external-context): Add submitted-prompt auto recall (#7877) 2026-07-29 05:21:29 +00:00
direct-external-context-provider.md feat(external-context): Add submitted-prompt auto recall (#7877) 2026-07-29 05:21:29 +00:00
dsw-swe-verified-release-pipeline.md ci: add isolated DSW SWE-bench release pipeline (#7656) 2026-07-29 06:35:58 +00:00
explicit-plan-exit-approval.md fix(core): exit_plan_mode returns guidance error from execute() instead of permission deny (#7673) 2026-07-25 02:24:20 +00:00
extension-file-reload.md feat: extension file reload — watch for plugin changes and hot-reload runtime (#6347) 2026-07-08 11:16:21 +00:00
extension-management-v2.md feat(serve): add extension management v2 (#6825) 2026-07-14 03:30:47 +00:00
f2-mcp-transport-pool.md docs(serve): Close multi-workspace hardening gaps (#7019) 2026-07-16 17:33:53 +00:00
final-tool-response-budget.md fix(core): Enforce final tool response budgets (#7323) 2026-07-21 16:09:46 +00:00
fork-resume-live-capabilities.md fix(core): rebind fork capabilities on resume (#7927) 2026-07-29 22:59:14 +00:00
full-turn-multimodal-routing.md feat: support full-turn multimodal routing for image prompts (#7045) 2026-07-17 23:22:46 +00:00
gen-ai-arms-field-alignment.md feat(core): add ARMS session user ID (#7921) 2026-07-28 11:10:38 +00:00
goal-loop-input-control.md fix(cli): allow goal controls during active loops (#7202) 2026-07-19 11:29:52 +00:00
issue-4479-token-usage-stats-coordination.md feat(stats): expose token usage for cost visibility (#4564) 2026-06-19 07:14:07 +08:00
java-daemon-sdk-alpha.md fix(sdk-java): Harden daemon transport reliability (#7603) 2026-07-24 04:22:05 +00:00
lazy-first-use-dependencies.md perf(core): Lazy-load first-use dependencies (#7686) 2026-07-26 03:04:33 +00:00
learn-video-input.md feat(cli): support native video input in /learn (#7497) 2026-07-24 04:07:32 +00:00
lightweight-jsonc-settings-editor.md perf(cli): replace comment-json settings parser (#7747) 2026-07-26 14:42:51 +00:00
managed-session-writer-shutdown.md fix(serve): Release managed session writer locks on shutdown (#7812) 2026-07-28 10:18:35 +00:00
markdown-chart-skill-integration.md feat(web-shell): render streaming charts with markdown-chart (#7916) 2026-07-29 06:04:56 +00:00
markdown-syntax-extension.md feat(cli): expand TUI markdown rendering (#3680) 2026-05-07 16:24:13 +08:00
mcp-management-runtime-model.md feat(serve): add workspace MCP management (#6954) 2026-07-16 02:24:07 +00:00
mcp-payload-filter.md fix(mcp): add opt-in model payload filtering (#7413) 2026-07-21 09:49:04 +00:00
mcp-tool-name-provider-compatibility.md fix(mcp): normalize tool names for strict providers (#6976) 2026-07-19 00:19:53 +00:00
monitor-cancel-notification.md fix(cli): prevent monitor turns after task_stop (#7573) 2026-07-23 07:48:55 +00:00
npm-background-auto-update.md fix(cli): update npm installs safely in background (#7322) 2026-07-21 06:32:24 +00:00
openrouter-auth-and-models.md refactor(cli): remove legacy qwen auth CLI subcommand, redirect to /auth TUI dialog (#3959) 2026-05-11 16:44:09 +08:00
prompt-queue-backpressure.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
serve-large-text-range-consistency.md fix(serve): allow bounded reads of large text files (#7947) 2026-07-29 07:49:51 +00:00
serve-server-final-split.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
serve-server-split.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
session-group-custom-hex-colors.md feat(web-shell): support custom Hex session group colors (#6752) 2026-07-12 10:41:17 +00:00
session-writer-lease-p0a.md feat: Gate session writer lease behind opt-in (#7894) 2026-07-28 04:37:02 +00:00
shell-safety-classification.md refactor(core): Classify shell safety as read-only, write, or unknown (#7053) 2026-07-18 14:01:33 +00:00
shell-timeout-error-semantics.md fix(core): Classify shell timeouts as tool errors (#6864) 2026-07-15 05:34:39 +00:00
standalone-clipboard-native-addon.md fix(packaging): bundle clipboard addon in standalone builds (#6708) 2026-07-11 15:18:24 +00:00
subagent-fork-turns.md feat(core): add fork_turns to fork subagents (#7346) 2026-07-21 07:08:12 +00:00
subagent-model-grade.md feat(core): add model grade selection for subagent spawn (#7685) (#7702) 2026-07-26 16:23:54 +00:00
submitted-prompt-provenance.md feat(hooks): Add submitted prompt provenance (#7762) 2026-07-27 15:53:15 +00:00
task-notification-transcript-placement.md fix(web-shell): render task notifications as system messages (#7822) 2026-07-27 09:15:18 +00:00
telemetry-llm-request-timing-design.md feat(core): Align GenAI content telemetry fields (#7667) 2026-07-24 18:42:48 +00:00
telemetry-outbound-propagation-design.md feat(telemetry): client-side HTTP span + opt-in W3C traceparent propagation (#4384) (#4390) 2026-05-25 22:16:54 +08:00
telemetry-resource-attributes-design.md feat(telemetry): support custom resource attributes and add metric cardinality controls (#4367) 2026-05-21 13:54:37 +08:00
telemetry-subagent-spans-design.md feat(core): Align GenAI telemetry with ARMS (#7536) 2026-07-23 07:35:46 +00:00
toolsearch-preload-threshold.md feat(core): preload deferred tools within a context-window threshold (#7922) 2026-07-29 23:01:01 +00:00
trusted-daemon-invocation-context.md feat(core): propagate trusted daemon invocation context (#7279) 2026-07-23 06:49:11 +00:00
tui-spacing-density-pr1.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
tui-user-message-half-line-pr2.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
untrusted-persisted-transcript.md feat(serve): Bound persisted transcript pages (#6769) 2026-07-13 03:18:11 +00:00
usage-only-stream-memory.md fix: bound usage-only streams and abort on quit (#7038) 2026-07-16 18:11:53 +00:00
vscode-output-channel-logging.md feat(vscode): route logs to the Qwen Code Companion output channel (#7121) 2026-07-18 06:58:14 +00:00
web-shell-advanced-table-controls.md feat(web-shell): refine advanced table controls (#7999) 2026-07-29 07:37:30 +00:00
web-shell-bounded-transcript-and-subagent-details.md feat(web-shell): show subagent sessions in detail panel (#7380) 2026-07-22 02:31:08 +00:00
web-shell-composer-performance.md fix(web-shell): reduce composer input latency (#8015) 2026-07-29 08:06:53 +00:00
web-shell-composer-workspace-selector.md feat(web-shell): add workspace selector button with add/switch dropdown in composer toolbar (#7390) 2026-07-22 01:10:18 +00:00
web-shell-custom-slash-command-actions.md feat(web-shell): support custom slash command actions (#7267) 2026-07-20 11:23:55 +00:00
web-shell-file-previews.md feat(web-shell): add rendered file previews (#7467) 2026-07-22 03:35:52 +00:00
web-shell-github-prs.md perf(cli): cache GitHub PR list in the daemon route with a 60s TTL (#7705) 2026-07-25 06:07:30 +00:00
web-shell-history-boundary-pagination.md fix(webui): stabilize history pagination (#8001) 2026-07-29 08:13:46 +00:00
web-shell-history-pagination.md perf(web-shell): optimize long session rendering (#7408) 2026-07-22 03:28:47 +00:00
web-shell-markdown-chart.md feat(web-shell): render streaming charts with markdown-chart (#7916) 2026-07-29 06:04:56 +00:00
web-shell-monitor-details.md feat(web-shell): add monitor task details (#7817) 2026-07-27 12:30:17 +00:00
web-shell-non-primary-session-archive-hardening.md fix(web-shell): harden non-primary archive actions (#6912) 2026-07-15 04:57:07 +00:00
web-shell-pane-header-actions.md feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
web-shell-plugin-shadow-surfaces.md fix(web-shell): isolate slash command plugin pages (#7581) 2026-07-23 08:39:10 +00:00
web-shell-prompt-send-failure-retry.md fix(web-shell): add prompt send retry feedback (#8106) 2026-07-30 08:49:43 +00:00
web-shell-secondary-workspace-voice.md feat(web-shell): Scope voice to composer workspace (#7754) 2026-07-27 15:47:45 +00:00
web-shell-selective-shadow-dom.md feat(web-shell): add selective shadow DOM isolation (#7551) 2026-07-23 02:54:12 +00:00
web-shell-session-created-callback.md feat(web-shell): add session created callback (#6703) 2026-07-13 07:04:42 +00:00
web-shell-session-source-filter.md fix(web-shell): filter sessions by source (#6995) 2026-07-16 04:56:50 +00:00
web-shell-skill-manager-page.md feat(web-shell): add skill management pages (#7018) 2026-07-17 06:42:46 +00:00
web-shell-table-selection-statistics.md feat(web-shell): add selection statistics to markdown tables (#6838) 2026-07-14 03:54:33 +00:00
web-shell-voice-mode.md feat(web-shell): honor voice hold mode (#7839) 2026-07-28 13:32:02 +00:00
web-shell-workspace-history-session-drafts.md fix(web-shell): isolate history and session drafts (#7810) 2026-07-28 01:45:52 +00:00
webshell-composer-placeholders.md feat(web-shell): support custom composer placeholders (#6765) 2026-07-12 12:44:59 +00:00
webshell-mention-icon-chips.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00
webshell-voice-button-visibility.md fix(web-shell): respect voice enabled setting (#7345) 2026-07-20 22:25:35 +00:00
workflow-tracing-gaps.md feat(telemetry): unify span creation paths for hierarchical trace tree (#4126) 2026-05-16 22:29:55 +08:00
workspace-agents-api.md feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
workspace-generation.md feat(serve): add workspace-level generation (#7552) 2026-07-23 05:17:03 +00:00
worktree.md feat(worktree): Phase D — startup --worktree flag + symlinkDirectories + PR refs (#4381) 2026-05-27 17:04:51 +08:00
yaml-parser-replacement.md docs: consolidate design docs and plans under docs/ (#6417) 2026-07-07 06:05:05 +00:00