Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions spec/SDD-Keylime-Monitoring-Tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |

---

Expand Down Expand Up @@ -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

Expand Down
31 changes: 31 additions & 0 deletions spec/SRS-Keylime-Monitoring-Tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down
Loading