Skip to content

Tine v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jun 23:16

Added

  • Hover an image → copy / trash (matches Logseq). Hovering an embedded asset now shows
    a small action bar (top-right): copy the image to the clipboard, or trash it —
    which removes the ![](…) reference from the block and moves the file to the recoverable
    trash (logseq/.tine-trash), after a confirm. Graph assets only.

  • Native window controls — Tine's window now fits in on each OS. On macOS the
    window gets real rounded corners and traffic-light buttons (a transparent overlay title
    bar) while keeping Tine's compact, single-row layout — no wasted title-bar row. On
    Linux/Windows a new Settings → Appearance toggle, “System title bar & window
    controls”
    , switches between Tine's built-in compact controls (default) and your OS's
    native window frame.

  • Spell checking in the editor (WebKitGTK's native checker). On by default, like
    Logseq: red squiggles while editing, with right-click suggestions and “add to
    dictionary”, using the system hunspell dictionaries. Beyond Logseq: check
    multiple languages at once — Settings → Editor discovers the dictionaries installed
    on your machine
    and offers them as a tick-list (with human-readable names; no locale
    codes to memorize), and every ticked dictionary is checked simultaneously, so a word
    valid in any of them isn’t flagged (bilingual editing). None ticked follows your OS
    locale. The toggle and selection apply live, without a restart (Logseq needs a
    relaunch). Install more dictionaries with your package manager (hunspell-cs, …) and hit
    Rescan.

  • Richer static HTML export — sidebar + fuzzy full-text search (closer to Logseq's
    published graphs). Every exported page now carries a persistent left sidebar with
    Favorites (from config.edn :favorites), Journals, and Pages sections and
    an active-page highlight, plus a search box that does fuzzy full-text matching
    over block content (vendored Fuse.js, tuned to Logseq's published-search params). Results
    show a page title + snippet and deep-link to the matching block (page.html#anchor) —
    every exported block now gets a stable anchor for this. The search index and page list are
    embedded as <script> globals and read locally (never fetched), so the exported site —
    including search — works offline / opened straight off disk (file://). Not yet
    included: Logseq's interactive graph view (a separate follow-up).

  • Org-style callouts on Markdown pages. #+BEGIN_NOTE / TIP / WARNING / …
    admonitions now render as colored callouts on .md pages, not only .org ones
    (on Markdown they were previously mis-read as a stray #tag). Both the
    Obsidian-style > [!NOTE] … and the org #+BEGIN_… … #+END_… forms now render
    as callouts in either file format.

Changed

  • Block rendering now parses Markdown/Org in-browser via WebAssembly (the same
    lsdoc parser the backend uses, compiled to wasm). Rendering is synchronous, so
    there's no more first-paint flicker on opening a page, and the hand-rolled
    TypeScript inline/markdown renderer (~1,300 lines) is gone — one parser now drives
    both the on-disk index and the on-screen render, so they can't drift. No change to
    how anything looks or round-trips.

  • The HTML export renders through the same parser, too. The static-export
    renderer now consumes lsdoc's canonical HTML skeleton instead of a second,
    hand-rolled Markdown renderer in the exporter — so exported pages match the app:
    code blocks, tables (with column alignment), callouts, and in-block lists all
    render faithfully, kept in lock-step with the live renderer by an anti-drift test.

Fixed

  • Headings render more like Logseq. A # heading block's larger font now applies to
    the heading's own line only — a > quote (or table, list, …) continuation in the same
    block renders at normal size again. And the bullet no longer jumps when you start a
    heading: while editing, the bullet stays put (the editor is plain-height); it only shifts
    to align with the larger text once rendered.

  • Parser rebuilt and upgraded (now lsdoc v0.2.5). The Markdown/Org parser was
    re-architected into a proper single-pass parser — an explicit container stack, no
    phase worse than O(n log n), gated byte-exact against Logseq's mldoc — replacing
    the earlier "optimistic" scanner that was quadratic on some inputs. Along the way,
    closer Logseq parity and hardened against
    pathological input. Corrected: lone-\r/CRLF left in content (Windows or pasted
    text), blockquote-with-marker text loss, a stray leading | being mis-read as a
    table (and inventing phantom block-refs), an org tag backslash-unescape, and an org
    property value mistaken for a page reference. Also fixes multi-second hangs and a
    couple of crashes on adversarial block content (e.g. long [/> runs). New
    Clojure-hiccup [:tag …] nodes render as literal text for now (an edge construct,
    absent from real graphs).


Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows). On macOS, if Tine keeps asking to access your Documents folder on launch, see the workaround.