Skip to content

Releases: kidpeterpan/inkbound

Inkbound 1.7.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 14:37

Inkbound now runs on Obsidian mobile. Export a note, a folder, or a note and
everything it links to from your phone or tablet — and push it to your Boox
over Wi-Fi — without a computer anywhere in the loop.

  • iOS and Android support — the plugin loads and exports on Obsidian
    mobile, with the same three exports, the same chapter order, the same table
    of contents, and the same covers, math, diagrams and Thai fonts as on
    desktop.
  • Books are saved into your vault on mobile, in the folder set by the new
    Output folder (mobile) setting (Exports by default) — a phone has no
    save-anywhere filesystem. From there you can open the book in a reading app
    or reach it through your device's own file access.
  • Desktop and mobile have separate output settings, and each device only
    reads and writes its own. If you sync your vault, changing the mobile folder
    on your phone can never move where your desktop saves books.
  • Share last exported book — a new command hands the finished book to your
    device's share sheet. It appears only where sharing is supported; where it
    isn't, the book is still saved exactly where the notice said.
  • Progress while exporting — long exports now report chapter 3/24
    instead of sitting on a single message, on desktop as well as mobile.
  • Fixed: images served through app:// could resolve to a broken path.
    When the vault had no filesystem base path, the fallback that recovers such
    images by filename never ran. This affected every image on mobile, and any
    desktop vault whose adapter isn't a filesystem one.
  • Desktop exports are unchanged — same output folder, same file contents.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.6.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 06:32

Chapter titles now come from the notes themselves, so a book's table of
contents reads like a real book instead of showing filenames.

  • First-heading titles — each chapter's title is its note's first #
    heading (03_recursion with # Recursion now appears as Recursion),
    everywhere a chapter title shows up: the table of contents, the navigation
    document, and the "Linked from:" backlink trails.
  • Alias fallback — a note with no heading but a frontmatter aliases
    entry (plain string or list) is titled by it, mirroring how the book title
    is resolved.
  • Filename last — notes with neither keep the previous filename-based
    behavior, so nothing changes for books that don't opt in.
  • Deterministic and never-failing: title resolution can never abort an export,
    and empty or whitespace-only headings are ignored rather than producing
    blank titles. In folder exports the index note's own heading (often the book
    title) becomes the first TOC entry — expected behavior.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.5.1

Choose a tag to compare

@github-actions github-actions released this 13 Aug 02:22

Fixes every finding from the Obsidian community-plugin review.

  • Review blocker fixed — MathJax SVG parsing no longer assigns
    function-parameter strings to innerHTML; it parses through DOMParser
    with an instanceof SVGSVGElement guard instead (same behavior, lint-clean).
  • Code-masking sentinel — the math detector's code-region sentinel is now
    a private-use-area character instead of an ASCII control char, which the
    review's regex lint rejects.
  • createEl shortcutscreateDiv()/createSpan() replace the
    createEl("div")/createEl("span") forms the review's lint prefers; the
    embed-flattening path drops its document fragment for multi-node
    replaceWith.
  • Typed MathJax boundary — explicit casts over mathjax-full's
    loosely-typed adaptor surface (no more no-unsafe-assignment /
    no-unsafe-argument warnings).
  • Settings action contract — the declarative "Test connection" action
    returns void as SettingDefinitionAction requires.
  • The local-export harness installs the DOMParser/SVGSVGElement globals
    the new parsing path uses, so the harness keeps exercising real SVG
    parsing.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 01:56

