Skip to content

Releases: cpoteet/Quill

Quill 2.6.0

Choose a tag to compare

@cpoteet cpoteet released this 02 Nov 03:01

Released 2026-11-01

What's New

Move blocks by dragging

Each block now has a marker in the left margin that shows what kind of block it is, and dragging it moves the block. Hold ⌘ while you drag a heading's marker to move the heading with its whole section. You can reorder a post without cutting and pasting, and footnotes renumber to match the new order.

Continue Writing page

When nothing is open, the editor area now shows your site's name and icon with the drafts and posts you were last working on, including local drafts and posts with unsaved changes on this Mac. It also lists your next scheduled posts, with any that missed their publish time first, so you can pick up where you left off without searching the sidebar.

Change bars

A thin gray bar in the right margin now marks each block that differs from the last saved version, and a dot marks where a block was deleted. You can see what you changed before you save or revert, including what Quill brought back when it restored unsaved changes.


Improvements

  • Move Block Up and Move Block Down — The Edit menu can move the current block without the mouse.
  • View Post for published posts — For anything but a draft, the Preview button is now View Post (or View Page) and opens the version saved on WordPress, so it no longer leaves a stray autosave behind.
  • WordPress's own error messages — When WordPress rejects a request and gives a reason, Quill shows that reason instead of asking you to re-enter your Application Password.
  • Clicks land where you click — Clicking in the blank space beside the text column or between blocks puts the cursor on the nearest line at the point you clicked, instead of at the start of the next block or nowhere.
  • Wide tables scroll — A table wider than the editor's column now scrolls sideways inside it instead of spilling into the margin.

Fixes

  • Undo right after opening a post no longer empties the editor, and each post starts with its own undo history.
  • Adding a tag or category that already exists on your site uses the existing one instead of failing.
  • The link picker shows an error when its search fails, for example when you're offline, instead of reporting no results.
  • Pressing Return on an empty line inside a column or tab panel adds a line instead of splitting the Columns or Tabs block.
  • Pressing Return on an empty last bullet inside a column or quote ends the list and keeps the cursor inside the block.
  • Pressing Return in an empty button replaces it with a paragraph, as it does in WordPress.
  • Clicking in the editor while the second toolbar row appears or disappears no longer moves the post under the pointer or turns a click in a table cell into a cell selection.
  • The Paragraph / heading menu opens on the first click after you choose a style.
  • Choosing a style for an image or separator keeps the block selected, so its controls stay open.
  • The Default tab setting is available when the cursor is in a tab's title.
  • A new Details block puts the cursor in its summary, and a block inserted from the summary goes after the Details block.
  • Collapsing an accordion section or Details block by clicking its heading row moves the cursor out of the hidden content.
  • An image's width and height fields stay filled after you click Reset a second time.
  • ⌃⌘F no longer opens Find.
  • Code blocks in dark mode no longer shade each line like inline code.
  • The selected Media filter is highlighted in the accent color instead of gray.
  • The About window opens centered on the screen.
  • The window's position and sidebar width are kept after you restart your Mac.

Quill 2.5.0

Choose a tag to compare

@cpoteet cpoteet released this 25 Oct 00:07

Released 2026-10-24

What's New

Edit media titles and captions

The Media Info inspector now edits an item's title and caption alongside its alt text, and each change saves to WordPress as you make it. When you insert a single image from the media library, Quill fills in its caption, with formatting and links, so you don't retype it in each post. The inspector also shows each file's size, and the inspector was reordered for better hierarchy.


Improvements

  • Thumbnails fill the grid — Media library thumbnails now resize with the window so each row fills its width, instead of leaving the spare space in the gaps.
  • Closing the preview deselects the item — Closing the large preview or switching media filters now deselects the item, and an open Media Info inspector shows "No Selection".

Fixes

  • The Media Info inspector's Filename row shows the file's name instead of its WordPress title.
  • The Media Info inspector slides in smoothly when it opens, without a delay or the thumbnails flashing their placeholder.

Quill 2.4.0

Choose a tag to compare

@cpoteet cpoteet released this 13 Oct 17:38

Released 2026-10-13

What's New

Groups and patterns open for editing

A Group, Row, Stack or Grid now opens for editing when everything inside it is a block Quill can edit, instead of always showing as a locked card. Most patterns are built from Groups, so posts that use them can now be edited in Quill. Each Group's colors, spacing and layout are kept exactly as they were.

