Repository navigation
fix(server): keep forks separate from their upstream repository in project grouping - #14639
Project516 wants to merge 1 commit into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (8)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughRepository identities now include optional origin-repository metadata. Client grouping, labels, and mobile project matching use origin-based helpers when that metadata is present. ChangesFork Repository Identity and Grouping
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix · Severity of issue fixed: Medium Suggested reviewers: Merge Risk: ⚪ Minimal · up to Forks should now group and label separately from their upstream repository. Checkouts without a distinct origin keep their previous behavior. No merge-blocking risk was found in the supplied changes. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to Fork-aware grouping remains separate from the canonical repository used for pull requests. Task destinations still use explicit project and environment identifiers, and existing draft protections remain intact. No introduced security concern was established, but mixed-version compatibility and end-to-end authorization coverage remain incomplete. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 30.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 10 functions across 7 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a contained repository-grouping bug fix: forks retain upstream identity for pull-request operations while grouping and labels use their own origin. The optional contract change is backward-compatible, and focused server, client-runtime, and mobile tests cover the affected paths. You can add or adjust custom eligibility rules. Learn more. |
35407c5 to
2706a42
Compare
… group (#16353) Fixes #4880. Originally #14639 by @Project516. Co-authored-by: Project516 <[email protected]>
|
Note 🤖 Claude Opus 5.5 responding on behalf of Theo Landed as #16353 (squash commit 017c9a0). The code is unchanged from this PR, rebased onto current main. Your commit authorship and a I opened a new PR only because updating this fork branch onto main needed GitHub |
* chore: docs, dev scripts and CI catch up with orchestration V2 (pingdotgg#15041) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): Claude V2 turns start on Windows with the default binary path (pingdotgg#15021) Co-authored-by: maria-rcks <[email protected]> * fix(web): diff panel opens on all branch changes, not just uncommitted (pingdotgg#15005) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): threads stay working while Claude starts a wake turn (pingdotgg#15055) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): mod+alt+enter on an existing thread sends and opens a new thread (pingdotgg#15050) Co-authored-by: maria-rcks <[email protected]> * fix(chat): sending on an older thread no longer jumps to the top (pingdotgg#15059) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore: add bmdavis419 to triage exemptions (pingdotgg#15062) * fix(server): runs no longer get stuck (pingdotgg#15048) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(usage): Codex Fast and Ultrafast now cost what they bill (pingdotgg#15101) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(clients): a dev server left running no longer says the thread is waiting (pingdotgg#15114) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): a thread that left a shell running shows its unseen completion (pingdotgg#14910) Co-authored-by: Theo Browne <[email protected]> * fix(web): mod+enter starts a new thread in the background again (pingdotgg#15060) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(usage): show cost by token type, speed, and model detail (pingdotgg#15108) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): agents can watch a PR and get woken when checks, reviews, or conflicts need them (pingdotgg#15057) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): keep delegated review rounds on the task API (pingdotgg#15115) * fix(shared): classify workspace previews by literal filenames (pingdotgg#10311) Co-authored-by: yashranaway <[email protected]> Co-authored-by: shivam <[email protected]> * fix(mobile): iOS threads no longer jump to the top (pingdotgg#14808) * fix(web): reduce the gap above the draft composer (pingdotgg#15196) * fix(mobile): a dev server left running no longer shows the waiting bolt (pingdotgg#15194) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): a Claude command you stop shows as interrupted (pingdotgg#14896) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): editors appear once a slow discovery scan finishes (pingdotgg#13917) * fix(server): Claude threads no longer stay stuck in plan mode Claude entered itself (pingdotgg#15224) * fix(mobile): show complete subagent details (pingdotgg#15189) * fix(mobile): an expired Live Activity no longer leaves a second card (pingdotgg#15254) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * test(web): remove redundant thread sort fallback tests (pingdotgg#15095) Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> * fix(web): thinking row after a failed tool expands the run's tool calls (pingdotgg#15056) * perf(web): DOM changes no longer restyle the whole page (pingdotgg#15265) * perf(usage): cut warm usage scans from seconds to milliseconds on large histories (pingdotgg#15149) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(web): virtualize command palette results (pingdotgg#15266) * chore(lint): flag :has() variants that restyle the whole page (pingdotgg#15274) * fix(web): workspace card docks beside chat when the window is narrow (pingdotgg#14992) Chat stays centered while the workspace card fits beside it with 32px to spare. When it does not fit, chat moves left only as far as needed, narrows only after it reaches the left padding, and the card becomes a popover below a 640px chat. The card is lighter: 280px wide, 32px rows, no section labels, no "Project folder" hint. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): render mermaid code blocks as diagrams (pingdotgg#15067) Co-authored-by: maria-rcks <[email protected]> * feat(web): Nightly tells you to get the beta mobile app (pingdotgg#15070) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * test(server): ACP adapter tests no longer race the prompt settle (pingdotgg#15330) Takes over pingdotgg#14876. Co-authored-by: tris203 <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(usage): fold preview model IDs into the model they belong to (pingdotgg#15333) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): check RPC scopes in group middleware (pingdotgg#15324) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(mobile): beta Working section hides busy threads until they need you (pingdotgg#15346) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(settings): symlinked settings files stay linked when saved (pingdotgg#15009) Signed-off-by: Yordis Prieto <[email protected]> * fix(server): Stop ends a dev server left running before a provider switch (pingdotgg#15355) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): merged threads settle even after the agent wakes on its own (pingdotgg#15388) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): no-project drafts can switch machines (pingdotgg#15356) * fix(web): highlight tool inputs and remove nested work log indentation (pingdotgg#15384) * fix(server): restarts keep delegated tasks, queued threads, and stops intact (pingdotgg#15323) * fix(web): sending past the resume banner compacts first (pingdotgg#15290) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(codex): resume archived native sessions (pingdotgg#15389) * feat(web): morph composer and panel action icons (pingdotgg#14924) Co-authored-by: maria-rcks <[email protected]> * fix(web): subagents sent a follow-up show as running in Lineage (pingdotgg#15334) Co-authored-by: scratchyone <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): clear stale chat action shortcuts (pingdotgg#15394) * fix(orchestration-v2): restore earlier app agent transcript pages (pingdotgg#14104) * fix(web): remove the square thread info panel shadow (pingdotgg#15069) * fix(mobile): Android usage widget no longer sticks on "Loading widget" in release builds (pingdotgg#15142) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): size the model picker to its content (pingdotgg#15152) Co-authored-by: saphid <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * test(server): replay checks a Claude subagent's thread takes its reported model (pingdotgg#15022) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): subagent finish notifications look like subagent cards (pingdotgg#15281) * fix(web): thread status dot has an accessible name (pingdotgg#14587) * fix(web): legacy sidebar options button has a label (pingdotgg#14602) * fix(web): imported themes keep switches and focus rings visible (pingdotgg#14498) * fix(web): links to issues no longer strand the pull request viewer (pingdotgg#14242) * fix(web): repo/task breadcrumb no longer bounces when the sidebar collapses (pingdotgg#15046) * fix(web): Pull request panel entry works for linked PRs (pingdotgg#15061) * fix(web): add context menu to draft threads in the sidebar (pingdotgg#10637) * fix(web): keep sidebar branding and build pills from clipping at varying font sizes and zoom levels (pingdotgg#12141) * fix(usage): model shares and order follow the selected metric (pingdotgg#11391) * feat(web): sweep sidebar buttons to settle, un-settle, and wake threads (pingdotgg#14768) Co-authored-by: maria-rcks <[email protected]> * feat: retry a failed workspace preparation (pingdotgg#15326) * fix(server): registry test stubs no longer outlive the test run (pingdotgg#15457) Signed-off-by: Yordis Prieto <[email protected]> * test(server): the registry's fake Claude CLI is a fixture file, not a generated string (pingdotgg#15463) Signed-off-by: Yordis Prieto <[email protected]> * refactor(clients): share opening a machine's No project folder (pingdotgg#14759) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: Julius Marminge <[email protected]> * test(server): the git-ssh wrapper's fake SSH script is a fixture file, not a generated string (pingdotgg#15480) Signed-off-by: Yordis Prieto <[email protected]> * test(server): the ACP registry's fake npm is a fixture file, not a generated string (pingdotgg#15483) Signed-off-by: Yordis Prieto <[email protected]> * test(server): the ACP registry's fake uv is a fixture file, not a generated string (pingdotgg#15484) Signed-off-by: Yordis Prieto <[email protected]> * feat(clients): step a new thread to the next machine from the keyboard (pingdotgg#15391) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): promoting a draft thread no longer logs a React key warning (pingdotgg#15458) Signed-off-by: Yordis Prieto <[email protected]> * test(server): the text generation's fake Claude CLI is a fixture file, not a generated string (pingdotgg#15479) Signed-off-by: Yordis Prieto <[email protected]> * fix(mobile): keep dictation running across navigation behind an edge pill (pingdotgg#15502) Co-authored-by: Bil0000 <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(client-runtime): relay disconnects no longer show as thread errors (pingdotgg#15470) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): subagent cards name the provider account (pingdotgg#15493) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): read paginated review replies when watching PRs (pingdotgg#15427) Co-authored-by: maria-rcks <[email protected]> * fix(server): offer one-click provider updates for every install (pingdotgg#15416) * fix(mobile): keep the dictation timer from shifting width (pingdotgg#15504) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(relay): T3 Connect links no longer fail on colliding prepared statements (pingdotgg#15411) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): sqlite transactions wait for the write lock instead of failing (pingdotgg#15488) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): unpin button shows the pin-off icon on hover (pingdotgg#15425) * fix(mobile): make queued message removal tappable (pingdotgg#15417) * fix(web): keep workspace panels below dialogs (pingdotgg#15454) * fix(clients): Working section keeps its order while agents finish and wake (pingdotgg#15418) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(mobile): full-screen simulator viewer with on-demand controls (pingdotgg#15551) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(client-runtime): closing a busy stream no longer drops the connection (pingdotgg#15563) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): add shift-held pull request quick actions (pingdotgg#15549) Co-authored-by: maria-rcks <[email protected]> * fix: expanded tool calls show their output, empty ones don't expand (pingdotgg#15505) Co-authored-by: maria-rcks <[email protected]> * fix(web): show device diagnostics before hub readiness (pingdotgg#15435) * fix(web): open thread picker for unsent drafts (pingdotgg#15436) * fix(desktop): print version before initializing the app (pingdotgg#15440) * fix(server): recover claude skill scalar frontmatter (pingdotgg#15452) * fix(server): keep settled threads asleep after restarts (pingdotgg#15604) * fix(server): avoid inferring forgejo conflicts from mergeability (pingdotgg#15441) * fix(web): dismiss hovered timeline tooltips on scroll (pingdotgg#15455) * fix(server): discover Claude commands in each workspace (pingdotgg#15462) * fix(web): restore project action preview opening (pingdotgg#15490) * fix(desktop): keep titlebar controls inset when zoomed (pingdotgg#15496) * fix(source-control): use the Azure DevOps mark (pingdotgg#15512) * fix(web): open provider update details from both icons (pingdotgg#15501) * fix(web): reveal sidebar actions for secondary hovering pointers (pingdotgg#15536) * fix(markdown): preserve descriptive file-link labels (pingdotgg#15509) * feat(clients): tool calls show the call above a muted result, without cards (pingdotgg#15506) Co-authored-by: maria-rcks <[email protected]> * fix(chat): repair unclosed local file links in assistant responses (pingdotgg#15520) * fix(server): match manual update commands to installed cli (pingdotgg#15539) * fix(server): preserve staging during commit message generation (pingdotgg#15532) * fix(mobile): Keep the last line of iOS markdown replies visible (pingdotgg#15737) * feat(release): include nightly changelogs in Discord announcements (pingdotgg#15754) * revert(web): remove automatic compaction before resume (pingdotgg#15771) * fix(server): Claude threads no longer get stuck after background commands (pingdotgg#15770) * fix(cli): reject accidental server launches (pingdotgg#15795) * feat(clients): reach one environment over several routes (pingdotgg#15467) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(clients): learn an environment's LAN and tailnet addresses (pingdotgg#15468) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): share MCP tool presentation across providers (pingdotgg#15475) Co-authored-by: Bil0000 <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * revert(chat): remove automatic file-link repair (pingdotgg#15824) Co-authored-by: maria-rcks <[email protected]> * perf(web): validate monospace fonts when selected (pingdotgg#15642) * fix(server): expand home-relative media paths (pingdotgg#15618) * fix(server): recover Linux runtime directory for device hub (pingdotgg#12402) * fix(web): center icons in thread details icon buttons (pingdotgg#15669) Co-authored-by: Claude Opus 5.5 <[email protected]> * fix(mobile): back from an agent's thread returns to its parent (pingdotgg#15068) * fix(dev): worktree setup never deletes a real env file (pingdotgg#15845) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): drop the duplicate Option import that breaks main CI (pingdotgg#15847) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(dev): write bootstrap warnings directly to stderr (pingdotgg#15865) * fix(mobile): a message that fails to send now says why in the thread (pingdotgg#15807) Co-authored-by: T3 Code Test <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): queue background notifications during active tools (pingdotgg#15892) * refactor(server): share one keyed lock that releases idle keys (pingdotgg#15577) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): T3 MCP tools take explicit thread and project targets (pingdotgg#15219) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(desktop): V2 imports stashed prompts and drafts from the V1 profile (pingdotgg#15072) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): shell commands in the timeline are syntax highlighted (pingdotgg#15037) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: Yash Singh <[email protected]> * fix(mobile): upgrade Uniwind and remove local patch (pingdotgg#14597) * fix(server): Stop ends a Codex command after its thread was settled (pingdotgg#15546) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): subagents no longer inherit parent pull-request links (pingdotgg#14918) Co-authored-by: Simone <[email protected]> * fix(prs): queue fast actions and close batches by dragging (pingdotgg#15851) Co-authored-by: maria-rcks <[email protected]> * perf(prs): share concurrent github routing metadata probes (pingdotgg#15853) Co-authored-by: maria-rcks <[email protected]> * fix(mobile): back from a finished subagent in the feed returns to its parent (pingdotgg#15844) * fix(desktop): bound preview inspector retention and record renderer identity (pingdotgg#16032) * fix(web): show fast mode beside reasoning as text (pingdotgg#16069) Co-authored-by: maria-rcks <[email protected]> * fix(mobile): make the routes list match the other settings rows (pingdotgg#15958) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(threads): stop pull request watches when settling (pingdotgg#16095) * feat(contracts): clients tolerate union members they don't know yet (pingdotgg#15951) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(contracts): project icons decode forward-compatibly instead of encoding a fallback (pingdotgg#16118) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * Removed an unused helper from the Android push payload builder (pingdotgg#16116) * perf(mobile): reduce shell cache encoding work (pingdotgg#15096) * perf(mobile): defer audio recorder creation until dictation (pingdotgg#15248) * feat(server): bump Antigravity ACP agent to 1.3.0 (pingdotgg#15746) * feat(acp): support local provider commands (pingdotgg#16021) * fix(server): honor submodule settings when creating worktrees (pingdotgg#15594) * chore(deps): upgrade Effect to stable 4.0.1 (pingdotgg#16138) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): worktree threads survive a local branch named t3code (pingdotgg#16167) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (pingdotgg#16170) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): match subagent timestamp fonts to chat (pingdotgg#16151) * fix(web): wrap full status text in composer hover details (pingdotgg#16158) * ci: run the transfer report job on Blacksmith (pingdotgg#16178) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): Stop also stops delegated tasks and pull request watches (pingdotgg#16002) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat: native /goal for Codex and Claude, with goal status in the UI (pingdotgg#15592) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): use current SQL import in thread stop tests * fix(server): name the cause of a failed git command (pingdotgg#8645) Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): PR watch wakes the agent when a bot edits its review comment (pingdotgg#15415) * feat(source-control): omit agent credits from PR merge messages (pingdotgg#16192) * fix(clients): dropped connections say why in the client trace (pingdotgg#16200) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): PR watch reports a required check that first appears already passed (pingdotgg#15804) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix: a failed DPoP key load and a fresh maintenance read are no longer cached (pingdotgg#15500) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix: tool screenshots show as images, not base64 text (pingdotgg#16199) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * docs(mcp): thread tools reach threads in any project (pingdotgg#15947) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(threads): threads watching a PR stay in Working instead of bouncing to the inbox (pingdotgg#16204) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(deps): bump cursor sdk and astro to clear vulnerable transitives (pingdotgg#16214) Co-authored-by: Claude Fable 5.1 <[email protected]> * fix(server): PR sync waits out a GitHub rate limit pause instead of failing every PR (pingdotgg#16203) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): scheduled tasks can run on a webhook (pingdotgg#15085) * feat(relay): forward webhook requests to the environment's tunnel (pingdotgg#15086) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(mobile): create and copy webhook automations (pingdotgg#15087) * feat(web): create webhook automations and inspect their deliveries (pingdotgg#15088) * feat(relay,server,web,mobile): opt-in to hold webhooks while offline (pingdotgg#15487) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): PR watches stop burning GitHub's rate limit and giving up (pingdotgg#16208) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): delegation sees a fixed provider without the app open (pingdotgg#16219) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat: new branches use the shorter t3/ prefix (pingdotgg#16220) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf: cheaper shell refreshes, one copy of Codex streaming text, no MCP wait polling (pingdotgg#15033) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat: agents can show HTML pages inline in threads (pingdotgg#15968) Co-authored-by: Ben Davis <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: Julius Marminge <[email protected]> * chore(relay): match Alchemy to the PS-80 Postgres cluster (pingdotgg#16228) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat: agents ask the user for a secret through a private card (pingdotgg#15907) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): see and stop pull request watches in the thread details card (pingdotgg#16235) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): ACP mode states with null descriptions are no longer dropped (pingdotgg#16218) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): finished outbox rows and old PR cache files are pruned (pingdotgg#16247) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(relay): releasing a tunnel that still has a connector no longer 500s (pingdotgg#16250) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server,relay): webhook capabilities live in services, not handlers (pingdotgg#16232) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): a T3 Connect preferences save finishes even if the client disconnects (pingdotgg#16266) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): import service modules as namespaces, not aliased layers (pingdotgg#16267) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): log how long PR watches stay quiet before they end (pingdotgg#16262) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server,web): choose where new worktrees are created (pingdotgg#16231) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(server): idle status polls and PR sweeps start fewer git processes (pingdotgg#16272) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(server): PR watches spend ~90% fewer GitHub points by checking a 1-point fingerprint first (pingdotgg#16270) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(pull-requests): PR detail reads no longer drain the GitHub quota (pingdotgg#16280) Takes over pingdotgg#13841. A PR query refreshes on the server's refresh signal only while something reads it, and the server shares detail, activity, and preview for 60 seconds, or 10 minutes once merged. Co-authored-by: Wout Stiens <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor: layer variables are named layer or layerXyz (pingdotgg#16282) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): T3 Connect link capabilities live in a CloudLink service (pingdotgg#16265) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): sidebar drag and drop no longer snaps back (pingdotgg#16291) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): inline HTML renders no longer trap the thread's scroll (pingdotgg#16283) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): one module per service instead of Services/ and Layers/ folders (pingdotgg#16295) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(review): configure CodeRabbit in TypeScript (pingdotgg#16281) * docs: put the Effect and web UI review rules in the docs (pingdotgg#16286) * chore(lint): require a reason on every lint and type-checker suppression (pingdotgg#16294) * refactor(relay): import HookInboxObject once, as a namespace (pingdotgg#16307) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): a rejected desktop-local credential is not retried every poll (pingdotgg#16273) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(desktop): the renderer's bootstrap token rotates every 12 hours (pingdotgg#16275) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): recover from a closed IndexedDB connection (pingdotgg#16311) Co-authored-by: Lakshmi Tanmay <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(relay): stop forcing manual relay deploys by default (pingdotgg#13563) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(relay): measure the managed tunnel backlog (pingdotgg#13564) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(relay): clean up tunnels of hosts that never registered recovery (pingdotgg#13565) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(relay): delete expired tunnels four at a time within a time budget (pingdotgg#13566) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(connect): tell users when an idle tunnel was removed (pingdotgg#13567) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * docs(relay): add the legacy tunnel cleanup rollout runbook (pingdotgg#13568) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(review): point CodeRabbit at the web UI conventions (pingdotgg#16324) * chore(review): turn off CodeRabbit's docstring coverage check (pingdotgg#16328) * refactor(server): CloudLink keeps only the link lifecycle; pure checks live beside it (pingdotgg#16340) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): CloudLink fails with its own errors; the connect routes map them to HTTP (pingdotgg#16341) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): replay guards stay in CloudLink (pingdotgg#16349) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): forks no longer merge into their upstream repo's project group (pingdotgg#16353) Fixes pingdotgg#4880. Originally pingdotgg#14639 by @Project516. Co-authored-by: Project516 <[email protected]> * fix(server): stop the startup project sync from delaying the app window (pingdotgg#14912) * fix(web): avoid blocking image preparation conversions (pingdotgg#13342) * fix(server): return partial workspace index on timeout (pingdotgg#11500) * fix(server): probe project favicon candidates concurrently (pingdotgg#12543) * fix(observability): a failing trace disk no longer stalls the server (pingdotgg#13758) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): status polling no longer locks the git index (pingdotgg#14718) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(shared): scan PATH once per command before spawning, not on every spawn (pingdotgg#12600) * fix(server): main's startup auto-pull test compiles again (pingdotgg#16357) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): project favicons stop being rescanned every minute (pingdotgg#16206) Favicons in ProjectEnrichmentService now keep for 15 minutes. Repository identity keeps its 1-minute TTL, so remote changes still show within a minute. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): Claude limits load again for users with large transcript histories (pingdotgg#16358) The Claude capabilities probe now asks for usage with skipBehaviors, so it no longer scans every local transcript and misses its 4 s deadline. Takes over pingdotgg#14456. Co-authored-by: Ashkaan <[email protected]> * Add esthor to the list of GitHub users * fix(server): caches and ids are written atomically (pingdotgg#16242) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): one-shot initializers no longer race (pingdotgg#16260) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): the PR cache sweep only removes real entry files (pingdotgg#16285) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore: keep one copy each of undici 8 and ws 8 (pingdotgg#16211) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(shared): DrainableWorker keeps running after a failed item (pingdotgg#16223) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): metrics count interrupted work on the monotonic clock (pingdotgg#16207) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(web): import connection storage as a namespace in its test (pingdotgg#16315) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(contracts): trimmed IDs round-trip (pingdotgg#16300) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): main's settings, keybindings and session tests compile again (pingdotgg#16363) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(lint): catch known tags with Effect.catchTags (pingdotgg#16361) * fix(observability): T3 Connect tracing stops at the relay boundary (pingdotgg#16314) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(relay): error and deadline responses carry CORS headers (pingdotgg#16253) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): bring back the live shimmer on work log rows (pingdotgg#16372) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor: Effect code gets UUIDs and SHA-256 from Effect's Crypto (pingdotgg#16377) * fix(relay): export traces through one tracer, one request span each (pingdotgg#16382) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(contracts): take the Moatless V2 backend into the upstream merge Regenerate the threads.getShell fixture as a V2 row, decode it as the RPC layer does, drop four UnsupportedMethodError entries the V2 backend now serves, and reconcile docs/fork/gaps.md with soaplabs/moatless#1068. Co-Authored-By: Claude Opus 5.5 <[email protected]> * test(contracts): decode a Moatless V2 thread projection fixture The fixture comes from the moatless feat/t3code-v2-timeline-and-sessions branch and holds every timeline item kind it translates tool calls into, its plans, and the provider rows that let a client steer a running turn. Co-Authored-By: Claude Opus 5.5 <[email protected]> * ci: run the contracts tests in the Typecheck workflow Its Moatless fixtures are the one check that a backend response decodes against the schemas the client reads, and the package is small enough for the 4 CPU / 8 GiB runner. Co-Authored-By: Claude Opus 5.5 <[email protected]> * ci: run the contracts tests before the typecheck The runner loses contact during pnpm typecheck, which skipped the fixture decodes queued after it. Co-Authored-By: Claude Opus 5.5 <[email protected]> * test(contracts): decode the V2 projection's node rows Regenerated from soaplabs/moatless#1071 at ed50318e, which backs every rootNodeId and nodeId with a node row. Co-Authored-By: Claude Opus 5.5 <[email protected]> * docs(fork): narrow the V2 gap to what moatless#1071 still refuses Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Signed-off-by: Yordis Prieto <[email protected]> Co-authored-by: Theo Browne <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: maria <[email protected]> Co-authored-by: maria-rcks <[email protected]> Co-authored-by: Ben Davis <[email protected]> Co-authored-by: Igor Makowski <[email protected]> Co-authored-by: Aditya Garud <[email protected]> Co-authored-by: yashranaway <[email protected]> Co-authored-by: shivam <[email protected]> Co-authored-by: Noé <[email protected]> Co-authored-by: Bilal Bakr <[email protected]> Co-authored-by: Jake Leventhal <[email protected]> Co-authored-by: Dara Adedeji <[email protected]> Co-authored-by: Bob Fowler <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: oliver <[email protected]> Co-authored-by: tris203 <[email protected]> Co-authored-by: Yordis Prieto <[email protected]> Co-authored-by: Yash Singh <[email protected]> Co-authored-by: scratchyone <[email protected]> Co-authored-by: scratchyone <[email protected]> Co-authored-by: Alex <[email protected]> Co-authored-by: Alex Southwell <[email protected]> Co-authored-by: saphid <[email protected]> Co-authored-by: Ryan Ilano <[email protected]> Co-authored-by: Argo <[email protected]> Co-authored-by: eimexdev <[email protected]> Co-authored-by: Mike Olson <[email protected]> Co-authored-by: Exotic <[email protected]> Co-authored-by: Rakshith Bhat <[email protected]> Co-authored-by: AKolenda <[email protected]> Co-authored-by: T3 Code Test <[email protected]> Co-authored-by: Hubert Bieszczad <[email protected]> Co-authored-by: Simone <[email protected]> Co-authored-by: Simone <[email protected]> Co-authored-by: Kriday Dave <[email protected]> Co-authored-by: Dipangshu Roy <[email protected]> Co-authored-by: Rahul Mishra <[email protected]> Co-authored-by: Wout Stiens <[email protected]> Co-authored-by: Utkarsh Patil <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Muhammad Waleed <[email protected]> Co-authored-by: Guillermo Casanova <[email protected]> Co-authored-by: Scott Norteman <[email protected]> Co-authored-by: Erik Thorelli <[email protected]> Co-authored-by: Lakshmi Tanmay <[email protected]> Co-authored-by: Project516 <[email protected]> Co-authored-by: Michel Liao <[email protected]> Co-authored-by: Ishaan Kothari <[email protected]> Co-authored-by: ahalekelly <[email protected]> Co-authored-by: SkiTee3000 <[email protected]> Co-authored-by: Ashkaan <[email protected]> Co-authored-by: soap-agentops[bot] <310870250+soap-agentops[bot]@users.noreply.github.com>
…raming (#28) * fix(server): forks no longer merge into their upstream repo's project group (pingdotgg#16353) Fixes pingdotgg#4880. Originally pingdotgg#14639 by @Project516. Co-authored-by: Project516 <[email protected]> * fix(server): stop the startup project sync from delaying the app window (pingdotgg#14912) * fix(web): avoid blocking image preparation conversions (pingdotgg#13342) * fix(server): return partial workspace index on timeout (pingdotgg#11500) * fix(server): probe project favicon candidates concurrently (pingdotgg#12543) * fix(observability): a failing trace disk no longer stalls the server (pingdotgg#13758) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): status polling no longer locks the git index (pingdotgg#14718) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(shared): scan PATH once per command before spawning, not on every spawn (pingdotgg#12600) * fix(server): main's startup auto-pull test compiles again (pingdotgg#16357) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): project favicons stop being rescanned every minute (pingdotgg#16206) Favicons in ProjectEnrichmentService now keep for 15 minutes. Repository identity keeps its 1-minute TTL, so remote changes still show within a minute. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): Claude limits load again for users with large transcript histories (pingdotgg#16358) The Claude capabilities probe now asks for usage with skipBehaviors, so it no longer scans every local transcript and misses its 4 s deadline. Takes over pingdotgg#14456. Co-authored-by: Ashkaan <[email protected]> * Add esthor to the list of GitHub users * fix(server): caches and ids are written atomically (pingdotgg#16242) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): one-shot initializers no longer race (pingdotgg#16260) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): the PR cache sweep only removes real entry files (pingdotgg#16285) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore: keep one copy each of undici 8 and ws 8 (pingdotgg#16211) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(shared): DrainableWorker keeps running after a failed item (pingdotgg#16223) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): metrics count interrupted work on the monotonic clock (pingdotgg#16207) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(web): import connection storage as a namespace in its test (pingdotgg#16315) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(contracts): trimmed IDs round-trip (pingdotgg#16300) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): main's settings, keybindings and session tests compile again (pingdotgg#16363) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(lint): catch known tags with Effect.catchTags (pingdotgg#16361) * fix(observability): T3 Connect tracing stops at the relay boundary (pingdotgg#16314) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(relay): error and deadline responses carry CORS headers (pingdotgg#16253) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): bring back the live shimmer on work log rows (pingdotgg#16372) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor: Effect code gets UUIDs and SHA-256 from Effect's Crypto (pingdotgg#16377) * fix(relay): export traces through one tracer, one request span each (pingdotgg#16382) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): Pi thread titles use linked PR context (pingdotgg#16210) * fix(desktop): retry transient bearer bootstrap and degrade on session fetch failure (pingdotgg#12919) * fix(server): avoid scanning completed history for pending secrets (pingdotgg#16409) * fix(orchestration-v2): let Stop recover stalled runs (pingdotgg#15442) * fix(release): resolve version-qualified catalog overrides (pingdotgg#16411) * fix(web): type in front of bold that starts a composer line (pingdotgg#13217) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <[email protected]> * fix(desktop): prevent browser screenshot filename collisions (pingdotgg#14784) * fix(server): end clone options before the repository URL (pingdotgg#14781) * fix(web): queued messages no longer split the composer notice stack (pingdotgg#16400) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: Yash Singh <[email protected]> * fix(server): reject invalid explicit Bitbucket repositories (pingdotgg#15876) * fix(desktop): use the crypto service for screenshot IDs (pingdotgg#16415) * fix(shared): find versioned JetBrains macOS app bundles (pingdotgg#16246) * fix(server): OpenCode 2 threads get T3 Code's MCP tools (pingdotgg#16142) * feat(preview): run the browser on the environment server (pingdotgg#15328) * fix: restore service references breaking ci (pingdotgg#16495) Co-authored-by: maria-rcks <[email protected]> * fix(mcp): mark declared tool failures as errors (pingdotgg#15617) * fix(release): unblock nightly browser tests and cli builds (pingdotgg#16515) Co-authored-by: maria-rcks <[email protected]> * fix(mcp): preserve thread command rejection reasons (pingdotgg#15627) * chore(deps): upgrade @effect/tsgo to 0.46.1 (pingdotgg#16360) Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(orchestration-v2): show reported subagent models (pingdotgg#14108) Co-authored-by: Yash Singh <[email protected]> * fix(web): Apple logo no longer dips below the device host label (pingdotgg#14825) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): show subagent effort and speed in hover cards (pingdotgg#13056) Co-authored-by: Julius Marminge <[email protected]> * feat(web): reopen closed tabs across the app (pingdotgg#15207) Co-authored-by: Julius Marminge <[email protected]> * fix(web): stop wide ordered list markers from clipping (pingdotgg#16523) * fix(desktop): build AppImage with the static runtime toolset (fixes libfuse2 launch failure) (pingdotgg#7765) Co-authored-by: Julius Marminge <[email protected]> * fix(mobile): keep usage-limit notice opaque (pingdotgg#15602) * feat(server): GitHub API transport that uses gh only for the token (pingdotgg#16319) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): pull requests talk to GitHub's API instead of the gh CLI (pingdotgg#16320) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): source control, media and discovery use GitHub's API instead of gh (pingdotgg#16321) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat: choose the GitHub account per host, save a GitHub token, and fewer reads per PR action (pingdotgg#16322) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): Rebase stack moves each layer onto the rebased layer below it (pingdotgg#16551) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): diff panel keeps the chosen scope while a turn runs (pingdotgg#16571) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(desktop): honor the telemetry opt-out from the shell profile (pingdotgg#16563) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * docs(marketing): disclose product usage data in the privacy policy (pingdotgg#16562) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): note anonymous usage data in onboarding and link the privacy policy (pingdotgg#16564) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * perf(web): diff panel no longer re-renders every file header each time a patch arrives (pingdotgg#16033) Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): every T3 MCP tool declares who may call it (pingdotgg#16335) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server): outside agents sign in to the T3 MCP server with OAuth (pingdotgg#16336) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): copy an environment's MCP URL for outside agents (pingdotgg#16337) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(tsconfig): turn off the Schema-over-JSON diagnostic in test files (pingdotgg#16375) Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(review): CodeRabbit gates outside contributors' pull requests (pingdotgg#16332) * fix(desktop): include Linux package license and app metadata (pingdotgg#16597) * fix(server): one failing RPC handler no longer ends the client's other requests (pingdotgg#15515) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(contracts): a context record that cannot be encoded no longer fails the send (pingdotgg#16398) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): open pull request row actions on right-click (pingdotgg#16612) * fix(web): show attempted paths in file preview errors (pingdotgg#15628) * fix(vcs): passive sidebar rows stop retaining remote pollers (pingdotgg#15666) * feat(web): group keybindings settings by area with a page toolbar (pingdotgg#12822) * feat(web): stop T3-owned subagents from Lineage (pingdotgg#15211) * feat(web): add fast actions to linked pull requests (pingdotgg#16627) * feat(web): open right panel tab menu with Mod+T (pingdotgg#15686) Co-authored-by: Julius Marminge <[email protected]> * fix(server): provider sessions clean up when their start is interrupted (pingdotgg#15571) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): show "No project" near the top of the new thread picker (pingdotgg#16628) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * refactor(server): instrument WS RPCs in group middleware (pingdotgg#15548) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * chore(deps): upgrade @pierre/diffs to 1.5.2 and @pierre/trees to beta.6 (pingdotgg#16644) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(relay): a host restarting onto a deleted tunnel gets a new one (pingdotgg#16649) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): recover a deleted tunnel when Cloudflare says "Tunnel not found" (pingdotgg#16648) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): iPhone Duo fold controls follow the phone's orientation (pingdotgg#16630) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): keep workspace options when expanding lineage (pingdotgg#16635) * fix(web): preserve bare anchor placeholders in markdown (pingdotgg#16637) * fix(pi): preserve provider identity in discovered models (pingdotgg#16661) Co-authored-by: maria-rcks <[email protected]> * fix(auth): preserve explicitly granted pairing scopes (pingdotgg#9785) Co-authored-by: Claude Fable 5 <[email protected]> * feat(auth): separate environment administration permissions (pingdotgg#9786) Co-authored-by: Claude Fable 5 <[email protected]> * feat(auth): separate source control write permissions (pingdotgg#9787) Co-authored-by: Claude Fable 5 <[email protected]> * feat(auth): separate filesystem read and write permissions (pingdotgg#9788) Co-authored-by: Claude Fable 5 <[email protected]> * feat(auth): separate browser preview control permissions (pingdotgg#9789) Co-authored-by: Claude Fable 5 <[email protected]> * feat(auth): separate diagnostics and usage permissions (pingdotgg#9790) Co-authored-by: Claude Fable 5 <[email protected]> * feat(auth): allow passive terminal observation (pingdotgg#9791) Co-authored-by: Claude Fable 5 <[email protected]> * fix(auth): keep old clients connected across scope changes (pingdotgg#10298) Co-authored-by: Claude Fable 5 <[email protected]> * feat(server): hosted agents like ChatGPT can sign in to the T3 MCP server (pingdotgg#16718) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * docs: connect Claude Code, Codex, ChatGPT and bots over MCP (pingdotgg#16741) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(web): thread details card gives titles room to read (pingdotgg#16746) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(mcp): agent HTML pages stop painting slab backgrounds (pingdotgg#16752) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix: composer picks up new project skills without a server restart (pingdotgg#16750) * feat(server): run a project action when a worktree thread settles (pingdotgg#16290) Co-authored-by: spoukyii <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(web): old Claude threads compact on send instead of stacking notices (pingdotgg#16631) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): settled threads stop polling their pull requests (pingdotgg#16762) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): stop storing tool image bytes no client reads (pingdotgg#16652) * fix(server): status refresh no longer pegs CPU in repos with thousands of untracked files (pingdotgg#16771) Co-authored-by: Braulio Oliveira <[email protected]> Co-authored-by: Claude Sonnet 5.5 <[email protected]> * perf(server): background branch lookups share one GitHub query per sweep (pingdotgg#16760) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): threads settle as soon as a client sees their PR merge (pingdotgg#16761) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * feat(server,web,mobile): agents see snooze state and link to threads (pingdotgg#16782) Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> * fix(release): Forgejo build resolves version-qualified catalog overrides Upstream now pins overrides such as undici@^8 to the catalog; the packaging script looked up the whole selector and failed. Mirrors upstream pingdotgg#16411. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): HTML renders and PDFs load behind a proxy that forbids framing Clients frame asset documents from the environment's origin, which is often not their own. A reverse proxy that adds X-Frame-Options: SAMEORIGIN blanked every HTML render and PDF preview in that setup. Inline HTML and PDF asset responses now carry `frame-ancestors *`, which browsers honour in place of X-Frame-Options. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * fix(server): desktop renderer may frame asset documents CSP's `*` matches only http(s) ancestors, so the desktop app's custom scheme origins are listed explicitly. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Theo Browne <[email protected]> Co-authored-by: Project516 <[email protected]> Co-authored-by: Igor Makowski <[email protected]> Co-authored-by: Bilal Bakr <[email protected]> Co-authored-by: Michel Liao <[email protected]> Co-authored-by: Ishaan Kothari <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: ahalekelly <[email protected]> Co-authored-by: SkiTee3000 <[email protected]> Co-authored-by: Ashkaan <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Erik Thorelli <[email protected]> Co-authored-by: James Villarrubia <[email protected]> Co-authored-by: Yash Singh <[email protected]> Co-authored-by: Alex Southwell <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tristan Manchester <[email protected]> Co-authored-by: Arav Jain <[email protected]> Co-authored-by: Sypher760-gif <[email protected]> Co-authored-by: Nikita Koynov <[email protected]> Co-authored-by: maria <[email protected]> Co-authored-by: maria-rcks <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Jake Leventhal <[email protected]> Co-authored-by: Utkarsh Patil <[email protected]> Co-authored-by: Lorenzo <[email protected]> Co-authored-by: Benedikt Rump <[email protected]> Co-authored-by: Stevan Borus <[email protected]> Co-authored-by: Gabriel De Andrade <[email protected]> Co-authored-by: spoukyii <[email protected]> Co-authored-by: Derek Trimm <[email protected]> Co-authored-by: Braulio Oliveira <[email protected]>
Problem
With repository grouping on (the default), a renamed fork that has the original repository as its
upstreamremote collapses into the same project as a checkout of the original. The draft header and the draft project picker label the fork with the upstream name, so users can't tell which repository they are working in. Reported in #4880 and reproduced by a maintainer on September 5 (comment).Reproduction: one checkout with
originset toexample-org/widget, and two checkouts of a renamed fork withoriginset tosomeone/gadgetandupstreamset toexample-org/widget. Add all three as projects and open a new draft on a fork checkout.Expected: the fork checkouts group together under
someone/gadget, apart from the original.Actual: all three checkouts form one group named
example-org/widget.Change
The canonical repository identity is unchanged. It still follows
upstream, so pull request lookup and linking target the repository the fork tracks. When the checkout's ownoriginnames a different repository, the resolver now adds it as an optionaloriginfield onRepositoryIdentity.Two small contract helpers pick the grouping key and the label from
originwhen it is present, falling back to the canonical identity. Client grouping inpackages/client-runtimeand the mobile new-task environment matching use those helpers, so web, desktop, and mobile agree. Checkouts without anupstreamremote resolve to the same identity as before.docs/internals/remote.mdgets a short note on why the grouping key differs from the canonical key.This replaces #11011, which was closed for missing before/after screenshots. The code is the same apart from a rebase onto current main. It also keeps the fallback from that PR's review that labels a fork by its canonical key when the origin has no display name.
Scope and approval
Fixes #4880. A maintainer confirmed the bug on current main and set the constraint that a display fix must preserve repository identity (comment). That constraint is why the earlier attempt in #7686 was closed. This change leaves
canonicalKey,locator,owner,name, andprovideras they were. Only grouping and labels read the new field.Verification
Focused tests, run on this branch before I rebased onto main as of October 5. The rebase had no conflicts. I did not rerun these locally afterward, so CI covers the rebased commit.
vp test run apps/server/src/project/RepositoryIdentityResolver.test.ts packages/client-runtime/src/state/projectGrouping.test.ts: 25 passed. The new cases cover a fork reporting its ownoriginnext to the upstream identity, fork checkouts grouping apart from an upstream checkout under the fork's label, and an origin with no display name.vp test run apps/mobile/src/features/threads/new-task-project-selection.test.ts: 13 passed.tsc --noEmitinpackages/contracts,packages/client-runtime, andapps/mobile: clean.Manual check in the Linux web client against a fresh dev state directory, using the three disposable repositories from the reproduction above. I ran the same state twice: once with the changed files reverted to
main, and once on this branch with the server restarted so identities resolved again. Screenshots show a new draft on thegadget-2fork checkout with the project picker open.Before (
main): one picker entry,example-org/widget, covers all three checkouts, and the fork's draft is labelled with the upstream name.After (this branch): the two fork checkouts share one entry,
someone/gadget, and the draft header names the fork. The original is its own entry. It shows aswidgetbecause a single-checkout group uses the project title, which is existing label behavior.Not checked: the server package typecheck (it ran out of memory on the Raspberry Pi I used, so CI covers it), the packaged desktop build, and the mobile app on a device. Mobile shares the grouping helpers, and its selection logic is covered by the test above.
Claude Opus 5.5 via Claude Code in T3 Code.