- onRename remapped paths by exact equality only, so files inside a moved
folder kept stale paths and the view then permanently deleted their
bookmarks on next click. Add pure remapRenamedPath() (path-utils.ts,
obsidian-free so it is unit-testable) and remap recentFiles + the whole
bookmark tree, folder moves included.
- saveSettings/saveWaypointData each did loadData -> mutate one key ->
saveData, so two concurrent saves carried a stale snapshot of the other
key and one silently reverted the other. Both now delegate to persistAll(),
which writes both keys from memory through a promise-chain mutex.
- data.json is read once in onload instead of twice; period sub-objects are
deep-merged so old configs pick up new fields.
- detectPeriodType now derives from the configured nameFormat with strict
moment parsing instead of hardcoded regexes, so custom formats work.
- Merge openPeriodNoteInLeaf into openPeriodNote(period, date, leaf?); stop
double-appending .md to templateFile; type the caught error as unknown.
- hasNoteForDate is synchronous and O(1) over a maintained basename Set;
delete dead getNotesForDate.
- Implement the previously dead omittedTags filter and the no-op
updateOn: 'file-edit' mode (vault modify event).
Shallow Object.assign on settings meant filterTags (new in 1.5.0) was
undefined for anyone with prior saved settings. Accessing .length on
undefined threw, killing the entire redraw before calendar could render.
- Defensive fallback: filterTags || []
- Deep merge on loadSettings for recentFiles, calendar, display
The limit was only applied on file-open and plugin load, not when the user
changed the maxItems setting in the settings tab. Now enforceRecentFilesLimit()
is called on every settings change via the onSettingsChange callback.
- Recent files are now persisted to disk and survive restarts
- Max items limit is applied on load (in case setting was reduced)
- Omitted paths regex filtering is now wired up in addToRecentFiles
- Fixed saveAndRefresh() overwriting entire plugin data on settings change
- Debounced disk writes (300ms) to avoid excessive saves on rapid opens
- Recent files right-click now has 'Add to bookmarks' option
- Calendar: middle-click on day/week/quarter/month/year opens in new tab
- Added openPeriodNoteInLeaf() method for opening period notes in a specific leaf
- File bookmarks can now have children, rendered with a chevron
- Group bookmarks can have an associated filePath; clicking opens the file,
clicking chevron toggles collapse
- 'Add as parent note' option in header context menu creates a group
with the current file linked
- 'Add child note' option in group context menu creates a sub-group
with the current file linked (parent note pattern)
- Default icon changed from 'file'/'folder' to '' (no icon)
- Chevron click always toggles collapse regardless of type
- Add 5 'Go to' commands with default hotkeys:
Ctrl+Shift+Alt+D/W/M/Q/Y for daily/weekly/monthly/quarterly/yearly
- Add 10 navigation commands (next/prev) for each period type
- Add detectPeriodType() and navigatePeriodNote() helpers
- Bump version to 1.1.0