Commit Graph
17 Commits
Author SHA1 Message Date
Joachim Wiberg 10ab88d93f webui: drop Status > Keystore page
GET /keystore was just an http.Redirect to /configure/keystore — no
actual status view ever existed; the link landed users in Configure
and folded the Status group on the way, which was confusing.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:22 +02:00
Joachim Wiberg d07c8a9b5e webui: styling and cleanup
Vendor a Lucide icon set under static/img/icons/ and partial:ize the
inline SVGs across base, login, firmware, sidebar, and yang-tree.

Reorganize the sidebar with mirrored Status/Configure section labels.
Rename NACM to Users & Groups and Firmware to Software; swap Routes and
Routing between Status and Configure.

Split Configure > System into General, NTP Client, and DNS Client pages,
which opens up for relocating the Set Time RPC from the Maintenance
section to a new Date & Time card in the System General config page.

Update browser tab title on htmx navigation via an HX-Trigger
setPageTitle event; encode the payload as 7-bit ASCII so the middle
dot in "Page · Context" survives header transit.

Add missing hover-help ⓘ icons to bridge port configuration, and adjust
their alignment slightly.  While in interface configuration:
 - fix the annoying Save => collapse so one can edit multiple
   interface sections without having to re-expand the iface
 - add missing dhcpv4 settings
 - add missing custom mac (use advanced view for other settings)
 - clean up Save button mess (consolidate)

Rename Firmware -> Software everywhere in the Maintenance section and
fix "Install progress stuck at 10%" issue.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:21 +02:00
Joachim Wiberg c40c1d0c10 webui: ethernet status and configuration
Status overview gains a Speed column reading ietf-interfaces:speed +
ethernet/duplex.  Interface detail page surfaces PHY type, PMD type,
supported and advertised PMDs.

Configure > Interfaces gains a per-row Ethernet panel: auto-negotiation
toggle, advertised PMDs picker, duplex tri-state, mdi-x tri-state.  Each
has a reset-to-YANG-default button.  Backend writes leaf-by-leaf via
PATCH+DELETE since a single PUT silently drops the duplex leaf.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:21 +02:00
Joachim Wiberg d9611c48a9 webui: rename Go module to infix/webui
The webui Go code now lives in the infix source tree rather than being
imported as an external module.  Switch the module path to match that
reality so the imports read coherently with the rest of the codebase.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:20 +02:00
Joachim Wiberg 9f03e0a34b webui: configure, unify delete affordance on the bin icon
Five pages drew their per-row delete control as a bespoke <svg> "X"
glyph instead of the icon-trash partial used by Hardware, Routes,
Firewall, Interfaces and the yang tree fragments.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:18 +02:00
Joachim Wiberg 2c80c65962 webui: add Status > Hardware page
Mirrors the CLI's "show hardware" command — a single page that summarises
everything ietf-hardware exposes about the device:

  - Board (chassis info: model, manufacturer, serial, base MAC)
  - USB Ports (state + description)
  - WiFi Radios (bands, standards, max-AP)
  - GPS Receivers
  - Sensors (grouped by parent component, all status values)
  - Other Components (fallback so the page is exhaustive)

This is Phase 1 of webui-roadmap-v2. Phase 2 will trim the dashboard's
Sensors card to a few key vitals with an "All sensors →" link here,
fixing the existing height-clipping regression in the process.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:17 +02:00
Joachim Wiberg 9720c7000f webui: configure interfaces, initial wizard support
Idea of wizard is to simplify:

 - Re-adding Ethernet interfaces you've accidentally removed
 - Setting up WiFi access point/station, incl. radio & PSK
 - VLAN filtering bridges

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:15 +02:00
Joachim Wiberg 974ea7260f webui: configure firewall — zone and policy management
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:14 +02:00
Joachim Wiberg b0bd1dad11 webui: configure routes — static route management page
Adds Configure > Routes page for viewing, adding, editing, and deleting
IPv4 and IPv6 static routes.  Each route row expands in-place to an edit
form; YANG field descriptions are shown as ⓘ tooltips.

Also fixes a goyang bug where inline augments inside a uses block were
never applied to the expanded tree, making it so next-hop-address and
outgoing-interface were missing from the schema — and therefore had no
tooltip text.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:14 +02:00
Joachim Wiberg f9733dc52d webui: refactor maintenance section
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:41 +02:00
Joachim Wiberg a80a731324 webui: relocate keystore status -> configure
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:39 +02:00
Joachim Wiberg 6e84a75550 webui: advanced configure using a yang tree
Navigating interfaces now work, and the tree follows the accordion style
like the rest of the UI.

Also, some updates to the curated pages: online help, lists of leafrefs
instead of hard-coded list options.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:38 +02:00
Joachim Wiberg 2ef7490f69 webui: add Configure mode with System, Users, and NACM pages
Implements the configure accordion section with a candidate datastore
workflow: opening Configure copies running → candidate (Enter), each
card saves directly to candidate, Apply copies candidate → running
atomically, and Abort discards by resetting candidate from running.

- RESTCONF client: add Put, Patch, Delete, GetDatastore, PutDatastore,
  CopyDatastore, and a shared doRequest/writeJSON helper
- Handlers: ConfigureHandler (enter/apply/abort), ConfigureSystemHandler
  (hostname, clock, NTP, DNS, motd, editor), ConfigureUsersHandler
  (add/delete user, shell, password, SSH keys, NACM group membership)
- Status > NACM page: read-only group permission matrix derived from
  ietf-netconf-acm groups + rule-list mappings
- Sticky Apply/Abort toolbar with custom confirm dialog; server returns
  HX-Redirect:/ so HTMX does a full-page reload, keeping sidebar in sync
- Accordion persistence fixed: Configure excluded from localStorage so it
  never auto-reopens after Abort/Apply; restore no longer closes an
  accordion that contains the active page
- Password hashing by shelling out to mkpasswd(1)

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:36 +02:00
Joachim Wiberg 7ac15796e3 webui: new page, services table
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:34 +02:00
Joachim Wiberg e36aac736e webui: new page, mdns neighbor table
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:33 +02:00
Joachim Wiberg 12482a5ab5 webui: redesign firmware page, use slot bootnames
Replace the RAUC-centric firmware page with a cleaner layout:

- Show software slots (primary/secondary) using their bootnames rather
  than internal RAUC slot names; filter to rootfs-class slots only
- Add boot order display (mirrors `show software` in the CLI)
- Show installed timestamp per slot (truncated to second precision)
- Fix Booted flag comparison: compare against bootname not slot name
- Lay out all three cards (Software, Install from URL, Upload & Install)
  in a responsive grid instead of full-width stacked sections

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:26 +02:00
Joachim Wiberg bc535099ec webui: initial import
Initial import of https://github.com/kernelkit/webui2 @ e344d3f

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 22:07:22 +02:00