74 Roadmap
david edited this page 2026-06-10 09:25:57 -07:00

Roadmap

This page mirrors the repo roadmap for the selected future-feature work. Update it at the end of each development iteration along with the matching repo docs.

Selected Work

# Area Status Next Slice
1 Release and version visibility Done Running version and build ID appear in dashboard APIs, the container workflow embeds the commit SHA, and Forgejo releases use release-specific notes.
2 Server-side history In progress Status changes, Uptime Kuma samples, and diagnostic samples now persist in SQLite with admin summary/export/clear/retention controls. Next: migrate useful local history into server history where possible.
3 Integration diagnostics In progress Poll success/failure timing is sampled into SQLite, shown as per-integration response trends, used for configurable response-threshold warning alerts, paired with per-module remediation playbooks, exportable through filtered history shortcuts, visible in admin response drill-down cards, and lazy-loaded in admin so settings pages do not wait for live polls. Next: add service-specific drill-down details from each integration's own health surface.
4 Backup and restore In progress Settings backup exists and dashboard history can be exported separately. Next: decide whether history should be bundled into full backups or kept as a separate operator archive.
5 Notification upgrades Foundation present Alert rail pills now show their triggering reason. Next: add quiet hours, deduping windows, severity routing, templates, and clearer alert lifecycle state.
6 Role-based access Foundation present Expand current admin/user split with finer permissions for viewing dashboard, managing settings, managing users, and viewing sensitive operational data.
7 Storage fleet depth In progress Storage capacity thresholds are configurable, ASUSTOR temperature thresholds are operator opt-in, aggregate capacity has stronger visual prominence, storage warning rows name the affected source/device, TrueNAS/ASUSTOR/UniFi NAS sources combine capacity and pool/volume health in named system rows, Storage admin fields are grouped by source in collapsible sections, TrueNAS polling uses JSON-RPC/WebSocket instead of deprecated REST with legacy API-key fallback, and UniFi NAS local Drive API polling now handles session, API-key, MFA/rate-limit fallback, and bare host/IP local URL paths. Next: add clearer NAS connection testing, deeper SMART/RAID/disk health details, disk temperature trends, and per-source threshold overrides where useful.
10 Wallboard and mobile polish In progress Wallboard presets now enter focused lab view, drag/resize controls stay out of wallboard mode, mobile lab view becomes a scrollable compact status board, small-screen lab controls are reduced to status/diagnostic actions, dashboard header controls/focus states now behave better across compact and mobile layouts, action tooltips/pressed states clarify dense controls, and lab-view graph/media cards now have stronger visual separation. Next: visual QA on target wall display and real phone/tablet breakpoints.
11 Performance hardening Foundation present Dashboard snapshots are cached in memory for faster reloads, duplicate initial dashboard/WebSocket polls are de-duped, and admin diagnostics lazy-load away from the settings bootstrap. Keep the performance smoke check; add budgets for bundle size, poll duration, API response size, and memory growth over longer runs.
13 Integration template/plugin path In progress Frontend diagnostics, admin recovery, admin health, sidebar-based admin navigation, and more resilient UniFi Network configured-site fallbacks have reduced operational friction. Next: continue extracting integration-specific backend/frontend modules before adding more service depth.

Iteration Rule

Every implementation pass should update:

  • The relevant repo docs under docs/.
  • The Forgejo wiki page that operators use.
  • This roadmap when a selected feature moves between planned, in progress, foundation present, and done.
  • If a feature expands src/App.tsx, src/App.css, or server/server.js, first look for an extraction point or shared helper so feature work does not keep concentrating in the largest files.

