feat: redesign the manager as a first-class desktop app - #10
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Redesigns the Qt manager as a first-class desktop app and adds the backend commands it needs.
Backend
remote-desktops startstarts the service without connecting.settings removeplus a daemonforgetcommand 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
mode,selection,muted, andgreenkeys and keeps every foreground, including disabled text, readable at WCAG AA on every surface.Verification
python3 scripts/check.py,cargo fmt --check,cargo clippy --all-targets --locked -- -D warnings,cargo test --locked,cargo build --lockedpython3 -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)🤖 Generated with Claude Code
https://claude.ai/code/session_01LyYkMoWVRpbaHWrFu1ovvj