Skip to content

Tine v0.4.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 14:02

The headline of 0.4.0 is that Tine now runs on Android — a native build that
reads and writes your real Logseq graph on the phone, sharing the same Markdown
files with Logseq over Syncthing. This release also folds in the whole 0.3.x
series (PDF export, task checkboxes, in-page find, time tracking, the theme
gallery, and more).

Installing on Android: the APK is sideloaded and signed with Tine's own key
(not a Play Store key), so Google Play Protect will warn that it "doesn't
recognize this developer" — expand the dialog and choose to install anyway
(some devices ask you to confirm with your fingerprint). That's expected for
any app from outside the Play Store. Also, if your graph doesn't open on the
very first attempt, restart the app and try again — a known first-launch
hiccup we're still chasing.

Added

  • Tine runs on Android. A native Android build (Tauri v2) opens and edits
    your real Logseq graph. On first run, grant Tine "All files access", then pick
    your graph folder (e.g. your Syncthing-synced notes) — Tine reads and writes
    the same Markdown files as Logseq, so the two coexist on one graph. The file
    watcher runs in poll mode, so external edits (Logseq mobile, Syncthing) appear
    live.
  • Above-keyboard editing toolbar (Android). While a block is focused, a
    toolbar docks above the keyboard with the keyboard-only actions — outdent /
    indent, move block up / down, soft line break, TODO, date, [[ ]] / (( )),
    the slash menu, and hide-keyboard.
  • Android quality-of-life. A real Tine app icon, an edge-to-edge layout that
    keeps the toolbar clear of the status/navigation bars, a hardware Back button
    that navigates within Tine (exiting only at the root), and mobile-tuned journal
    headers and settings.
  • Signed Android releases, built in CI. Each tagged release builds a
    release-signed Tine_<version>_android-arm64.apk on GitHub Actions (arm64
    devices); the signing key lives only in encrypted CI secrets.
  • Built-in theme gallery. Settings → Appearance now has one-click Default,
    Nord, Solarized, and Gruvbox cards, each covering both light and dark mode. The
    selected gallery theme is saved through Tine's backend app settings
    (theme.gallery), not WebKit localStorage, and applies as a managed
    #tine-theme layer before the user's logseq/custom.css, so hand-written graph
    CSS still wins.
  • In-page find on normal pages. Mod+F opens a browser-style find bar with
    next/previous navigation, match counts, and non-destructive highlights. Matches
    come from the loaded block model rather than the mounted DOM, so text under
    lazy-rendered or collapsed branches is counted and the target branch is expanded
    before the active hit is scrolled into view.
  • Logseq-compatible time tracking. Moving tasks into DOING/NOW clocks in,
    and moving them back to TODO/LATER or into DONE clocks out by writing OG
    :LOGBOOK: CLOCK: rows. The writer uses Logseq's local timestamp shape,
    English weekday abbreviations, default seconds mode, and the exact => span
    spacing; elapsed badges on DONE/TODO/LATER blocks show recent CLOCK rows in
    a tooltip. The feature is gated by :feature/enable-timetracking? (default on).
  • Rendered copy is more faithful. Copy / export → Rendered now preserves
    $…$ / $$…$$ math delimiters, pre-warms off-screen block refs before copying,
    resolves {{embed}}, {{query}}, and media/widget macros to sensible text forms,
    and adds a Resolve refs fully toggle for multi-line block refs. Query exports
    are capped and visibly marked when truncated; full math-typeset-to-plain-text is
    still tracked separately.
  • Sub-directory scan Phase 2 polish (#21).
    Sync-conflict and duplicate-day journal scanners now recurse under pages/ and
    journals/ through the same page-file walker as the main scan, so nested
    conflict copies are surfaced. The Pages list also disambiguates basename
    collisions only when needed (foo — client-a/) and opens file-backed entries by
    graph-relative path, so colliding nested pages save back to their own files
    without creating a flat twin.
  • Logseq --ls-* theme CSS mostly works in custom.css. Tine now seeds the
    common OG color variables and routes its own theme tokens back through them, so
    Awesome-Styler-style themes can recolor backgrounds, text, links, borders, bullets,
    selection, marks, and inline code while Tine's default light/dark themes stay
    visually unchanged. This is CSS theme compatibility only, not Logseq plugin support.
  • Pages in sub-directories are now scanned (#21).
    Like Logseq, Tine walks pages/ (and journals/) recursively, so pages filed
    into real sub-folders — e.g. archiving pages/client-a/… — appear in the page list
    and are searchable and linkable instead of being invisible. A nested page is keyed by
    its file name (pages/client-a/foo.md → page foo), matching Logseq, and edits
    save back to that file in place. Namespaces (parent/child) remain the flat
    parent___child.md filename encoding, not real folders — also matching Logseq.
    The file watcher also descends sub-directories now, so a page added in a sub-folder
    (or delivered there by Syncthing) while Tine is open appears live, without a reopen.

Download an installer for your platform below. Windows and Linux ship both x64 and ARM64 builds (match your CPU). Windows users who prefer no installer can grab the portable Tine_*-portable.zip for their arch — unzip and run the exe (needs the WebView2 runtime, preinstalled on Windows 10/11). 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.