Skip to main content

Changelog

A running log of user-facing changes in each SyteOps release. Only features, improvements, and fixes that affect the admin experience are listed here.

v1.6.238

  • Review Portal on a phone shows the full article title and the Content Review line without clipping
  • The header and footer are more compact, and Hide tools frees the screen for editing

v1.6.237

  • Pages list now says Review Appearance, matching the themed preview that link opens

v1.6.236

  • AI Models blurbs for Content, Ingest, and Social match how those areas actually work
  • Vision models is visually separate from the area above it; Modify images with AI matches the other area headings

v1.6.235

  • Roles and Users Users area matches the Users tab: centered title, description, and Quick Navigation chips
  • Count, Add User, and Edit in Admin sit on one centered line under that card

v1.6.234

  • Roles and Users heading sits on one line with the count and buttons
  • Feedback notes drop the left rails beside the avatar and trash; preview toolbar says Device Preview and separates Height from the canvas

v1.6.233

  • Drafts with a planned publishing time show that date on the Posts list
  • Quick Edit adds a read-only Publishes line so it is not confused with Last Modified

v1.6.232

  • Posts list, editor, and toolbar now say Review Content next to Review Appearance
  • Appearance notes quote the text you select; Escape drops the selection and closes the note

v1.6.231

  • Review Appearance Window labels; posts open Review Appearance from the editor
  • Clicking a preview image shows its name and thumbnail; Saved sits in the header; review emails keep their edit buttons

v1.6.230

  • Users keep Model photos on an AI Model subtab; Review Portal AI Models, header, and Appearance Window and Height
  • Saving a draft keeps a past date; attach a reference image under Save note; media library chrome stays readable

v1.6.229

  • Saving a Review Portal draft keeps a past publish date
  • A live article can change its published date without coming off the site

v1.6.228

  • Review Appearance splits Window and Height on the preview toolbar
  • Clicking the preview opens a note instead of following the page

v1.6.227

  • Review Portal header puts the status pill opposite the logo
  • Nav pills sit under the logo, with Signed in as on the right

v1.6.226

  • Review Portal AI Models is its own settings group, not under Setup
  • Text models, Vision models, and Image generation bands use short names and full-width tints

v1.6.225

  • Users cards keep Model photos and Model consent on an AI Model subtab
  • Roles and Users roster heading, count, and Add User sit centered above the cards

v1.6.224

  • Reviewers who cannot publish are asked to save a preferred time, not to go live
  • The review portal editor switches to Published when the calendar publishes immediately
  • Notes Pick refuses pictures that are not PNG, JPEG, or WebP
  • Page review emails use a Page review subject
  • Review links in the block editor Status panel appear after the first save, without a reload

v1.6.223

  • A past date on the publishing calendar goes live immediately and keeps that publish date
  • Click a page in Page Reviews to select it before Send page; page review emails use page wording, not draft

v1.6.222

  • Roles and Users and the Users tab now share the same roster heading count and Add User styling
  • Roster quick-navigation chips use shared layout styling on both admin surfaces

v1.6.221

  • Model photo consent checkbox stays compact on the Users card instead of stretching to the full field width
  • WordPress media library pickers keep native styling when opened from admin screens

v1.6.220

  • Notes reference picture chips resolve attachment URLs through the review portal local helper
  • Fixes architecture enforcement for attachment URL calls in the review pipeline

v1.6.219

  • Send page now resets the review link clock so reviewers are not sent an already-expired link
  • Page review emails re-arm the shared review link the same way bundle send does for each item

v1.6.218

  • Bundle review emails now include a card for every item, and See all my reviews opens that bundle's queue
  • Send page emails one page as a page review without saving it into a bundle

v1.6.217

  • See all my reviews from a page-review bundle opens your existing review queue filtered to that bundle
  • A bundle queue you are not listed on stays empty instead of showing every draft you can review

v1.6.216

  • Renamed the Review Portal Package settings group to Page Reviews with clearer bundle labels
  • Save, send, and delete actions and status messages now say bundle instead of package

v1.6.215

  • Review Appearance no longer shows Review Content while you walk through an appearance package
  • Single-article appearance review still offers Review Content to return to the full editor

v1.6.214

  • The post editor and Review Appearance now link to each other, including pipeline content types
  • Review Appearance shows a Review Content control to return to the full review editor

v1.6.213

  • The appearance preview keeps the WordPress admin bar hidden for the whole page view
  • Draft access granted for that preview still ends as soon as the page query finishes

v1.6.212

  • The site appearance preview is a private full-page view without the WordPress admin bar
  • Height Auto matches the page, and tablet and phone widths sit centered

v1.6.211

  • Picking an existing library picture as an image-notes reference no longer overwrites its title or alt
  • A brand-new untitled upload can still be labeled Reference Image; a picture you cannot read is refused

v1.6.210

  • Remix model lists now say which ones take Model photos and which are scene-only
  • Generate keeps Model photos at the model's limit and never sends the picture you are already editing

v1.6.209

  • A stored image-notes reference picture is a clickable link when you reopen the article
  • Pick and Clear stay hidden unless you can change that reference

v1.6.208

  • The image notes panel can attach a tagged reference picture for later remixes
  • Modify with AI uses that picture unless you choose a different source for one generate

v1.6.207

  • Fixed: Review Portal page and appearance views no longer show the Featured Image side card or load the media picker stack
  • Article review still includes the Featured Image card with edit, alt text, and library picker

v1.6.206

  • Fixed: Review Portal AI Models group band headings keep proper spacing above later groups after the zebra tbody layout
  • The first group under the card title still sits tight to the AI Models heading

v1.6.205

  • Review Portal AI Models groups each text and vision area with alternating background bands so provider settings are easier to scan
  • Group band headings stay separate from the tinted areas so section labels stay clear

v1.6.204

  • wp-admin row actions and toolbar links for the themed preview now read Review Appearance and Open Review Appearance
  • Proper-noun casing is enforced for Review Appearance alongside Review Portal in translatable strings

v1.6.203

  • The review queue page frames the logo area with a border matching other portal controls
  • Calendar and Sign out sit with more space below the branded header

v1.6.202

  • A Schedule time less than a minute away publishes immediately instead of being treated as a cancellable schedule
  • Confirming that near time no longer fails as if the confirmation dialog sat open too long

v1.6.201

  • Reviewers can pick a past date on Schedule; the article goes live immediately and keeps that publish date
  • The portal confirms that a past date publishes now with that historical date, instead of blocking it

v1.6.200

  • Dropping a remix reference image in the review portal no longer shows a false upload failure while the file is still uploading
  • The Modify line briefly shows an uploading status while a dropped reference image is sent to the media library

v1.6.199

  • When a dropped remix reference image fails to upload in the review portal, the Modify area now shows a clear status message instead of failing silently
  • A drop that never reaches the media uploader no longer looks like a successful pick

v1.6.198

  • In the review portal, you can drop an image onto the Modify prompt box to use it as the remix reference instead of opening the media library
  • The Modify prompt box shows a highlight while you drag an image over it

v1.6.197

  • Reviewers who use the standard sign-in page after a security check are no longer told cookies are blocked when they are not
  • The review link now prepares WordPress sign-in cookies before that page loads, and returns reviewers to their review if the check still fails

v1.6.196

  • Review portal editor header keeps 8px spacing between wrapped top-bar rows
  • Internal improvements and maintenance

v1.6.195

  • Review portal editor header stacks brand and status on the first row with session tools on a second row so logos and names are not clipped
  • Secure session badge in the review header now uses the same outlined style as other top-bar pills

v1.6.194

  • Canvas pins stay in sync when a note is handled or deleted
  • A copied appearance-package link cannot change the article body or add colleagues

v1.6.193

  • Switching items in an appearance package reloads so edits stay on the current item
  • Listed package reviewers can still open the themed preview when a single-item link window has lapsed

v1.6.192

  • Internal improvements and maintenance

v1.6.191

  • Create a package of pages and posts and send one review link that walks them in order
  • Reviewers move between items with the strip above the preview; comments stay on the current item

v1.6.190

  • Posts in wp-admin get Review appearance for the themed preview alongside Review Portal for the editor
  • Pages keep a single Review Portal entry, which already opens the themed preview

v1.6.189

  • Click a page element in the appearance preview to leave a note
  • Pins and Feedback rows share the same color; a moved element is marked, not guessed

v1.6.188

  • Comments on a site-appearance preview can attach to a page element
  • Each reviewer's notes use a matching color in the Feedback panel

v1.6.187

  • Pages and posts can be reviewed as they appear on the site, at three preview widths
  • When a preview cannot load inside the portal, reviewers can open it in a new tab

v1.6.186

  • Reviewers can delete any picture in Image Details from the media library, including the one the article is showing
  • A picture the article is showing is removed from the article first; a picture another article uses is refused

v1.6.185

  • Reviewers can uncheck Respect publishing cadence on a draft to publish that article outside the site rhythm
  • An opted-out draft no longer holds a reserved slot or draws as a reserved calendar chip

v1.6.184

  • Review email action buttons now stack on phones so both stay tappable
  • The buttons keep their filled look in dark mode instead of becoming plain text

v1.6.183

  • Unchanged and already-published re-ingest deliveries no longer appear in Recent runs, so the Log stays usable
  • The Skipped status filter is gone from the Log; older skipped rows stay stored but hidden by default

v1.6.182

  • The Review Portal brand header opens the WordPress Dashboard in a new tab when you click the logo or company name
  • The article editor top bar adds See all my reviews so you can open your full review queue without hunting for the email link

v1.6.181

  • Swap Users in the remote Users editor now really swaps the two people's details and keeps rebuilt author-id and link values on Save; before, it reported success while moving nothing
  • A remote swap clears Model consent for both people, because Model photos stay with the slot
  • The Model photos preview in the remote Users editor is locked as soon as it loads, instead of by a watcher running on every admin page

v1.6.180

  • Changing a user's profile picture keeps their Model photos in order: the new picture starts in the curated set, and the old one stays curated unless it had been removed from it
  • Deleting a profile picture clears it from the user card for good, so it no longer comes back on the next save
  • The Model photos gallery updates as soon as you select, clear, replace, or delete a profile picture
  • Select from Media, Clear, and Delete image for profile pictures now work on the Roles & Users page
  • Swapping two users no longer leaves one person's Model consent or Model photos on the other person's slot
  • Associating a profile picture no longer fails when debug logging is on
  • Model photos set through the Manage API are cleaned up on uninstall like photos added on the Users card
  • The Review Portal's Model photo picker announces loading and errors to screen readers
  • The Profile, Curated, Tagged, and Excluded photo labels are translated on every screen, including the Review Portal

v1.6.179

  • Only pictures the Review Portal made with a person selected as the Model count as that person's tagged Model photos; a picture tagged by hand in the media library does not
  • Model consent is no longer carried by a user export; check it again on the site that imports the user
  • Users cards show the newest 48 tagged Model photos with a Show older button, and the Review Portal lists the newest 24
  • How many Model photos you can send with a remix now follows that remix model's own picture limit

v1.6.178

  • Model photos in the remote Users editor are a preview; add and promote stay on that site's Users card

v1.6.177

  • Review Portal Modify with AI can send a consented person's photos with a remix, and the new file is tagged with that person's name
  • People without Model consent stay off the picker; unchecking consent does not remove existing photos

v1.6.176

  • Internal improvements and maintenance

v1.6.175

  • Users cards can keep several Model photos for a person, with a consent checkbox required before they can be used in the Review Portal.

v1.6.174

  • GEO questions and answers grow to fit their text. A long question wraps instead of scrolling inside a one-line box, and the answer shows in full.
  • GEO question cards stand apart more clearly, with a darker border, a light tint and more space between them.

v1.6.173

  • The SEO search preview looks like a search listing again. The address is green and the title is search-result blue, instead of taking the site's brand color.
  • Review Portal field labels and headings use Title Case, for example "Alt Text" and "Primary Keyword".

v1.6.172

  • An open reply no longer keeps a note's "Changes requested" status lit. Resolving or withdrawing the last change request now clears the status even while someone's reply in a thread is still open, and a reply is never counted as a change request of its own.
  • Deleting a note re-asks when someone replied meanwhile. If a reply arrives after you open the delete confirmation, nothing is deleted: the confirmation stays open, says someone replied, and gives the new number of replies. Confirm again to delete the note with them.
  • The activity record for a deleted note lists the replies removed with it, and who wrote each one.
  • The pre-publish checklist item for the article description is now labeled "Description."
  • Remove buttons on categories, tags, and question rows added in the browser now follow the site's language, matching the ones the page loads with.
  • Amber status text is darker so it is easier to read.

v1.6.171

  • Deleting a reply in a feedback thread now removes only that reply. Before, its delete button asked to delete the whole note and every reply under it, and someone who replied to another person's note could not delete their own reply. The confirmation now appears below the reply instead of squeezed beside it, and reply cards line up.
  • Deleting a note now removes the note and its replies together in one step, so a delete that fails partway can no longer leave the replies gone while the note stays. A reply left behind by a note deleted in an earlier version now shows as its own reply you can delete, with no Reply button that could not work, and it no longer counts as an open note.
  • The "Required to publish" label on the reviewed-answers checkbox now appears only when the site actually requires that check, and question and answer fields you cannot edit look read-only again.
  • Status messages in the social post dialog show their error and success colors again, and the dialog's field spacing is even.
  • The delete confirmation's wording now follows the site's language instead of switching to English, and the alt text and SEO title hints describe what those fields do more accurately.

v1.6.170

  • The review queue list now matches the rest of the Review Portal. Article cards and status chips use the same corners and type as the editor fields.
  • Sign out on the queue is a quiet button next to Calendar, not a separate pill shape.

v1.6.169

  • The Review Portal top bar groups the brand mark with the title, then Draft, with Calendar on the right. Save draft and Approve keep their places.
  • The lock banner now says who is editing this draft, and still warns that your changes may overwrite theirs. The live and scheduled banners use the same 8px corners as the rest of the editor.

v1.6.168

  • Review Portal dialogs now match the image panel. Each field has a short name with a quieter hint underneath — Who, Message, What to change, and URL.
  • On a live article the social overlay no longer offers to send when the post publishes. That option cannot fire after the article is already live, and it is now actually hidden.

v1.6.167

  • Feedback notes are nested cards. Each note sits in its own card, replies nest under the parent, and Reply, Resolve, and delete sit on their own row so they stay readable on a resolved note. Deleting a note asks in the card before it sends; confirming a parent with replies removes the whole thread.
  • Reviewers is the name of the list, with a hint for who can edit this draft. Send to a colleague and Note for them use a short label plus a quieter hint underneath.

v1.6.166

  • SEO, GEO, and Categories & Tags fields now match the image panel. Each has a short name with a quieter hint underneath. Description is the search-result sentence and the WordPress excerpt. GEO is the acronym, with Generative Engine Optimization as the hint.
  • I have reviewed these answers now sits under Pillar in a Required to publish box. Analyze GEO, Generate with AI, and Describe selected on photos are soft filled buttons with the spark icon.

v1.6.165

  • Featured image and author fields now match the image panel. Each has a short name with a quieter hint underneath — Alt text is shown when the picture cannot load, Post author is shown as the byline.
  • Modify with AI on the featured image is a soft filled button with the same spark icon as Generate SEO with AI.

v1.6.164

  • The review portal's image panel is easier to read and use. Each field has a short name with a gray hint under it, the Image Details header shows whether the picture is in your media library while the section is collapsed, and the underlined text links are now buttons.
  • Picking a different picture to remix from is a proper button. "Use another picture" sits inside the prompt box; once you choose one it shows as a chip with the picture's thumbnail and "Starting from" its file name.
  • Version cards line up. The original and every remix are equal cards in a grid with larger thumbnails. Replace is now labeled Put in article, Delete is a trash icon that still asks before deleting, and the card already in the article says so in the spot where the others offer to go in.
  • The credit reads as one figure. With one image provider it shows as "$30.01 credit", with the provider's name in its tooltip; with more than one, each keeps its name.
  • Apply and Cancel stay reachable. They sit in a footer pinned to the bottom of the panel, and Generate has a row of its own after the options it uses, so the model name is no longer cut off.

v1.6.163

  • Add heading anchors now sticks when a content source is created through the management API. The setting was accepted and then dropped, so the new source started with it off; only a later edit saved it.
  • Exporting and importing a content source now carries Add heading anchors. A source moved to another site used to arrive with it off.

v1.6.162

  • An image the sending app framed itself now looks like the rest. With Content cleanup on, a bare image is wrapped so your theme styles it as an image, but an image the app had already put in its own frame, which usually happens when it has a caption, was skipped and shown plain, with no spacing around it. It now gets the same styling, and its caption is styled like the other image captions on your site.
  • A frame that already has its own styling is left alone, as are galleries and a table that contains a picture. Your stored article is not changed; each post shows the fix the next time it is viewed.

v1.6.161

  • Every AI model choice now sits in one place. The Review Portal settings had its AI scattered across four cards — the writing models in one, the picture describer in another, the two that remake and repair pictures buried inside Article images, and social's own model in the Social Publishing card. They are now one AI Models card under Setup, in three labeled groups: reading and writing words, looking at pictures, and making pictures.
  • Each area now says what it is for, instead of leaving you to infer it from a name, and the two that are billed per picture say so where you choose them. A group appears only when there is something in it to set.

v1.6.160

  • "Use a different image as the source" is a text action again, and Clear only appears after you have chosen a picture.
  • A Generate SEO failure the portal cannot name now says the server did not finish looking, rather than a bare "That did not work."

v1.6.159

  • Generate SEO with AI now reaches the server. The button had no address to call, so pressing it posted the review page back to itself; the request never arrived and every press ended in a generic failure.
  • A control the review portal means to hide now stays hidden. Two controls set their own layout, which overrode the instruction to hide them — so they sat on screen and still acted when pressed.

v1.6.157

  • Replaced pictures on the review portal show the new file even when an image CDN is on, without waiting for a purge. The portal page itself is not rewritten onto the CDN, so the cache-buster on a replaced image reaches the browser.
  • Scheduling an article, or publishing one from ingest when no slot is free, no longer strips page-builder markup. A status or date change used to re-filter the stored body, which deleted embeds and builder stubs on the way through.

v1.6.156

  • Generate SEO with AI describes the picture in your media library, even when the page is showing a CDN copy of it. Saving stores the original media URL, so a replaced image still shows after you reload.
  • A library picture served through a CDN is labeled already in your media library, and Import is hidden. If Generate SEO does not finish, you see "The server did not finish looking at that picture. Try again." instead of "That did not work." Review portal headings use Title Case (Article Image, Featured Image, Image Details, Notes on This Image); buttons stay sentence case.

v1.6.155

  • Opening the review portal on a page no longer empties that page. The portal is built around an article's body, and a page has no body field for it to read — so its first automatic save wrote an empty one over whatever was stored. On a page built with a page builder that stored content is only a stub, so the page kept rendering correctly and the loss left nothing to notice. The portal now refuses to write a page's body at all, from the automatic save and from Approve & Publish alike.
  • The portal tells a page from an article. A page opens on a read-only canvas where an article shows its editable body, and the formatting toolbar, paste handling and image tools stand down rather than half-appearing beside a region nobody can edit.
  • The Preview Portal button finds something on a site built only from pages. It looked for posts and nothing else, so on a pages-only site it had nothing to show. It now offers the most recent thing the portal would actually open — and only something the portal is allowed to open.

v1.6.154

  • Review portal CSS and JS refresh after an update even when the version number did not change, without a CDN purge.
  • Replaced article images show the new file. Saving does not bake a cache-buster into the article.

v1.6.153

  • Feedback Reply and Reopen chips use brand color. Reply is a light teal pill; Reopen is filled teal, so they no longer look like empty outlines next to the filename chip. There is a little space under those pills before the filename.
  • Generate SEO with AI names leftover failures. A timed-out call or a page that needs a reload now says so, instead of "That did not work."

v1.6.152

  • Generate SEO with AI works on a remixed picture. A remix is still this article's photo even when the file was saved unattached. If it cannot run, the portal now names the reason instead of a generic failure.
  • Deleting the picture a Replace moved off can now include the original. Tick the box after a first Replace and the original leaves the media library and the filmstrip; Restore original hides once that row is gone. A picture the article still shows is still refused.
  • Feedback notes use compact chip actions for Reply, Resolve and delete, instead of underlined text.

v1.6.151

  • Every AI area is reachable from the management API again. The provider, model and token limit for an AI area could be read and changed remotely — but only for some areas. Five of them answered "Unknown AI area" to every request, so the one place meant to configure AI settings for you could not touch most of them.
  • The list of areas is no longer kept by hand. It is now taken from the same registry the features themselves read, so an AI area added in a future release is reachable the moment it ships instead of waiting for someone to remember a second list.
  • A full reset clears the last two AI areas by name. Resetting all settings already cleared them; the list the reset checks against simply did not say so, which is the sort of gap that turns into a real one after a refactor.

v1.6.150

  • "I want something like this instead." Modify with AI has always remixed the picture already on the article. Now you can hand it a different one: Use a different image as the source opens your media library — with its Upload tab — and whatever you choose becomes the thing the AI remixes from, under your own prompt. The block says so plainly while a reference is chosen, so there is never a question about which picture your prompt is about to be applied to.
  • The result still fits where it is going. The shape is taken from the picture on the article, not from your reference. Without that, a tall reference dropped into a wide slot would come back tall — a correct answer to the wrong question.
  • A picture you upload just for this is treated as scratch. Clear it, or close the panel, and it is removed again; a daily tidy-up catches any left behind by a browser that never came back. A picture that was already in your library is never touched — only something uploaded during this flow is ever cleaned up, and that is decided by the site, not by your browser.
  • Only PNG, JPEG and WebP. Those are the three the image service accepts, so anything else is refused straight away with a clear message instead of failing partway through somebody else's system.

v1.6.149

  • An imported picture is filed under a name that describes it. A photo arriving from a content source is usually called something like IMG_4821.jpg or shutterstock-1043882.jpg, and that name ends up in the article's HTML, in the image's URL, and in what a search engine reads. Importing now renames the file from the title the picture already has, so it arrives as a-brown-dog-on-a-porch.jpg instead.
  • It only ever happens at import, and only when nothing points at the picture yet. Renaming a picture that is already in use means rewriting every place the old name appears — the article's HTML, the page builder's stored layout and its separate rendered copy, and the generated CSS — against an image CDN that cannot be cleared. So it does not do that. A picture that is already used anywhere, or one on an article that is no longer a draft, is left exactly as it is, and the import carries on normally.
  • EWWW Image Optimizer keeps up. EWWW records an optimized image by its file path, so a rename would orphan that record and the picture would be optimized — and billed — a second time. The rename tells EWWW the file moved, using the hook EWWW provides for exactly this.

v1.6.148

  • A picture can now describe itself. Open a picture in the review portal, expand Image details, and Generate SEO with AI looks at the actual photo — not at the words around it — and suggests alt text and a caption. Alt text written from the surrounding article is confidently wrong about what is in the frame, which is worse than none: a screen reader reads it out as fact. The suggestions land in the boxes for you to edit, and nothing reaches the article or the media library until you press Apply, exactly like the meta description and the category suggestions.
  • Running SEO on the article now offers to run it on the photos. Generating a meta description, analyzing answer readiness or refreshing categories and tags all end with the same question: also run SEO on this article's photos? It lists every picture on the article with a checkbox, and unticking one leaves it completely alone.
  • Only pictures with no alt text at all are ticked in advance. A file name sitting in the alt box counts as no alt text, because it is — nobody chose it, it arrived with the file. Wording somebody actually wrote is never ticked for you, so a pass can never quietly replace a description a reviewer took the trouble to write.
  • You see the cost before you spend it. Each picture is one AI call, and the count updates as you tick and untick, so the number of calls is on screen before you start rather than on the bill afterwards.

v1.6.147

  • You can answer a note without leaving the page. The Feedback panel has only ever let you mark a note handled or delete it, so the reply that belongs with it — "rewritten, take a look" — had to go somewhere else, usually email, where it stopped being attached to the note it answered. Reply opens a box under the note and puts your answer in the thread, indented under what it answers.
  • Reply and Resolve is one press, and one request. Answering a note and marking it handled were two separate acts, and doing them as two requests has a gap in it: a dropped connection between them leaves your answer posted under a note still counted as outstanding, with nothing on screen to say which half landed. Both now happen in a single request, and the panel paints what the server actually did rather than what it was asked to do — so if the note could not be closed, you are told, and your answer is still there.
  • The person you are answering is told. A reply emails the author of the note, using the same branded message the panel's existing notifications use. Answering your own note emails nobody, and a reply can never mail the same person about the same answer twice.
  • A reply no longer holds the article open. The publish warning counts notes that still need dealing with. A reply is part of the note it answers, not a second thing to deal with, so answering a note no longer makes the article look like it has MORE outstanding work than before you answered.
  • The Feedback panel reads more like a conversation. The author and the actions now sit together on one line, with the file name and the date on a quieter second line — they used to run together as one sentence that wrapped in the middle of a long file name. Replies are indented under what they answer, and a run of replies from the same person does not repeat their initials.
  • Two long-standing panel glitches are fixed. A note added without reloading the page did not show which picture it was about until you reloaded; it does now. And a name beginning with an accented letter produced a broken or wrong initial in the circle, because the panel counted bytes where the rest of the plugin counts characters.

v1.6.146

  • You can now pick which AI describes your pictures. The Content Pipelines settings gained an Image SEO AI section — its own provider, model and length limit, saved and reset alongside the others. It ships ahead of the feature that will use it, so there is nothing new to click yet; setting it up now means the feature works the moment it arrives.
  • Only providers that can actually see a picture are offered. A provider whose models read text alone is listed but cannot be selected. This was the point of the setting: a text-only model handed a picture answers from the words around it and invents a confident description of something it never saw, which is exactly the caption a reviewer would trust.
  • A picture that cannot be sent is refused with a reason. Too large, or a file whose contents do not match the type it claims to be — a photo saved with the wrong extension, say — is now caught before the request goes out, and you are told which. Previously an oversized picture could exhaust the server's memory partway through.
  • Provider errors are put in our own words. When a provider turns a request away you now see a plain sentence and the status it returned, rather than the provider's raw reply — which has been known to carry account details and server addresses in it.
  • OpenAI's newest models now work at all. Picking a GPT-5, GPT-6 or o-series model used to make every request in that area fail outright, because those models refuse the creativity setting the rest of them accept. The setting is now left off for them, so they answer normally. This affected every AI area, not just the new one.
  • A blank answer is now explained. A provider that returns nothing at all used to leave you looking at the reason the PREVIOUS picture failed. Each attempt now reports its own outcome.
  • The picture size limit adapts to the server. The limit is now whichever is smaller: what the providers accept, or what your server has memory to send. On a small hosting plan a picture that would have crashed the request is refused with a message instead.

v1.6.145

  • Replacing an image no longer gets lost when it lands while the article is saving. Pressing Replace on an AI thumbnail swaps the picture into the article body and then saves. If a save was already in flight, that save was carrying the older version of the body, and finishing it marked the article clean again — which cancelled the save the Replace had just asked for. The record said the article used the new picture while the article went on showing the old one, and there was nothing on screen to say so. Replace now waits for a save in progress rather than racing it, tells you when it is waiting, and puts the article back the way it was if the swap fails.
  • Replace can now delete the picture it replaces. A new checkbox in the thumbnail strip, off by default and reset for every image you open, deletes the picture the article moved off once the swap is safely saved. It is a tidy-up and never a shortcut: the picture is kept, and you are told why, whenever the article still shows it, another image on the article uses it, another article uses it, a remix of it is still running, or it is the picture the article arrived with. The replacement itself always stands either way.

v1.6.144

  • The image review popover no longer traps its own buttons off screen. The popover is fixed to the screen and used to measure where it should sit only once, at the moment it opened. Anything that made it taller afterward — opening "Image details," a new row of AI thumbnails arriving, a preview image loading in, or the progress bar appearing — pushed its bottom edge past the bottom of the viewport, taking the Apply and Cancel buttons with it, and scrolling could not bring them back. It now re-measures itself whenever its size changes and caps its own height to the space actually available below it, so the buttons stay reachable no matter what it grows to show.

v1.6.143

  • Housekeeping, with nothing to see. One of the steps that strips server addresses out of error messages had no test covering the shape only it can catch, and was very nearly removed as unused. It is now covered. Nothing about what the plugin does has changed.

v1.6.142

  • Two more kinds of credential are hidden from error messages. When something goes wrong with a picture, the message you see has secrets stripped out of it first. Two shapes were getting through: an access key written entirely in capitals, and a server address written with the full-width dots used in Chinese, Japanese and Korean typing. Both are now caught.
  • Setting names stay readable. The new rule deliberately leaves alone anything written in capitals with underscores, because that is what a setting name looks like and you need to be able to read the one an error is telling you about.

v1.6.141

  • Housekeeping, with nothing to see. The permission checks in front of the picture tools were written out six times, once per tool. They now live in one place. Each tool keeps its own separate answer for what to say when the picture service itself is unavailable, because those answers genuinely differ. Nothing changes about who can do what.

v1.6.140

  • Housekeeping, with nothing to see. A step in the image progress reporting that could never run has been removed, and the cleanup that happens when the plugin is uninstalled now names the saved credit-balance readings explicitly rather than relying only on a broad sweep. Neither changes what the plugin does.

v1.6.139

  • A picture waiting its turn now says so. The image service can now tell us that your request is queued rather than being worked on, and where it sits in line. Before, "queued" and "started but nothing measurable yet" looked identical — both drew a bar at zero, which reads as a job that has stopped. There are now three honest states: waiting its turn, working with nothing to measure yet, and working with a real amount done. When the service tells us your place in line you are shown it; when it doesn't, you are told you are waiting without a number being invented.

v1.6.138

  • The progress bar while a picture is being made now knows when it has a real reading. Until now it decided by looking at the number: anything at or below zero was treated as "no reading yet", which was right, because the image service reports zero for the whole run on the kinds of work it cannot measure. It stops being right the moment that service starts reporting a genuine queue position, because a truthful "queued, nothing done yet" would have been mistaken for no reading at all and the bar would have gone back to moving without meaning. The answer now travels with the reading instead of being guessed from it.

v1.6.137

  • Pictures stop inheriting their own file name as a title. A picture whose title was nothing more than its file name could pass that file name on as the title of every copy made from it. That was already fixed for pictures changed with AI; it is now fixed everywhere else too — when an article is brought in, when a picture is imported, and when an archive image is rebuilt. It recognizes the names your site makes up on your behalf, including the smaller copy it saves of a very large photo and the turned-the-right-way-up copy.
  • Rebuilding an archive image can now reach photos it never could. The check that decided whether a rebuild should rename a picture compared the title against the file on disk — but for any photo large enough that your site saved a smaller copy, those two never match, so the rebuild always declined. It has therefore never renamed one of those photos. It can now.
  • A title you chose is never overwritten by any of this. Anywhere the code decides whether to replace a title that already exists, it will only do so when your site's own records say the title came from the file name — never on a guess. A title you typed, or one your photographer embedded in the image, is left alone.

v1.6.136

  • A row of image versions now follows the picture it belongs to. If you started making a version of one picture and then swapped that picture for a different one while the work was still running, the finished row could be offered under the new picture — and choosing from it replaced your article's picture with an unrelated one. The row now stays with the picture it was made from, both straight away and when you reopen the panel later.
  • Actions on a picture you have since deleted no longer change the article. Replacing, reverting or importing a picture that is no longer in the article used to write into it anyway and mark your work unsaved. Those now stop, and each says what actually happened — including that the site still records the version you chose, so you can put it back.

v1.6.135

  • Error messages from the image service no longer reveal your internal network. When an image edit fails, the reason shown to reviewers comes from the image service itself, which is what makes it useful — but that text could carry your server's internal host name and port, the email address on your billing account, or your account identifier. Reviewers include people you invite from outside your organization, so those details are now removed before the message is shown, while the explanation you actually need is kept. The image service's own name is deliberately preserved, so a message still reads as what it is rather than as an anonymous address.

v1.6.134

  • See how much image-AI credit is left, from the image card. The Modify with AI section now shows the image service's remaining balance with a Refresh button beside it — the same figure your site administrator sees — so you can tell whether there is credit to spend before pressing Generate, rather than learning it from a generation that fails. Refresh re-checks every image service at once. If a balance cannot be read you are told why, instead of being shown a misleading $0.00, because a zero would read as an empty account rather than a lookup that did not work. The balance appears only where Modify with AI is available to you.

v1.6.133

  • A remixed picture keeps its name and description. Pictures made by remixing arrived in your media library under a made-up name with no description, losing the wording you had given the original. A remix now inherits the original's title, alt text, caption and description. One deliberate exception: a title that is nothing more than the picture's own file name is not carried over, because a file name is not a name anyone chose. That covers the file names WordPress makes up for you as well as the one you uploaded — the numbered copy when the name is already taken, the smaller copy it saves of a very large photo, the turned-the-right-way-up copy, and the copy it saves when a picture is cropped. When the title is refused this way, the new picture is named after the original's alt text, and failing that after the article it belongs to. If the article itself has no title, there is nothing left to borrow, and the picture keeps its generated name.

v1.6.132

  • Clicking a remixed picture no longer closes the panel. Picking one from the row of versions closed the whole panel, and reopening it lost both the picture you had picked and, for a picture not yet placed in the article, sometimes the row itself. The panel now stays open, remembers your pick, and finds the row again. The message shown when a new version is ready also now names the right picture to go back to, instead of pointing at whichever one you happen to be looking at.

v1.6.131

  • The progress bar shown while a picture is being remixed now moves. It used to sit empty at zero for the entire wait, sometimes a minute or more, because the image service only reports how far along it is for certain kinds of work and reports nothing at all for the rest. An empty bar reads as a job that has stopped. When there is no reading to show, the bar now moves steadily rather than presenting the missing answer as zero, so work in progress is distinguishable from something that has gone wrong.

v1.6.130

  • You can now tell the image AI what the article is about. A prompt like "make the text on the screen readable" gave the AI no way to know what that text should say, because it was never told anything about the article. A new tickbox, Tell the AI what this article is about, sends the article's title and summary alongside your prompt. It is off unless you tick it, and it applies to that one generation — these AI models are editing a photograph rather than drawing a new one, so extra description is not always wanted. The row of versions still shows the prompt in your own words; the added context never appears there as something you typed.

v1.6.129

  • Choose any picture from your media library, for article images too. Only the featured image offered this; a picture inside the article could be changed only by pasting a link to it. Both now offer Choose from library. A picture chosen this way stays properly linked to your media library — something pasting a link could never do — and brings its own alt text with it. Its caption is left as you wrote it, since that is your words rather than the picture's.
  • The row of versions no longer mislabels a picture. After changing the thumbnail to something that was not made by remixing, one of the versions still carried In the article even though the article had stopped showing it. The label now follows the picture the article is actually using.

v1.6.128

  • Clicking a remixed picture now shows it. Picking one from the row of versions only drew a dashed outline around the thumbnail and wrote its prompt underneath — there was no larger view anywhere in the panel, so there was no way to tell whether a remix had actually fixed what you asked about, and clicking the same one again took even the outline away. A picked version now appears at full width with the prompt that produced it beneath, and clicking it again closes it. Looking is still only looking: the article changes only when you press Replace.
  • The empty progress bar no longer sits in the picture panel. It was meant to appear only while a picture was being generated, but it stayed on screen permanently.
  • "Keep text and logos exactly as they are" reads as one line again, instead of the tickbox stranding on its own line above the words.
  • "Generating…" is no longer printed twice while a picture is being made.

v1.6.127

  • Underlined text can be un-underlined again. When an article arrived carrying underlining from its own original styling rather than from the review editor, selecting the words and pressing Underline did nothing at all — and the button lit up as though it had worked, so the only way out was to delete the text and retype it. Pressing Underline now removes it, on a whole sentence or just part of one, and on a link too. Other styling on the same words, such as color, is left exactly as it was.

v1.6.126

  • Two people working on the same article's pictures no longer undo each other. A version you keep, a replacement someone else makes and a version arriving from a finishing remix could land on top of one another, so one of the changes quietly vanished — and a version that had just been tidied away could reappear in the row. Each change is now applied to what the picture panel actually holds at that moment, and if it cannot be applied you are told, instead of being shown a row of thumbnails that does not match what was saved.
  • Pressing Replace on the picture your article is already showing is refused, even when a colleague put it there a moment earlier. Before, that could be recorded in the log as a swap nobody made.
  • Delete recognizes more of the places a picture can be in use. Alongside a page builder's own layout, it now also finds a picture referred to by nothing but its ID — in another page's layout, and in a gallery or shortcode in another article's text — so a picture something else is displaying can no longer be deleted by mistake.
  • A picture used in two places in the same article is protected from both. Deleting a version through one of them no longer destroys what the other is still listing.
  • A delete is refused, not allowed, when the check cannot be completed. If the article itself cannot be read, or the search for other uses runs out of room, the answer is now "this picture may be in use". When a busy site keeps reaching that limit, it is written to the debug log, so the reason a Delete never seems to work is visible rather than silent.
  • A remix that is turned down no longer leaves anything behind. A picture fetched for a generation you were not permitted to run is removed again, instead of sitting unused in your media library with your article quietly claiming it.

v1.6.125

  • Remixing a picture now keeps every version you make. They line up as a row of thumbnails in the image panel — the picture the article arrived with first, then each version in the order you made them — so you can compare them instead of losing the last one each time.
  • Generating no longer changes your article. Press Replace on the version you want, whenever you want, including on the original to put things back exactly as they were — the only one you cannot pick is the version the article is already showing, which is refused rather than recorded as a change nobody made.
  • Versions you do not choose are tidied out of your media library for you, oldest first, so a long session of experimenting does not leave clutter behind. Keep holds on to one you want to save, and the version you just made is never tidied away.
  • A reviewer who is not allowed to change the featured image can no longer change it by remixing. Three of the image actions decided the permission from what the request claimed rather than from the picture it actually named, so the restriction could be stepped around in one direction or the other. All three now work it out from the picture, the same way.
  • A remix of a picture in the article body stays with the body picture, even when the same photo is also the featured image. Its versions used to be filed under the featured image, so pressing Replace moved the picture at the top of the article and left the one you were looking at untouched.
  • Delete removes a version for good, after asking you to confirm. It refuses — and says which reason applies — when the picture is the original, the one your article is showing, one another page is also using, or one a remix is still running on. That in-use check now recognizes pictures placed by a page builder, which name an image by its address rather than by an ID, so a picture another page is displaying can no longer be deleted by mistake. Notes left on a deleted version move to the picture your article is showing, rather than being left pointing at something nobody can see.

v1.6.124

  • The robots panel now tells you when the file being served lists no sitemap at all, so a missing line is visible instead of silent.

v1.6.123

  • The robots panel now offers the AI sitemap line only when that address is actually being served, instead of suggesting one that would lead nowhere.

v1.6.122

  • A failed remix now says why. When a picture cannot be modified, the portal names the actual cause — the content policy refused the prompt, the account is out of credit, the source image could not be fetched — instead of showing one generic sentence for roughly eleven different failures.
  • A remix in progress shows a real progress bar, and can be stopped. Previously a run that went wrong left the picture locked for two minutes with a spinner and no way out.
  • Asking for a second remix while one is running now tells you which job it is refusing for, and offers to stop that one.
  • Finished remix records no longer build up on a picture without limit.

v1.6.121

  • The Review Portal is named consistently everywhere it appears. On the Posts list, in the admin bar, in the settings descriptions, on the portal page itself, and in the button in every review notification email. It had been written several different ways.
  • The documentation matches the product. The longer "Review & Publish Portal" wording is gone; the docs now use the one name the interface actually shows.

v1.6.120

  • "Runs" is now "Log", and it holds two records instead of one. The view still lists every pipeline run exactly as before. Underneath it, a new Editorial activity card shows what people did to your articles — published, reverted to draft, changes requested, notes raised and resolved, schedule changes, image work, and the refusals in between. Newest first, with who did it and when.
  • Every entry keeps the name the person had at the time, so renaming or removing an account later never rewrites the record of what they did.
  • Filter by person, or by what happened. Click a name or an event on any row and the Editorial activity card narrows to it — the runs list above is left as it was — and the choice follows you as you page. The two cards also page independently, so moving through the activity leaves the runs where they were.
  • Every filter that is on now says so. A summary line near the top of the view names each one — including the ones you set by clicking a row rather than a pill — and lets you drop them one at a time or clear the lot. Until now a filter could narrow a list with nothing on screen to undo it.
  • You can now see whether a review email was ever acted on. The first time somebody opens an article's review portal appears on the Editorial activity feed. Only that first open is listed — later visits by the same person deliberately add nothing, so a reviewer reloading the page never fills the feed with repeats.
  • "View full log" works. The button in a run's stage drawer had never done anything. It now reopens the view narrowed to that one article, giving you its whole history — runs and editorial activity together. A run that produced no article has nothing to narrow by, so the button is switched off on those rows.
  • Setup mode explains itself. Setup records no new pipeline runs but does record editorial activity, so the runs list stands still above a filling activity list — empty, on a site that has never left Setup. Nothing already recorded is removed. The card now says so for as long as Setup is on, instead of leaving the screen looking broken.

v1.6.119

  • The theme-wiring reading no longer leaves an empty heading behind. With Crop a copy for listings switched off, "Where cards use this copy" printed its heading over an empty space — the one row on that card that said nothing at all, while every other control beside it at least grayed out to show it was off. The reading is now hidden entirely while the cropped copy is off, and comes back when you switch it on.
  • Switching the cropped copy off clears the reading immediately. The reading describes what was saved, so leaving it on screen after the switch went off meant a line saying cards were using the cropped copy sitting beside a row of freshly grayed controls. It now follows the switch as you click it.

v1.6.118

  • "Clear all run history" is now "Clear all history" — and there is now more for it to clear. The button on Content Pipelines → Runs empties everything that view records, and as of this release that includes editorial activity as well as pipeline runs. The button and its confirmation both say so before you agree. There is no undo, and no way to clear only one of the two.
  • Editorial actions are now recorded alongside pipeline runs. Edits, notes, publishes, schedules and the refusals in between are kept with the run history, so a later update can show both on one screen. Apart from the renamed button, nothing on the page looks different yet.
  • Editorial activity is kept during Setup too. Pipeline runs are still held back while you configure a content source, but the review portal is fully usable in Setup, so the work people do there is no longer discarded.
  • Run history and editorial history each keep their own limit, so a busy week of editing can never push older pipeline runs out of the list. When the editorial history reaches its limit, routine autosaves are dropped first — the records of what was actually decided (published, scheduled, changes requested, a publish refused) are the last to go.

