feat: make month week start configurable
Add a Monday-default --week-start option for every weekday and carry it through domain layout, full and compact rendering, event query windows, print mode, and the interactive TUI. Preserve byte-compatible Monday output and cover rotated headers, spill dates, invalid input, sanitizer behavior, and live terminal restoration.
This commit is contained in:
@@ -20,7 +20,11 @@ future sync workers
|
||||
|
||||
The domain layer uses C++20 `<chrono>` civil dates and time points. It knows
|
||||
nothing about escape sequences, files, OAuth, or HTTP. Month layout always
|
||||
produces 42 cells, starting on Monday, which keeps redraw geometry stable.
|
||||
produces 42 cells, starting on an application-selected weekday (Monday by
|
||||
default), which keeps redraw geometry stable. The selected week start rotates
|
||||
the header, grid spill cells, and the finite range queried for that grid. It is
|
||||
presentation input only: agenda windows, recurrence rules, and storage remain
|
||||
independent of it.
|
||||
|
||||
Events retain a stable UID, title, half-open start/end interval, all-day flag,
|
||||
optional descriptive fields, and calendar identity. Queries define overlap as
|
||||
|
||||
@@ -8,7 +8,8 @@ typeface and palette; Nocal owns hierarchy, spacing, and restrained emphasis.
|
||||
## Product principles
|
||||
|
||||
1. **The month is the home screen.** Launching Nocal immediately shows six
|
||||
complete Monday-first weeks. There is no dashboard or splash screen.
|
||||
complete weeks, Monday-first by default. `--week-start` can rotate the grid
|
||||
to any weekday. There is no dashboard or splash screen.
|
||||
2. **Useful at a glance.** Every visible day shows as many appointments as fit,
|
||||
ordered as all-day first and then by start time. A final `+N more` line is
|
||||
used instead of clipping silently.
|
||||
@@ -98,8 +99,12 @@ exact occurrence in the month grid. `Esc` or `g` closes the agenda without
|
||||
changing the month selection unless an occurrence was chosen. Hidden calendars
|
||||
remain filtered there, while calendar selection and search can overlay the
|
||||
agenda. Agenda navigation never persists state, and add/edit/delete remain in
|
||||
the month workflow. The next local-data work adds advanced recurrence overrides
|
||||
and rule editing.
|
||||
the month workflow. Week-start selection rotates only the month grid, header,
|
||||
and the visible range used by its month queries; storage, agenda windows, and
|
||||
recurrence rules are unchanged. The default remains Monday for backward
|
||||
compatibility. The CLI accepts the exact lowercase values `monday`, `tuesday`,
|
||||
`wednesday`, `thursday`, `friday`, `saturday`, and `sunday`. The next local-data
|
||||
work adds advanced recurrence overrides and rule editing.
|
||||
|
||||
## Local file interchange
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
- Occurrence-aware appointment search with exact result-to-grid navigation
|
||||
- Session calendar toggles shared by month rendering, focus, and search
|
||||
- Read-only 42-day agenda with bounded recurrence and exact return navigation
|
||||
- Configurable week start with Monday-default CLI and consistent grid queries
|
||||
- Explicit atomic import/export with validation, collision refusal, and backups
|
||||
- Meson build, Nix development shell, desktop entry, and Hyprland launcher
|
||||
- Seeded sample data when explicitly requested, never silent data mutation
|
||||
@@ -19,7 +20,6 @@
|
||||
## 0.1 — complete local calendar
|
||||
|
||||
- Advanced recurrence editing, RDATE/overrides, and embedded VTIMEZONE support
|
||||
- Configurable week start
|
||||
- Screen-reader-friendly linear view and full Unicode display-width handling
|
||||
|
||||
## 0.2 — durable cache and provider boundary
|
||||
|
||||
Reference in New Issue
Block a user