Skip to content

fix(gitlab): a fork's same-named branch no longer hides the branch's own merge request - #29791

Merged
juliusmarminge merged 7 commits into
pingdotgg:mainfrom
saphid:fix/gitlab-branch-pr-fork-slot
Nov 14, 2026
Merged

juliusmarminge merged 7 commits into
pingdotgg:mainfrom
saphid:fix/gitlab-branch-pr-fork-slot

Conversation

@saphid

@saphid saphid commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Problem

On GitLab, T3 Code can miss a branch's own open merge request. To find it, the server asks GitLab for open merge requests on the branch name with --per-page 1. GitLab's project list (GET /projects/:id/merge_requests?source_branch=...) also returns merge requests from forks that target the project. It has no source-project or owner filter, and it sorts by newest first. If a fork opened a merge request from a branch with the same name (feature, fix-typo, main) more recently, that fork's merge request takes the only slot. The owner check then rejects it, and the branch's real merge request is never fetched.

The user then sees no merge request for their branch in the Git status, the PR action, and the completion toast. The owner:branch selectors don't help, because GitLabCli strips the owner before querying, so they send the same request again.

Change

GitLab now provides the headBranchProbe hook that GitHub already has. It drops the owner:branch selectors (duplicates after normalization) and reads one full page of 100, GitLab's per_page maximum. GitManager's existing owner matching then picks the branch's own merge request out of that page. glab mr list normally fetches a single page. If the process output cap truncates that page, the lookup retries with smaller pages, still bounded to the first 100 candidates. This mirrors #29751, which does the same for Bitbucket.

Scope and approval

Very small, focused fix for an obvious bug, so no prior issue: the GitLab provider adds the branch probe hook and the CLI retries oversized list responses with smaller pages, with focused regression coverage.

Overlap search: #29751 (Bitbucket only, same hook) is the precedent, not a duplicate. Open #23439 changes GitLab fork merge request creation, not the lookup. Closed #27890 was about GitCafe.

Verification

  • Red on main: vp test run src/server/GitLabSourceControlProvider.test.ts gives AssertionError: expected undefined to deeply equal { headSelectors: [ 'feature' ], …(1) } (1 failed, 12 passed).
  • Green: the same file passes, 13 of 13.
  • vp run check:changed: format, lint, knip, typecheck (11 packages), and tests (3 files, 17 passed) all pass.
  • GitLab API behavior comes from the GitLab docs: source_branch filter, default created_at desc, source_project_id "equal to target_project_id, unless the merge request originates from a fork", and per_page max 100.
  • Not checked: a live run against a real GitLab project with a fork merge request.

Reviewed with sol-loop: 1 round with GPT-6.1 Sol on high. Sol verdict: approved.

Created with Claude Opus 5.5 in Claude Code (T3 Code).

🤖 Generated with Claude Code

Takeover verification: Blacksmith vp run check:changed github/main passed format, lint, knip, typecheck (11 packages), and 23 tests. The oversized-response regression failed before the fix and passes after it. Current main was merged without conflicts, including its upstream fix for the unrelated Astro test assertion. The previously failing file-save browser test also passes on Blacksmith. Two independent read-only GPT-6.1 Sol reviews approved the final head. A live GitLab project remains unverified.

Takeover changes: gpt-6.1-sol through the Codex harness.

…own merge request

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted Author is trusted by repo permissions or the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Nov 3, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Nov 3, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at c84a54c

Macroscope's review found this PR approvable — GitLab merge-request discovery now looks past same-named fork branches and retries oversized responses with smaller pages. The change remains read-only and preserves existing repository/owner matching.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • Resume reviews
  • Trigger review

No actionable comments were generated in the recent review.

Walkthrough

The GitLab CLI now retrieves merge requests across pages and retries truncated output with smaller pages. The GitLab provider filters colon-qualified branch selectors and sets the head-branch probe limit to 100.

Changes: GitLab merge-request lookup

