Skip to content
This repository was archived by the owner on Oct 31, 2026. It is now read-only.

feat(desktop): Live launcher in the composer like the web app - #45

Merged
omarzanji merged 1 commit into
feat/desktop-computer-usefrom
claude/live-composer-launcher-a94693
Oct 25, 2026
Merged

omarzanji merged 1 commit into
feat/desktop-computer-usefrom
claude/live-composer-launcher-a94693

Conversation

@omarzanji

Copy link
Copy Markdown

ditto-app#3432 puts a waveform Live mode launcher in the composer just left of Send and moves Temporary chat to the header. pingdotgg#3432 isn't merged, and bumping the submodule to it breaks the desktop build right now, so Ditto Desktop still showed the temporary-chat clock beside Send and had no Live entry in the composer.

What changed

Surfaces checked (dev build, isolated home)

Home/new chat, a chat thread, an agent chat (Main Ditto) and Temporary chat all show one launcher, at wide and narrow widths. The Code tab shows no launcher and no header toggle.

Before After
Wide composer
Narrow composer (<1024px)
Full window

Tooltip with shortcut hint:

Active styling:
(Shown by setting data-active from devtools. I didn't start a real Live session in the dev build, since that drives Computer Use. The state sync is covered by tests.)

Temporary chat from the header (pressed), launcher still in the composer:

Agent chat: Chat thread: Code tab (no launcher):

Tests

  • tests/live-launcher.node-test.cjs covers the patch result, idempotence, any missing anchor leaving both files untouched, the skip when ditto-app ships its own launcher or header toggle, active-state sync (a push beats a late status, unsubscribe on dispose), and the platform shortcut hint.
  • node --experimental-strip-types --test tests/*.node-test.cjs: 236/237 passed. The one failure, computer-service "setup runs independently…", is a 15s readiness timeout under full-suite load. That file is untouched here and passes 7/7 on its own.
  • vp run check:changed: format, lint, knip and typecheck all pass.
  • node apps/desktop/scripts/build-web.cjs builds, and the submodule is left clean afterwards.

Screenshots are on the pr-assets/live-composer-launcher ref, not in this branch.

Model: Claude Opus 5.5, Claude Code.

🤖 Generated with Claude Code

Until the bundled ditto-app ships ditto-app#3432's own launcher, a build-time
bridge puts a waveform Live launcher just left of Send (where Temporary chat
was) and moves Temporary chat to the header, as pingdotgg#3432 does. The launcher calls
window.ditto.liveToggle() and its pressed state follows ditto:live-active, so
it agrees with the rail button and Cmd+Shift+L. Composer and header patches
apply together or not at all, and are skipped once ditto-app renders its own
live-mode-launcher.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@omarzanji
omarzanji merged commit d63be76 into feat/desktop-computer-use Oct 25, 2026
18 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant