Skip to content

feat(app): the desktop panel, live, with Stop - #176

Merged
httpsphl merged 4 commits into
mainfrom
feat/desktop-panel
Oct 4, 2026
Merged

httpsphl merged 4 commits into
mainfrom
feat/desktop-panel

Conversation

@httpsphl

@httpsphl httpsphl commented Oct 4, 2026

Copy link
Copy Markdown
Owner

What

The app part of D3 (spec 24.9). It sits on top of #175, so this diff shows it too until it merges. With this, D3 is complete.

  • Dock: the desktop is the fourth place in a bot's computer dock, after browser, terminal and files. It shares their width, so switching only changes what is inside.
  • Panel (DesktopPanel, watching through useDesktopView):
    • the window the bot read or acted in last, live on the bot's desk, with the app name and the window title;
    • what the bot did, worded in the owner's language from the structured DesktopAction, for example "Clicou em "Save"", "Escolheu "Large"", "Leu a janela";
    • "Live" when pictures arrive, and Stop in the header;
    • once stopped, a "Stopped" badge and a notice with Let it go on;
    • with no window yet, an explanation of when one shows up;
    • the Ctrl+Alt+End hint at the bottom.
  • Chat: desktop tool lines get a screen button that opens the panel, as browser lines do for the browser panel.
  • Translations: every text is in en, pt-BR and es.
  • Preview: Scout's Notepad, just after it clicked Save.
  • Spec 24.9 is updated, and section 24's status says D1, D2 and D3 are implemented.

Checks

  • pnpm check passes (397 tests).
  • New panel.test.tsx:
    • the chat button opens the panel, which starts empty;
    • the window and the action show, then the picture with "Live";
    • closing the panel unwatches;
    • Stop and Let it go on work.
  • I looked at it in the preview (Portuguese): the header with "Ao vivo" and Parar, the Notepad picture on the desk, "Clicou em "Save"", and the dock with four places.

Manual check on the real app

  1. Ask a bot to use Notepad and watch the panel follow it.
  2. Press Stop. The bot's next desktop tool should say the owner stopped it.
  3. Press Let it go on.

The daemon part of D3 (spec 24.9):

- Each bot's DesktopState, in memory: the window it read or acted in
  last, its last action as the tool said it, when, and whether the owner
  stopped it; every reading, picture and action updates it and sends
  desktop.changed.
- desktop.watch and desktop.unwatch: while a connection watches a bot,
  its window is pictured four times a second and desktop.frame goes out
  only when the picture changed, only to that connection, newest first,
  like the browser's frames. The picturing stops with the last watcher.
- desktop.stop and desktop.resume: a stopped bot's desktop tools refuse,
  again after waiting for the owner or for its turn, until the owner lets
  it go on; an action under way ends within its 5 seconds.
- Ctrl+Alt+End, registered by the daemon on a thread with its own queue,
  stops every bot on the desktop, app open or not; when another program
  holds it, the daemon logs it and goes on.

The window and setup of the desktop tests move to tests/common, and the
event-to-notification mapping out of rpc/mod.rs, which had reached 300
lines. FakeBotloft plays the new methods.
…ds a reading for minutes

DesktopState.action is now structured (DesktopAction: click, type,
select or scroll, the control's name and the option), so the app words
it in the owner's language instead of showing the tool's English.

Every UI Automation session, reading too, gets 5 seconds per call and to
connect, and a walk stops at 15 seconds with what it read: right after a
classic combo box took a choice through its default action, the window
could answer slowly, and the next reading, without a limit, hung for
minutes. The choice and scroll test waits up to 2 seconds for the window
to show them, as the tool does; 12 runs in a row pass.
The app part of D3 (spec 24.9): the desktop is the fourth place of a
bot's computer dock, beside its browser, terminal and files, at the same
width. The panel watches the bot's desktop while open: the window it
read or acted in last, live on the bot's desk, the app and the title,
and what it did, worded in the owner's language from the structured
action. Stop in the header; stopped, a badge and a notice with Let it go
on. Without a window yet it says when one shows; at its foot, the
Ctrl+Alt+End hint. Desktop tool lines in the chat open it. The preview
shows Scout's Notepad.
@httpsphl
httpsphl enabled auto-merge October 4, 2026 22:50
@httpsphl
httpsphl merged commit 7f5d79a into main Oct 4, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant