Skip to main content

What's new in 2026.8.3

A short release: one thing added, one thing fixed, and nothing to migrate. The changelog is the full record.

Work that waits, handed over whole

FrameThread.Post takes work that waits. It starts on the drawing thread and every await inside it comes back there, so a piece of work that reads a folder, then writes what it read into a widget, is one thing handed over rather than two:

FrameThread.Post(async () =>
{
var entries = await Listing.ReadAsync(folder);

_list.Items = entries;
});

What it throws reaches the frame loop the way a posted action's failure does, before an await or after one. See Waiting without leaving the drawing thread.

The terminal's own answer stays out of the line

The probe asks the terminal what it can do, and the reply arrives as text through the same input the keyboard uses. A reply that arrived while something was being typed into used to land in the field: [?65;4;6;18;22;52c typed itself into a filter row. The reader now recognizes the answer for what it is and drops it, which is what tells sixel, the color behind the text and the size of a cell apart.