Skip to content

UI/UX polish: design and usability fixes - #14

Merged
chadleeshaw merged 16 commits into
fix/code-review-findingsfrom
fix/ui-design-polish
Sep 29, 2026
Merged

chadleeshaw merged 16 commits into
fix/code-review-findingsfrom
fix/ui-design-polish

Conversation

@chadleeshaw

@chadleeshaw chadleeshaw commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Design and usability pass over the web UI, based on a template-level review (localhost is blocked on the review VM, so this is code-based, not pixel-based).
Separate from the code-review fixes in #13.

Navigation & chrome

  • Active page is now highlighted in the nav (with aria-current), including sub-pages like /tftp/open
  • Mobile menu closes on link tap and on outside tap
  • Added a small footer; dropped the jQuery dependency (vanilla JS toggle)
  • Fixed the logo/spacing hack in the header

DHCP page

  • Server status badge now reads Running/Stopped instead of an empty pill
  • Only the applicable Start or Stop button shows, with a text label
  • Lease-state changes update the badge in place + toast (no full reload)
  • Red X for "not reserved" replaced with a neutral bookmark affordance
  • Lease-state menu uses the app icon language instead of emoji
  • Lease table scrolls horizontally on mobile
  • alert() dialogs replaced with toasts

TFTP page

  • Directory breadcrumb trail replaces the bare path string + Back button
  • Upload button uses the upload icon instead of a text arrow
  • Files panel scrolls on small screens; header matches other pages

OS Images / Syslinux

  • Download progress actually auto-refreshes now (the old code triggered a nonexistent element, so bars were frozen until reload)
  • Themed DaisyUI progress bars instead of hand-rolled gray/blue ones
  • File sizes formatted server-side via a new formatBytes template func; removed the client-side reformatting JS

Status page

  • Fixed a pre-existing render failure: LastUpdated is a string, but the template called .Format on it, so the page errored mid-render
  • Added the remaining fields the status templates expected (OverallStatus, Description/LastCheck on services and per-DHCP-server IP/Description/LeaseCount/LastCheck) — the page was still erroring mid-render (HTTP 200 with a truncated body)

Provision page

  • Help copy no longer claims auto-save or editor syntax highlighting (save is manual; highlighting is in preview only)
  • Deleting a file removes its row + toast instead of reloading the page
  • alert() dialogs replaced with toasts

Login

  • Show/hide password toggle

Consistency

  • Page headers standardized (text-3xl, spacing)
  • Cards standardized on bg-base-200 (were a mix of bg-neutral / bg-base-100 / bg-base-200)
  • Removed nested <main> elements and duplicate container wrappers

Verification

  • go build, go vet, gofmt clean; go test ./... green
  • Executed every page template with mock data: all render fully with no template errors (HTTP status alone is not sufficient — the status page previously returned 200 with a truncated body)

UI renders

Rendered from the templates with representative mock data (static screenshots; live-polling triggers stripped for capture).

Home

DHCP

TFTP

OS Images

Syslinux

Login

Provision

Status

@chadleeshaw
chadleeshaw merged commit e8ec58a into fix/code-review-findings Sep 29, 2026
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