v1.6.116

  • The publish confirmation now says how many notes are still unresolved. Approving or scheduling an article is the moment somebody walks away from it, and an open note is the thing nobody comes back to. The confirmation names the count before you commit — and that is all it does: notes have never blocked publishing and still do not, so you can read it and confirm straight past.
  • The count is the Feedback panel's own. It reads the list you are looking at rather than asking the server a second time, so resolving a note and pressing Publish reflects it immediately, and the sentence can never contradict the panel beside it.
  • The formatting toolbar stays put as you scroll. On a long article it used to scroll off the top, so making a heading halfway down meant traveling back up, applying it, and then finding your place again. It now pins below the top bar and follows you down the article. On phone-sized screens it still scrolls away with the article — pinned there it would take up more of the screen than the article itself.

v1.6.115

  • Notify has moved to the article. The button used to sit inside the panel for one picture, while the email it sent had always covered every note on the whole article — so its position said one thing and its behavior did another. It now sits in the action bar beside Request changes, where it belongs. Nothing about the send changed; only the place you press it.
  • Notify takes a message of your own. Choose who should hear about it, type a note if you want to, and send. The message is optional in both directions: you can send the notes with no message, or a message with no notes — a hand-off at the end of your shift, for example.
  • Your message is kept with the article. It joins the Feedback panel, so the next person to open the article can see the hand-off happened rather than taking your word for it in an email they may never have seen.
  • The email now reports both directions. As well as the notes still open, it lists the ones dealt with since that person was last told — so somebody who heard about three problems last week can see that two are now fixed, instead of receiving the same three again.
  • Notify still saves the note you are looking at first, and a failed save still cancels the send. Pressing it no longer closes the image panel out from under you, which had quietly defeated that safeguard.
  • Every note can be resolved now, change requests included. Only notes about a picture could be marked handled before; a change request had no way to be closed at all. Anyone with access can resolve or reopen any note in the Feedback panel.
  • Resolving the last change request clears the queue flag with it. The review queue shows a Changes requested flag beside a count of outstanding notes, and the two were read from different places — so resolving a change request cleared the count and left the flag lit, and the same draft read as handled and not handled at once. Reopening one lights it again, and a second request still waiting keeps it lit.
  • Administrators can be told about an article's notes. They can already open every draft, so naming one grants them nothing — but until now a reviewer literally could not send their notes to an administrator who was not listed on the article. Everybody else who does not already have access is still refused.
  • The Image feedback email setting is now called Reviewer notes, since the control it governs covers the whole article.

v1.6.114

  • Notes on a picture now lead its panel. Writing a note about the image is what most people open that panel to do, and it used to sit at the bottom, under three fields that are already correct on nearly every arriving picture. It now comes first, on a panel of its own.
  • The notes heading counts what is still unresolved on that picture, so you can tell at a glance whether it has something outstanding without reading the list. A picture with nothing outstanding says nothing at all.
  • The image link, alt text and caption are now a collapsed "Image details" section. Open it once and it stays open as you move from picture to picture, so working through a batch of images costs one click rather than one per image.
  • Nothing is removed by that — those three fields are one click away rather than in front of you. The alt text and the caption are still edited in this panel and nowhere else, and they still save the same way. The section opens itself whenever the panel has something to say back about one of those fields, such as asking you to describe a replacement image or reporting that a change to the picture failed. See Images inside the article.

v1.6.113

  • A note you type about an image is no longer destroyed. The box had no memory at all: closing the popover, or clicking a second picture, discarded whatever was in it with no warning and nothing to recover it from. Text now waits on the picture it was written about until you save it — or clear it yourself.
  • The box says when a note is unsaved, and the browser warns before you leave the page with one outstanding. A note is stored by its own Save note button and never rides along with a draft save, so nothing else was ever going to catch it.
  • A started note follows its picture. Import an image, replace it, or change it with AI, and the text you were writing is still there against the new version — including when the change finishes after you have closed the panel. If the picture is removed from the article, the note goes with it and the page stops warning you about work it can no longer show you. Point two pictures at the same file and their started notes are joined rather than one being dropped, with a line marking the text that was carried over.
  • Notify saves the note you are looking at before it sends. Otherwise the email listing "the notes on this article" went out without the one you had just written. If that save fails, the send is cancelled and says so rather than going out incomplete. Pressing Save note and then Notify now files the note once instead of twice, and the confirmation counts the notes still waiting on other pictures accurately.

v1.6.112

  • Resolve and reopen a note from the Feedback panel. An image note could only be marked handled from inside the picture's own panel, so clearing a list of notes meant hunting down every photo they were about — while the Feedback panel already dimmed the ones that were resolved, with no way to get them there or bring them back. Each image note in the panel now carries its own Resolve link, and Reopen once it is resolved. See The Feedback panel.
  • The two places agree. Resolving in the picture panel updates the Feedback panel and the other way round, so a note is never shown as open in one and handled in the other.
  • Change requests about the article itself are unchanged. Those are the record of the Request-changes conversation and do not carry the link.
  • A resolve that does not go through now says so. The link used to gray for an instant and come back reading exactly what it read before, whether the site had refused the change, the note was already gone, or the connection had dropped. The panel now says which it was.

v1.6.111

  • Changing an image with AI no longer reshapes it. Nothing told the image model what shape the picture was, so it applied its own default of widescreen — a square or portrait photo came back cropped. It is now sent the picture's own proportions.
  • The model list names each model, and marks the ones that keep text and logos. It used to show raw technical identifiers, and the model chosen by default was one of the worst at preserving detail. Garbled signage and labels were largely a consequence of that choice being invisible.
  • New "Keep text and logos exactly as they are" option, on by default, under Content Pipelines → Review Portal → Modify images with AI. A reviewer can turn it off for one image when they want a genuine reinterpretation rather than an edit. See Changing an image with AI.
  • The source picture is sent at higher resolution. It was being sent a downscaled, recompressed copy — which is what destroys small text before the model has even started.
  • Quality now offers Standard, High and Ultra. The old HD setting was not a value the image service recognized, so it was quietly ignored — most models treated it as Standard — and the level you picked was never the one applied.
  • Strength is shown only where it does something — it is ignored by every model but one, while the description beside it claimed otherwise.

v1.6.110

  • A note containing a backslash can be deleted again. Writing a Windows path or a network share into a note made it impossible to retract — by its author or by an administrator.
  • A note follows its picture through every change. Previously only the one-at-a-time Import button carried it across; importing on publish, remixing an image with AI, or reverting a remix all left the note describing a picture the article no longer showed.
  • "Sent" now means sent to the person you chose. It used to appear on every note as soon as anybody was notified, so reviewers stopped pressing Notify and a second colleague heard nothing.
  • The reviewer queue and the calendar card agree. Both now count only notes nobody has resolved.

v1.6.109

  • An image-feedback email now credits the person who wrote each note. It previously headed the message with whoever pressed Notify — who is often not the author, since the send covers every note on the article.
  • Each person you notify gets their own copy. Telling the photographer and then the editor about the same notes now works; previously the first send consumed them for everyone.
  • A note about a picture hosted elsewhere survives importing that picture. Bringing the image onto your own site used to lose the note that said it needed bringing.
  • Notes stay attached to the picture you were looking at — editing the link box, or clicking another image while a note is saving, no longer moves it.
  • Resolving a note now tells you when it fails, notes show whether they have already been sent, and a colleague added to the article mid-session can be notified straight away.

v1.6.108

  • Leave a note about a picture. Click any image in a draft — or the featured image — and the details panel now has a Notes on this image box. Saving a note emails nobody: it is attached to that picture for everyone who can open the article, which is what most notes are for.
  • One email, however many notes. When you do want somebody to know, pick a name and press Notify. That sends a single email covering every note not yet sent, so working through six photos produces one message rather than six. See Notes on an image.
  • Only people already on the article can be picked. Telling somebody else would also be giving them access to an unpublished draft, which is what Send to a colleague is for.
  • Anyone can resolve a note, not only whoever wrote it — the person who fixes the picture is usually the one who knows it is handled. Resolved notes stay in the record and can be reopened, and notes never block publishing.
  • A new Image feedback setting under Email notifications turns those emails off; the Notify control then disappears rather than accepting a press that would go nowhere.

v1.6.107

  • The review portal saves more sensibly while you write. It was posting the entire article after every keystroke. It now waits until you pause for a moment, and — new — saves at least once every few seconds even if you never pause, so a long uninterrupted stretch of writing is checkpointed rather than sitting unsaved in the browser.

v1.6.106

  • Pasting from Microsoft Word keeps its formatting. Word marks bold text in a way the previous release read backwards, so bold was being stripped on paste — and text Word had only hinted at was arriving bold. Both directions are fixed.
  • Marking several paragraphs as inline code no longer breaks them apart. Selecting across a paragraph boundary and clicking Inline code previously merged and duplicated the paragraphs; it now marks each one cleanly and leaves no stray marks in the gaps.
  • The formatting buttons no longer act on the wrong text after you revert images. Replacing the article's pictures used to leave the toolbar pointed at the top of the article; it now waits for you to select something again, and Undo keeps working throughout.
  • A picture pasted from a page that loads images lazily arrives as the real picture, rather than the blank placeholder that page was showing while it loaded.
  • Screen readers get an accurate description of the toolbar — buttons that are not on/off toggles no longer announce themselves as unpressed toggles, and the link button reports whether its picker is open.

v1.6.105

  • The review portal's formatting buttons now work. Bold, italic, underline, headings, lists and the rest act on the text you have selected. Previously, pressing a button moved the cursor and did nothing else — the button took focus away from the article before the formatting could be applied.
  • A button shows you what is already applied. Select some text and the matching buttons light up, so you can tell at a glance whether a word is bold and click again to remove it. This is what makes it possible to strip formatting off text that arrived from a content source, rather than guessing.
  • A new setting chooses how much formatting the portal offers. Under Content Pipelines → Review Portal → Formatting controls: Minimal for emphasis only, Editorial (the default) for links, lists and headings, or Full to add block quotes, inline code, superscript, subscript and alignment. See Formatting and links.
  • Pasting from Word or Google Docs is cleaned up. The words come through, and so does the formatting your chosen level allows — but that document's own fonts, colors and spacing no longer travel into the article. This applies only to what you paste; formatting already in the article is never changed by this setting.

v1.6.104

  • Publishing reminders and automatic rescheduling for the Review Portal. Reviewers and authors can now get a reminder email as an article's publishing time approaches, and — if a reserved time is missed too many times — a separate email saying the article needs a new one. A new Auto-defer stale drafts option moves a missed reservation forward on its own first, so a slipped review doesn't quietly leave an article pointing at a time that has already gone by. Nothing is ever published late either way: a reserved article stays a draft until somebody approves it. Both are off by default; see Rescheduling a slot nobody reviewed in time and Email notifications.
  • Who those two new emails reach. The reminder and the auto-defer notice go to the article's author and the reviewers it was already sent to — not to standing Default CCs. On a site that relies on a standing CC list, these two emails therefore reach fewer people than the ones sent when a draft first arrives. Everyone on an article's own list can open it; anybody else would get a link that asks them to sign in and then turns them away.
  • The reminder says which articles still need approving. Each row is marked either Publishing — already scheduled, going out on its own — or Planned, meaning it is still a draft and somebody has to approve it before that time means anything.
  • Cadence warnings now catch more collisions. The publishing-rhythm check that warns about a crowded day now also counts a reviewer's own chosen publishing time, not just already-reserved slots and scheduled articles — and it runs from the article's own Schedule control when you approve, not only from the calendar.
  • Notification emails can reach more addresses. Review Portal emails can now also be sent to a reviewer's alternate work or personal email address on file, in addition to their WordPress account email.
  • The reviewer queue and expired-link pages now carry your branding, matching the rest of the Review Portal.

v1.6.103

  • The last dates that still followed the site's own display setting now match the rest. The Article date row in review emails and the date on the content calendar's article card were the two remaining hold-outs, so a single email could show two different date styles in one table. Every date a reviewer sees is now written the same way, wherever it appears.

v1.6.102

  • Dates in the review queue now read the same way as the ones in your emails. The queue was rendering dates using the site's own display setting, so the same article could be "2 September 2026" on the queue and "Wednesday, September 2, 2026" in the review email it arrived with. Both now spell out the weekday, which is the part that tells you whether a deadline is tomorrow or next week. A scheduled article's time reads as "1:00pm" rather than "13:00".

v1.6.101

  • A publishing time you set on a draft now shows up on the calendar. Ticking Schedule, choosing a time and pressing Save draft stored your choice — the portal filled the field back in every time you reopened the article — but the calendar never knew about it, so the article stayed under Unscheduled drafts and the day you picked was drawn empty. It now appears on that day, in the provisional style, and leaves the unscheduled list. Nothing about approval changes: the article is still a draft and an approver still has to publish it.
  • The portal no longer credits your publishing cadence for a time you chose yourself. The note beside the date said "Slot reserved by your cadence" whichever way the time got there. It now says which it was, and the calendar's article card makes the same distinction — Planned for a time a person named, Slot held for one the cadence reserved.
  • Save draft moved next to the approve button and has its own color. At the far left of the bar it was separated from the action most reviewers take next by every toggle in between, and being white it read as one more of those toggles rather than a button.

v1.6.100

  • The calendar on the review page is wider, and unscheduled drafts moved underneath it. The month grid used to share a narrow column with a side panel listing drafts that have no date, which left each day too small to show anything but a clock time. The grid now takes the full width and the undated drafts sit in a strip below it, so a day can show which article is going out as well as when. The strip appears only when something is actually waiting.
  • Clock times read as "3:08pm" rather than "15:08". The calendar used to show whatever 24-hour or 12-hour format the site itself was set to. Reviewers do not see that setting, so times are now always written the plain way, matching the review emails.
  • A review email now spells out the weekday of a held publishing slot — "Thursday, September 3, 2026 @ 9:00am". A held slot is a deadline you are being asked to act on, and a date on its own does not tell you whether that is tomorrow or next week.

v1.6.099

  • Rescheduling no longer fails while a save is running. The calendar refuses to run two writes at once on the same article, which is right — but it used to report "Reschedule failed" without contacting the site at all. Since typing arms an automatic save, editing an article and then moving it on the calendar could lose the change to an error about a request that was never sent. The write now waits for the save to finish and then goes through.
  • Reviewers who cannot publish can now set a preferred time. Choosing a date for your own draft is a note about when you would like it to go out, not a decision to publish it — so it no longer needs publish permission. The article stays a draft, and an approver still has to publish it; when they do, your time is the one it uses. Moving an article that is already scheduled still needs publish permission, because that changes when something approved goes live.

v1.6.098

  • A publishing time you set on a draft now saves. Adjusting the time and clicking Save used to discard it silently — the panel said "Saved", and the next time you opened the article the field had gone back to the time reserved for it automatically. The time was only ever sent when you pressed Schedule. It is now saved like any other field.
  • Your own time beats the automatic one. If the publishing cadence reserved a slot for an article and you choose a different time, yours is what the article publishes at. Clearing the box hands it back to the reserved slot.
  • The schedule field now behaves like the rest of the form — it autosaves, it counts toward "Unsaved changes", and you are warned before navigating away with it unsaved.
  • The Publishing cadence card now tells you when a value was not accepted. A time box left half-filled reports an empty value, which the site declines to store; it used to keep the previous time and still say "Saved", which read as your edit reverting. Incomplete values are now caught before saving, and anything the server declines is named in the message.
  • Fixed: saving the Content Pipelines settings could discard unrelated settings on some sites.
  • Fixed: publishing with a malformed schedule value published the article immediately instead of refusing the request.

v1.6.097

  • The review queue page — the one the Open my review queue button and your review emails link to — now has a Calendar button of its own. Until now the calendar lived only inside an individual article's review page, so seeing what else was coming up meant opening an article you may not have wanted to work on.
  • It is the same calendar, with the same color key and the same drag-to-reschedule behavior, and it respects the same permissions: you can only move articles you are allowed to edit.
  • The button appears only for people whose account can see the calendar. Signing in to the queue page as an ordinary site member shows no calendar rather than a button that fails when clicked.

v1.6.096

  • Articles holding a reserved publishing slot now appear on the content calendar on the day they are holding. Until now they sat in the Unscheduled drafts list, dated by the day they arrived, so the moment the cadence had set aside for them was invisible — the only way to find it was to try scheduling something else into that day and read the warning.
  • A held article is drawn in its own color with a dashed edge, deliberately distinct from a scheduled one: a hold is waiting for your approval, and nothing publishes on its own.
  • Drag a held article to a different day to turn its hold into a real schedule. It keeps the time it was holding, and the usual cadence warning still applies.
  • A held article whose moment has already passed stays in Unscheduled drafts, because approving it then simply publishes it.
  • The calendar now shows a key explaining what each color means, on both the admin calendar and the one in the review portal.

v1.6.095

  • Review notification emails now send the article's photo along with the message instead of linking to it. Some mail apps will not load a linked image, which left a broken-image placeholder where the photo should be. Sending the picture with the message removes that failure.
  • Trade-off worth knowing: forwarding or replying to a review email no longer carries the photo across in most mail apps, so whoever receives that forward sees a placeholder where the picture was. The Edit/View this article button still opens the full draft.
  • An unusually large photo is still sent as a link, so a message never becomes needlessly heavy.

v1.6.094

  • Fixed a path where importing a saved configuration could drop the on/off state of the newer integrations. The import now always reads the current integration list rather than an internal copy that had fallen behind.
  • Internal maintenance: shared plugin-detection logic and a new build check that keeps the integration registries in step, so an integration can no longer be added in one place and forgotten in another.

v1.6.093

  • Security: REST API restriction now identifies a request by the route WordPress will actually serve, rather than by the address the request was sent to. A request could previously present an allowed address while asking for a different, restricted endpoint — the restriction judged the address and let it through. The endpoint's own permission checks still applied, so this bypassed the pre-emptive block rather than granting access, but the restriction now holds on its own.
  • A request whose target cannot be determined is refused rather than allowed.
  • No configuration changes are needed, and no legitimate request shape is affected.

v1.6.092

  • SyteHero is now a recognized integration, with its own tile alongside every other plugin SyteOps knows about.
  • SyteHero's consent and attribution endpoints keep working whenever SyteHero is installed, even with REST API restriction turned on. Previously they were blocked, and because SyteHero stops tracking when it cannot confirm a visitor's privacy rules, that quietly switched off all of its front-end analytics.
  • Only those two public endpoints are opened. SyteHero's settings, backup, slide and sales endpoints stay behind the restriction.
  • Because a blocked endpoint is invisible until someone notices the missing data, this does not wait on the new toggle: activate SyteHero and the endpoints work.

v1.6.091

  • Articles arriving from a content source can now be given the next open slot in your publishing schedule, so posts space themselves out instead of arriving in clusters. Off by default; turn it on under Publishing cadence.
  • A source set to publish on arrival is scheduled for its slot instead of going live immediately.
  • The review email shows the reserved slot, and the reviewer opens the article with that date already filled in — they can still change it or publish right away.
  • The scheduled confirmation email now says exactly when the article goes live.

v1.6.090

  • Notification emails now follow your dark mode setting instead of staying stubbornly light. Headings, cards, status pills, detail tables and the footer all shift together, so nothing is left as an unreadable bright slab. Your logo keeps its light plate so it stays legible whatever it is designed for.
  • Article photos in notification emails are no longer attached to the message, so they still appear when you forward an email or reply to one. Previously every picture collapsed to a filename placeholder, because no mail app carries attachments into a reply.
  • Notification emails are dramatically smaller as a result, which also stops longer ones being cut short by Gmail's size limit. Your logo is still attached, so it shows even in apps that block remote images.

v1.6.089

  • Review Portal: a live article can now be taken back to draft from the portal. The button appears for reviewers who can publish, and the article keeps its original publication date and address, so putting it back restores it rather than re-launching it.
  • Review Portal: taking an article down also cancels any social posts scheduled for it, so nothing broadcasts a link to an article that is no longer there. Posts already sent are not recalled, and posts set to go out "on publish" are kept for when the article goes back up.
  • Review Portal: an article published with private visibility comes back private when you republish it straight away, instead of quietly becoming public.

v1.6.088

  • Content Pipelines: the Coverage shortcut now sits before Calendar in the quick navigation, grouping it with the analysis views it belongs to.

v1.6.087

  • Review emails: the Edit/View this article and See all my reviews buttons now sit directly under the article title and summary, instead of below the full-width photo. On a phone the action was previously pushed off the first screen by the image.

v1.6.086

  • llms.txt — a held publication no longer fails in silence. When you edit an article's answers after it is published, SyteOps rebuilds the AI files in the background rather than through a pipeline run — so there is no row in the Runs table to look at. If LLMS Amplifier was holding publication until its headless settings are confirmed, those background rebuilds did nothing at all, and nothing anywhere said so: the files simply went stale. SyteOps now reports the hold as a note on the LLMS Amplifier settings screen, counting how many rebuilds it has attempted, and clears the note on the first one that completes. It deliberately does not keep retrying — a hold is cleared by confirming the settings, and retrying every couple of minutes would rebuild your whole site for nothing.

