Repository navigation
[Meta] Dogfood as a team and ship the Universe story #218
Copy link
Copy link
Closed
2 / 42 of 4 issues completedDescription
Ace ships at Universe in about 2.5 weeks (from October 13). This week the team dogfoods Ace together. After that, core systems freeze and the work is packaging: making the story obvious to someone seeing Ace for the first time. Native desktop tools are done for now; the engine lives in githubnext/desktop-tools.
Ways of working
- Local channels. Channels run on your machine; teammates on the tailnet see and join them through their own host. This works today.
- Verify Ace with two machines on the tailnet #10: two people, two Macs (verified by the October 14–15 study, 0.0.33–0.0.46). This also covers project-identity acceptance from Verify repository-based project identity in the native app and across two hosts #15.
- Make stale worker.pid reclaim atomic so two workers cannot own a channel #166: atomic worker ownership, to protect channel data.
- Hosted channels. The channel lives in a cell the team deploys; its tools run on a workspace host that dials out. This works from the CLI and the Move to menu.
- Verify a deployed hosted channel with a local workspace #176: deployed pilot on a second machine with a teammate.
- Create hosted channels from the new-channel picker #177: create hosted channels in the app. For the demo, creating locally and then using Move to is acceptable.
- Back up and restore hosted channels #178: documented recovery for hosted channel data.
- Hosted compute (speculative). Tools run in team-deployed cloud compute instead of on a laptop. Nothing is built; this is a story for the talk, not a ship gate.
This week: dogfood
Do all Ace work in Ace and record escapes in each PR's Built in Ace section (#5). Fix what blocks the team:
- Archive inactive archives every idle channel, not only those shown as Inactive #164: Archive inactive archives channels people expect to keep.
- Opening a non-Git folder adds a project that cannot start channels #162: a non-Git folder adds a dead project.
- OpenAI rejects desktop_clipboard_write top-level union schema on gpt-4.1-mini #192: OpenAI rejects the tool list.
- Let native agents inspect image files by path #51: agents can't read screenshots by path.
- Desktop tools unavailable when a source CLI starts a worker in an installed app's data directory #128: desktop tools are missing for source-CLI workers. (fix(host): find the desktop client the data directory's app publishes #306)
- Keep literal braces in timeline message text #94, Exclude trailing punctuation from linkified URLs in the timeline #95, Show mixed or multi-file diff tool output as text instead of a blank "Invalid or empty patch" block #102: messages lose braces, links absorb punctuation, and diff output renders blank.
Two-person study findings (October 14–15)
- App asks hosts for the repository of projects they don't know #268: app asks hosts for repositories of projects they don't know (fix(app): ask only reachable hosts for sidebar projects' repositories #286).
- Open a timeline image at full size #270: open a timeline image at full size (fix(ui): open timeline images at full size #293).
- Turn typed Markdown list and code markers into formatting in the composer #271: typed Markdown list and code markers format in the composer (feat(ui): turn typed Markdown list and inline code markers into formatting #291).
- Keep a channel's composer mode and unsent model choice across relaunch #273: composer mode and unsent model pick survive relaunch (fix(app): keep a channel's composer mode and unsent model pick across relaunch #284).
- Diff: separate a lane's committed changes from untracked files #275: Diff separates committed, uncommitted and untracked changes (feat(app): separate a lane's committed changes from untracked files in the Diff #295, sidebar fix(app): total the details sidebar's changes per Diff group #301).
- Ace Helper restart closes the details sidebar and collapses expanded tool calls #287: a Helper restart keeps the details sidebar and expanded tool calls (fix(app): keep the open chat's view and details sidebar mounted across a host reconnect #298).
- Missing-key error says "Configure anthropic" instead of naming the missing API key #289: missing-key error names the provider's API key (fix(channel): name the provider's missing API key and point to Provider settings #296).
- Chat details show the model but not the reasoning effort #290: chat details show reasoning effort beside the model (fix(app): show the chat's reasoning effort beside its model in details #297).
- Disabled Send button still looks enabled (green) #292: disabled Send looks disabled (fix(ui): give a disabled composer submit button a muted look #299).
- Worker restart shows only "Loading chat…"; the interruption never names the cause #285: say the channel is restarting and attribute interrupted tools to it (fix(app): say the channel is restarting and attribute interrupted tools to the restart #302).
- Agent handoff messages show as a plain
agent, not the channel that sent them #288: agent handoff messages name and link the source channel (fix(app): name and link the channel that sent an agent handoff #300). - Deleting a channel doesn't ask for confirmation #307: confirm before deleting a channel (fix(app): confirm before deleting a channel #312).
- In-app update failed to start the installer once, then left Ace Helper stopped #329: updater failure and a falsely "Stopped" Helper (fix(desktop): tell a busy Ace Helper from a stopped one, and say an aborted update changed nothing #342); follow-ups Host blocks its event loop on synchronous git and tailscale calls #343 (fix(host): run request-path git off the gateway's event loop #346) and Helper that misses the login-shell timeout runs without the user's PATH for its whole life #344 (fix(host): retry a failed login-shell load in the background and show it in Settings #345).
- Desktop app can't open a second window #330: desktop New Window (feat(desktop): open new windows with File → New Window (Cmd+N) #341).
- Agent can't list or rename tabs unless desktop tools are on #331: agents list and rename tabs without desktop tools (feat(channel): let agents list and rename tabs without desktop tools #340).
- All Projects doesn't show whose channel a row is, and switches to an unrelated channel #332: All Projects shows ownership and keeps the selection (fix(app): show teammates' channels by owner in All Projects and keep the open channel #339).
- Image preview's right-click shows the native WebKit menu #333: Ace's menu inside the image preview (fix(ui): use Ace's image menu inside the full-size preview #338).
- Moving a channel hangs on "The channel is moving" while Ace Helper waits for keychain access #347: a move reads credentials before fencing and says when it waits for the keychain (fix(host): read move credentials before fencing the channel, and report keychain waits #353, fix(host): point a missing ACE_SECRET at Settings #354).
- Set up a team directory from the desktop app #252: join a team directory from Settings (feat(host): join the team directory and save its secret from Settings #350).
- Nothing in the app shows that a channel is hosted #351: show that a channel is hosted (feat(app): show where a hosted channel runs and what waits for its workspace #357).
- A teammate's name and avatar fall back to their email while their Mac is unreachable #355: keep a teammate's name and avatar while unreachable (fix(host): keep a teammate's GitHub name while their host is unreachable #358).
- Team directory sync errors aren't shown; Settings stays on "Waiting for the first sync…" #356: show directory sync errors and URL in Settings (fix(host): show the team directory's last sync error and sync on Refresh #359).
- Settings waits on a keychain prompt when it reads diagnostics #360: Settings never waits on a keychain prompt (fix(host): answer Settings diagnostics without waiting on a keychain prompt #367); providers too (Settings → Providers waits on keychain prompts when it reads provider keys #368, fix(host): answer Settings providers without waiting on a keychain prompt #370).
- Offline channels show only an unexplained gray dot #361: explain offline channels (fix(app): say why an offline channel can't open #364, fix(app): skip the composer's model lookup while a channel is offline #366).
- Open chat stays on "Disconnected from the host" after Ace Helper recovers #362: reconnect an open chat once Ace Helper recovers (fix(app): say when Ace Helper isn't responding and re-watch a chat a relay dropped #371).
- CLI says "No channel <name>" for owner-only commands on a teammate's channel #365: name the owner and host when a teammate runs an owner-only command;
ace watchexits on SIGINT in the background (fix(host): name a teammate channel's owner when refusing owner-only commands #369). - Stop silently drops queued messages #279: Stop drops queued messages (needs a decision).
- Ship the ace CLI with the desktop app #277: ship the
aceCLI with the desktop app.
Next: packaging and UX
- Start new channels with collaborator agent invocation off #214: collaborators can't invoke agents by default. Unshared default shipped in feat: start new channels unshared and state what sharing grants #243; the
desktopdefault is still open. - Teach how Ace works and what sharing exposes on first run #215: teach how Ace works and what sharing exposes.
- Notify participants when an agent finishes #12: notify when an agent finishes, fails, or waits.
- Show live tool progress in the channel #54 (live tool output, feat(channel): show live tool progress in the running tool call #308), then Idea: Show a live, plain-language account of agent progress, outcomes, and blockers #99: show live progress in plain language.
- Show typing and participant presence in chats #35: presence and typing.
- Let agents ask participants questions in the chat #21: agents ask participants questions.
Release
- Publish the first stable desktop release #217: first stable release. Gates: Move desktop downloads to a custom domain #40 domain, Add third-party notices to desktop builds #41 notices, Complete the source review and secret scan of the public repository #42 secret scan, Verify a published desktop upgrade on another Mac #39 two-Mac upgrade.
- Rename the repository from
githubnext/ace2togithubnext/acebefore release, and update links, the updater feed, and local remotes.
Dev tool cleanup
These are short-term development tools and internal operations details. They go away before Universe.
- Remove Agentation (feat(app): add keyboard-controlled Agentation feedback #209) from shipped builds. Its PolyForm Shield license isn't open source (Complete the source review and secret scan of the public repository #42).
- Remove internal operations details from the docs, such as the 1Password vault path in
docs/updates.md(Complete the source review and secret scan of the public repository #42). - Sign releases through GitHub's Gatewatcher instead of a personal Developer ID, and rewrite the release credentials docs to match (Publish the first stable desktop release #217).
Not before Universe
External harnesses (#9), browser DOM tools (#50), old-Ace ports (#6), host handoff (#49), peer-agent messaging (#57), hosted lifecycle and messaging (#179, #180, #182), and the remaining items in #58.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
iamnbutler commentedon Oct 14, 2026
PRs opened against this list (none merged yet):
desktopalso starts off is still open.docs/updates.md(Dev tool cleanup).bun run cilinted 0 files inside lanes, including Ace's own channel lanes.Stable 0.0.23 status is on #217.
iamnbutler commentedon Oct 14, 2026
Update, October 14: everything from the earlier list is merged and shipped in Ace Canary 0.0.24.
Merged from this list: #237, #238, #239, #240, #241, #242, #243. I ticked the matching boxes above.
Other dogfooding fixes, also in 0.0.24:
_/$and dropped[WIP]brackets.None of these were checked in the native WebKit app before release. 0.0.24 is their first native run.
Still open on this list:
desktopdefault.iamnbutler commentedon Oct 15, 2026
Filed #260: the CLI can't take part in teammates' channels (say/ask/watch/chat/stop/info, and
ls --team). Needed for the agent-driven two-machine study (#10).iamnbutler commentedon Oct 15, 2026
Overnight study: interim summary (00:50–02:55 EDT, canaries 0.0.35 → 0.0.39)
Two Codex testers (gpt-6-astra with computer use) drove Ace Canary on two Macs: A (natembp, owner) and B (nate16-1, teammate). A background worker session fixed issues as they were filed. Screenshots are kept for the writeup.
Tester infrastructure: one tester run died on a model capacity error ("Selected model is at capacity") and was resumed.
iamnbutler commentedon Oct 15, 2026
Update, 04:30 EDT, canary 0.0.40:
stapler validateretry.iamnbutler commentedon Oct 15, 2026
Merged into #5, which is now the single dogfooding issue with only open items. Release and first-run items (Gatewatcher signing, #214, #215) moved to #217. The repository rename is done, since the repo is now githubnext/ace, and the Agentation and ops-docs cleanup was already finished. This body is kept as history.
iamnbutler commentedon Oct 15, 2026
Study wrap-up (2026-10-14 17:00 → 2026-10-15 09:30 EDT).