Tisty 1.13.0
Nothing to migrate: the log stays on schema 12, so this build and 1.12 read each
other's stores and you can update one machine before the other. A setting this
build adds is one 1.12 ignores, and going back leaves nothing behind that gets
in its way.
The Store hands the update over without leaving the window
A copy installed from the Microsoft Store used to be told a newer Tisty existed
and sent off to find it. It now asks the Store itself what it has, and installs
it from About with a button and a bar, the way every other copy already did.
Asking the Store rather than the release notes settles something a delay never
could: a release is out for everyone else while the Store is still certifying
it, and being sent for a version the Store does not have yet is worse than being
told nothing. Windows closes Tisty to put the new package in place, which is the
one part of it Tisty does not do itself.
Release candidates, if you ask for them
About has a box, off until you tick it, that puts this copy on the track where
versions arrive before they are finished. They are less tested and some of them
break, which is said beside the box rather than somewhere you would have to go
looking. Untick it and the candidate you have stays where it is; the next
finished release replaces it. A copy that never ticked anything is never walked
onto that track, whatever a release manifest says — that was already true and
still is.
Where Tisty looks for a newer Tisty
Nothing moved, and nothing about this asks anything of you. The files that say a
release exists live where they always did, in a branch that holds them and
nothing else — which is new: it had been carrying a whole copy of the source
beside them since the day it was made, never updated again.
What is new is that somebody watches it. A check runs every day, and again the
moment a release is published or touched by hand, reading the feed exactly as an
installed copy reads it: that it names the version actually being published,
that the installer it points at is there, and that the installer verifies
against the key this build carries. Answering is not enough — an installer can
be replaced with other bytes and still answer — so what is checked is the
signature, which is what every copy checks before it installs anything. The
candidates' channel is watched the same way, for as long as it exists.
A feed only ever breaks between releases, when no release is running to notice.
Until now, nothing was.
A document added to at its end kept a copy of itself
Adding under the last heading of a document, or changing a passage that ran to
its last line, wrote the whole document back a second time behind the change. A
21,000 character document became 43,000. Worse, the obvious way to repair it —
naming the lines of the copy and replacing them with nothing — ran into the same
fault and added a third. Both had one cause, a run of lines that answered with
the whole body when asked for a run that began past the end. The head and the
tail of an edit are now checked against the document they were cut from: they
cannot be longer than it was, and when they are, nothing is written.
What a write replaced can be put back
Every change to a passage and every replaced body already kept what it wrote
over, beside the documents, and nothing could reach it. restore_doc reaches
it. It refuses unless the document still reads exactly as the write that kept
that body left it, since adding to the end keeps nothing and neither does your
own saving from the window — going back over those would take them with it.
even_if_more goes back anyway for whoever has read the document and knows what
is there, and what that writes over is kept in turn, so the call that went too
far is undone by the same call without it.
An assistant reads and writes for fewer tokens
A listing no longer carries a 64-character print for every document nobody was
going to open, nor the whole tree of folders unless it is asked for. Every write
says how much the document grew by, which is what makes a change of the wrong
size visible at all. An edit can hand back the lines around itself instead of
being read again to see it landed. Naming a run of lines, or a section, no
longer walks around the budget every other way of reading a document is held to.
Putting a document away says what is left pointing at it.
Full Changelog: v1.12.0...v1.13.0