v1.6.085

  • llms.txt — you are told when LLMS Amplifier moves ahead of us. SyteOps is checked against a specific range of LLMS Amplifier versions, and until now that range was recorded only in code comments nobody could see. If you update LLMS Amplifier past it, a note now appears in its own settings screen saying so. Nothing is switched off and nothing stops working — a version update has never removed anything SyteOps relies on. The note exists so that if the answer-engine files or the robots.txt guidance ever do look wrong, you know which detail to mention when reporting it. Do not delay an LLMS Amplifier update because of it.

v1.6.084

  • llms.txt — the robots.txt advice no longer withholds a line you owe. A newer LLMS Amplifier decides each robots.txt line separately, so a site that publishes its AI index but not its sitemap gets the LLMS-Index: line and nothing else. SyteOps assumed the two always travel together and, on such a site, told you nothing was missing. It now checks each line independently. Sites with the sitemap turned on are unaffected — the advice there was already correct.
  • Content Pipelines — a held publication says so. When LLMS Amplifier pauses publishing until you verify a setting, it does no work and schedules no retry. That arrived as a plain failure, so the pipeline showed an error on every publish that retrying could never clear and that named the wrong problem. It now shows as Held, in amber, with the reason — so you know a person has to act, not a machine.
  • Content Pipelines — settings written to LLMS Amplifier are confirmed. A newer LLMS Amplifier can decline a settings change while another process is saving. SyteOps assumed its writes succeeded, so a declined change was reported as saved and could also trigger repeated rebuilds. Writes are now read back and a declined one is reported, with a suggestion to try again in a moment.

v1.6.083

  • Review Portal — reviewers added later now get the email. The reviewer list for an article was fixed at the moment it arrived, so anyone you added to your Default reviewers or Default CC reviewers afterwards silently received none of that article's notifications and could not open it. Notifications for articles still awaiting review now use your current lists. Two limits are deliberate: articles that have already been published are never changed, so adding someone never hands them your published back catalog; and removing someone does not revoke access to drafts they were already assigned to.

v1.6.082

  • Review Portal — open it from the live article. The Open review portal link now also appears in the WordPress toolbar while you are signed in and reading a published post on your own site. Previously it only appeared while editing the post, so spotting something wrong on the live page meant navigating back to the editor first. Who can see the link is unchanged — it still only appears for people who can already edit that post.

v1.6.081

  • Review Portal — sign-in fixed. Opening a review link from an email and signing in could fail with "cookies are blocked or not supported by your browser", even when cookies were switched on. It affected any browser that had not already visited the WordPress sign-in page recently, which is why it appeared to strike some people and not others. The sign-in card now prepares the check correctly, so the message only appears when cookies really are blocked.

v1.6.080

  • Content Pipelines — heading anchors. A new per-source option gives each heading in an ingested article a short, predictable anchor name ("What is DSCR?" becomes what-is-dscr), so a table-of-contents widget links to stable, shareable anchors instead of inventing its own. Repeated headings get -2, -3; a heading that already has a name keeps it. Applied when the page is displayed — your stored article is never changed, so switching it off leaves nothing behind.
  • The FAQ block SyteOps adds to an article now has a stable anchor of its own, so a page showing two tables of contents no longer produces conflicting links.

v1.6.079

  • Added: A content source can hide a table of contents that the sending app embedded in the article body, for sites that render their own.
  • Added: A content source can hide an FAQ section that the sending app embedded in the article body, for sites that render their own. The section is recognized whether it is headed "Frequently asked questions" (any level) or the shorter "FAQ"/"FAQs" (top-level headings only).
  • Both settings default to off and apply only to the article being viewed. Nothing about how existing content renders changes until a content source opts in.

v1.6.078

  • Fixed: Default author is used when the mapped webhook author is blank or does not match a WordPress user.
  • Added: Reviewers can change the post author in Review and Publish.

v1.6.077

  • Fixed: New-draft review emails now go to everyone in Default reviewers and Default CC reviewers when the content source does not set its own list.
  • Changed: Article date on review emails uses 12-hour AM/PM in the site timezone.

v1.6.076

  • Added: Export a content source setup and import it on another site.
  • Added: Import issues a new webhook secret; secrets are never in the file.

v1.6.075

  • Fixed: Checking a content source ingest URL with GET or HEAD no longer looks like the endpoint is missing.
  • Changed: The Cloudflare skip for that ingest path should match the path for any method, not POST or a specific signature header.

v1.6.074

  • Internal improvements and maintenance

v1.6.073

  • Added: WordPress avatars use the profile photo from the associated user slot when one is set.

v1.6.072

  • Changed: Modify with AI sits under Caption in image details.
  • Changed: The Strength hint spans the panel instead of wrapping under the Strength field.

v1.6.071

  • Changed: Modify with AI now shows Model, Quality, and Strength labels.
  • Added: Operators can hide Modify with AI from specific reviewers when the companion image plugin is active.

v1.6.070

  • Added: Reviewers can modify a picture in the review editor with AI when the companion image plugin is installed.
  • Added: Incoming articles can map image prompts so Generate is pre-filled; the original picture is kept for Revert.

v1.6.069

  • Added: Command-click or Ctrl-click a link in a review article to open it in a new tab without leaving the editor.

v1.6.068

  • Fixed: incomplete answers cut at the old 300-character limit are no longer listed on public question feeds.
  • Changed: Coverage analysis can replace those leftover answers with a new draft.

v1.6.067

  • Changed: Coverage metric columns are centered from GEO analysis onward.

v1.6.066

  • Fixed: titles in colored window headers stay white and readable, including larger heading sizes.

v1.6.065

  • Fixed: FAQ questions stay on the article page, not in RSS or inside other posts on the same page.
  • Fixed: complete answers that do not end with a period still publish, and declining Coverage waits for the run lock to release.

v1.6.064

  • Added: Coverage can mark existing answers as reviewed in a batch without re-running AI.

v1.6.063

  • Added: articles with FAQ structured data now also show those questions and answers on the page.
  • Changed: duplicate questions that share the same answer are listed once in FAQ structured data and on the page.

v1.6.062

  • Fixed: AI listing descriptions no longer append an internal field dump.

v1.6.061

  • Fixed: newest published articles stay in the advertised AI index FAQ instead of dropping off the 100-question cap.
  • Fixed: incomplete mid-word answers are no longer listed on public question feeds.

v1.6.060

  • Added: a View Live jump next to Edit in WordPress in the review portal. It says View Preview while the post is still a draft or scheduled.
  • Changed: lists and quoted blocks in the review portal have clearer spacing above, below, and between items.

v1.6.059

  • Fixed: review portal answers are no longer cut off at 300 characters.
  • Changed: answers can be up to 2000 characters and are never truncated.
  • Note: answers that were already cut off stay that way until you edit them or tap Draft answer again.

v1.6.058

  • Changed: on the article coverage screen, answers waiting for review now say they need approval (or needs approval when there is only one).
  • Changed: article titles on the coverage screen open the review portal instead of the WordPress editor.

v1.6.057

  • Fixed: the Usual publishing time field showed only a clock icon with no visible time. The time you set is now readable in the field.
  • Fixed: the article coverage screen reads correctly — filters are grouped under headings, table headings line up with the columns they describe, the row checkboxes and column headings are labeled for screen readers, and the list now tells you how many articles you are viewing.

v1.6.056

  • Added: describe your publishing rhythm once — which days you publish on, your usual time, the most articles you want in a single day, and the smallest gap you want between two of them.
  • Added: the content calendar now warns you when a date breaks that rhythm. It says what the problem is, names any articles already booked nearby, and offers the next date and time that fits. (Choosing a day you do not normally publish on is flagged on its own, with nothing to name.)
  • Added: the warning offers Use suggested time and Schedule anyway. It is advice, never a block — every date you could schedule before, you still can, and if the check itself cannot run the schedule simply goes through.
  • Added: the same check runs when you drag an article onto a day, where it appears as a short confirmation instead of a panel.
  • Note: cadence warnings are off until someone turns them on, in the Publishing cadence card on the Content Pipelines screen.

v1.6.055

  • Added: a new Coverage view on the Content Pipelines screen lists every article the answer engines describe, alongside what has actually been run against it — the content that predates your pipeline included.
  • Added: each row shows whether the answer-engine analysis has never run, is stale, is current, or failed, plus the article's meta description, SEO title, focus keyword, and how many of its answers are still waiting for review.
  • Added: filter the list by any of those states, or by the gap you are chasing — answers awaiting review, no meta description, no focus keyword, no SEO title — and optionally include drafts and scheduled posts.
  • Added: select articles and analyze them together, up to 25 per run. Before anything is spent, a confirmation names the AI provider, the model and the per-article token ceiling, and reminds you that the "waiting for review" count will rise, because new answers are held back until someone checks them.
  • Improved: articles someone currently has open, and articles whose exact current text already failed, are skipped with the reason shown. Editing the article makes it eligible again.
  • Improved: every bulk run is recorded as one entry in the Runs list under a new Coverage source filter, with how many articles were analyzed, failed or skipped and which model was billed.

v1.6.054

  • Changed: the questions and answers the AI writes for an article are now published to your answer-engine surfaces only after someone has ticked answers reviewed for that article. Before this, four of the five surfaces published them as soon as the analysis finished. This covers the per-article blocks in llms.txt, the site-wide questions section, FAQ structured data, the questions feed, and the answer-engine index.
  • Added: the Answer-engine publishing card now shows how many articles have answers waiting to be checked. If LLMS Amplifier is installed, its own health panel shows the same count.
  • Improved: ticking answers reviewed rebuilds your answer-engine files on its own, so the answers appear without any further step — and un-ticking it removes them again.
  • Improved: if an answer changes after it was checked — for example because the analysis was re-run — that article returns to waiting for review. A tick only ever covers the exact wording it was given for.

v1.6.053

  • Fixed: the answer-engine setup review can be re-opened at any time from the Review answer-engine setup button. It previously disappeared once every issue was resolved, so on a correctly configured site the documented button was simply absent — indistinguishable from the settings panel failing to load.
  • Improved: opening the review when nothing is wrong now tells you so, rather than showing an empty dialog.

v1.6.052

  • Added: a setup review appears when answer-engine publishing is switched on. It separates what SyteOps has already handled for you from what still needs your say-so, and you can re-open it any time from the Answer-engine publishing card.

v1.6.051

  • Added: SyteOps can add the answer-engine discovery lines to your SEO plugin's robots file for you — one click, and a one-click undo. Your own crawl rules are never changed.
  • Added: those lines are removed automatically if you switch off the feature they point at, so you are never left advertising a file that is no longer published.
  • Added: a warning when one of your own crawl rules blocks a file the discovery lines point at.
  • Improved: robots.txt is cleared from your CDN cache after a change, and you are told when it could not be.

v1.6.050

  • Internal improvements and maintenance.

v1.6.049

  • Fixed: Some SEO plugins serve your site's robots.txt file themselves, and because of when that runs it replaces the version WordPress builds — silently dropping the lines that tell AI crawlers where to find your answer-engine files. SyteOps now spots this and shows you the exact lines that are missing, along with the screen to add them on. It checks what that plugin is already serving, so it only ever asks for lines you do not have, and the message clears itself once you have added them. SyteOps does not switch the other plugin's robots feature off — that file holds your own crawling rules, and they are yours to keep.

v1.6.048

  • Fixed: A reminder that one of your hidden admin notices no longer appears on the page it was hidden on arrived as a stray line of text at the foot of an unrelated admin screen instead of a corner notification. It now appears as a proper notification that clears itself. Changed: The confirmation that a notice was hidden is now shown only while you are managing the hiding rules, so everyday admin screens stay quiet.

v1.6.047

  • Improved: Applying the recommended answer-engine settings now also raises the amount of each article published to AI crawlers. The default of 500 words was quietly cutting most articles short — a 1,900-word post reached answer engines as 500 words. Sites already publishing more than the recommended amount are left exactly as they are.

v1.6.046

Fixed: Some SEO plugins have added their own llms.txt feature, and because of when it runs it takes the /llms.txt address before SyteOps can answer it — so visitors and AI tools received that plugin's file instead of the one SyteOps builds, with nothing on screen to say so. When GEO is on, SyteOps now switches that feature off for you and takes the address back, leaving the other plugin's own AI usage rules and every other setting untouched. Switch GEO off, or deactivate SyteOps, and the feature is handed back automatically so your site is never left without an llms.txt. Added: A warning on the Answer-engine publishing card naming any plugin still holding the address. Fixed: The same class of clash affects FAQ structured data — an SEO plugin set to remove other plugins' structured data was silently deleting the reviewed questions and answers SyteOps publishes, so the feature looked switched on and reached no search engine. SyteOps now switches that setting off too, and only while it is actually publishing FAQ data. Added: SyteOps tells you each time it switches one of these settings off, warns you if one is switched back on, and explains the change on the other plugin's own settings screen. Added: Turning GEO on now finishes configuring the answer-engine files, so a site whose integration was already enabled no longer ends up publishing nothing.

v1.6.045

Fixed: The review portal page was being marked publicly cacheable, so a per-reviewer link carrying a private draft could be stored by a CDN or page cache — the reviewer queue beside it was already protected, but the article page itself was not. It now tells every cache not to store it, and tells search engines not to index it.

v1.6.044

  • Fixed: Icons inside buttons sat about a pixel above their label across the whole plugin, so text and icon never quite lined up. They now share one center line on every button — including the pagination controls in Content Pipelines, where the icon sat noticeably low.

v1.6.043

  • Fixed: The SyteHero image provider in the AI balances popup had no logo, so its name sat out of line with every other provider on the list. It now shows the provider's mark like the rest, and any future image provider without one gets a matching placeholder rather than a gap.

v1.6.042

  • Fixed: Rebuilding a listing image reported success even when the watermark could not be removed, so the card came back unchanged with nothing explaining why. The rebuild now says what went wrong in plain language, retries on its own when the image service timed out or errored, and offers a "Repair anyway" button when the safety check was what stopped it.
  • Added: A "Listing copy" column on the Media Library, so you can see which pictures still need attention after you close the rebuild window.
  • Added: When SyteHero is installed, its image API balance now appears in the balances popup beside your other AI providers. That is the account watermark removal is charged to.
  • Fixed: When a provider balance could not be read, the list showed only "Error" with no explanation. Hovering over it now tells you why — a missing key, an unreadable response, or the provider's own message.
  • Changed: The Quality setting has been removed from the Listing image panel. None of the available repair models used it, so the control could never do anything.

v1.6.041

  • Added: After you change the card size, the crop, or the watermark settings, the Listing image panel now tells you how many copies were made with your previous settings and offers a Rebuild button beside the message.
  • Fixed: Saving the Listing image panel after editing something that does not affect how pictures are cropped no longer suggests a rebuild. Only a change that actually reached the pictures raises the message.

v1.6.040

  • Added: Two new listing-image settings control how much work SyteOps does on its own. Featured images only skips pictures inside an article, which never appear on a card. Only rebuild existing pictures when I ask stops blog and archive visits remaking copies — the setting to keep on if watermark removal is billing you per picture.
  • Fixed: Deleting every listing copy and then rebuilding one article no longer quietly rebuilds others as pages are visited. Both new settings are on after this update, so rebuilds now happen when you ask for them.
  • Changed: Deleting listing copies is never narrowed by the new setting, so a copy made before you switched it on can still be removed. Newly uploaded pictures are still cropped, and a new article's featured image is still repaired.

v1.6.039

  • Fixed: Replacing a listing card image no longer leaves a broken card for anyone whose page was already cached. The copy it replaces is now kept until the next rebuild, so a page held by a cache or CDN goes on working until it refreshes.

v1.6.038

  • Changed: Watermark removal on listing cards now repaints only the marked corner and cannot alter the rest of the picture. Previously the whole image was sent to the AI with a written request to change one part of it, which is not something a picture model can promise.
  • Fixed: A repair that does not match the surrounding picture is now refused, and the card keeps the original photo. A corner could come back as a flat gray block, or a photo with no watermark at all could come back blurred.
  • Fixed: The whole marked corner is now replaced. The edge of the area was previously blended back toward the original, which left the top of a logo behind.
  • Changed: The default height of the watermark area is now 16%, up from 12%, which cleared the reference logo by only three pixels. Your saved setting is unchanged.

v1.6.037

  • Fixed: Rebuilding a card image now reaches visitors right away. Each rebuild is saved as a new file, so browsers and image CDNs can no longer go on serving the copy you just replaced.

v1.6.036

  • Added: Delete selected posts on listing-image settings deletes listing copies for only the articles you pick, so cards go back to the original photo without deleting every copy on the site.
  • Added: Deleting copies for selected posts has no 50-picture limit; posts with no copy to remove are grayed out, and the count is of copies rather than pictures. The confirmation says whether those copies will be prepared again, and whether doing so is billed.

v1.6.035

  • Added: Rebuild selected posts on listing-image settings opens a searchable list of posts so you can rebuild only the cards that look wrong.
  • Added: The picker shows how many pictures each post has and how many already have a copy, remembers ticks while you search, and confirms the exact number before it starts.

v1.6.034

  • Added: Delete listing copies on listing-image settings restores original photos on cards.
  • Added: Rebuild listing copies from the original, with a warning if watermark repair is still on. Turning that repair off no longer leaves remixed card files in place with no way to drop them.

v1.6.033

  • Added: Choosing LLMS Amplifier as the GEO engine now turns on its JSON index when questions or business identity publish into it.
  • Added: Apply recommended Amplifier settings on the Answer-engine publishing card turns on the JSON index, sitemap, robots, and meta-tag discovery without leaving that card.

v1.6.032

  • Added: Reprocess listing images now shows a spinner and one picture at a time while each one rebuilds.
  • Changed: Closing the progress window leaves remaining pictures queued in the background. Reload the listing after it finishes so cached copies update.

v1.6.031

  • Added: Approve and Publish now confirms in a dialog, then shows live progress (including image copy counts) until it finishes.
  • Changed: Scheduling and publishing use that same progress dialog instead of the browser confirm box.

v1.6.030

  • Fixed: Listing-card watermark repair now edits the whole cropped picture and the true corner, so leftover logo fragments no longer survive. After this update, reprocess pictures that already had a repair.
  • Fixed: Saving or publishing from the review portal now sends the current SEO keyword to Squirrly on that same save, and the published confirmation email no longer calls a live article a draft.

v1.6.029

  • Changed: Listing-image settings now say whether blog cards are using the cropped copy.
  • Changed: Leftover theme sizes are a note, not a warning, when automatic use is on.

v1.6.028

  • Changed: Review Portal Workflow settings descriptions are shorter.

v1.6.027

  • Added: Watermark repair on listing cards lets you pick which connected image API and high-fidelity model to use, with quality and seed when the model supports them.

v1.6.026

  • Changed: Listing cards keep the theme image until a repaired crop exists, Reprocess no longer deletes the current crop first, and the full-size clean-copy action is removed.
  • Changed: Watermark, card size, and force-on-blog stay gray until Crop a copy for listings is on.

v1.6.025

  • Added: GEO analysis can run automatically the first time a new article arrives. Off by default, and it needs a GEO AI provider.

v1.6.024

  • Fixed: The featured-image picker in the review portal no longer stacks screen-reader labels over its chrome.

v1.6.023

  • Changed: Save settings sits under Social Publishing and saves it with the rest of the Review Portal panel.

v1.6.022

  • Added: Social Publishing is now its own settings group on the Review Portal panel, with a jump button next to Workflow, What gets sent, and Setup.
  • Improved: those jump links now use the same pill buttons as the other settings tabs.

v1.6.021

  • Fixed: Blog cards on block-theme Query Loop layouts and on a static home page now get the cropped listing picture and the theme-wiring reading the same way as the blog index.

v1.6.020

  • Changed: Related-post and post-grid cards below an article now use the cropped listing picture when that setting is on. The article's own featured image stays the full, branded original.
  • Fixed: Large imports and WP-CLI featured-image sets now queue corner cleanup for every picture instead of stopping after the first few in one process.

v1.6.019

  • Fixed: A blog card whose cropped copy had not been prepared yet was served the full-size original with its watermark intact. Cards now keep the size your theme asked for until the copy actually exists.
  • Fixed: Product and other custom archives were being given the blog card's crop and shape. Only blog posts are affected now, matching what the settings screen reports.

v1.6.018

  • Added: The listing image now reaches themes that build their blog cards their own way, and cards that ask for an exact pixel size instead of a named one, so those cards get the cropped copy without you editing your theme. Article pages are still untouched.
  • Added: The settings screen now warns when your theme's cards expect a different shape from the card size you entered, naming both — a mismatch quietly re-crops the copy you just arranged to have cropped correctly.

v1.6.017

  • Added: Rebuild a picture's listing version on demand, from the review portal or the media library, and have listing pages use it automatically without editing your theme. Newly featured pictures now have their corner cleaned straight away instead of waiting for the first visitor to a listing page.
  • Added: Make a clean full-size copy of a picture for use inside the article, leaving the original and everywhere else it appears untouched. Imported pictures now arrive with a real name instead of their filename.

v1.6.016

  • Added: Review Portal settings groups now have an open/closed arrow, jump links at the top, and Open all / Close all, so you can reach a section without scrolling the whole page.

v1.6.015

  • Fixed: The stacked actions on each pipeline run (Resend email, Re-run, Open in portal, Delete) now line up on one left edge, and the expand arrow sits at the top of the row instead of floating over the links.

