Fixed
- Alt-modified literal delimiters now retain Logseq selection-wrapping
behavior. On layouts whereAlt + [still produces a literal[, two
presses wrap selected text as[[text]]and open page completion. Layouts
where Alt/Option produces another character keep native text input, and an
explicitly configured editor shortcut takes precedence. (GH #83) - The shared parser is updated to lsdoc 0.5.3. Native and browser-WASM
parsing now include the final issue #82 state-parity corrections, while the
Help with Tine oracle remains pinned to the exact released sources. (GH #82,
GH #111) - Help improve Tine now version-locks the complete lsdoc comparison oracle.
The mldoc parser, AST normalizer, comparator, and reference extractor are
pinned and checked as one bundle, preventing stale helper files from being
reported as real graph divergences. Context-dependent differences that reduce
to mldoc's known failed-double-backtick state leak are rechecked in fresh
parser realms and shown separately instead of counted as lsdoc bugs. (GH #82) - Double Enter now exits a trailing fenced code or calculator block. The
first Enter adds a blank code line; the second removes that sentinel and opens
a normal sibling block below. One Undo restores the entire pre-exit state. (GH
#93) - Imported preamble text, first-block page properties, and split middle-click
navigation now match the page that owns them. Ordinary Markdown before the
first bullet is visible without rewriting the file and becomes a block only
when edited; a properties-only first block uses the same page-property UI and
gear editor as an unbulleted pre-block; and middle-clicked page links open in
their source pane rather than whichever pane was focused earlier. (GH #85,
GH #86, GH #87) - Returning to a previously loaded large page no longer mounts it twice. A
pane now renders only the route whose asynchronous load actually completed;
obsolete load failures cannot replace a newer page, and the performance gate
compares every candidate on one machine with both an immutable long-term
anchor and the previous release. - Clicks inside inline code now put the caret on the clicked character.
Literal delimiters are mapped separately from their content instead of
snapping clicks to the start or end of the formatted span. (GH #114) - Quick Capture now requests native activation only after its editor is ready,
with bounded retries for newly mapped Linux windows. A missed initial show
event is reconciled without creating a focus feedback loop. (GH #117) - Table arrow-key navigation is now covered through the real global keyboard
path. The deployed app already had the Grid-equivalent behavior reported in
GH #113; component and Linux real-app regressions now guard it. - MKV videos play inline again on Linux. When WebKitGTK rejects Matroska from
Tauri's range protocol, Tine retries supported files through a graph-scoped,
size-bounded Blob; oversized or unsupported files retain the external-player
fallback. (GH #119) - System media players are launched outside Tine's runtime session. Linux
openers now inherit the KDE/Plasma session identity needed byxdg-open,
exclude AppImage loader paths, and start in a new session so VLC cannot load
Tine's bundled libraries or die with its parent process group. (GH #118) - MP3 and other graph audio play inline again on Linux. WebKitGTK protocol
failures retry through the same graph-scoped, size-bounded Blob path as MKV,
while expanded playback and external-player actions remain available. (GH
#121) - Page titles can reveal or open their exact source file on desktop. The
right-click menu flushes edits first, refuses save conflicts, preserves nested
and path-pinned Markdown/Org identity, and never exposes the actions for the
bundled Guide. (GH #84) - Published Guides now open on Welcome to Tine and preserve block-reference
navigation. Home links target the Welcome page, the alphabetical list remains
at All pages, and public reference targets expose keyboard-accessible counts
with links to public same-page and cross-page referrers. (GH #115, GH #116) - Published outline guides line up with their bullets. Inline block embeds
now use a single root marker instead of stacking host, list, and embedded
connector lines. (GH #122) - Mobile outlines use substantially more of the available screen width. At
phone widths, page gutters shrink from 48px per side to 12px per side while
retaining the device safe-area insets. - Writable pages have a quiet continuation target below their content. It
focuses an existing empty trailing leaf or creates exactly one root (one Undo);
zoomed outlines append within the zoom root, while Guide and read-only pages
remain immutable. (GH #96) - Ctrl+K now explains its search grammar in place. A keyboard-accessible
Search syntax button documents AND, OR, exclusion, phrases, and regex; Escape
closes the help before closing search, and every displayed example is executed
against both frontend and Rust matchers in tests. (GH #97) - Settings now has progressive disclosure and cross-tab search. Niche and
experimental controls live in persisted, accessible Advanced sections; search
covers labels, descriptions, and aliases, identifies the tab/section, and
temporarily reveals matching hidden controls without changing the saved
disclosure state. (GH #112) - Pasting selected structured content preserves its explicit outline. Safe
clipboard HTML is deterministically converted into nested lists, headings,
paragraphs, quotes, fenced code, links, emphasis, and one-block GFM tables;
malformed, semantic-free, or bounded-out payloads use the existing plain-text
path. The import is one normal persistence transaction and one Undo, while
Ctrl/Cmd+Shift+V remains literal plain-text paste. (GH #58)
Changed
- The frontend build and test toolchain has been security-updated. Vite 6
and Vitest 3 replace vulnerable development-only versions, with deterministic
SolidJS test resolution and zero known npm audit findings. - Block embeds now begin with one interactive root bullet instead of two.
The referenced root keeps its collapse, zoom, sidebar, navigation, and editing
behavior, while a slightly heavier descendant guide marks the embedded outline
without adding a surrounding box. (GH #88) - Bug reports now feed a durable regression and follow-up workflow. The issue
form asks for exact steps and an anonymized minimal graph, UI and non-UI bugs
share one indexed catalog, and a reporter's comment on a closed issue reopens
it automatically for triage. - Release publication now fails closed on an incomplete platform set. Tagged
releases require Android signing, a successful real offline Flatpak build,
lockstep version/changelog metadata, cross-platform-stable vendored oracle
bytes, all 21 expected artifacts, and all 12 updater platform entries before
the draft can become public. All expensive platform builds now run in parallel
into immutable workflow artifacts; one short publisher assembles the updater
manifest and performs the only GitHub Release mutation.
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 architecture. macOS and Windows builds are currently unsigned, so their operating systems may show a warning on first launch. On macOS, if Tine repeatedly asks to access Documents, see the workaround in the README.