Releases: martinkoutecky/tine
Tine v0.2.1
A maintenance release: namespaces round-trip with Logseq's default filename
format, graph switching fully resets the workspace, images are
drag-resizable, and a batch of editor/sidebar/quick-capture fixes.
Added
- Drag-to-resize images. Hover an image and drag the corner grip to resize
it. The width is stored as a percentage of the column (so it stays right
when the window or sidebar width changes) using Logseq's own image-metadata
brace —{:width "40%"}— written as a quoted EDN string so the same
file renders at that width in Logseq too. (Logseq's own resize writes raw
pixels; both round-trip.) - Quick-capture: optional page title. The capture window now has a page-title
field at the top — fill it to file the capture as a new page, leave it empty
to append to today's journal. The "…to submit" hint shows your actual
configured shortcut. - Sidebars are remembered across launches. The left/right sidebar open/closed
state and the right sidebar's items now persist (in the session file, since
WebKitGTK doesn't keep localStorage), so Tine reopens exactly as you left it. [[auto-closes its brackets ([[→[[]], caret between) like Logseq,
and typing the closing]]types through them so you never end up with]]]].- Open media in the default player. Inline video/audio now has an
always-available "open externally" button (shown on hover) — for when WebKit
renders the player but can't actually decode the file. - Startup debug mode. Run
TINE_DEBUG=1 tine(ortine --debug) to write a
timestamped startup trace — environment, milestones, panics (with backtrace),
and the frontend's own boot/errors — to a file (default/tmp/tine-debug.log).
Makes diagnosing a "won't start" report a single round-trip. See the README. - Software-rendering warning. If Tine detects it's painting on the CPU
(GPU acceleration unavailable — most often an AppImage whose bundled graphics
libraries don't match your system), it shows a banner explaining why scrolling
may feel slow and how to get the fast path back. Speed is the whole point; a
silent fallback shouldn't read as "Tine is slow." - Smooth scrolling (experimental, opt-in). Settings → Appearance →
Smooth scrolling animates the journal feed to smooth out WebKitGTK's stepped
mouse-wheel jumps. Off by default; a feel experiment, easy to switch back off.
Changed
/prioritynow leaves a trailing space so the next word or/command
flows without manually adding one. The convenience space is never saved
(trailing whitespace is trimmed, matching Logseq).
Fixed
- Namespaces round-trip with Logseq's default filename format. Tine now
honors:file/name-format: a graph without that key (Logseq's:legacy
default) encodes the namespace/as%2F, and:triple-lowbargraphs use
___. Before, Tine always used___and never decoded%2F, so a namespace
page created in Logseq on a legacy graph showed up as a literala%2Fbpage
(and vice-versa). Both formats now read and write the way Logseq does. - Switching graphs fully resets the workspace. Opening a different graph now
closes the previous graph's tabs (back to a fresh Journals tab) and clears its
recents and right-sidebar items, so stale pages from the old graph no longer
linger in tabs or the quick switcher — matching Logseq, which keeps one graph
open at a time. - Quick-capture window is no longer too tall. Its auto-grow is now capped at
half the screen height (was 80%); short captures still size to their content. - Backspace no longer eats the space before a word. Deleting the last letter
of a word kept removing the preceding space too (so you had to retype it);
the editor now keeps the trailing space while you type and only trims it on
save, matching Logseq. - Sidebar editing. The caret no longer vanishes after pressing Enter in a
right-sidebar block (it stays in the surface you're editing), and the
[[/#//autocomplete dropdown is no longer clipped by the sidebar — it now
renders above everything. - Click anywhere on a block row — including the empty space beside or below a
short line — now reliably places the caret in that block.
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).
Tine v0.2.0
The big one: Tine now opens, renders, and edits Org-mode graphs, gets real
in-block lists & checklists, learns to embed video/audio and manage media,
and handles custom journal date formats — on top of a round of data-safety and
performance hardening. Everything still round-trips your plain files; Tine never
takes over your graph.
Added
- Org-mode support. Open, render, and edit
.orgpages and journals:
headlines as blocks; org inline syntax (*bold*,/italic/,_underline_,
~code~,[[target][desc]]); TODO markers;#+BEGIN_SRC/QUOTEblocks; org
tables;#+page directives; inline timestamps; and admonitions/callouts.
Mixed.md+.orggraphs work, and the File format setting
(:preferred-format) chooses what new pages/journals are created in. An.org
file is only ever rewritten when Tine can reproduce it byte-for-byte —
anything it can't round-trip loads read-only, so it can never corrupt an
org graph. - In-block Markdown lists & checklists. OG-faithful
-/*/+bullets and
1.numbered lists inside a block, plus GFM[ ]/[x]checkboxes that are
distinct from TODO tasks. Caret-context editing (Enter continues the list,
re-indents, etc.), and numbered lists that number the block itself the way
Logseq does — with thelogseq.order-list-typeproperty kept invisible. - Video & audio embeds. Insert media as assets with an inline player that
falls back to a click-to-open chip when the platform lacks the codec
(common on Linux/WebKitGTK). - Drag-and-drop files. Drop files from your OS file manager onto a block to
insert them as assets. - Media management. Instant feedback when pasting an image; an
orphaned-media scanner (Settings → Backups) that findsassets/files no
block references and moves them to a recoverable trash (clickable names, file
dates, empty-trash button). New assets get human-readable, timestamped names. - Custom journal date formats. Tine now reads
:journal/file-name-formatand
:journal/page-title-format, so graphs that previously "wouldn't load" (e.g.
dd-MM-yyyy,yyyy-MM-dd,yyyyMMdd) open correctly; the display-title format
is pickable in Settings → Journals & tasks. - Duplicate-day reconcile. If two files resolve to the same day (e.g. a
2026_06_26.orgplus a title-namedFriday, 26-06-2026.orgleft over from a
date-format change), Tine keeps both rather than silently dropping one, and
Settings → Backups → Duplicate journal days lets you reach each file:
Open it (editable, saves back to itself), Merge a stray into the
canonical day, Rename it to a normal page, or Trash the redundant one. - Calculator block. An OG-style live, in-place calc block.
- Sticky, closable toasts. Notifications that need attention stay until you
dismiss them.
Changed
- The agenda (Scheduled & Deadline in the journal) hides
DONE/CANCELED
items, matching Logseq. SCHEDULED:/DEADLINE:are now detected anywhere in a block, not only on
the first line — so the badge renders and agenda queries match either way.
Fixed
- Rename is transactional and complete. A page rename + every
[[ref]]/#tag/tags::/namespace rewrite across the graph commits
all-or-nothing (re-checking each file just before writing, rolling back on
conflict), handles self-references, and leaves refs inside code fences and
bare URLs alone. Org[[file:…][desc]]link targets are rewritten too. - Context-menu "Rename page" now works (the WebKitGTK prompt was a silent
no-op). - CRLF line endings round-trip — editing a Windows-authored file no longer
flips every line and churns Syncthing diffs. - Linux AppImage: a Wayland EGL crash is auto-fixed at launch (no manual
LD_PRELOADneeded). - Several editor caret/selection fixes (multi-line Shift+Down block selection,
click-to-caret position, within-block Shift+Right). - Removed the per-file confirm when trashing media (it's recoverable and
batch-friendly).
Reliability & performance
- A data-safety audit pass closed concurrency and round-trip issues across the
rename, derived-result cache, and org write paths; Tine never silently
overwrites a file that changed on disk — it surfaces a conflict instead. - Inline parsing rewritten to be linear (was O(n²) on big blocks); the page cache
and derived results are nowArc-shared; query/backlink invalidation is scoped
to the pages that actually changed; per-block search/reference projections are
memoized; and the launch backup is staggered off first-paint I/O.
Notes
- macOS and Windows installers are currently unsigned — on macOS right-click →
Open; on Windows choose More info → Run anyway.
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).
Tine v0.1.4
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).
Tine v0.1.3
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).
Tine v0.1.2
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).
Tine v0.1.1
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).
Tine v0.1.0
Download an installer for your platform below. macOS/Windows builds are currently unsigned (right-click → Open on macOS; More info → Run anyway on Windows).