镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

feat(git): select repositories for submodule diff review - #1

Closed
NeilMazumdar wants to merge 348 commits into
mainfrom
feature/submodule-diffs
Closed

NeilMazumdar wants to merge 348 commits into
mainfrom
feature/submodule-diffs

Conversation

@NeilMazumdar

@NeilMazumdar NeilMazumdar commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Problem

An umbrella repository can show submodule pointers, but T3 cannot select a child repository to review its files. The Diff pane now has a searchable repository picker, with the repository name, branch and relative path. The umbrella remains the default and keeps native Git pointer diffs.

Change

Select an initialized submodule, including a nested one, to review its Changes, Uncommitted files, commits and comparison branches. Switching repositories resets the comparison branch to Automatic. Review comments retain workspace-relative file paths. Turn diffs and Git write actions remain tied to the thread's repository.

DiffPanel / ReviewSheet
  review.getRepositories(workspace cwd)
    ReviewService workspace guard
      GitVcsDriver.getReviewRepositories
        bounded discovery of initialized submodules
  select repository
    review.getDiffPreview(selected cwd)
    commit lists, refs and full-file expansion use the same cwd

Web and desktop share the picker. Native mobile has a repository menu. The web toolbar wraps in narrow panels. The parent entry uses the project title, and parent reviews preserve subdirectory and symlink workspace paths. Discovery resolves paths before entering child repositories, excludes uninitialized modules and paths outside the workspace, and runs separately from routine diff and status refreshes. Opening the picker or pressing Refresh rediscovers repositories.

This follows the separate-repository model in VS Code and Zed.

Phone walkthrough

A 70-second portrait recording at a 390 x 585 CSS-pixel phone viewport. It starts on the base build, where the parent diff has only submodule pointer rows. On the fork head it uses the picker to review auth, ui, catalog and the nested schema, then returns to the parent.

pr1-repository-picker-portrait.mp4

Scope and approval

The upstream proposal is in Ideas discussion #32784. It requests explicit maintainer approval for the repository-picker direction and review-only scope. This fork PR remains available for inspection while that approval is pending; no upstream PR has been opened for this implementation.

Verification

vp run check:changed passes formatting, lint, knip, GraphQL checks, affected-package typechecks, React Compiler checks, 412 changed-file tests and 17 cross-file checks. Regression coverage includes initialized and nested submodules, uninitialized modules, hostile manifest paths and symlinks, repository-scoped previews and commits, comment paths, selection resets and parent commit links.

Chrome MCP confirms umbrella pointer diffs, auth file contents, staged changes, the UI module's untracked file and nested detached-HEAD selection. The narrow web layout was checked at 390 CSS pixels. Native mobile changes are typechecked but have not been run in an iOS or Android app. An independent review of 6f331a0 found no P0 to P2 issues. The showcase comment has before and after stills from local builds of b90e554 and 6f331a0, the portrait walkthrough and a 59-second landscape walkthrough. Both videos play and seek in a signed-out, phone-width Chrome tab.

Models and harnesses: Opus 5.5 via Claude Code and Sol 6.1 via Codex, both through T3 Code. Sol implemented and validated the change; Opus independently reviewed it and captured the screenshots and recording.

@NeilMazumdar
NeilMazumdar marked this pull request as ready for review November 7, 2026 00:17
@NeilMazumdar NeilMazumdar changed the title feat(git): show file diffs inside submodules feat(git): select repositories for submodule diff review Nov 7, 2026

Copy link
Copy Markdown
Owner Author

Contributing models and harnesses: Opus 5.5 via Claude Code and Sol 6.1 via Codex, both through T3 Code. Sol implemented the change and ran validation. Opus independently reviewed it and captured the before-and-after screenshots and recording.

The upstream direction and scope are proposed in Ideas discussion #32784, which links this fork PR and includes screenshots and video. Maintainer approval is pending.

@NeilMazumdar

Copy link
Copy Markdown
Owner Author

Showcase

Recorded on a local build of 6f331a0, with each before on a local build of its merge-base b90e554. The workspace is a synthetic umbrella with three submodules, one of which has its own nested submodule. Desktop shots are 1920 x 1080 in the light theme.

Phone walkthrough, portrait (70 s)