v1.6.014

  • Changed: The Review Portal settings screen now places each label directly above its control, so settings no longer float across a wide empty gap on large screens.
  • Changed: The reviewer and CC selection lists are taller, so more than two names are visible at once.

v1.6.013

  • Fixed: Deleting a pipeline run now removes the row and updates the page's counts immediately, instead of graying the row out until the page is refreshed.
  • Changed: The run history's row actions (Resend email, Re-run, Open in portal, Delete) now stack vertically, so the rest of the row has room to breathe.

v1.6.012

  • Changed: Watermark removal on blog and archive cards is now done by SyteHero's image AI, which reconstructs the background behind the watermark instead of smudging it in from the picture around it. The old fill was only convincing on a plain background and looked wrong on anything else. This needs SyteHero installed with an image AI key — without it the setting is switched off and says so. Each picture costs one image request against your own SyteHero balance, once per picture rather than once per visit, and repairs run in the background so a card may show its original crop for a minute after you turn it on. Fixed: A repair that could not run was recorded as if it had succeeded, so it was never tried again. On a server missing the image library that meant every picture was reprocessed once, nothing changed, and nothing said why.

v1.6.011

  • Added: Articles that arrive without a summary now get one written for them. When a source sends no excerpt, SyteOps writes a short summary of the article and stores it as the excerpt and the meta description, so blog and archive cards stop showing the article's opening heading twice. A summary you or a reviewer has already written is never overwritten, and if your source sends an excerpt field of its own that field stays in charge. The Generate with AI button in the review portal now produces exactly the same kind of sentence.

v1.6.010

  • Added: You can now delete a single entry from the pipeline run history. Until now the only way to remove anything was to clear the whole history, so tidying away one test delivery meant losing the record of everything else. Every row now carries its own Delete button, and it asks you to confirm before it removes anything.

v1.6.009

  • Added: The listing image setting now tells you whether your theme is actually using it. SyteOps watches which picture size your cards ask for and reports what it saw on the same settings screen, naming the page and the size. Visit a listing page after you change your theme, then reload the settings screen — the reading updates itself, so it confirms the fix rather than needing to be cleared.
  • Note: SyteOps never changes a theme setting for you — it only reads your pages and reports what it saw, and it says so plainly when a theme renders its cards in a way it cannot follow. It also names the one case no theme setting can fix: a card that asks for an exact pixel size instead of a named one.

v1.6.008

  • Added: A blog and archive card can now drop a watermark from its picture. SyteOps already prepares a second copy of each picture cut to your cards' shape; it can now repair the watermark's corner on that copy, filling it in from the picture around it. The article page, the media library and social previews all keep the watermark — only the card loses it, so branding stays where it is seen at full size and cards read as clean photographs. Choose the corner and how much of it to repair.
  • Fixed: On sites using an image CDN, the prepared listing copy was being ignored. The CDN built its own responsive versions from the original picture and the browser preferred one of those, so cards silently went back to a center crop of the untouched file — undoing the crop you chose and re-cropping any watermark. Cards now always use the copy SyteOps prepared.

v1.6.007

  • Added: Yoast SEO and Rank Math can now be connected the same way Squirrly SEO already could. With one of them switched on, the meta description, focus keyword and cornerstone/pillar flag your articles get in the review portal are written straight into that plugin's own fields.
  • Added: Only one SEO plugin can be connected at a time. Switching one on switches the others off, in the browser as well as on save, so two plugins can never be writing the same page's title.
  • Note: With Yoast SEO or Rank Math connected, SyteOps leaves the per-article SEO title empty unless you type one yourself. That is deliberate — both plugins use your own title template (usually “Title | Site Name”) only while that field is blank, so filling it in automatically would quietly drop the site name from every article's search result.

v1.6.006

  • Added: A listing image for blog and archive cards. SyteOps prepares a second copy of each picture, already cut to the shape your cards use, so nothing is cropped away at display time — you choose which part of the picture survives, and a corner logo can be kept out of the crop entirely. Article pages keep the original picture untouched. Existing pictures are prepared the first time a listing asks for them, so there is no batch job to run.
  • Fixed: The five image settings on the Review Portal panel — importing images on publish, and the four choices about what metadata comes with them — could be changed but never saved. They reverted to their previous state on the next page load.

v1.6.005

  • Fixed: Posts published through the review portal now show their optimization score in the WordPress post list when Squirrly SEO is active. The score is calculated by Squirrly from the article’s keyword, and the portal was not passing the keyword along — so posts it published showed no score at all.

v1.6.004

  • Added: Clicking an article on the calendar now opens a details card — its full title and featured image, when it publishes, who is reviewing it, and a checklist of what it still needs before it can go live.
  • Improved: The calendar opens faster and stepping between months is instant. Months you have already looked at are remembered, the months either side are fetched ahead of you, and the calendar starts loading the moment you reach for the button rather than after you click it.
  • Fixed: An article you cannot reschedule can now be clicked to read its details. It previously did nothing at all.
  • Fixed: The "This article is live" banner sits evenly between the top of the page and the panel below it.

v1.6.003

  • Fixed: The "Received" date in your review queue now stays correct after a post is scheduled, moved, or has its schedule cancelled. It previously showed the moment the schedule was cancelled, and a scheduled post showed no received date at all.
  • Changed: The per-article history now records what a save actually changed, and writes nothing for a save that changed nothing — so an afternoon of editing no longer pushes the record of who published, scheduled or cancelled the article out of that history.

v1.6.002

  • Fixed: Scheduling a post no longer says it "cannot be undone". A scheduled post can be edited, moved to another time, or cancelled at any point before it publishes, and the portal now says so.
  • Fixed: Reopening a scheduled post no longer shows the Schedule box unticked and the date blank. The post's badge, the Schedule box, and the date and time all come back exactly as you left them.
  • Added: An Unschedule button on scheduled posts, in the review portal and in the calendar picker. It returns the post to a draft and keeps the date you had chosen, so scheduling it again is one click.
  • Fixed: Choosing to publish a scheduled post immediately now actually publishes it. It previously reported success and quietly left the post scheduled.
  • Changed: Scheduling a post no longer ends your session with it. The action bar stays live so you can keep editing, move the date, or cancel.
  • Fixed: Requesting changes on a scheduled post now cancels its schedule, so it cannot publish itself while the author is still rewriting it.
  • Fixed: Scheduled posts now appear in your review queue, labeled with the date they will publish. They were previously missing from it entirely.
  • Fixed: A post that reaches its scheduled time while you are still editing now says so and updates its badge, instead of leaving a "Scheduled" label on a post that is already live.
  • Fixed: With scheduling turned off, an already-scheduled post can still be cancelled — and no longer offers to "update" a schedule it would in fact publish immediately.
  • Changed: The publish button now names what it will do — Approve & Publish, Approve & Schedule, or Update schedule — and warns you before publishing now would cancel an existing schedule.

v1.6.001

  • Added: Click the featured image to open the same details panel the article's own images use — change where it loads from, choose one from your media library, and set its alt text and caption in one place.
  • Fixed: The publish bar no longer leaves "Approve & Publish" stranded on its own line, and no longer covers the last panel when you scroll to the bottom on a phone or tablet.
  • Fixed: An image's alt text and caption are now saved only when you actually edit them. Opening an article can no longer change how a picture is described everywhere else it is used.
  • Fixed: Replacing the featured image now asks you to describe the new picture, instead of carrying over the description of the one you replaced.
  • Fixed: Pasting a link to a picture that is already in your media library now reuses it, instead of storing a second copy of the same file.
  • Fixed: An image already in your media library that you set by pasting its link now keeps its own description, and you're told that is what happened, instead of your typed description being silently discarded.
  • Fixed: Correcting a description back to its original wording now saves. Previously the change was recognized as "no change" and quietly skipped.
  • Fixed: Saving while an image is still being fetched now says so, instead of appearing to do nothing.
  • Changed: The sign-in screen drops a line of technical wording that meant nothing to a reviewer.

v1.6.000

  • Fixed: the featured image now sits at the top of the review panel instead of below the article, so it is visible without scrolling past a long piece.
  • Added: an Import images checkbox beside the publish button, so you can decide per article whether its borrowed pictures are copied into your media library. The site-wide default is set in Content Pipelines.
  • Added: settings for what comes across with each copied picture — its alt text and title, its caption, a record of where it came from, and optionally the metadata embedded in the file itself.
  • Added: a Revert images button that puts an article's pictures back on the links they came from. Nothing is removed from your media library, and an image someone has changed by hand since it was copied is left alone rather than overwritten. Reverting also switches Import images off for that article, so the next publish leaves the links alone.
  • Improved: an article with more pictures than one publish can safely fetch now finishes copying them in the background over the following minutes.
  • Fixed: copied images are recorded under your own site address rather than a content-delivery network's, so they keep working if that network is ever changed or switched off.
  • Fixed: changing an image's link and clicking Apply now saves straight away instead of waiting for the next automatic save.
  • Fixed: uninstalling the plugin now removes every background job it had scheduled. Jobs created for a specific article — social posts and answer-engine file rebuilds among them — were left behind and kept firing at a plugin that was no longer there.

v1.5.152

  • Fixed: on a phone or a small tablet the review portal showed all of the review panels above the article. The title and article now come first, with feedback, reviewers, SEO, GEO and categories underneath.
  • Changed: feedback and reviewers now sit at the top of the review panels, above SEO, GEO and categories.
  • Fixed: tables and other formatting in the article body are now shown the way they will look on the published site, instead of falling back to plain browser defaults.
  • Added: click an image in the article to see and change the link it loads from, and import it into your media library.
  • Added: publishing now imports any article images that are still hosted elsewhere, so a published article no longer depends on another site keeping the file. An image that cannot be fetched is left as a link rather than blocking the publish.
  • Fixed: an image that is repointed or imported no longer keeps loading the old file from its previous host.
  • Fixed: backslashes in an article — a Windows file path, or a regular expression in a code block — are no longer stripped when the article is saved. Previously each save removed another one until they were gone.

v1.5.151

  • Fixed: the content calendar in the review portal sat off to the left instead of lining up with the rest of the page.
  • Fixed: the admin screens now respect your device's "reduce motion" setting. Panels, cards and dialogs no longer fade and slide in, and status dots stop pulsing, when that setting is on. Loading spinners keep turning, since a frozen spinner looks like something has stalled.
  • Fixed: the SyteOps admin pages were falling back to the default WordPress page background instead of the plugin's own.
  • Fixed: the calendar now uses your site's timezone to decide which day is "today", so reviewers in other parts of the world see the same highlighted day and the calendar opens on the right month.
  • Fixed: when a post cannot be rescheduled, the calendar in the admin now says why — for example that the time must be in the future — instead of only "Reschedule failed".
  • Improved: the calendar now works properly on a tablet — on a smaller tablet screen the unscheduled drafts list moves below the month so the grid keeps its full width, and on any touchscreen buttons and posts are large enough to tap accurately.
  • Improved: on a phone the calendar shows a compact month overview with a dot on each day that has something scheduled, plus a schedule list underneath giving every post's time, title and status, and your unscheduled drafts. The date picker opens from the bottom of the screen.
  • Changed: the calendar description now says you can select a post to pick a new date. Dragging needs a mouse, so it no longer reads as the only way to reschedule.

v1.5.150

  • Added: a Save button on the SEO, GEO and Categories & tags panels in the review portal, so work generated by AI in those panels can be saved without scrolling to the action bar. It saves everything on the page, exactly as shown.
  • Fixed: text written by the AI assists — a drafted answer, a generated meta description, suggested categories and tags — is now saved within a moment of being generated instead of waiting for the background save.
  • Fixed: an edit made while a save was already running could sit unsaved until you happened to type again.
  • Changed: the content calendar is easier to read. The month now draws instantly instead of leaving a blank space while it loads, the days form one clean grid rather than a field of separate boxes, today is marked on the date itself, and the unscheduled-drafts list shows a count and says so when it is empty.
  • Fixed: signing in to the review portal when your security plugin asks for a two-factor code or emails a device-verification link no longer reports it as a wrong username or password. You are taken to the standard sign-in screen so that plugin can tell you what it needs.
  • Fixed: the admin screens, emails and documentation now use US spelling throughout. A few British spellings had crept into on-screen text.

v1.5.149

  • Added: the answer-engine settings now tell you when publishing for AI is switched off, with a Turn on button right there on the card. Previously every option on that page could be changed and saved while nothing was actually being published, and nothing on screen explained why.

v1.5.148

  • Added: a "Content types" setting on the Review Portal settings chooses which content your AI files describe — llms.txt, the questions feed, FAQ structured data and the LLMS Amplifier index.
  • Changed: that setting starts at Posts only. Pages were previously included automatically, but they are site furniture rather than content an answer engine can cite. Tick Pages there if you want them back.
  • Fixed: changing what your AI files cover, or which questions they publish, now rebuilds those files straight away. Previously only the LLMS Amplifier files were rebuilt, so a site generating llms.txt itself kept serving the old content until the next day's scheduled rebuild.
  • Fixed: with LLMS Amplifier generating your AI files, publishing a content type Amplifier covers but SyteOps did not — a custom post type, say — rebuilt nothing at all, because SyteOps had already stood Amplifier's own scheduled rebuild down.
  • Added: where LLMS Amplifier runs a separate public front end, SyteOps now says which content types have no address on it, since their entries are published without a link. The warning appears beside the new setting and in Amplifier's own health panel.
  • Fixed: "exclude from llms.txt" on an individual article now holds for every content type LLMS Amplifier publishes, not only the types SyteOps analyzes. Previously, narrowing the content types could quietly bring an excluded page back into the generated files.
  • Fixed: media attachments can no longer end up in your AI files, and a content type stays selected while its plugin is temporarily deactivated instead of being dropped the next time you save the page.

v1.5.147

  • Added: mark an article as a Pillar (cornerstone) in the review portal's GEO panel. A pillar is listed first in your AI index file so it survives the file's size limit, its questions and answers are kept ahead of other articles' when the index has to choose, and when several articles answer the same question the pillar is the one an AI tool is pointed to. It is also marked as cornerstone content in Squirrly SEO.
  • Fixed: editing or approving an article's answers after it was already published never reached your AI files, because nothing rebuilt them until some unrelated article was published. Those files now rebuild on their own shortly after such a change, batched so a run of edits produces one rebuild rather than one per save.
  • Fixed: publishing a page rebuilt nothing either — and neither did unpublishing, trashing or deleting an article, so a retracted article's details stayed in your AI files indefinitely. All of those now rebuild the files on their own.
  • Fixed: the two options that publish into the LLMS Amplifier index quietly did nothing when Amplifier's own JSON index file was switched off. SyteOps now says so, both beside the options and in Amplifier's own health panel.

v1.5.146

  • Added: the review portal's "Signed in as" area is now a menu. Hover it (or tap it on a phone) for a Sign out option, so a reviewer on a shared or borrowed computer can end their session without leaving the portal.
  • Fixed: an article you excluded from llms.txt stayed out of llms.txt itself but reappeared in the LLMS Amplifier index file, its knowledge bundle, and any per-section files. The exclusion now applies to every file Amplifier produces, as intended.

v1.5.145

  • Fixed: the passkey button on the review portal sign-in card could refuse to sign anyone in, showing "A request is already pending." Pressing it in the first seconds after the card appeared collided with the passkey plugin's own background sign-in check, which starts a moment later. The portal now holds that check back as soon as a reviewer presses the button.

v1.5.144

  • Fixed: the LLMS Amplifier FAQ publishing feature added in the previous release was never actually switched on. The code that publishes your reviewed questions and answers into the Amplifier index file was written but never loaded, so it had no effect on any site. It is now active.
  • Added: company details now include country, a short business description, entity type, and business hours, plus LinkedIn and X profile links — all synced to FlowMattic alongside your existing company fields.
  • Added: your business profile (name, description, entity type, logo, address, social links, and hours) can now be published into the LLMS Amplifier AI index, so AI agents reading it learn who the business is. Turn it on or off under Content Pipelines, in Review Portal settings; contact emails and phone numbers are never published.
  • Added: business identity can now be read and updated through the secure control-plane API used by connected automation tools.
  • Improved: old company automation variables retire safely. One still referenced by a workflow stays available until that workflow is updated, and a notice lists exactly which workflows are still using it.
  • Fixed: the company postal code field now accepts international formats such as "SW1A 1AA" or "K1A 0B1". Previously anything other than a US ZIP code was silently erased when you saved, which mattered as soon as the new country field invited non-US addresses.

v1.5.143

  • Added: the questions and answers your articles record can now be published into the LLMS Amplifier index file, so AI agents reading it find the answers you have already written and approved. The option appears only where that plugin is installed, and any FAQ entries you uploaded yourself are kept and take precedence.
  • Fixed: an article you excluded from llms.txt stayed excluded only while SyteOps generated that file. With LLMS Amplifier generating it instead, the article reappeared — your exclusion silently stopped applying. It now applies to every file Amplifier produces, including its new knowledge bundle.
  • Fixed: with recent versions of LLMS Amplifier, a successful file regeneration was recorded as a failure in the pipeline history, so the step always looked broken even when it worked.
  • Added: unchecked AI-written answers are now reported in Amplifier's own health panel, where you look before regenerating your files.

v1.5.142

  • Fixed: the passkey button on the review portal still did nothing after the previous release. The fix shipped last release looked for the passkey plugin's code under a name that does not exist on a real install, so the button was left with nothing behind it.

v1.5.141

  • Added: the review portal sign-in card now has a username and password form on the card itself, so signing in no longer sends you to the WordPress login screen and back.
  • Fixed: the passkey sign-in button on the review portal did nothing, because the portal never loaded the passkey plugin's script.
  • Fixed: the sign-in card offered two passkey buttons that did the same job. There is now one.

v1.5.140

  • Fixed: module updates could not be installed. The trusted signing key set in the site configuration file was ignored unless written in one specific format, so sites set up the documented way refused every module package as untrusted.
  • Fixed: an installed module whose internal name differs from its package name was treated as a brand-new install, which skipped the safeguard that stops an older package replacing a newer one.
  • Fixed: a licensing server could not see its own published module updates, because it never receives the update list it publishes to every other site. It now reads its own copy.

v1.5.139

  • Added: reviewers can now sign in with a passkey without leaving the review page. The passkey prompt appears on the sign-in card itself instead of sending them to the WordPress login screen and back. The ordinary sign-in button is still there and still works, so nobody is ever left without a way in.

v1.5.138

  • Added: an "Open in portal" action on each processed article in the pipeline run history, so an article can be opened for review straight from the run that produced it instead of hunting for it in the posts list. It appears only for articles the portal can actually open, and the review link is issued when you click it rather than when the page loads.

v1.5.137

  • Internal improvements and maintenance.

v1.5.136

  • Fixed: three administrative actions in the licensing module refused unauthorized users but replied with a success status, so monitoring and firewall rules saw a normal page rather than a refusal. They now return the correct refused status. Also: internal development checks gained sweeps that verify every administrative endpoint is capability-checked and every refusal returns the right status.

v1.5.135

  • Internal maintenance: the Review Portal's stored settings were renamed behind the scenes so they match the rest of Content Pipelines. Your settings are carried across automatically as soon as the update is in place — nothing to reconfigure, and nothing changes on screen.

v1.5.134

  • Fixed: three places still named a product that is no longer used — the heading of the AI provider dialog for the shared content area, a review-portal message shown when no AI provider is set, and the webhook-secret hint shown when adding a content source.
  • Internal reorganization and maintenance. No settings, stored data or web addresses changed.

v1.5.133

  • Changed: the review portal now offers reviewers a passkey sign-in rather than requiring one. A "Sign in with a passkey" button appears beside the usual sign-in wherever the Secure Passkeys plugin is active. Signing in with a password works exactly as before, so no reviewer — and no administrator — can be locked out of the portal. This replaces the requirement introduced in the previous release.
  • Added: the record kept against each article notes whether the person was signed in with a passkey, so you can see how an edit or a publish was authenticated.

v1.5.132

  • Added: the review portal can now require reviewers to sign in with a passkey instead of a password. This is switched on automatically wherever the Secure Passkeys plugin is active, so reviewers already signed in with a password are asked to sign in again with their passkey. The portal tells them exactly what to do, and anyone without a passkey is shown where to register one. Administrators are included. Turn it off under Content Pipelines → Review Portal if you are not ready for it.
  • Fixed: the "AI answers reviewed" pre-publish requirement could be switched off but never saved — it reported success and then silently switched itself back on.

v1.5.131

  • Changed: which sites may receive an internal-only module is now managed through the control API instead of a server configuration file, so adding or removing a site no longer requires editing configuration by hand

v1.5.130

  • Changed: a module previously restricted to specific sites is distributed normally rather than as internal-only, so every site that runs it continues to receive updates

v1.5.129

  • Changed: modules marked internal are no longer published at all — they are delivered only to the specific sites entitled to them, over the existing secure licensing connection
  • Changed: sites that are not entitled never see the module listed and never receive its files

v1.5.128

  • Changed: the list of available modules is no longer published to a public web address. It is delivered to each site over the existing secure licensing connection instead, so your module names and versions are not readable by anyone who finds the URL
  • Note: module packages themselves were already encrypted and signed — that has not changed