Math in notes now exports as typeset pictures, so technical notes read
properly on e-ink.

  • Inline and display math$...$ and $$...$$ LaTeX renders at export
    time (MathJax, bundled and offline) and embeds as PNG images, the same
    strategy Mermaid uses, so it displays identically on readers that cannot
    draw inline SVG (verified: Boox Neo Reader).
  • Graceful degradation — broken LaTeX renders as MathJax's red error
    output with an export warning; non-Latin text inside math (e.g. Thai)
    restores the original source text with a warning; rasterization failure
    keeps a spec-valid inline SVG. Math never blocks an export.
  • Code-aware detection$ inside fenced code blocks, inline code
    spans, escaped \$, currency ($50), and empty/unclosed delimiters are
    never treated as math, matching Obsidian's own rules.
  • Deterministic rendering (identical exports from identical notes) is
    enforced by tests; the epubcheck sample now includes real MathJax SVG
    chapters.

Thai books now carry their own font, so Thai renders consistently on e-ink
regardless of the device's font coverage.

  • Noto Sans Thai embedded automatically — books whose chapters contain
    Thai get Regular + Bold (static instances, SIL OFL 1.1) written into the
    EPUB with @font-face rules and a font-family chain that keeps Latin in
    the reader's default font. The OFL license ships inside the book.
  • Embed Thai font setting (default ON) — OFF keeps every book
    fontless; books without Thai are structurally identical to pre-feature
    exports.
  • Fonts are bundled in the plugin (offline); a broken bundle degrades to a
    valid fontless book with a warning, never a failed export. epubcheck
    validates the font-bearing sample every CI run.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.4.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 12:38

The table of contents now reaches inside chapters, so long notes are
navigable on an e-ink reader without scrolling.

  • Heading sub-entries — every chapter's headings appear as nested links
    under its title in the EPUB's TOC (nav.xhtml), mirroring the document's
    heading hierarchy. Tapping one jumps straight to that section in the
    chapter.
  • TOC heading depth setting — a dropdown (default level 3) controls how
    deep the sub-entries go, from level 1 through level 6; Off restores the
    plain chapter-only TOC byte-for-byte.
  • First-heading rules — a chapter's leading # heading is its title and
    is not duplicated as a sub-entry; duplicate heading texts get unique
    anchors (-2, -3), and heading text with quotes, ampersands, or Thai
    characters displays correctly with valid, resolvable anchors.
  • Sub-entries link to anchors stamped into the chapter documents, keeping
    every book epubcheck-clean under EPUB 3.3 rules (verified with epubcheck
    5.3.0), including on books with duplicate or exotic heading text.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 10:36

Books can now carry cover art, and they show it off properly on an e-reader.

  • cover: frontmatter field — point it at an image in the vault (a
    path, a bare filename, a [[wikilink]], or an ![[embed]]) or at a remote
    URL, and the export embeds it as the EPUB 3 cover (properties="cover-image"
    • <meta name="cover">), so the Boox library shelf shows the artwork
      instead of a placeholder.
  • First-image fallback — no cover: (or legacy coverUrl:) at all? The
    first image embed in the metadata note (outside code fences) becomes the
    cover, so existing vaults gain covers with zero frontmatter changes.
  • Cover page — books with a cover open on a full-page, centered cover
    document as the first spine item. The cover page never appears in the table
    of contents; a landmarks entry keeps it reachable (epubcheck-clean under
    EPUB 3.3 rules, verified with epubcheck 5.3.0).
  • Formatspng, jpg/jpeg, and webp are accepted as covers (all
    EPUB 3.3 core media types); anything else degrades with a warning, and a
    broken cover: reference never fails an export — the book still builds,
    coverless, with a warning naming the file.
  • cover: takes precedence over the legacy coverUrl: when both are
    present; coverUrl: alone keeps working exactly as before.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 00:37

