githubnext/ace2Public

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

Default to agent mode and retain composer mode per channel

IA

New channels should be ready to ask the agent, and changing channels should not undo a deliberate composer-mode choice.

- [ ] Default a new channel's composer to agent mode, including channels without a selected model or initial draft. - [ ] Keep the selected agent/message mode per channel across sends and navigating away and back; another channel's choice must not overwrite it. - [ ] Preserve the shortcut that landed in `../ace-old`: Esc leaves agent mode for message mode; double Esc within 350 ms enters agent mode from message mode. Keep draft text intact and preserve Escape's existing edit/menu dismissal behavior. - [ ] Verify the default, persistence, and keyboard transitions in the desktop composer, including sending after each transition.

Current behavior: `apps/app/src/composer.tsx:49` derives mode from `draft || channel.model`; mode is component state, and `apps/app/src/app.tsx:431` remounts the channel on navigation. Sending already preserves mode in the shared composer. The Escape handler already exists at `packages/ui/src/components/composer/chat-composer.tsx:995`; verify its integration rather than adding a Tab binding.

Legacy reference: `ace-old` commit `8d875cb43aa20a2353c4d5fe7914e21af0f0d109`, `clients/app/src/context/sessions/core.tsx:644` (per-channel in-memory mode) and `packages/ace.ui/src/components/composer/chat-composer.tsx:1015` (Escape behavior). The agent-first default is the requested behavior; that legacy snapshot itself defaults to message mode.

Tracked by #5 (dogfooding core/QOL); also part of old-Ace restoration in #6.

  1. iamnbutlerreferenced this in [Meta] Restore features from old Ace #6last month on GitHub

  2. iamnbutlerparent-issue-addedlast month on GitHub

  3. iamnbutlerreferenced this in [Meta] Dogfood Ace end to end #5last month on GitHub

  4. iamnbutlerreferenced this in Verify unsent composer drafts survive a signed desktop quit and relaunch #77last month on GitHub

  5. iamnbutlerreferenced this in [Meta] Complete native computer use in Ace #8last month on GitHub

  6. iamnbutlerreferenced this in fix(app): default the composer to agent mode and keep each channel's mode #88last month on GitHub

  7. iamnbutlerclosedlast month on GitHub

  8. IA
    Author

    Follow-up to consider, not a blocker. Found during the real headless-browser smoke for #165 (#77, dogfooding #5).

    Just opening a channel in the default Ace mode inserts the `@ace` mode mention. That edit is saved as a draft for `/channels/<id>`, with the mention's avatar data URI, about 6 KB per channel visited. The old bundle already did this, writing the same `@ace`-only draft to `sessionStorage`. With #165 it now persists in `localStorage` across restarts.

    No user text is lost. Reopening a channel just restores the `@ace` chip, and sends and discards still clear drafts. #165 intentionally leaves the editor document and mode behavior unchanged. This belongs with the composer mode and default-mention insertion work here. One option is to not save a mode-mention-only document as a draft, or to keep the avatar out of the stored mention.