Current First Slice

  • Added running version visibility to app APIs and the dashboard header.
  • Embedded the Forgejo commit SHA into published container images through DASHBOARD_BUILD.
  • Added SQLite-backed dashboard events, Uptime Kuma history samples, and integration diagnostic samples.
  • Added admin summary, export, and clear controls for server-side dashboard history.
  • Added admin retention settings for server-side dashboard history.
  • Surfaced per-integration diagnostic response trends from persisted samples.
  • Added diagnostic response warning thresholds from persisted samples.
  • Added operator-configurable diagnostic response thresholds in admin settings.
  • Added per-integration diagnostic explanations and threshold tuning guidance.
  • Added module-specific remediation playbooks for recurring integration failures.
  • Stabilized recent diagnostics/history work by extracting diagnostics guidance, dashboard diagnostics, admin recovery, and admin health UI out of the main app file.
  • Started wallboard and mobile polish with focused wallboard presets, cleaner non-editable lab cards, and compact scrollable mobile lab layouts.
  • Added configurable warning thresholds for storage capacity, ASUSTOR temperatures, and Proxmox resource summary cards.
  • Added filtered dashboard history exports and compact mobile lab controls.
  • Split admin integration configuration into a module menu and made ASUSTOR temperature warnings opt-in by default.
  • Promoted admin areas and each integration configuration into separate admin pages.
  • Moved admin page navigation into a highlighted sidebar with mobile-friendly overflow.
  • Let the admin sidebar scroll with the full page instead of using an independent scroll area.
  • Added admin diagnostic response drill-down cards with retained sample bars and ranked slow/warning trend summaries.
  • Gave the storage fleet aggregate stronger presence and made storage warning rows identify the affected source or device.
  • Simplified UniFi Network to device health, made Seerr stats-only, and showed all storage sources as named systems.
  • Grouped Storage Health admin fields by TrueNAS, thresholds, ASUSTOR units, and UniFi NAS units.
  • Made Storage Health admin source/device setup sections collapsible.
  • Generated Forgejo release notes from the registry release-history table instead of generic automated text.
  • Cached the latest dashboard snapshot and lazy-loaded admin Integration Health so reloads and settings pages do not wait on every live integration poll.
  • Combined Storage Health capacity and pool/volume details into per-system rows while keeping warning-specific details prominent.
  • Migrated TrueNAS Storage Health polling from deprecated REST calls to JSON-RPC over WebSocket.
  • Added TrueNAS JSON-RPC API-key fallback handling and clearer UniFi NAS SNMP empty-row diagnostics.
  • Scoped TrueNAS failed-job warnings in Storage Health to storage-related jobs so unrelated update jobs do not create storage warnings.
  • Showed alert reasons directly in the dashboard alert rail so top-level alerts are easier to identify.
  • Added UniFi NAS local Drive API polling with SNMP fallback for storage capacity and pool health.
  • Fixed UniFi NAS local API backend startup after adding Drive API polling.
  • Broadened UniFi NAS Drive API parsing and showed response-shape diagnostics when capacity still cannot be matched.
  • Added UniFi NAS SNMP positional row fallback for partial one-row capacity tables.
  • Added UniFi NAS SNMP sample-value diagnostics when capacity rows cannot be built.
  • Ignored UniFi NAS SNMP No Such Object replies and clarified when local Drive API credentials are required.
  • Broadened UniFi NAS local Drive API parsing for newer pool and global disk payloads.
  • Preferred UniFi NAS local login sessions over API-key auth when both are configured, with clearer auth-mode diagnostics.
  • Accepted bare host/IP values in UniFi NAS local API URL fields by defaulting them to HTTPS.
  • Fell back to UniFi NAS API-key auth when local session login requires MFA.
  • Avoided repeated UniFi NAS session login attempts after MFA or login-attempt rate-limit blocks.
  • Extracted Storage Health overview rendering from App.tsx and indexed storage checks in one pass.
  • Extracted backend module definitions and environment mapping from server/server.js.
  • Extracted Proxmox overview rendering from App.tsx and indexed Proxmox checks in one pass.
  • Extracted UniFi Network overview rendering from App.tsx and indexed device rows in one pass.
  • Let UniFi Network use configured Site ID and Host ID values when site discovery fails.
  • Extracted dashboard trend rendering from App.tsx and indexed diagnostic samples once per snapshot.
  • Extracted the shared backend JSON fetcher from server/server.js.
  • Extracted backend auth/session helpers from server/server.js.
  • Extracted dashboard history helpers from server/server.js.
  • Extracted dashboard alert aggregation helpers from server/server.js.
  • Extracted notification delivery helpers from server/server.js.
  • Extracted audit log helpers from server/server.js.
  • Extracted dashboard diagnostics summary helpers from server/server.js.
  • Extracted Seerr integration helpers from server/server.js.
  • Extracted Uptime Kuma integration helpers from server/server.js.
  • Extracted Proxmox, Plex, media, and Storage Health backend helpers from server/server.js.
  • Extracted UniFi Network backend helpers and discovery handling from server/server.js.
  • Extracted dashboard runtime caching, polling, and realtime payload orchestration from server/server.js.
  • Extracted SQLite persistence, settings, event-log, and legacy JSON migration helpers from server/server.js.
  • Extracted admin action handlers from server/server.js and the authentication screen from src/App.tsx.
  • Extracted the admin shell/sidebar from src/App.tsx and polished admin page navigation state.
  • Added shared status, check-dot, and empty-state UI primitives across dashboard surfaces.
  • Added stable loading skeletons for dashboard and admin health loading states.
  • Polished admin form controls, action buttons, and security/user form grouping.
  • Tightened dashboard integration card layout, meta rows, and card body scrolling.
  • Polished Storage Health unknown-capacity states and capacity row hierarchy.
  • Improved diagnostics drawer scanability with prioritized rows and status-toned headers.
  • Polished dashboard header controls, compact density, mobile layout, and keyboard focus states.
  • Added dashboard action tooltips and pressed states for toggle controls.
  • Made Proxmox backup task polling compatible with task endpoints that reject filter query parameters.
  • Improved lab-view separation for graph-heavy and image/logo-heavy cards.
  • Attributed Forgejo releases to the configured registry user instead of the Actions Ghost user.
  • Preserved the selected roadmap in repo docs and this wiki page.