From 1ce5c732b752d5871919c46e659bb8f7e4837294 Mon Sep 17 00:00:00 2001 From: Gabriel Brown Date: Mon, 17 Aug 2026 11:49:41 -0400 Subject: [PATCH] Document the Panama calendar agenda --- config/dot/hypr/DESKTOP-PARITY.md | 29 ++++++++----------- config/dot/hypr/README.md | 18 ++++++++++++ .../plans/2026-08-17-calendar-agenda.md | 16 +++++----- .../2026-08-17-calendar-agenda-design.md | 5 ++-- setup/packages/hyprland-packages | 1 - 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/config/dot/hypr/DESKTOP-PARITY.md b/config/dot/hypr/DESKTOP-PARITY.md index 5d7c5b3..059f55d 100644 --- a/config/dot/hypr/DESKTOP-PARITY.md +++ b/config/dot/hypr/DESKTOP-PARITY.md @@ -17,10 +17,11 @@ Last live audit: 2026-08-17, Fedora 44, Hyprland 0.56.2, Quickshell 0.3.0. | Overview | Continuum filmstrip, large workspace preview, cross-workspace search | Live | | Minimise | `SUPER+SHIFT+X` sends to scratchpad; `SUPER+X` restores | Live | | Dock | Quickshell dock with GNOME favourites and intellihide | Live | -| Panel | Workspaces, CPU/RAM/GPU, clock, weather, media, clipboard, tray, status | Live | +| Panel | Workspaces, CPU/RAM/GPU, clock, weather, quiet event capsule, media, clipboard, tray, status | Live | | Clipboard history | Vicinae owns capture/storage; Quickshell provides the panel | Live | | Notifications | Quickshell server, toasts, grouped history, DND, clear actions | Live | -| Date menu | Notifications, month calendar, weather, conditional media card | Live | +| Date menu | Two-column Daybook with EDS agenda, notifications, month calendar, weather, and media | Live | +| Calendar agenda | Existing GNOME, Google, iCloud, and Nextcloud sources through Evolution Data Server | Live | | Quick settings | Wi-Fi, Bluetooth, audio input/output, caffeine, night light, focus | Live | | Focus sessions | Persistent workspace-bound timer, DND/caffeine coordination, Signal Glass controls | Live | | Brightness | Appears only when a backlight device exists | Live, not applicable on this monitor | @@ -49,8 +50,8 @@ Last live audit: 2026-08-17, Fedora 44, Hyprland 0.56.2, Quickshell 0.3.0. | Caffeine | Replaced by a real logind inhibitor in quick settings | | Blur My Shell / Openbar / User Theme | Replaced by the Prism shell and compositor blur | | Bluetooth Quick Connect | Replaced by the full Bluetooth picker | -| Wi-Fi QR | Package and UI support still to be completed | -| GSConnect | No paired phone profile was present; KDE Connect support is staged | +| Wi-Fi QR | Deliberately omitted; it is not useful enough to justify another credential-reading surface | +| GSConnect | No paired phone profile was present; KDE Connect is installed and awaiting pairing | | Home Assistant | Useful integration, but needs a purpose-built panel and secure credential migration | | Custom Hot Corners Extended | No action was configured, so there is no behavior to port | | App Hider | Hidden app list is now applied in Vicinae | @@ -61,25 +62,19 @@ Last live audit: 2026-08-17, Fedora 44, Hyprland 0.56.2, Quickshell 0.3.0. These are not blockers for normal use, but they are the remaining places where a polished general-purpose desktop can go beyond the current shell. -1. Calendar events, not just the month grid. The right integration point is - Evolution Data Server so existing GNOME/Google calendars remain the source - of truth. -2. Home Assistant favourites in a dedicated, secure quick panel. The token must +1. Home Assistant favourites in a dedicated, secure quick panel. The token must stay in the keyring or a private state file, never in this repository. -4. Phone integration through KDE Connect, including battery/share status in the - tray. The package is staged but needs installation and a new pairing. -5. Connected-network QR sharing after `qrencode` is installed. Password access - must be on demand and must never enter shell logs. -6. A printer administration GUI. CUPS is already active; the staged +2. Phone integration through KDE Connect, including battery/share status in the + tray. The package is installed and ready for a new pairing. +3. A printer administration GUI. CUPS is already active; the `system-config-printer` package supplies the missing UI. -7. A real external RustDesk test while hyprlock is active. Local process state +4. A real external RustDesk test while hyprlock is active. Local process state cannot prove what a remote client sees or whether input is accepted. -Packages staged in `setup/packages/hyprland-packages` but not installed in the -current session because privilege escalation requires an interactive password: +Supporting packages tracked in `setup/packages/hyprland-packages`: ```sh -sudo dnf install kde-connect qrencode system-config-printer tesseract zbar +sudo dnf install kde-connect system-config-printer tesseract zbar ``` ## Global menu decision diff --git a/config/dot/hypr/README.md b/config/dot/hypr/README.md index 259b44a..8fc917c 100644 --- a/config/dot/hypr/README.md +++ b/config/dot/hypr/README.md @@ -187,6 +187,24 @@ The mental model is unchanged from Forge: `E` mail · `I` Panama Settings · `CTRL + SHIFT + Esc` system monitor. GNOME Settings remains searchable in Vicinae for hardware and account panels. +## Calendar and notifications + +Click the clock to open the two-column Daybook on **Agenda**. The month grid, +today's schedule, Up Next, weather, and conditional media controls stay visible +together. `SUPER + B` opens **Notifications** in that same surface; returning to +Agenda preserves the selected date and visible month. + +Calendar data comes from Evolution Data Server, so the Google, iCloud, +Nextcloud, and local calendars already configured for GNOME remain the source +of truth. Panama never stores account credentials. Use GNOME Calendar or Online +Accounts to add and manage accounts, and click an event in Daybook to hand off +editing and full detail to GNOME Calendar. + +The right side of the bar shows a small calendar capsule only from 15 minutes +before a timed event until 5 minutes after it starts. It displays relative time +(`12m` or `Now`); the event title is available on hover but otherwise stays out +of the bar. All-day events never trigger the capsule. + ## Screen Intelligence `SUPER + SHIFT + S` opens the capture picker directly in Selection + Read diff --git a/docs/superpowers/plans/2026-08-17-calendar-agenda.md b/docs/superpowers/plans/2026-08-17-calendar-agenda.md index 7acf590..befe862 100644 --- a/docs/superpowers/plans/2026-08-17-calendar-agenda.md +++ b/docs/superpowers/plans/2026-08-17-calendar-agenda.md @@ -387,7 +387,7 @@ Allow Quickshell to hot reload, then run: ```bash tests/quickshell/calendar-agenda-contract.sh tests/quickshell/calendar-agenda-helper-contract.sh -qs log -n 80 | rg -i 'calendar|error|warn' +qs log -n -t 80 --no-color | rg -i 'calendar|error|warn' ``` Expected: both contracts PASS; no calendar QML error or bridge restart loop. @@ -723,7 +723,7 @@ git commit -m "Add the quiet calendar capsule" - Consumes: completed helper, service, Daybook, capsule, and test suite. - Produces: documented live behavior and a pushed sequence of reviewed commits. -- [ ] **Step 1: Update parity and operator documentation** +- [x] **Step 1: Update parity and operator documentation** In DESKTOP-PARITY: @@ -742,7 +742,7 @@ In Hyprland README document: Remove `qrencode` from `setup/packages/hyprland-packages` only if `rg -n qrencode .` confirms no remaining runtime consumer. -- [ ] **Step 2: Run static verification** +- [x] **Step 2: Run static verification** ```bash bash -n tests/quickshell/*.sh config/dot/quickshell/scripts/screen-intelligence @@ -755,7 +755,7 @@ git diff --check Expected: every command exits 0 and Hyprland reports `config ok`. -- [ ] **Step 3: Run every Quickshell contract** +- [x] **Step 3: Run every Quickshell contract** ```bash for test in tests/quickshell/*.sh; do @@ -765,7 +765,7 @@ done Expected: all prior contracts plus both calendar contracts report PASS. -- [ ] **Step 4: Verify the live calendar without leaking content** +- [x] **Step 4: Verify the live calendar without leaking content** Reset fixture mode and refresh: @@ -778,10 +778,10 @@ Poll status until `phase` is `ready` or `degraded`. Assert `sourceCount > 0`; re Test a Join action only when a recognized URL is already present; opening that URL is an external navigation and requires an explicit click in the local UI. Do not fabricate or modify an event for testing. -- [ ] **Step 5: Review logs and the complete diff** +- [x] **Step 5: Review logs and the complete diff** ```bash -qs log -n 250 | rg -i 'calendar|qml|error|warn' +qs log -n -t 250 --no-color | rg -i 'calendar|qml|error|warn' git status --short git diff --stat 5248883..HEAD git diff --check 5248883..HEAD @@ -789,7 +789,7 @@ git diff --check 5248883..HEAD Expected: no calendar QML errors, no bridge restart loop, no secrets, and only calendar/planned-roadmap changes beyond the already-approved desktop snapshot. -- [ ] **Step 6: Mark this plan complete and commit documentation** +- [x] **Step 6: Mark this plan complete and commit documentation** Mark completed checkboxes only after their commands actually passed, then: diff --git a/docs/superpowers/specs/2026-08-17-calendar-agenda-design.md b/docs/superpowers/specs/2026-08-17-calendar-agenda-design.md index e904bb4..2ce59bf 100644 --- a/docs/superpowers/specs/2026-08-17-calendar-agenda-design.md +++ b/docs/superpowers/specs/2026-08-17-calendar-agenda-design.md @@ -228,8 +228,9 @@ continuous animation. `Open Calendar`. - Malformed event fields are omitted individually rather than crashing the service. -- Event summaries, locations, URLs, and account names are never written to shell - logs, settings, fixture files, or repository content. +- Live event summaries, locations, URLs, and account names are never written to + shell logs, settings, fixture files, or repository content. Synthetic fixture + copy is intentionally generic. - The bridge does not access EDS authentication extensions or credential stores. - URL actions require a user click and only allow `https://` links. diff --git a/setup/packages/hyprland-packages b/setup/packages/hyprland-packages index 161e60d..550aa17 100644 --- a/setup/packages/hyprland-packages +++ b/setup/packages/hyprland-packages @@ -32,7 +32,6 @@ adwaita-sans-fonts qt6-qtwayland nm-connection-editor kde-connect -qrencode tesseract tesseract-langpack-eng zbar