Skip to content

feat: redesign the manager as a first-class desktop app - #10

Merged
jdvmi00 merged 2 commits into
developfrom
feature/ui-first-class
Sep 6, 2026
Merged

feat: redesign the manager as a first-class desktop app#10
jdvmi00 merged 2 commits into
developfrom
feature/ui-first-class

Conversation

@jdvmi00

@jdvmi00 jdvmi00 commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

Redesigns the Qt manager as a first-class desktop app and adds the backend commands it needs.

Backend

  • Status exposes launch time, Moonlight version, and retry data.
  • remote-desktops start starts the service without connecting.
  • settings remove plus a daemon forget command remove a computer, its launcher entry, and its settled session record. Removal is refused while connected, still stopping, or with a pending display restore. A removed computer can be added again.

Manager

  • Theme derivation uses Omarchy's mode, selection, muted, and green keys and keeps every foreground, including disabled text, readable at WCAG AA on every surface.
  • Text follows the desktop font with a five-step scale.
  • Header with service indicator and actions; sidebar with visible scrolling, distinct status dots, type-ahead, and one primary action.
  • Status card shows only daemon-reported facts with the error inline; status is no longer repeated across the screen.
  • Cancel beside the primary action, Disconnect on the right; toast notices; Remove with confirmation; Start service from the unavailable banner.
  • Guided setup with step markers, inline validation, automatic check, conflict reload, labeled summary, plain-language advanced options, Open Moonlight, and a discard guard.
  • Styled controls and an SVG icon set replace unstyled Basic widgets and text glyphs.
  • Window size and selection persist.

Verification

  • python3 scripts/check.py, cargo fmt --check, cargo clippy --all-targets --locked -- -D warnings, cargo test --locked, cargo build --locked
  • python3 -m unittest discover -s tests -v (30 tests)
  • python3 tests/integration.py -v (23 tests, including new start, remove, and forget coverage)
  • ctest --test-dir build/ui (23 tests: C++ suite plus smoke renders of every demo state, setup page, and dialog)
  • Every state rendered and reviewed with the live Omarchy palette and the light fixture.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LyYkMoWVRpbaHWrFu1ovvj

jdvmi00 and others added 2 commits September 6, 2026 01:02
Backend
- Expose launch time, Moonlight version, and retry data in status.
- Add `start` to bring up the service without connecting.
- Add `settings remove` and a daemon `forget` command that drops a session
  record only when nothing owns it: not desired, no live client, settled
  phase, no pending recovery journal. A removed computer can be added again.
- Session workers exit when their record is forgotten.

Manager
- Theme derivation reads Omarchy's mode, selection, muted, and green keys and
  keeps every foreground, including disabled text, at WCAG AA on every
  surface it is drawn on, in light and dark palettes.
- Text follows the desktop font through a five-step scale; no hardcoded
  family.
- Header with service indicator, refresh, and help; sidebar list with a
  visible scroll bar, distinct status dots, type-ahead, and one primary
  action.
- The decorative hero is replaced by a status card that shows only
  daemon-reported facts, the error inline, and transition progress.
- Cancel sits beside the primary action; Disconnect stays on the right.
- Toast notices, Remove with confirmation, and a Start service banner.
- Guided setup: step markers, inline validation, automatic check on the last
  step, reload on revision conflict, labeled summary, plain-language
  advanced options, Open Moonlight when nothing is paired, and a discard
  guard on Escape or Cancel.
- Styled dropdown, spin box, checkbox, field, dialogs, tooltip, scroll bar,
  and an SVG icon set replace unstyled Basic controls and text glyphs.
- Window size and the selected computer persist between launches.

Tests and docs
- Integration tests for start, remove, and forget; Qt tests for remove,
  error notices, palette readability, and every demo state and dialog.
- CI installs the Qt SVG plugin. Docs describe the new commands and UI.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LyYkMoWVRpbaHWrFu1ovvj
The setup summary, details rows, and status card facts used JavaScript
arrays as Repeater models, so every draft edit or status tick destroyed and
recreated their delegates inside a GridLayout. Qt 6.4 on the CI runner
crashed in that churn on the setup check page. Delegates are now created
once from a count and read their values through bindings. Hidden setup
pages also stop animating their progress bars.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LyYkMoWVRpbaHWrFu1ovvj
@jdvmi00
jdvmi00 merged commit 9112ff3 into develop Sep 6, 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