Repository navigation
fix(gitlab): unresolved overview threads count as review findings - #30397
juliusmarminge merged 3 commits into
Conversation
A GitLab discussion started on the merge request itself, not on a diff line, came through as a plain comment, so it never got a Fix button and "Fix findings" left it out. The notes API can't tell a discussion's first note from its replies, so the discussions read now reports the first note of each unresolved overview discussion and the provider marks that note a review comment. Replies stay plain comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Overview findings sit beside the comment links, edit dates and bot flags already on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
**v0.1.8-nightly.20261106.4262** · 129 changes from 44 contributors - **Pull request composer suggestions.** Find users, issues, and pull requests as you type mentions and references in review composers. - **Review comments in chat.** Add pull request comments to chat without framing them as fixes. - **GitLab change requests.** Request changes on GitLab merge requests and see change requests submitted on GitLab. - **GitLab pipeline jobs.** See individual pipeline jobs in the checks panel to identify failures without opening GitLab. - **Desktop window tiling.** Shrink the desktop window to fit half-screen and quarter-screen tiles. - **Stop project actions on settle.** Choose to stop project actions and their child processes automatically when a thread settles. - **Preserved composer context.** Adding multiple findings or diff selections to the composer no longer drops earlier draft content. ### Plus 112 more bug fixes and performance improvements. <details> <summary>Full changelog</summary> ## What's Changed * fix(gitlab): merge requests can delete their source branch by @TonybynMp4 in pingdotgg/t3code#30453 * fix(gitlab): comments link to their note on GitLab by @TonybynMp4 in pingdotgg/t3code#30411 * fix(mobile): iOS terminal accepts Chinese, Japanese and Korean input by @juliusmarminge in pingdotgg/t3code#30546 * fix(mobile): Android app no longer stays offline after reopening by @kahlstrm in pingdotgg/t3code#28625 * fix(mobile): show one Android notification per thread completion by @shivamhwp in pingdotgg/t3code#27699 * fix(mobile): stop Android composer flicker at the wrap boundary by @shivamhwp in pingdotgg/t3code#27682 * fix(mobile): Android dictation works with regional preferences set by @EhsanulHaqueSiam in pingdotgg/t3code#31030 * fix(mobile): iOS compose button no longer grows while a tab is pressed by @Jerematix in pingdotgg/t3code#28955 * fix(mobile): Android terminal Backspace deletes on the first press by @only21mil in pingdotgg/t3code#24983 * fix(mobile): Android secret requests no longer offer password manager logins by @voida6 in pingdotgg/t3code#29825 * fix(mobile): iOS composer text no longer turns invisible mid-draft by @wojas in pingdotgg/t3code#30135 * fix(mobile): iOS 26 scroll edge effect no longer hides composer text by @wojas in pingdotgg/t3code#30138 * fix(mobile): typing after in-app dictation reaches the draft again on iOS by @wojas in pingdotgg/t3code#30139 * perf(mobile): skip obsolete queued iOS diff row decodes by @saphid in pingdotgg/t3code#25287 * fix(gitlab): the checks and review list filters work by @TonybynMp4 in pingdotgg/t3code#30433 * fix(mobile): keep Android tablet cold launches in landscape by @Dwite in pingdotgg/t3code#28825 * fix(pr): GitCafe attachments render in pull request bodies by @juliusmarminge in pingdotgg/t3code#31741 * fix(gitlab): unresolved overview threads count as review findings by @TonybynMp4 in pingdotgg/t3code#30397 * fix(mobile): Android alerts and the live card show the same status bar icon by @juliusmarminge in pingdotgg/t3code#29738 * fix(mobile): keyboard state follows Android's nonanimated IME show by @juliusmarminge in pingdotgg/t3code#25847 * fix(mobile): Android composer no longer accepts autofill by @juliusmarminge in pingdotgg/t3code#27489 * perf(mobile): skip obsolete queued full token decodes by @saphid in pingdotgg/t3code#25320 * fix(gitlab): threads on changed code show as outdated by @TonybynMp4 in pingdotgg/t3code#30423 * fix(gitlab): the checks panel lists each pipeline job by @TonybynMp4 in pingdotgg/t3code#28728 * perf(mobile): avoid code row scans while dragging file paths by @saphid in pingdotgg/t3code#25484 * fix(chat): show one usage-limit recovery notice by @shivamhwp in pingdotgg/t3code#29292 * fix(web): adding to the composer no longer drops earlier findings and selections by @TonybynMp4 in pingdotgg/t3code#24990 * feat(pull-requests): PR composers complete @user mentions by @TonybynMp4 in pingdotgg/t3code#30747 * feat(web): add pull request comments to the chat by @TonybynMp4 in pingdotgg/t3code#30579 * feat(gitlab): link issue, merge request, commit and user references by @TonybynMp4 in pingdotgg/t3code#30524 * fix(mobile): sending on iOS no longer leaves an autocorrected draft behind by @saphid in pingdotgg/t3code#26452 * feat(gitlab): reviews can request changes by @TonybynMp4 in pingdotgg/t3code#30549 * feat(pull-requests): PR composers complete #123 and GitLab !123 references by @TonybynMp4 in pingdotgg/t3code#30857 * feat(gitlab): merge requests from forks can toggle maintainer edits by @TonybynMp4 in pingdotgg/t3code#30518 * fix(prs): reviewer menu searches past the first page and keeps GitLab's requested reviewers by @TonybynMp4 in pingdotgg/t3code#22489 * fix(ui): snooze menu times match the menu's typography by @ishaanko in pingdotgg/t3code#30596 * feat(web): a Labs setting hides tool calls so threads read like a chat by @flamboh in pingdotgg/t3code#30000 * feat(scheduled-tasks): tasks link to their thread by @t3dotgg in pingdotgg/t3code#31764 * fix(shared): recognize numeric bare-repository config by @macodev00 in pingdotgg/t3code#27500 * fix(server): a command id reused for two threads at once no longer succeeds for both by @saphid in pingdotgg/t3code#18385 * fix(server): coalesce tool output before it fills the live buffer by @snarkyalyx in pingdotgg/t3code#16317 * perf(server): Windows git reads no longer start a console host by @AkiVonAkira in pingdotgg/t3code#19288 * fix(server): a publish whose first push fails still shows the new remote by @saphid in pingdotgg/t3code#29688 * fix(server): reverting files removes what a new .gitignore from the turn was hiding by @saphid in pingdotgg/t3code#29795 * fix(server): Codex titles no longer fail on ChatGPT accounts without gpt-6-luna by @Muzammil-Bit in pingdotgg/t3code#30078 * fix(desktop): quit no longer orphans a backend that is slow to stop by @saphid in pingdotgg/t3code#22572 * perf(server): GitHub activity reads skip PR-wide fields on later review-thread pages (8.9 s → 6.8 s median) by @Yuruzuu in pingdotgg/t3code#30294 * perf(server): the headless browser closes after five idle minutes (517 MiB → 1.6 MiB median) by @Yuruzuu in pingdotgg/t3code#30306 * fix(provider-acp-registry): surface agent error message on sign-in failure by @iScabrous in pingdotgg/t3code#30295 * perf(server): a slow host no longer delays other watched PRs' wakes (935 ms → 65 ms median) by @Yuruzuu in pingdotgg/t3code#30291 * perf(server): PR cache invalidation no longer waits on other projects' reads (1,163 ms → 0.12 ms median) by @Yuruzuu in pingdotgg/t3code#30293 * fix(opencode): tools stopped mid-run show as interrupted, not failed by @saphid in pingdotgg/t3code#29762 * fix(client-runtime): pull request bodies with CRLF line endings keep their code blocks whole by @MarcoDotIO in pingdotgg/t3code#30352 * fix(shared): long assistant quote chips no longer end in a broken character by @spoukyii in pingdotgg/t3code#30367 * fix(cli): t3 connect unlink no longer warns about a server that is gone by @MarcoDotIO in pingdotgg/t3code#30324 * fix(server): ACP agents get T3CODE_THREAD_ID like Claude and Codex sessions by @frankhommers in pingdotgg/t3code#30361 * fix(server): accept a case-insensitive DPoP authorization scheme by @spoukyii in pingdotgg/t3code#30337 * fix(server): usage-limit auto-resume no longer arms subagents of archived or deleted parents by @spoukyii in pingdotgg/t3code#30363 * fix(provider-core): background work notices no longer end in a broken character by @spoukyii in pingdotgg/t3code#30369 * fix(client-runtime): subagent previews no longer end in a broken character by @spoukyii in pingdotgg/t3code#30391 * fix(server): explain fake-IP DNS failures in HTML previews by @shivamhwp in pingdotgg/t3code#30318 * perf(resource-monitor): Linux terminal process checks use a third of the CPU by @jaikhuranna in pingdotgg/t3code#30381 * fix(server): failed Claude text generation shows Claude's error instead of raw JSON by @MarcoDotIO in pingdotgg/t3code#30331 * fix(server): pull request tools point a bare thread uuid at its mcp: thread by @spoukyii in pingdotgg/t3code#30375 * fix(server): message search keeps results when a short non-Latin word differs in case by @MarcoDotIO in pingdotgg/t3code#30332 * fix(web): preview annotation chip labels no longer end in a broken character by @spoukyii in pingdotgg/t3code#30345 * fix(server): thread titles no longer fail when the text generation provider can't run by @medric-z in pingdotgg/t3code#29607 * fix(web): refresh resource timeline while diagnostics is open by @shawk08033 in pingdotgg/t3code#30528 * fix(usage): a CLIProxy hub saved as its management.html panel URL shows accounts again by @Jolymmiles in pingdotgg/t3code#25579 * fix(shared): command output keeps text after an unterminated OSC by @spoukyii in pingdotgg/t3code#30479 * fix(cli): t3 up's retry and restart hints keep --base-dir by @spoukyii in pingdotgg/t3code#30480 * fix(server): a branch tracking another local branch no longer shows that branch's PR by @MarcoDotIO in pingdotgg/t3code#30563 * fix(web): terminal links keep route and pnpm paths in one piece by @tiliakoos in pingdotgg/t3code#30603 * fix(shared): CSV and TSV attachments keep their table under generic file types by @tiliakoos in pingdotgg/t3code#30601 * fix(server): report Claude settings compaction threshold by @voltcrash in pingdotgg/t3code#29220 * fix(cli): t3 project remove finds a deleted project by a relative or trailing-slash path by @MarcoDotIO in pingdotgg/t3code#30562 * fix(server): an invalid regex in project search still finds its text when Match case is off by @MarcoDotIO in pingdotgg/t3code#30569 * fix(server): agents see why a project update was refused instead of a generic failure by @MarcoDotIO in pingdotgg/t3code#30564 * perf(client-runtime): stop tracing streamed thread batches by @ElliotDrel in pingdotgg/t3code#30679 * fix(server): rewound Codex threads import their history from before the rewind by @MarcoDotIO in pingdotgg/t3code#30652 * fix(server): keep writes moving with a larger WAL limit by @Yash-Singh1 in pingdotgg/t3code#31804 * fix(opencode): edits that delete text keep their empty replacement by @Jo2234 in pingdotgg/t3code#30643 * fix(forgejo): read author assignees once by @Jo2234 in pingdotgg/t3code#30686 * fix(cli): t3 pair's no-running-server hint keeps --base-dir by @saphid in pingdotgg/t3code#30689 * perf(server): stop tracing routine port polling helpers by @ElliotDrel in pingdotgg/t3code#30678 * fix(server): ACP MCP bridge no longer splits messages on U+2028/U+2029 by @geezoria in pingdotgg/t3code#30719 * fix(cli): expand home-relative thread project paths by @Jo2234 in pingdotgg/t3code#30721 * perf(ci): boot the built web client in Build and Typecheck, not Test Web (about 22 s off the longest job) by @Pyseph in pingdotgg/t3code#30752 * fix(shared): ignore unfinished quoted Git config continuations by @imharjot in pingdotgg/t3code#30743 * fix(review-guide): preserve excerpt line terminators by @Jo2234 in pingdotgg/t3code#30717 * feat(pi): show extension status in existing controls by @StiensWout in pingdotgg/t3code#23901 * fix(fx): preserve literal unicode escape text in clipped replies by @Jo2234 in pingdotgg/t3code#30701 * perf(dev): knip:check runs its two passes side by side (34 s → 26 s median on 4 CPUs) by @Pyseph in pingdotgg/t3code#30737 * fix(shared): command output no longer prints the final byte of escape sequences with intermediates by @geezoria in pingdotgg/t3code#30724 * fix(web): restore folder breadcrumb trails when reopening tabs by @Jo2234 in pingdotgg/t3code#30706 * fix(client-runtime): sanitized error stacks keep line and column for URLs with a query by @geezoria in pingdotgg/t3code#30726 * fix(shared): shortened agent paths like /tmp/... no longer become broken file chips by @saphid in pingdotgg/t3code#30762 * fix(server): MCP auth spans no longer include the tool call by @navidnadali in pingdotgg/t3code#30834 * fix(server): preview browser picks up Chrome 157 security fixes by @snnbotchway in pingdotgg/t3code#30820 * fix(server): agents read RTF paragraphs that end with a backslash by @geezoria in pingdotgg/t3code#30848 * fix(server): a late checkpoint keeps the stopped run's baselines by @navidnadali in pingdotgg/t3code#30830 * fix(shared): preserve IPv6 hosts when switching clone protocols by @Lucenx9 in pingdotgg/t3code#30798 * docs: explain Linux desktop installation by @voltcrash in pingdotgg/t3code#30819 * perf(server): each live event is projected once for all subscribers by @navidnadali in pingdotgg/t3code#30860 * fix(server): request_secret asks for one value per card by @rgrvlsk in pingdotgg/t3code#30805 * fix(ssh): host discovery skips hidden Include matches by @Lucenx9 in pingdotgg/t3code#30910 * docs: clarify diagnostic exports and their separate controls by @Mr-Neutr0n in pingdotgg/t3code#30942 * docs: fix worktree cleanup path in FAQ by @jacobcorbett in pingdotgg/t3code#31000 * fix(server): a policy that manages observability endpoints is refused instead of ignored by @MarcoDotIO in pingdotgg/t3code#30973 * fix(client-runtime): untitled subagent titles no longer end in a broken character by @spoukyii in pingdotgg/t3code#30390 * fix(shared): underline styles and colours no longer scramble command output colours by @MarcoDotIO in pingdotgg/t3code#21542 * perf(server): batch queued provider writes without waiting by @Yash-Singh1 in pingdotgg/t3code#31656 * fix(server): prepare restart continuations faster on shutdown by @Yash-Singh1 in pingdotgg/t3code#31807 * fix(web): keep change totals aligned beside the label by @Yash-Singh1 in pingdotgg/t3code#31814 * fix(web): rank usage provider summaries by the selected metric by @dharmeshgurnani in pingdotgg/t3code#15632 * fix(server): wait for automatic follow-ups before settling threads by @Yash-Singh1 in pingdotgg/t3code#31815 * fix(web): settings descriptions use the full row and stay two lines by @flamboh in pingdotgg/t3code#31826 * fix(voice): insert Unicode word boundaries for dictation by @juliusmarminge in pingdotgg/t3code#31799 * fix(mobile): use preferred languages for on-device iPhone dictation by @juliusmarminge in pingdotgg/t3code#31800 * fix(mobile): keep the opening words of local iPhone dictation by @juliusmarminge in pingdotgg/t3code#31801 * fix(server): keep PR generation focused on the change by @Yash-Singh1 in pingdotgg/t3code#31819 * chore(desktop): trace shutdown phases by @Yash-Singh1 in pingdotgg/t3code#31850 * perf(server): batch shutdown recovery commits by @Yash-Singh1 in pingdotgg/t3code#31854 * perf(server): batch projection recovery reads into one query by @Yash-Singh1 in pingdotgg/t3code#31842 * fix(desktop): let the window shrink to 400x360 so it fits half-screen tiles by @shivamhwp in pingdotgg/t3code#28223 * fix(web): improve Changes row text and spacing by @shivamhwp in pingdotgg/t3code#31858 * feat(server): stop opted-in project actions when threads settle by @Yash-Singh1 in pingdotgg/t3code#31857 * fix(build): skip Koffi source builds during cross-packaging by @Yash-Singh1 in pingdotgg/t3code#31864 * fix(server): Antigravity installs on Intel Macs by @aledog007 in pingdotgg/t3code#30189 ## New Contributors * @kahlstrm made their first contribution in pingdotgg/t3code#28625 * @Jerematix made their first contribution in pingdotgg/t3code#28955 * @snarkyalyx made their first contribution in pingdotgg/t3code#16317 * @Muzammil-Bit made their first contribution in pingdotgg/t3code#30078 * @iScabrous made their first contribution in pingdotgg/t3code#30295 * @frankhommers made their first contribution in pingdotgg/t3code#30361 * @medric-z made their first contribution in pingdotgg/t3code#29607 * @shawk08033 made their first contribution in pingdotgg/t3code#30528 * @Jolymmiles made their first contribution in pingdotgg/t3code#25579 * @geezoria made their first contribution in pingdotgg/t3code#30719 * @navidnadali made their first contribution in pingdotgg/t3code#30834 * @Mr-Neutr0n made their first contribution in pingdotgg/t3code#30942 * @jacobcorbett made their first contribution in pingdotgg/t3code#31000 * @dharmeshgurnani made their first contribution in pingdotgg/t3code#15632 * @aledog007 made their first contribution in pingdotgg/t3code#30189 **Full Changelog**: pingdotgg/t3code@v0.1.8-nightly.20261106.4247...v0.1.8-nightly.20261106.4262 </details> Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.8-nightly.20261106.4262
Problem
A GitLab thread started on the merge request itself, rather than on a diff line, came through as a plain comment. It never got a Fix button, and "Fix findings" left it out. Closes #30396.
Change
/notescan't tell an overview thread's first note from its replies: both areDiscussionNote, both resolvable, no discussion id. The adapter already reads/discussionsfor diff threads, so that decoder now also reports the first note of each unresolved overview discussion. The provider marks those notesreview-comment(their path is already null). Replies and plain comments stayissue-comment, so a reply like "will do" doesn't get its own Fix button.No new request. The web Fix button, "Fix findings" and the timeline already handle a review comment with no path, so nothing changes on the client.
One side effect: after a reviewer change,
client-runtime/src/state/pullRequests.tstreats authors of review comments as having reviewed. Someone who opened an overview thread now counts, which is accurate.Scope and approval
Small fix. GitHub top-level review comments already reach the same paths; this brings GitLab in line. Tracked in #30396.
Verification
vp run check:changed: format, lint, knip, typecheck (11 packages) and tests (136) pass.Mobile shows the same comments from the same activity read and needs no change. Not checked on a device.
Fixed by Claude Opus 5.5 in Claude Code, running inside T3 Code.
🤖 Generated with Claude Code