Layer / File(s) Summary
Paginate merge-request results
packages/source-control-gitlab/src/server/GitLabCli.ts, packages/source-control-gitlab/src/server/GitLabCli.test.ts
The CLI requests pages up to the requested limit. If output is truncated and the page size is greater than one, it halves the page size and retries. It uses raw entry counts to continue paging, returns results up to the limit, and reports a decode error if truncation persists at page size one or list decoding fails. The test checks retrieval of four entries and same-project classification.
Filter head selectors and validate probe
packages/source-control-gitlab/src/server/GitLabSourceControlProvider.ts, packages/source-control-gitlab/src/server/GitLabSourceControlProvider.test.ts
The provider excludes selectors containing : and sets the probe limit to 100. The test checks that feature remains eligible, octocat:feature is excluded, and the limit is 100.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: Minimal · up to c84a5

GitLab lookup now finds a branch's own merge request even when a fork has a same-named one, and it handles large responses by retrying with smaller pages. No outstanding merge-blocking risk was identified.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title "fix(gitlab): a fork's same-named branch no longer hides the branch's own merge request" matches the main change. The GitLab provider adds a headBranchProbe hook, and the CLI retries oversiz…
Description check Passed The description follows the repository template. It covers Problem, Change, Scope, and Verification. The Problem section gives the cause and expected behavior. The Change section explains the headBran…
Linked Issues check Passed The only linked issue, #27890, is closed. It supplies historical context only. Its GitCafe acceptance criteria do not apply to this pull request. No active directly linked target remains, so no linked…
Out of Scope Changes check Passed All changed files are in packages/source-control-gitlab/src/server: GitLabSourceControlProvider.ts and its test, and GitLabCli.ts and its test. The provider change adds the headBranchProbe hook, remov…
Full details: Title check

Explanation

The title "fix(gitlab): a fork's same-named branch no longer hides the branch's own merge request" matches the main change. The GitLab provider adds a headBranchProbe hook, and the CLI retries oversized list responses with smaller pages, so a fork's same-named merge request no longer takes the only result slot. The title is specific, follows conventional commit form, and names the user-visible bug.

Full details: Description check

Explanation

The description follows the repository template. It covers Problem, Change, Scope, and Verification. The Problem section gives the cause and expected behavior. The Change section explains the headBranchProbe hook and the retry logic. The Scope section states why no issue is linked, names related PRs, and justifies the bug-fix scope. The Verification section gives red-then-green test results, the check:changed outcome, and the unverified live GitLab case. The description is long and includes some extra material, such as a takeover note and tool attribution, but the required information is present.

Full details: Linked Issues check

Explanation

The only linked issue, #27890, is closed. It supplies historical context only. Its GitCafe acceptance criteria do not apply to this pull request. No active directly linked target remains, so no linked-issue coding requirements apply. The PR objective (a GitLab fork merge request occupying the single result slot) comes from the current PR description. It is not a linked-issue requirement. The reviewed summary shows the GitLab provider change (headBranchProbe with limit 100, selectors containing ':' removed) and the GitLabCli paging retry with regression tests. These changes match the current PR intent. This result does not depend on the live GitLab check, which the PR states is unverified.

Full details: Out of Scope Changes check

Explanation

All changed files are in packages/source-control-gitlab/src/server: GitLabSourceControlProvider.ts and its test, and GitLabCli.ts and its test. The provider change adds the headBranchProbe hook, removes owner:branch selectors, and sets the probe limit to 100. The GitLabCli change retries listMergeRequests with smaller pages when output is truncated, bounded to the first 100 candidates. The PR description names both changes as part of the fix. The tests cover these changes. No unrelated feature or file appears in the summary. Minor note: the GitLabCli test describes truncation under a 1 MB default cap, while the implementation caps responses at 8,000,000 bytes. This is a detail of test setup, not a scope issue. The assessment uses the whole-PR summary and PR description only. No repository inspection was run.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 0dfc65b and c84a54c.

Files selected for processing: 2

  • packages/source-control-gitlab/src/server/GitLabCli.test.ts
  • packages/source-control-gitlab/src/server/GitLabCli.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 1 remain after this review.

@coderabbitai coderabbitai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Fix comments: Fix CodeRabbit comments on this PR

@macroscopeapp
macroscopeapp Bot dismissed their stale review November 3, 2026 01:55

Dismissing prior approval to re-evaluate 987feb7

@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Nov 3, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Nov 3, 2026
juliusmarminge and others added 2 commits November 14, 2026 15:14
…fork-slot

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@macroscopeapp
macroscopeapp Bot dismissed their stale review November 14, 2026 15:16

Dismissing prior approval to re-evaluate 0dfc65b

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Nov 14, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@macroscopeapp
macroscopeapp Bot dismissed their stale review November 14, 2026 15:28

