Repository navigation
v0.7.0 — shared UI patterns, section navigation & cron builder fix
Highlights
Frontend consolidation around shared UI primitives
Resource pages, lists, dialogs, and the navbar were each re-implementing the same interaction decisions. This release introduces shared data-display, form, and layout primitives (plus the small shadcn primitives they need) and reworks every resource surface to use them. Result: more coherent visual language, less duplication, and a single place to evolve interaction behaviour.
Section landings & split routes for Inventory and Jobs
The Inventory root used to be a tabbed page that jumped straight to Devices, and Jobs opened the scheduler directly while run history lived on a separate top-level route. /inventory and /jobs are now proper section landings with a reusable WithSidebar layout, and each gets dedicated sub-routes:
- Inventory →
/inventory/credentials,/inventory/devices, and/inventory/groups(with/inventorykept as a section overview and legacy/credentialsredirecting to its canonical home). - Jobs →
/jobs/schedulerand/jobs/history(with the legacy/historyroute redirecting to its canonical home).
Site navigation is now metadata-driven with localized labels, icons, descriptions, nested sub-items, and a dropdown for sections with related routes.
Graphical cron builder fixed
The cron schedule dialog would silently reset its schedule mode whenever you edited a minute/hour or weekday field, which made it feel broken when tweaking an existing schedule. Editing time fields now leaves the frequency choice stable, and the hour/minute and weekday controls are now dedicated NumberStepper and SegmentedPicker primitives — building a schedule visually behaves predictably.
Run consoles get jump-to-latest
All run consoles (playbook, command, script, and job detail) share a new jump-to-latest control with sticky-tail scroll behaviour, so following a live run no longer requires manual scrolling.
Backend ↔ runner service: response types & event handling
The gRPC runner service got updated response types and a refactor of its event handling across the Python service, the generated TypeScript stubs, and the run.proto contract.
Other changes
- Centralise every lucide icon behind a semantic registry keyed by intent (
actions,controls,resources,status,scheduling, …) so feature code depends on names, not on a particular icon library. - Nest Credentials under Inventory navigation and route it through the shared primitives.
- Use semantic colours for play recap outcomes and tidy run-status metadata formatting.
- Ignore
.agents/and.claude/directories and configure VS Code to format proto files via the.codextooling.