The templates release. The two big page builders get a real home in Minn: a Templates surface that lists, renames, duplicates, exports and creates Bricks and Elementor templates, with each builder's own permissions deciding who does what and the design itself one click away. The editor closes its last core-block gaps in the same breath: the Query Loop, the widget blocks, Tabs and Accordion can all be typed in with /, previewed with real content, and configured from the gear. HappyFiles Pro joins the media folder picker and the Licenses tab, list search boxes stop fighting their own results, and a deep security review pass asks two dozen more plugins the permission questions they ask themselves.
Added
- The core widget blocks join the editor's slash menu. Latest Posts, Latest Comments, Archives, Calendar, Terms List, Page List, Search and Login/out can all be typed in with / and land with a real preview of what they will show; the gear on each edits its settings. A block that would render nothing on this particular site is honestly left off the menu.
- Tabs and Accordion can be added in Minn. Typing /tabs or /accordion inserts WordPress's own interactive blocks with two starter sections ready to fill in, using exactly the markup the block editor produces, so opening them there later is seamless. The tabs arrive with their clickable tab strip in place, the tab labels and panel text edit through the block's gear, and the accordion's headings edit right in the preview.
- The Query Loop can now be added and configured in Minn. Typing /query in the editor inserts WordPress's own Query Loop block, complete with pagination and a no-results message, and the preview shows the real posts it will list. The gear on the block edits what the loop queries: post type, how many items, ordering, sticky handling, a search term, an offset, and whether to inherit the page's default query. What the loop looks like (its inner layout and templates) stays one click away in the block editor, and everything Minn writes reads back in the block editor exactly as it wrote it.
- HappyFiles Pro folders filter the Media view. On a site organizing its library with HappyFiles, the same folder picker that already serves FileBird, Real Media Library and Folders by Premio now shows the HappyFiles tree: folders in the order their sidebar keeps them, an Uncategorized view for files in no folder, and Move for putting files where they belong. Who sees folders and who can move files follows HappyFiles' own access levels, so someone limited to viewing folders there is limited to viewing them here too.
- HappyFiles Pro joins Licenses. The key's status shows with everything else on the Licenses tab, and paste, remove and re-check all run through HappyFiles' own activation flow, so its settings screen always agrees with what Minn did. A rejected key never displaces one that was working.
- Elementor form submissions open with a count card. Unread and total entries, how many forms have received one, and a link to Elementor's own submissions screen, the same shape Fluent Forms and WPForms already use.
- Floating Buttons live on the Templates surface. Elementor's floating buttons and bars are a separate content type; they now appear as type tabs next to headers and sections, with create, duplicate, trash and Edit in Elementor using the same list. A status card on Templates counts both libraries and links out to Elementor, and to Essential Addons when that plugin is active.
- Essential Addons Pro shows up on Licenses. Paste, deactivate and re-check go through WPDeveloper's own license client. If they email a confirmation code, Minn says so and leaves the rest on their settings screen.
- Elementor templates get a home in Minn. On a site running Elementor, a Templates surface lists Saved Templates and Theme Builder parts together: headers, footers, singles, archives, popups, loop items, sections, pages, and the rest of Elementor's own vocabulary, with a plain-language summary of where each one applies ("Entire site") taken from Elementor's Instances column. Filter by type, rename in place, duplicate (the copy is unassigned, so a second header does not fight the original), create a new one ready to design, export Elementor's own JSON, and move one to the trash. Editing the design stays one click away in Elementor. The list, the edit link, creating and duplicating all honor Elementor's own access rules, including the roles it keeps out of the builder.
- Bricks templates get a home in Minn. On a site running the Bricks theme, a Templates surface lists every Bricks template with its type (header, footer, single, section, popup, archive, search results, error page), a plain-language summary of where it applies ("Entire website", "Post type: Posts", "Archive: Categories & Tags"), and when it last changed. Filter by type, rename or change a template's type in place, duplicate one with all of its content and settings, create a new one ready to design, and move one to the trash. Editing the design itself stays one click away in Bricks; the edit link, creating and duplicating all honor Bricks' own access permissions, so someone Bricks keeps out of the builder is kept out here too.
- Bricks settings, the daily ones, without the settings screen. The Templates surface gains a Settings view covering the Bricks settings a site owner actually revisits: which post types the builder edits, whether form submissions are saved, the SEO and Open Graph switches, template visibility and remote access, autosave and its interval, builder mode, and the whole maintenance-mode group including which template it shows. Everything saves in Bricks' own storage shapes, so its screen and Minn always agree, and the parts Minn does not map (capability pickers, API keys, custom code) are counted honestly with a one-click path to Bricks' own screen.
- Bricks form submissions become a Forms provider. When Bricks is set to save form submissions, they appear alongside every other forms plugin in Minn's Forms area: submissions listed newest first with a per-form filter and search, each one opening as a contact card with the form's own field labels, plus a count card and a link to Bricks' submissions screen. Who can see submissions follows Bricks' own access grants, and deleting them stays with administrators, exactly as Bricks has it.
- Bricks templates travel, and their tags finally edit. Every template row can now be exported as the same JSON file Bricks' own screen downloads, complete with the global classes and variables the template uses, so it imports cleanly on any other Bricks site; the action follows Bricks' own import-export permission. Template tags, which had no editing home anywhere in Minn, gain one on the template detail: type them in, new tags create on the fly, clearing removes them.
- Bricks' generated CSS joins Clear site cache. On sites running Bricks in external-CSS-files mode, stale generated stylesheets after an update are the classic mystery; the one-command Clear site cache now regenerates them through Bricks' own machinery, and the option simply does not appear on sites using inline CSS.
- Bricks maintenance mode joins site visibility. When Bricks' own maintenance or coming-soon mode is hiding the site, Minn now says so everywhere it warns about a hidden site: the Overview banner, the topbar chip, the System health check and Settings → Visibility. It can be turned off in place (with Undo restoring exactly the mode that was on), written through Bricks' own settings so its screen agrees with what Minn did.
Improved
- Block settings use the same switches as the rest of Minn. Yes/no options in the block's gear, like a Query Loop's "inherit the page's query", were the browser's own checkboxes, which ignored dark mode and looked nothing like the app. They are Minn switches now: click to flip, Apply to save, and a yes still stores as a real yes for the block editor.
- Adding an extension on Minn Engine. The Add plugin dialog there explains that Minn Engine runs Minn extensions, and offers a zip-URL or GitHub owner/repo field alongside the drop zone instead of the WordPress.org directory (whose plugins would install but never run). The System page's wp-admin Tools card stays out of the way on the engine too.
- Turning Minn off on Minn Engine says what actually happens. The deactivate dialog there no longer promises a trip to wp-admin: the site keeps running without an admin interface, and the command that brings Minn back is named.
- Minn knows when it is the only admin. On a site served by Minn Engine there is no WordPress behind the app, so the controls that only make sense next to wp-admin step aside: the WordPress button in the sidebar, the "Classic wp-admin" palette command, and the profile switches for "Minn is the default admin", "Minn admin bar on the site" and "Show toolbar when viewing the site" (all of which are simply always on there). Post types the engine provides read "Managed by Minn Engine" in Structure.
Fixed
- A Query Loop preview keeps its posts after the editor finishes loading. The list used to appear, then the site's styles arrived and painted the titles in the theme's dark-mode color against the editor's light background, so the words vanished. The preview now follows the same light or dark setting as the rest of Minn. The loop is also no longer treated as a stack of editable cards, which had greyed the list out on hover: those inner blocks are the loop's template, and their layout still belongs in the block editor.
- A website typed on Your profile no longer looks split at
://. JetBrains Mono's programming ligatures kern the colon away from the slashes, sohttps://anchor.hostread ashttps: /anchor.hostin the field even though the saved value was fine. An earlier fix turned those ligatures off on the page, but the browser's default font rule on text boxes put them back. The Website field (and every other mono text box) now keeps them off. - Typing in a list search box is never mangled by its own results. On a slower connection, searching Orders (or any list) could eat keystrokes and then continue typing at the start of a truncated phrase: results arriving mid-word rebuilt the search box from the last committed text and dropped the caret at the beginning. The box now keeps every keystroke, the caret stays at the end, and the results catch up to what was actually typed. A search restored from the page address also puts the caret at the end, so typing extends it.
- Pasting a comma list into Tags creates one tag per name. Gutenberg already splits on commas; Minn left the whole clipboard in the field, and pressing Enter then mashed it into a single tag. A paste (or Enter) of
crystal healing, energy grids, holistic healingnow adds three tags, the same way typing a comma after each name already did. - Pasting Markdown and then deleting a heading no longer glues the next heading onto it. Backspace at the start of a heading used to merge it into the previous one as a smaller, styled span, and the empty heading left behind after deleting the title would not delete. Adjacent headings now join as ordinary text, and an empty heading goes away on Backspace.
- A screen a plugin has taken away stays away. Post SMTP removes its email log when you switch mail logging off, and the messages already recorded stay in the database. Minn asked only whether the plugin was installed, so it went on serving those message bodies, which is where password reset links live. Simple History's stealth mode hides the plugin by removing its own pages, and the check that knew about it was wired to one route while the sidebar went on naming the plugin to exactly the people it is hidden from. Both now ask the question their plugin asks.
- Replacing a file runs it past the same checks as uploading one. Swapping a file for a new one kept the original address and wrote the new content straight to it, without the step an ordinary upload goes through. That step is where sanitizers do their work, so an SVG replaced by another SVG skipped Safe SVG entirely and landed unchecked at an address that was already published. A file those checks refuse is now refused here too.
- The database pages describe this install and no other. On hosting that puts several sites in one database, an install whose table names begin the same way as this one's could be named in the browser, including its users table, because the rule that spots a neighbour measured against one prefix while the rule that admits a table measured against another. The System page's database card was a third place working this out for itself, and it named the same neighbour's tables and sizes. Both now use the one rule.
- Five more plugins are asked the question they ask themselves. The System page's security rows for Wordfence and Solid Security answered a general settings permission while the screens beside them asked each plugin's own. UpdraftPlus and WP Mail SMTP each let a site widen or narrow who reaches them, and a fixed permission ignored that. WP Mail Logging did defer to its plugin, but looked for it under a name it does not use, so the deferral never happened.
- A site logo has to be a file you may publish. Setting the logo accepted any file by its number and only checked that it was an image, so a file belonging to someone else could be put on every page of the site. It now asks the same questions the SEO panel asks of a social image.
- An update is only ever downloaded from where Minn publishes it. Minn checks the address and the contents of its own update before installing it, but the panel that describes an available update passed the address along unchecked. An address from somewhere else would not have been recognised as Minn's, so the contents check would have been skipped rather than applied.
- Quieting one plugin's notices needs a real sign-in. A narrow rule omits some notices during one page builder's requests. It asked only whether a sign-in cookie was present, and that cookie's name can be worked out from the site address, so anyone could send one and quiet the notices their own probing would otherwise leave in the log. The rule now confirms the session.
- A focus keyword answers the permission All in One SEO files it under. AIOSEO keeps the keyphrase in its Analysis area and reserves writing it to that area's own permission, while the panel offered the field to anyone allowed to edit general settings. It is the same split the panel already handles for SEOPress. A site that has not narrowed that area sees no change.
- Deleting a redirect only ever deletes a redirect. The redirects list, the counts and the editor all leave the plugin's 404 log alone, because those rows record misses rather than rules. Deleting went by number alone and could take one of them instead. The route confirms what it is removing first.
- Editing a redirect only ever edits a redirect. The same number that could delete a row from the 404 log could also rewrite one into a live redirect. Editing now confirms what it has, the way deleting already did.
- A Formidable entry opened by number is an entry. Their table also holds drafts someone is still filling in and the individual rows of a repeating answer. The list has always left both alone; opening or deleting one by number now does too.
- A picture inside a repeating group answers the same questions as any other. Repeating rows were saved straight through, skipping the checks a picture field makes on its own, so a row could point at a file its author may neither upload nor read. Every field in a row now asks the same questions.
- Copying a Bricks template is Bricks' own copy. Minn built the copy itself and left out three things Bricks does: it starts a copy as a draft, it leaves behind the rules saying where the template applies, and it gives every element a fresh identity. A copy could therefore publish itself and take over the whole site, and a template holding code Bricks runs on the public site carried that code's approval with it. Copying is now their operation.
- Changing a Bricks template's type brings its design along. Bricks stores the design under one of three names chosen by the type, so changing the type left the design behind and the template rendered empty everywhere it was used.
- Bricks' Templates list follows Bricks' own permissions. It appeared to anyone who can write a post, including the roles Bricks keeps out of its own Templates screen, and showed each author the others' unfinished templates.
- Opening this site's templates to other sites asks for a password first. The switch is the only thing in front of an address that answers anyone, and the two settings that narrow it live on the Bricks screen. Turning it on without one of them is refused.
- Simple History stays hidden in both of the ways it hides. Naming the addresses that may still see the log is itself a way of hiding it, and that is the way a site normally uses. Minn only understood the other one, so the sidebar named the plugin, and the log answered, to exactly the people it was hidden from.
- Site Mailer's messages answer its own switch for showing them. Turning email content off hides it everywhere in their log, including for mail already recorded, and nothing removes what was stored. Minn kept serving those messages, which is where password reset links live.
- Elementor form submissions stop when Elementor stops them. Turning submissions off removes their screen and the job that clears out old ones, but the answers already collected stay, names and addresses and all. Minn asked only whether the plugin was installed, which is still true afterwards.
- A new Elementor template asks about the type being made. Floating Buttons are their own content type and Elementor reserves every part of it to administrators, so anyone who could write a post could add one.
- Deleting a code snippet takes its file with it. The plugin serves each snippet from a file under uploads, and its own cleanup cannot run from Minn, so a deleted snippet's file stayed live at an address it had already published. Switching one off, or changing its language, no longer leaves a file behind either.
- Removing a HappyFiles key really does hand the seat back. The message telling happyfiles.io the site was finished with the key went out empty, so the key stayed in use while Minn said otherwise, and their own button for it was gone by then.
- Essential Addons licensing reaches WPDeveloper. Their client was missing part of what it needs to start, so every activation, removal and re-check failed before leaving the site.
- Four more plugins are asked the question they ask themselves. Wordfence fills its screens by asking whether you may manage the site, while opening its menu to a lesser permission, and Minn served that data on the lesser one. All-in-One WP Migration files its backup list under the permission for importing, which some hosting turns off entirely. Autoptimize running across a network keeps its settings at the network level. Asset CleanUp asked for a permission that sits on no role until someone grants it, so administrators never saw the screen at all.
- The System page's database card describes this site. It measures tables through the same rule as the database browser, and that rule takes in the tables a whole network shares, which is right there and not here. On a network it now counts only this site's own.
- Minn still starts when it runs across a whole network. A check added for one page builder read a value that WordPress has not yet set at that point in the load, which ended the request. Anyone could ask for that request.
- An update address has to be Minn's after it is resolved, not before. The check matched the start of the address, while the part that fetches it resolves the shorthand for "go up a level" first, so an address could name this project and fetch another one.
- A Query Loop preview stays a preview. It asked the database for as many posts as the request named, and one call renders up to a hundred blocks. Previews now show a readable page; the saved block and the real page are unchanged.
- Trashing a Bricks template asks Bricks. Creating, exporting and duplicating one already did; a site that took template deletion away in Bricks' own permissions means it.
- A social image is the picture you chose. Two of the SEO plugins would have stored an address sent alongside the picture rather than the one worked out from it, which is the one thing the rule above them says never to do.
- An option is a temporary value only when its name says so. Two routes accepted any name that merely contained the words, so a delete could report success while the option it named stayed exactly where it was.
- A neighbouring install no longer hides this one's tables. On hosting that puts several sites in one database, a neighbour whose name is the beginning of this site's name took the whole list with it. Its own tables stay hidden, as before.
- WP Mail Logging shows the sending server only when asked. The plugin hides that field by default and everywhere in its own log; Minn showed it regardless.
- Independent Analytics is named the way it names itself. A site that has taken the branding off keeps it off for everyone the plugin keeps it off for.
- Moving files into a folder is capped per request, and UpdraftPlus is asked both of the questions it asks itself.