v1.5.127

  • Added: the reviewer queue page now lists live articles you can edit, alongside the drafts awaiting your review
  • Added: each live row shows how many of its questions have answers, and warns when published answers have not been signed off by a person
  • Added: a link to view the live article that is excluded from your site analytics
  • Added: an "Open review portal" link in the toolbar while editing a post, so you no longer have to hover a row in the posts list to find it
  • Added: a link to your review queue from the pipeline run history
  • Improved: the review portal action now appears for the content types your content sources produce, not just posts and pages
  • Fixed: the review queue page served stale styling to anyone who had opened it before, because its stylesheet was requested without a version

v1.5.126

  • Added: published articles can now be edited in the review portal. The action bar changes to "Save changes", a banner states that the article is live and changes publish immediately, and scheduling is hidden since it cannot apply. Edits to live articles are recorded in the audit log.

v1.5.125

  • Added: click any image in the review portal to edit its alt text and caption. Alt text is what screen readers announce and what AI search engines read, and it previously could only be changed by editing the HTML by hand.

v1.5.124

  • Fixed: images in the review preview now have proper space above and below them, and the option to hide alt text on broken images now actually takes effect. Both were written against a container name the portal does not use, so neither had any visible effect.

v1.5.123

  • Fixed: re-running the GEO analysis now fills in answers for questions that were left blank. Previously it only asked for new questions, so an article with unanswered questions stayed that way no matter how many times it was analyzed.
  • Fixed: articles whose images were damaged by an earlier save — showing a broken image, or the same picture twice — now repair themselves when opened in the review portal.
  • Fixed: expanding the questions on a pipeline run no longer pushes the rest of that row out of line.
  • Fixed: the calendar button now explains why it cannot open instead of doing nothing.
  • Improved: images in the review preview now have space above and below them.

v1.5.122

  • Added: the pipeline run history now shows the questions and answers recorded for each article, with a count so an article that produced questions but no answers is obvious at a glance.
  • Improved: the Review Portal settings are grouped by how often you use them — Workflow, What gets sent and published, and Setup — instead of one long list. Setup starts collapsed, since branding and AI providers are configured once and then left alone.

v1.5.121

  • Added: links to articles sent to reviewers and authors can now carry your site's internal-traffic parameter, so editorial visits are excluded from analytics. Links shown to readers are never tagged.
  • Added: a setting for how many questions the GEO analysis should ask for (default 8), and the AI is now told not to return the same question twice in different words.
  • Added: an option to hide alt text on images that fail to load, so editorial alt copy no longer appears as paragraph text. The alt text itself is kept for screen readers and search engines.
  • Fixed: the review portal served stale styles and scripts to anyone who had opened it before, because its files were requested without a version. Reviewers were seeing an old version of the editor no matter how many updates were installed.
  • Fixed: the "Sign in & open editor" button on the review portal had dark text on a dark background, making it unreadable.
  • Improved: requests to AI providers now identify this plugin, so usage shows up under a name instead of "App Unknown" in provider dashboards.

v1.5.120

  • Fixed: the "Resend email" action in the pipeline run history returned a server error instead of sending. It now emails everyone on the article's reviewer list, and says plainly when an article has no reviewers with a usable email address rather than reporting a delivery failure.

v1.5.119

  • Added: a field to store an Erlin AI key, so sites that use Erlin can keep their key alongside the other service credentials.

v1.5.118

  • Fixed: the review portal's answer editor — drafting an answer while adding or removing another row could leave the answer invisible, and re-running the analysis from the pre-publish checklist could discard answers you had just typed.
  • Fixed: drafting a new answer with AI now clears the "I have reviewed these answers" confirmation, so freshly written text is never published as already-checked.
  • Fixed: the confirmation is now only accepted from reviewers who are allowed to edit this area, so it cannot be bypassed.

v1.5.117

  • Added: the questions and answers published for AI search engines are now shown in the review portal, where they can be edited, added to, or removed before the article goes live.
  • Added: a "Draft answer" button writes a short answer to any question straight from the article. If the article genuinely does not answer it, it says so instead of inventing one.
  • Changed: re-running the GEO analysis no longer replaces your work. It keeps the wording and answers you have written, fills in only the blanks, and adds anything new it finds.
  • Added: Approve & Publish now asks someone to confirm they have checked the AI-written answers, since those answers are published to search engines. Skipped automatically when nothing publishes answers, or when an article has none.
  • Fixed: llms.txt and the questions feed were served with a "not found" status, which meant AI crawlers discarded them.
  • Fixed: only public content types can now appear in llms.txt and the questions feed.

v1.5.116

  • Added: the questions each article answers — captured by the GEO analysis — are now published where AI answer engines will read them: under each article's entry in llms.txt, in a new site-wide "Questions this site answers" section, as an optional FAQ structured-data block on the article itself, and as a machine-readable feed at /llms-questions.json.
  • Added: each of the four answer-engine surfaces has its own switch under Content Pipelines, on the Review Portal settings. FAQ structured data starts switched off, because adding a second FAQ block to a page that already has one is invalid.
  • Changed: the GEO analysis now records a short answer alongside every question it finds, so the published surfaces carry the answer an engine can actually quote — not just the question.
  • Fixed: the pre-publish requirement switches (GEO analysis, up-to-date GEO analysis, meta description, categories and tags) could be moved but never saved, so every requirement silently stayed at its default.

v1.5.114

  • Added: a "Resend email" action on each processed article in the pipeline run history, for when a review notification was missed or a reviewer was added after the article arrived.
  • Fixed: a held pipeline run no longer displays as "Post #0" — it now says plainly that no post was created and why.
  • Fixed: a held run stops offering "Reprocess" once its article has already been processed, or once a newer article has replaced the stored copy. It shows "Superseded" instead.

v1.5.113

  • Fixed: article images and the featured image no longer appear blank in the review portal on sites that use image lazy-loading or an image CDN — and those blank placeholders can no longer be saved into the article, which previously added a broken image and a duplicate on every save.
  • Fixed: the image picker in the review portal now renders with its normal styling instead of appearing unformatted.
  • Changed: review notification emails now offer two buttons — "Edit/View this article" and "See all my reviews" — instead of one button and a text link.
  • Added: Approve & Publish now checks an article is finished before it can go live, listing anything outstanding with one-click buttons to complete it. Each requirement — GEO analysis, an up-to-date GEO analysis, a meta description, and categories and tags — can be switched off individually on the Review Portal settings, and any requirement the reviewer cannot act on is skipped automatically.

v1.5.112

  • Fixed: an article delivered without a usable title or body is now held for review instead of creating a blank draft (or, when the article carries no id, a duplicate half-empty one) — while a source that maps only custom fields keeps publishing normally, with each article kept separate instead of overwriting one post.
  • Fixed: a delivery that carries only part of an article no longer wipes the other half of the SEO description/keyword pair, no longer reassigns the post to a different author (which could remove the real author's access to their own draft in the review portal), and no longer sends a "draft updated" email for content that did not actually change.
  • Improved: "Reprocess last payload" now tells you what happened on both the source card and the run history — including when nothing was written because the matching post is already published — instead of refreshing the page before you can read it.

v1.5.111

  • Fixed: an incoming article that only carries some of its mapped fields no longer wipes the rest of an existing draft — fields the delivery didn't include keep the values already on the post (including the reviewer's edits).
  • Fixed: a delivery that carries neither an article id nor a title or body is now held for review instead of repeatedly overwriting one draft.
  • Fixed: "Reprocess last payload" no longer pauses a live content source or emails a "source held" alert, and no longer sends a duplicate article to a connected workflow when the draft already exists; it also now says plainly when nothing changed because the matching post is already published.

v1.5.110

  • Fixed: a content source's live field mapping is no longer paused by a single field that happens to be missing from one delivery — only a delivery that doesn't match the mapping at all is held for review.
  • Added: a "Reprocess last payload" action — on a content source's card, right after approving a fixed mapping, and on held rows in the pipeline run history — replays the last captured article through the mapping to create its draft without waiting for the sending app to resend it.
  • Improved: held pipeline runs now show an honest amber "Held" status instead of a misleading "OK," and can be filtered on their own; the "source held" alert email now points you straight at Reprocess last payload.
  • Added: a review queue page listing every article awaiting a reviewer's review, linked from every review notification email — reviewers see only their own assigned drafts (administrators see everything), and once signed in a reviewer is never blocked by an expired review link.

v1.5.109

  • Fixed: status toasts built from admin notices now render with proper spacing and separators — nested notice content no longer runs together as one unpunctuated line, and hidden notice states are no longer included in the toast text

v1.5.108

  • Fixed: placeholder example text now renders exactly as written — "e.g." no longer displays as "E.G." and email or selector examples are no longer title-cased
  • Fixed: the Fetch Models button no longer stays stuck on "Fetching..." after a retried fetch completes
  • Improved: consistent spacing around the AI model and max-tokens controls across all AI settings areas

v1.5.107

  • Fixed: the recipe-card border and card styling shipped in the previous release now actually display — the card frame was referencing a style name that no longer existed after an earlier styling isolation pass, leaving recipe cards without their border, rounded corners, and grid layout.

v1.5.106

  • Improved: pipeline recipe cards now have a thin but clearly visible border, so each recipe stands out from the page instead of blending into the background. Added: a Reply-To address for portal notification emails — replies to reviewer-facing emails can now go to a person (such as your editor) instead of the site's sending address. The same option now exists for lead report emails: a Reply-To address on the email reports settings so replies to lead alerts and summaries reach the right person. Refreshed the email footer tagline example text.

v1.5.105

  • Added: a complete Email notifications settings area for the Review Portal (Content Pipelines tab). Four independent switches control every automated email — New draft received, Draft updated by source (sent only when a re-delivered article actually changed), Published or scheduled, and a Source held alert that tells the site admin when a live content source stops matching its approved field mapping. Review emails gained a details table (source, article date, status) and every email now closes with a dark branded footer with optional tagline and click-to-call phone. The run history now records each email's outcome (sent, skipped and why, or failed), so a missing notification is never a mystery.

v1.5.104

  • Fixed: all admin screens are now fully isolated from styling loaded by other installed plugins and themes. Every control the plugin renders — cards, buttons, badges, pills, tags, toggles, modals and filters — now uses its own private style names, so another plugin bundling a common CSS framework (such as Bootstrap) can no longer distort the SyteOps admin interface.

v1.5.103

  • Fixed: the pipeline run-history filter controls could be distorted by styling from other installed plugins or themes — most visibly the "Source" label crowding against the Status pills with no space between them. The filter controls are now fully isolated from outside styles, so their spacing stays even everywhere.

v1.5.102

  • Fixed: the filter pills on the pipeline run-history view (Recipe / Status / Source) could show their last label pressed against — or clipped by — the rounded edge of the filter group; every label now renders fully inside its track with clear spacing, at any window size.

v1.5.101

  • Changed: articles arriving from a content source now always get their categories and tags chosen by AI — SyteOps reads each article and picks from your site's existing categories and tags, creating new ones only when nothing fits, so you no longer end up with a brand-new category for every article. Categories and tags can no longer be mapped from the incoming webhook payload, and each source's Target tag is still added to every post so display formatting keeps working.
  • Improved: the dropdowns in the review portal — “Send to a colleague” and the “Publish as” picker in the action bar — are now styled to match the portal’s other fields, with the same border, rounded corners, focus highlight and chevron, instead of the plain browser dropdowns they used before.

v1.5.100

  • Changed: the licensing server can now require the private credential from requests that CLAIM to be one of your own sites. Set which domains count as yours, opt that check in, and a request naming one of them must present the credential — everything else, including every customer activation, is completely unaffected. Also fixed: the warning shown before turning the stricter mode on could never appear, and scoping a customer-facing endpoint applied before warning you.

v1.5.099

  • Fixed: retired and built-in features could linger in the Modules list long after they were removed or folded into the plugin — showing a status and version that no longer meant anything. These leftover entries are now cleaned up automatically.

v1.5.098

  • Fixed: a security issue in the licensing gateway. Requests that referred to a license or customer record by its ID number are now verified to belong to the license key making the request, so one site can no longer read or change another customer's license details by guessing ID numbers. Normal activation, validation and deactivation are unaffected.

v1.5.097

  • Changed: the private credential on requests between your sites and the licensing server is now sent only to the licensing host itself, and the stricter checking mode is applied only to the specific endpoints you opt in — so turning it up can no longer affect customer license activations. Defaults are unchanged and nothing is rejected until you opt an endpoint in.

v1.5.096

  • Changed: requests between your sites and the licensing server now carry a private credential in addition to the existing routing header, so the firewall allow rule can no longer be satisfied by copying a public header. Existing customer integrations are unaffected — the public header keeps working exactly as documented, and the new check starts in a monitor-only mode that rejects nothing.

v1.5.095

  • Changed: FlowMattic's Variables screen no longer shows a "… Setting/Variable" label on every variable this plugin writes — the Description column is left blank by default so the list is easier to scan. A new "Label FlowMattic variables with a description" toggle under Admin > Other Options turns the labels back on. Only these auto-generated labels are added or removed; any description you wrote yourself is left untouched. When the labels are switched on, they now carry your own brand name on white-labeled installs.

v1.5.094

  • Improved: Workflows imported into FlowMattic — from a template package or from a connected server — now carry FlowMattic's full native workflow settings, so an imported workflow opens in the current workflow builder and appears under the "All" folder, just like one created directly in FlowMattic.

v1.5.093

  • Changed: SyteOps now supports FlowMattic 7.0. On FlowMattic's redesigned Variables screen your sensitive values (API keys, tokens, and secrets) stay hidden instead of appearing in plain text; installing FlowMattic from SyteOps no longer detours you to FlowMattic's own setup wizard; and importing a workflow into FlowMattic now saves correctly. FlowMattic 6.x installs keep working unchanged.

v1.5.092

  • Improved: The "Send to webhook" and "Delete" actions on the leads list are now styled buttons — a brand-colored Send action and a red Delete action — instead of plain text links, making them easier to spot and harder to click by mistake.

v1.5.091

  • Changed: The recommended Cloudflare firewall rule for allowing SyteOps licensing and management requests is now scoped to the plugin's own API path, so a forged request-marker header can no longer be reused to let other traffic bypass your firewall.

v1.5.090

  • Fixed: Lead phone numbers now display in a consistent (NNN) NNN-NNNN format on the leads list and in lead emails, matching the office phone. Masked, international, and unusual numbers are shown unchanged.

v1.5.089

  • Fixed: A form submitted without a tracking cookie now attaches to the visitor's existing lead instead of creating a duplicate, unattributed lead.
  • Fixed: Qualified-lead alerts now honor the same per-goal automation opt-out as new-lead alerts, and no longer re-send when a visitor re-submits the same answers.
  • Fixed: Phone-only (call) leads can now sync their pipeline status to the RingTonic CRM.
  • Fixed: Deleting a lead now fully removes its event history, and lead event counts stay accurate under rapid activity.

v1.5.088

  • Added: "Auto-map with AI" on the leads form-field mapping. It reads a form's fields and suggests which are the name, email, phone, office phone, and message — and proposes named custom fields for the rest — pre-filled for you to review, edit, or remove before saving. Choose which AI provider to use in the new "AI mapping" card on the leads settings screen.

v1.5.087

  • Fixed: On the leads settings, the form-to-lead field mapping controls now render at a consistent, full width, so long form and field names are no longer cut off, and the custom-field row is spaced out instead of cramped.

v1.5.086

  • Added: Map any of your form's fields to a named custom field on the lead — with an optional "sensitive" flag so it follows your privacy setting. Custom fields show on the lead, in the CSV export, in lead emails, and in the outgoing webhook.
  • Added: Pull contact data from RingTonic into the lead. Your originally captured details are preserved; RingTonic's extra and differing fields are added alongside without duplicating what you already have — refreshed automatically on sync or on demand with a "Refresh from RingTonic" button, and included in the outgoing webhook.

v1.5.085

  • Added: An optional office phone field when mapping a website form to leads — it shows on the Leads list, in the CSV export, and in lead emails alongside the other contact details.
  • Added: The outgoing lead webhook payload now includes the lead's contact details (name, email, phone, and office phone), each sent exactly as it is stored under your privacy setting.
  • Added: A one-click Backfill that applies your saved form mappings to existing leads, filling in contact details from each form's stored submissions. It matches submissions to leads by contact identity, never overwrites anything already set, and skips form tools that don't store submissions (Contact Form 7, WPForms Lite).

v1.5.084

  • Added: The RingTonic CRM API key can now be set headlessly (encrypted, integration auto-enabled) — managed site launches push it automatically when the RingTonic MCP is selected.

v1.5.083

  • Fixed: Form-selection dropdowns now list your forms on sites where they previously appeared empty even though forms existed.

v1.5.082

  • Added: The RingTonic integration now displays its logo on the Integrations tab.

v1.5.081

  • Changed: The RingTonic API key field on the Leads settings screen now appears only when the RingTonic integration is turned on.
  • Added: The RingTonic integration tile links directly to its API key field once the integration is enabled.

v1.5.080

  • Added: The lead qualification form now honors Global Privacy Control. It still records what a visitor submits, but leaves out the tracking identifiers when a visitor's browser asks not to be tracked.
  • Changed: The leads list is redesigned to show each lead's name, how it was received, email, and phone — with a status you can set right from the list (New, Contacted, Qualified, Unqualified, Customer).
  • Added: Lead export — send a single lead to your automation webhook, or download the full list.
  • Added: RingTonic integration — keep a lead's status in sync with the RingTonic call-tracking CRM.

v1.5.079

  • Added: Lead tracking is now consent-aware. When the WP Full Picture integration is enabled, the tracker follows Full Picture's consent choices and only records a lead — and sets its cookies / stores first-touch attribution — once analytics consent is granted. Global Privacy Control (GPC) is always honored, and visitors in the EU/EEA/UK are treated as opt-in (nothing stored or sent until they consent). The US and the rest of the world remain opt-out unless GPC is set.
  • Added: The cookies the leads tracker sets are now declared (name, lifetime, purpose), so your consent tool can register them.

v1.5.078

  • Fixed: The Form Field Mapping tool on the Leads settings page now lists your Fluent Forms forms correctly. Previously the form dropdown could appear empty even when forms existed.

v1.5.077

  • Added: A Form Field Mapping tool on the Leads settings page — pick a form plugin and a form, then map its fields to a lead's name, email, phone, and message with no code. Works with Fluent Forms, Gravity Forms, WPForms, and Contact Form 7.
  • Added: The privacy control for how contact details are stored on leads (full, masked, or off) is now set directly on the Leads settings page.

v1.5.076

  • Added: Lead records now capture the contact name, email, phone, first-touch attribution, and the message submitted through a connected form, so each lead is a complete record on its own.
  • Added: A privacy control for how personal data on lead records is stored — keep it in full, store a masked version, or don't store it at all. Personal data is never written to the tamper-evident activity log.

v1.5.075

  • Improved: Removed a redundant "Edit settings" link from the AI Search Discovery card on the Content Pipelines dashboard. The card's on/off switch and engine choice already live on the card itself, so the link had nowhere new to go.
  • Fixed: A large email logo no longer stops automated report and digest emails from sending. An oversized image is kept as a linked image instead of being embedded in the message, and the email logo stays small even when a resized version isn't available.

v1.5.074

  • Changed: The AI Search Discovery (llms.txt) engine is now either/or — switch between the built-in generator and the LLMS Amplifier integration from one place on the Content Pipelines tab. Turning LLMS Amplifier on automatically sets it to manual updates and turns AI Search Discovery on; turning it off reverts to the built-in generator, so AI Search Discovery is never left off.
  • Changed: The AI Search Discovery on/off switch and engine choice, and the Social Publishing on/off switch, now live together with their other settings on the Content Pipelines tab instead of being scattered across separate settings screens.

v1.5.073

  • Improved: The content calendar's "draft" status indicator now meets accessibility contrast standards, and rescheduling reports clearer, more accurate errors.

v1.5.072

  • Fixed: Scheduled banners now display and report correctly across a daylight-saving-time change. Previously the banner would switch over at the right moment, but its on-screen visibility and the admin status pill could be off by an hour on sites that observe daylight saving.
  • Fixed: Choosing a clock time that doesn't exist on the spring-forward night (when clocks jump ahead) now moves the schedule forward past the skipped hour, the way calendars normally handle it.
  • Improved: The banner "Now", "Today", and "Tomorrow" quick-set buttons now fill in your site's local time instead of the time on whatever computer you're using.

v1.5.071

  • Fixed: Scheduled social posts now fire at the intended time in your site's timezone, instead of the timezone of whoever's browser was used to schedule them.
  • Fixed: Banner activation and deactivation times are now read in your site's timezone, so a scheduled banner no longer switches on or off early (or late) on sites that aren't set to UTC.

v1.5.070

  • Fixed: Scheduled and rescheduled times now use your site's timezone instead of the timezone of whoever's browser is being used, so a post set for "9:00 AM" goes live at 9:00 AM site time no matter where the editor is. This applies to the calendar, the Publish schedule control, and social scheduling.
  • Improved: Calendar text — post times and out-of-month day numbers — is now easier to read, meeting accessibility contrast standards.
  • Changed: Moving an already-scheduled post now respects the same publish permissions as scheduling a draft, so only people allowed to publish can change when a scheduled post goes live.
  • Fixed: Dragging a post scheduled for exactly midnight no longer resets its time, and the calendar no longer holds on to memory as you move between months.

