# 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. - **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. - **Loading states**: opening a dormant channel shows an empty timeline while its worker starts. - **Run summaries**: a stopped run shows its aborted tool call but no "Stopped" line, and the timeline overstated a 3-second run as "Worked for 1 minute". - **Diff freshness**: a patch reloads only when a file's line counts change; an edit that keeps them shows the old patch until reopened. Add a per-file version to `changes`. - **Teammates' terminals**: terminals are owner-only and don't reach peers' or hosted channels' workspaces through the gateway. - **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 Updates settings and an upgrade on another Mac. Add the application icon. Signed ZIP and hardened-runtime DMG upgrades resumed real model work in the isolated local check. The updater, loopback-only 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.