Skip to content

ui/device-details - #254

Draft
MiloCasagrande wants to merge 27 commits into
ui/devicesfrom
ui/device-details
Draft

ui/device-details#254
MiloCasagrande wants to merge 27 commits into
ui/devicesfrom
ui/device-details

Conversation

@MiloCasagrande

@MiloCasagrande MiloCasagrande commented Aug 31, 2026

Copy link
Copy Markdown
Member

feat: redesign device detail page with new layout

Signed-off-by: Milo Casagrande mcasagra@qti.qualcomm.com

Watches *.go, *.html, and *.css; rebuilds via make fioserver and
restarts the server automatically. Run contrib/run-local.sh once
first to initialise .local-data, then use `air` in place of
manual rebuild+restart cycles.

air must be installed first:

go install github.com/air-verse/air@latest

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
@MiloCasagrande MiloCasagrande changed the title feat: redesign device detail page with new layout ui/device-details Aug 31, 2026
@MiloCasagrande

Copy link
Copy Markdown
Member Author

Other PRs in this stack, in order:

This was referenced Aug 31, 2026
@doanac

doanac commented Aug 31, 2026

Copy link
Copy Markdown
Member

I mostly like this. The one thing that feels odd is not controlling the size of the view for updates. As you can see here, it winds up dominating my screen so that I don't see the other things for the device:
image

Andy Doan and others added 6 commits August 31, 2026 12:48
The gateway code will need this also

Signed-off-by: Andy Doan <doanac@qti.qualcomm.com>
Fixes issue #242

Signed-off-by: Andy Doan <doanac@qti.qualcomm.com>
Signed-off-by: Andy Doan <doanac@qti.qualcomm.com>
gateway: Add `PATCH /config` support
There is no existing test run for oauth2 and the following use-cases:
- A device registering
- A fiocli user logging in

The shared fixtures run the server in noauth mode, which fabricates a
full-scope session on every request and cannot exercise the login
redirect, a real user confirming the code, or scope intersection.

Instead, stand up a dedicated fioserver with auth-init --local on
test ports and drive the flow with Playwright: `fiocli login` through
the authorize, deny, and scope-mismatch paths, plus a
fio-device-register mimic which registers a device by POSTing a CSR
with the minted token base64-encoded.

NOTE: The tests run against the server's default per-IP rate limits,
so the steps are paced to human speed.

Signed-off-by: Michael Scott <mike@foundries.io>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
TestApiRolloutPut slept a fixed 50ms for the async rollout commit before
asserting the committed state, which is racy under load. Poll for the
committed state with require.Eventually instead, matching the pattern
already used by the rollout daemon and update tail tests.

Signed-off-by: Andre Detsch <andre.detsch@foundries.io>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@MiloCasagrande

Copy link
Copy Markdown
Member Author

I mostly like this. The one thing that feels odd is not controlling the size of the view for updates. As you can see here, it winds up dominating my screen so that I don't see the other things for the device

Yeah, that content grows too much indeed.
I need to seed more local data to test it.

I think we need a compromise there: show 5 or 6, and have a button/link to a new page with the complete list of updates. That will add a new tab at the top, "Updates".

I noticed only now that there is a /devices/$device/update/$update page.
We should change that to /devices/$device/updates/ for the entire list, and then /devices/$device/updates/$update, in order to keep the same pluralization in the URL path as the other paths.

Milo Casagrande and others added 17 commits September 1, 2026 17:20
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
The new UI will show an error the first time a user arrives
at the login page and there is no cookie set. Silence that
error so it does not pop up in the UI.

Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Replace the 15px root override with 16px (browser baseline, cleaner rem
math). Add Minor-Third-based heading scale using --pico-font-size
overrides so Pico's own rules read the values without a specificity fight.

h1–h3: fluid via clamp() (22–28 / 18–22 / 16–19 px across 320–1280px)
h4–h6: fixed (17 / 13 / 11 px) — hierarchy carried by weight and case.

Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
  - Add app shell: sticky topbar with brand + nav-toggle + theme-toggle,
    collapsible push-sidebar (desktop) / off-canvas drawer (mobile ≤860px)
  - Add user avatar badge with initials derived from username
  - Redesign devices list page
  - Add OtherLabels/Initials template helpers with unit tests"

Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Revert tsToString to RFC3339 and add a separate tsToDate
(DateOnly) helper used only by devices_list.html, restoring
full timestamps everywhere else.

Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Old /configs/device/:uuid GET routes now 301-redirect to
/devices/:uuid/configs (and related). PATCH/DELETE and history
also moved. No handler logic changed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Milo Casagrande and others added 3 commits September 1, 2026 17:21
Update template hrefs to use new URL structure:
- /configs/device/:uuid -> /devices/:uuid/configs
- /configs/device/:uuid/applied -> /devices/:uuid/applied-configs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
Signed-off-by: Milo Casagrande <mcasagra@qti.qualcomm.com>
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.

4 participants