Skip to content

feat(app): panels follow what the bot starts doing and slide open - #38

Merged
httpsphl merged 4 commits into
mainfrom
feat/panels-follow-bot
Sep 29, 2026
Merged

httpsphl merged 4 commits into
mainfrom
feat/panels-follow-bot

Conversation

@httpsphl

@httpsphl httpsphl commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

What

Two changes the owner asked for after watching a bot work in the app window.

The panel follows the bot (spec 15.1, 21.8, 22.5)

  • The browser panel opens by itself when the bot's browser starts, or when the bot asks for a hand.
  • The design area opens by itself when the bot starts writing a screen.
  • Either one takes the place of whatever panel was open, once per start. Before, the design area opened only when no panel was open, and the browser never opened by itself, so the owner could miss the dot on the button.
  • It does not get in the way:
    • A browser already open when the bot is opened stays behind its button.
    • A panel the owner closes stays closed, with the dot on its button.
    • The browser in the owner's hands is never replaced by the design area.
  • The logic lives in useFollowBot, so BotView stays small.

Panels slide open and closed (spec 15.1)

  • All four side panels (details, files, browser, screens) share SidePanel. The panel now widens from the right edge in 460 ms, on a curve that does not rush the start. It slides back to the edge in 360 ms before it goes.
  • While it closes, BotView keeps the last panel on screen, with aria-hidden and inert. A panel replacing another starts from that one's width, so a switch is one move.
  • Its content keeps its full width while it comes in, so nothing reflows and the chat narrows smoothly.
  • The motion is in panelMotion.ts and its own panels.css, so motion.css does not grow. Reduced motion makes it instant.

Test timeout

  • "older messages load on demand" draws 60 messages twice. It takes about 2 s alone but passed the default 5 s when the whole suite ran at once, and failed now and then.
  • It now has 15 s.

Tests

pnpm check passes (146 tests). New or updated tests cover:

  • the browser opening on a start and not on each action;
  • a browser already open staying behind its button;
  • a request for a hand opening the browser;
  • a screen taking the place of the files panel, once;
  • the browser in the owner's hands staying when a screen starts.

In the preview, getAnimations() shows panel-open running: 1 px at the start, 492 of 520 px halfway, with the content at 520 px throughout.

Manual step

  • In the app window (pnpm tauri dev), with details or files open, ask a bot to browse or write a page, and see its panel slide open by itself.

The panel widens from the window's edge in 280 ms while its content,
already at its full width, comes in with it, so nothing reflows and the
chat narrows smoothly instead of jumping. The motion lives in its own
file (panels.css); reduced motion makes it instant.
The browser opens by itself when the bot's browser starts or it asks for
a hand, and the design area when it starts writing a screen, in place of
whatever panel was open, once per start, so the owner sees it happen
instead of a dot they may miss. A browser already open when the bot is
opened stays behind its button, a panel the owner closes stays closed,
and the browser in the owner's hands is never taken away.

Spec 15.1, 21.8 and 22.5.
It draws sixty messages twice: about 2 s alone, but past the default 5 s
when the whole suite runs at once, which made it fail now and then.
Opening takes 460 ms on a curve that does not rush the start, as 280 ms
front-loaded felt abrupt. Closing now runs the panel back to the edge in
360 ms before it goes: the bot view keeps the last panel on screen while
it slides, out of reach of clicks and screen readers. A panel replacing
another starts from that one's width, so a switch is one smooth move.
The motion lives in panelMotion.ts and panels.css.
@httpsphl
httpsphl merged commit 98772b7 into main Sep 29, 2026
3 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