# TODO The single tracker for Ace. No GitHub issues: add, reorder, and remove items here, in the same commit as the work when possible. Order within a section is priority. ## Before dogfooding Dogfooding means everyone who works on Ace does all Ace development in Ace. If Ace ships a surface (channels, diffs, terminals), use Ace's. When something forces another tool, the PR says so (see [the PR template](.github/pull_request_template.md)) and the gap goes here. - **Rebuild Ace from Ace.** Connect the signed release workflow to Ace so development agents can build and publish updates. The updater lane used Codex's local tools because Ace does not yet expose packaging or native app inspection. Keep the same Apple signing identity for installed development builds; ad-hoc signatures can leave macOS rejecting the updated helper. - **Native UI inspection from a channel.** Exercise the desktop window and macOS dialogs while developing Ace. The desktop lane used Codex's computer-use tools because Ace's channel tools cannot inspect or operate native UI yet. - **Diff tab** for the selected chat's lane. - **Images in the composer.** pi accepts image content; the app doesn't send it. - **Terminals** per channel, opened in a chat's lane. - **Durable data.** Settle where channel data lives, add backup or export, and from the first dogfood channel on, never break existing channels without a migration. - **Two machines on the tailnet** with the dogfooding team. The old repo's equivalent worked; confirm this one does. ## During dogfooding Driven by what the team hits. Known so far: - **Steer a busy agent**: send while a run is active. - **Notify when an agent finishes.** - **Token and cost display.** - **Hosted channels**: create them from the app; let them message other channels; let browsers reach them, which needs per-person sign-in rather than the hosts' shared secret. - **Directory freshness**: hosts re-read every 30 seconds, so a new channel can take that long to appear on other hosts. Push changes instead of polling if that matters. - **Projects across hosts**: identify a project by its repository, not a local path. - **Previews**: on a local host this is mostly running the app; open a lane's dev server from the channel. - **Lobbies**: presence, notifications, channel lifecycle. ## Release - **First desktop release.** Supply the Apple certificate, notarization API key, Sparkle key, and public R2 download domain described in [updates](docs/updates.md); run the notarized canary workflow and verify an upgrade on another Mac. Add the application icon. The signed updater, helper handoff, resume receipts, and release/publish scripts are implemented. - **Third-party notices** for desktop builds: Bun's LGPL components, Electrobun binaries, Shiki grammars, and the provenance of `packages/ui`'s WebGPU shader and dither code. - **Review the public tree** for internal material and run a secret scan before publishing.