Skip to content

Let agents discover and rename tabs in a selected Ace window #43

Description

@iamnbutler

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.

Activity

  1. iamnbutler commented on Oct 4, 2026

    @iamnbutler
    ContributorAuthor

    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.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions