QUILL for All v0.9.0-beta.1 Beta
Pre-releaseThe 0.9.0 beta. Rolls up everything through 0.8.0 (below) plus the features, fixes, and enhancements in this release — headlined by the new AI suite, the Accessible Vault (linked notes you can traverse by ear), the GLOW accessibility suite (guided document audit and repair, shipping as an experimental opt-in), the ElevenLabs Read Aloud voice, and a lighter, smaller install. This is the final feature release before QUILL 1.0: from this beta forward, no new features are added — only bug fixes and polish, driven by your reports, until 1.0 ships. This section doubles as the in-app release notes: the same text appears when you Check for Updates and any time from Help > What's New.
QUILL parla italiano - the first community translation
- Italian interface translation, contributed by Elena Brescacin (elettrona) — QUILL's first shipped display language beyond English: menus, dialogs, and spoken messages, validated by the CI placeholder and coverage gates and compiled into every build. Elena covered 100% of the catalog at contribution (669/672 strings); the catalog then grew with the Audio Studio's landing, the refreshed template ships in-repo for the translation to continue, and untranslated strings fall back to English. Switch under Tools > Writing and Language > Change Display Language; spoken messages change immediately, menus after a restart. Grazie mille, Elena!
The Audio Studio - the family homecoming, completed during the beta
0.9.0 promised the whole product family home in QUILL; the last homecoming —
ChapterForge, rebuilt screen-reader-first as the Audio Studio — landed
during the beta window and completes that promise. The full story is in the
release notes; the log, newest first:
- Taught, not just shipped. Tutorial 4 — From document to published audiobook — was rebuilt around the Audio Studio: voices and Read Aloud, then all three journeys from a folder of anything to a published feed. QUILL Cast episode 24 was re-recorded as "The Audio Studio" (the old text-to-audio episode's script retired with it), and the site FAQ answers the three questions people actually ask: can it make audiobooks, can it fix a finished book's chapters, and can it publish a podcast.
- libmpv playback backend (optional, one download away). The Audio Studio's player learns a second engine: Help > Download Optional Components > mpv player engine fetches the mpv playback library (about 44 MB, pinned to QUILL's assets release and SHA-256-verified; the zip carries the GPL license texts, mpv's copyright, and a corresponding-source offer) into
engine-packs\mpv, and playback runs on libmpv for gapless audio, exact seeking, and wide format coverage, with pitch-preserved speed via mpv's scaletempo. A hand-placedlibmpv-2.dll(pack folder, beside the executable, or theQUILL_LIBMPVoverride) works too. Without the DLL nothing changes:wx.mediaremains the zero-download default, and any mpv failure falls back to it automatically so a broken DLL can never take playback away. All mpv calls stay on the UI thread (a polling timer, no event thread), honoring the Studio's threading contract. - AI chapter titles — name a folder of track files by listening to them. The Chapter Workbench's new Propose AI titles... button turns
track07.mp3chapters into a navigable book: QUILL slices the opening minute of each chapter, transcribes it on this machine with the local speech model (the audio never leaves the computer), sends only that transcribed text to your configured AI (a local model keeps even the text on-device), and lands a short proposed title per chapter in the list — for review, never applied blind, with Restore original as the undo. Consent is asked up front in exactly those terms; a chapter whose transcription or summary fails simply keeps its current title, and the button requires a configured AI (absent in Safe Mode). - Voice casting — explicit assignment on top of the rotation. The wizard's voice page grows casting rules: match chapters by heading title (
Chapter *,*interview*, an exact title) or by number (#1), and name the voice that reads every match. First matching rule wins; unmatched sections still follow the round-robin rotation or the single voice, so casting layers on instead of replacing. Rules are engine-scoped (switching engines clears them, like the rotation), ride along in saved job files, and blacklisted voices lose their rules gracefully rather than failing the run. Interviews and dialogue-heavy fiction get real casting instead of a blind rotation. - Incremental rebuilds — edit one chapter, rebuild in minutes. The Audio Studio now remembers a fingerprint of every document it narrates (the document's exact bytes plus every setting that shapes its audio: engine, voice, pace, gaps, sounder, round-robin rotation, translations, pronunciation dictionaries, loudness). On the next run, documents whose text and settings are unchanged — and whose audio is still on disk — are reused instead of re-synthesized, announced as "Reused chapter07.mp3 (unchanged since last run)". Editing one chapter of a 40-document book stops costing an overnight run and starts costing the one chapter. The Reuse unchanged audio checkbox on the output step (on by default) turns it off for a forced full rebuild; any settings change invalidates the fingerprints automatically, and dry runs, auditions, and the skip/rename policies are untouched. Fingerprints live in the folder's
.quill/speech-cache.json. - Run a whole show from one folder. The Publish dialog's new Folder feed (all episodes)... button turns a folder of masters into a real podcast: every MP3/M4B/M4A becomes an episode (oldest file = episode 1), each with its title from its tags or your override, a per-episode description edited in an accessible list, its true publication date, duration, and chapter link. Show settings — title, author, description, media URL base, feed URL, cover URL — persist in the folder (
.quill/feed.json), so after each new build one button regeneratesfeed.rsswith everything in it. A companion show notes page (show-notes.html) is generated on demand: semantic headings per episode, descriptions, and each episode's chapter list, screen-reader-navigable and ready to upload beside the feed. Chapter sidecars can now also carry per-chapter links and images (Podcasting 2.0url/img), which survive import, editing, and re-export, and episode entries carry stable GUIDs. - Auphonic grows up: presets, credits, and a Services home. The Publish dialog's Auphonic section now has a Check account and load presets button — one explicit call that announces who the token belongs to, how many processing credits remain, and fills a preset picker with your saved Auphonic presets; the send confirmation then names the exact preset and your credit balance before anything uploads. The API token also gains a proper home: AI Hub > Services now has an Auphonic section alongside the other service keys — save or clear the token (credential vault, never a settings file), check the account, and jump to auphonic.com, without opening a book first.
- Cover art from the book lookup. When Look up book details finds your book on Open Library and the match has a jacket image, QUILL offers to download it as
cover.jpgnext to your audio and fills the cover field with it — one button now completes title, author, genre, year, and the cover. The download is a separate yes/no question through the same free, keyless Open Library service, inventoried in the egress audit; a match without usable art says so instead of writing a placeholder. - Publish uploads you can watch and stop. The Publish dialog's SFTP and Auphonic paths now show a live progress dialog with a real Cancel button. Progress speaks whole-percent steps as bytes actually move ("Uploading book.m4b: 42%") and mirrors to the status bar. Cancelling an SFTP upload stops mid-file and says that files already completed stay on the server; cancelling an Auphonic run before the upload finishes means no production starts, while cancelling later leaves the production running in your account and skips the download — the announcement tells you which happened.
- Audio Studio automation and listening extras. A new watch action — "Build audiobook from the folder" — rebuilds a watched folder's chaptered master automatically whenever new recordings land (one rebuild per batch, not per file; each file a chapter, titled from its name). Library mode on the combine-audio journey builds every subfolder as its own audiobook in one unattended run, each titled after its folder. The Workbench adds Split into files... — the reverse trip: one file per chapter, ready to publish as podcast episodes or play in track-based players. And the player learns three listening comforts: it remembers where you stopped in every book and resumes there next time; a playback speed control (0.75x to 2x, pitch preserved); and a "Where am I?" button that speaks the audible glance — chapter number and name, time into the chapter and left in it, and position and time remaining in the whole book.
- Publish what you made — feed, server, or mastering service. The Chapter Workbench gains a Publish... button with three explicit, consent-first paths. Podcast feed: QUILL writes a complete RSS 2.0 + iTunes + Podcasting 2.0
.rssfile next to the book (chapters linked via thechapters.jsonsidecar) — upload it anywhere and subscribers are in business; generation is entirely local. SFTP upload: saved destinations send the book plus its companion files to your server through QUILL's own SSH client — the strict host-key policy applies, and the password lives in the Windows Credential Manager, never in a settings file. Auphonic: send the book to your own Auphonic account for professional post-production (leveling, noise reduction); QUILL uploads, waits, and downloads the results next to the book — your API token stays in the credential vault. Every network path is inventoried in the egress audit, and the whole dialog is absent in Safe Mode. - Job files, book lookup, auditions, and spoken credits. Four Audio Studio conveniences. Save a job file on the summary page writes a portable, hand-editable
.quilljobthat pins the entire run — folder, voices, chapters, mastering, book tags; Load a job file on the first page brings it all back (edit it in Notepad between runs if you like). Look up book details on the book page searches Open Library and MusicBrainz — free, keyless public catalogs — by your typed title/author and fills the tags from the match you pick; QUILL asks before the first contact and sends nothing but the title and author. Audition converts only the first document so you can judge the voice, pace, and mastering in minutes before an hours-long run. And spoken opening and closing credits ("My Book. Written by Jane Doe. Narrated by Sam Reader.") can be synthesized in the run's own voice as the book's first and last chapters. - The Chapter Workbench — open a finished audiobook, hear it, reshape it, save it. The Audio Studio's third journey: Edit an existing audiobook opens any chaptered MP3 or M4B (or one with no chapters at all — it opens as a single chapter, ready to carve). A built-in chapter-aware player anchors the work: Play/Pause, Stop, Previous/Next chapter, Rewind/Forward, a position slider that speaks human time, and the current chapter announced as you cross into it. Park the playhead where a boundary belongs and press Split at playhead — the fix-a-bad-chapter-by-ear operation — or Set start to playhead to retime an existing boundary; rename, merge, and Restore original round out the surgery. Chapter lists import and export in five formats (Audacity labels, timestamps, CUE, Podcasting 2.0 JSON, CSV), and the book's tags are editable in place. Saving is honest about physics: an MP3 saves in place (only the tags are rewritten; the audio bytes are untouched) and an M4B saves as a new file via a lossless re-mux (no re-encode, no quality loss). Fully keyboard-driven, every action announced.
- Audiobook builds you can trust — and chapter tools with real power. Before a long build, the Audio Studio now runs a pre-flight check (mixed sample rates, channel counts, or formats are named in the log, file by file) and states the estimated duration and size. After the build it re-reads the finished book and verifies what a player will actually see — the completion message says "verified 24 chapters," not just "done." Every book also gets two companions written next to it: a plain-text chapter report and a Podcasting 2.0
…chapters.jsonsidecar. The chapter review dialog grows up too: Remove a chapter, Restore original to undo everything, Export titles, and Import titles from Audacity labels, CUE sheets, timestamp lines, Podcasting 2.0 JSON, or a CSV (any sheet with a Title column, or number,title rows). Under the hood, a full chapter-surgery toolkit shipped in core — split at any point, retime a boundary, merge, clamp, silence-based auto-chapter proposals, head/tail silence trim, fades, tempo, and split-a-master-into-files — powering the chapter workbench and player that land next. - QUILL Audio Studio.
Tools → Speech → Batch Export to Speech Audiois now Audio Studio — a guided wizard that asks one thing at a time instead of a single forty-control dialog. The first page picks a journey: narrate documents into speech audio or an audiobook, or combine a folder of recordings into one chaptered book (each file becomes a chapter, and you always review the chapter list before the merge). Every option from the classic dialog survives — the transition sounder and its volume, pauses, round-robin voices, translated editions, dry runs, spoken-text sidecars, ACX loudness, the book tags and cover — spread across announced, keyboard-first steps ("Step 2 of 7: What should I read?"), with Skip to summary turning a repeat run on a remembered project into three keystrokes. Saved project profiles, cost estimates, progress, logs, and keymap bindings all carry over unchanged. This is the first slice of the Audio Studio consolidation: the chapter workbench with split-at-playhead editing, the chapter-aware player, opening existing audiobooks, metadata lookup, and publishing land next. - Maximum-file-size filter in the Audio Studio. A Skip files larger than (MB) spinner on the What should I read? step lets a folder skip oversize documents during discovery. A folder with one accidental 400 MB export no longer hijacks an overnight run; the live document count on the same step reflects the cap as it changes.
0means no limit (the default), so existing batches are unchanged. - Polish controls wired into the Audio Studio build. The trim-silence checkbox on the audio source page, and the fade-in / fade-out / tempo controls on the book page, now actually run during the audiobook build.
core/speech/audiobook.build_audiobookruns each chapter file throughaudio_edit.prepare_chapter_files(head/tail silence trim, fades, pitch-preserving tempo) before ffmpeg concatenation; the runner threadsreq.trim_silence_files,req.book_fade_in_ms,req.book_fade_out_ms, andreq.book_tempothrough. Staged files live in the build's tempdir — your source audio is never overwritten — and polish failure on one file keeps the build going with that file's previous form. - Silence auto-chapter and ACX check in the Chapter Workbench. Two new analysis buttons finish the one-long-recording and pre-submission stories. Propose chapters from silences... runs ffmpeg's
silencedetecton the background pool, with user-tunable noise threshold and minimum silence length, and the resulting proposal lands in the chapter list for review — never applied blind; Restore original undoes the proposal in one click. Check against ACX runs a loudnorm measurement and shows a verdict dialog with integrated loudness, true peak, noise floor, and a speakable recommendation for each failing criterion ("Integrated loudness is -14.2 LUFS, target -20 plus or minus 3; make the recording 5.8 dB quieter"). The verdict is announced when the measurement finishes, regardless of how the dialog is dismissed. - UIA regression coverage for the Audio Studio dialogs. The nightly
tests/uiasuite (CI-only, never on a developer's desktop) walks the Audio Studio wizard page by page and asserts the same contracttest_dialog_accessibility.pyalready enforces for Go To Line: every focusable control has an accessible name, the wizard announces itself on open and on every page change, Escape closes it cleanly, and the edit journey opens the Chapter Workbench on the seeded corpus sample. The suite also drives the newSilenceParamsDialogfrom the Workbench's "Propose chapters from silences..." button. Regressions in focus order, modal-id wiring, or announcements are caught by the robot overnight instead of by a user's ears after release. - Audio Studio keymap, command palette, and cross-link.
Tools > Speech > Audio Studionow appears in the command palette under its display name and ships with a default key binding (Ctrl+Shift+Grave, Y). The Export to Translated Speech Audio dialog gains an "Open in Audio Studio" button so the one-shot translation flow advertises the richer chaptered path; pressing it closes the dialog and opens the wizard with the document already on the audiobooks MRU. - Audio Studio recent folders and remembered journey. The wizard's source pages (documents and audio) now show a combo of the most-recently-used folders, so the second run lands on the same folder with two Tab presses. The edit journey's file picker remembers the most recently opened audiobooks. The wizard's first page also remembers which journey you used last (documents / audio / edit) and pre-selects that radio, so "Skip to summary" stays a 3-keystroke promise across sessions.
- Persisted Audio Studio project choices. The Phase 4-6 wizard flags book_credits and library_mode are now part of
speech-project.json(profile schema v2; v1 files load with the fields defaulting toFalse). The per-folder auto-remember covers them, so a folder that always wants spoken credits and library-mode builds lands on those toggles on the second run without a single click.
Math in QUILL - equations that render, sound out, and travel to Word
- Math AutoCorrect-style abbreviations. 88 backslash-code shortcuts (
\alpha,\sqrt,\ne,\pi, and more, seeded from the DAISY-published Word Math AutoCorrect list) expand to their symbol the moment you type the code and a space or punctuation, anywhere in ordinary prose. Contributed abbreviations now correctly honorcase_sensitive(a fix in the underlying Insert Automation system:\delta/\Deltano longer collapse to whichever appeared first). - MathJax-safe delimiters. The bundled Math Equations Quillin now wraps inline equations in
\(...\)and display equations in a single-line$$...$$, both MathJax's own default-recognized delimiters — no template configuration needed in Browser Preview or HTML export, and no ambiguity with ordinary dollar-amount prose the way bare$...$had. - Common Formulas gallery. Ten ready-made algebra and geometry formulas (quadratic formula, Pythagorean theorem, slope-intercept and point-slope forms, slope/distance/midpoint formulas, difference of squares, circle area and circumference) are one selection away in Insert > Snippet Gallery... — nothing to type.
- Explore Equation Structure... (Ctrl+Shift+Grave, F, or Insert menu) steps through a formula's parts — numerator/denominator, base/exponent, a root's radicand — via a lightweight, dependency-free structural navigator (
quill/core/math/navigator.py); every list is a standard Windows single-select list (arrow keys, type-ahead, Enter/OK to choose) and Escape/Cancel at any depth ends the whole session immediately (it is not "go back one level" — Back up one level is the dedicated choice for that). - Real math speech for "Read this part aloud." That command now upgrades automatically to genuine natural-language math speech — the same MathCAT engine NVDA itself ships — once installed via Help > Download Optional Components... > MathCAT math speech engine (~3 MB, MIT,
daisy/MathCATForC; actypesbinding to their prebuilt DLL, no Rust toolchain needed). Without it, the same command keeps working with the simpler built-in template reading — nothing regresses either way. Math braille (Nemeth/UEB) is not wired yet. - Real Word equations, both directions.
File > Export > Word Document...now writes a genuine<m:oMath>equation object for every\(...\)/$$...$$in the document (via a one-equation Pandoc round-trip,quill/io/docx_math.py), editable in Word and read as math by JAWS — not a picture, not literal text. Opening that file back in QUILL, with either docx reading engine, restores the same plain, editable equation text. Memoized so a document repeating the same formula doesn't spawn a Pandoc subprocess per occurrence. quill/core/math/: a canonical MathML data model and alatex2mathml-backed LaTeX-to-MathML bridge (new optionalmathextra), wx-free and unit-tested — the shared foundation under the abbreviations, the structure explorer, and the docx export.- Math Tutor AI agent. A read-only agent that explains a selected equation in plain language — what it means, what each symbol is — without solving anything or touching the document.
- New tutorial: Write math without learning a new language — the Common Formulas gallery, typing an equation from scratch, the structure explorer, Browser Preview rendering, and the Word round trip, gallery-first for anyone who has never typed math on a computer before.
Trust on the road to 1.0
- A Windows UI-automation regression suite now watches the real app. A new opt-in test suite (
tests/uia) launches the actual QUILL on a Windows desktop session and verifies what a screen-reader user experiences: the window title tells the truth, keystrokes reach the editor, dialogs close on Escape, every keyboard-reachable control has an accessible name, and — via the announcement trace — what QUILL spoke. It runs nightly in CI as an informational report (never a merge gate, never an auto-fix; humans read it and decide) and is deliberately barred from live screen-reader desktops, where automated keystrokes and JAWS fight each other. Seedocs/qa/ui-automation.md. - Safety advisories now reach you by default. QUILL's remote safety-advisory system — the ability to temporarily disable one specific shipped feature via a signed notice if the community reports it misbehaving — is enabled and delivered by the startup update check, which is now on by default (the check fetches QUILL's own signed feed and sends nothing about you or your documents; turning it off in Preferences is still honored, and Safe Mode always skips it). Advisories only ever turn a feature off, are announced out loud with their reason, persist offline, are lifted by the same signed feed when the fix ships, and a local escape hatch (
QUILL_IGNORE_FEATURE_LOCKS=1) always leaves you the last word. Policy: used only in response to real user feedback, when a fix cannot ship fast enough.
Saving and converting: every save tells the truth
- Restore points — bring back any earlier save. Every save now quietly keeps a snapshot of your document, and File > Restore Previous Version lists them in plain language ("Today at 4:12 PM - 2,341 words"). Restore replaces the editor text — after saving your current text as a restore point first, so restoring is itself reversible — or open an earlier version as a copy in a new tab. Saving unchanged text stores nothing extra, a snapshot can never be the reason a save fails, and history thins politely as it ages (a full week kept, then daily, then weekly; the newest five versions always survive) under a per-document disk cap you control in Preferences. This is the first shipped piece of the QUILL Sync plan; the same version store becomes the sync engine's history layer later.
- Save As now finishes the job — the title bar, the modified flag, and the next Ctrl+S all tell the truth. Saving as a Word document (.docx) wrote the file but never recorded that the document now lived there, so the title bar stayed "Untitled [modified]" and the next Ctrl+S reopened an empty Save As dialog (thank you, Caroline). Word was the only format with this gap; it is fixed and regression-tested for every format.
- Your line breaks survive every export. Exports fed the document to Pandoc in a Markdown dialect where a single newline is a soft wrap, so consecutive lines merged into one long paragraph in Word, ODT, HTML, RTF, EPUB, and PDF output. Every export now treats one editor line as one paragraph — the same rule the native Word writer already follows.
- QUILL will never overwrite an opened PDF, spreadsheet, or e-book with plain text. Pressing Ctrl+S on a document opened from a PDF, EPUB, PowerPoint, or Excel file used to write the extracted text over the binary original, destroying it. QUILL now explains that the buffer is extracted text and routes you to Save As. Likewise, typing a name like
notes.pdfin Save As no longer writes a Markdown file wearing a.pdfextension: QUILL offers File > Export (which produces a real PDF via Pandoc) or asks you to pick a format it can write. - A converting Save As says what it did. After saving as Word, RTF, or HTML, QUILL announces: "Saved as report.docx, Word format. You are still editing QUILL text; each save converts it to Word." The on-disk file is always the converted format; the editor keeps QUILL's clean text.
- Save failures are reported honestly. A failed write (disk full, file locked, conversion error) now produces a clear spoken error and leaves your document state untouched, instead of crashing or claiming success.
- Untitled documents suggest their own filename. The Save dialog pre-fills the name from the document's first line (markup stripped, invalid characters removed) — now on by default. It only ever suggests; type over it freely, and it never renames a saved document.
- Choose your Word conversion engine — with the outcome described in plain language. Two new settings: Word document reading engine (Auto / MarkItDown / Pandoc) and Word document saving engine (Auto / Native / Pandoc). Each choice says what it keeps and what it drops — Native keeps QUILL's fonts, sizes, colors, and alignment; Pandoc maps structure to Word styles but drops those codes; MarkItDown is fast and structural. The Convert File dialog gains a per-conversion engine choice whose description follows your selection. Defaults are unchanged. An engine bake-off (docs/qa/converter-bakeoff.md) backs every description with evidence — and permanently retires pydocx, which cannot run on any modern Python.
What's New in this beta
-
The QUILL Cast and hands-on tutorials. QUILL now ships a complete audio course: The QUILL Cast, a 36-episode, two-host curriculum (about 2¼ hours across seven parts) that leads a brand-new user from the installer to every feature family — first steps, the everyday editor, documents and formats, files and automation, the speech suite, AI, and the organization/production/trust features (Vault, Story Studio, GLOW, braille, extensions). Every episode builds on the previous one and ends with hands-on homework. The hosts are QUILL's own on-device Kokoro neural voices (Liam and Jessica) — the product narrates its own curriculum — full accessible transcripts are published with every episode, and an RSS feed lets you subscribe in any podcast app. Alongside it, a new tutorials collection (docs/tutorials) offers six hands-on walkthroughs, from your first hour to shipping a graded, accessible Word document.
-
Import / Convert Document — rescue any document, free first, local first. A new tool at the top of File → Import (and under Tools → Reading & Dictation) turns hard-to-read files into editable text using only free, on-device services: born-digital Word, PowerPoint, Excel, HTML, EPUB, and text-layer PDFs convert instantly with the built-in local converter, and scanned PDFs and photos of pages are rescued by free on-device OCR (the Tesseract engine — CPU-only, works offline, one-time ~48 MB verified download from Install Local OCR Engine). QUILL never opens a blank result silently — when a PDF looks scanned it asks before running OCR — and it tells you plainly when recognition confidence is low so you know to review. A new OCR and Conversion Services page explains every service in plain language: what it does, what it costs, and what stays on your machine. Nothing is ever uploaded by the free tiers.
-
The complete OCR tool: cloud escalation, review mode, and a Services tab. The document-conversion tool is now the full three-tier design. For documents even local OCR cannot rescue well (complex tables, forms, handwriting, poor scans), an optional Datalab Chandra cloud service is offered — strictly free-first (only after on-device OCR comes back weak), consent-gated on every single upload (with an extra caution when a filename suggests sensitive content — names only, content is never inspected), bring-your-own-key (stored in the Windows credential vault, never in settings files), HTTPS-enforced, Safe-Mode-blocked, and registered in the network egress audit. A new AI Hub → Services tab is the friendly service manager: live status, key and defaults, a Test Connection that uploads nothing, a secret-free Copy Service Summary, and direct links to the provider's site, key page, pricing, and privacy docs. Review Last OCR Result... opens an accessible checklist of every low-confidence line ("Page N: [confidence] text") so you review exactly the trouble spots by ear, and Delete OCR Temporary Files clears any crash leftovers. The whole workflow now lives in one Tools → Reading & Dictation → OCR and Document Conversion submenu.
-
Hey QUILL — talk to your editor, hands-free. A complete voice-interaction experience that drives QUILL by speaking, entirely on-device with nothing uploaded, in four levels you can use as much or as little as you like. (1) Speak a command: Tools → Speech → Voice Command (Offline) — run it, say "save file", "word count", or "next heading", and QUILL acts. (2) Hold a conversation: Voice Conversation Mode keeps listening after each command through a follow-up window so you can chain commands, with warm musical audio cues for every state (a rising chime on, a soft two-note listening, a sparkle when done, a quiet "working" tick, a calm fall on no-match) — nine cues that are real Sound Events you can retune in any sound pack. Your turn ends when you stop speaking (voice-activity detection that calibrates to your room so a noisy mic isn't mistaken for talking); prompts can carry your name ("Listening, Jeff.") and be spoken aloud (staying silent when a screen reader is running, so QUILL never talks over it); and the pause, cancel, follow-up, and tick timings are all tunable. (3) Just say "Hey QUILL": Listen for Hey QUILL turns on always-listening — "Hey QUILL, save file" runs a command outright, the status bar and a periodic reminder keep the live mic perceivable, a new Speak Voice Status command reports what voice is doing, and it turns itself off when QUILL closes unless you opt to keep it on. (4) Ask a question: questions like "how do I save my document" are handed to Ask Quill with the text pre-filled — you press Enter, so a person is always in the loop for anything that reaches the AI. You can choose the engine (Settings → Voice recognition engine): whisper.cpp for accuracy or Vosk for a fast, light engine ideal for the wake word, with automatic fallback. One promise holds throughout: a misheard phrase can never do harm — voice only runs a curated, non-destructive allowlist, everything is off by default, off in Safe Mode, and abortable with "cancel". See the new Voice Interaction page in the user guide for the full reference.
-
Table Studio — accessible tables (experimental). One new grid surface makes editing tables by ear genuinely workable. Tools → Table Studio builds a table from scratch, and Open CSV in Table Studio opens a CSV/TSV straight into the same fully keyboard-accessible grid. The arrow keys move by cell and Left/Right speak the column heading as you cross a row; F2 edits a cell, Alt+arrows move a row or column, Ctrl+Insert adds a row. Insert the result as a properly-headed Markdown or HTML table, or save it back out as CSV so a file you opened makes a full round trip. The grid announces cells through Windows accessibility for NVDA and JAWS, with an optional compiled native UIA provider for richer cell events on builds that include it (a built-in fallback works without it). An opt-in on the Experimental tab.
-
A rebuilt Experimental tab — consent in layers. Preferences → Experimental is now the honest front door for features that work but are still maturing. The first checkbox is a true master switch, relabeled to say exactly what it does: Enable experimental features governs everything on the tab, and while it is off every other control is disabled and drops out of the tab order — an untouched Experimental tab is one checkbox to a screen reader. Each experiment then has its own switch: GLOW accessibility review and repair, WordPress publishing connections (the read-only inbound tools; the send half stays locked regardless), and Read the document aloud in your browser. The editor-surface options sit behind a second acknowledgement of their own — Enable experimental editor surfaces (features may degrade based on the control selected) — which separately gates the surface choice, the border option, and the surface explainer. Nothing experimental can ever be reached, focused, or applied by accident.
-
GLOW — guided accessibility review and repair, one switch away. GLOW (Guided Layout and Output Workflow) graduates from hidden preview to an experimental opt-in: tick two checkboxes under Preferences → Experimental (the master switch and GLOW's own) and the Tools → GLOW menu appears immediately, no restart. Audit the document or just the paragraph in front of you — findings open as a readable tab, each with a rule, a severity, and a plain-language suggestion — and apply safe, deterministic fixes with a before/after compare, never a silent rewrite. New alongside the opt-in: GLOW Audit File... and GLOW Fix File... review and repair structured documents on disk (Word, PowerPoint, Excel, PDF, EPUB, Markdown) through the shared GLOW engine, with a scored, graded report; fixing always writes a repaired copy beside the original — your source file is never touched. Everything runs on your machine by default; the engine's optional networked helpers stay off unless you explicitly consent, and Help → Check for GLOW Updates... fetches a newer engine only when you ask, signature-verified with automatic rollback.
-
Golden Quills — a thank-you to those who support QUILL. A new Golden Quills tab in Help → About QUILL recognizes the people who have chosen to support the project financially, listed in alphabetical order, with our heartfelt thanks. It includes an optional Donate button (opens PayPal in your browser). To be crystal clear: donating is completely optional and is never required — every feature of QUILL is, and will remain, free and fully available to everyone.
-
Smaller installer: Pandoc downloads on demand. Pandoc — the engine behind Word, ODT, EPUB, and RTF import and export — was the single largest bundled component (~220 MB unpacked), yet plain-text and Markdown editing never use it. It is no longer bundled: the first time you import or export one of those formats (or run Convert File), QUILL offers to download the official, pinned Pandoc build right there — about 45 MB, checksum-verified, with a cancelable progress bar (disabled in Safe Mode) — and you can also get it any time from Help → Download Optional Components. This roughly halves the installer. Upgrading from a release that bundled Pandoc? Your existing copy keeps working.
-
Smaller installer: the braille translation pack downloads on demand. The liblouis translation tables and BRF profiles that power the Translation submenu and BRF/embossing export (~68 MB unpacked) are no longer bundled. Reading with a braille display never needed them (that is your screen reader); QUILL's own translation and embossing did. The Braille menu now offers Download Braille Translation Pack... the first time you reach it without the pack — about 9 MB, checksum-verified, Safe-Mode-blocked, with live progress in the status bar — and it also appears in Help → Download Optional Components. Upgrading from a release that bundled it? Your existing copy keeps working.
-
One place to get optional downloads — Help → Download Optional Components. A new dialog lists every component QUILL can fetch on demand — the offline speech engine (whisper.cpp), Kokoro neural voices, eSpeak NG and DECtalk voices, the FFmpeg audio-export helper, Pandoc (document conversion), the braille translation pack, and non-English spell-check dictionaries — and shows for each whether it is Installed or Available to download, with its size. Pick one and choose Download to get it (each fetch is checksum-verified with its own progress). Everything here is optional; the base app works without any of it. This gives you a single, accessible touch point instead of hunting through separate menus.
-
A complete, optional, private-by-default AI suite — under one new top-level AI menu. Beta 2's headline addition brings a screen-reader-first AI assistant into QUILL. It is off until you turn it on, works with the provider you choose — a private on-device model (Ollama) or an account with OpenAI, Anthropic (Claude), Google Gemini, or OpenRouter — and never sends anything without your consent. Set it up once and every AI feature shares that connection.
-
Set up AI in seconds — the AI Setup Wizard. A short, screen-reader-first wizard ("Set Up AI… — start here") offers one choice (on-device, an account, or not now) with a one-step connect and Test Connection. Click an AI action before setup and QUILL offers the wizard right there instead of failing. A simpler Basic mode keeps the AI menu small for newcomers; "Show advanced AI features" reveals the rest.
-
Free AI for everyone — a strongly-advised no-cost path. You never need to pay to use QUILL's AI. The setup wizard now leads with the best free options and picks good defaults for you: most private — run a model on your own computer (Ollama), no account, works offline, nothing leaves your device; or best quality — connect OpenRouter with your own free key and QUILL preselects a strong free writing model (currently a Llama 3.3 70B free model). Each provider now has a Get API key button that opens the right signup page in your browser, so there's no hunting for where to get a key. Both the wizard and the AI Hub now offer a real model dropdown — pick a recommended model or List models to load everything your account or device offers, instead of typing an id from memory. Model descriptions say Free out loud when a model costs nothing. Honest by design: free hosted models can be slower and are rate-limited to your own free quota (so there's no shared limit and no cost to anyone else), and QUILL reminds you to keep confidential writing on the private on-device option. Everyday writing help and the single-shot agents (Rewrite, Summarize, Expand, Table of Contents) work on these free models; Ask Quill automatically simplifies its steps on a small model so it answers instead of stalling.
-
Bring the AI agent you already use. QUILL's agent can run on more than one engine. The built-in Native engine always works on whichever provider you connected. If you pay for GitHub Copilot, use that subscription directly — a short spoken device code in your browser signs you in, no API key at all. The Claude Agent and OpenAI Agents engines plug in with the Anthropic or OpenAI API key you already have — no separate QUILL charge, ever. On the AI Hub → Engines tab (or by choosing "Use an AI agent you already pay for" in the Setup Wizard), pick your engine; QUILL installs the small connector on demand and walks you through the sign-in out loud. The safety is unchanged whichever engine runs: QUILL owns every edit, the vendor agents run text-only (their own file/shell tools are off), and every change is a reviewable preview with one-step undo. Optional, off by default, off in Safe Mode.
-
Ask Quill — one conversation that knows your document. A single, context-aware chat replaces the old scattered AI dialogs, with a reviewable change preview for anything it applies.
-
The Listening Companion — turn recordings into finished documents. Transcribe audio or video (optionally translating to English or identifying speakers), then turn the transcript into Meeting Minutes, Action Items, an Executive Summary, Interview/Study Notes, Q&A, a Follow-Up Email, Key Quotes, a Decisions Log, or a clean draft. Run these Transcript Actions on any document, build your own with the no-syntax Action Builder, or let a watch-folder do it automatically.
-
The AI Library — Prompts, Skills, and Agents in one place. One tabbed manager with a real Promote continuum: a Prompt graduates into a multi-step Skill, and a Skill into a first-class Agent — all reviewable and running through the same connection.
-
Everyday AI writing help, always reviewable. Rewrite, summarise, expand, continue, fix grammar, or generate a table of contents; AI spell check and grammar-and-style check; translate a selection or document; the AI Thesaurus; and Document Q&A. Every proposed change is shown as an accessible accept/reject preview and applied as one undo step — nothing is silently rewritten.
-
Read Aloud in your language — not just English. The voice lists are no longer English-only. The Windows engine now shows every voice installed on your PC in any language (add one in Windows Settings > Time & language > Speech — Italian, Spanish, French, German, and many more — and it appears in QUILL immediately). The offline Kokoro neural engine gains Spanish, French, Hindi, Italian, and Brazilian Portuguese voices — they live in the same voice pack you already downloaded, so there is nothing new to fetch. The Piper catalog adds the Italian voices Paola and Riccardo as one-click downloads, and eSpeak NG offers the same languages from its built-in data. Read Aloud, audiobook export, and batch speech all honor the chosen voice's language.
-
Read aloud and export audio in natural AI voices. Read the selection or document aloud, stop on a key, or export the document as an audio file in your chosen cloud voice, alongside QUILL's on-device speech.
-
Read your document in the browser's best voices (experimental). Turn on Read the document aloud in your browser under Settings → Experimental (it takes effect right away — no restart) and a Read in Browser command appears under Tools → Reading & Dictation → Read Aloud and in the command palette. QUILL opens a self-contained, accessible reader page in your chosen browser — labelled voice picker, Speed, Play/Pause/Stop, a live status line, Escape to stop — where the browser's full voice set is available, including Edge's "Online (Natural)" voices the built-in engines cannot reach. It reads section by section so book-length documents stay reliable, Pause keeps your place and tells you where you are ("Paused at section 12 of 300"), and your voice and speed choices are remembered. Privacy, plainly: QUILL itself makes no network call and no audio file is produced; voices labelled "on this device" stay fully local, while the browser's online voices synthesize in the vendor's cloud — choosing one sends the text being read to that service. The reader page is deleted when you close QUILL, so no plaintext copy of your document lingers.
-
Rich formatting that stays out of your way — hidden codes, spoken on demand. You can now apply real document formatting — bold, italic, underline, strikethrough, superscript/subscript, font family and point size, text color and highlight, plus paragraph alignment, line spacing, indent, and named styles — without ever seeing markup clutter in your editor. The buffer stays clean, fast, plain text; the formatting rides along as invisible codes. Apply it from the new Format menu (Font/Size/Align/Color/Highlight) or the accessible Font... dialog, and ask "Describe formatting at cursor" to hear exactly what is in effect ("Arial, 14 point, centered, bold"). An optional setting announces formatting changes as you move the caret. The plain-text editor, undo, search, and AI all keep working on the same clean text — nothing about your normal editing changes.
-
Keep your formatting in a plain-text file — Illuminations. A plain
.txtcan't hold fonts, colours, or alignment, so saving formatted text as plain text used to lose them. Now QUILL can write an Illumination: a small companion file (yourfile.txt.illumination) that stores the formatting beside the clean text. The.txtstays genuinely plain everywhere else, and reopening it in QUILL restores every font, colour, and alignment exactly. Choose what happens under Settings → Editing → Saving formatted text as plain text: Ask each time (keep formatting / save an Illumination / save plain), Always save an Illumination, or Save plain and drop formatting. If the.txtis edited in another program, QUILL notices the mismatch and opens it plain rather than mis-applying old formatting. -
Open and hand back rich documents faithfully, across surfaces. RTF and Word documents round-trip through QUILL's clean buffer and materialize back to real formatting on export: Word (.docx) export now carries font, size, color, highlight, and alignment via a native writer (falls back gracefully if the optional
python-docxextra is not installed), and RTF and HTML export carry the same. When a target format genuinely cannot hold something, QUILL tells you before you commit, rather than dropping it silently. -
Re-read anything QUILL just said — the Spoken Echo. Speech disappears the moment it is spoken. The Spoken Echo keeps the last twenty announcements and shows them newest-first in a read-only dialog you can arrow through, re-read, and copy. Open it any time with Alt+Shift+E (Help → Show Spoken Echo); it works after every announcement, including ones from ordinary editing keys like Tab. For the familiar screen-reader gesture, double-pressing an informational command — Describe Formatting, Document Summary, Context Help, or Announce Contrast — opens the Echo instead of re-speaking. Toggle that under Settings → Accessibility → Double-press to show the Spoken Echo; the dedicated key always works.
-
A far richer Keyboard Manager. The Keymap Editor (Preferences → Keyboard → Keymap Editor) now searches two ways from one box: type part of a command name to filter, or type a shortcut —
ctrl+alt+m,Control + Shift + K, even a QUILL chord likequill, s— to reverse-look-up exactly which command owns that key (or learn it is free). Spelling is forgiving:control/ctrl/ctl, any modifier order, any case, with macOSCmdkept distinct fromCtrl. Record Keys lets you press a combination instead of typing it. Assigning a taken key now names the command that owns it (by its friendly title) and offers to reassign — moving the key and freeing the other command — instead of silently refusing. A new Run Diagnostics audits the whole keymap for duplicate shortcuts, orphaned and unreadable bindings, and "assigned but inert" keys, with a one-click Heal that removes bad entries and re-applies your shortcuts. -
Organize a whole book — Story Studio. A new Tools → Story Studio... opens a keyboard-navigable binder for a project folder: your Manuscript with chapters and scenes taken straight from its Markdown headings, plus groups for Characters, Places, Plot threads, Research, and Brainstorm. Press Enter on any item to open that file (a chapter opens at its heading); press Edit details... on an element to fill in a small, accessible form — a character's Role, Goal, Motivation, and Arc; a plot thread's Status; tags — saved as tidy front matter in the file itself. Press Compile manuscript... to stitch every manuscript file together, in order, into a new document you can then send through File → Export (Markdown, HTML, Word, DAISY, and more). A project is just a folder of plain-text files plus one small companion file, so nothing is ever locked in: delete the companion and you still have every word. It is entirely optional and additive — if you never open it, nothing changes.
-
Linked notes and backlinks — the Accessible Vault. A new Tools → Vault brings linked notes and backlinks to QUILL, built for the keyboard and the ear instead of a visual graph. Open Vault... points QUILL at a folder of notes; it indexes them and announces "Vault name: N notes, M links." Type
[[Note Title]]anywhere, put the cursor on it, and Follow Wikilink opens that note (a[[Note#Heading]]opens at the heading,[[Note#^block]]at the block); a missing note offers to be created, and an ambiguous name is a spoken chooser, never a guess. Show Backlinks answers "what links here?" as a list you can hear — "5 notes link here," each read with the sentence its link sits in, Enter to open the source at that mention — the graph view, spoken. Insert Link to Note... picks a note by title and inserts[[Title]]. And there is much more, all spoken and keyboard-first: Go to Note is a type-to-filter switcher and Search Vault searches every note (with Regex / Whole-word) and opens a result at its exact line; Show Tags is a tag pane where nested tags roll up (#areafinds#area/sub); Speak / Resolve Embed reads or inlines an![[embed]]; Insert Template fills in{{date}}/{{title}}and asks any{{prompt}}before dropping you at the{{cursor}}; Open Today's Note and Previous/Next Daily Note walk your dated journal; Export Vault as Website writes a small linked site (one accessible page per note, links and embeds resolved); and Sync Vault commits/pulls/pushes over your own Git remote and lists conflicts rather than overwriting. A vault is just a folder of Markdown files plus a small.quillcache you can delete without losing anything; links live as plain text. Optional and additive — never open a vault and nothing changes. -
A "Notepad++ experiment" editor surface for the accessibility testing round. The Experimental tab's editor-surface list gains a seventh option: the Scintilla control (wx.stc.StyledTextCtrl) — the engine behind Notepad++, and the only alternative surface with full multi-level undo AND redo. It is wrapped so QUILL's dirty tracking, caret behavior, and line endings work exactly as on the standard controls, and it falls back to the stock editor on any failure. Like every surface experiment it sits behind both Experimental switches and needs a restart; the open question this option exists to answer is JAWS/NVDA/braille behavior.
-
The Quillin Hub: share every QUILL artifact, validate locally first. The Quillin Hub (
hub.quillforall.org; service code inquillin-hub/) is the community store and submission service for every shareable QUILL artifact type -- Quillin extensions, AI agents, verbosity packs, sound packs, keyboard packs, AI skill packs, and pronunciation dictionaries -- not just Quillin extensions. Tools > Quillins > Submit to Quillin Hub... runspython -m quill.tools.artifact_validate <path>locally and reports pass/fail in an accessible dialog before anything goes near the network; pick a Quillin'smanifest.jsonand the whole folder is checked. The Hub itself is GitHub-native: every submission is reviewed in the Hub's Submission Forge, then published via a pull request toCommunity-Access/quill. One validator, one source of truth, no duplicate verdicts.
Fixes
- "Restart Now" no longer crashes the relaunched QUILL. Accepting an in-app restart offer (after changing the data location, importing legacy data, or switching the experimental editor surface) re-ran QUILL in a way that put the program folder ahead of Python's own libraries, and the new process died before its window appeared (
AttributeError: module 'platform' has no attribute 'system'). Restarts now use the proper module invocation, QUILL repairs the search path defensively at startup if any launcher gets this wrong, and the menu code no longer depends on the module that was being shadowed. - The experimental "Rich text" editor surface no longer crashes at startup. Selecting the wx.RichTextCtrl surface on the Experimental tab crashed QUILL while building the status bar (
TypeError: cannot unpack non-iterable RichTextSelection object), because that control reports selections differently from every other surface. It now speaks the same selection language as the standard editor controls, and any failure falls back to the stock control instead of breaking the editor. - Dictation is one clear gesture now — Hold-to-Dictate is retired, Locked Dictation stays. The press-and-hold F9 dictation mode from 0.7.0 has been removed: a held key repeats and announces itself endlessly under a screen reader, which made the gesture unreliable in exactly the situations it was meant for. Ctrl+F9 Locked Dictation is the one way to dictate — press to start, press again to finish — with Ctrl+Shift+F9 pause/resume, Alt+F9 speak-status, Escape stop-and-keep, and Shift+Escape cancel, all remappable. The Tools → Speech submenu is renamed from "Hold & Locked Dictation" to "Locked Dictation" to match, the vestigial "minimum hold to start" knob is gone from the Dictation Settings dialog, and the user guide and product docs have been corrected everywhere the old two-mode story lingered.
- The GLOW engine can no longer be installed-yet-silently-unavailable. GLOW's shared engine recently split its analysis backend into a new component, and QUILL's version floor was loose enough that an older, pre-split install could satisfy it — leaving the engine reporting "not installed" with no error anywhere. QUILL now pins the exact backend it needs (
acb-large-print8.0.0 or newer alongside the engine contract), the vendored offline wheels install cleanly on a bare machine, and this failure mode is extinct by construction. - A startup step that escaped its safety harness is back inside it. Every deferred startup task (screen-reader detection, crash recovery, watch folders) runs isolated so a failure is logged and skipped, never fatal — but the browser-preview warm-up scheduler had slipped outside that pattern and could in principle have taken down startup. It is now isolated like everything else, and the regression test guarding the whole contract is green again.
- Bookmarks now stick to their document and survive a restart — plus QUILL remembers where you left off. Named bookmarks used to be a single in-memory set that was forgotten the moment you closed QUILL and was shared across whatever document was open. Now each bookmark belongs to the specific file it was set in and is saved between sessions, so reopening a document brings its jump points back. QUILL also remembers your last cursor position in each saved document and returns you there when you reopen it. (Untitled documents keep bookmarks for the session until you save them.)
- Opening Word (and other) documents with QUILL set as the default app now works. Pressing Enter on a document in your file manager (with QUILL as its default app) did nothing, because the launcher tried to run the document instead of opening it. QUILL now opens the file as expected. The installer's "Open" and right-click "Send to QUILL" commands were hardened too.
- Far less double-spoken chatter. "No misspellings found" was one of many actions QUILL spoke twice — once from the status bar and again from an explicit announcement (because updating the status bar already speaks). Across the editor — updates, GitHub, SSH, dictation, the copy tray, profile switches, and more — these are now spoken exactly once, with the status bar still showing its (sometimes longer) text. A guard keeps the pattern from creeping back. (#728)
- Report a Bug is keyboard-navigable again, and submitting no longer seems to lose your text. You can now Tab through the form (it was built on a window that did not pass Tab between fields), and on submit QUILL reliably announces that the report was copied to your clipboard — previously that confirmation was spoken as the window closed and got lost, so it looked like nothing happened. (#729)
- No more alarming "text-to-speech failed" when your screen reader is running. QUILL's own SAPI voice is only a fallback for people with no screen reader; if it failed to start, QUILL spoke a scary "TTS engine failed" message (with a wrong "press F8" instruction) even though the screen reader was handling speech perfectly. Now that case is kept only as a quiet, informational note (not an alarming accessibility alert) and is never spoken — QUILL only speaks up about it when you genuinely have no other voice, and points you to the real Tools > Retry TTS Engine. Separately, the SAPI voice now initialises correctly even when QUILL is installed read-only (its helper cache moved to a writable per-user folder), so self-voicing works for people who rely on it. (#749)
- A control-type choice for braille displays, and an honest status on the cell-two offset. On a rich-text editor control, some braille displays show every line's first character in cell two — the same quirk long-time Word users will recognise. Preferences → Accessibility → Editor control type (braille) lets you switch the editor between RichEdit 3.0, RichEdit 2.0, and Plain edit, like Notepad (the rich control was only ever required for read-only views, #616; the change applies to documents opened afterward). Being straight with you: testing shows the control-type switch does not resolve the cell-two offset — the issue persists, and an outcome is still being considered. The options remain available for troubleshooting and experimentation, and we will keep reporting plainly on where this stands.
- Downloading Kokoro voices now shows its progress instead of dropping you back at the document. Starting the Kokoro voice-pack download from Manage Voices appeared to do nothing: focus snapped back to the editor and the progress window was never announced, because it opened while the Manage Voices dialog was still closing. The download now opens after that dialog is fully gone, so the progress window presents and your screen reader announces it. Once the Kokoro models are present, the redundant 114 MB download button is hidden rather than offered again.
- Offline dictation works out of the box — the speech engine is now bundled. The private, on-device Whisper engine that powers dictation (Ctrl+F9) and Tools > Speech was missing from the installer, so QUILL reported "whisper binary not found" even after you downloaded a model (the model and the engine are separate downloads). The engine now ships with every build, so offline dictation works with no extra step. (#742)
- Saving a Faster Whisper model no longer freezes at 2% and crashes. The download updated the on-screen progress so often that it flooded QUILL's main thread — the bar appeared stuck near 2% and the app eventually crashed. Progress now updates at most once per percent, so model downloads run smoothly to completion. (#748)
- Export speech audio as MP3 (and more), not just WAV. Generate Speech Audio only ever offered WAV, even with ffmpeg installed. When ffmpeg is present you can now save as MP3, M4A, M4B, OGG, Opus, or FLAC; without it, WAV still works exactly as before. (#750)
- Live preview no longer flickers or re-announces as you type. With a preview open, editing a line used to re-open/reload the external browser preview on every keystroke — a full page reload that flushed braille and re-announced from the top, and jumped the page back to the top. The external browser preview now refreshes only after you pause typing (debounced) and keeps your place on reload — landing back at the section you are editing, or at your previous scroll position — so it stays put and quiet. The in-app side preview (Ctrl+F6 to focus it) already updates silently in place with no reload — the recommended live preview for screen-reader and braille users.
- Snappier, less alarming startup. The one-time WebView2 preview-engine warm-up now runs after the editor is ready and focused, instead of before it — so a slow first-time Windows setup no longer looks like the app froze on launch. If the interface does ever stall, QUILL now records a diagnostic thread-stack snapshot for short stalls too (previously only very long ones), and startup task timings are now always written to the logs — so a slow launch can be reported with evidence, no special setting needed.
- Idle AI models are actually released now. The background sweep that unloads models after they have been idle (the Performance setting "Unload idle models after…") crashed silently on every tick, so nothing was ever unloaded and memory was held longer than intended. The sweep now runs correctly, freeing idle model memory as configured.
- The crash-report dialog now tells you what happened. After a crash, choosing Send, Copy, or Send-without-a-sign-in used to complete silently — indistinguishable from doing nothing for a screen-reader user. QUILL now confirms the outcome out loud: that the report was sent, that it was copied to your clipboard (with what to do next), or that sending failed and the report was copied instead.
- Press F1 on any command and hear what it does. Context help now covers every command. Previously more than two-thirds of commands had no help topic, so asking "what does this do?" said nothing useful. All 319 remaining commands — across Edit, Format, Navigate, File, Tools, and the rest — now have a plain-language description and their keyboard shortcut, spoken on demand.
- Smart triggers and Quillin-contributed abbreviations now actually fire. Typing
=bug(),=todo(10),=rand(3,4), or any other declared=name()trigger alone on a line and pressing Enter now replaces the line with the generated text, and Quillin-contributed abbreviations likeqbugandqmeetnow expand as you type (when Abbreviation Expansion is turned on) — exactly as documented since 0.7.0. Both were declared by the bundled Smart Insert Quillin (and the manifest format accepted them) but were never dispatched. Numeric trigger arguments work too —=todo(10)makes a ten-item checklist — every insertion is announced and undoable, individual triggers and abbreviations can still be turned off on the Quillin's preferences page, and your own abbreviations always win over contributed ones. - Quiet failures now speak up. Several actions could fail silently, which for a screen-reader user is indistinguishable from success: exporting or importing List Studio settings now confirms success or explains the failure; closing the Pronunciation Dictionaries dialog with OK now warns you if any dictionary could not be saved (instead of dropping your changes without a word); and the Quillin wizard's "Copy JSON" only claims "copied" when the clipboard actually took the text.
- Report a Bug now submits your issue directly — one form, no browser detour. Help → Report a Bug now ships with its direct-submission component (feedback_hub), so the accessible form files your report straight to the QUILL issue tracker, pre-filled from the shared feedback schema, with a real Submit Issue button and Escape to cancel. The old built-in form (whose button opened a browser support page, and whose separate window ignored Escape) is gone entirely, along with its two settings — there is one way to report a bug and it just works. In the unlikely event the form cannot open, QUILL copies the online support-form link to your clipboard and tells you so.
- The dialog entry/exit cues now stay off everywhere. Turning off Announce entering and leaving dialogs (or picking up its new quiet default) silenced the main window's dialogs, but standalone surfaces — the AI Hub, AI Library, prompt and skill libraries, publishing tools, Mastodon dialogs, the crash reporter, and more — kept speaking "Entered / Exited name dialog" regardless. The setting now governs every dialog in the app.
- The Quillin Hub now fails closed on unsigned submissions. A new Ed25519 / minisign-shaped publisher signature (
.minisigsidecar next to the artifact) is verified at the Submission Forge before the validator runs; unsigned or invalid artifacts are rejected with a clear "Unsigned" / "Invalid" line in the report. The storefront and detail pages show a "Signed by<keyid>" badge for every artifact, the GitHub sync worker pulls the signer key id from sidecars on main, and the in-appSubmit to Quillin Hub...dialog and the Quillin Manager both surface the signature state of the artifact you're submitting or have installed. Seedocs/signing.mdfor the protocol anddocs/release/quillin-hub-deployment.mdfor the deploy runbook. (#517, #519) - The unified validator now reports and can require signatures.
quill.tools.artifact_validatealways reports the signature status of an artifact; pass--require-signedto fail an audit whose sidecar is missing or does not match. This is the same gate the Hub uses, so the local pre-flight check and the Hub's Submission Forge share one truth.
Enhancements
- Faster startup. QUILL now imports far fewer rarely-used modules up front. The update checker, GLOW's update checker, the BITS Whisperer speech provider/model tools, the publishing/share/export dialogs, Search and Replace In Files, the AI Assistant tools, and a dozen once-used dialogs (Command Palette, Sticky Notes, AI Model settings, Ask QUILL, and more) now load only when you actually use those features, instead of on every launch. Loading the bundled Quillins (Tools > Quillins) also moves to just after the window appears rather than before it, so the window itself shows sooner. Measured together, this cuts a good-sized slice off the time between starting QUILL and the editor being ready — with no change to how any of those features work. A new "Cold start" section in
logs/startup_tasks.txt(Help > Open Logs Folder) shows exactly where the remaining time goes, for anyone curious or reporting a slow-launch issue. - The Python snippet sandbox is harder to escape. Snippets that AI features or Quillins run in QUILL's isolated Python sandbox are now also statically blocked from dunder attribute access (the classic route from a harmless-looking expression to the underlying OS), on top of the existing separate-process isolation, import allowlist, scrubbed environment, and time/memory caps. If the operating system refuses a memory or CPU cap, QUILL now logs that the run was time-bounded only instead of staying silent.
- Quieter dialogs by default — less duplicated chatter. The spoken "Entered / Exited name dialog" cues (Preferences → Accessibility → Announce entering and leaving dialogs) now default to off, because every supported screen reader already announces a dialog and reads its title on focus, so the extra cue was redundant noise. The setting stays exactly where it was for anyone who wants it back, and because settings are stored as a delta from QUILL's defaults, existing users who never deliberately switched it on pick up the quieter default automatically on upgrade.
- Open your WordPress posts and pages in QUILL (read-only, Full Quill profile). A new read-only publishing connection lets you sign in to a WordPress site with your username and an application password, browse a listing of your posts and pages, and open one into the editor to read and edit it locally. This first step is deliberately read-only: QUILL does not send anything back to the site yet — there is no publish, update, or schedule. It is available in the Full Quill profile (and can be turned on for any profile via Preferences → Profiles and Features → Manage Individual Features); connections live under File → Publish → Publishing Connections..., and your application password is stored securely in the Windows Credential Manager. Connections only ever talk to your site over HTTPS (plain HTTP is allowed only for local/loopback addresses).
- New Experimental settings tab — try different editor surfaces (for testing). A new Settings → Experimental tab adds an Editor surface chooser so you can test how QUILL feels on different controls: RichEdit 3.0, RichEdit 2.0, Notepad (a plain edit control), Rich text (an experimental
wx.RichTextCtrl), or Native Win32 EDIT (a pywin32 spike that hosts the very control Notepad uses, Windows only); "Default" follows your Accessibility Editor control type setting. A Hide editor border toggle draws the editor with no border for a cleaner, Notepad-like frame. A built-in read-only explanation panel updates as you change the chooser, describing what each surface does and its impact from both a user and a technical perspective, and the experimental options stay ignored until you tick "I understand features may degrade based on the control selected" — a safety gate so nothing changes by accident. These change how the editor is built, so QUILL warns you to restart when you change them and applies them to documents opened after restart. - Smaller installer: the offline speech engine downloads on demand. The private, on-device speech engine (whisper.cpp) is no longer bundled in the installer. The first time you use offline dictation or transcription, QUILL offers to download it right there — about 8 MB, checksum-verified, with a cancelable progress bar (disabled in Safe Mode) — and you can also get it any time from Tools > Speech > Download Offline Speech Engine.... Upgrading from a release that bundled the engine? Your existing copy is kept and keeps working — nothing to re-download. (First step of the AI footprint/optimization plan: a pinned, SHA-256-verified release-asset acquisition path.)
- Smaller installer: Kokoro neural voices now download on demand. The ~120 MB Kokoro voice models are no longer bundled in the installer (it is that much smaller to download and install). The first time you choose a Kokoro voice, QUILL downloads it for you — checksum-verified, with a cancelable progress bar — and other read-aloud voices (DECtalk, eSpeak NG, Piper, SAPI) work in the meantime. If you are upgrading from a release that bundled Kokoro, your existing copy is kept and keeps working — nothing to re-download. (Proof-of-concept for the AI footprint/optimization plan's "host redistributable components as verified release assets.")
- Smaller installer: the DECtalk and eSpeak NG voices download on demand too. The classic DECtalk runtime (~2 MB) and the eSpeak NG engine and its voice data (~40 MB) are no longer bundled in the installer. When you choose one of these voices, QUILL downloads it for you — checksum-verified, with a cancelable progress bar (disabled in Safe Mode) — and Windows' built-in SAPI voices remain available immediately as the always-present offline voice. If you are upgrading from a release that bundled DECtalk or eSpeak NG, your existing copies are kept and keep working — nothing to re-download. (Same pinned, SHA-256-verified release-asset path as whisper.cpp and Kokoro.)
- Smaller installer: the Vosk speech engine downloads on demand. The optional Vosk engine — a very-low-resource, CPU-only offline dictation/transcription engine for older or low-memory machines — is no longer bundled (it was the single largest optional engine, ~51 MB). Get it from Tools → Speech → Download Vosk or Help → Download Optional Components; it installs on demand, preferring QUILL's own pinned, SHA-256-verified release asset and falling back to the public package index. whisper.cpp remains the default offline engine. Some build-only runtime data (the
Babeltranslation-compiler, ~29 MB) was also dropped from the shipped runtime, since the app loads compiled translations with the standard library. No offline speech engine is bundled in the installer any more, so the base download is lighter than ever. - Runs light on modest machines: idle-model unloading and a Low-resource mode. Two new options under Settings → Performance and Memory let the full AI and speech feature set fit on limited-memory, CPU-only machines — never by disabling features, only by managing memory. Unload idle models after N minutes frees an AI, read-aloud, or dictation model you have stopped using (it reloads on next use); Low-resource mode keeps only one model loaded at a time and prefers the smallest that fits, and turns on automatically (with a one-time spoken notice) on very-low-RAM machines. Peak memory drops when you move between features, at the cost of a brief reload. (
quill/core/model_lifecycle.py, wired throughlifecycle_serviceto the speech, Kokoro, and llama.cpp model holders.) - AI model guidance that fits your machine. The on-device AI model dialog now surfaces a one-step, screen-reader-announced upgrade suggestion when your computer can comfortably run a more accurate model than the one currently selected — take it or ignore it; new installs still default to the smallest model that fits.
- A way forward when the cloud is unreachable. If a cloud AI request cannot reach the internet (offline, timeout, rate-limit) and you have an on-device model installed, QUILL now tells you — out loud — that you can switch to it and keep working offline. It never switches for you, so your privacy posture never changes without your say-so.
- Proofread Mastodon posts before sending (per account). In Tools → Share → Mastodon Accounts..., select an account and tick Spell-check posts before sending to have QUILL open the Spelling Review (F7) on the post text when you press Post, so you can fix misspellings before it goes out. Off by default and per account, so existing accounts are unaffected until you turn it on.
- Spell check a document before saving. A new Settings → Editing → Spell check a document before saving option (off by default) opens the Spelling Review (F7) automatically when you Save or Save As, so you can correct the document before the file is written, then the save proceeds.
- Spell-check in other languages, downloaded on demand. A new Tools → Spell Check Language... lets you pick the language QUILL checks against. English works out of the box; choosing Spanish (Spain) or French (France) downloads that dictionary the first time from QUILL's own verified source (checksum-checked, with a cancelable progress window), then it works offline. Your choice is remembered, and the spell checker uses it for the F7 review and check-as-you-type. (More languages can follow; this first release proves the path with Spanish and French.)
- Hear how deep your indentation is. Press Tab or Shift+Tab and QUILL can now speak the new indentation depth — "4 spaces", "8 spaces", "1 tab" — instead of just "Indented lines", so you always know where the line sits. It honours your tabs-vs-spaces and width choices (Insert tab characters instead of spaces and Number of spaces per indent level in Settings). Prefer the terse message? Turn off Announce indentation depth on Tab (Settings, Accessibility).
- Quieter dialogs, your choice. A new Announce entering and leaving dialogs setting (Settings, Accessibility) controls the spoken "Entered / Exited name dialog" cues. Off by default, because most screen readers already announce dialogs; turn it on if you want QUILL's own cues as well.
- Jump straight to an open document. With several documents open, press Alt+1 through Alt+9 (and Alt+0 for the tenth) to go directly to that document by its position, instead of cycling with Ctrl+Tab. If nothing is open at that position, QUILL tells you and stays put. The bindings are remappable in the Keymap Editor.
- Quieter Read Aloud for screen-reader users. While Read Aloud played, QUILL selected each sentence in the editor to follow along — which made your screen reader announce the selection ("...selected") over QUILL's chosen voice. This follow-along is now off by default, so the cursor stays put and only the Read Aloud voice is heard. Sighted and low-vision users who want the cursor to track what is being read can turn it back on with the new Move cursor to follow Read Aloud setting (Settings → Read Aloud).
- Portable installs update to the portable build, not the installer. Check for Updates now recognises when you are running the portable bundle and offers the portable .zip for that release instead of pushing the Windows installer at you. The download lands in your updates folder with an "Open folder" button so you can swap it into place; installed copies keep getting the installer exactly as before.
- Three classic-editor power features for keyboard-first writers. Inspired by the venerable WordPerfect Editor, three additions that have no equivalent elsewhere in QUILL:
- Repeat Next Command (Edit menu). Set a count, then the very next command runs that many times — move down twenty lines, delete ten words, or insert forty dashes in one gesture. The count applies once and clears. Works with any command, including a recorded macro. Unbound by default; assign a key in the Keymap Editor.
- Restore Deleted Text (Edit menu). QUILL remembers the last three blocks removed by its structured delete commands (delete to line start/end, delete to document start/end, delete paragraph). Choose one from an accessible list and it is re-inserted at the cursor. Unlike Undo, which only reverts the last edit in place, this can place recovered text anywhere.
- Describe Character at Cursor (Tools → Advanced). An accessible dialog — the same read-only style as F1 help — that names the exact character under the caret: its Unicode name, code point (hex and decimal), category, and plain-language notes for invisibles that are easy to miss (no-break space, zero-width space, smart quote, tab, line ending). The screen-reader descendant of "Reveal Codes".
- Braille repair tools for files that will not emboss — Braille → Repair. A new submenu brings NLS-style proofreading to QUILL's braille mode:
- Read Layout Metrics speaks the diagnostic numbers in one pass: the cursor's cell and current line length, the longest line in the file against your cells-per-line limit (with a "page width exceeded" warning), the current and total braille pages, and the longest page against your lines-per-page limit (with a "page depth exceeded" warning).
- Go to Longest Line and Go to Longest Page jump the cursor straight to the worst offender so you can fix a page-width or page-depth problem by hand.
- Remove Trailing Spaces on This Line and Remove Trailing Spaces in Whole File clear the trailing spaces that cause most page-width problems, preserving every line ending and form feed.
- The limits come from your existing Cells per line and Lines per page braille settings (Preferences → Braille), so the diagnostics match your page geometry.
- Reveal Codes — see and hear every hidden formatting code (Alt+F3). The beloved WordPerfect feature, reimagined screen-reader-first. Press Alt+F3 (or View → Reveal Codes) to open a pane below the editor that shows your document as a stream of bracketed codes and text —
[Bold On],[Font: Arial],[Center],[Tab],[¶ Hard Return],[No-Break Space], and more — so nothing about your document is hidden from you. F6 moves between the editor, the Reveal Codes pane, and the status bar (Shift+F6 goes back); the two carets stay in sync, so moving in the pane moves the editor caret and vice versa. Each code is an individually-announced, navigable item: arrow code-to-code, jump from a[Bold On]to its matching[Bold Off], and hear "bold on, 12 characters." Choose a Structured list (one labeled item per code — the most accessible) or a Flowed view (codes inline within the text, the classic visual/braille layout) and a quiet / balanced / detailed verbosity — all in Settings. Hidden by default; nothing changes about your clean editing buffer. - Inline notes — sticky comments tied to your content. Press Alt+Shift+I to jot a private note about the current line or your selection. The note is anchored to the text, so it follows that content as you edit and is remembered the next time you open the document (per document, like bookmarks). Move between notes with Alt+Shift+J (next) and Alt+Shift+G (previous) — the cursor jumps to the noted text and QUILL announces the note. Press Alt+Shift+H to hear the note at the cursor, and press it again quickly to open it for viewing, editing, or deleting. If the noted text is later removed, the note is kept (never silently lost) rather than pointing at the wrong place. All keys are remappable in the Keymap Editor; untitled documents keep notes for the session until you save.