diff --git a/issue-triage-after-v0.5.5.md b/issue-triage-after-v0.5.5.md new file mode 100644 index 00000000..889edcce --- /dev/null +++ b/issue-triage-after-v0.5.5.md @@ -0,0 +1,252 @@ +# Issue triage after v0.5.5 + +## Scope + +- Baseline release: `v0.5.5` +- Baseline issue: `#1238` (`fix(models): preserve GPT relay reasoning effort`) +- Initial GitHub snapshot: 2026-09-01, issues `#1239` through `#1290` +- Snapshot size: 42 issues (30 open, 12 closed); pull requests are excluded +- Final GitHub rescan: 2026-09-01; no issue above `#1290` +- Policy: do not change GitHub issue state or labels during this work. A confirmed + fix or accepted small feature is complete only after its isolated session has been + verified and merged into local `main`. + +## Outcome + +- 12 issues were already closed upstream and required no local change. +- 10 issue reports were handled by 8 isolated implementations and merged into local + `main`; duplicate reports `#1272` and `#1288` are covered by the `#1271` repair. +- 20 open issues were deferred because they could not be reproduced on macOS, lacked + enough evidence for a safe fix, were already supported, or were not very small + features. Their evidence and deferral reasons are recorded below. + +## Tracking + +| Issue | Upstream state | Triage | macOS reproduction | Isolated session | Local main | +| --- | --- | --- | --- | --- | --- | +| #1239 | open | Deferred: provider/configuration plus insufficient evidence | Current behavior maps semantic context overflow correctly; reported ambiguous 404 not reproduced as a product defect | Not needed | No change | +| #1240 | open | Confirmed product Bug | Reproduced on current `main`: Markdown images are removed from prose and collected at the end | `01a05d06-041e-7182-88db-5f3156d1119b`, commit `a1ddc2734` | Merged as `b1ecce781` | +| #1242 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1243 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1244 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1245 | open | Current `main` already contains the relevant Windows/chat scroll fixes; awaiting reporter confirmation | Current macOS tests pass; old Windows-only behavior cannot be reproduced on macOS | Not needed | No change | +| #1246 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1247 | open | Deferred: incomplete usage question, no environment or reproduction | Not reproducible from supplied information | Not needed | No change | +| #1251 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1252 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1253 | closed | Already closed upstream; fixed in v0.5.5 | Not needed | Not needed | No change | +| #1254 | open | Deferred: suspected Bug but insufficient provider/runtime evidence | Full repeated plan/approve/re-enter sequence completed on current `main` without truncation | Not needed | No change | +| #1255 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1256 | open | Deferred: current code already supports per-session Qwen reasoning effort; report lacks protocol/runtime details | Loopback Qwen-compatible upstream received `reasoning_effort=high` and completed | Not needed | No change | +| #1257 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1259 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1260 | open | Deferred: v0.5.4 hang path is covered by v0.5.5 watchdog fix; current report lacks response/log evidence | Current truncated-tool stream terminates within configured bounds | Not needed | No change | +| #1261 | open | Deferred: empty report and current `main` cannot reproduce the title-only scroll failure | Nine real Bash/permission cycles retained auto-follow and manual scrolling in isolated macOS UI | Not needed | No change | +| #1262 | closed | Already closed upstream | Not needed | Not needed | No change | +| #1263 | open | Deferred: product usage question rather than a reported defect or scoped feature | Not needed | Not needed | No change | +| #1264 | open | Confirmed Telegram delivery Bug | Reproduced with production buffer/formatter and injected 429: visible reply truncates while delivery state is cleared | `01a05d09-acbb-7163-9c62-a57fed65e4ba`, commit `ba4ecf47b` | Merged as `c0f3318d9` | +| #1266 | open | Confirmed retry-message clarity Bug | Reproduced through current retry conversion and JSDOM: `rate_limit` is shown only as HTTP 429 plus 13570 raw seconds | `01a05d0d-acc9-70d2-8782-3c5fc5dbd1d1`, commit `b7e7674a5` | Merged as `ee1efaff0` | +| #1268 | open | Deferred: multi-harness support is an XL cross-layer feature, not a small feature | Not applicable | Not needed | No change | +| #1269 | open | Confirmed DeepSeek reasoning round-trip Bug | Reproduced through proxy + loopback: generic host drops `reasoning_content` and upstream returns 400 | `01a05d12-b0a8-7313-8611-1f59c5758ed0`, commit `2806f750e` | Merged as `ece7c54c4` | +| #1270 | open | Deferred: evidence points to Tencent iLink/mobile account authorization; repository defect not demonstrated | Local old-protocol QR/status flow works; real mobile authorization intentionally not attempted | Not needed | No change | +| #1271 | open | Confirmed tool-input watchdog regression | Time-compressed macOS stream is aborted despite continuous valid `input_json_delta` progress | `01a05d12-591a-7d22-bb63-cd94d02a97d2`, commit `c6679afea` | Merged as `5eecf5cbc` | +| #1272 | open | Duplicate Bug: same watchdog signature and root cause as #1271 | Reproduced same progressing-stream false positive | Covered and verified by #1271 session | Fixed by `5eecf5cbc` | +| #1273 | open | Accepted small feature: expose existing conversation-only rewind for pure-chat/error turns | Not applicable | `01a05d18-15cd-7af0-94ba-1b1e654bc14e`, commit `65d0e6a0a` | Merged as `aa237f2c2` | +| #1274 | open | Deferred: already supported via global attribution settings; usage/discoverability question | Not applicable | Not needed | No change | +| #1275 | open | Deferred: 600-second total stream cap is an intentional anti-drip protection; configurability needs product scope | Short-cap macOS loopback terminates a healthy long-thinking stream; a raised cap allows the same stream to complete | Not needed | No change | +| #1277 | open | Confirmed Computer Use image conversion Bug | Reproduced through real proxy chain: Chat drops tool-result images while Responses preserves them | `01a05d1f-0c7d-7610-8414-3833e9ecf76d`, commit `e8b74a8dd` | Merged with #1269 conflict resolution as `cf9d6c41a` | +| #1279 | open | Deferred: Anthropic Base URL was configured with `/v1`; current root-URL behavior is correct | Root URL produces `/v1/messages`; user-supplied `/v1` produces `/v1/v1/messages` | Not needed | No change | +| #1280 | closed | Already closed upstream; empty report | Not needed | Not needed | No change | +| #1281 | open | Deferred: partial transcript deletion is a high-risk persisted graph rewrite, not a small feature | Not applicable | Not needed | No change | +| #1283 | open | Confirmed GLM 5.3 reasoning-capability Bug | Real CLI→loopback sends invalid adaptive thinking and reproduces 400/1210; required thinking succeeds | `01a05d25-6bf2-7f10-8e4a-14bdb0e28ae3`, commit `c59a551c9` | Merged as `8d8169ea7` | +| #1284 | open | Deferred: suspected Windows-specific 5k-row virtualization/painting issue; macOS cannot reproduce | Real macOS UI loaded 5,427 durable rows and scrolled mid/top during active task without blank content | Not needed | No change | +| #1285 | open | Deferred: unreviewed high-risk third-party plugin plus a large runtime feature | Not applicable | Not needed | No change | +| #1286 | open | Deferred: Telegram already has `/resume`; unspecified all-IM parity is a cross-adapter medium feature | Not applicable | Not needed | No change | +| #1287 | open | Deferred: no 30-day cutoff; older sessions are grouped under Earlier/search, while the real 400-item cap needs pagination | Related fixtures and sidebar/store/search tests pass | Not needed | No change | +| #1288 | open | Duplicate Bug: same progressing tool-input watchdog root cause as #1271/#1272 | Reproduced with continuous deltas at a compressed timeout | Covered and independently reverified against #1271 commit | Fixed by `5eecf5cbc` | +| #1289 | open | Deferred: Windows-only clipboard/virtualization candidate; macOS cannot reproduce | Real active-task UI copied prompt/reply correctly both before and after virtualization | Not needed | No change | +| #1290 | open | Deferred: already configurable through `CLAUDE_CODE_MAX_OUTPUT_TOKENS`; dedicated per-model UI is not a small feature | Isolated evaluation confirms 16K override and 64K custom-model cap | Not needed | No change | + +## Deferred details + +### #1239 + +The current code preserves upstream error bodies and classifies known context-overflow +signals before generic HTTP 404 model errors. An offline macOS loopback reproduction +confirmed that semantic overflow responses become `Prompt is too long`, while a bare +404 remains a model-routing error. The report used an explicit 1,000,000-token Luna +configuration and did not include the raw upstream 404 response, runtime commit, +normalized provider configuration, or auto-compact state. Reinterpreting every 404 as +context overflow would introduce false positives, so no safe product change is justified. + +### #1245 + +The report is from Windows desktop v0.5.3. The current branch includes the v0.5.4 +Windows chat-rendering fix and the v0.5.5 virtual-row stabilization. Long transcript, +history-window, send-to-bottom, tab restore, and subagent-return tests all pass on macOS. +The issue has no steps, screenshot, DPI/scale, or current-version confirmation, so no +additional fix can be scoped safely. + +### #1254 + +An isolated macOS run exercised plan mode, approval, implementation, a second plan-mode +entry, a second approval, and a second implementation in the same session. All four +turns completed and all permission transitions were acknowledged. The report does not +identify the provider, model, prompt, last tool call, event ID, diagnostic output, or +whether the upstream stream ended early, so the current code path cannot be implicated. + +### #1256 + +Current `main` gives unknown Qwen models the generic reasoning profile and passes the +selected session effort through `output_config.effort` to OpenAI Chat +`reasoning_effort`. A macOS loopback reproduction captured `qwen3.8` with +`reasoning_effort=high` and a successful response. The report omits provider format, +local inference server/version, request trace, expected upstream field, and error body; +nonstandard servers that require a different field are an upstream protocol detail. + +### #1247 + +The issue body contains no description, environment, steps, logs, screenshot, or version. +The only comment repeats that pasted Feishu text has no line breaks, and the maintainer +requested a screenshot that was never supplied. + +### #1263 + +This asks whether project-memory indexing exists; it does not report broken behavior or +describe a bounded requested change. + +### #1261 + +The body is an entirely empty template. An isolated macOS desktop run completed nine +real Bash permission cycles while preserving bottom follow, manual wheel scrolling, +the Latest control, and follow after returning to the bottom. The current MessageList +suite also passes. No recording, exact interaction sequence, window dimensions, tool +expansion state, or diagnostic event identifies a different transition to fix. + +### #1268 + +Supporting Pi, DSH, and other harnesses requires a runtime-driver abstraction, event and +permission translation, alternate session persistence/indexing, capability-gated UI, +packaging, migrations, and deterministic contracts. The issue defines neither a first +harness nor a feature-parity boundary. DSH's current public SDK also lacks key desktop +control capabilities such as cancellation/close, approval round-trips, and protocol +version negotiation. This should be split into an RFC and a single-harness MVP rather +than implemented as a small issue. + +### #1260 + +The report is from v0.5.4 and supplies no provider, response, retry header, log, event ID, +or repeatable steps. Current `main` includes the v0.5.5 truncated-tool watchdog and +correctly transitions a terminal stream error to idle/error. A separate simulated +`429 Retry-After: 3600` does reveal a possible long-wait risk, but the issue contains no +evidence connecting its GLM Coding Plan run to that path, so changing retry policy here +would be speculative. + +### #1270 + +The repository passes the official iLink QR URL through unchanged and the local +wait/expired flow works with a mocked official endpoint. A matching report also exists +against Tencent's official plugin, including terminal QR rendering, which points toward +account eligibility, rollout, risk control, or the phone-side network path. This issue +has no polling result, decoded hostname, prior bot-binding history, screenshot, request +ID, or account/network A/B evidence. Real WeChat authorization was intentionally not +attempted. The repository's older login protocol is an adjacent compatibility gap, but +the same symptom occurs with Tencent's current protocol and therefore cannot be assigned +as this issue's cause. + +### #1272 + +The report has the same `input_json_delta`, `tool_use`, and exact 120-second termination +signature as #1271, with larger delta counts but no distinct trigger or acceptance rule. +It is covered only if the #1271 repair allows continuously progressing input to complete +past the old absolute limit while still terminating a truly stalled/no-stop stream. + +### #1274 + +The title's request is already supported for Bash commits, `/commit`, and +`/commit-push-pr` through the global `~/.claude/settings.json` setting +`{"attribution":{"commit":""}}`. The deprecated `includeCoAuthoredBy: false` also +works. A desktop toggle could improve discoverability, but the issue does not request a +UI and the behavior itself needs no code change. + +### #1275 + +The ten-minute total stream cap is intentionally separate from the idle timer so a +provider cannot keep a response alive forever by dripping events. It is already +overrideable by process environment, but desktop has no dedicated setting. Removing or +resetting the cap on every delta would regress the earlier infinite-drip failure; adding +a persisted UI setting requires product limits and migration work that this issue does +not define. + +### #1279 + +The Anthropic SDK expects a root Base URL and appends `/v1/messages`. The issue's doubled +path is reproduced only when the supplied Base URL already ends in `/v1`; the provider +UI and documentation already say to use the address before `/v1`. Silently stripping +the suffix would break gateways where `/v1` is a legitimate path prefix. A future narrow +UX validation could warn, but the current report does not demonstrate a runtime defect. + +### #1281 + +Deleting an interior message while retaining later turns requires atomic transcript +graph rewriting, `parentUuid` repair, full tool-use/result pairing, compaction-boundary +rules, runtime quiescence, search/index refresh, backup/recovery, and a product decision +between tombstones and physical deletion. Editing only user or assistant text can create +invalid API history. The existing rewind safely removes a suffix; it is not an interior +delete primitive. + +### #1285 + +The external plugin is new, has no CI or established release history, and intercepts all +provider traffic while rewriting provider Base URLs and copying credentials into runtime +state. Listing it as recommended would imply a security endorsement. Its proposed native +two-stage tool policy is not equivalent to existing Tool Search and would require a new +per-turn runtime state machine across retries, resume, compaction, subagents, concurrent +sessions, cache identity, persistence, and UI. No reproducible benchmark is supplied. + +### #1286 + +Telegram has supported `/resume` since June 2026 and its related tests pass. Feishu, +DingTalk, WeChat, and WhatsApp do not expose it. The issue names no platform, so it is +either an already-supported usage question or an all-adapter parity project involving +shared selection state, platform-specific two-level UX, atomic session switching, +expiry/pagination, and security filtering. That is not a very small feature. + +### #1284 + +The report shows a 5,427-message Windows 10 transcript becoming blank only while a task +runs. An isolated macOS UI loaded the same durable row count, held a real permission +request open, and scrolled to the middle and top with painted rows throughout; a very +tall live stream also remained scrollable. No macOS reproduction means the required Bug +gate is not met. Windows DPI/ResizeObserver and spacer painting remain hypotheses, not a +safe fix, until a recording, build/scale/window details, and a sanitized transcript +shape are available. + +### #1287 + +Neither v0.5.5 nor current `main` discards sessions at 30 days. v0.5.5 groups by project +with an expand action; current `main` groups 31-day-and-older sessions under Earlier, +and global search spans history. The real limit is the newest 400 sessions loaded into +the sidebar. Correctly removing that boundary requires offset pagination and load-more +state rather than another limit increase, and the issue provides no session count or +evidence that the 400-item window was reached. + +### #1290 + +Custom models default to 32K with a 64K ceiling, but the existing Settings JSON supports +`{"env":{"CLAUDE_CODE_MAX_OUTPUT_TOKENS":"16384"}}`; the value is preserved through +provider activation and controls Anthropic-compatible requests. OpenAI Chat/Responses +intentionally omit the output limit so the upstream decides. A dedicated per-provider +or per-model field would require schema, persistence, runtime, and UI work, which the +question does not require. + +### #1289 + +The same reporter and environment as #1284 describe message-action copying failing only +while another task runs. In an isolated macOS UI, both user prompts and assistant replies +copied correctly during a 30-second active stream; the same remained true after crossing +the virtualization threshold with 62 turns and scrolling to the earliest mounted rows. +The screenshot does not identify prompt versus reply, whether the button acknowledged +the click, clipboard contents/errors, row count, DPI, or a complete pointer sequence. +Without the required macOS reproduction, changing the `pointerup`/blur/click seam would +be speculative.