Releases: johannes-kaindl/slide-deck
Releases · johannes-kaindl/slide-deck
Release list
0.4.0
Follow-up to the Obsidian community-plugin review — clears the remaining advisories.
Changed
- Settings tab migrated to the declarative settings API (
getSettingDefinitions), replacing
the deprecated imperativedisplay(). Controls bind throughget/setControlValue; the
theme-key chips and the export-theme picker userender. No change to which settings exist or
how they behave. - Documentation — the per-slide layout syntax (templates, density modifiers, the
layout/column directives, inference) moved into a dedicated guide (docs/layouts.md,
docs/layouts.de.md); the README links to it. This also clears the review's README
"placeholder text" warning, which the literal<!-- layout -->directive examples had tripped.
Compatibility
minAppVersionraised from 1.8.7 to 1.13.0 — the declarative settings API requires
Obsidian 1.13.0. Users on older Obsidian releases should stay on 0.3.1.
0.3.1
Maintenance release for the Obsidian community-plugin review — no user-facing behaviour change.
Changed
- Obsidian lint compliance — cleared every
eslint-plugin-obsidianmdfinding from the
community-plugin review without inlineeslint-disablecomments:- Static inline styles (off-screen iframe staging, the deck-scale transform origin, the
preview overflow clip) moved into CSS classes (styles.css/STRUCTURE_CSS); only
genuinely per-render values (the fit scale and box size) stay inline viasetProperty. - The realm-safe HTML insertion in the renderer no longer uses
innerHTML— it parses with
DOMParserand imports nodes viaimportNode+replaceChildren(verified equivalent,
including Mermaid SVG namespacing). processFrontMatteraccess is typed instead of suppressed.- The two remaining file-scoped overrides (a lazy
require("electron"), a shadowed
deprecateddisplay()) are unavoidable and documented ineslint.config.mjs.
- Static inline styles (off-screen iframe staging, the deck-scale transform origin, the
- README — refreshed for the 0.3.0 template model (nine templates, density modifiers, deck
slots, smart layout inference, media-fill) and bumped the release badge.
Fixed
- CHANGELOG 0.3.0 incorrectly said "eleven" templates; the template count is nine.
0.3.0
Added
- Template/layout model — eleven per-slide templates (
default,title,section,quote,
image-focus,two-column,columns-3,stat,cover-image) plus combinable density
modifiers (compact,code-heavy), chosen with<!-- layout: <template> [modifier…] -->.
In multi-column layouts the title spans all columns. - Media that fills and centers — block images and Mermaid diagrams now occupy the available
space, horizontally and vertically centered and scaled to fit (object-fit: contain), for both
Obsidian![[embeds]]and standardimages — instead of flowing small and left-aligned. - Deck slots —
header:,footer:andpaginate:frontmatter render as floating corner
slots (pagination showsn / N). - Smart layout inference — with no explicit directive, a lone heading becomes
section, a lone
quote becomesquote, a lone image/diagram becomesimage-focus, and<!-- column -->splits
picktwo-column/columns-3; an explicit<!-- layout -->always wins. - Sparse slides compose vertically — slides with little content are vertically centered instead
of clinging to the top. - Per-theme code & Mermaid — a user
.csstheme can declare its highlight.js and Mermaid theme
via/* sd-hljs: … */and/* sd-mermaid: … */header directives, so dark decks get dark code
and dark diagrams.
Fixed
- Callout colours now derive from theme tokens, so dark themes render dark callouts without
per-theme overrides. - Mermaid diagrams scale to fill their area instead of being capped small.
0.2.0
Fixed
- PNG export no longer collapses inter-word spaces (switched the rasterizer from
html2canvas tomodern-screenshot). - PDF export now prints the theme background (
print-color-adjust: exactinPRINT_CSS) —
dark themes no longer print on white.
Added
- Mobile support (
isDesktopOnly: false) — the plugin now runs on iOS/iPadOS. All
desktop-only APIs are platform-guarded. On mobile, PDF export writes a self-contained HTML
file into the export folder and opens it via the OS (openWithDefaultApp); the user then
prints or shares to PDF from there. - Live theme switcher — the preview toolbar now has a theme dropdown for ephemeral try-on, a
source label (from frontmatter/from default/● unsaved) that disambiguates where the
active theme comes from, and a Set button that writestheme:into the note's frontmatter
viasetNoteTheme(processFrontMatter). Fixes the „theme dropdown does nothing" confusion. - User themes — drop
.cssfiles into the configurable themes folder (default
Slide-Deck-Themes/); the frontmattertheme:value is the filename without the.css
extension. Each file is a--sd-*token block with optional extra CSS; user themes inherit
the built-indefaulttheme's code-highlight and Mermaid styles. The Settings tab shows all
valid theme keys live. - Theme import/export — an Open in Finder button reveals the themes folder (drop files
in); Export theme as .css writes any theme as an editable.cssstarting point; a toggle
hides the themes folder in Obsidian's file explorer.
0.1.0
First release.
Added
- Markdown notes → slides — a
---separator line splits a note into individual slides;
YAML frontmatter (theme:,aspect:,minFontPx:) controls deck-level directives. - Live preview pane (
Open presentation previewcommand) — renders the current note as a
slide deck in the right sidebar, scaled to the pane width, with a source-jump link to each
slide's originating line. - Theme isolation — slides render inside a sandboxed iframe, so the active Obsidian theme
can never leak into the preview or the exports; a deck looks identical regardless of the vault
theme. - Four built-in themes —
default(light),dark,serif, andhigh-contrast, selected
per deck via thetheme:frontmatter; each carries a matching code-highlight and Mermaid theme. - Per-slide layouts —
title,two-column,image-focus,section, andquote, chosen
per slide with an HTML comment directive (<!-- layout: two-column -->) and a<!-- column -->
region separator. - Custom CSS — an optional CSS snippet (Settings) is appended to the deck styles for branding
and tweaks, in both the preview and the exports. - Fit-or-warn readability — each slide auto-scales its content down to a configurable
legibility floor (minFontPx, default 24 px); slides that would need even smaller text are
flagged as overflowing (with a click-to-source warning) rather than becoming unreadable. - PDF export (
Export presentation to PDFcommand) — prints the deck (one slide per page,
exact geometry) via the system print dialog (choose "Save as PDF"), theme-isolated. - PNG image-series export (
Export presentation to image seriescommand) — captures each
slide via html2canvas and writes numbered PNGs into a configurable export folder. - KaTeX math — inline
$…$and display$$…$$math. - Code highlighting — fenced code blocks highlighted by highlight.js (per-theme stylesheet).
- Accessible callouts —
> [!note],[!warning],[!danger],[!tip],[!info]blocks
rendered with redundant coding: border colour + geometric shape + visible label word (not
colour-only; WCAG 1.4.1). - Mermaid diagrams — fenced
```mermaid ```blocks rendered as SVG (per-theme). - EN/DE interface — all UI strings follow Obsidian's language setting (English canonical,
German supported); the settings tab and every notice are localized. - Settings tab — default theme, minimum body font size, image-export scale, custom CSS, and
export folder. - Pure-core architecture —
src/core/**is Obsidian-free and Node-testable; a core-purity
check and a realm-safety check run as part ofnpm test, alongside a real-bundle smoke test
and 63 unit tests.
Notes
- Desktop only (
isDesktopOnly) — PDF/PNG export needs a full browser DOM.