Repository navigation
fix(app): tell apart projects whose folders share a name - #398
Merged
Merged
Conversation
Projects that would show the same label now add the fewest trailing parent folders that distinguish them (a GitHub project adds its owner), computed once over the full project list, and the picker shows each checkout's full path on hover. The picker, sidebar header, All Projects sections, palette groups, dashboard and setup dialogs all read the same label. Why: apps/app/src/projects.ts#function disambiguate | labels are computed over the full merged project list so every surface shows the same distinct name
This was referenced Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #395.
Projects that would show the same label now get the fewest trailing parent folders that tell them apart, VS Code-style (
ace2 — code,ace2 — foo,ace2 — bar). A GitHub project adds its owner instead, because its checkout isn't its identity. A unique name stays the bare folder name.projects()computes the label once over the full merged project list (AppProject.label), after Git worktrees have joined their main checkout and GitHub checkouts have merged by repository, so only distinct projects can collide. Every surface reads that label: the project picker (rows and trigger), the sidebar header, All Projects sections and teammates' sections, Cmd+K palette groups and "New Channel in …", the dashboard, the GitHub sidebars, and the setup and init prompts. The picker shows each checkout's full path on hover (path on hostfor another host's checkout).Grouping worktrees under their repository is still an open design question and isn't part of this change.
Smoke-tested with a source
ace serve --loopbackhost (ownACE_HOME, stubtailscale) that had projects in…/code/ace2,…/wt/foo/ace2,…/wt/bar/ace2and…/other/solo. In headless Chromium, the picker, All Projects sidebar and palette showedace2 — code/ace2 — foo/ace2 — bar/solo, each with its full path as the hover title.Built in Ace
No — built with Claude Code outside Ace by an overnight issue watcher, because this Mac's Ace Canary is a participant in the running two-person study (#218); dogfooding gap tracked in #5.