Clearer cards for blocks Quill can't edit

Cards for blocks Quill can't edit are now one row that names the block type and the name you gave it in List View, such as "Cover: Membership hero", instead of a preview of the block's code. A synced pattern's card shows the pattern's title from your site and has an Edit in WordPress button, and it says "not found" when your site wouldn't display the pattern.

Inline images and table cells

Images that sit inside a line of text, in a paragraph or a table cell, now stay where they are with their markup unchanged. Before, Quill turned them into image blocks, which split the paragraph around the image and caused WordPress to delete images in table cells the next time the post was saved there. Inserting an image into a table cell now adds an inline image, and other blocks inserted from a cell, such as a gallery or an embed, go after the table instead of being lost.


Improvements

  • Refresh reloads the open post — Refresh now also reloads the open post or page when it changed on WordPress and you have no unsaved changes, so a post edited, scheduled or published elsewhere shows its current content and status without being reopened.
  • AI results kept when you click away — Clicking elsewhere in the post while an AI result is waiting now keeps the result, which ⌘Z can still undo, instead of quietly restoring your original text.
  • New drafts start untitled — A new draft's title field is empty and shows its "Title" placeholder, so WordPress never receives "Untitled" as a real title.
  • Missing footnotes can be filled in — When a post has footnote markers but WordPress has no text stored for them, Quill now shows an empty note for each marker to type in, instead of a locked Footnotes card.
  • Cursor goes into new items — Adding a column, button, accordion section or tab puts the cursor in it so you can start typing.
  • Tab title placeholder — An empty tab title now shows a gray "Tab title" hint, as Accordion and Details titles do.
  • "Saved to WordPress" confirmation — Sending a local draft to WordPress as a draft now says "Saved to WordPress" instead of the generic "Draft saved".

Fixes

  • Changing a scheduled post's Status to Published and saving now publishes it right away instead of leaving it scheduled.
  • The status icon next to the title now changes only after a save succeeds, not as soon as you choose a new Status.
  • Switching to another post right after pressing ⌘S no longer causes a false "Conflict Detected" the next time you save that post.
  • The Slug field now shows the address WordPress assigned as soon as you publish, without reopening the post.
  • Dates in the sidebar now show your local time, matching Post Settings, instead of the server's date.
  • Resizing the window no longer makes the post flash blank.
  • Opening a post no longer briefly shows an empty "Start writing…" editor before the post appears.
  • Pressing Tab outside a list or table no longer moves the cursor to an image caption or button, and in a code block or Preformatted it inserts a tab.
  • Code blocks, Preformatted text and inline code now keep straight quotes and plain dashes.
  • ⌘← and ⌘→ at the edge of a paragraph no longer select the card next to it, which made the next keystroke replace the card.
  • Pressing Return on an empty line just above a quote's or pullquote's citation now leaves the quote instead of splitting it.
  • A table just before the footnotes now has an empty line after it to type in, and ↓ from its last cell no longer lands in a footnote.
  • The image toolbar now stays with the image after a size change, and its W and H fields keep showing the size.
  • Saving a post written in the WordPress editor no longer rewrites its text color or underline markup, changes the order of its image classes, or changes the link setting of an image edited in WordPress.
  • A footnote list pasted in Code View no longer keeps the ↩︎ back link in the footnote text.
  • ⌘N now clears the sidebar search, so the new draft appears in the list.
  • A category you add in Post Settings now appears at the top of the list instead of below every existing category.
  • In Media, the upload spinner now keeps going until every upload has finished.
  • A document, audio file or video uploaded while its Media filter is selected now stays in that filter.
  • Choosing Upload Media while Media is already showing no longer closes the inspector.
  • Link search now says "Couldn't search" and gives the reason when a search fails, instead of showing an empty list.
  • When Quill can't reach your site, Settings and the manual connection panel now say "Couldn't reach" with the site's address, instead of showing a raw system error.
  • Clicking Save in Settings now checks a newly entered Anthropic key and clears an earlier rejection message.
  • A failed save in Settings no longer clears your writing-style samples.

Quill 2.3.0

Choose a tag to compare

@cpoteet cpoteet released this 09 Oct 01:53

Released 2026-10-08

What's New

Featured images in Post Settings