v1.5.069

  • Added: An editorial calendar showing your recent, draft, scheduled, and published posts, in both the Content Pipelines area and the review portal. Drag a post to a new day — or pick an exact date and time — to reschedule it, and drag an unscheduled draft onto a day to schedule it. You can only move posts you're allowed to edit, and scheduling a draft needs permission to publish.

v1.5.068

  • Fixed: The content pipeline activity filters no longer cut off their last option (such as "Skipped"). When space is tight a filter group now wraps to the next row instead of being squeezed and clipped.

v1.5.067

  • Changed: Renamed the content pipeline activity "Pipeline" source filter (and the matching per-row tag) to "Direct" so it's easier to tell apart from your content-source filters.

v1.5.066

  • Improved: Security hardening across admin screens with better escaping of displayed data and clearer error messages when requests fail.
  • Fixed: Import preview now surfaces per-item conflicts so you can choose to skip or overwrite each one.

v1.5.065

  • Internal improvements and maintenance.

v1.5.064

  • Improved: Internal cleanup removing outdated code left over from retired modules; error logging now follows the plugin's logging system.

v1.5.063

  • Improved: Admin screen requests now use a unified security check with clearer permission error messages.
  • Fixed: Configuration import and backup restore now report file read or write problems instead of failing silently.

v1.5.062

  • Improved: Uninstalling the plugin now removes additional stored data (internal tables, update-checker state, scheduled sync tasks, and the backup folder) for a cleaner removal.
  • Fixed: Debug logging now follows the plugin's own debug mode setting, and module activation logs are written to per-module log files.

v1.5.061

  • Fixed: The Content Pipelines screen no longer appears unstyled when opened by clicking its tab — it now displays correctly without needing a page refresh.

v1.5.060

  • Improved: Licensing credentials saved from the server configuration screens are now encrypted at rest, matching how they are stored when saved from the settings form.
  • Fixed: Registry import preview and conflict lists render safely regardless of imported tab names, and REST log page permission errors now return the correct HTTP status.

v1.5.059

  • Fixed: Minor admin wording polish — a punctuation fix on the setup-status notice and removal of a redundant explanatory note.

v1.5.058

  • Fixed: A helper label placed right after a button now has proper spacing instead of sitting crammed against it.

v1.5.057

  • Fixed: In the Content Sources editor, the config-variable and custom-field rows now line up in their columns instead of overflowing and overlapping their neighbors.

v1.5.056

  • Fixed: The content source Ingest URL field now always shows the full URL instead of truncating to a narrow box.
  • Changed: Removed a provider-specific shortcut on the Content Sources add-source form — the standard signature-header fields cover the same setup.

v1.5.055

  • Improved: The Cloudflare account ID and zone ID are now hidden on the FlowMattic Variables screen, matching how the Cloudflare API token is already masked there.
  • Fixed: A Cloudflare Zone ID entered on the System/API screen now saves reliably — previously the typed value could be dropped when saving.
  • Fixed: Non-secret System/API identifiers (such as the Cloudflare account and zone IDs) configured through automated (headless) setup now display correctly on the System/API screen instead of as scrambled text.

v1.5.054

  • Fixed: AI model dropdowns now show the full model name instead of truncating to a narrow box.
  • Improved: A visual polish pass across the Content Pipelines admin screens — consistent card depth and titles, tidier spacing and alignment, and the field-mapping payload tree now stays beside the mapping fields while you scroll.

v1.5.053

  • Added: A Setup / Production mode for content pipelines. In Setup mode drafts are still created so you can preview mappings, but runs aren't recorded and nothing is sent out — no reviewer emails, workflow forwards, or social posts — so you can test safely. Switch to Production when you're ready to go live. Note: every site starts in Setup after this update — if yours was already live, open Content Pipelines → Runs and switch to Production to resume recording and sending.
  • Added: A "Clear all run history" button in the Runs view.
  • Fixed: The Review Portal settings view no longer renders blank during setup — the AI provider, branding, and portal settings are available before any content source goes live.
  • Fixed: In Content Sources, the FlowMattic config-variable and custom-field editor tables no longer run off the right edge of the card on a narrow browser window.
  • Improved: Clearer helper text for where the Content AI provider is configured, plus a freshened example in the source config-variable editor.

v1.5.052

  • Added: In the payload mapper, click into a mapping field to get a filterable dropdown of the incoming payload's paths — type to narrow it, arrow keys and Enter to pick — alongside the existing clickable tree.
  • Added: A "Delete all captured payloads" button clears every source's remembered payload in one click.

v1.5.051

  • Added: Visual payload mapper for Content Sources — click a value in a received payload to map its field, while viewing the payload.
  • Added: FlowMattic config variables can now pull a value from each incoming payload (per-article), delivered with the forwarded workflow.
  • Improved: Content Sources remember the last payload each source received, so you can map against exactly what arrived.

v1.5.050

  • Fixed: entering a custom inbound signature header on a content source no longer gets discarded when the header mode is left on "Standard" — the header you type is now saved. Previously this could cause a provider's webhooks (such as ContentPen) to fail verification.
  • Content Sources: a new "Prefill for ContentPen" button sets the correct ContentPen signature header in one click, so ContentPen webhooks verify without manual setup.
  • Content ingest now returns a clearer "Missing signature header" message when a webhook arrives without a signature, making it easier to tell a misconfigured header apart from a mismatched secret.

v1.5.049

  • Content sources can now skip signature verification with a new "None" auth mode, for senders that cannot sign requests — the unguessable ingest URL is the only gate.
  • Content sources can now store a provider-supplied verification secret and a custom signature header name, so webhooks signed with the provider's own key are verified.

v1.5.048

  • Deleting a content source now frees its ingest URL for reuse — recreating a source with the same name reclaims the original ingest URL instead of getting a numbered suffix.

v1.5.047

  • The operator deploy tool now remembers the SyteOps Admin user you pick at its prompt — it writes the resolved id to the env files the next deploy reads, so subsequent deploys stop asking for it. Preset SYTEOPS_ADMIN_USER to skip the prompt entirely.

v1.5.046

  • Added an integration enable|disable <slug> command to the System / API command family, so deployment tooling can toggle a SyteOps integration headlessly — turn an integration on when its plugin is installed or adopted, and off when it is removed.

v1.5.045

  • Retired the standalone ContentPen integration. Everything it did — signed webhook ingest, AI-suggested categories and tags, author matching, target-tag rules, and display cleanup — is now built into Content Sources, and existing ContentPen setups are migrated over automatically.

v1.5.044

  • Content Sources can now match what the ContentPen integration does — AI-suggested categories and tags, author matching, target-tag rules, display cleanup, and a configurable webhook signature header.

v1.5.043

  • System / API — added a Cloudflare Zone ID field (with its FlowMattic sync variable), relabeled the Cloudflare token field to API Token (its option key and FlowMattic variable are unchanged), added copy buttons to all three Cloudflare fields, and widened the System / API set command so it also accepts the five AI-provider API keys (OpenAI, Anthropic, OpenRouter, Gemini, Perplexity).

v1.5.042

  • Fixed the headless System / API WP-CLI setter added in 1.5.041: its --stdin flag was declared unbracketed, which WP-CLI rejected as an invalid synopsis, so the command never ran. It now uses [--stdin] and populates the fields as intended.

v1.5.041

  • Added a headless WP-CLI command to populate System / API variables (such as the AWS IAM keys) from deployment tooling; values are stored encrypted and synced to FlowMattic.

v1.5.040

  • Removed redundant helper text from the AWS credential fields on the System / API tab.

v1.5.039

  • Fixed: scope-limited configuration backups for the Banners and Integrations areas now capture their settings (previously these targeted backups could come out empty).
  • Fixed: variable-set configuration backups can now be restored (they were previously rejected as incomplete).
  • Fixed: license activation now reports a clear product, plan, or email mismatch instead of a generic error, and shows an "activation pending — please try again shortly" message when the store hasn't finished registering your site.

v1.5.038

  • Fixed: full configuration exports now preserve your Integrations module settings (such as the site-code header) — previously that data could be dropped from the exported file.

v1.5.037

  • Added: AWS IAM Access Key and AWS IAM Access Key Secret fields in the AWS SES area of the System / API tab. Both are stored encrypted, sync to FlowMattic as masked variables, and include a copy button for the variable name; the secret can be cleared on save.

v1.5.036

  • Fixed: Sending or scheduling a social post from the posts list now shows a clear, actually-visible confirmation before the dialog closes.
  • Improved: Review portal + scheduling refinements — internal validation and documentation cleanups.

v1.5.035

  • Fixed: The publish-time post type change now only allows the same publishable types offered in the picker, closing a gap where a reviewer could otherwise switch a post to a hidden type.
  • Fixed: Schedule/send error messages in the social compose modal were hidden behind the modal itself.

v1.5.034

  • Added: Schedule a composed social update to send at a specific time, or automatically once the post publishes — with a pending-sends list and cancel option.
  • Added: Choose the post type when publishing a draft from the review portal, instead of always publishing to the type it was created as.

v1.5.033

  • Added: Social Publishing — compose an AI-summarized post in a chosen voice and send it to a webhook (LinkedIn via your automation tool, Slack, or any endpoint), from the review portal or the posts list.

v1.5.032

  • Fixed: The automatic cleanup of leftover files from a removed feature now removes only the plugin's own package folders, never a same-named folder that belongs to another plugin.

v1.5.031

  • Fixed: A removed legacy feature's leftover files could, in rare cases, cause a site error after an update. These are now detected and cleaned up automatically on load.

v1.5.030

  • Internal improvements and maintenance.

v1.5.029

  • Fixed: Removing a content source now also clears the automation configuration variables it created — no leftover variables.
  • Improved: Attribution records are now included in the backup created before the plugin is uninstalled.

v1.5.028

  • Changed: Content Pipelines is now a built-in core feature — no separate module to install or activate; it's available out of the box.

v1.5.027

  • Added: Content Sources can land drafts into any post type or a new custom type you define.
  • Added: Custom fields per source, mapped from incoming data.
  • Added: Per-source FlowMattic config variables and opt-in forwarding to a workflow.

v1.5.026

  • Removed unused legacy internal modules, along with their settings and data-management screens, to simplify the plugin.
  • Internal reliability fixes.

v1.5.025

  • Internal improvements and maintenance.

v1.5.024

  • Improved: Each inbound card on the content pipeline dashboard now shows whether a source is one you added ("Manual source") or the built-in "Integration", so they are easy to tell apart.
  • Improved: A content source's ingest URL is now click-to-copy and sized to fit the address.
  • Fixed: "Finish setup" on a content source card now opens the Content Sources panel instead of the activity view.

v1.5.023

  • Improved: The "Enable modules after installation" switch now remembers whether you left it on or off, rather than resetting each time the page loads. It remains off by default.

v1.5.022

  • Fixed: Naming a content source "ContentPen" or "Pipeline" no longer merges its activity with the built-in source of the same name — each keeps its own dashboard card, filter pill, and stats.
  • Improved: The pipeline activity list can now be filtered to just the built-in ContentPen integration's events with a dedicated Source filter pill.

v1.5.021

  • Improved: The pipeline activity dashboard now shows the built-in ContentPen integration's status (when it's in use) alongside your registered content sources.

v1.5.020

  • Fixed: On the pipeline activity dashboard, the per-content-source filter now filters the activity list correctly (previously it had no effect for a custom source).

v1.5.019

  • Improved: The pipeline dashboard now shows a card and filter for each content source you've registered (by its chosen name and live status) instead of a single fixed source.

v1.5.018

  • Improved: Pick a content source's default author from a dropdown of WordPress users (by name) instead of typing a numeric user ID.

v1.5.017

  • Improved: Cleaner spacing and layout on the content sources screen. Each source's inbound webhook is automatically allowed through the REST API restriction, with no manual whitelisting needed.

v1.5.016

  • Improved: Re-sending content no longer overwrites a post a reviewer has already published (each source can opt into always-overwrite), repeat deliveries reuse the existing featured image instead of re-downloading it, and reviewers are notified once when a draft is created rather than on every delivery.

v1.5.015

  • Fixed: Imported content keeps its featured-image alt text and handles original publish dates reliably; a source whose field mapping is incomplete now holds content for review instead of creating blank drafts.

v1.5.014

  • Added: Register external apps as content sources that send content into the review portal, with AI-assisted field mapping and a secure webhook URL for each source.

v1.5.013

  • Added: Reviewer editing permissions — limit which parts of a shared review link each reviewer type can change (view-only areas, existing-terms-only categories & tags), with per-user overrides. Admins are never restricted.

v1.5.010

  • Fixed: Further review portal polish — the header, action bar, and side panels resize cleanly on narrow screens, long names and tags no longer overflow their columns, and the read-only preview banner no longer hides the header on scroll.

v1.5.009

  • Fixed: Review portal display — the brand logo no longer clips, large featured images are scaled to a tidy preview, article bodies wrap correctly instead of overflowing, and the editor uses more of the available width.

v1.5.008

  • Added: An Edit in WordPress link in the review portal opens the full block editor in a new tab.
  • Added: Open the secure review portal for any post straight from the Posts or Pages list.
  • Improved: The in-admin portal preview opens larger and adds clear Full screen and Open in new tab buttons.

Operator Tools — 2026-06-23

Added

  • Deploy tool: --avada / --no-avada toggle to reset Avada/Fusion caches after deploy (default on; no-op on non-Avada sites).

v1.5.007

  • Security: The portal preview is now restricted to administrators and sends stricter framing and referrer headers.
  • Fixed: Reliability improvements to the portal preview window and the Content Pipelines navigation tabs.

v1.5.006

  • Added: A "Preview Portal" button on the Review Portal branding settings opens a full read-only preview of the portal — with your current branding — right inside the admin, so you can see how it looks before sending a review link.

v1.5.005

  • Improved: The Review Portal branding settings now show a single save button and a clearer "Saved" confirmation.
  • Improved: When you enable branding override, the color fields now start from your current branding instead of blank defaults.

v1.5.004

  • Fixed: The Review Portal branding preview now shows your actual logo from General → Branding instead of a placeholder initial.

v1.5.003

  • Fixed: The navigation tabs on the Content Pipelines screen (Runs, Recipes, Review Portal) now switch views correctly when clicked.

v1.5.002

  • Improved: The review-and-publish portal now activates only when Content Pipelines is enabled; with it turned off, incoming content is handed to your configured webhook automation instead.

v1.5.001

  • Fixed: Switching between Content Pipelines views (Runs, Recipes, Review Portal) now tabs over instantly instead of reloading the page.

v1.5.000

  • Added: Live preview — reviewers can open a post exactly as it will appear on your site before publishing.
  • Added: AI-assisted meta description generation in the review and publish workflow.
  • Added: A dedicated SEO title field that stays in sync with your SEO plugin, with a clean automatic default.
  • Added: Publish notifications — the author and reviewers receive a branded email when a post is published or scheduled.
  • Added: Secondary keywords are captured from generated content and editable while reviewing.
  • Improved: The content editor toolbar gains numbered lists, underline, remove-link, clear-formatting, and undo/redo.
  • Improved: SEO titles now use the clean post title; the meta description is no longer appended to the page title.

v1.4.016

  • Content Pipelines module: New module that automatically runs cross-linking, SEO, and llms.txt stages when posts are published. Manage recipes and view run history from the new Content Pipelines tab.
  • Improved: Primary action buttons now use your configured brand color instead of the default blue.
  • Improved: Button icons are now vertically centered with their labels throughout the admin.

v1.4.015

  • Fixed: Team member variables no longer stop updating in connected workflows after certain background syncs.
  • Fixed: Forcing a variable re-sync now reliably rebuilds all team member variables instead of clearing them.

v1.4.014

  • Internal improvements and maintenance.

v1.4.013

  • Improved: Dialog headers now match your configured brand colors.
  • Improved: The user quick-navigation pills are restyled with larger, clearer profile pictures.

v1.4.012

  • Improved: The fill-in box for adding a user now appears on the Users tab in settings as well, not only on the Roles & Users page.
  • Fixed: The add-user fill-in box can be closed with the Escape key.

v1.4.011

  • Added: When adding a user, a quick fill-in form lets you pre-populate their details (name, email, company, and phone) before the user is created.
  • Improved: The lock/unlock button icon is now properly aligned with its label.

v1.4.010

  • Fixed: Creating a new role no longer fails with a blank page or error.
  • Fixed: Adding a new user no longer fails with a server error.
  • Fixed: Owner, technical, and marketing contact badges display on the Users tab again.
  • Improved: The role identifier (slug) field now allows underscores, removes a trailing plural "s" automatically, and shows clearer guidance on which characters are allowed.
  • Improved: Minor admin interface alignment fixes.

v1.4.009

  • Fixed: Activation checkboxes in the FlowMattic MCP Server settings now show their checkmark when enabled, instead of appearing blank even when the option is switched on.

v1.4.008

  • Fixed: When FlowMattic is already installed but not active, setup now activates the existing copy in place instead of triggering a fresh license-gated download, so connecting FlowMattic completes reliably.

v1.4.006

  • Added: Block public access to wp-content/debug.log — SyteOps maintains a deny rule in wp-content/.htaccess so the WordPress debug log can't be fetched directly over HTTP (REST API settings → User Enumeration Defense, default on).

v1.4.005

  • Fixed: WordPress admin list screens (Orders, Products, Pages — any post-type list) no longer show a critical error on sites where the Leads module is not active.
  • Fixed: REST security logging no longer emits PHP warnings or records array query parameters as the literal string "Array"; nested values are preserved and secret keys inside them are redacted.

v1.4.004

  • Fixed: The "Send test email" action returns a clear failure notice quickly when the site's mail transport is slow or unreachable, instead of leaving the page hanging.
  • Improved: Scheduled lead summary emails get the same fast-fail protection, so a slow mail transport won't stall them.

v1.4.003

  • Fixed: Example hint text in lead settings fields (email addresses, webhook URLs, selectors) now displays in its proper format instead of title case.

v1.4.002

  • Added: Your own logo can now appear at the top of lead notification emails — upload or pick one from the media library so emails match your brand.
  • Improved: The logo sits on a fixed white panel, so it stays legible in both light and dark email clients.
  • Improved: The logo is embedded directly in each email, so it displays even when an inbox blocks remote images.

v1.4.001

  • Fixed: Tidied the Leads settings layout — removed an empty tab and corrected page spacing.
  • Fixed: The "which conversions to send" switches now reliably apply to form submissions captured on the server.
  • Fixed: The lead-scoring question builder keeps custom question IDs when you rename a question, so saved answers stay linked.
  • Fixed: Editing one advanced (raw JSON) box no longer clears the other.

v1.4.000

  • Redesigned the Leads settings screen with clearer explanations, on/off switches, and a point-and-click builder for lead-scoring questions. Webhooks now work with any automation platform.
  • Added: A new Manage API lets trusted external tools and automations control SyteOps over a secure connection, using an API key you generate.
  • Added: Generate, rotate, or revoke your Manage API key from Admin → Other Options — the key is shown only once and stored encrypted.
  • Improved: Destructive actions performed through the API require explicit confirmation, and stored credentials are never returned in responses.

v1.3.049

  • Fixed: Removing the custom admin branding logo now falls back to the default logo instead of leaving the branding area blank.

v1.3.048

  • Fixed: The WordPress login screen logo now displays the full wordmark instead of appearing cut off on the right edge.
  • Fixed: Removing or replacing the custom login logo now saves reliably — it no longer reappears on the next page load or adds duplicate copies to your media library.

v1.3.046

  • Refreshed: SyteOps and SyteWide branding across the admin UI (logos, primary teal color, login screen, footer, sidebar mark).
  • Improved: The brand library is now bundled locally so logos no longer depend on external image hot-links.

v1.3.045

  • Fixed: Rolling Management Server credentials now reliably saves the new secret on each endpoint and overwrites the stored value
  • Added: Credential rolling now reports per-endpoint results and confirms the new secret was applied, clearly listing any endpoint that did not update
  • Fixed: License-activation consent checkboxes now show a visible checkmark when selected
  • Fixed: Admin dialogs no longer get clipped when opened from a settings card
  • Improved: The credential-roll dialog footer buttons are now laid out correctly
  • Fixed: Status notifications for Management Connection actions now show the correct heading

v1.3.044

  • Improved: Quick Navigation links sit closer to their heading with tighter, balanced spacing
  • Improved: FlowMattic quick-action button icons are now clearly visible, with better spacing between icon and label

v1.3.043

  • Fixed: Connection data could be cleared unexpectedly on sites that run scheduled tasks through the server's own scheduler instead of the built-in WordPress scheduler. The tool that resets connections now runs only when launched intentionally, never as a side effect of routine background processing.
  • Recommended for all sites. After updating, endpoints automatically re-establish their connection on the next status check.

v1.3.042

  • Improved: Admin section headings restyled from button-like pills to a three-tier typographic system
  • Improved: Tab page headers now center the title at the top with the description italicized beneath
  • Improved: All cards across the admin UI use a more pronounced layered shadow for clearer visual separation

v1.3.041

  • Added: User Enumeration Defense card on the REST API admin page (Security → REST API → "User Enumeration Defense"). Single toggle (default ON) that blocks the three classic WordPress user-enumeration attack surfaces for unauthenticated visitors:
    • ?author=N redirect leak (returns 404 instead of redirecting to /author/<login_slug>/)
    • /author/<slug>/ direct archive hits (also returns 404 — no signal whether the username exists)
    • /wp-json/wp/v2/users REST endpoint (returns 404 with rest_no_route for users without list_users capability, even when other plugins or themes re-register the route or restrict the broader REST API)
    • Also strips author_url from OEmbed responses (the URL contains the login slug)
  • Added: Independent of the existing "Restrict REST API" / "Block All REST API" controls. Use this when you want enumeration protection without locking down the full REST API.
  • Note: Default ON. Existing installs get the protection automatically on upgrade. Toggle off if you have any site that legitimately needs public ?author= or public /wp-json/wp/v2/users access (rare on marketing sites; common on headless WordPress setups).

