mirror of
https://github.com/grub-basket/SP.git
synced 2026-07-22 07:46:27 +00:00
4.8 KiB
4.8 KiB
0.76.13 — Right detail panel, Tasks panel v2, double-click to open
Right detail panel (0.74)
A new right-sidebar StashpadDetailView that surfaces the currently-cursored
note from the active Stashpad. Counterpart to the left-side panels view
(Pinned / Shared / Tasks) — left for navigation, right for current-row
inspection.
- Body + metadata rendered at the top, with the children list below.
- Outline expander on every child row that has descendants — a count badge (collapsed = muted, expanded = accent-tinted) drills the subtree open inline. State persists per row.
- Inline composer anchored to the bottom of the panel (always visible).
Submitting creates a child of the displayed note via the active view's
createNoteUnder, so the new note lands exactly where the panel implies.Shift+Enterinserts a newline. - Drag-reorder + full context menu on every child row, both delegating to existing view methods so behavior matches the main list.
- Stays pinned during background reorders — the panel no longer re-locks to the live cursor on every main-view render, so reordering children doesn't yank the panel off the note you're working on.
- Fixed the "two clicks needed" bug on first interaction — the panel
used to re-render on every
active-leaf-change, including when it became the active leaf, destroying the clicked element before the click event delivered.
Tasks panel v2 (0.76)
- Task model:
Htoggles a note as a task — adds thetaskfrontmatter tag and setscompleted: false(an unfilled checkbox).Hagain strips both. Legacytask: true/ barecompletedfields still count. Dopens a due-date / due-time picker. Date and time inputs are constrained to 260px and stacked one per row, each with a leading icon (calendar for date, clock for time). Native picker indicators on the right are hidden — the leading icon opens the OS picker viashowPicker. Presets: Today / Tomorrow / Next week. Clear and Cancel actions.- Status buckets: Overdue / Due today / Upcoming / No date / Completed.
- Sub-filter pill bar at the top with each bucket's count.
Allstacks every non-empty section; the others filter to a single bucket and drop the redundant in-list header. Active filter is remembered per session. No datechip added as a dedicated filter.- Filter chips moved from pill to 6px rounded corners to match the rectangular panel buttons above them.
Checkboxes on task rows (0.76.10–0.76.12)
- A task note now shows a clickable checkbox at the leftmost edge of its
row — in the main list (new leading grid column on
.is-taskrows) and in the detail panel's children outline. Clicking togglescompletedin place. - The checkbox fully swallows
mousedown/click/dblclick, so clicking it doesn't select the row, and a fast double-click toggles instead of opening the note. The row's double-click-to-open handler also explicitly skips the checkbox. - Fixed: completing a task in the main list and then creating another note no longer strips the completed item's strikethrough / checkbox styling.
Date display (0.76.6)
Two new General-tab settings:
- Date display format: Locale short / long, ISO, US, EU.
- Display timezone: any IANA name (blank = system), applied natively
via
Intl.DateTimeFormat'stimeZoneoption — no extra dependency.
Double-click to open (0.75)
- New General-tab setting "Double-click a note to open it" (on by
default). Double-clicking (or double-tapping on mobile) a list row
navigates into it — same as
ArrowRightor the enter arrow. Single click still just selects.
Performance (0.73.5–0.76.7)
- Viewport-driven lazy markdown rendering for note bodies in big lists.
Rows beyond the fold defer their
cachedRead+MarkdownRenderer.rununtil anIntersectionObserversays they're near the viewport. - Gated lazy render to lists > 60 notes so small lists don't pop in one frame after first paint.
- Shell rows for the lazy-body path — offscreen rows used to start as zero-height blanks; now they render a shell with the correct height so scroll position is stable.
- Optimistic note creation: new notes appear instantly without waiting for the metadata cache.
- Cached row overflow measurement. The "multi-second render after
adding a note" lag in 200+ child folders was 200 reflows interleaved with
DOM writes — each row's body ran an
rAFreadingscrollHeight/clientHeightto decide the 2-line clamp. Now memoized.
Visual polish (0.76.13)
- Count badges are now square (3px corner radius instead of 7px) in
both the Pinned panel and the detail panel's children outline. One shared
renderCountBadgehelper drives both, so they stay in lockstep.