Posts and pages now have a Featured Image section in Post Settings, where you can choose, upload, replace or remove the image. Before, Quill kept an existing featured image but couldn't set or change one, so you had to go to the WordPress admin.

Model choice and rewritten AI prompts

In Settings you can now choose which Claude model Quill uses and how long it reasons. Every AI prompt was rewritten and tested: rewrites keep links and footnote markers, the right-click menu adds Rephrase and Fix Spelling & Grammar, and Generate fills in the excerpt and links the facts it looked up to their sources.

HTML outside blocks is kept, and a Custom HTML block

Before this release, editing a classic post turned any HTML outside a block, such as a <div> with a class or an <iframe>, into plain paragraphs when you saved, and the markup was lost. Quill now keeps that HTML as a Custom HTML block, the same way WordPress's Convert to Blocks does. You can also insert and edit Custom HTML blocks in Quill with a new supported editor block.

Evaluate applies fixes and checks facts

Evaluate now runs a review and a web-search fact check together, and sorts the results into Fixes, Ideas and Facts to Check, with each fact linked to its source. One click applies a fix or suggestion to the post without disturbing its links or formatting, and you can undo it like any other edit.

Filter Posts and Pages by status

A filter button next to the sidebar search shows only published, draft or scheduled items, with a count for each. You no longer have to scroll the whole list to find work in progress.

Errors stay on screen and say what went wrong

A failed save, upload, preview or AI request now shows in a banner above the editor that stays until you dismiss it or try again, instead of a notice that faded after two seconds. Messages give the reason, including Anthropic's reason for an AI failure and "You're offline" when your Mac has no connection. The sidebar's load error now has a Retry button.


Improvements

  • Share button — Published and private posts have a Share button in the editor toolbar that opens the macOS share menu with the post's link.
  • Clearer save buttons — The save buttons now say where the post goes, such as Save to WordPress, Save Draft, Switch to Draft and Save Locally, instead of Publish Draft.
  • More upload types — The media library now uploads Word, Excel, PowerPoint, .txt and .csv files as well as images and PDFs.
  • Sidebar width remembered — Quill reopens with the sidebar at the width you last left it.
  • Consistent editor accent — Selections, focus rings, the find bar and the table-size picker all use Quill's amber accent, and selection outlines are easier to see in light mode.

Fixes

  • Opening the inspector no longer makes the post flash blank while it slides in.
  • Dragging the sidebar closed and back open no longer makes the window wider.
  • Switching sections while Post Settings or Media Info is open no longer makes the selected section button slide into place.
  • A post stays highlighted in the sidebar after you save it.
  • Moving the open post to the trash now closes its editor.
  • Updating a published post now says "Updated" instead of "Published".
  • A block inserted while the cursor is in an accordion heading, tab title or button now goes after that Accordion, Tabs or Buttons block instead of splitting or deleting it.
  • Footnotes typed or pasted into code view are no longer lost after saving and reloading.
  • After Quill fails to load your site at launch, Refresh (⌘R) reloads both Posts and Pages, so Pages no longer reads "No pages yet".
  • On Macs set to a language other than English, a failed connection now shows Quill's explanation instead of the raw system error.

Quill 2.2.0

Choose a tag to compare

@cpoteet cpoteet released this 03 Oct 21:40

Released 2026-10-03

What's New

Add onboarding flow

When no site is connected, Quill now opens to a setup screen that signs you in through WordPress's own approval page in your browser. You no longer have to create an application password and paste it into Settings, though sites that turn browser approval off can still connect that way. Setup also offers to add an Anthropic API key for the AI features and checks the key before saving it.


Fixes

  • If you delete an AI rewrite before clicking Discard, Discard no longer puts the original text back.
  • Discarding an AI rewrite that ended the post with a table or separator no longer leaves an empty paragraph behind.
  • Previewing a draft always sends its current footnotes, so a draft you previewed earlier with different notes no longer keeps the old ones on WordPress.
  • Saving a post with footnotes no longer alters a Custom HTML or other unsupported block that contains the text of a WordPress footnotes marker.

Quill 2.1.0

Choose a tag to compare

@cpoteet cpoteet released this 30 Sep 14:15

Released 2026-09-30

What's New

Editable galleries

You can now edit a gallery in place instead of deleting it and inserting a new one, including galleries made in the WordPress editor. The gallery picker opens with the gallery's images, captions and settings already filled in, and it keeps what it doesn't show, such as each image's link and size.

