Plainchant Dev Diary: Sixteen Small Things

September 26, 2026

Github Repo

This was the longest single stretch of work so far, and it had an unusual rhythm. Instead of one big feature, it was sixteen small ones, picked from the roadmap one at a time. Each was built, tested, merged and tried before the next one began.

Together they turn Plainchant from a text box that formats into something closer to a writing room.

Knowing Your Script

The preview's header now shows a live page count, worked out exactly as the script would print. Behind it, a Script stats window shows:

An Outline window lists the script's sections, scenes and synopses, each with the page it starts on. Choosing one jumps straight there.

Writing With Fewer Distractions

Focus mode dims everything but the paragraph you are working on, and keeps your line in the middle of the screen, like a typewriter.

On tablets and phones, the line you are typing now always stays at least three lines clear of the on-screen keyboard. Tapping a line in the preview takes you to that line in the script.

Character names can now be guessed as you type: write a new name in capitals, press Enter, and the app treats it as someone about to speak. Suggestions now include times of day, and on an empty line where a character's name belongs, the names already in the script.

Colour, Without Leaving Plain Text

The editor now tints each line by what it is: scene headings, character names, dialogue, notes. This was harder than it sounds, because the editor is deliberately a plain text box, which is the most reliable thing a browser offers for typing, especially on phones. Plain text boxes cannot be coloured.

So there is a trick. The text box's own letters are transparent, and a coloured copy of the text sits exactly behind it. The two only line up if they lay out identically, and three separate measuring problems were found by tests along the way. The worst was a line height that differed by a sixty-fourth of a pixel per line: invisible on a short script, and seventy-seven pixels adrift after 4,900 lines. The colours now switch themselves off if they ever stop lining up, rather than show something wrong.

Keeping Work Safe

Versions are now kept automatically as you write: more of them for recent work, thinning out with age. Any script's versions can be opened from the Library, and any version can be brought back, or copied into a script of its own.

The app also asks the browser, once there is work worth keeping, not to clear its storage when space runs short. The Library says plainly whether the browser agreed.

Working Offline

Plainchant now loads nothing from the internet. Its fonts are bundled with it. Served from a website, it works offline and can be installed like an app. Opened straight from a folder on your computer, it needs no network at all.

Settings, Themes, and Everyone

A Settings window arrived, so the helpers can be switched off by anyone who finds them more hindrance than help. There is a light theme alongside the dark one, and a choice of text size.

Every theme is now covered by an automated accessibility check. It opens every window, checks that every control has a name a screen reader can announce, and checks that all text is readable against its background. It found two real problems on its first run: the editor itself had no name, and the tagline was too faint to read comfortably.

Tests That Test the Tests

Almost every one of the sixteen items was checked with mutation testing: a script deliberately breaks the new code one line at a time, and confirms that some test fails each time. A change that no test notices points to a missing test, or a line of code that was never needed. Both turned up, and both were fixed.

Where the Project Stands

Phases one and two of the roadmap are essentially complete. The tests have grown to 290 unit tests and 597 checks of the app itself.

Next: A Writer's Hands

Almost all of this has only run in an automated browser. The next step that matters most is not a feature: it is a real writer using it on a real script, on a real phone and a real tablet, and telling us what feels wrong.