Skip to content

Releases: l05k/obsidian-native-slides

1.1.2

Choose a tag to compare

@github-actions github-actions released this 28 Sep 16:20
7c42049

Fixed

  • The core Backlinks plugin's in-document panel is hidden in Slides mode: with that plugin enabled and Backlinks in document on, the panel used to render at the bottom of the card during presentation. body.native-slides-mode .embedded-backlinks { display: none; } now hides it, and it is untouched everywhere else (#141). The rule 1.1.1 added for this named .backlink-container, which Obsidian 1.9.10 does not have anywhere in its DOM, so it was dead CSS and the panel stayed on screen; test/styles.test.ts now cross-checks the hidden set against the chrome list scripts/slide-geometry-snapshot.mjs watches, so the two hand-maintained lists cannot drift apart; whether a selector names an element that exists at all is what the snapshot's "(missing)" entry reports.

1.1.1

Choose a tag to compare

@github-actions github-actions released this 28 Sep 06:29
cc7a1ed

Fixed

  • 20 of the 34 !important declarations are gone, dropping the scanner's declaration-no-important count 34 → 14 and moving the CSS pass's --max-warnings baseline 44 → 24 in the same change, per the rule in docs/development.md. The rendering is unchanged: npm run check:style-snapshot reports no computed-style difference in any of the seven notes under Minimal or Blue Topaz, and npm run check:visual shows no visible difference as the pixel backstop. The 14 that remain are not one story — the mechanism each fights is in the docs/development.md baseline bullet, which is where the count is explained once (#133).
  • The marketplace scorecard's CSS warnings are cleared without moving a pixel: all: unset on the slides bar's nav buttons became the equivalent list of explicit resets, and 8 of the 13 :has rules became plain selectors — the image-centering rules, the two list-item pitch rules and the four list-bullet rules — each verified against 1.1.0 by the new slide-visual-check pixel capture. The !important declarations are deliberately left alone (dropping them is a one-at-a-time job whose gate is that same pixel check), and the 5 remaining :has rules (next-sibling and blank-line-before-heading) and the 4 text-indent rules need a CodeMirror ViewPlugin — all three are filed separately (#133, #134, #135, from #84).
  • Three findings from the scorecard's TypeScript pass: the two this.nav.push(...) calls are now awaited (the floating-promise rule), document.createElement("canvas") became createEl("canvas"), and the capacity notice reads "the slides layout" (sentence case) (#84).
  • A duplicate color declaration on the slides bar's nav buttons — the all: unset replacement above kept it alongside the rule's own color, which the scanner reports as a duplicate property.
  • Backlink panel now hidden in Slides mode: the Obsidian core plugin's .backlink-container is hidden via body.native-slides-mode .backlink-container { display: none; } so it does not appear at the bottom of the tab bar during presentation (#141).

1.1.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 17:59
33037c0

Added

  • Move slides in the slides panel: drag an entry to a gap in the list — or use the context menu's Move slide up / Move slide down, shown as Move N slides up / Move N slides down when a selection is being moved — and the deck is reordered. A 2px accent line marks the gap the slide would land in (above the first entry and below the last one included), the entries being moved dim while a copy follows the pointer, Escape cancels the drag, and a drop that changes nothing writes nothing. Dragging an entry that belongs to the selection moves the whole selection as one block, keeping the relative order of the slides you did not pick; dragging one outside the selection moves just that slide and clears the selection. A move rewrites the deck links of the slides whose next link actually changed and touches nothing else, so the panel, the slides bar's page number and ◀ ▶ navigation follow the new order immediately (#124). Two consequences are documented in the README: a move writes frontmatter, which Obsidian's undo (Cmd/Ctrl+Z) does not cover, and the panel has to be visible — Slides mode hides both sidebars.

Fixed

  • Card title stays on the card in themes that cap the readable line width: with Slides title = filename and a theme that declares its own line width — Minimal's --line-width: 40rem, Blue Topaz's --file-line-width: 45rem — the title drifted off the card's text column and its bottom rule was clipped, by 93–324 px at the default 23 px font and further as the font grew. There were two independent causes, and both are fixed. A theme caps the card's containing block (Blue Topaz's --file-line-width), which shrinks the card and parks it against the pane's left edge, while the title is positioned against the sizer — so the two stopped describing one column. And a theme restyles the title element itself (Minimal sets width: var(--line-width), max-width, and margin-inline: … !important), replacing the box the plugin positions with a 40rem box centred on the sizer. Slides mode now drops the readable-line-width cap on the card's containing block and pins the title's own width and margins, so the title's box and the card's text column resolve against boxes of the same width again. Property-backed titles were never affected (#125).

  • A deck taller than the sidebar scrolls in the slides panel: the entries were appended to the leaf's content element, which clips its children (overflow: hidden), so slides below the fold could not be seen or reached at all. They now live in Obsidian's own scrollable view content, allowed to shrink (min-height: 0) — which also gives the drag gesture something to scroll when the pointer reaches the panel's top or bottom edge. The panel's own 8 px inset goes with the move: the view content keeps Obsidian's default view padding instead of the removed .native-slides-panel padding rule (#124).

1.0.6

Choose a tag to compare

@github-actions github-actions released this 11 Sep 07:55
2d911b7

Fixed

  • Card title stays on the card when the editor pane is narrower than 80% of the window: the card was a fixed 80vw while the file-name card title's offset was measured against the pane, so with a wide sidebar, a split pane, or a window narrowed while a sidebar is open, the two disagreed — the card's auto-centring collapsed to the pane's edge and the title drifted out of the card, its bottom rule clipped short by the scroller. The card and the title now measure against one basis that is capped to the editor pane, so the title keeps lining up with the card's text column at any pane width (property-backed titles were never affected) (#120).

1.0.5

Choose a tag to compare

@github-actions github-actions released this 10 Sep 15:21
ba75f57

Fixed

  • Next page no longer drops rapid presses or swaps the deck under you: presses are queued and applied one open at a time, each anchored on the previous press's target, so a burst — key repeat, fast clicks on the bar button, or an impatient hand — advances one slide per press instead of collapsing into a single open (5 presses on a 6-slide deck used to advance one page, now they advance five, and presses past the last slide stay put). Navigation also stays inside the chain it started in: when two slides declare the same next slide (a shared deck link), stepping onto that slide used to re-derive the chain head from an arbitrary predecessor, so the reader was shown a different deck (landing on a slide labelled 3/4 after leaving 1/3) and Previous page went to the other predecessor instead of back where they came from. A navigation session now remembers the chain head it entered and walks the chain live from there, and the bar, the slides panel and the navigation all resolve through that same walk — so a deck edited mid-session (a slide created, renamed or deleted) is reflected immediately rather than navigated into stale paths (#110).

1.0.4

Choose a tag to compare

@github-actions github-actions released this 07 Sep 16:05
07cb726

Added

  • Initialize Slides with This Note command: promotes the active note into the head of a brand-new deck — its content, title and location stay put, and deck: [] is written onto its frontmatter (a single-slide deck). The command only appears in the command palette for notes that are not yet part of a deck (never misleadingly on deck notes), converts without a confirmation dialog, and auto-enters Slides mode afterwards (#98).
  • Context-aware command visibility: deck-navigation commands (Previous Page / Next Page, Create Next Slide) and Toggle Slides Mode now appear in the command palette only on deck notes; Initialize Slides with This Note only on notes not yet in a deck; Toggle Slides Bar only inside Slides mode. Commands that can't apply no longer clutter the palette, and the Previous/Next Page default hotkeys stop shadowing the editor's select-to-line shortcuts on plain notes (#98).

Changed

  • README is now a clean release page, docs moved to docs/: the implementation internals previously inlined in the README (the "How it works" mechanism table) move into docs/design.md (+ docs/design-zh.md), and the developer-facing build / dev-loop / debug-tooling sections move into a new docs/development.md (+ docs/development-zh.md). The README (EN/zh) now keeps only the user-facing tour — features, slides panel, example vault, getting started, a short Documentation index — plus known limitations, license and credits (#100).

Fixed

  • Copy AI agent prompt is always visible in the command palette: the command was registered with a checkCallback that returned false outside Slides mode, which hides a command from the palette (palette only lists commands whose check returns true) — it only appeared in the hotkeys settings. It now uses a plain callback: always listed, and shows a Notice ("enter Slides mode first") when invoked outside Slides mode.

1.0.3

Choose a tag to compare

@github-actions github-actions released this 28 Aug 13:30
2dceefc

Added

  • Copy AI agent prompt command: copies an AI-ready prompt to the clipboard — a short intro to how the plugin works (one screen = one card; a deck is a chain of notes via the deck frontmatter property; how Create new/next slide wire the chain), then the measured capacity of the live Slides layout · the screen and text-area dimensions (slides bar and card title reserves are subtracted, so the numbers always describe exactly the one screen you are looking at), the line box of each element type (H1/H2/H3, body, bullet, code, first image — measured on the current note, or derived from the pinned Slides typography when the note has none), how many latin/CJK characters fit per line, and capacity examples (body lines, bullets, H1 + bullets). The message follows the Obsidian UI language (Chinese when the app is Chinese, otherwise English). Run it inside Slides mode (#44).

Changed

  • Card title is editable (Slides title = filename): the card title now renders with the native inline title element instead of a painted pseudo-element, so clicking it focuses the real editor — typing renames the note, exactly as in Live Preview. The title keeps the card geometry (H1 metrics pixel-identical to a body H1, height reserved, click mapping unchanged). Property-backed titles remain read-only on the card; edit the property in the note's properties panel. The shared slide typography variables moved to the sizer so the card and its title resolve identical values (#87).

Fixed

  • Slides always open at the top of the note: entering Slides mode resets the editor scroller to its first line. Previously, a long note opened mid-document when the view-state switch restored the scroller to the saved cursor line without firing a scroll event afterwards — the capture-phase scroll reset never ran, and the card showed the middle of the note instead of its beginning.

  • No more phantom top padding on foldable lines: a long first line whose next line starts with deep indentation no longer gains a spurious empty row above it in Slides mode. Root cause: CodeMirror's internal zero-width cm-widgetBuffer placeholder (inserted when Obsidian marks the line foldable) was caught by the standalone-image centering rule and pushed the text down by a full line box; buffers are now excluded from that rule and taken out of the inline flow (#88).

  • Image layout is now a setting (Center images, default on): images render centered on the slide as a card block exactly as tall as the picture — the embed's img and Obsidian's inline-flex .image-wrapper are blockified inside a blockified embed, so no line-height strut (≈9px) stretches a standalone image line; text rows are the only added height. Turning the setting off restores Obsidian's native inline flow: images stay inline with the text (a small image and its caption sit on the same row), wrapping only when the row runs out of width. Pure CSS + one body class (native-slides-block-images) — no JavaScript tagging, no re-render certification (the standalone-image centering previously survived via JS-tagged lines and their re-render machinery; that whole mechanism is gone, and the bug it existed to fix is gone with it). The cm-widgetBuffer fix (#88) stays on always.

1.0.2

Choose a tag to compare

@github-actions github-actions released this 24 Aug 12:44
4581669

Changed

  • Reviewer linter round 2: settings styles are sentence-case (e.g. "Show previous/next buttons", "Auto-enter slides mode") and the notice prefix is "Native slides"; property values fall back to — instead of [object Object].

Fixed

  • Official plugin review linter — second report: the settings tab now persists declarative-control changes without touching the 1.13.0-only setControlValue base (minAppVersion stays 1.7.2) and no longer carries a "Native Slides · Settings" heading (both heading rules); bar markup uses createDiv/createSpan helpers instead of createEl("div"/"span"); the stored bar-widths check became a proper type guard (no unnecessary assertion).

1.0.1

Choose a tag to compare

@github-actions github-actions released this 24 Aug 11:49
18d0b89

Changed

  • Delete slides follows your trash preference: deleting slides from the panel now uses Obsidian's file manager (trashFile), so notes go to your configured trash location (vault trash or OS trash) instead of always the system trash.
  • Settings are searchable (Obsidian ≥ 1.13.0): the settings tab now implements the declarative settings API — every option appears in the Settings search — while keeping the classic form as a fallback for older Obsidian versions.

Fixed

  • Official plugin review linter compliance: replaced direct inline-style assignments with setCssStyles/setCssProps, document.createElement with Obsidian's createEl helpers, and the settings heading with a proper Setting heading; typed loadData/JSON.parse/Array() results, awaited revealLeaf, removed unnecessary type assertions, and cleaned up debug tooling (uses window.setTimeout, no more console dump). The minimum Obsidian version is raised to 1.7.2 (workspace.revealLeaf).

1.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 09:09
7c86888

Added

  • Slides panel: a new sidebar view (command Show slides panel, or the presentation ribbon icon) that lists every slide of the active note's deck in chain order, numbered; clicking an entry opens that slide. It follows the active note and stays in sync with deck edits — taking over the aggregation role the overview page used to play.
  • Create new slide starts new decks: running the command on a note that is not part of any deck creates a brand-new deck's first page — a fresh note (untitled-slides, collision-aware) with deck: [], leaving the note it was launched from untouched. It also works from a blank tab: the note lands in the default location for new notes.
  • Slides panel context menu — Create next slide / Delete slide(s): right-click a slide entry (or a multi-selection: Cmd/Ctrl-click toggles an item in and out — the only way to cancel one — Shift-click range-selects, and every Shift range also folds in the slide you are currently viewing, with the first Shift+click extending from it when nothing is selected yet) for Create next slide — inserts a new ⟨slide⟩-next note after the right-clicked slide without opening it — and Delete slide(s) — moves the notes to the trash and splices the deck chain around them (the predecessor's deck link jumps to the first surviving successor; deleting the head run makes the first survivor the new head with no rewrite needed). If the deleted set contains the currently open slide, the editor jumps to the nearest survivor (next one preferred). A confirmation dialog lists the notes about to be trashed and can be skipped globally via Settings → Confirm slide deletion (default on) or per-dialog with "Don't ask again".

Changed

  • BREAKING — Create Next Slide is deck-notes-only: the command now requires the active note to belong to a deck (greyed out otherwise); plain notes start decks with Create new slide instead.

  • BREAKING — next-only deck semantics (issue #67): a slide's deck property now holds at most one link — the next slide (last slide: deck: []). The overview back-link is gone; chains are resolved by walking backward via a reverse deck-link index. Old two-link decks ([overview, next]) are not understood — edit existing slides so deck holds only the next-slide link (old overview notes work unchanged as the chain's first page). This structurally eliminates the two-node deck ambiguity (#66).

  • BREAKING — page numbers are 1-based over the whole chain: the head slide is page 1; N / Total counts every slide (no overview offset).

  • Example vault demo deck reworked: one three-page demo deck — Welcome (a short design-principles intro, no bar properties) → Make it yours (the settings guide; carries series / level / date for the Bar properties demo, list indentation follows Obsidian's default) → Grow the Deck (deck: [], the last page); file names match the slide titles. The old overview page, the bar-properties / broken-link / folded-properties demos and all jyy lecture notes are gone, and every typography test note (kitchen sink + the five dev-only samples) moved to example-vault/tests/.

Removed

  • BREAKING — the overview page concept: no dedicated overview note is required; any note can head a deck. The New slides deck command is removed (Create Next Slide covers starting a deck), and the example vault's overview/Base-view setup is replaced by the slides panel.

Fixed

  • Slides card line overflow: with Obsidian's readable line width enabled, every editor line was sized for the full-width editor and spilled past the slide card's right border; lines now keep their natural width inside the card.
  • Slides panel sometimes needed a double click: clicking a slide entry could be swallowed when the click also activated the panel leaf (the list rebuilt mid-gesture, destroying the click target). The list now updates incrementally — unchanged decks only refresh the highlight — and entries always open in a markdown leaf, never replacing the panel itself.