Cleaner pasting

Content pasted from Word, Google Docs, web pages, code editors and chat apps is now reduced to clean WordPress blocks, so the block editor opens it without asking to repair anything. Lists, code, alignment, video players and images come through as real blocks, and pasted screenshots and image files upload to your media library. Copying and pasting within Quill keeps every block exactly as it was.


Improvements

  • New icon — Quill has a new icon reflected in the app icon and through the app interface.
  • Reducing content loss — Quill now saves your work in more situations, including when you quit, when it restores an autosave, and when a post was changed in WordPress while you were editing.
  • Back to Media — While a media item is magnified, a Back to Media button in the toolbar returns you to the thumbnails, so Esc is no longer the only way out.
  • Named empty filters — An empty media filter now says "No audio" (or images, documents, video) instead of saying the whole library is empty.

Fixes

  • If you schedule a post for a time that has already passed, the date picker now warns you and an alert asks before WordPress publishes it, where before it published silently.
  • Resized and newly inserted images no longer save a fixed height, so they keep their proportions on screens narrower than the saved width.
  • The image toolbar closes when you click away after editing an image's alt text, size or link.
  • An image stays selected after you change its alignment, and the cursor no longer drops into its caption.
  • Editing a post no longer turns its galleries' attachment-page or custom links into media-file links or drops their image size.
  • An image you link to a web page now saves as a custom link instead of a link to the image file.
  • Custom HTML and other blocks Quill can't edit now save exactly as written in posts that have footnotes.
  • Bold, italic and links around inline code are kept when you save.
  • Centered and right-aligned text shows its alignment in the editor.
  • Script in a Custom HTML block no longer runs inside the editor.
  • Inserting a gallery while a block is selected adds it after that block instead of replacing the block.
  • Writing evaluation reads headings, paragraphs and table cells separately, so it no longer flags them as one run-on sentence.
  • Text you type elsewhere in the post while an AI rewrite runs is kept, and Discard removes only the rewrite.
  • Starting a second AI rewrite before you accept or discard the first now shows a message instead of putting the first result in the wrong place.
  • Changing only a post's settings now shows the unsaved-changes dot, and Revert to Saved… resets those settings or reports an error when it can't reach WordPress.
  • Preview in Browser no longer writes a draft after a failed load or while the missing-blocks banner is showing, and the preview now includes footnotes.
  • An image that finishes uploading after you switch posts now goes to the Media Library instead of into the post that's open.
  • Changing the site in Settings clears the previous site's posts and media, and one site's autosave can no longer restore into another site's post.
  • A failed autosave now shows a message instead of failing silently.
  • Clearing the Claude API key in Settings now removes it.
  • Switching media filters, searching or refreshing now closes the magnified preview, and the previous filter's thumbnails no longer flash.
  • Saving alt text in the media library now reports a failure instead of showing "Saved".
  • The image picker and the gallery picker no longer show an empty grid when your newest uploads aren't images, and they no longer repeat an image after an upload.

Quill 2.0.0

Choose a tag to compare

@cpoteet cpoteet released this 26 Sep 00:41

Released 2026-09-25

What's New

Note: Quill now requires macOS 27.

Apple notarization

Quill is now no longer self-signed and is now notarized by Apple. This will eliminate Apple warnings, and it ensures Quill meets Apple's expectations for safe applications.

Native macOS UI

All of the custom chrome has been removed in favor of native macOS controls and user interface patterns. The app retains a light theme for a small visual identity.

Rebuilt Media library

Media library changes to have prominent filters on the left, thumbnails in the middle, and the metadata panel remains on the right. This is meant to provide a more detailed browsing experience for media.

Posts open in WordPress as real blocks

Posts written in Quill now open in the block editor as separate blocks instead of one Classic block. This brings Quill complete parity with the Gutenberg editor allowing you to move freely between them.

Nothing is lost when you edit

Block settings Quill has no controls for, such as colors, font sizes and custom classes, now survive an edit. Custom HTML, shortcodes and other blocks Quill can't edit appear as cards and save back unchanged, and if a block would still be lost, Quill warns you before saving. If you opt to save to WordPress, Quill will convert classic posts into block compatible ones.

Seven more editable blocks

