mirror of
https://github.com/grub-basket/SP.git
synced 2026-07-22 07:46:27 +00:00
release workflow reads release-notes/<version>.md when present; add 0.69.43 notes
This commit is contained in:
parent
3763e7d6a0
commit
b8db5253ea
2 changed files with 223 additions and 10 deletions
27
.github/workflows/release.yml
vendored
27
.github/workflows/release.yml
vendored
|
|
@ -30,21 +30,28 @@ jobs:
|
|||
echo "exists=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Generate release notes from commits
|
||||
- name: Generate release notes
|
||||
if: steps.check.outputs.exists == 'false'
|
||||
id: notes
|
||||
env:
|
||||
VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
LOG=$(git log --pretty=format:'- %s')
|
||||
else
|
||||
LOG=$(git log "$PREV_TAG"..HEAD --pretty=format:'- %s')
|
||||
fi
|
||||
NOTES_FILE="release-notes/${VERSION}.md"
|
||||
{
|
||||
echo "notes<<EOF"
|
||||
echo "## Changes since ${PREV_TAG:-the beginning}"
|
||||
echo ""
|
||||
echo "$LOG"
|
||||
if [ -f "$NOTES_FILE" ]; then
|
||||
cat "$NOTES_FILE"
|
||||
else
|
||||
PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
LOG=$(git log --pretty=format:'- %s')
|
||||
else
|
||||
LOG=$(git log "$PREV_TAG"..HEAD --pretty=format:'- %s')
|
||||
fi
|
||||
echo "## Changes since ${PREV_TAG:-the beginning}"
|
||||
echo ""
|
||||
echo "$LOG"
|
||||
fi
|
||||
echo "EOF"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
|
|
|||
206
release-notes/0.69.43.md
Normal file
206
release-notes/0.69.43.md
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
# Stashpad — Release Notes
|
||||
|
||||
A chat-style nested-notes view for Obsidian: rapid capture, outliner navigation,
|
||||
in-place editing. Local-only, no external services.
|
||||
|
||||
---
|
||||
|
||||
## 0.69.43 — search overhaul, sidebar panels, "When" filter builder *(current)*
|
||||
|
||||
### Sidebar panels + Pinned Notes (0.68)
|
||||
- New sidebar panels view; first panel is **Pinned Notes** (MRU targeting,
|
||||
drag-reorder, `P` keybind, strike-through on completed rows).
|
||||
- Search promoted to a panel-independent global actions row above the master
|
||||
button bar; an icon-only Search button also lives in the Stashpad header
|
||||
between the folder switcher and tags dropdown.
|
||||
|
||||
### Search modal overhaul (0.69)
|
||||
- Multiple matches in a long note surface as separate clustered result rows
|
||||
with ±2-line preview context (capped at 5 clusters per note).
|
||||
- Local-folder badge on every note row; N folder-open entries collapse into a
|
||||
single "Open folder in a new tab…" sub-picker.
|
||||
- Breadcrumb path line under the parent blurb (local + cross-folder).
|
||||
- Query-token highlighting in titles, previews, and parent blurbs.
|
||||
- `in:` now spans every searchable Stashpad folder, matching the parity of the
|
||||
time filters.
|
||||
- **Create-from-search:** when no results match, a "Create new: <query>" row
|
||||
appears. Picking it opens a destination picker across all Stashpad folders
|
||||
and spawns a new tab on the picked parent.
|
||||
- Re-pressing the search keybind while the modal is open focuses + selects-all
|
||||
in the search input (instead of stacking a second modal).
|
||||
- Tab is focus-trapped inside the modal (wraps instead of escaping to Obsidian).
|
||||
|
||||
### "When" filter builder (0.69)
|
||||
- Unified `before:` / `on:` / `after:` into a single **When** chip with
|
||||
Before / On / After / Between mode tabs.
|
||||
- **Day picker:** Today / Yesterday + Mon–Sun row; weekday names in the END
|
||||
slot of Between mode resolve to the next future occurrence.
|
||||
- **Timeframe picker:** preset chips (Last 7d / 30d / This week / This month)
|
||||
plus a "Last N units" stepper. When used with `on:`, relative durations are
|
||||
converted to a concrete `YYYY-MM-DD`.
|
||||
- **Custom time picker:** HH/MM fields, AM/PM toggle, 3×4 numpad, Tab cycling,
|
||||
24h support.
|
||||
- Keyboard polish: Enter/Escape stay inside the builder; popover keys don't
|
||||
leak to the result list; unhandled keys fall through to the rest of
|
||||
Obsidian's keymap.
|
||||
|
||||
### Composer undo fixes (0.69)
|
||||
- `Mod+Z` / `Mod+Shift+Z` in the composer now reliably triggers the textarea's
|
||||
native undo / redo. (Previously could accidentally undo the prior Stashpad
|
||||
action when the textarea was empty.)
|
||||
- Stashpad's own undo still works from the note list — blur the composer
|
||||
(`Esc`) first.
|
||||
- **Known issue:** `Mod+Backspace` (delete-to-line-start) in the composer is
|
||||
not yet undoable. Three different approaches were attempted (`setRangeText`,
|
||||
`execCommand`, manual in-RAM stack) and each broke something else;
|
||||
documented for a future attempt. `Opt+Backspace` (delete-word) is undoable.
|
||||
|
||||
### Other quality-of-life
|
||||
- Smart bracket pairing in the search input: auto-insert closing `]`,
|
||||
pair-delete on backspace.
|
||||
- Color filter menu no longer crashes on open (TDZ fix).
|
||||
- Breadcrumb infinite loop on cyclic ancestor chains fixed (visited-id Set).
|
||||
- Sub-picker close no longer dismisses the parent search modal.
|
||||
|
||||
---
|
||||
|
||||
## 0.62.4 — Tiny Mode, ribbon menu button, copy-codeblock keybind
|
||||
|
||||
### Ribbon icon (0.62.0–0.62.3)
|
||||
- Clicking the ribbon button now opens a searchable folder picker showing
|
||||
every Stashpad in the vault — leaves, folders, and a "Switch folder…"
|
||||
entry — instead of jumping to whichever tab happened to be open.
|
||||
- The "Open Stashpad in new tab" command also shows the picker on
|
||||
multi-folder vaults.
|
||||
|
||||
### Tiny Mode + view modes (0.61)
|
||||
- **Tiny mode** — pop the current Stashpad out into a small always-visible
|
||||
window with a minimal shell. Three view-mode buttons (Normal / Compact /
|
||||
Tiny) live in the header.
|
||||
- Compact rules apply to Tiny too; composer narrows below a 700px threshold;
|
||||
rail collapses on wide→narrow transitions.
|
||||
- Tiny window restores via `setBounds`; plugin stylesheet is injected into
|
||||
popout windows on open so styles work in detached windows.
|
||||
- Sticky toggle no longer resizes the window.
|
||||
|
||||
### Codeblock copy + Notification history
|
||||
- New default keybind (`{`) to copy code from a fenced code block under the
|
||||
cursor.
|
||||
- Notification history is now reachable from the actions menu; the log
|
||||
section moved to the top of settings.
|
||||
|
||||
### Ouroboros + selection polish (0.63)
|
||||
- Swap a note with its parent — with cycle guard, descendant-move recovery,
|
||||
and a "Confirm Note Swap" modal.
|
||||
- Siblings travel with the swap; undo is cycle-safe.
|
||||
- Multi-select: mod-click fully deselects; shift-arrow trims the range.
|
||||
|
||||
### Advanced search filters (0.64)
|
||||
- New `in:` / `before:` / `after:` / `on:` filters with a clickable chip row.
|
||||
- Multi-word filter values; bracketed values
|
||||
(`in: [copy stashpad features]`); date filters accept an optional
|
||||
time-of-day suffix.
|
||||
- `in:` matches "inside the subtree of a note matching this title."
|
||||
- Folder-open results are downranked when a filter is active.
|
||||
|
||||
### Unified folder picker (0.65)
|
||||
- One picker handles reveal / open / switch-current / create.
|
||||
- "Open in another new tab" pinned to the bottom.
|
||||
- Create always opens in a new tab; can convert existing non-Stashpad folders.
|
||||
|
||||
### In-Stashpad navigation (0.66 + 0.67)
|
||||
- Back / forward buttons in the breadcrumb and the tiny header.
|
||||
- Per-tab history covers folder switches (not just tree-up); persists across
|
||||
reloads; back falls through to navigate-up at the root.
|
||||
- Tiny header's folder/title is itself a folder-picker button.
|
||||
- `Mod+S` is the default keybind for the unified folder picker.
|
||||
- `cloneSubtree` snapshots children before insert and refuses same/descendant
|
||||
targets.
|
||||
|
||||
### Perf
|
||||
- Dropped `:has()` selectors, lazy anchor capture, removed a spurious
|
||||
composer retry path.
|
||||
|
||||
---
|
||||
|
||||
## 0.60.0 — Ribbon menu shipped first
|
||||
|
||||
### Ribbon icon
|
||||
- Ribbon click now opens a context menu listing every Stashpad — leaves,
|
||||
folders, and a folder picker — instead of jumping to whichever tab happened
|
||||
to be open. (Later refined into the searchable picker in 0.62.x.)
|
||||
|
||||
### Small-features batch (0.59)
|
||||
- Catch-all fixes: typo, slug, capitalization, select-all, export fixes,
|
||||
jump-to-parent across folders, breadcrumb count, color undo.
|
||||
- Keybind input: wider field with a "Use both" override; true auto-resize;
|
||||
cancel-restores-prior; dead-key starters (`Option+E` etc.) are now bindable.
|
||||
- Title-case folder labels in the switch-folder picker.
|
||||
- Scroll: the `preserve` policy sticks to the bottom when at bottom;
|
||||
`scrollListToBottom` uses a settle watchdog for at-bottom mutations.
|
||||
|
||||
---
|
||||
|
||||
## 0.58.2 — NotificationService, ScrollPolicy, picker unification
|
||||
|
||||
### Frontmatter recovery layer (0.54)
|
||||
- Redundant `parentLink` + `children` frontmatter so a note can be navigated
|
||||
up/down even if Stashpad's index breaks.
|
||||
- Home notes renamed to `Home-<folder>.md` with bootstrap-time backfill.
|
||||
- Rebootstrap button also backfills frontmatter; quiet when already in sync.
|
||||
|
||||
### NotificationService (0.55) — the headline feature
|
||||
- Centralized notification infrastructure.
|
||||
- Verbose notifications for delete / move / merge / clone / reorder.
|
||||
- Persistent history modal + settings entry + command.
|
||||
- Per-category mute settings UI; multiplayer (cross-author) filters in the
|
||||
history modal.
|
||||
- Bulk actions show bulleted summaries; toast CSS polish; multi-line errors;
|
||||
clear-history confirm.
|
||||
- Frontmatter sync: silent success, persistent toast on failure only; live
|
||||
notice for sustained queue activity.
|
||||
- Import error toasts get Reveal / Show actions; per-attachment delete toasts
|
||||
route through the service.
|
||||
|
||||
### ScrollPolicy + cursor restore (0.56)
|
||||
- New `ScrollPolicy` type wired through `render()`; `preserve` is the default —
|
||||
kills the post-action bouncing.
|
||||
- Anchor-row preservation (not pixels); follow-cursor on keyboard reorder;
|
||||
smart post-delete selection; nest picker selects the new parent; undo of
|
||||
nest highlights the un-nested note.
|
||||
- Last cursor row persists across reloads via localStorage; restored by id.
|
||||
|
||||
### Picker unification (0.57)
|
||||
- Token-order-agnostic matching in the suggest picker + folder picker.
|
||||
- Folder picker = Stashpad-only; destination + move pickers = cross-folder +
|
||||
roots.
|
||||
- Find modal → pick a Stashpad folder → opens in a new tab; spawned tab
|
||||
returns focus to origin on close.
|
||||
|
||||
### Context-menu polish (0.58)
|
||||
- Context-menu toggle complete; rebootstrap renames stale slugs and refreshes
|
||||
the command palette.
|
||||
- Icons for "Move to" / "Move to Home."
|
||||
- Notify on no-op moves (already at destination, or into self).
|
||||
|
||||
---
|
||||
|
||||
## 0.53.20 — Multiplayer authorship, per-parent sort, scroll-to-bottom
|
||||
|
||||
- **Multiplayer authorship** (0.51.11): author / contributor stamping, footer
|
||||
row in the view, log author column. Per-user identity stored in settings;
|
||||
author stub files live under `_authors/`.
|
||||
- **Per-parent sort dropdown** (0.52.0): sort each parent's children
|
||||
independently; drag reverts that parent to manual mode.
|
||||
- **Robust scroll-to-bottom** (0.53.x): adaptive scroll that survives slow
|
||||
markdown render on Obsidian reload — per-row ResizeObserver, sticky observer
|
||||
for the at-bottom branch, watchdog `requestAnimationFrame` polling for up to
|
||||
30s. `stickToListBottom` short-circuits the geometric check.
|
||||
|
||||
---
|
||||
|
||||
## Install
|
||||
|
||||
Compatible with Obsidian 1.7+. Install via BRAT from this repo, or copy
|
||||
`main.js`, `manifest.json`, and `styles.css` into a folder under your vault's
|
||||
`.obsidian/plugins/`.
|
||||
Loading…
Reference in a new issue