Recorded in Chrome at a 390 x 585 CSS-pixel viewport with mobile and touch emulation, for a phone held upright. Captions sit above the app, clear of the player's controls.

  1. Before: the base build's Diff header has no repository picker. Submodules are pointer rows beside README.md and src/app.ts.
  2. After: the same parent diff, with the repository picker in the header.
  3. Open the picker: five repositories with their paths.
  4. Pick auth and its staged src/policy.ts. Tap the title to open packages/auth/src/policy.ts, then close it.
  5. Pick ui (theme.ts changed, tokens.ts untracked), catalog (config.ts and its vendor/schema pointer) and the nested schema on a detached HEAD.
  6. Return to Atlas workspace.
pr1-repository-picker-portrait.mp4

Umbrella Changes view

Before, the umbrella lists its submodules as pointer rows and has no way to review a child repository.

Before: umbrella Changes with three submodule pointer rows and no repository picker

After, the same pointer rows remain and the header gains a repository picker.

After: the same umbrella Changes view with the repository picker in the header

Reviewing a child repository

The picker lists each initialized repository with its branch and path. schema is nested inside catalog.

Repository picker open with five repositories

Clicking the title of auth's staged src/policy.ts opens packages/auth/src/policy.ts with the child's contents.

auth policy.ts opened from the diff, breadcrumb Atlas workspace, packages, auth, src

ui shows its untracked src/tokens.ts as an added file.

ui with theme.ts modified and untracked tokens.ts added

schema is a nested checkout on a detached HEAD, compared with Automatic.

schema on detached HEAD with version.ts 1 to 2

At 390 CSS pixels the picker, refs and toolbar wrap onto separate rows.

Phone width header with auth selected and its staged diff

Landscape walkthrough (59 s)

  1. Before: the umbrella shows pointer rows only.
  2. After: open the picker, search for auth and select it.
  3. Expand src/policy.ts, then click its title to open the child's file.
  4. Select ui, catalog and schema in turn.
  5. Return to Atlas workspace and its own files.
pr1-repository-picker-showcase.mp4

Not shown: native iOS and Android, the Electron app, remote and relay connections, review comments and commit lists inside a child repository, the Latest turn view with a child selected, and the 256-repository discovery limit. Discovery bounds, hostile manifest paths and path guards are covered by tests.

t3dotgg and others added 26 commits November 8, 2026 16:13
…kout (pingdotgg#32927)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…Code (pingdotgg#33134)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…nd old toggles (pingdotgg#33131)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…turns (pingdotgg#28047)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… edits (pingdotgg#33143)

The agy CLI rejects the managed runtime's yolo and auto_edit session modes, so Full access and Auto-accept edits threads failed to open. The CLI now stays in default mode and T3 answers its permission requests from the live policy.

Takes over pingdotgg#32875.

Co-authored-by: Peng Yue <padyue@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…s test (pingdotgg#33139)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ease commit (pingdotgg#33149)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rs (pingdotgg#33151)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ad from it (pingdotgg#31754)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…et (pingdotgg#31337)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gg#32180)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: ahalekelly <7078138+ahalekelly@users.noreply.github.com>
Co-authored-by: Tomer Danan <40542472+Dananz@users.noreply.github.com>
Co-authored-by: Dan Sanduleac <dan@sanduleac.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… errors (pingdotgg#33148)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…g#33157)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… servers (pingdotgg#31760)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e secret card (pingdotgg#27748)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ip downloads (pingdotgg#33142)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…h .android overrides (pingdotgg#33173)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge and others added 27 commits November 10, 2026 10:42
…s output (pingdotgg#34002)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Codex image generation now appears as a timeline tool row with prompt and transparency inputs, completion results, failures, and cancellation. Retain inputs on cancellation and give image-only replies a separate message ID so they cannot replace the tool row.

Verified with a real image generation and collapsed/expanded UI captures. check:changed passes, including 152 tests; CI and agentic reviews pass on 86d2045.

Model: GPT 6.1 Sol via the Codex harness.
…a rate limit (pingdotgg#33676)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngs (pingdotgg#33741)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…from a CLIProxyAPI hub (pingdotgg#33800)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…otgg#33820)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
… server (pingdotgg#33587)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…error (pingdotgg#34087)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gg#34073)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@NeilMazumdar
NeilMazumdar force-pushed the feature/submodule-diffs branch from 6f331a0 to c73f7b8 Compare November 10, 2026 23:24
@NeilMazumdar

Copy link
Copy Markdown
Owner Author

Continued upstream as pingdotgg#34105, from the same branch rebased onto current main. The pre-rebase head 6f331a0 is kept as the tag pre-upstream-rebase-6f331a02.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.