qwen-code/docs/design
jinye c50120985b
fix(serve): Prevent repeated workspace skill rescans (#8080)
* fix(serve): prevent repeated workspace skill rescans

Make workspace skill status reads use committed snapshots and move refresh work to explicit mutation paths. Add generation-safe daemon caching, conditional HTTP responses, SDK revalidation, and multi-session extension refresh safeguards.

Refs #8079

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

* fix(serve): narrow the workspace-skills read model and close its regressions

Follow-up to the previous commit on this branch, from reviewing it.

Subtractions — these were separable from the fix and carried more surface
than value, so they move out of this change:

- Revert the ETag / If-None-Match layer (CORS allow+expose headers, the SDK
  conditional JSON cache, the browser bundle budget bump). Express already
  emits an ETag and answers 304 for these routes, so the only new behavior
  was the SDK cache. It saves transfer bytes but no daemon work — the ETag is
  a hash of the already-serialized body — and it shipped without a paired
  `Cache-Control`, which is what actually keeps an intermediary from serving
  a stale snapshot of an authenticated, mutable resource. The SDK cache was
  also unbounded, with no eviction or clear entry point.
- Revert moving `extensions_final` ahead of skill initialization in
  `Config.initialize`. In non-safe, non-bare mode `extensions_initial` is
  already the same argument-less `refreshCache()`, and it runs
  `applyStoreActivation`, so `getActiveExtensions()` is fully populated
  before skills are enumerated either way. The move changed only startup
  event order (and pushed permissionManager past the extension refresh) for
  every surface including the interactive CLI.

Regression fixes — the read went pure, but two of its inputs lost their only
path back to disk:

- Extension sources have no watcher, unlike skills. With the per-read
  `extensionManager.refreshCache()` gone, an extension installed, removed,
  enabled, or disabled outside the daemon would never reach the snapshot
  until the child restarted — and because extension-level skills are derived
  from the extension set, a skill-watcher tick could not recover it either.
  Adds `ExtensionManager.refreshCacheIfSourcesChanged()`: a stat-based
  fingerprint over the extension directory entries, each manifest, the
  enablement file, and the store state, which refreshes only when they moved.
  A status read pays one readdir plus one stat per entry instead of a
  directory scan and a full parse, and stays self-healing.

  The baseline is the pre-load fingerprint, so a change landing during a
  refresh stays visible to the next check instead of being masked by a
  post-load stat. The directory and store halves are captured at different
  points because a refresh writes the store itself but never the manifests.

- Revalidation is skipped in safe and bare mode, and the whole of it —
  including that mode check — sits inside its error boundary. Those modes never
  populate the extension cache by design, while the snapshot derives extension
  skills from `getExtensions()`, so revalidating there would have loaded the
  extensions the mode exists to exclude. Keeping the mode check outside the
  boundary would also have let a config missing those accessors fail a read.

- `initialized: true` with an empty list when the config has no
  `SkillManager` is now `initialized: false`. The daemon latches any
  initialized answer into `lastWorkspaceSkillsStatus` and then prefers it
  over its own local enumeration, so the old value could suppress the
  fallback permanently.

Also:

- The retained-snapshot path bumped the freshness timestamp without checking
  its generation, so a read that started before an invalidation could push
  out the TTL of a snapshot a later read had committed — letting a
  post-mutation snapshot go unrevalidated for longer than the window.
- `setWorkspaceSkillEnabled` folded `configsFailed` into `sessionsFailed`,
  but it sends `reason: 'settings'`, which never refreshes a skill cache, so
  the term was structurally zero. Report `configsFailed` from the `content`
  path instead, where it can actually be non-zero.
- Documents the settings-freshness gap this read model accepts: enablement
  now comes from the child's in-memory `LoadedSettings`, which `SettingsWatcher`
  keeps current for the User and Workspace scopes but not for System /
  SystemDefaults (locked-skill policy) or an untrusted workspace.

Tests: adds a real-filesystem guard that drives 50 consecutive cached reads
and asserts zero additional readdir/readFile calls — the mocked suites could
only prove `refreshCache` was not *called*, which is not the invariant that
broke. Adds coverage for the fingerprint gate (steady state, install,
removal, in-place manifest edit, concurrent callers, and the mid-refresh
race), for the null-manager, moved-sources, and safe/bare-mode read paths, and
for the generation guard. The generation-guard and safe/bare-mode tests were
each verified to fail with their fix reverted.

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

---------

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 12:52:37 +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
workspace-skills-read-model.md fix(serve): Prevent repeated workspace skill rescans (#8080) 2026-07-30 12:52:37 +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