Skip to content

fix(mobile): list Source Control changes with desktop's sections, order and row rules - #34017

Merged
AmoabaKelvin merged 3 commits into
mainfrom
mobile-source-control-status-parity
Oct 27, 2026
Merged

AmoabaKelvin merged 3 commits into
mainfrom
mobile-source-control-status-parity

Conversation

@AmoabaKelvin

@AmoabaKelvin AmoabaKelvin commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator
Files Added Deleted Net
Test 17 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​70 $\color{#cf222e}{\Huge{\mathbf{−}}}$​188 $\color{#cf222e}{\Huge{\mathbf{−}}}$​118
Prod 67 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​4785 $\color{#cf222e}{\Huge{\mathbf{−}}}$​4260 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​525

ELI5

The phone's Source Control list grouped, sorted and labelled changed files by its own rules. Now it uses desktop's: conflicts get their own section, your group order applies, and rows inside a submodule can't be staged or discarded.

What Changed

Each item is from the mobile/desktop parity audit (source-control report).

  • Add card gap and quick-create in worktree dialog #10 Status list.
    • Desktop's listing rules moved to src/shared:
      • source-control-section-order.ts, plus a new groupSourceControlEntries that desktop's file projection also uses now
      • git-status-sort.ts
      • source-control-entry-actions.ts
      • source-control-discard-all-sequence.ts
    • The phone builds its sections from these. Conflicts (unresolved and resolved locally) are pinned in a "Conflicts" section, and the rest follow the user's group order.
    • Stage, Unstage and Discard follow desktop's rules, including no Stage/Discard/Unstage on submodule-internal rows or gitlink-only dirtiness.
    • Conflict rows show their kind ("Both modified"), using the shared CONFLICT_KIND_LABELS.
    • Before, the phone used a fixed Changes/Staged order and split conflicts between sections. It offered Stage on submodule rows and Discard on any non-conflict row.
  • Host: the group order is published. settings.get now carries sourceControlGroupOrder, so paired clients can order the list the way the desktop does. Older hosts omit it, and the phone falls back to desktop's default.
  • Add repo-added notifications #19 Path sort. The phone uses the shared compareFileNames (pinned en with a tie-break) instead of the device locale, in the status list, the branch compare and the review queue.
  • P1: I selected “system” as my appearance, but my terminal side is still dark #18 Review notes. Notes sent from the review screen are now desktop's formatDiffComments alone, without the phone-only "You are reviewing…/After applying fixes" wrapper.
  • P2-xs: we should add a “add new repo” button at the end of the “select repo” dropdown #20 Small copies.
    • Three copies of worktree-id to repo-id parsing now use getRepoIdFromWorktreeId.
    • The status letters (STATUS_LABELS) moved to src/shared/git-status-labels.ts.

Mobile behaviour removed or changed (it now follows desktop):

  • the fixed section order
  • conflicts listed inside Changes/Staged
  • device-locale path order
  • the mobile review-prompt wrapper
  • Stage/Discard/Unstage on submodule rows

Not changed:

Why

Each listing rule now has one copy in src/shared, used by desktop and the phone.

Linked Issue

Part of the mobile/desktop parity audit

Visual Proof

No device captures for this fleet. The change adopts desktop's existing behaviour: section-order / use-file-projection grouping, source-control-status-sort, entry-actions / discard-all-sequence eligibility, conflict-label kinds, file-name-sort, and DiffNotesSendMenu formatting.

Testing

  • Focused mobile tests (source-control, session, components, RPC recordings with re-recorded goldens), and desktop/shared tests for the moved modules and the host settings projection.

  • Mobile typecheck / typecheck:tests, tc:web and tc:node pass, as do check:code-quality:changed and check:react-doctor:changed.

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below

AI Disclosure

Review

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

  • Mixed versions:
    • The new sourceControlGroupOrder projection field is optional to readers; old hosts omit it.
    • Submodule fields are optional in the phone's schema.
  • Folder workspaces: folder workspaces have no git status list.
  • Benchmark: config/scripts/source-control-path-sort-benchmark.mjs now points at the moved comparator.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@AmoabaKelvin
AmoabaKelvin force-pushed the mobile-source-control-status-parity branch from 28bedb8 to 40edf63 Compare October 26, 2026 18:41
@AmoabaKelvin
AmoabaKelvin force-pushed the mobile-source-control-status-parity branch 2 times, most recently from fab1fb2 to 4f12e96 Compare October 27, 2026 01:07
@AmoabaKelvin
AmoabaKelvin marked this pull request as ready for review October 27, 2026 01:08
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: be3deeb6-f0e7-482f-b596-b265bd6f1fb2
Commits

Reviewing files that changed from the base of the PR and between 16fe0f7 and 19bf910.

Files selected for processing: 9
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json
  • mobile/rpc-foundation/pilot-scenarios.json
  • mobile/src/source-control/MobileSourceControlContent.test.tsx
  • mobile/src/source-control/use-mobile-source-control-state.ts
  • src/main/runtime/runtime-store-contract.ts
  • src/renderer/src/components/right-sidebar/source-control/review/create-pr-intent-flow.ts
Files with no reviewable changes: 1
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json

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

Walkthrough

The change consolidates source-control sorting, labels, grouping, action checks, and worktree ID parsing in shared modules. Mobile source-control sections now use configurable group ordering and preserve submodule fields. Mobile review prompts now contain formatted comments only. Renderer imports use shared source-control APIs. Runtime settings expose normalized group order. RPC goldens are regenerated with updated status fields, settlements, outcomes, snapshots, and checkpoint references.

Priority: Normal

Merge Risk: Low · up to 19bf9

Non-English users still see two English merge-queue labels. This is a bounded localization issue that can be addressed as a follow-up.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within survi… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: aligning mobile Source Control sections, ordering, and row rules with desktop.
Description check Passed The description is mostly complete and covers the user-facing changes, implementation, rationale, testing, scope, compatibility, and checklist. It does not provide an actual linked issue and does not …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is mostly complete and covers the user-facing changes, implementation, rationale, testing, scope, compatibility, and checklist. It does not provide an actual linked issue and does not use the exact N/A wording for visual proof, but these gaps do not make the description incomplete overall.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 14 functions across 19 files. (5 skipped: 5 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@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.

Actionable comments posted: 1


Review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d3feff15-73c4-42c8-9430-ad259bff4b36
Commits

Reviewing files that changed from the base of the PR and between 57aa892 and 4f12e96.

Files selected for processing: 251
  • config/scripts/source-control-path-sort-benchmark.mjs
  • mobile/rpc-foundation/goldens/diff-review-snapshot.json
  • mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json
  • mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json
  • mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json
  • mobile/rpc-foundation/goldens/matrix-session.diff-review-base-ref-show.json
  • mobile/rpc-foundation/goldens/matrix-session.diff-review-git.branchcompare-1.json
  • mobile/rpc-foundation/goldens/matrix-session.diff-review-git.status-1.json
  • mobile/rpc-foundation/goldens/matrix-session.diff-review-repo.list-1.json
  • mobile/rpc-foundation/goldens/matrix-session.diff-review-review-show.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.branchcompare-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.status-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-repo.list-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-worktree.show-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json
  • mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json
  • mobile/rpc-foundation/goldens/pr-branch-identity.json
  • mobile/rpc-foundation/goldens/pr-read-surface.json
  • mobile/rpc-foundation/goldens/pr-read-upstream-error.json
  • mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json
  • mobile/rpc-foundation/goldens/pr-sidebar-load.json
  • mobile/rpc-foundation/goldens/review-create-agent-refused.json
  • mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json
  • mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json
  • mobile/rpc-foundation/goldens/sc-create-intent-unlisted-provider.json
  • mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json
  • mobile/rpc-foundation/goldens/sc-prerequisite-publish.json
  • mobile/rpc-foundation/goldens/sc-review-status-normalized.json
  • mobile/rpc-foundation/pilot-scenarios.json
  • mobile/src/components/MobileDiffReviewFileSummary.tsx
  • mobile/src/components/MobilePRSidebar.tsx
  • mobile/src/components/pr-sidebar/MobileLinkPrForm.tsx
  • mobile/src/components/pr-sidebar/PRActionsSection.tsx
  • mobile/src/components/pr-sidebar/PRChecksSection.tsx
  • mobile/src/components/pr-sidebar/PRReviewersSection.tsx
  • mobile/src/components/pr-sidebar/PrSidebarCreateEmptyState.tsx
  • mobile/src/components/pr-sidebar/pr-actions-state.test.ts
  • mobile/src/components/pr-sidebar/pr-actions-state.ts
  • mobile/src/components/pr-sidebar/pr-actions-styles.ts
  • mobile/src/components/pr-sidebar/pr-check-detail-content.ts
  • mobile/src/components/pr-sidebar/pr-checks-presentation.test.ts
  • mobile/src/components/pr-sidebar/pr-checks-presentation.ts
  • mobile/src/session/MobileSessionSheets.tsx
  • mobile/src/session/github-pr-mutation-operations.ts
  • mobile/src/session/github-pr-mutations.ts
  • mobile/src/session/github-pr-read-reply-schema.ts
  • mobile/src/session/github-pr-repo-slug.ts
  • mobile/src/session/github-pr-rpc.ts
  • mobile/src/session/mobile-diff-comments.test.ts
  • mobile/src/session/mobile-diff-comments.ts
  • mobile/src/session/mobile-diff-review-queue.ts
  • mobile/src/session/mobile-existing-agent-launch.ts
  • mobile/src/session/mobile-new-tab-agent-loader.ts
  • mobile/src/session/mobile-pr-sidebar-resolve.test.ts
  • mobile/src/session/mobile-pr-sidebar-resolve.ts
  • mobile/src/session/mobile-pr-sidebar-state.ts
  • mobile/src/session/mobile-session-route-helpers.ts
  • mobile/src/session/pr-action-mutation-contract.ts
  • mobile/src/session/pr-actions-engine.test.ts
  • mobile/src/session/pr-actions-engine.ts
  • mobile/src/session/pr-ai-triage-launch.test.ts
  • mobile/src/session/pr-ai-triage-launch.ts
  • mobile/src/session/pr-ai-triage-prompt.test.ts
  • mobile/src/session/pr-ai-triage-prompt.ts
  • mobile/src/session/pr-comment-actions.test.ts
  • mobile/src/session/pr-comment-actions.ts
  • mobile/src/session/use-mobile-diff-review-send-actions.test.ts
  • mobile/src/session/use-mobile-diff-review-send-actions.ts
  • mobile/src/session/use-mobile-native-chat-readability.ts
  • mobile/src/session/use-mobile-pr-actions.test.ts
  • mobile/src/session/use-mobile-pr-actions.ts
  • mobile/src/session/use-mobile-pr-ai-triage.ts
  • mobile/src/session/use-mobile-pr-sidebar-controller-probe.test.ts
  • mobile/src/session/use-mobile-pr-sidebar-controller.test.ts
  • mobile/src/session/use-mobile-pr-sidebar-controller.ts
  • mobile/src/session/use-mobile-session-accessory-selection.ts
  • mobile/src/session/use-mobile-session-diff-comments.ts
  • mobile/src/source-control/MobileSourceControlContent.test.tsx
  • mobile/src/source-control/MobileSourceControlContent.tsx
  • mobile/src/source-control/MobileSourceControlFileList.tsx
  • mobile/src/source-control/MobileSourceControlFileList.web.test.tsx
  • mobile/src/source-control/MobileSourceControlFileRows.tsx
  • mobile/src/source-control/MobileSourceControlPanel.tsx
  • mobile/src/source-control/git-status-reply-schema.ts
  • mobile/src/source-control/github-pr-link-parse.test.ts
  • mobile/src/source-control/github-pr-link-parse.ts
  • mobile/src/source-control/mobile-branch-base-ref.ts
  • mobile/src/source-control/mobile-branch-compare.ts
  • mobile/src/source-control/mobile-create-pr-action.test.ts
  • mobile/src/source-control/mobile-create-pr-action.ts
  • mobile/src/source-control/mobile-git-mutation-operations.ts
  • mobile/src/source-control/mobile-git-status.test.ts
  • mobile/src/source-control/mobile-git-status.ts
  • mobile/src/source-control/mobile-hosted-review-create-intent-runner.ts
  • mobile/src/source-control/mobile-hosted-review-create-intent.test.ts
  • mobile/src/source-control/mobile-hosted-review-create-intent.ts
  • mobile/src/source-control/mobile-hosted-review-git-preparation.ts
  • mobile/src/source-control/mobile-hosted-review-remote-prerequisite.ts
  • mobile/src/source-control/mobile-hosted-review-service.ts
  • mobile/src/source-control/mobile-path-sort.test.ts
  • mobile/src/source-control/mobile-pr-chip-summary.test.ts
  • mobile/src/source-control/mobile-pr-create.test.ts
  • mobile/src/source-control/mobile-pr-create.ts
  • mobile/src/source-control/mobile-pr-link.test.ts
  • mobile/src/source-control/mobile-pr-link.ts
  • mobile/src/source-control/mobile-source-control-primary-action.test.ts
  • mobile/src/source-control/mobile-source-control-primary-action.ts
  • mobile/src/source-control/mobile-source-control-screen-state.ts
  • mobile/src/source-control/mobile-source-control-sections.ts
  • mobile/src/source-control/mobile-worktree-metadata-operations.ts
  • mobile/src/source-control/source-control-reply-schema.test.ts
  • mobile/src/source-control/source-control-status-retry.test.tsx
  • mobile/src/source-control/use-mobile-create-pr-runner.ts
  • mobile/src/source-control/use-mobile-source-control-create-pr-action.ts
  • mobile/src/source-control/use-mobile-source-control-state.ts
  • mobile/src/source-control/worktree-metadata-reply-schema.ts
  • mobile/src/tasks/agent-launch-request.ts
  • mobile/src/tasks/mobile-tasks-item-detail-content.tsx
  • mobile/src/tasks/mobile-tasks-project-review-panels.tsx
  • mobile/src/tasks/mobile-tasks-repository-presentation.ts
  • mobile/src/test-support/rpc-recording/adapters/hosted-review-mount-adapters.ts
  • mobile/src/test-support/rpc-recording/adapters/pr-sidebar-mount-adapters.ts
  • mobile/src/test-support/rpc-recording/adapters/source-control-mount-adapters.ts
  • mobile/src/test-support/rpc-recording/mutants/operation-mutations.ts
  • mobile/src/test-support/rpc-recording/recording-scenario.ts
  • mobile/src/test-support/rpc-recording/run-recording.ts
  • mobile/src/test-support/rpc-recording/scripted-rpc-transport.ts
  • mobile/src/transport/settings-read-operations.ts
  • mobile/src/transport/use-workspace-client.ts
  • mobile/src/transport/workspace-server.ts
  • mobile/src/worktree/last-visited-worktree-repo.ts
  • src/main/runtime/mobile-rpc-allowlist.test.ts
  • src/main/runtime/runtime-client-settings-shape.ts
  • src/main/runtime/runtime-client-settings-source-control-projection.spec.ts
  • src/main/runtime/runtime-client-settings.ts
  • src/main/runtime/runtime-rpc/runtime-rpc-mobile-method-routing.ts
  • src/main/runtime/runtime-store-contract.ts
  • src/renderer/src/components/editor/CheckRunJobs.tsx
  • src/renderer/src/components/editor/check-details-reading-cache.ts
  • src/renderer/src/components/editor/check-details-reading-owner.ts
  • src/renderer/src/components/editor/check-run-details-fix-context.ts
  • src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-actions.ts
  • src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab.tsx
  • src/renderer/src/components/github-item-dialog/land-pull-request/pr-reviewers-panel.tsx
  • src/renderer/src/components/github-item-dialog/land-pull-request/pr-reviewers-request-actions.ts
  • src/renderer/src/components/github-item-dialog/land-pull-request/pr-reviewers-requested-list.tsx
  • src/renderer/src/components/github-pr-merge-state.test.ts
  • src/renderer/src/components/github-pr-merge-state.ts
  • src/renderer/src/components/pr-checks-fix-prompt.ts
  • src/renderer/src/components/pull-request-page/checks/fix-launch.ts
  • src/renderer/src/components/pull-request-page/checks/tab.tsx
  • src/renderer/src/components/pull-request-page/reviewers/panel.tsx
  • src/renderer/src/components/pull-request-page/reviewers/request-actions.ts
  • src/renderer/src/components/pull-request-page/reviewers/requested-list.tsx
  • src/renderer/src/components/right-sidebar/HostedReviewActions.tsx
  • src/renderer/src/components/right-sidebar/check-job-log-tail.tsx
  • src/renderer/src/components/right-sidebar/checks-panel-content.test.tsx
  • src/renderer/src/components/right-sidebar/checks-panel-review-creation.test.ts
  • src/renderer/src/components/right-sidebar/checks-panel-review-creation.ts
  • src/renderer/src/components/right-sidebar/checks-panel-review-lookup-authority.ts
  • src/renderer/src/components/right-sidebar/checks-panel/active-content.tsx
  • src/renderer/src/components/right-sidebar/checks-panel/check-details-model.ts
  • src/renderer/src/components/right-sidebar/checks-panel/check-run-details.tsx
  • src/renderer/src/components/right-sidebar/checks-panel/checks-list.tsx
  • src/renderer/src/components/right-sidebar/checks-panel/comment-controls.tsx
  • src/renderer/src/components/right-sidebar/checks-panel/comment-row.tsx
  • src/renderer/src/components/right-sidebar/checks-panel/use-checks-panel-check-and-review-actions.tsx
  • src/renderer/src/components/right-sidebar/checks-panel/use-checks-panel-comment-mutations.tsx
  • src/renderer/src/components/right-sidebar/github-pr-stack-merge.test.ts
  • src/renderer/src/components/right-sidebar/github-pr-stack-merge.ts
  • src/renderer/src/components/right-sidebar/source-control-create-pr-intent-flow.test.ts
  • src/renderer/src/components/right-sidebar/source-control-dropdown-items.test.ts
  • src/renderer/src/components/right-sidebar/source-control-tree.ts
  • src/renderer/src/components/right-sidebar/source-control/commit/discard-all-failure-description.test.tsx
  • src/renderer/src/components/right-sidebar/source-control/commit/discard-confirmation.ts
  • src/renderer/src/components/right-sidebar/source-control/commit/discard-dialog.tsx
  • src/renderer/src/components/right-sidebar/source-control/commit/rename-mutation-paths.test.ts
  • src/renderer/src/components/right-sidebar/source-control/commit/source-control-entry-mutation-failures.test.tsx
  • src/renderer/src/components/right-sidebar/source-control/commit/use-bulk-actions-capped-stage.test.tsx
  • src/renderer/src/components/right-sidebar/source-control/commit/use-bulk-actions.ts
  • src/renderer/src/components/right-sidebar/source-control/commit/use-discard-confirmation.ts
  • src/renderer/src/components/right-sidebar/source-control/listing/directory-action-paths.ts
  • src/renderer/src/components/right-sidebar/source-control/listing/section-action-buttons.test.tsx
  • src/renderer/src/components/right-sidebar/source-control/listing/section-file-list.tsx
  • src/renderer/src/components/right-sidebar/source-control/listing/submodule-expansion.ts
  • src/renderer/src/components/right-sidebar/source-control/listing/tree-directory-rows.tsx
  • src/renderer/src/components/right-sidebar/source-control/listing/uncommitted-entry-row.tsx
  • src/renderer/src/components/right-sidebar/source-control/listing/uncommitted-sections.tsx
  • src/renderer/src/components/right-sidebar/source-control/listing/use-file-projection.ts
  • src/renderer/src/components/right-sidebar/source-control/panel/use-panel-view-state.ts
  • src/renderer/src/components/right-sidebar/source-control/review/create-pr-intent-flow.ts
  • src/renderer/src/components/right-sidebar/source-control/review/create-pr-intent-review-step.ts
  • src/renderer/src/components/right-sidebar/source-control/review/use-action-model.ts
  • src/renderer/src/components/right-sidebar/source-control/review/use-linked-reviews.ts
  • src/renderer/src/components/right-sidebar/status-display.ts
  • src/renderer/src/components/task-page/github/Avatars.tsx
  • src/renderer/src/components/task-page/github/ReviewCell.tsx
  • src/renderer/src/components/task-page/github/task-page-github-reviewer-actions.ts
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/store/github/pull-request-actions.ts
  • src/renderer/src/store/github/pull-request-execution.ts
  • src/renderer/src/store/github/refresh-event-actions.ts
  • src/renderer/src/store/github/worktree-refresh.ts
  • src/renderer/src/store/slices/github-branch-mismatched-linked-pr.test.ts
  • src/shared/git-status-labels.ts
  • src/shared/git-status-sort.test.ts
  • src/shared/git-status-sort.ts
  • src/shared/github/linked-pr-staleness.ts
  • src/shared/github/pr-comment-mutability.test.ts
  • src/shared/github/pr-comment-mutability.ts
  • src/shared/github/pr-reviewer-display.test.ts
  • src/shared/github/pr-reviewer-display.ts
  • src/shared/github/pull-request-merge-state.ts
  • src/shared/github/pull-request-stack-merge.ts
  • src/shared/hosted-review-create-confirmation.test.ts
  • src/shared/hosted-review-create-confirmation.ts
  • src/shared/hosted-review-push-target.test.ts
  • src/shared/hosted-review-push-target.ts
  • src/shared/pr-check-status-label.ts
  • src/shared/pr-check-step-status.test.ts
  • src/shared/pr-check-step-status.ts
  • src/shared/pr-checks-fix-prompt.test.ts
  • src/shared/pr-checks-fix-prompt.ts
  • src/shared/source-control-create-review-intent.test.ts
  • src/shared/source-control-create-review-intent.ts
  • src/shared/source-control-discard-all-sequence.test.ts
  • src/shared/source-control-discard-all-sequence.ts
  • src/shared/source-control-entry-actions.test.ts
  • src/shared/source-control-entry-actions.ts
  • src/shared/source-control-runtime-capabilities.ts
  • src/shared/source-control-section-order.test.ts
  • src/shared/source-control-section-order.ts
Files with no reviewable changes: 11
  • mobile/src/tasks/mobile-tasks-repository-presentation.ts
  • mobile/src/session/mobile-session-route-helpers.ts
  • src/renderer/src/components/right-sidebar/checks-panel-content.test.tsx
  • mobile/src/session/mobile-diff-comments.ts
  • mobile/src/session/mobile-diff-comments.test.ts
  • mobile/src/session/pr-comment-actions.test.ts
  • src/renderer/src/components/right-sidebar/checks-panel/comment-controls.tsx
  • src/renderer/src/components/right-sidebar/source-control-create-pr-intent-flow.test.ts
  • src/renderer/src/components/right-sidebar/checks-panel-review-creation.test.ts
  • mobile/src/components/pr-sidebar/pr-checks-presentation.ts
  • src/renderer/src/store/github/worktree-refresh.ts

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

case 'merge_queue':
case 'merge_queue_auto_merge_on':
return {
label: kind === 'merge_queue_auto_merge_on' ? 'Auto-merge on' : 'Merge when ready',

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.

Minor · Maintainability & Code Quality · Quick win

Supported by static analysis

Script executed:

git show 8d32eb0c3b0cdfd8692fdc104e9700fbb28a9887:src/renderer/src/components/github-pr-merge-state.ts | rg -n -C4 'Auto-merge on|Merge when ready'
sed -n '105,135p' src/renderer/src/components/github-pr-merge-state.ts
rg -n 'localiz|translat|hardcoded.*string' AGENTS.md src/renderer/AGENTS.md src/renderer/src/AGENTS.md config/scripts/verify-localization-extraction.mjs 2>/dev/null | head -100

Repository: stablyai/orca

Length of output: 1997


Script executed:

set -o pipefail
base=8d32eb0c3b0cdfd8692fdc104e9700fbb28a9887
head=4f12e9657d96df5e1fcee4bdde2891e6fc4b33c7

printf '%s\n' '--- component diff ---'
git diff --unified=12 "$base" "$head" -- src/renderer/src/components/github-pr-merge-state.ts

printf '%s\n' '--- locale and localization-related diff ---'
git diff --stat "$base" "$head" -- 'src/renderer/src/i18n/**' '*localiz*' 'docs/**' 'AGENTS.md'
git diff --unified=4 "$base" "$head" -- src/renderer/src/i18n/locales/en.json src/renderer/src/i18n/locales/es.json src/renderer/src/i18n/locales/ja.json src/renderer/src/i18n/locales/ko.json src/renderer/src/i18n/locales/zh.json

printf '%s\n' '--- checked-in localization guidance and relevant configuration ---'
rg -n -i --glob '!node_modules/**' --glob '!dist/**' -e 'locali[sz]ation' -e 'translate\(' -e 'catalog' -e 'English.fallback' -e 'sync:localization' -e 'bootstrap:locale' -e 'locale-english-regression' \
  AGENTS.md src/renderer docs package.json pnpm-workspace.yaml config scripts 2>/dev/null | head -240

printf '%s\n' '--- relevant catalog entries at head and base ---'
for rev in "$base" "$head"; do
  echo "REV $rev"
  git show "$rev:src/renderer/src/i18n/locales/en.json" | rg -n -C2 -F -e '"Merge when ready"' -e '"Auto-merge on"' || true
  git show "$rev:src/renderer/src/i18n/locales/es.json" | rg -n -C1 -F -e '"Merge when ready"' -e '"Auto-merge on"' || true
done

printf '%s\n' '--- current translation call convention near component ---'
sed -n '1,75p' src/renderer/src/components/github-pr-merge-state.ts
sed -n '112,138p' src/renderer/src/components/github-pr-merge-state.ts

Repository: stablyai/orca

Length of output: 41647


Script executed:

printf '%s\n' '--- localization audit guidance ---'
nl -ba config/localization-audit.md | sed -n '1,125p'

printf '%s\n' '--- localization audit implementation references ---'
rg -n -C3 -F -e 'allowlist' -e 'literal' -e 'translate' -e 'deferred' -e 'localized' config/scripts/audit-localization-coverage.mjs config/localization-coverage-allowlist.json config/scripts/verify-localization-catalog.mjs config/scripts/verify-localization-catalogs.mjs

Repository: stablyai/orca

Length of output: 15281


Script executed:

rg -n -C5 -e 'sha1|createHash|hash|fallback|key' config/scripts/verify-localization-catalog.mjs config/scripts/generate-runtime-required-english-catalog.mjs config/i18next.config.ts

Repository: stablyai/orca

Length of output: 37990


Route both merge-queue labels through localization.

The raw labels predate this PR, so this is not a regression. The checked-in localization contract still requires user-facing renderer strings to use the localization layer. Replace both literals with translate(...) calls and add the English catalog entry for "Auto-merge on". Use a key consistent with this component’s existing hash-style keys; autoMergeOn does not match that convention.

@AmoabaKelvin
AmoabaKelvin force-pushed the mobile-source-control-status-parity branch 2 times, most recently from 16fe0f7 to 430935a Compare October 27, 2026 02:58
…t and row rules

Conflicts get their own section in the user's group order, submodule rows lose stage and
discard like desktop, paths sort with the shared collator, and review notes go out as desktop formats them.
…module rows read-only

The host's paired settings projection now carries sourceControlGroupOrder, the
normalized status projection keeps submodule metadata, and conflict rows reuse the
shared conflict-kind labels.
…sktop

Desktop and mobile group rows through one shared helper, mobile's unstage button
follows desktop's rule, and the group order resets when the host changes.
@AmoabaKelvin
AmoabaKelvin force-pushed the mobile-source-control-status-parity branch from 430935a to 19bf910 Compare October 27, 2026 03:22
@AmoabaKelvin
AmoabaKelvin merged commit 6c2423d into main Oct 27, 2026
43 checks passed
audichuang added a commit to audichuang/orca that referenced this pull request Oct 28, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Oct 29, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Oct 30, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 2, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 3, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 4, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 5, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 5, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 6, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 7, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
audichuang added a commit to audichuang/orca that referenced this pull request Nov 8, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Upstream stablyai#34017 moved listing/section-order.ts to src/shared/source-control-section-order.ts.
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.

1 participant