All releases

v0.20.5

Vision notes, grammar chips and Find more, fixed on a phone

October 2026
This release is mostly a cleanup round: a persona pass over the app's own surfaces turned up a cluster of places where a dropped network request, a narrow screen or a stale copy of some setting left you looking at a stuck spinner, raw data or a wrong label. Alongside those fixes, a round of flash-card content corrections landed, and the infrastructure behind the site got a security and isolation pass.
  • The character vision note is reliable now. Editing a character's vision note used to get stuck on "Loading your vision..." or leave Save and Cancel disabled forever if a request dropped, and a failed load could let you save an empty note over a real one. A failed load now shows a clear retry state instead of pretending to be ready, Cancel always discards your draft, and a failed save tells you plainly that nothing changed.
  • Grammar chips show their plain word on tap. A grammar chip's short abbreviation, such as SUBJ or ADJ, stays on the chip. Tapping it on a touch screen now also shows the plain-language word in a tooltip, the same way hovering already did on desktop.
  • Find more's live view is readable. While Find more is running, the live text used to show the model's raw streamed JSON before an entry finished. It now shows a plain "Reading the model's answer..." placeholder instead. At phone width, the Stop button no longer hides under a status banner, and a dropped stream inside the story wizard no longer tells you to reload the page, since reloading there would lose your draft rather than recover anything.
  • The digest email and its unsubscribe page, cleaned up. The weekly digest's subject and headline no longer call every due item a "word" when some are due flash cards, and the email now links straight to the Review queue, not only to unsubscribe. The unsubscribe link itself no longer fails with a server error, and its confirmation and error pages now render correctly at phone width with a working link back into the app.
  • Buttons recover when a request fails. Across the app, a button that showed a spinner while saving could stay stuck if the connection dropped or the server was busy. It now comes back with a short notice, and an admin action the server refuses says so instead of quietly re-enabling. Dialog backgrounds also fade in and out smoothly instead of flashing dark.
  • Switching a character version after a failed load. If a character's vision note could not be loaded, the version switch stayed blocked until you reopened the editor. Confirm now switches the version and leaves the note as it is, and the next switch tries loading the note again.
  • Admin moderation, plainer and sturdier. The Review Queue's hidden-comments feed now names the story instead of showing a bare id, and shows the content-safety reason in plain language instead of a raw data block. Unhide, Mark reviewed and Delete all recover correctly if a request fails, rather than leaving the row stuck.
  • The order form's sample card matches its own settings. A print special's sample card used to carry a fixed description of what the sample includes, which could disagree with the settings list shown right under it. The card's wording is now derived from those same settings, so the two can no longer contradict each other. The card also no longer links back to the order form when it is already shown there, and hides a "cost to make" line when no cost is actually on record.
  • Flash-card content fixes. German noun cards no longer accept a dative-only plural (such as "Hunden") as the answer: they ask for the plain plural ("Hunde"), as the card rules always said. A set of cards that described a word's plural form worded it more clearly instead of just saying "plural" on the back or in the hint. A new French card ("orange", the fruit) joins the deck. A review pass over the flash-card pictures' descriptions corrected a handful that drifted from the word they illustrate (one card for "engine" showed an airplane). The few cards still mismatched after review are held back from the deck rather than shown.
  • Security and infrastructure hardening. The backend now runs its database connections under a restricted role instead of the database superuser. The site's analytics service and the gift app each moved onto their own isolated network, and every site behind the edge proxy now keeps its own access log. A round of image and dependency upgrades (the auth service, the edge gateway, the database, the cache, and the web framework underneath the API) closed a batch of known vulnerabilities, and a full backup-and-restore drill confirmed recovery still works end to end.