feat(status): dedicated System Status page in the user menu (PMS-237) #117

Merged
longjacksonle merged 1 commit from feat/mapps-237-system-status into main 2026-06-12 07:16:55 +02:00

What

Promotes build/version info from the cramped bottom-left sidebar footer to a dedicated System Status page reachable from the user menu (next to Profile / Account Settings / Apps), and grows it into a real diagnostics surface with live API and dependency health (PMS-237).

Why

The only place to see which build was running was a tiny line in the sidebar corner, with no server-side info at all. Support and operators needed a single page that answers "what client build is this, what server is it talking to, and is everything up?".

Change

Client-only: mokosh-server already exposes GET /api/v1/version and GET /api/v1/ready publicly, so no server work.

  • New /system-status route (under AuthGuard, any authenticated user) with four cards: Client build (version/commit/date from build.rs), API server (reachability + server build from /version), Dependencies (database + Infisical badges from /ready), and Connection (resolved API base, OIDC issuer, hub URL). A Refresh button re-runs the probes.
  • Add pub fn api_base() and a tolerant pub async fn probe(path) -> Result<(u16, String), String> to hooks::fetch::api. probe returns the HTTP status and raw body together so the readiness endpoint's 503-with-JSON breakdown is still read instead of collapsing to an error.
  • Route::SystemStatus + handler in lib.rs, the pages::system_status module, and a "System Status" Link in the UserMenu dropdown.
  • The existing VersionFooter stays as the at-a-glance line.

Verification

  • cargo check --target wasm32-unknown-unknown, cargo fmt, cargo clippy clean (only the pre-existing rust-1.95-only manual_checked_ops lint, not in CI 1.94).
  • cargo test --lib: 58 passed.

🤖 Generated with Claude Code

## What Promotes build/version info from the cramped bottom-left sidebar footer to a dedicated **System Status** page reachable from the user menu (next to Profile / Account Settings / Apps), and grows it into a real diagnostics surface with live API and dependency health (PMS-237). ## Why The only place to see which build was running was a tiny line in the sidebar corner, with no server-side info at all. Support and operators needed a single page that answers "what client build is this, what server is it talking to, and is everything up?". ## Change Client-only: mokosh-server already exposes `GET /api/v1/version` and `GET /api/v1/ready` publicly, so no server work. - New `/system-status` route (under `AuthGuard`, any authenticated user) with four cards: **Client build** (version/commit/date from `build.rs`), **API server** (reachability + server build from `/version`), **Dependencies** (database + Infisical badges from `/ready`), and **Connection** (resolved API base, OIDC issuer, hub URL). A Refresh button re-runs the probes. - Add `pub fn api_base()` and a tolerant `pub async fn probe(path) -> Result<(u16, String), String>` to `hooks::fetch::api`. `probe` returns the HTTP status and raw body together so the readiness endpoint's `503`-with-JSON breakdown is still read instead of collapsing to an error. - `Route::SystemStatus` + handler in `lib.rs`, the `pages::system_status` module, and a "System Status" `Link` in the `UserMenu` dropdown. - The existing `VersionFooter` stays as the at-a-glance line. ## Verification - `cargo check --target wasm32-unknown-unknown`, `cargo fmt`, `cargo clippy` clean (only the pre-existing rust-1.95-only `manual_checked_ops` lint, not in CI 1.94). - `cargo test --lib`: 58 passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(status): dedicated System Status page in the user menu (PMS-237)
All checks were successful
Check / clippy + fmt + tests (pull_request) Successful in 52s
Create release / Create release from merged PR (pull_request) Has been skipped
065043a1eb
Build/version info used to live only in the cramped bottom-left sidebar footer. Promote it to a dedicated System Status page reachable from the user menu (next to Profile / Account Settings / Apps) and grow it into a real diagnostics surface.

The page renders four cards: the client WASM build (version/commit/date baked in by build.rs), live API server reachability plus the server's own build from the public GET /api/v1/version endpoint, the dependency readiness breakdown (database + Infisical) from GET /api/v1/ready, and the resolved runtime endpoints (API base, OIDC issuer, hub URL) for support. A Refresh button re-runs the probes.

mokosh-server already exposes /version and /ready publicly, so this is a client-only change. Add pub fn api_base() and a tolerant pub async fn probe() to hooks::fetch::api (probe returns status + body so the 503 readiness body is still read), the SystemStatus route + handler, the page module, and the user-menu Link. The existing VersionFooter stays as the at-a-glance line.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
longjacksonle deleted branch feat/mapps-237-system-status 2026-06-12 07:16:55 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
psa-systems/mokosh-apps!117
No description provided.