githubnext/ace2Public

Ace: a collaborative coding environment on the team's own machines

feat(app): archive inactive channels from the channels header menu #124

Mergediamnbutlermerged 1 commit intomainfromrefs/pull/124/head
  1. IA

    Right-clicking the sidebar's **Channels** header opens a context menu with **Archive inactive**. It archives every unarchived channel in the current project on this host that has no work in progress, then shows how many it archived.

    - New owner-only host op `archive-inactive { project }`. A dormant channel has no worker, so it counts as inactive. Workers retire only once idle. For a running or hosted channel, the host asks the worker for `info` and keeps the channel if any chat is busy. Archiving uses the existing `archive`, which kills the worker, and closes the channel's terminals. - `SessionSidebar` takes an optional `onArchiveInactive` prop. The "mine" group header is a `ContextMenu` trigger that stays disabled when the prop is absent. The app passes it only for a local, connected project.

    Smoke-tested against a separate `ace serve` (own ACE_HOME and port) with real channels: a dormant one, an idle running one, one busy running `sleep` through claude-haiku-4-5, and one in another project. The op and the UI flow (right-click → Archive inactive) archived only the dormant and idle channels. The busy channel and the other project's channel were not touched. `bun types` and `bun run ci` pass.

    ### Built in Ace

    Built in an Ace channel. One exception: I drove the UI check with Playwright's headless Chromium. Ace's desktop inspection of the Chrome window failed with "inconsistent response evidence: window-context window title", so it couldn't right-click the header (#8).

  2. iamnbutlerhead-ref-force-pushed c76ddd25846blast month on GitHub

  3. iamnbutlermerged 6e925f3e5ac0last month on GitHub

  4. iamnbutlerclosedlast month on GitHub

  5. iamnbutlerreferenced this in chore(desktop): release canary 0.0.14 #130last month on GitHub