Document the Panama calendar agenda

This commit is contained in:
Gabriel Brown
2026-08-17 11:49:41 -04:00
parent f9cc15fb96
commit 1ce5c732b7
5 changed files with 41 additions and 28 deletions
+12 -17
View File
@@ -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
+18
View File
@@ -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
@@ -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:
@@ -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.
-1
View File
@@ -32,7 +32,6 @@ adwaita-sans-fonts
qt6-qtwayland
nm-connection-editor
kde-connect
qrencode
tesseract
tesseract-langpack-eng
zbar