grub-basket_SP/release-notes/0.76.13.md

4.8 KiB
Raw Permalink Blame History

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+Enter inserts 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: H toggles a note as a task — adds the task frontmatter tag and sets completed: false (an unfilled checkbox). H again strips both. Legacy task: true / bare completed fields still count.
  • D opens 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 via showPicker. 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. All stacks 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 date chip 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.100.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-task rows) and in the detail panel's children outline. Clicking toggles completed in 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's timeZone option — 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 ArrowRight or the enter arrow. Single click still just selects.

Performance (0.73.50.76.7)

  • Viewport-driven lazy markdown rendering for note bodies in big lists. Rows beyond the fold defer their cachedRead + MarkdownRenderer.run until an IntersectionObserver says 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 rAF reading scrollHeight / clientHeight to 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 renderCountBadge helper drives both, so they stay in lockstep.