You can now edit Columns, Details, Buttons, Accordion, Tabs, Pullquote and Preformatted blocks, and insert them from the + menu in the editor toolbar. All of these blocks also support a handful of custom properties such as choosing the default tab in the Tabs block. These settings are shown in a new toolbar underneath the main one in the editor, and existing options were moved there for existing editor supported blocks.


Improvements

  • Editor commands in the File menu — Save (⌘S), Publish (⇧⌘P), Revert to Saved… and Preview in Browser.
  • Unsaved-changes dot — The window's close button shows a dot while you have unsaved changes.
  • AI rewrites act on your selection — Make Longer and Make Shorter now change only the text you selected.
  • Easier-to-read editor — The text column is narrower and the background matches the rest of the window.
  • Clearer toolbar — Tooltips say what each button inserts, and the Table button lets you pick a size. The Underline button is gone, but ⌘U still works.
  • Help menu — Help ▸ User Guide and the new Help ▸ Changelog open quill.siolon.com.

Fixes

  • Local drafts appear in Drafts even when your site can't be reached.
  • A post that fails to load no longer stops you saving the next local draft.
  • Media loads from sites whose plugins print PHP warnings into API replies.
  • The publish button changes to Update as soon as you publish a draft.
  • The sidebar shows the load error instead of "No posts yet".
  • Switching posts during an AI rewrite cancels it instead of writing into the new post.
  • An AI rewrite that returns nothing leaves your text unchanged.
  • The editor toolbar scrolls instead of overlapping its buttons when the window is narrow.
  • A post that ends in a link no longer opens with the link button active.
  • Two narrow images in a row sit on separate lines.
  • Clicking below a table, gallery, embed or separator at the end of a post puts the cursor after it.
  • Scrolling the media library after a delete or upload no longer skips or repeats an item.
  • Block settings containing &, <, > or quotes, such as a YouTube URL with an ampersand, now save correctly.
  • An empty footnote's ↩︎ button stays on the footnote's line.

Quill 1.11.0

Choose a tag to compare

@cpoteet cpoteet released this 21 Sep 01:27

Released 2026-08-20

What's New

Unmodeled Gutenberg blocks are safe

Quill no longer damages blocks it does not have an editor for. Columns, Group, Accordion, Audio, Video, Pullquote, Playlist and third-party blocks now load as a static "Not editable in the visual editor" card. Quill preserves their HTML byte-for-byte and regenerates their block comments on save. Before this release, these blocks lost their markup on the first save.

Paste as Markdown (⌘⇧V)

Edit ▸ Paste as Markdown converts Markdown on the clipboard into formatted content: headings, lists, quotes, fenced code, rules, tables and images. Normal ⌘V is unchanged.

Alt text and captions for gallery images

The gallery sheet now has an expandable row per image with alt text and caption fields. Both save into the image's own wp:image block and load back when you reopen the post.

HEIC photos upload correctly

Quill converts HEIC and HEIF files to JPEG before upload. WordPress 7.1 accepts HEIC but cannot generate the smaller sizes for it, so those uploads produced an image with no thumbnails. Orientation and pixel dimensions survive the conversion. This applies to Finder drops, the media sidebar and the gallery sheet.

Upload progress for dropped images

Dropping images into the editor now shows a progress pill with the file count and a result message. Drops that overlap are queued, so a second drop no longer clears the first one's status.


Improvements

  • Standalone images save as real image blocks — A dragged or pasted image is now wrapped in <!-- wp:image --> comments with its width, size and link attributes, so WordPress treats it as a block instead of loose HTML.
  • Decorative images — WordPress 7.1's "mark as decorative" toggle sets role on the image. Quill reads that attribute on load and writes it back on save.
  • Cursor placement after inserting an image — The cursor lands in a new empty paragraph below the image instead of inside its empty caption.
  • Markdown typing shortcuts documented — The user guide now lists the shortcuts the editor accepts as you type.

Fixes

  • The title bar matches the app's warm panel color, no longer depends on the mode the app launched in, and no longer flashes on every state change.
  • Pickers and the heading selector pill keep the correct styling after a light/dark switch.
  • Nested lists no longer gain a stray <p> on every save.
  • Multi-line plain text pasted into a footnote stays inside the footnote.
  • The footnote back-arrow renders as text, not as an emoji.
  • The spell-check menu shows "No Suggestions" when there are no guesses.
  • The gallery sheet's alt/caption row responds to the pointer correctly, and a row's expanded state clears when you deselect the image.
  • HEIC conversion runs off the main thread, so the window no longer freezes while a large photo converts.

