Skip to content

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 00:54
· 178 commits to main since this release
v1.8.0
53246f5

Tisty 1.8.0

A window you can read, a hash you can write, and a log that survives the plug
being pulled.

WHAT IS NEW

A document takes tags the way a task does. You write #contract in the middle of
a sentence and the document is filed under it — no field to fill, no hidden
header. The tag lives in the sentence, so carrying the file to another editor
carries the tag with it. Tags is where the two meet: one screen with the tasks
under a tag and the documents beneath them, and pressing a tag inside a document
opens exactly that, then comes back to the document you pressed it in. Accents
come off and case is folded, so a word written with an accent one day and
without it the next is one tag, and a word pasted from a Mac — where the accent
is a letter of its own — folds to the same place. Maintenance grows a button
that reads every document you already had, in one pass.

The list stands where it stands. It used to be centred in whatever room was
left, so opening a task shifted every line and closing it shifted them back.
Where the window is wide, the space that opens is no longer blank: a column
tells you the day — overdue, due today, ahead, the four quadrants with their
counts, the lists holding something, the tags in use. It counts the whole store
rather than the slice on screen, and every figure is a way in. A task always
wins the room over it, and a narrow window sends it away.

A task opened to the whole page gains a column of its own trail: how long it has
been open, how much is done, and every change it has been through. Tisty was
already writing all of that and showing it at the bottom, under the journal,
where nobody scrolled.

Settings answers four questions instead of wearing five labels. The attachment
size lived in two tabs, the language under «Notices and startup», and the
command line under «Writing», which wrote nothing. General is how Tisty behaves
towards you; Your data is everything touching your files, with syncing kept as a
block of its own; Assistants and Maintenance are what they say. Cards give way
to rows, and toggles to what is a state rather than a choice.

Lists show what is inside them — the next few tasks with their dates — and the
cards keep saying the same however wide the window gets. Only how many fit on a
row changes.

The document tree loses two of its four columns. The mark is the button now:
under the pointer, or under the keyboard, the icon becomes the chevron in its
own place, so nothing appears out of thin air. What does not fold keeps its
mark, and one hairline down the branch says whose a page is.

About tells you where the work stands, with the update, the version, and a place
to support it. The third-party notice is drawn as prose rather than as the
markdown it is written in — its tables were pipes in a monospaced block, and a
notice discharges nothing if the person who installed Tisty cannot read it.

A web link alone in its paragraph draws as a card made from the address itself,
and fetches nothing. Ask for the preview and it is asked for once and kept here.

WHAT WAS WRONG

A power cut could leave the store unreadable, which is what the mending exists
to prevent. Three ways: a cut during the first event of a fresh segment left a
file with no newline at all, and the mending walked past it; a last line whose
newline the cut took was called whole, and the next event landed on top of it,
taking both down for good; and half of an accented letter is not text, so
reading the file as a string failed and the store would not open at all. It
reads bytes now, gives back the newline a cut took, and works behind the same
lock every writer takes — a rename under a live writer drops what they just
wrote.

A link preview let the far end decide how much memory Tisty uses. The page and
the picture came down whole and were measured afterwards, so a server sending
something enormous under an image header was hundreds of megabytes before the
cap was consulted. Both are read to the cap and no further. The old cut at
256 KiB also panicked wherever that byte fell inside a letter, which in Spanish
is most pages past that size, and the cache counted files rather than weight.

A stylesheet pasted outside a fence read every colour as a tag: four thousand of
them, thirty kilobytes on one line of an append-only log, written again on every
save and carried to every machine. Sixty-four is where a body stops tagging.

Opening the guide from Settings only said where it went; now it opens. Choosing
a cloud folder left «where large attachments stay» greyed out until the app was
restarted — and the store refuses to leave a folder still holding those
attachments, asking for exactly the setting that could not be reached. There was
no way out but restarting.

Syncing with a machine on the older build wiped the tags of every document it
saved: a note that says nothing about tags is not a note that says there are
none, and now the difference is in the type. A lone backtick in a sentence
stopped swallowing every tag written after it. And the priorities board fell
into a column of nought pixels whenever the strip of owed days was up.

UNDERNEATH

A word ending on a multi-byte character no longer panics where the text is cut.
Pasting a long list wrote and fsynced once per event; a batch is durable before
it returns, but two hundred items no longer pay the wait two hundred times over.
Sorting the open tasks cloned a string on every comparison — borrowed, it is
thirteen times faster, which pays for the counts the day column added. Catching
up documents read five hundred bodies off disk with the session held, a second
of a synced folder with nothing else able to run.

A document opens for reading: focus goes to the sheet rather than into the text,
so nothing drags the view to a caret at the top.

Full Changelog: v1.7.0...v1.8.0