Changed
- Consecutive same-page query results share one heading. When a query is
sorted, several results from the same page that land next to each other in the
order now render under a single page heading, instead of repeating the heading
once per result. A page whose results fall at different positions in the sort
(e.g. an A and a C task under a priority sort) still appears at each of those
positions, and a page's blocks keep their document order under the heading. - A block that fails to parse no longer breaks rendering. The parser is now
guarded per block: if the WebAssembly parser ever traps on some block, Tine rebuilds
a fresh parser instance and retries; if that block still traps, it's shown as raw
text with a subtle marker while every other block renders normally — instead of the
whole view going blank until restart. (Defense-in-depth: lsdoc v0.4.1 has no known
trapping input; this guards the unknown.) - Parser updated to lsdoc v0.4.1. Two threads since v0.3.0: (1) a batch of
edge-case byte-exactness fixes that bring parsing closer to Logseq's own on
uncommon constructs — Markdown table-separator rules, LaTeX-environment tails,
definition lists, front matter, footnote definitions,>>/nested blockquotes,
Markdown comments, and inline backslash/backtick residue (so a handful of unusual
blocks now render exactly as Logseq renders them, where before they differed); and
(2) moreO(n²)→O(n)parse-path fixes (raw-HTML tag index,>-quote fallback
reparse, and the Markdown link-label scan), so pathological blocks parse fast.
Added
- Sort query results with one click. The visual query builder's Sort
control now leads with preset buttons — Newest first / Oldest first,
Priority A→C, Page A→Z, Deadline, Scheduled — so the common orderings
need no typing (a free-text field remains for sorting by any other property).
Newest first places results on one timeline: journal pages by the day they
represent (stable — not the file's modified time), other pages by when the file
was last modified, so journal-page and ordinary-page todos interleave
chronologically. These extend Logseq's property-only(sort-by …). - Copy/export "Rendered" mode resolves block refs and macros. Copying or
exporting in Rendered mode now flattens a((block ref))to the referenced
block's text and a user{{macro}}to its expansion, instead of the bare uuid or
the literal{{…}}— so the copied text matches what you see. Math stays as TeX
(which is what selecting rendered KaTeX copies anyway). - User
:macroscan expand to real blocks (OG parity). Aconfig.ednmacro
whose template is block-level Markdown — a heading, a list, multiple paragraphs —
now renders as real nested blocks instead of a flattened inline line. Single-
paragraph/inline macros still render inline. Unfilled placeholders ($5with only
two args) stay literal, and arguments now come straight from the parser, so a
quoted argument containing a comma is no longer split in two — all matching Logseq. - Headings stay heading-sized while you edit them (OG parity). Clicking into a
single-line#/##/###…heading now keeps the editor text at its heading size
and weight (the#markers stay visible at the same size), instead of shrinking to
body size on focus and jumping back on blur. Multi-line heading blocks edit at body
size (only the heading's own line is enlarged), matching Logseq's uniline rule. - Select text, then wrap it (OG parity). With text selected in the editor,
typing[twice wraps it as[[selection]]and opens the page search seeded
with those words — so Enter links it to an existing page or creates it (#18);
(twice does the same for a block ref((selection)). Emphasis marks wrap a
selection too:*/~/=/_(and the Org markers//+/^), so a second
press gives**bold**,~~strike~~,==highlight==. This is always on and
independent of the opt-in auto-pairing (which only affects the empty-caret case).
Fixed
- Clicking a query's collapse arrow toggles it, instead of editing the block.
The ▸/▾ arrow — and the other query controls (the title, result-page links,
table headers) — now run their own action on click and no longer fall through
into raw-text edit mode of the query block. - Collapsed query builders no longer flicker. On WebKitGTK, moving the pointer
off the page and back could flash a varying subset of collapsed{{query}}
boxes; each now sits on a stable compositing layer, so the compositor reuses its
texture instead of re-rasterizing it. - Deleting today's journal leaves an empty today. Right-clicking today in the
Journals feed and choosing Delete journal used to blank the top of the feed;
it now restores the empty, writable today placeholder — the same one you get on
reopening the journal — so you can start writing again straight away (#17).
Download an installer for your platform below. Windows users who prefer no installer can grab the portable Tine_*_x64-portable.zip — 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.