Route the interactive Panama date menu

This commit is contained in:
Gabriel Brown
2026-08-17 11:32:57 -04:00
parent fb27c5b309
commit 6a1bec849d
6 changed files with 112 additions and 32 deletions
@@ -417,7 +417,7 @@ git commit -m "Add live calendar state to Quickshell"
- Produces: `ShellState.dateMenuPage`, `ShellState.toggleDateMenu(page)`, and `ShellState.openDateMenu(page)`.
- Produces from CalendarGrid: signals `dateActivated(date)` and `visibleMonthChanged(year, month)`.
- [ ] **Step 1: Extend the failing contract with page-routing assertions**
- [x] **Step 1: Extend the failing contract with page-routing assertions**
Append fixture assertions:
@@ -433,11 +433,11 @@ jq -e '.open == true and .page == "notifications"' <<<"$(qs ipc call calendar-ag
Update the calendar status response to include only `open: ShellState.notificationsOpen` and `page: ShellState.dateMenuPage` in addition to the non-sensitive fields from Task 2.
- [ ] **Step 2: Run the contract and verify RED**
- [x] **Step 2: Run the contract and verify RED**
Expected: FAIL because `dateMenuPage` and notification `open()` do not exist.
- [ ] **Step 3: Implement explicit ShellState routing**
- [x] **Step 3: Implement explicit ShellState routing**
Add:
@@ -462,7 +462,7 @@ function toggleDateMenu(page: string): void {
Change Clock activation to `ShellState.toggleDateMenu("agenda")`. Change notification IPC `toggle()` to `ShellState.toggleDateMenu("notifications")`, add `open()` using `openDateMenu("notifications")`, and leave `Super+B` routed through that IPC target.
- [ ] **Step 4: Make CalendarGrid date-aware and event-aware**
- [x] **Step 4: Make CalendarGrid date-aware and event-aware**
Replace numeric-only cell objects with full local `Date` values and add:
@@ -484,7 +484,7 @@ Every cell receives `markers: CalendarAgenda.markersForDate(cell.date).slice(0,
Month changes call `visibleMonthChanged(viewYear, viewMonth)`. Adjacent-month date activation changes month and selection in one click.
- [ ] **Step 5: Verify routing and grid contracts**
- [x] **Step 5: Verify routing and grid contracts**
Run:
@@ -496,7 +496,7 @@ rg -q 'dateActivated' config/dot/quickshell/modules/datemenu/CalendarGrid.qml
Expected: contract PASS and both interaction hooks present.
- [ ] **Step 6: Commit routing and grid behavior**
- [x] **Step 6: Commit routing and grid behavior**
```bash
git add config/dot/quickshell/services/ShellState.qml \