v1.3.040

  • Fixed: The Show button on the Management Server Secret now reveals the actual token instead of encrypted:sodium:… text
  • Fixed: Request Connection from an endpoint now succeeds — the token sent to the Management Server is the real secret, so authentication passes
  • Fixed: Plugin updates from the GitHub source now work after a fresh endpoint connection — the GitHub token is no longer scrambled when the Management Server returns it to the endpoint
  • Fixed: Re-pasting a secret that was previously revealed (and copied) no longer corrupts the stored value
  • Fixed: A stale "connection failed" notice no longer persists after a successful retry
  • Improved: The "unauthorized domain" message from the Management Server is now clean — no debug-flavored tail in the toast

v1.3.039

  • Added: Row-based add/remove controls for the REST API custom allowlist — each saved endpoint is its own row with a small × remove button, plus a separate input + Add button that appends one path at a time
  • Added: Built-in rule collision check on the custom allowlist — paths already covered by a built-in rule are rejected with a clear message so you don't end up with redundant entries
  • Added: Integration tier system — every integration card now shows a discreet Basic, Extended, or AI-Powered badge so you can tell at a glance how involved each integration is
  • Added: Dedicated documentation pages for AWS SES, Fluent Forms, WooCommerce, Wordfence, and Google Site Kit integrations
  • Added: Dedicated documentation page for the Banners module
  • Changed: Notice Management unified into a single notice-suppression flow — paste a notice, capture the last one, or pick from visible notices on the page
  • Changed: Wordfence REST allowlist widened to the full v1 namespace so all Wordfence endpoints work under REST API Restriction (not just /authenticate)
  • Removed: Monday integration and its documentation
  • Improved: Custom allowlist changes save immediately — no longer coupled to the Save Access Control button
  • Improved: Variable Sets documentation rewritten in plain language — leads with a clear introduction before introducing technical terms
  • Improved: Documentation jargon cleanup across the overview, FlowMattic, and troubleshooting pages for easier reading
  • Improved: Documentation sidebar now includes every integration and feature page for complete navigation
  • Fixed: Notice Management no longer blanket-hides every SyteOps toast when suppressions exist — only the toasts you actually target
  • Fixed: WordPress "Dismiss this notice" button text is stripped before notice messages are captured in the picker or matched at render time
  • Fixed: LinkCentral AI label padding and a toast relay regression

v1.3.038

  • Improved: AI provider HTTP response validation widened to accept all 2xx status codes
  • Improved: AI model caches automatically cleared on plugin update to ensure fresh model data

v1.3.037

  • Added: Bulk processing for flagged keyword links with per-link status feedback and post-run refresh support
  • Improved: LinkCentral settings visibility now follows integration state and guidance text is clearer across settings and docs

v1.3.036

  • Added: Live balance display for AI providers in the API Keys settings tile, with per-provider refresh and last-updated timestamps
  • Added: Provider branding modal showing documentation links and provider identity, accessible from the API Keys tile
  • Added: Systems/API navigation entry in the WordPress admin sidebar for direct access to provider configuration
  • Improved: AI model logging unified across all providers; balance display strings localized

v1.3.035

  • Changed: Keyword enrichment prefers AI web search context over page metadata when the two disagree, and context mismatch no longer forces a flagged quality state by itself
  • Added: Flagged-links review for enrichment results that need attention, with admin UI aligned to existing card styling
  • Added: Per-link model and max-tokens overrides (including OpenRouter model-limit hints and a quick “max tokens” action)
  • Added: Option to include manual keywords when re-running enrichment; clearer Keyword vs Context AI labeling in the admin
  • Improved: AI timeouts, provider-specific limits, and enrichment retries tuned to reduce spurious failures; better handling of HTML and edge-case page fetches during enrichment
  • Improved: Product License gateway validate-by-key refresh behavior and related diagnostics; licensing integration packages updated
  • Fixed: Checkbox accent styling so check marks stay visible with themed controls

v1.3.034

  • Fixed: Re-activating a previously activated site no longer returns an error; the gateway recovers gracefully and confirms active status
  • Fixed: Product License status is now always set to active on activation, regardless of upstream response ordering
  • Improved: Gateway responses include consistent license identifier fields and explicit success signals for reliable client-side detection

v1.3.033

  • Added: Keyword enrichment now runs up to 5 concurrent workers in parallel, significantly reducing the time to enrich large link libraries
  • Added: New Concurrent Workers setting (1–5, default 2) in the keyword enrichment settings; batch size limit raised to 50
  • Improved: AI requests that time out are automatically retried once with an extended timeout before a link is marked as skipped

v1.3.032

  • Added: AI keyword enricher — generates anchor-text keyword phrases for LinkCentral link posts that have no keywords, enabling automatic link insertion on previously-skipped links
  • Added: LinkCentral keyword editor is now always visible on link posts when the integration is active, with no manual settings change required
  • Added: Keyword Enrichment section in the LinkCentral settings card with AI provider/model configuration, a keyword status line, and a batch trigger button that supports multi-batch continuation
  • Added: Cross-link candidate discovery now falls back to title-keyword search when shared taxonomy terms are sparse, improving cross-link coverage on lightly-categorized sites
  • Improved: LinkCentral settings card reorganized into collapsible sections with adaptive multi-select inputs for category and post-type filters
  • Improved: Manual process UI now includes post-title search with autocomplete, rich per-link result tables showing keyword and cross-link details, and a dry-run preview mode
  • Improved: Cross-link scoring adds article vocabulary overlap and skips the opening paragraph to avoid over-linking near the top of content
  • Improved: Custom taxonomies can now be selected as the basis for cross-link candidate discovery

v1.3.031

  • Fixed: Gutenberg block editor now saves correctly on pages managed by page-builder plugins
  • Fixed: Block editor saves no longer fail for non-admin roles when a page-builder plugin is active
  • Fixed: Connected-sites status card hidden correctly when server mode is disabled

v1.3.030

  • Fixed: Admin removal action now correctly provides success or error feedback after completing
  • Improved: JavaScript bundle no longer loads on non-plugin admin screens

v1.3.028

  • Fixed: Toggle knobs in checkbox-grid toggle layouts now vertically center within the track

v1.3.027

  • Internal improvements and maintenance

v1.3.026

  • Internal improvements and maintenance

v1.3.025

  • Fixed: Toggle switch icons (checkmark and X) now vertically center inside the knob on all admin pages
  • Fixed: Empty "Connection Status" section label no longer displays when FlowMattic is already installed

v1.3.023

  • Fixed: Toggle switches in category filter and post type grids now display with correct label spacing
  • Fixed: Webhook endpoint URL fields now display at full width on both integration cards

v1.3.022

  • Improved: Cross-Link Post Types setting now uses selectable toggle switches instead of a text input
  • Improved: Category Filter checkboxes converted to toggle switches for visual consistency
  • Improved: Webhook endpoint URL field widened to display full URL without truncation
  • Added: "View Docs" links on all integration cards linking to the documentation portal
  • Added: Squirrly SEO documentation page on the public docs site
  • Improved: Squirrly SEO Post Types checkboxes converted to toggle switches

v1.3.021

  • Fixed: AI provider configuration from the Integrations tab now persists correctly instead of requiring navigation to the feature settings tab
  • Fixed: Max tokens refresh button and model-maximum hint now appear automatically on page load for areas with a configured provider and model

v1.3.020

  • Added: Multi-provider AI support for LinkCentral cross-linking (OpenAI, Anthropic, OpenRouter, Gemini)
  • Fixed: Cross-link scoring now uses the provider, model, and max tokens configured for LinkCentral instead of hardcoded defaults
  • Improved: Systems/API tab with quick navigation for all integration sections, configured-count badge on AI keys, and section entry animations

v1.3.019

  • Fixed: "Active Modules" stat card on the Admin tab showed an inflated "available" count that included hidden internal modules
  • Fixed: Stat card now applies the same filtering as the Module Management panel

v1.3.018

  • Added: Stats dashboard row on the General tab showing key system metrics
  • Added: Section divider labels between card groups on key admin tabs
  • Added: Inline max-tokens refresh button on all AI-consuming areas
  • Improved: Tab navigation redesigned from pill style to bottom accent line
  • Improved: Card hover shadows, focus glow, and entrance stagger animations
  • Improved: Toggle switch animations with lighter off-track color and spring-physics knob
  • Improved: Integration tile gradient border hover effect
  • Improved: Modal entrance transitions and animated status indicator dots
  • Improved: Typography with tighter heading tracking and monospace code elements

v1.3.017

  • Added: Refresh button next to max tokens field resets the value to the selected model's maximum
  • Fixed: Max tokens hint and refresh button now appear when the AI provider modal opens with a previously saved model
  • Improved: AI provider modal description clarified for module and integration context

v1.3.016

  • Added: Max tokens field auto-populates with the model's output token limit when a model is selected
  • Added: "Model maximum: X tokens" hint displays below the max tokens field in the provider modal
  • Improved: Max tokens input validation dynamically adjusts its upper bound to match the selected model

v1.3.015

  • Added: "View provider documentation" link now updates to model-specific docs page when a model is selected

v1.3.014

  • Fixed: AI Provider configuration modal opens correctly from integration tiles and module configuration
  • Improved: Modal overlay displays correctly inside nested admin layouts

v1.3.013

  • Fixed: Fatal error on certain PHP versions when registering AJAX handlers

v1.3.011

  • Fixed: Module configuration modal CSS now correctly applies after modal is repositioned

v1.3.010

  • Fixed: Module configuration modals now display as centered overlay popups instead of rendering inline at the bottom of the page
  • Improved: Modal backdrop uses consistent blur effect matching standardized modal styling

v1.3.008

  • Fixed: AI modal field alignment for uniform full width across all WordPress admin environments
  • Improved: Loading indicator replaced with styled CSS spinner for model-fetch feedback

v1.3.007

  • Added: Multi-provider AI configuration supporting OpenAI, Anthropic, OpenRouter, Gemini, and Perplexity
  • Added: AI provider selection modal with per-area model and token configuration
  • Added: 7 new integration tiles with plugin detection and conditional REST allowlist entries
  • Added: Manual post processing UI for auto-linking integration
  • Improved: Secrets encryption now validates success and preserves existing value on failure
  • Improved: All API keys encrypted at rest with automatic FlowMattic sync

v1.3.006

  • Added: LinkCentral integration documentation and logo asset on the integrations card
  • Added: End-user documentation page with setup guide and FlowMattic walkthrough

v1.3.005

  • Added: LinkCentral auto-linking integration with keyword insertion and cross-linking
  • Added: Internal cross-linking engine with heuristic and AI-enhanced scoring modes
  • Added: Admin settings card on System/API tab with configurable density limits and link behavior

v1.3.004

  • Fixed: FlowMattic variables silently stopped syncing after a configuration change
  • Fixed: Derived user variables now correctly sync when user data changes

v1.3.001

  • Fixed: Module dropdown actions (enable, disable, export, uninstall) were unresponsive
  • Fixed: Enable All and Disable All buttons on the Modules card were also unresponsive

v1.3.000

  • Added: Modernized JavaScript build system for improved performance
  • Changed: Admin interface loads optimized scripts with automatic fallback for compatibility

v1.2.083

  • Fixed: Notice suppression no longer inadvertently blocks unrelated admin notices
  • Added: Admin sidebar menu pinned to top position

v1.2.081

  • Updated: Primary brand colors aligned to unified SyteWide brand palette
  • Updated: Warning color default changed from red to amber, visually separating warning from error states

v1.2.080

  • Added: ContentPen affiliate links on Integrations tab and System/API heading
  • Updated: Module documentation now describes packages as SyteWide-distributed only

v1.2.079

  • Fixed: License status showing "Inactive" on all endpoints because the check only consulted stale connection data
  • Fixed: License status now checks both product license and connection cache — either being valid shows "Active"

v1.2.078

  • Fixed: License check modal showing all endpoints as "Inactive" because status fields were not forwarded to the browser

v1.2.077

  • Added: Per-site "Check Licenses" dropdown action — scans endpoint and displays modal with license status and versions
  • Added: Master "Licensing: Check All" bulk action — concurrent scan of all endpoints with summary table modal

v1.2.076

  • Added: Encrypted package system for secure module and workflow distribution
  • Added: Package key delivery pipeline — keys automatically delivered via license activation and server webhooks
  • Added: Module auto-update checker with one-click installation
  • Added: Workflow import/export for encrypted FlowMattic workflow template distribution

v1.2.075

  • Added: "Buy SyteOps" link in the docs site navbar and footer

v1.2.074

  • Redesigned: Documentation portal with modern visual theme — improved typography, dark mode, glass-blur navbar, and multi-section homepage
  • Added: Local full-text search, Mermaid diagram support, and image zoom
  • Added: Server Connections feature page with architecture diagram
  • Added: Custom components (Callout, Card, Steps, Badge) for richer documentation

v1.2.073

  • Added: EULA displayed in the activation consent modal alongside Privacy Policy, Terms & Conditions, and Refund Policy
  • Added: EULA expandable panel in the post-activation License & Privacy details modal
  • Changed: Consent checkbox text updated to list EULA first

v1.2.072

  • Fixed: Double confirmation dialog eliminated when deleting a user on the Roles & Users page
  • Fixed: User swap now preserves deleted and locked flags alongside user data

v1.2.071

  • Fixed: JavaScript error that prevented page initialization and blocked Delete User from functioning
  • Changed: Delete button repositioned to the right of Save/Export/Import buttons on user cards

v1.2.070

  • Added: Delete User functionality with gap-aware slot reuse
  • Added: Configurable "Max Users" setting on Admin tab (1–20)
  • Changed: Admin Users tab replaces the user count dropdown with an Add User button and active count display

v1.2.062

  • Improved: User cards include a slot identifier so duplicate display names are easier to distinguish
  • Improved: Quick navigation appends the user slot only when multiple cards share the same visible name

v1.2.061

  • Improved: Users section adds a top border, padding, and a centered heading row for clearer separation from Roles
  • Improved: User cards show the contact name as the heading when set

v1.2.060

  • Fixed: "This plugin has not been tested with your current version of WordPress" false compatibility warning resolved

v1.2.059

  • Added: Rich HTML sections and banner images for the WordPress View Details modal
  • Improved: CRM Platforms tab layout uses a cleaner two-column structure

v1.2.058

  • Added: Non-admin users now see grayed-out role toggles with a padlock icon when a unique role is held by a locked user
  • Fixed: Phone Type / Map Preference dropdown width now renders correctly for all users

v1.2.056

  • Added: "Users" submenu item under Admin in the SyteOps sidebar menu
  • Added: "Edit in Admin" button on the Roles & Users page for quick access to full user settings

v1.2.055

  • Fixed: User lock/unlock toggle now persists across page refresh
  • Changed: Expanded user card avatar enlarged for better visibility

v1.2.054

  • Added: Role count displayed next to the Roles heading
  • Moved: Add New Role button relocated into the Roles section heading
  • Removed: Redundant Roles submenu from the admin menu

v1.2.048

  • Added: Admin toggle to control Roles & Users menu visibility for non-admin users

v1.2.047

  • Added: WordPress role badges on Roles & Users user cards
  • Added: Quick access navigation buttons above user cards with smooth scrolling
  • Added: Collapsible user cards — click header to collapse or expand
  • Added: Lock toggle button on Admin/Users tab

v1.2.046

  • Fixed: Sidebar menu title and page heading now use the white-label brand name instead of hardcoded text

v1.2.045

  • Moved: Roles & Users page from standalone top-level menu to a submenu under SyteOps
  • Added: Locked user cards display an amber notice explaining the lock reason with tech contact info

v1.2.043

  • Fixed: Staging red theme not displaying on SyteOps admin pages

v1.2.042

  • Fixed: Fatal error when upgrading to a new module version while the old file remains on the server

v1.2.041

  • Converted: Fluent Forms GDPR capture fix extracted into a proper module with auto-activation on upgrade

v1.2.040

  • Removed: Redundant "Users Tab Backup / Restore" card from Users tab; backups are managed entirely in the Backup tab

v1.2.039

  • Removed: UpdraftPlus email suppression feature
  • Fixed: LSCF Force Token authentication now works correctly during LiteSpeed save-settings flow
  • Fixed: Variable Sets Registry table no longer renders system sets as clickable links

v1.2.038

  • Added: UpdraftPlus integration with backup status monitoring
  • Added: Combined backup detection shows green when either WPVivid or UpdraftPlus is installed
  • Added: Third-Party Backup Status card on Backup tab showing last backup timestamps and schedule
  • Added: Dismissible admin notice when UpdraftPlus has no remote storage configured

v1.2.034

  • Improved: Staging environment dark red theme now displays on all admin pages, not just SyteOps pages

v1.2.033

  • Fixed: Shrink-to-fit styles no longer affect non-SyteOps admin pages, preventing layout breakage on core WordPress screens

v1.2.031

  • Fixed: Bulk plugin update failure toasts now display the site name instead of a truncated license key
  • Fixed: Array parameters now reach endpoints correctly during bulk plugin updates

v1.2.030

  • Improved: Bulk plugin update toast now shows the error message when a site fails instead of only incrementing the failure count

v1.2.029

  • Fixed: Endpoint plugin updates silently skipping because update data was flushed before the upgrader could read it
  • Improved: Plugin update toasts now show per-plugin failure reasons instead of just counts
  • Removed: Blank SyteWide Licensing tab from main admin nav bar

v1.2.028

  • Fixed: User card header top corners now round correctly
  • Removed: Tabs with no user-specific content from Users area
  • Changed: "Update Available on All Endpoints" button label shortened to "Update All"

v1.2.026

  • Fixed: Notice suppression no longer corrupts WooCommerce product pages
  • Fixed: Removed redundant brand prefixes from Quick Links menu items
  • Added: View Documentation link in SyteHero Quick Links section

v1.2.025

  • Changed: "Purge Woo Product Cache" link now requires WooCommerce to be the selected ecommerce platform, not just installed

v1.2.024

  • Fixed: All admin bar Quick Links cache buttons (LiteSpeed, Avada, Elementor, Divi, Blocksy, SyteHero, WooCommerce) were non-functional

v1.2.023

  • Added: New licensing module with multi-product management, encrypted API credentials, and admin UI
  • Added: Mutual exclusion enforcement between licensing modules

v1.2.022

  • Fixed: REST allowlist entries added directly on the endpoint are now preserved during scans instead of being auto-wiped

v1.2.020

  • Added: WooCommerce cache purge option in Quick Links cache menu
  • Improved: Server Connections dropdown with prefixed labels and logical grouping
  • Added: Type-to-confirm modal for "Uninstall SyteOps" requiring the domain name
  • Improved: FlowMattic actions hidden when FlowMattic is not installed on the endpoint

v1.2.018

  • Fixed: Page reloads after any Quick Links cache clear so cache state is visible immediately
  • Added: LiteSpeed CDN purge option in Quick Links cache menu
  • Fixed: Divi dual-cache clear now works correctly

v1.2.017

  • Improved: Cache features are now auto-detected at runtime instead of requiring a manual integration toggle
  • Added: Blocksy theme cache clear support in the admin bar Quick Links menu
  • Added: "Clear Divi Cache" now also clears Divi localStorage keys

v1.2.016

  • Added: "Server" submenu item in the WordPress sidebar under SyteOps, visible only when server mode is enabled
  • Added: Mid-path wildcard support in REST allowlist entries

v1.2.014

  • Added: Enable/Disable REST API Monitoring option in each connection's Actions dropdown
  • Added: REST API Monitoring status badge in the connection status column
  • Changed: Manage REST Allowlist option is now hidden when REST is unrestricted

v1.2.012

  • Improved: REST API restriction hardened — discovery gated, WooCommerce routes no longer open by default, badge colors updated (restricted = green, unrestricted = red)

v1.2.010

  • Improved: Reactivation flow with better CTA and auto-enable of modules after license reactivation
  • Fixed: REST whitelisted badge now shows correct color when allowlisted
  • Security: Module AJAX handler now requires authentication to prevent unauthenticated data access

v1.2.007

  • Improved: Gateway REST routes return a structured maintenance message and support contact when disabled instead of a 404 error

v1.2.005

  • Improved: All admin AJAX handlers now use a single verification helper for consistent security checks

v1.2.004

  • Security: Block All REST API toggle now blocks all requests with no exceptions when enabled

v1.2.003

  • Added: General-purpose "Block All REST API" toggle in Access Control that works on any install regardless of directory structure

v1.2.002

  • Improved: Block REST API toggle now visible on both parent and subdirectory installs with contextual warnings

v1.2.001

  • Security: REST API is now blocked on subdirectory installs when REST restriction is enabled

v1.2.000

  • Major release: Plugin renamed from SyteFlow to SyteOps with full identifier migration
  • Added: Automated migration tool for existing SyteFlow sites — one-click admin banner, AJAX action, and WP-CLI command
  • Changed: ContentPen webhook URL updated to new namespace (reconfiguration required)