- Middle-clicking a calendar week number threw ReferenceError: monday is not
defined (shipped in v1.5.1) — the variable was declared inside the click
closure and read from the sibling mousedown handler. Hoist it to weekStart.
- promptIcon guarded on if (iconName), so the picker's 'No icon' link
submitting '' was silently dropped and the old icon stayed. '' is a valid
value; always apply it.
- renderCalendar scanned vault.getFiles() per day cell (up to 42 full vault
scans per render); use the O(1) plugin.hasNoteForDate().
- Collapse ~180 lines of triplicated drag listeners into one
attachBookmarkDragHandlers(); replace (el as any).__dropAbove/__dropInto
stashing with a typed WeakMap; drop the getLeaf(x as any) casts.
- dragManager.dragFile was called twice per dragstart; call it once behind a
single narrowly-typed accessor.
- Cache the Lucide catalog per session instead of refetching the CDN on every
picker open; normalize IconSuggestModal to the file's const/arrow style.
- 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
New 'Filter tags' setting in Recent Files tab. Enter tag names one per line
to pin specific tags as filter pills. Leave empty to auto-detect from
frontmatter 'type' property (existing behavior).
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
When dragging B onto A, the result is now:
- New Group (empty, no file)
- File A
- File B
Previously the group inherited A's file, creating a self-referencing parent.
Drag-and-drop:
- Dropping a bookmark onto a file bookmark (middle zone) creates a new
parent note group containing both items
- Dropping onto a group still moves into the group as before
- All file/group bookmarks now accept drops (3-zone behavior)
Calendar:
- Fixed broken table layout caused by display:flex on td elements
- Uses vertical-align:middle instead for cell content centering
- Calendar cells still have configurable height via CSS variable
View:
- Chevron moved from left side to right side of bookmark rows
- Display settings applied as CSS variables on the view element
Settings:
- Tabbed UI with 4 tabs: Calendar, Periodic Notes, Recent Files, Display
- Display tab: row size, row spacing, indent size, font size, icon size, calendar cell size
- All settings use sliders with live preview and dynamic tooltips
- Reset to defaults button
CSS:
- Bookmark items use CSS variables (--wp-row-size, --wp-row-spacing, etc.)
- Calendar cells use --wp-cal-cell-size for configurable height
- Settings tab styling with active indicator
Recent files:
- Type filter bar with pill tags above the list
- Scans frontmatter 'type' property of each recent file
- Click a pill to filter, click again or 'all' to clear
- Active pill shows accent color
Calendar:
- Middle-click on day/week/quarter/month/year opens in new tab
- openPeriodNoteInLeaf() method for leaf-targeted opening
- More spacing: taller day cells, more padding, wider margins
Bookmarks:
- Right-click on recent file → 'Add to bookmarks' option
- 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
Drag-and-drop:
- 3-zone drop indicator for groups and parent notes (files with children):
top 25% = drop above, middle 50% = drop into, bottom 25% = drop below
- 2-zone for regular files/separators/spacers (unchanged)
- 'Drop into' shows background highlight instead of border line
- Circular reference guard: can't drop a group into itself or descendants
⋯ button:
- No visible button chrome when not hovered (no border, no background)
- Subtle opacity (0.6) at rest, full opacity on hover
- Hover shows text color change only, no background highlight
The icon picker now searches against the Lucide tags.json keyword list,
not just the icon name. Searching 'meeting' now finds 'calendar',
'red-heart' finds 'heart', etc. Tags are loaded alongside icon names
from the CDN with fallback.
- 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
- File bookmarks: middle-click opens in new tab, mod+click opens in new leaf
- Group bookmarks: middle-click opens group's linked file in new tab,
mod+click opens group's linked file (click still toggles collapse)
- 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