feat(diary): restore diary_start_week_day via configurable weekly naming
c63ec67 dropped diary_start_week_day, hardwiring the weekly diary to ISO
(Monday) weeks. Upstream vimwiki instead names a weekly note by the
week-start day's date (YYYY-MM-DD) and honours diary_start_week_day. Rather
than force one scheme, make it a per-wiki choice so migrators keep upstream
behaviour while existing nuwiki weekly files keep working:
- New per-wiki key `diary_weekly_style`: `iso` (default — `YYYY-Www`,
Monday-based, nuwiki's original) or `date`/`vimwiki` (`YYYY-MM-DD` of the
week-start day, upstream parity).
- Restored per-wiki key `diary_start_week_day` (`monday`..`sunday`, default
monday); applies only in `date` mode.
Implementation:
- nuwiki-core::date gains WeeklyStyle, WeekStart, and DiaryCalendar (owns
today/next/prev — date-mode snaps to the week-start and steps ±7 days;
iso/daily/monthly/yearly defer to the existing DiaryPeriod logic).
- WikiConfig gains the two fields (+ defaults, RawWiki, From) and a
diary_calendar() builder; commands.rs diary_open_relative and the
next/prev pivot use it.
Defaults preserve current behaviour (iso/monday), so no breaking change.
Tests: DiaryCalendar cases in nuwiki-core/tests/diary.rs (snap, ±7, sunday
start, iso delegation, daily) + config round-trip in
nuwiki-lsp/tests/index_and_config.rs. README + doc/nuwiki.txt + lua config
comment updated. fmt + clippy clean; all crate tests + config-parity green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -109,13 +109,18 @@ fix site.
|
||||
upstream `0`. _Fix:_ `wiki_defaults()` in `crates/nuwiki-lsp/src/config.rs` now
|
||||
defaults `diary_caption_level: 0` (year captions top-level, months one below),
|
||||
still per-wiki overridable. Test `defaults_carry_vimwiki_per_wiki_keys` updated.
|
||||
- [ ] **`diary_start_week_day`** — **wrongly removed** in `c63ec67`. The removal
|
||||
treated it as a server concern and hardwired the weekly diary to ISO-Monday
|
||||
(`crates/nuwiki-core/src/date.rs` `monday_of_iso_week`), but choosing which
|
||||
weekday the diary week begins on is a **client-side concern** and it **matters
|
||||
for parity** — non-Monday users lose the upstream option entirely. _Fix:_
|
||||
restore the config key client-side (`lua/nuwiki/config.lua`) and thread the
|
||||
week-start through to the diary date logic instead of hardcoding Monday.
|
||||
- [x] **`diary_start_week_day`** — removed in `c63ec67` (weekly diary hardwired
|
||||
to ISO-Monday). Restored as a **configurable choice** so migrators keep
|
||||
upstream behaviour while new wikis can use ISO weeks. New per-wiki key
|
||||
`diary_weekly_style`: `iso` (default — `YYYY-Www`, Monday-based, nuwiki's
|
||||
original) or `date`/`vimwiki` (`YYYY-MM-DD` of the week-start day, upstream
|
||||
parity, honouring the restored `diary_start_week_day` = `monday`..`sunday`).
|
||||
_Impl:_ `nuwiki_core::date::{WeeklyStyle, WeekStart, DiaryCalendar}` own the
|
||||
today/next/prev logic; `WikiConfig::diary_calendar()` builds it from config;
|
||||
the diary commands (`commands.rs` `diary_open_relative` + next/prev pivot) use
|
||||
it. Defaults keep existing nuwiki weekly files working (no breaking change).
|
||||
Covered by calendar tests in `crates/nuwiki-core/tests/diary.rs` and the
|
||||
config round-trip in `crates/nuwiki-lsp/tests/index_and_config.rs`.
|
||||
|
||||
## P3 — Niche / low impact
|
||||
|
||||
|
||||
Reference in New Issue
Block a user