Skip to content

feat: lest ui --app, README with screenshots per feature - #7

Merged
piekstra merged 5 commits into
mainfrom
piekstra/polish
Oct 7, 2026
Merged

piekstra merged 5 commits into
mainfrom
piekstra/polish

Conversation

@piekstra

@piekstra piekstra commented Oct 7, 2026

Copy link
Copy Markdown
Member

Summary

  • lest ui --app opens the UI in its own window: a Chromium-family browser (Chrome, Chromium, Edge, Brave) in app mode with a dedicated profile under the data directory. Falls back to the default browser when none is installed. docs/design.md now records that there is no desktop shell and why.
  • Settings: leaving the page within the 600 ms save pause dropped a text edit. The pending edit is now saved on unmount.
  • Failure card: the agent handoff is refetched when the agent command changes, so Open in agent appears without a reload.
  • README rewritten with an example and a screenshot per feature: flows and polling, failure headlines, browsers and live view, demos (with a GIF of the real cut), the UI, optional AI, and CI.
  • All docs screenshots regenerated from the examples project; the screenshot script sets an agent command for the AI images.

Evidence

Captured with ui/scripts/screenshots.mjs against lest ui serving a copy of examples/, headless Chromium at 1440x900, 2x. The AI images use a custom command provider that pipes the prompt to a small model.

A failed step explained by a model, Open in agent in the menu (this needed the handoff fix):

failure with AI

AI settings with an agent command:

AI settings

The demo cut from connect-weather (11 s from a 14 s take):

demo cut

The Settings flush was checked with a Playwright script that types an agent command and navigates away immediately; the settings API then returned the new value.

Checks

  • make check passes (fmt, clippy, 77 Rust tests, 37 UI tests, release build).
  • Denylist scan clean; every image reviewed by eye.

# Conflicts:
#	crates/lest/src/main.rs
Leaving Settings within the save pause dropped a text edit; it is now
saved on unmount. The step handoff is refetched when the agent command
changes, so Open in agent appears without a reload.
Regenerated screenshots from the examples, a GIF of the demo cut, and
the screenshot script sets an agent command for the AI images.
On Linux the app window gets its own process group, a browser that
exits at once with an error falls back to a tab, and the child is
reaped. macOS also looks in ~/Applications. The handoff clears while
it reloads, the screenshot script stops waiting on a failed save, and
docs/ui.md describes --app.
@piekstra

piekstra commented Oct 7, 2026

Copy link
Copy Markdown
Member Author

Review dispositions (fixed in f1ec935 unless noted):

  • Linux --app browser shared the terminal's process group, so Ctrl-C closed every app window: fixed, the browser starts in its own process group.
  • A browser that exits at once was reported as opened: fixed, an early non-zero exit falls back to a tab; an early zero exit (handed to a running browser) counts as opened.
  • Unreaped child: fixed, a thread waits on it.
  • macOS only checked /Applications: fixed, ~/Applications too. The fallback message now covers both "none found" and "failed to start".
  • Settings unmount save swallows errors and does not run when the window closes: kept. The comment now says it covers in-app navigation; a failed save there has no page left to show it on.
  • Handoff kept the old command while reloading: fixed, cleared on refetch.
  • design.md "UI" twice and an over-long line: fixed.
  • docs/ui.md did not mention --app: fixed.
  • Screenshot script poll had no timeout: fixed, fails after about 10 s.

The Linux --app path is checked by build and clippy only; CI has no display to open a window in.

@piekstra
piekstra marked this pull request as ready for review October 7, 2026 14:55
@piekstra
piekstra merged commit 34bb8dc into main Oct 7, 2026
5 checks passed
@piekstra
piekstra deleted the piekstra/polish branch October 7, 2026 14:55
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