Dismissing prior approval to re-evaluate c84a54c

@juliusmarminge

Copy link
Copy Markdown
Member

Evidence

Real GitLab projects, isolated fresh T3 databases, and replay only for the model turn. Native captures: iPhone 18 Pro, light theme. Web captures: Chromium, 1280×800, light theme.

  1. Created original-project feature MR !1, then a fork with a different feature branch and newer MR !2 targeting the original. Live glab with --per-page 1 returned only fork MR !2; --per-page 100 returned !2 and original !1.
  2. Added the original feature checkout to T3, created a replay thread, made a local commit, opened Git controls, and pushed. Both pre-push menus showed MR oxc stack #1. Base omitted View from the push notification; head showed View. Clicking it on head opened Original branch MR oxc stack #1.
  3. On a second fixture, added twenty newer closed same-named fork MRs, putting original MR !1 at candidate fix: prod builds loads asset files with relative file urls, not from the backend over http #22. Opened the original checkout in web: base offered Create MR; head displayed oxc stack #1: Original branch MR.
  4. Repeated the same web scenario after adding large descriptions: one million less-than characters in MR !22 and 400,000 each in MRs !19–!21. Live glab emitted 6,002,009 bytes for one MR and 13,243,505 bytes for all 22. Head still displayed original MR oxc stack #1, exercising smaller-page retries and pagination under the 8,000,000-byte cap.

All three scenario comparisons failed on base and passed on head.

Behavior Before — 382312aba8 After — c84a54c303
Native push result Before: View missing After: View present
Native interaction Before recording After recording, including opening MR #1
All-state lookup, original at candidate #22 Before: Create MR After: Original branch MR #1
All-state lookup, 13.2 MB response Before: original MR missing After: original MR found through paging

iOS scenario · Web scenario, unchanged for both status fixtures

The notification’s View action opens the correct MR:

After: Original branch MR #1 detail screen

Live CLI output confirms candidate ordering and response sizes. These images format captured command output; the app captures above contain the app’s own UI.

Live glab single-result fork ordering

Live glab all-state candidate ordering

Live glab output byte sizes

Reproduction instructions · GitLab seed · Twenty-MR expansion · Large descriptions · CLI capture driver · Large-response transcript · Full scenario evidence report

Proof performed by gpt-6.1-sol through the Codex harness.

Not shown:

  • The create-MR action’s duplicate-creation/opened_existing path was not invoked; findOpenPr’s visible effect was demonstrated through the native push notification and its working MR oxc stack #1 destination.
  • The exact 100th-candidate boundary and matches beyond the first 100 were not exercised; fixtures contained 2 and 22 candidates.
  • Malformed-entry paging/counting and empty-page handling were not induced because live GitLab returned valid MR entries.
  • Removal of owner:branch probe commands was not separately traced; the resulting wider all-state lookup and capped-output paging were exercised in the real app.