Quill 1.10.0

Choose a tag to compare

@cpoteet cpoteet released this 21 Sep 01:27

Released 2026-07-10

What's New

Image Galleries

Create native WordPress galleries without leaving Quill. The new gallery button opens a multi-select media picker with a reorderable selection pane and controls for columns, crop, link destination, and image size. Upload new images directly from the sheet, and they're added to the gallery you're building. Galleries save as proper Gutenberg wp:gallery/wp:image block-comment HTML, and existing galleries round-trip verbatim (preserving captions and other details the structured attributes don't model).

Link to Full Image

Images now have a "Link to Full Image" toggle in the image toolbar, wrapping the image in a link to its full-resolution original. Works for images sourced from your media library as well as dragged-in or pasted images without a media ID.


Improvements

  • Code view preserves classes — Editing raw HTML in code view and switching back to the visual editor no longer strips CSS classes from any element.
  • Taxonomy cache auto-refresh — Opening a post that references a tag or category created after the last cache refresh now re-fetches the taxonomy list automatically.
  • Editor scroll reset — Switching between posts resets the editor scroll position instead of inheriting the previous post's scroll offset.

Fixes

  • Hardened network error handling, sidebar remount guards, and MIME-type lookups.
  • Fixed a post-switch state race, a toast auto-dismiss timer bug, a cite regex edge case, and update-check retry behavior.
  • Gallery block-comment wrapping no longer accumulates orphaned whitespace between images on repeated saves.
  • Gallery picker no longer shows a stuck spinner when no credentials are configured.
  • Gallery Size picker's "Link to Full Image" now links to the true full-resolution original, not the display-size URL.

Test Suite

510 automated tests (333 Swift + 177 JS).

Quill 1.9.0

Choose a tag to compare

@cpoteet cpoteet released this 21 Sep 01:27

Released 2026-06-26

What's New

Cmd+Click to Open Links

Hold Cmd and click any link in the editor to open it in your default browser. A visual indicator (pointer cursor + underline) appears while Cmd is held. Fragment-only links (footnote anchors) are correctly skipped.

Update Checker

Quill now checks for new versions on launch and shows a dismissable banner in the sidebar when an update is available.

Editor Overscroll & Block Editing

The editor now has bottom overscroll so you can keep writing without the cursor pinned to the bottom of the window. Enter in image captions exits to a new paragraph. Blockquotes have a new Enter behavior (split or exit) and a cite toggle button in the toolbar.

AI List & Table Context

AI writing operations (Make Longer, Make Shorter, To Table, To List) now detect when your selection is inside a list or table and replace the whole container intelligently, instead of inserting fragments mid-structure.


Improvements

  • Footnote content restrictions — Footnotes are now limited to inline-only elements; images, tables, and other block content are blocked on drop and paste. Keyboard shortcuts for block-level operations are disabled inside footnotes.
  • Classic content support — Pre-Gutenberg posts (no <!-- wp: --> block comments) are now run through wpautop() on load for proper paragraph and line-break rendering.
  • Empty states — Sidebar sections and the editor now show placeholder messaging when empty instead of blank space.
  • HTML entity decoding — Post and media titles with HTML entities (smart quotes, ampersands, etc.) now display correctly throughout the UI.
  • HTTP image loading — Old posts with http:// image URLs now load correctly in the editor.
  • Media picker pagination — The media picker sheet now paginates and has a cancel button.
  • Dark mode links — Links in the editor are now readable in dark mode.
  • Credential validation — The settings dialog now validates credentials before saving.

Fixes

  • Excerpt field no longer adopts WordPress's auto-generated excerpt on load.
  • Footnote back-arrow positioned outside text flow (no longer shifts footnote text).
  • Backspace and Delete now work correctly inside footnotes.
  • Blockquote Enter respects depth guard for nested structures (tables, lists inside blockquotes).
  • Image toolbar scroll handler leak and position clamping fixed.
  • Anthropic web search citation tags stripped from AI-generated posts.
  • Loading spinners no longer get stuck when credentials are nil.
  • No more light-mode flash when loading the editor in dark mode.
  • Error toast shown when local draft save fails.
  • AI prompt uses correct <ol> tag for ordered lists.

Test Suite

431 automated tests (304 Swift + 127 JS).