Skip to content

Resume dialog: show workspace names, not internal ids, while workspaces load - #33038

Merged
brennanb2025 merged 6 commits into
mainfrom
brennanb2025/resume-dialog-workspace-names
Oct 24, 2026
Merged

brennanb2025 merged 6 commits into
mainfrom
brennanb2025/resume-dialog-workspace-names

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​94 $\color{#cf222e}{\Huge{\mathbf{−}}}$​1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​93
Prod 2 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​70 $\color{#cf222e}{\Huge{\mathbf{−}}}$​10 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​60

Problem

After a restart, the "Resuming N chats" dialog listed every workspace by its internal id, e.g. 45d53ca8-5d4d-…::/Users/…/orca/workspaces/orca/blobfish-2, instead of its name, and with no project heading above them. It stayed like that for nearly a minute.

Why: the dialog opens and starts resuming as soon as the app comes up, but the full workspace list loads late in startup on purpose (after remote hosts and other startup work). Until it arrives the dialog can't look up any workspace, and its fallback was the raw id.

Change

While a workspace is not known yet or was deleted, the dialog names it by its folder, using the existing ID-to-folder fallback. If unknown workspaces on the same machine share that folder name, their rows also show their parent paths in the existing secondary text slot. Long paths retain the distinguishing final directory. Colliding unknown rows also include that parent path in their accessible control names. Unique unknown names show no path, and known workspaces retain their sidebar name and branch. Folder IDs that contain no path retain their existing fallback.

The original workspace and session IDs still select the action targets. Once the workspace list loads, rows use the configured names and branches as before, and obsolete collision details disappear.

Not in this PR: the project heading still appears only once the workspace list loads. Loading the resumed chats' workspaces earlier would change startup ordering, which remains separate.

Plan

Derive fallback name and optional parent detail together from the existing unknown workspace groups, once per machine's unplaced group. Count those names once and use constant-time row lookups. Reuse the existing ID parser, path helpers and path-elision component. No saved fields, catalog fetch, startup ordering, action gate or known-workspace display changes.

Validation

NativeChatResumeOnRestartGroups.test.tsx covers a unique missing workspace and one collision case with long parent paths, known and opaque fallback controls, original session selection, catalog hydration, and N/10N bounds on the added processing. Existing selection and path-helper coverage remains relevant. This worktree has no dependencies; CI is the renderer-test, lint and typecheck execution gate.

The changed flow is dialog UI/copy. One branch-only screenshot run passed on the M4Air at 11102e38d381ce7046c6d22502a8ad5fee449b7f, using fixture candidates in the real dialog and no agents. The screenshot confirms readable folder names, distinct parent paths for a long shared-prefix collision, and no raw IDs; selection was checked too. This does not change agent execution or restart lifecycle behavior.

Final CI passed on 10c44502844943067b04ca26e6bea1ea2b3cb6ef: https://github.com/stablyai/orca/actions/runs/40075625094. It includes static analysis, typechecking, packaging and all 19 tests in NativeChatResumeOnRestartGroups.test.tsx. The collision case also checks distinct checkbox/disclosure names, original selection targets and hydration cleanup. The screenshot remains valid across the later main merge and accessibility-only commit because visible rendering is unchanged.

Review path: full

Round 1 escalated the proposed light path because the dialog's history includes a related raw-identity display fix and the initial basename-only fallback lost the distinction between different paths ending in the same folder name. The correction retains that distinction in the existing row surface. The full review loop includes the reference comparison, dedicated performance check, CI and the UI screenshot before readiness.

…e workspaces load

On restart the resume dialog opens before the full workspace list loads, so
every row it could not look up showed its raw repo-qualified id. Fall back to
the folder name the id carries, as the status bar and Automations already do.
@brennanb2025
brennanb2025 marked this pull request as ready for review October 24, 2026 05:01
@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

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

Use the following commands to manage reviews:

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

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review.

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: c7994eb2-7b29-462b-bb5d-16b5a63ee33b
Commits

Reviewing files that changed from the base of the PR and between ebca5d4 and 10c4450.

Files selected for processing: 3
  • src/renderer/src/components/NativeChatResumeOnRestartGroups.test.tsx
  • src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx
  • src/renderer/src/components/native-chat-resume-workspace-display.ts

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

Walkthrough

When a worktree is unavailable or has no display name, WorkspaceNode uses a fallback name derived from the workspace ID before falling back to the full ID. For unassigned workspaces, the component derives a parent path and displays it when fallback names collide within the group. Tests cover fallback labels, collision details, selection behavior, bounded lookups, and naming after hydration.

Priority: Low

Merge Risk: Minimal · up to 10c44

Colliding unknown workspaces now have distinct accessible control names. No actionable merge-blocking issue remains from this review.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 3 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check Warning The description clearly explains the problem, user-visible behavior, implementation plan, scope, testing, performance bounds, and visual validation. However, it does not provide the required linked is… Add an actual issue reference under Fixes #... or provide the required maintainer exception. Complete the missing template sections, mark the applicable Testing and Checklist items, and state N/A where a section does not apply.
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the primary change: showing workspace names instead of internal IDs in the resume dialog while workspace data loads.
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 clearly explains the problem, user-visible behavior, implementation plan, scope, testing, performance bounds, and visual validation. However, it does not provide the required linked issue, and several template sections are missing or incomplete, including ELI5, explicit Why, Testing checklist status, AI Disclosure, Review, Agent skill upstream boundary, Notes, and Checklist.

Resolution

Add an actual issue reference under Fixes #... or provide the required maintainer exception. Complete the missing template sections, mark the applicable Testing and Checklist items, and state N/A where a section does not apply.

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: 3


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: c4152ce1-c379-44b1-bef3-82c38be76f90
Commits

Reviewing files that changed from the base of the PR and between 2d33f7d and fc7727a.

Files selected for processing: 2
  • src/renderer/src/components/NativeChatResumeOnRestartGroups.test.tsx
  • src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx

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

Comment thread src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx Outdated
Comment thread src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx Outdated
@brennanb2025

brennanb2025 commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor Author

After a restart, the resume dialog could display internal workspace IDs because it appeared before the workspace catalog loaded. Unknown git workspaces now show their folder names immediately. When two unknown workspaces on the same machine share a folder name, their parent paths distinguish both the visible rows and their accessible control names. Known names and branches stay as before.

Review caught and fixed the initial ambiguity between different folders named main, including the explicit checkbox and disclosure names. Labels remain separate from the original workspace and session IDs used by actions. Catalog arrival removes obsolete collision detail. No review findings or deferred PR issues remain; all review threads are resolved.

Correctness and final reference/readiness checks are complete at 10c44502844943067b04ca26e6bea1ea2b3cb6ef. Final CI passed on that head, including static analysis, typechecking, packaging and all 19 tests in NativeChatResumeOnRestartGroups.test.tsx. The existing collision case covers distinct accessible names, original selection targets, hydration cleanup, known/unique/opaque controls and N/10N operation bounds. The added naming work introduces no population scan.

For Brennan's review:

resume-workspace-fallback.png

One branch-only screenshot/selection run passed on the M4Air at 11102e38d381ce7046c6d22502a8ad5fee449b7f. I inspected the PNG: the unique folder has no secondary path; both main rows have distinct readable parent paths. Selection changed from 3 to 2 chats and back. This used fixture candidates in the real dialog, with no agents or restart run. The copy stopped gracefully and real config hashes were unchanged.

Since that capture, main was merged as ebca5d463fe9115ad8831f4745c631b32e2890fb with no conflicts or PR-file changes. Commit 10c44502844943067b04ca26e6bea1ea2b3cb6ef then changed only accessibility control names in this tests-row flow and extended disambiguates only colliding unknown folders with linear display work on render in NativeChatResumeOnRestartGroups.test.tsx; that test passed in final CI. Visible rendering is unchanged, so the screenshot is retained.

Project headings still wait for the existing workspace load; startup ordering remains outside this PR.

@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: 4af007f2-aab7-43f1-b64d-18395f5622ae
Commits

Reviewing files that changed from the base of the PR and between 5e4e212 and ebca5d4.

Files selected for processing: 3
  • src/renderer/src/components/NativeChatResumeOnRestartGroups.test.tsx
  • src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx
  • src/renderer/src/components/native-chat-resume-workspace-display.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.

Comment thread src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx Outdated
@brennanb2025
brennanb2025 merged commit 04f7ed2 into main Oct 24, 2026
33 checks passed
@brennanb2025
brennanb2025 deleted the brennanb2025/resume-dialog-workspace-names branch October 24, 2026 08:23
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