fix(web-ui): draw headless host groups with the server mark - #3174
Merged
Merged
Conversation
The footer's attached-device groups drew Lucide's outline server for a group of headless hosts, in a row where the desktop group beside it already draws the device mark, and where the device list draws the product's own server mark for every one of those hosts. One surface held two drawings of the same idea, and the outline one read as the odd, hollow glyph next to a solid mark. The group now draws the mark the list draws. A group is a class rather than one device, so it carries only the fact its mark resolves from: the kind. The name, system and host kind a device row would answer with do not exist at this level and the mark does not read them. With no caller left for the outline case, the LUCIDE Server case and its import go with it, so the footer has one server drawing instead of two. The other Server glyphs in the shell are not devices and stay: an SSH host is a transport target (the remote-SSH menu item, a remote workspace row, the dispatch picker's SSH connections and target), and the ACP registry rows are agent servers. Each of those is a remote machine, not an OpenBitFun host in the account directory, and each sits in a row of Lucide glyphs of its own. Verified by a test that reads the rendered path: the group and the list row for the same host kind now carry one drawing. The test fails when the routing is reverted, which is how the guard was checked. Co-authored-by: bitfun-ai <318544290+bitfun-ai@users.noreply.github.com>
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
The footer's attached-device groups drew Lucide's outline server for a group of headless hosts, in a row where the desktop group beside it already draws the device mark, and where the device list draws the product's own server mark for every one of those hosts. One surface held two drawings of the same idea, and beside a solid mark the outline one read as the hollow, odd glyph of the row.
The group now draws the mark the list draws, and the outline case is gone with it: the footer has one server drawing instead of two.
Fixes # (none - no issue filed)
Type and Areas
Type: Fix / UI/UX
Areas: web UI (NavPanel footer device status)
Motivation / Impact
DeviceMark->DeviceSystemGlyph); the footer's attached group for the same host kind drew Lucide'sServerinstead, which is a different drawing in the same slot family.DeviceIcon'sexecution-hostcase and theServerimport are removed, so the code can no longer draw two server glyphs for devices.DeviceIconnow draws the kinds that are not a system (a phone, a chat app, the neutral monitor), which is what its new doc comment states.Scope of the sweep: every other
Serverglyph in the shell was checked and deliberately kept, because none of them is an OpenBitFun device in the account directory:Each of those sits in a row of Lucide glyphs of its own, and an SSH machine is a transport target rather than a peer host that reports a system and a kind.
Remote scenarios: this is presentation over facts the overview already holds for remote control and peer device mode; no command, registry row, transport path or advertised capability changes. The marks are unchanged on remote workspaces, and mobile web does not render this footer at all.
Verification
pnpm --dir src/web-ui run test:run src/app/components/NavPanel src/features/dispatch src/app/components/RemoteConnectDialog- 60 files, 448 tests passexpected undefined to be 'M1.5 0H22.5A…'), which is how the guard was checkedpnpm run check:web- exit 0 (Appearance contract, theme color and theme visual governance, type-check)pnpm --dir src/web-ui run icons:check- exit 0node scripts/check-git-object-sizes.mjs --base upstream/main --head HEAD- exit 0Not verified: no real browser pass over the footer; the assertion is DOM-level, and the drawing itself is the one already reviewed and shipped for the device list.
Reviewer Notes
data-openbitfun-device-kind; the new one follows that convention and adds no test hooks to the component..openbitfun/tmp/footer-group-mark.pngin the author's workspace and can be dragged into this PR.Checklist