feat: add bounded agenda view
Add a read-only 42-day occurrence agenda with keyboard navigation, six-week paging, exact return-to-grid focus, search and calendar overlays, and bounded recurrence expansion. Keep agenda state outside persistence, document month-only mutations, and cover empty windows, filtering, overlays, navigation, rendering, and terminal restoration.
This commit is contained in:
@@ -42,10 +42,18 @@ rule cannot turn an interactive query into unbounded work.
|
||||
|
||||
Calendar visibility is session presentation state. The controller derives its
|
||||
calendar list from event calendar identifiers and applies the same domain
|
||||
predicate to month rendering, focus traversal, and search. Hidden events remain
|
||||
in the canonical collection passed to persistence, and focus identities are
|
||||
always derived from that complete collection so filtering cannot renumber
|
||||
events with duplicate or missing UIDs.
|
||||
predicate to month rendering, agenda queries, focus traversal, and search.
|
||||
Hidden events remain in the canonical collection passed to persistence, and
|
||||
focus identities are always derived from that complete collection so filtering
|
||||
cannot renumber events with duplicate or missing UIDs.
|
||||
|
||||
The agenda is a TUI projection over domain occurrence queries, not a second
|
||||
calendar model. It requests exactly one 42-day window at a time so recurrence
|
||||
expansion remains finite, preserves occurrence identity when returning to the
|
||||
month grid, and keeps its window and selection as non-persistent controller
|
||||
state. Calendar and search overlays may be opened above it, but mutations stay
|
||||
in the month workflow and continue to operate on the canonical event
|
||||
collection.
|
||||
|
||||
Timed events retain their source basis: UTC, floating process-local time, or an
|
||||
IANA `TZID`. C++20 time-zone conversion keeps zoned recurrences at their civil
|
||||
|
||||
Reference in New Issue
Block a user