Block-scoped embeds (![[Note^blockid]]) now work for every kind of block
Obsidian lets you label, instead of only paragraphs and headings.

  • Tables, code blocks, callouts and blockquotes, and whole lists render their
    real content where they used to degrade to an "[embedded content omitted]"
    placeholder.
  • A block ID on a single list item now works too, and brings that item's
    nested sub-items along with it — matching how Obsidian itself displays a
    block reference to a list item. Sibling items are not included, and an
    embedded numbered item keeps its original number (embedding step 3 shows
    "3.", not "1.").
  • An indented block renders as the kind of thing it is: a nested bullet comes
    out as a bullet rather than a grey code box, while an indented-style code
    block keeps the indentation that makes it code.
  • The ^blockid marker itself is now guaranteed never to appear as stray text
    in an exported book, for every block type — including the paragraph and
    heading embeds that already worked. A caret inside embedded code (a regex, an
    exponent) is left untouched.
  • Individual table rows remain un-embeddable: Obsidian exposes a table as one
    whole block, so a ^id typed inside a cell is ordinary cell text. Such a
    reference degrades with the same "block not found" warning as any other
    unresolvable block ID.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 16:59

Chapters now carry a backlink trail: a "Linked from:" line listing every other
chapter in the same book that links to them, so a knowledge graph of
interconnected notes can be navigated backwards on an e-reader (#1).

  • Every export mode gets it (single note, folder, note + linked notes); a
    chapter nothing links to shows no line at all, and a single-note book never
    shows one.
  • Entries appear in the book's own chapter order, once per linking chapter,
    no matter how many times or in which form (alias, heading, block link,
    embed) it links.
  • A new Backlink listing position setting controls placement: start of
    chapter (default), end, both, or none — none restores the previous
    behavior exactly.
  • Works with any content language; the label itself is fixed English.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.0.8

Choose a tag to compare

@github-actions github-actions released this 31 Jul 11:57

Heading- and block-scoped note embeds (![[Note#Heading]], ![[Note^blockid]])
now render, instead of always degrading to a placeholder.

  • A heading-scoped embed shows that heading plus everything under it, down to
    the next heading of equal or higher level — matching how Obsidian itself
    scopes a heading link. Nested embeds inside the extracted section resolve
    the same way they do inside a whole-note embed.
  • A block-scoped embed shows just the single paragraph or heading carrying
    that block ID. A block ID on a list item, table row, or other block type
    still degrades to the placeholder — extracting those would require
    synthesizing a wrapping list/table around a single item just to keep the
    output valid, which isn't attempted here.
  • An embed whose note exists but whose heading or block can't be found
    degrades to the existing placeholder with a warning that specifically says
    so ("heading not found" / "block not found"), distinct from a missing note.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.

Inkbound 1.0.7

Choose a tag to compare

@github-actions github-actions released this 31 Jul 06:17

Note embeds (![[note]]) now actually work in exported books.

  • Embedded notes render their real content into the chapter, exactly once,
    where the embed appears. Previously an embed could come out as a bare note
    name with no content, or duplicated — Obsidian fills embeds in asynchronously
    on its own schedule, and the export raced it. The exporter now renders its
    own copy of each embedded note and ignores whatever Obsidian's loader did or
    didn't produce in the meantime, so the result no longer depends on timing.
  • Nested embeds render recursively; circular embeds are cut off safely with a
    warning instead of hanging the export.
  • A broken embed (renamed or deleted note) degrades to a readable
    [embedded content omitted: ...] placeholder plus an export warning —
    Obsidian's "is not created yet. Click to create." text no longer leaks into
    the book. Heading- and block-scoped embeds (![[Note#Heading]]) degrade the
    same way with an "unsupported embed scope" warning; rendering just the
    referenced section is not supported yet.
  • Image embeds (![[figure.png]]) are unwrapped to a plain image tag with the
    caption as its alt text — the wrapper markup Obsidian emits is not valid in
    EPUB XHTML and was failing epubcheck.
  • If the vault hasn't allowed Mermaid rendering (Obsidian's per-vault trust
    prompt), the export keeps the diagram's source as a code block and warns,
    instead of shipping the trust prompt's UI — including its inert "Allow"
    button — into the book.

Install manually by downloading the assets below into <vault>/.obsidian/plugins/inkbound/, then enable Inkbound in Settings → Community plugins.