aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-27 19:49:00 +0200
committerDanilo M. <danix@danix.xyz>2026-09-27 19:49:00 +0200
commit2dd08a66fe9e443564fe9dc3ee8cedda1c8a7425 (patch)
tree4d1f817fbc97c90cd799949794307db8c750cfd5 /docs/superpowers/specs
parent6d24906dd041d010ce8d1d629cbec8fffc9f06c6 (diff)
downloadcal-notif-2dd08a66fe9e443564fe9dc3ee8cedda1c8a7425.tar.gz
cal-notif-2dd08a66fe9e443564fe9dc3ee8cedda1c8a7425.zip
Add implementation plan, clarify offset lists and calendar names in spec
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/superpowers/specs')
-rw-r--r--docs/superpowers/specs/2026-09-27-cal-notif-design.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/docs/superpowers/specs/2026-09-27-cal-notif-design.md b/docs/superpowers/specs/2026-09-27-cal-notif-design.md
index 3a495b3..4d02f90 100644
--- a/docs/superpowers/specs/2026-09-27-cal-notif-design.md
+++ b/docs/superpowers/specs/2026-09-27-cal-notif-design.md
@@ -41,6 +41,8 @@ missing file works (VALARMs only, voice on).
```toml
calendars_dir = "~/.local/share/calendars" # vdirsyncer filesystem storage
+# A calendar's name is its `displayname` file (vdirsyncer metadata), else
+# its directory name. [defaults] keys and the picker use that name.
snooze = "5m"
rofi_theme = "~/.config/rofi/udt/list.rasi"
late = "10m" # deliver alarms missed by at most this much
@@ -70,7 +72,9 @@ config and its comments.
"other-uid@example.org" = [] # silenced
```
-Durations are strings of `<n>d`, `<n>h`, `<n>m` parts, e.g. `"1d 2h 15m"`.
+Durations are strings of `<n>d`, `<n>h`, `<n>m` parts, e.g. `"1d 2h 15m"`
+(one offset of 26h15m). Several offsets are a list in TOML, or
+comma-separated in the picker (`1d, 1h` is two alarms).
A calendar in `[defaults]` may also set `voice = false` via a table form
(`birthdays = { offsets = ["1d"], voice = false }`).
@@ -149,7 +153,7 @@ theme path is a config key (`rofi_theme`) defaulting to that file.
1. rofi lists occurrences in the next 30 days:
`dd.mm HH:MM · calendar · summary · [current offsets]`.
2. Second rofi menu for the chosen event, with the event's summary and time
- in `-mesg`: presets `10m`, `30m`, `1h`, `1d`, `1d 1h`, `none` (silence),
+ in `-mesg`: presets `10m`, `30m`, `1h`, `1d`, `1d, 1h`, `none` (silence),
`reset` (drop override). Free text is accepted and parsed as durations;
invalid input re-prompts with the error shown in `-mesg`.
rofi exits non-zero on Escape: treated as cancel, never as an error.