You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Let agents discover and rename tabs in a selected Ace window #43
During dogfooding, terminal tabs can be renamed manually, but agents and external harnesses have no supported API to discover and rename them. The current Rename action only updates client-local layout metadata; the host terminal API exposes open/input/resize/close, and shell title escape sequences do not update the tab label.
Add a supported way to list tabs and rename one in an explicitly selected, connected Ace window. Tabs are personal views, so a rename must affect that client layout rather than rename the channel or change every participant's tabs. Use the existing UI rename behavior and persistence, including the current restriction on renaming the Chat tab. Return clear failures for disconnected windows or closed tabs.
The first implementation should be a small, reviewable API/CLI change usable from an Ace agent's shell tool and by an external harness. It should not depend on native UI automation or editing browser storage directly.
Found during dogfooding; retained as standalone tab-control work. Related: #45.
Implemented in #46 (based on feat/github-cache; not merged or released).
The new ace tabs --json and ace tab rename <window> <channel> <tab> <name> commands use the authenticated local gateway. Rename requests require all three IDs, wait for the client to render and save, and reject stale targets, closed tabs/windows, and Chat-tab renaming. Empty names reset the default.
Validation passed with real source hosts and browser clients: two-window live isolation, unchanged tab selection, trim/reset, reload persistence, channel switching, close/dashboard cleanup, and host restart recovery. A real Anthropic Ace agent discovered the selected window, renamed its terminal through the shell tool, and read back both windows. Rejected invalid and unauthenticated requests; real Tailscale browser and peer connections authenticated as the same owner were denied local window operations. Type checks, formatting/lint (zero warnings), and app build passed. React Doctor has one reviewed flushSync performance warning; the synchronous render ensures the returned state has been committed before acknowledgment.
Filed dogfooding findings under #5: collapsed sidebar accessibility in #44, and existing shared-profile navigation/layout persistence conflicts in #45. The API changes one live window, but saved layouts currently share a channel/profile key and later writes from another window can replace saved labels. This limitation is documented; #46 does not introduce a new layout store or durable data format.
Activity
iamnbutler commentedon Oct 4, 2026
Implemented in #46 (based on
feat/github-cache; not merged or released).The new
ace tabs --jsonandace tab rename <window> <channel> <tab> <name>commands use the authenticated local gateway. Rename requests require all three IDs, wait for the client to render and save, and reject stale targets, closed tabs/windows, and Chat-tab renaming. Empty names reset the default.Validation passed with real source hosts and browser clients: two-window live isolation, unchanged tab selection, trim/reset, reload persistence, channel switching, close/dashboard cleanup, and host restart recovery. A real Anthropic Ace agent discovered the selected window, renamed its terminal through the shell tool, and read back both windows. Rejected invalid and unauthenticated requests; real Tailscale browser and peer connections authenticated as the same owner were denied local window operations. Type checks, formatting/lint (zero warnings), and app build passed. React Doctor has one reviewed
flushSyncperformance warning; the synchronous render ensures the returned state has been committed before acknowledgment.Filed dogfooding findings under #5: collapsed sidebar accessibility in #44, and existing shared-profile navigation/layout persistence conflicts in #45. The API changes one live window, but saved layouts currently share a channel/profile key and later writes from another window can replace saved labels. This limitation is documented; #46 does not introduce a new layout store or durable data format.