← All posts

Plainva 0.8.1: three wishes, one week

September 7, 2026

0.8.0 went out on a Wednesday. By Thursday morning there were three feature requests and one bug report in the tracker, all from people I had never heard from before. This release is what happened next.

Three wishes

The wishes were about the database views. Could a Kanban card show the checkboxes of its note? Could the board have swimlanes and a limit per column? Could there be a proper font setting? Could the timeline make an overdue task look overdue?

I like requests like these because they are not “add feature X”. Each one describes a moment in someone’s day where the app stopped short. So here is what changed.

The card carries the note’s checklist. A Kanban card was a title and some properties. Now the task lines of the note — the plain - [ ] lines in the Markdown — show on the card with a progress bar, you tick them right there, and “Add subtask” writes a new line into the note. Nothing new is stored anywhere; the card reads what the note already says.

WIP limits and swimlanes. Click the count in a column header, type a number, and the header turns to the warning tone when the column is over it. Swimlanes are a second grouping axis from any property; drop a card on a cell and both properties are set. I resisted swimlanes for a long time because they are easy to build badly. The version that is in now keeps the header row for the columns and puts the lanes underneath, collapsible, with the lane as a chip on the card.

One meaning of overdue. The timeline, the calendar, the cards, the table: they each had their own idea of what a date looks like. Now there is one rule, and an overdue date is an overdue chip wherever the row appears.

Fonts. There was a font catalog since 0.8.0, but it lived inside the custom theme. It is now a card of its own — Font, with three slots: interface, content and code — and it applies to every theme. Code only offers monospace faces, because a proportional code font is a mistake nobody makes on purpose.

A theme of your own

This was already on main when the wishes came in, and it is the first thing you see in the What’s new dialog. My theme has its own page: a mood, a background from a bounded brightness range, a free accent, rounding, and “take from” any built-in theme as a starting point.

The word that matters is bounded. I did not want a colour picker that lets you make the app unreadable and then blames you. So you choose three things and the text colours are derived from them. If the accent is too pale for the background, it is lifted to at least 3:1 contrast, and the page tells you that it did. On the phone the same controls sit in the Appearance screen.

What went wrong

Between 0.8.0 and this release I opened my own encrypted test vault and found 185 entries in the quarantine.

The quarantine is where an encrypted workspace puts changes it cannot verify. 185 of them would mean something serious — a device tampering with the log, or a key that had leaked. It was neither. It was a protocol error on my side: a change was being judged under the newest policy version, not under the version the change itself named. Any change written before a policy update failed the check afterwards, and a device joining later would have built an empty vault.

That is fixed now: an operation is judged in the policy it references, the device chain continues from what the workspace holds, and a revoked device is heard only as far as its revocation was witnessed. The last part is the one that matters for security, and it is why I keep saying the encryption is experimental. The independent review that would catch a mistake like this before I do has not happened yet. Until it has, the badge stays.

Two practical consequences. If you use an encrypted workspace on more than one device, update all of them — a device still on 0.8.0 judges by the old rule. And the quarantine card now names the cause of each entry and has a diagnostics export, so the next time this happens to anyone, the report can say what the software saw.

The calendars your phone already has

New on the phone, and marked experimental for a different reason: the accounts the device already has — EventKit on iOS, the calendar provider on Android — appear as a provider of their own, “On this device”. Events on both, reminders on the iPhone.

The reason for the badge is honest and slightly embarrassing: the native layer compiles in the build system, but at the time of writing it has not run on a real device in my hands. It is in this release because the release builds are the first devices it runs on. If it misbehaves, the account card has diagnostics, and I want to hear about it.

Also in this release

The AppImage starts on Fedora 44 again — the bundler ships an old Wayland client library that Mesa 25 refuses, and the app now preloads the system’s copy (#85). A window opened with “Open in new window” can be closed on macOS again; it had no close button at all, which is the kind of bug you only find on hardware you do not own (#86). The desktop updater reads its manifest from a fixed address now instead of from whichever release happens to be labelled “Latest”. And a long list of smaller things, in the release notes.

iOS: TestFlight is public

The iOS beta had an internal group and a waiting list. The waiting list is gone: the TestFlight link is public now, for iPhone and iPad on iOS 16.4 or later. Android has had an open test on Google Play for a while. Both are in the release notes and on plainva.com.

What is not here

The independent cryptography review. A stable mobile release in the stores. The two-mood theme with sync across devices, which I decided against for now — a theme is a per-device choice until someone shows me it is not.

Full notes: https://github.com/plainva/plainva/releases/tag/v0.8.1