iPhone / iPad: join the public beta on TestFlight. A TestFlight build is published for most releases; it may lag this one by a few days.
Fixed
-
On Android 11 to 14 shared storage, creating, saving and renaming pages
failed with "Invalid argument (os error 22)", because the storage refuses
the rename that is guaranteed never to overwrite a file. Tine now checks
that the name is free and renames without the guarantee on storage that
refuses it. The same applies to network drives (NFS) that refuse it
(GH #538). -
Renaming a page that many pages link to, or a sync tool changing many
files at once, no longer holds up searches and references while Tine updates
its index. The update is written as one transaction instead of one per 32
pages, and copying the index's log into the index file moved off the update
onto a background thread. On a 10,000-page graph a rename now writes about
a third as much (603 to 200 MB) and finishes in half the time; on Windows,
where each of those copies flushed the disk, a rename took about a minute
(GH #543). Once copied, the log is emptied, so the next launch does not
copy it again. Internal: tine-storage v0.28.2. -
Typing in a block no longer resends the list of every linked page name to
the editor after each save when no link changed: a precision loss in the
check made it resend all of it, 307 KB on a 10,000-page graph (GH #543). -
A save refused to protect data in the file, such as a page with unresolved
merge markers or a page-header property moved into the outline, is now
reported once and not retried. v0.6.985 said this was fixed, but the app
still received the refusal asunknownand retried it (GH #535, GH #546). -
When a save fails because the device refuses a file operation, the message
now names the operation and the system's error number, so a report or
screenshot tells which step failed (GH #538, GH #590). -
Search no longer treats letters that differ by a mark as the same letter
where the mark makes a different letter or syllable:かno longer finds
が,иno longer findsй, and in Hindi, Thai or Tibetan a vowel sign
or virama is no longer dropped, soकno longer findsकु. Accents still
fold as before (cafefindscafé,γειαfindsγειά),елкаfinds
ёлка, andlodznow findsŁódź(likewise ø, đ, ħ, ŧ). The first launch
after this update re-indexes the graph once. -
A Ctrl+K search of one or two Chinese, Japanese or Korean characters, such
as会议or東京, now reads an index of those short words and visits only
the matching blocks. Before, it scanned every block, which for a rare word
took about 1.5 s per keystroke on a 10,000-page graph. Unlinked References
of a one- or two-character page name andcontent matchqueries use the
same index. It is built during the same one-time re-index as the change
above (GH #543). Internal: tine-storage v0.28.0, projection schema 31. -
Reopening a graph no longer makes Ctrl+K, Linked and Unlinked References,
query blocks, the page list and block reference counts wait while Tine
compares the graph on disk with its search index. Until that comparison
finishes they answer from the index as you left it, and they update by
themselves when it finishes, so a page edited in another app while Tine was
closed shows up then. Edits you make meanwhile show up at once. Actions
that depend on the answer, such as creating, renaming or deleting a page,
inserting a template or exporting, still wait for the comparison (GH #550). -
Reopening a graph no longer waits for a full check of the search index
before Ctrl+K, references and queries answer: that check took over a second
on a 10,000-page graph at every launch. The index is now checked in the
background, and only after the computer or phone restarted or once a week;
a phone closing Tine in the background never causes a check or a rebuild.
Damage the check finds still rebuilds the index (GH #550). -
A block reference whose target cannot be found now shows its full
((…))text, as Logseq does, instead of the first eight characters of its
id. This includes(((uuid))), which Logseq and Tine both read as a
reference to the id(uuid; write( ((uuid)))or[label](((uuid)))to
show a reference in parentheses (GH #589). -
Linked and Unlinked References no longer lose blocks from pages you edited
before restarting Tine. A block you added or moved on a page in one session
went missing from other pages' reference panels after a relaunch, and stayed
missing until that page was edited again. Looking such a block up by its
id after a relaunch works again too. The first launch after this update
re-indexes the graph once (GH #594). -
When the search index cannot be built, Linked and Unlinked References and
query blocks now say so instead of staying empty or "indexing" for the rest
of the session. Tine tries a failing build at most three times; after that
those panels show "couldn't be built" with a short code, a Retry button
and Create diagnostic report, and a relaunch tries again. Each failed
attempt is recorded in the diagnostic report as a fixed code with no graph
content. While the index is still building, Linked References shows
"indexing…" instead of hiding, and reads that can fall back to the pages
themselves, such as the page list, wait at most a minute for the index.
A page Tine cannot read, or one deleted while Tine was not watching, no
longer makes Linked or Unlinked References read every page in the graph
(GH #594). -
Ctrl+K answers a one- or two-character search in a large graph in a
fraction of the time: such a search now reads only the most recent blocks
and says More matches exist when older ones may match too, where it
could take over a second on a 10,000-page graph. A search in Chinese,
Japanese or Korean, where one or two characters are a whole word, still
searches every block. While the index is first being built, Ctrl+K answers
from the pages up to several times faster, and it switches to the index
sooner once the index is ready. While you type, the
previous results stay on screen until the new ones arrive instead of
blanking on every key, and Enter waits for the new results. With
--debug, the log says whether each search was answered by the index or
by scanning pages, and how long it took (GH #543). -
On a Mac, Tine now declares macOS 12.3 (Monterey) as its minimum, and the
startup message for a too-old web engine no longer says to update Safari: on
older macOS, updating the Safari app does not update the engine other apps
use, so the advice could not work (GH #572). -
On Windows and macOS, a page whose name differs from its file name only in
case (for example Contents stored ascontents.md) opens and can be
edited again. It failed with "could not be activated for editing" when
opened as the home page, from search or from the sidebar, and it could
appear twice in search. A file renamed by case only outside Tine, for
example by another device, is now listed once under its new name, and a
tab or Recent entry saved under the old spelling opens again (GH #597).
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. Windows builds are currently unsigned, so Windows may show a warning on first launch. The macOS build is signed and notarized. On macOS, if Tine repeatedly asks to access Documents, see the workaround in the README.