@juliusmarminge juliusmarminge added takeover:ready Takeover done; auto-lands when gates pass and removed takeover:in-progress A takeover lead is working on this PR labels Nov 14, 2026
@juliusmarminge
juliusmarminge merged commit abac683 into pingdotgg:main Nov 14, 2026
53 checks passed
@juliusmarminge juliusmarminge removed the takeover:ready Takeover done; auto-lands when gates pass label Nov 14, 2026
newer97 added a commit to newer97/t3code that referenced this pull request Nov 14, 2026
* fix(shared): atomic saves handle long filenames (pingdotgg#33250)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): message search no longer finds rolled-back turns or cancelled queued messages (pingdotgg#29874)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): OpenDocument slide previews no longer print speaker notes (pingdotgg#33294)

Co-authored-by: Geezy <igor.licko@gloryck.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): cancelled PR checks count as failing in the checks summary (pingdotgg#29809)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): .markdown, .mdown and .mkd files open with a Markdown preview (pingdotgg#29822)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web,mobile): pull request project filter lists pinned projects first (pingdotgg#29871)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): Claude Fable 5.2 is offered only from Claude Code 2.1.321 (pingdotgg#36805)

* fix(mobile): scheduled tasks due within the hour no longer read "Next run in 60 minutes" (pingdotgg#29756)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* test(server): title change test ignores a probe pending at browser close (pingdotgg#36818)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agents can read documents a guest attaches (pingdotgg#29760)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): opening a very large folder no longer freezes the Files panel (pingdotgg#29996)

Co-authored-by: Nathan Wong <20381195+thelogicmatrix@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(gitlab): a fork's same-named branch no longer hides the branch's own merge request (pingdotgg#29791)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(editors): Open in Zed no longer finds the ZFS event daemon (pingdotgg#33461)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preview hover and drag fail within their timeout, not up to 3x later (pingdotgg#33550)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): skills from CLAUDE_CODE_PLUGIN_DIRS plugins show in the composer (pingdotgg#33341)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(gitlab): `glab mr new` links the new merge request to the thread (pingdotgg#33475)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): Android section headers show the collapse arrow when expanded (pingdotgg#33513)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(claude): tools running at Stop show as stopped, not failed (pingdotgg#29801)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): a pull request whose title holds a numeric search ranks above description-only matches (pingdotgg#33692)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(acp-registry): a uv-installed agent launches its managed command, not a same-named one on PATH (pingdotgg#33836)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): refuse unresolved UTF-16 merge commits (pingdotgg#36817)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): remove worktrees through their owning repository (pingdotgg#33586)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): RTF attachment text keeps joiners and direction marks (pingdotgg#36824)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): scheduled tasks in a non-Git project run in its folder instead of failing (pingdotgg#36821)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): deleting a thread with side chats offers to delete its worktree (pingdotgg#36800)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* perf(web): completed Markdown blocks no longer render twice (pingdotgg#33794)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(web): opening a thread from a draft only renders its sidebar row (pingdotgg#33435)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(usage): refetch cached rates early for a model they do not list (pingdotgg#33725)

Co-authored-by: DrSeedon <DrSeedon@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): copied email links keep their destination (pingdotgg#36830)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): message search finds smart apostrophes when scanning (pingdotgg#36832)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(shared): preserve whitespace in POSIX PATH directories (pingdotgg#33840)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): dropdown hover fills expanded Git action rows (pingdotgg#35527)

Co-authored-by: brkgzlsy <berke.guzelsoy@fabrite.ch>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(clients): undoing a settle puts the thread back where you placed it (pingdotgg#33248)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): queued images open in the image viewer (pingdotgg#33298)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): removing an environment drops its threads from Android launcher shortcuts (pingdotgg#33726)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a zero Git fetch interval also stops the status upstream fetch (pingdotgg#33845)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(ssh): include hosts from wildcard filenames with line separators (pingdotgg#35479)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preserve DOCX non-breaking hyphens in attachment text (pingdotgg#36845)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): diff file tree shows added and deleted files before their patches load (pingdotgg#33310)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): audio and server spinners respect reduced motion (pingdotgg#33795)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): provider switches on portable forks keep inherited conversation (pingdotgg#36839)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): show Browser device preferences read-only for projects (pingdotgg#36846)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(cli): t3 connect unlink with T3 stopped also clears the webhook hold setting (pingdotgg#33822)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): decode escaped XLSX attachment text (pingdotgg#36849)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(desktop): recover prepared remote updates on retry (pingdotgg#33605)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): OpenCode keeps its cached models when a cold probe lists none (pingdotgg#33640)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): retain custom model drafts until saved (pingdotgg#35176)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): trackpad scrolling no longer stalls on gaps between right panel tabs (pingdotgg#35255)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Settings > Projects list follows the selected environment (pingdotgg#36856)

* fix(web): pasted images stay at their original insertion point (pingdotgg#35528)

Co-authored-by: brkgzlsy <berke.guzelsoy@fabrite.ch>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Cite is offered for text an agent sent with send_to_user (pingdotgg#36858)

* fix(web): desktop browser tabs show native navigation immediately (pingdotgg#35299)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a steer that misses its turn moves into the run it starts (pingdotgg#36855)

* fix(server): keep boolean XLSX cells as true/false in extracted text (pingdotgg#35191)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(desktop): tolerate disk-full console output (pingdotgg#35245)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(dev): first dev start builds the missing resource monitor (pingdotgg#34975)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a failed comments read no longer hides PR check updates (pingdotgg#33452)

Co-authored-by: Emi Griffith <emi.g@jinemi.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): typing before a chip no longer leaves the iOS caret behind (pingdotgg#33774)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): git status refresh reads local status once unless refs moved (pingdotgg#29155)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a setting change no longer detaches a busy session kept from an earlier hand-off (pingdotgg#35258)

Co-authored-by: Mika Hertler <mika@mikahertler.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): storage cleanup removes idle worktrees whose branch was renamed or switched (pingdotgg#34984)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(claude): rename the native session when the thread title changes (pingdotgg#34775)

Co-authored-by: kumar-karan <kumar-karan@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(desktop): an emptied browser cookie jar imports as empty instead of failing (pingdotgg#34698)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): each websocket RPC starts its own trace so Tempo keeps its spans (pingdotgg#36863)

* fix(mobile): compaction notice becomes a chip in the composer (pingdotgg#36872)

* fix(web): repeated diff blocks no longer crash the viewer (pingdotgg#35304)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): copied literal Markdown sends as shown (pingdotgg#36867)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): move to Node 26.13.1 without migrations storing JSON arrays as strings (pingdotgg#34576)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): skip the full untracked scan when Git status shows none (pingdotgg#36870)

* fix(server): show Claude's root refusal when it exits before the turn starts (pingdotgg#34621)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): keep a launched thread's title when its first message arrives (pingdotgg#35117)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): the next turn no longer waits for the previous turn's git status refresh (pingdotgg#32349)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(server): queued messages no longer wait behind every later delegate completion (pingdotgg#34620)

Co-authored-by: Apex-ICP <jesse@apexicp.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): a link during video playback no longer rebuilds the open thread (pingdotgg#34990)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* test(web): terminal drawer test keeps its session atoms across GC (pingdotgg#36888)

* fix(server): switching the Claude model no longer blocks a later provider switch (pingdotgg#34498)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a worktree launch from a missing base branch names the branch (pingdotgg#34452)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): Claude /rename now retitles the T3 thread (pingdotgg#36879)

* fix(web): open editors when saving their preference fails (pingdotgg#34308)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* feat(client): add-project folder search matches substrings and fuzzy subsequences (pingdotgg#26376)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>

* fix(web): typing in the file editor no longer jumps to the prompt (pingdotgg#35122)

Co-authored-by: user <user@qubes-os.org>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): keep thread find working with many matches in one row (pingdotgg#34402)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Arabic and Hebrew folds in chat read right to left (pingdotgg#36876)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): iOS composer text follows the system text size (pingdotgg#34670)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): turn recovery covers interrupted and cancelled runs' abandoned turns (pingdotgg#34639)

Co-authored-by: Ali-Al1 <Ali-Al1@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): show TAR hard links in archive previews (pingdotgg#34329)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preserve ODF paragraph whitespace in agent sidecars (pingdotgg#36883)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(web): trim terminal link delimiters in linear time (pingdotgg#34397)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(shared): preserve Unicode during command output overwrites (pingdotgg#34332)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a self-settle survives a queued message steered into the turn (pingdotgg#36896)

* fix(server): queued-input index no longer rejects user messages with non-JSON payloads (pingdotgg#36898)

* fix(server): filter scheduled tasks without exposing webhook URLs (pingdotgg#27716)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): distinguish media Back from window close (pingdotgg#33125)

* fix(mobile): VoiceOver names the iOS message box (pingdotgg#34658)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): PR sync backs off links on hosts it cannot read (pingdotgg#36901)

* perf(web): skip oversized TAR preview payload copies (pingdotgg#34301)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): voice cleanup pinned to an ACP provider uses the text model (pingdotgg#36912)

* fix(server): Swift TestFlight clients can read settings again (pingdotgg#26455)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(github): Load more no longer stalls on a full page of equal update times (pingdotgg#36910)

* fix(desktop): preserve recordings saved in the same millisecond (pingdotgg#34314)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(client): refresh open archive when threads are archived elsewhere (pingdotgg#36909)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): keep files when submodule checks retain a worktree (pingdotgg#34196)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): copying from a later list item keeps its numbers (pingdotgg#36915)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a failed turn start no longer leaves the thread stuck starting (pingdotgg#14424)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): successive custom model saves keep earlier edits (pingdotgg#36906)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): restore word selection in inline code (pingdotgg#36936)

* fix(server): recognize Windows Volta provider installs (pingdotgg#36917)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): showing a composer banner no longer makes the page restyle everything until reload (pingdotgg#34537)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(install): launch t3 by absolute path (pingdotgg#13794)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): Windows process launches no longer block the RPC thread (pingdotgg#32260)

Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): more GitLab merge request links open their file, line or commit (pingdotgg#34662)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(opencode): show background replies after a turn settles (pingdotgg#36887)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): conventional commit subjects start lowercase (pingdotgg#36938)

* fix(shared): stop rescanning unclosed TeX math (pingdotgg#34398)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Arabic and Hebrew artifact template cards read right to left (pingdotgg#36922)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): stop leaving Codex plan items running after their run (pingdotgg#22617)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(gitlab): MR watches check a one-query fingerprint before full reads (pingdotgg#34638)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): font picker scrolls to every font in short windows (pingdotgg#22795)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(source-control): repository paths match however their names are percent-encoded (pingdotgg#36929)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mcp): return delegated task handles before client timeouts (pingdotgg#15622)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): allow tooltip text to wrap naturally (pingdotgg#36948)

* fix(preview): unload desktop pages before removing their tabs (pingdotgg#35135)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): remove redundant status info icon (pingdotgg#36947)

* fix(desktop): agent snapshots keep full detail in narrow and mini previews (pingdotgg#36944)

* test(web): pin the minute clock in the sidebar jump-hint render test (pingdotgg#36954)

* fix(acp-registry): models show the reasoning levels the agent advertises for them (pingdotgg#36950)

Co-authored-by: 0xpolarzero <0xpolarzero@gmail.com>

* fix(web): enable Send when the composer holds only a thread context (pingdotgg#23166)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): thread details card no longer jumps mid panel animation (pingdotgg#22614)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web,mobile): /btw and /side drafts show the send arrow while a turn runs (pingdotgg#36932)

* fix(server): migrated databases can return freed space to disk (pingdotgg#30066)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(devices): rename EAS Simulator to Expo Simulators (pingdotgg#36951)

* fix(server): find the EAS project of variant app configs (pingdotgg#29466)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): include untracked files when Git config hides them (pingdotgg#23134)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web,server): picking the previous branch after an agent's checkout switches back (pingdotgg#30107)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): t3_thread_list leaves out tasks delegated from a linked environment (pingdotgg#36961)

* fix(server): prune checkpoint refs owned by deleted threads (pingdotgg#24140)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): screen readers hear a thread row's status and time (pingdotgg#34636)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): isolate Linux process launches from the RPC event loop (pingdotgg#30209)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): Pull no longer waits behind other repositories' fetches (6.3 s → 0.21 s median) (pingdotgg#30059)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(wsl): label WSL environments with their Windows host on every client (pingdotgg#22629)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(azure-devops): derive CLI scope from checkout remotes (pingdotgg#21838)

Co-authored-by: Ved Pandey <vedprakash2302@gmail.com>

* fix(server): subagent threads no longer show the remote parent their parent was delegated from (pingdotgg#30334)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): t3_thread_launch worktrees honor the new-worktree setting (pingdotgg#30226)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): text-only browser snapshots skip the PNG encode (66 ms → 20 ms median) (pingdotgg#30305)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): diff Copy path uses Windows separators in a Windows workspace (pingdotgg#30394)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(opencode): usage totals include what OpenCode 2 spends on compaction (pingdotgg#30565)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): opening a project or deleting the open thread skips delegated tasks (pingdotgg#30428)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* chore: drop RTL changes now covered by upstream, and the mobile direction patch

Upstream merged Arabic/Hebrew direction for details folds (pingdotgg#36876) and
artifact template cards (pingdotgg#36922), so the fork's copies go. The <bdi> on alert
labels and skill chips rendered identically to upstream and goes too, as does
the mobile first-strong-letter direction patch.

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

---------

Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: TheGuyWithHAT <igorlickn@gmail.com>
Co-authored-by: Geezy <igor.licko@gloryck.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Nathan Wong <thelogicmatrix@gmail.com>
Co-authored-by: Nathan Wong <20381195+thelogicmatrix@users.noreply.github.com>
Co-authored-by: Daniel Dewhurst <danjdewhurst@users.noreply.github.com>
Co-authored-by: Victor <satsdev@only21mil.xyz>
Co-authored-by: David Mendes <david.mendes@outsystems.com>
Co-authored-by: Arav Jain <aravhawk@gmail.com>
Co-authored-by: juccul <101457938+juccul@users.noreply.github.com>
Co-authored-by: Ibrahim Elkamali <igrimanigroman@gmail.com>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Luis Taniça <matallui@gmail.com>
Co-authored-by: Bryan Clark <5405766+moenzuel@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Dominik Žabčík <35886301+dominikzabcik@users.noreply.github.com>
Co-authored-by: Maxim <65215214+DrSeedon@users.noreply.github.com>
Co-authored-by: DrSeedon <DrSeedon@users.noreply.github.com>
Co-authored-by: Dragesia <69815671+Dragesia@users.noreply.github.com>
Co-authored-by: brkgzlsy <berke.guzelsoy@fabrite.ch>
Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com>
Co-authored-by: Mateusz Choma <chomamateusz@gmail.com>
Co-authored-by: Baptiste Arnaud <baptiste@typebot.io>
Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Amman <ammanuelamsal@gmail.com>
Co-authored-by: project516 <138796702+Project516@users.noreply.github.com>
Co-authored-by: Byntham <135178921+Byntham@users.noreply.github.com>
Co-authored-by: rafi-the-dev <rafisleep570@gmail.com>
Co-authored-by: Fuksss <fuxik12345@gmail.com>
Co-authored-by: Unlock Digital Media <134563073+unlockdigital@users.noreply.github.com>
Co-authored-by: Jon Duea <jdueadev@gmail.com>
Co-authored-by: Emi Griffith <emerytgriffith@gmail.com>
Co-authored-by: Emi Griffith <emi.g@jinemi.com>
Co-authored-by: Arun Krishnamurthy <arun.km.279@gmail.com>
Co-authored-by: Andrei <108398860+Yuruzuu@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Mika Hertler <77012401+MikaMcFlurry@users.noreply.github.com>
Co-authored-by: Mika Hertler <mika@mikahertler.com>
Co-authored-by: Alex Hatzenbuhler <hatz@hey.com>
Co-authored-by: Karan Kumar <karan.8080dev@gmail.com>
Co-authored-by: kumar-karan <kumar-karan@users.noreply.github.com>
Co-authored-by: Julio Saldaña <102325762+wincrack07@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Sohaib Ali <43256484+SohaibAli9@users.noreply.github.com>
Co-authored-by: Noah <105475352+Noah-mh@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Jesse-pink-lab <co.breakingbits@gmail.com>
Co-authored-by: Apex-ICP <jesse@apexicp.com>
Co-authored-by: Chirag Agggarwal <96696271+Schreezer@users.noreply.github.com>
Co-authored-by: Dmitry Farafonov <mail.xaber@gmail.com>
Co-authored-by: Michael Bennett <mishdotdev@gmail.com>
Co-authored-by: Romil <romilbij@gmail.com>
Co-authored-by: Christoffer Artmann <Artgaard@gmail.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Christian R. Kounatze <chreko@gmx.net>
Co-authored-by: user <user@qubes-os.org>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Ali-Al1 <11404482+Ali-Al1@users.noreply.github.com>
Co-authored-by: Ali-Al1 <Ali-Al1@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Alex Vallone <39172404+amv146@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: Antony <97451137+TonybynMp4@users.noreply.github.com>
Co-authored-by: grey-tsosie <45133231+grey-tsosie@users.noreply.github.com>
Co-authored-by: Pavel Kroupa <63880977+Tabonx@users.noreply.github.com>
Co-authored-by: kirat02 <142911687+Kirat0201@users.noreply.github.com>
Co-authored-by: 0xpolarzero <0xpolarzero@gmail.com>
Co-authored-by: Advait Paliwal <advaitspaliwal@gmail.com>
Co-authored-by: Hirbod <504909+hirbod@users.noreply.github.com>
Co-authored-by: Krystof Woldrich <31292499+krystofwoldrich@users.noreply.github.com>
Co-authored-by: Tin Zeljar <tinzeljar@gmail.com>
Co-authored-by: Robbie <robbiethewadley@gmail.com>
Co-authored-by: Ved Pandey <vedprakash2302@gmail.com>
Co-authored-by: spoukyii <61633921+spoukyii@users.noreply.github.com>
Co-authored-by: Brett Lyman <LymanBE@gmail.com>
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Nov 15, 2026
…own merge request (pingdotgg#29791)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
(cherry picked from commit abac683)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted Author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants