diff --git a/spec/SDD-Keylime-Monitoring-Tool.md b/spec/SDD-Keylime-Monitoring-Tool.md index 2c8079e..8c29a03 100644 --- a/spec/SDD-Keylime-Monitoring-Tool.md +++ b/spec/SDD-Keylime-Monitoring-Tool.md @@ -1036,6 +1036,7 @@ Maximum 5 parallel concurrent log fetches to the Verifier API, enforced via Toki | Vite proxy for backend health checks | Avoids CORS failures in dev mode when probing backend settings endpoint | FR-077 | | Mock/Production URL presets | Reduces configuration friction; auto-detects active mode from saved URLs | FR-074 | | `#[serde(default)]` on Keylime models | Tolerates missing/renamed fields across Keylime API versions without breaking deserialization | NFR-002 | +| Timezone auto-detect with manual override | Default to browser timezone for zero-config; IANA dropdown for operators in different timezones than their fleet | FR-078 | --- @@ -1131,6 +1132,7 @@ Maximum 5 parallel concurrent log fetches to the Verifier API, enforced via Toki | FR-075 | 3.8.1 | `SettingsStore`, TOML persistence with atomic writes | | FR-076 | 3.2.2 | Layout hamburger button, sidebar CSS transition | | FR-077 | 3.2.2, 3.7.3 | 1s polling via `refetchInterval`, `probe_verifier()`/`probe_registrar()` | +| FR-078 | 3.8.2 | `visualizationStore`: timezone with auto-detect, IANA timezone dropdown in Settings | ### 6.2 Non-Functional Requirements diff --git a/spec/SRS-Keylime-Monitoring-Tool.md b/spec/SRS-Keylime-Monitoring-Tool.md index 41556de..c83814f 100644 --- a/spec/SRS-Keylime-Monitoring-Tool.md +++ b/spec/SRS-Keylime-Monitoring-Tool.md @@ -111,6 +111,7 @@ The System transforms Keylime from a CLI-driven security tool into a visual oper | FR-075 | TOML config file persistence for backend settings | MUST | Settings - Configuration Persistence | | FR-076 | Sidebar visibility toggle (hamburger button) | MUST | Dashboard - Navigation Structure | | FR-077 | Webtool backend health check with polling | MUST | Integration Status - Backend Connectivity | +| FR-078 | Timezone selection with auto-detect | SHOULD | Settings - Visualization | ### 2.2 Non-Functional Requirements @@ -2405,6 +2406,36 @@ Feature: Webtool Backend Health Check And the disabled sections MUST be re-enabled automatically ``` +### FR-078: Timezone Selection with Auto-Detect + +**Description:** The System SHOULD provide a timezone setting in the Visualization Settings section. The user MUST be able to either auto-detect the browser timezone or manually select a timezone from a dropdown list of IANA timezone identifiers (e.g. `Europe/Madrid`, `America/New_York`, `UTC`). When auto-detect is active, the dropdown MUST be disabled. The selected timezone MUST be persisted in localStorage via the visualization store and applied to all timestamp rendering across the dashboard. + +**Trace:** Settings - Visualization + +```gherkin +Feature: Timezone Selection + + Scenario: Auto-detect browser timezone + Given the user navigates to Settings > Visualization + When the user clicks the "Auto-Detect" button + Then the timezone MUST be set to the browser's local timezone + And the timezone dropdown MUST be disabled + And the preference MUST persist across sessions via localStorage + + Scenario: Manual timezone selection + Given the user navigates to Settings > Visualization + And auto-detect is not active + When the user selects "UTC" from the timezone dropdown + Then all timestamps across the dashboard MUST render in UTC + And the preference MUST persist across sessions via localStorage + + Scenario: Switching from auto-detect to manual + Given auto-detect is active and the timezone dropdown is disabled + When the user clicks the "Auto-Detect" button again to deactivate it + Then the timezone dropdown MUST become enabled + And the user MUST be able to select a different timezone +``` + --- ## 4. Non-Functional Requirements Detail