User guide

How to run your site with Minn Admin: getting around, writing, daily care, staying in control, and the honest safety story.

A guide for the people who run their site with Minn: writing, moderating, checking on things, keeping plugins current. No code in here. If you build plugins, you want for-plugin-authors.md instead.

Current as of v0.47.0. This file ships inside the plugin, so the copy you are reading always matches the version you have installed.

What Minn is (and is not)

Minn Admin is a second front door to your WordPress site. It lives at yoursite.com/minn-admin/ (or yoursite.com/?minn_admin=1 on a site that still uses plain permalinks) and covers the daily work: content, media, comments, orders, users, plugins, updates and settings, in a calm interface with none of the banners and upsells that crowd a typical dashboard.

Three things to know before anything else:

  1. wp-admin is still there. Minn replaces nothing. The classic admin keeps working at /wp-admin/, and Minn links you to it whenever a job is better done there. You can use both side by side forever.
  2. Everything Minn writes is native WordPress. Posts are normal block markup, settings are normal options. Deactivate the plugin and your site is exactly as it was, with nothing to migrate and nothing lost.
  3. You only see what your account can do. Minn checks the same WordPress permissions as wp-admin. An author sees writing tools; the Extensions and Settings areas only appear for accounts allowed to use them.

Getting around

The sidebar has four groups. Empty groups stay out of the way, so a site without a store still has the shorter navigation it needs:

  • Workspace — publishing and incoming material: Overview, Content, Media, Comments, and plugin inboxes such as form entries.
  • Commerce — store operations in a stable order: Orders, Subscriptions, Bookings, Customers, Products and Coupons. Only the items provided by the site's plugins appear. Opening an appointment takes you to its own page, laid out like an order: the service and time on one side, the customer on the other.
  • Tools — site plumbing contributed by your plugins: mail logs, activity logs, redirects, broken links, backups, snippets. Plugins whose Minn presence is purely a settings screen, and a theme's options pages, gather under a single Site Options entry here rather than each claiming its own sidebar spot. A settings screen there writes only what you changed and checks every changed value before anything is written: a value the plugin would refuse, or one you may not change, is named and nothing is saved, and if someone changed one of those values since you opened the page, Minn asks you to reload. Code snippets (WPCode, Custom CSS & JS, a page's Bricks scripts) cannot be changed on a site that switches off code editing with DISALLOW_FILE_EDIT, though deleting or renaming one still works.
  • Manage — the site itself: Extensions, Users, Design (Menus and Widgets on classic themes), Structure, System, Settings.

Group headings collapse when clicked, and the sidebar remembers your arrangement. Counts on Content, Comments and Orders show pending work. Lists show recent dates as a day and month and add the year once a date is from a different year, so an old site's content list reads in order at a glance. On Content you can sort by clicking the Title or Date heading, and clicking the same heading again reverses it. Clicking the sidebar item for the view you are already on refreshes its list in place, so a tab left open all day stays current without a page reload.

Overview still opens on the same four or five number cards. Click a card to open that view. Right-click it and choose Customize to pick a different number: drafts, pending comments, users, and on a store the month's sales, orders, items sold and average order, plus the usual catalog and queue counts. Picking a number that is already on the dashboard swaps the two cards, and a card hidden for the moment (a store card while WooCommerce is off) keeps its slot. Save keeps the layout for you; it follows you on any browser you sign in with. Reset to defaults puts the starting cards back. Only administrators see Save as defaults, which sets those starting cards for anyone who has not picked their own.

The command palette is the fastest way anywhere. Press ⌘K (Ctrl+K on Windows and Linux), start typing, and jump to any view, any post, or run a command directly: "Clear site cache", "Back up site now", "Create new page". If you learn one thing from this guide, learn ⌘K.

Minn can travel onto the public site. Turn on the Minn admin bar from Your profile to replace WordPress's classic front-end bar for your account. On a desktop screen the bar shows nothing at all while you read: two small strokes in your accent color rest in the very corner to mark the spot, and moving your cursor into that corner brings out the complete bar in one motion, with search and the command palette, a create menu, an Edit button for the page you are viewing (Edit in Bricks only when that page itself is a Bricks canvas; a chevron lists the header, content or footer templates wrapping the view), notifications and your account. The corner keeps working even while invisible, and hopping between the site and the admin by clicking that same corner lands with the bar already open. On a phone the Minn mark stays visible and collapsed until you tap it, then opens the controls in a compact panel with its own Open Minn Admin link. When the site needs attention, such as maintenance mode, a password gate, hidden search visibility or a staging environment, a status chip waits beside the site name and appears with the rest of the bar once you reach the corner. When there is a one-step fix (turning maintenance mode off, allowing search engines), the chip's menu offers it and asks you to confirm before it changes anything. The page itself stays unmarked except for the two strokes. The corner control floats above the site without changing its layout. This is a personal choice: other users keep the classic bar until they opt in, and wp-admin always keeps the classic bar. The bar also stays off a page builder's own canvas, the same way the classic admin bar does.

Right-click is real in Minn. This is the least discoverable thing in the app, so here it is in plain terms: rows in Content and Media have right-click menus (open, duplicate, publish, trash), comments have them, the theme toggle has one, sidebar entries have one whether a plugin added them or Minn did (that's how you hide them), and group headings in the editor's block library have one too. When in doubt, try a right-click.

One view, many plugins. Where several plugins do the same job (three form plugins, two backup plugins), Minn shows one sidebar entry with a switcher inside, instead of three lookalike menus. The view stays the same; the provider changes.

On a network, a small chevron sits beside the site name at the top of the sidebar. It opens a short list of sites you can work on and takes you straight to Minn on any other. Network administrators also get a link to Network Admin from there, since account creation and deletion, the long tail of network settings, restores, exports and network setup stay with WordPress. The palette knows the sites too: press ⌘K and type "switch", or just start typing a site's name. The chevron does not appear when you belong to only one site. Its menu opens with search already focused and lists up to eight sites. Typing fuzzy-matches names and addresses across every site you can use, not just the ones already listed, and narrows to the five closest, so a shorthand like "tm10" still finds Team 10 on a large network.

If you run the network, a fourth sidebar group appears: Network. Sites lists every site with its address, members and state, filters for archived and spam sites, and search; from a row you can open a site in Minn, visit it, archive or restore it, mark it as spam, or delete it. Adding a site asks for an address, a title and the email of someone who already has an account. Network users lists every account on the network, shows how many sites each belongs to, and lets you promote someone to network administrator or take that away. Network settings covers registration, uploads, what site administrators may do, and where network mail goes. Deleting a site and changing network administrators need a network administrator's own account: a role that merely carries those capabilities is not offered them, and an account with network settings rights that is not a network administrator sees only the settings it may change, so a save never half lands. If WP Multi Network is active, Networks lists every network with its address, site count and administrator count. You can create a network and its root site there, move an ordinary site to another network from its right-click menu or detail card, and delete a non-primary network with all of its sites after an explicit warning. Changing a network's domain or path links to WP Multi Network's own form because that operation rewrites every site address in the network. Two things Minn will not do: it never offers to archive or delete the main site of the network or the site you are currently working in, and it never lets you remove your own network-administrator status or the last one on the network. Creating and deleting accounts stays in Network Admin, because deleting a network account removes that person's posts from every site and WordPress's own flow offers to reassign them first.

If you run WP Freighter (several sites out of one install, each with its own tables), Minn treats it much like a network. The sidebar group is called Tenants, and its Tenant sites page lists every tenant with its address, how many accounts it has, when it was made, and whether Minn Admin is turned on there. From a row you can open a tenant in Minn or in WordPress, visit it, turn Minn Admin on or off for it, clone it, or delete it; the card above names the main site, the files mode and domain mapping, and carries the WP-CLI prefix for working inside a tenant. New tenant asks for a title, a name for the list, a hostname when domain mapping is on, and the first administrator's details. The site switcher beside the site name lists the main site and every tenant, and so does the palette. One difference from a network: tenants do not share accounts, so opening one signs you in as an administrator of that tenant through WP Freighter's own one-time link, the same thing its Log in button does. Inside a tenant the same page offers Back to the main site. Minn never offers to delete the tenant you are working in.

Network-wide plugin and theme controls stay in Extensions. A network administrator can activate or deactivate a plugin for the whole network and enable or disable a theme for every site. Per-site activation stays separate (a site's own plugin switch never reaches network-wide for anyone else), and Minn will not offer to deactivate itself network-wide from inside Minn.

The topbar carries the page title, a button that shows or hides the sidebar (⌘. does the same), the version badge (click it for what's new), a View site link, the theme toggle (click switches light and dark; right-click to follow the system), notifications, and the New button (on a store it also offers Product). Amber chips appear here only when something needs you: a pending WordPress update, or a site that is not fully public.

Writing

Press New (or ⌘K, "Create new post") and write. The editor is built for writing, from quick posts to full pages assembled from groups and columns; heavy page design still belongs to the block editor, one click away:

  • Type markdown, get formatting. # for a heading, - for a list, > for a quote, bold, ` code , link, --- for a divider, triple backticks for a code block. All applied as you type, and typing /hr` (or rule, line, separator) reaches a divider too.
  • The keys you already press. Tab from the title drops you straight into the writing, and Tab inside a list nests the item under the one above (Shift+Tab lifts it back). The formatting toolbar is one stop outside the Tab order now, reached with ⌥F10 and driven by the arrow keys, so tabbing through a post no longer walks every button.
  • The slash menu: type / on an empty line for headings, lists, images, embeds, tables and more. WordPress's own dynamic blocks are there too: a Query Loop (with its post type, ordering and count editable from the gear), Latest Posts, Archives, Calendar, Search and the other widget blocks, plus Tabs and Accordion with starter sections ready to fill in. ⌘/ opens the full block library, including your plugins' blocks and entire designs and patterns you can drop in.
  • Paste from anywhere. Word, Google Docs and web pages paste in clean. A pasted image or a lone URL to a tweet or video becomes the real thing, and raw block markup (from an AI tool or a tutorial) pastes in as real, editable blocks. When you want none of that, paste without formatting (Ctrl+Shift+V, or Cmd+Shift+V on a Mac): the clipboard lands as plain text and a video link stays a link instead of becoming a player.
  • Your patterns come along. Patterns you save in WordPress (synced or not) appear in the slash menu and the block library, and a Patterns entry in the Content list manages them. A synced pattern inserts as a live reference: edit the pattern once and every post using it follows, and Minn reminds you of that reach before you save one. An unsynced pattern drops in as a detached copy you can edit freely.
  • Layout blocks open for writing. Groups, columns, covers and media-and-text blocks are writing surfaces, nested to any depth: click in and type, with markdown, the slash menu and paste all working inside, and each column its own surface laid out like the front end. Stackable's columns open the same way, each column its own writing surface. The layout itself (widths, colors, spacing) is preserved exactly, and anything you do not touch saves back byte for byte, so the block editor always reopens the page cleanly.
  • Complex blocks are kept safe, untouched. If a post contains a block Minn's editor doesn't natively edit (a plugin's fancy block, a spacer, a row of buttons), it appears as a framed card rendered with your site's real styling, right where it lives, even inside a group. Hovering the card shows a short note saying why it is protected and where edits live. Its text and images are usually editable in place, and the ⚙ chip holds its settings plus duplicate and move arrows, so a testimonial can hop into the next column without leaving Minn; its structure is preserved byte for byte. A theme's ACF block opens its real fields there, with their own labels, instead of the raw plumbing, and a block that keeps a link only in its markup lists it as an editable field. The words an ACF block shows can usually be typed over right in the preview, and the edit lands in the field they came from; a shortcode in that text shows as a token you click to change, so typing never overwrites it. Its photos open the media picker when you click them, and a set of photos opens the images editor at the one you clicked, changing only that field. Hovering any ⚙ chip outlines the block it configures, so nested blocks read as distinct controls. One click on "Block editor ↗" opens the same post in Gutenberg whenever you want the full toolkit. Posts built with page builders (Elementor, Breakdance, Bricks, Divi and friends) open read-only with an "Edit in your builder" button, because the builder owns that content; the page's row menu in Content offers the same link. Elementor's Exit to WordPress and Brizy's Go to Dashboard open Minn instead when Minn is the default admin. Headers, footers, popups, floating buttons and other site parts live under Templates in Tools (Elementor, and Bricks while it is the active theme): filter by type (WooCommerce types join while Woo is active), rename, duplicate, import or export JSON, restore from Trash, or open the builder in one click. Designing the part itself stays in the builder.
  • Galleries and sliders open an images editor. Hover a gallery-shaped block and the card names the action: click anywhere on it for a tile grid where you reorder (drag or arrows), replace (click a tile), add, remove, duplicate and caption photos. Dropping image files on the grid uploads them into that block. Each photo moves as an exact unit, so its caption and settings travel with it, and this covers sliders and carousels, layouts with a fixed set of openings, and blocks that keep their pictures in settings. A gallery's ⚙ chip also offers columns, crop and random order; link, size and lightbox options stay in the block editor and the popover says so.
  • Groups of styled text open an Edit content window. A container holding several styled blocks (a stats strip of label-and-value paragraphs, say) edits in a roomy window: one card per block with its text front and center and the other settings tucked behind a toggle, plus reorder, remove and add. Enter it from the container's ⚙ chip ("Content · N blocks") or, on protected cards, by clicking the card itself; the block you clicked opens highlighted.
  • Saving is status-aware. Drafts autosave as you write. Published posts never change under you: edits back up silently, and the live post only updates when you press Update. A crash net keeps a local copy of unsaved work in your browser and offers to restore it. That copy belongs to your account on this site, and signing out clears it, so a shared browser never offers your draft to the next person. A live post holding edits you never published wears a small amber dot on its status in the content list, and the Modified filter there shows only those (the filter spans every author, so it is offered to people who may edit others' posts).
  • History shows revisions with side-by-side comparisons, and a revision also reports what changed in the custom fields, so a page whose edits all live in ACF fields no longer claims to be identical. Restore takes one click. If someone else has the post open (in Minn or wp-admin), you will be told before you can both edit it.
  • Start a post from a link, already filled in. A launcher, a desktop widget, a shortcut or another app can open a new post with the document already begun: put the pieces in the address, as in /minn-admin/editor/posts?title=Today%27s+prompt&tags=journal. Title, body (content), excerpt, categories, tags and format are all accepted, /editor/pages starts a page instead, and when the title arrives filled in the cursor starts in the body so you can just write. Everything comes across as plain text, so a link can never put markup into your post. Categories and tags have to be ones you already have; a link never creates a term. Nothing is saved until you write something, and the same address on a post that already exists is ignored, so a link can never overwrite work.
  • Focus modes: ⌘⇧D fades everything but the paragraph you are writing; ⌘⇧O reduces the screen to the text and an outline. ⌘⇧F is find and replace. A word-count pill sits at the bottom right; click it to set a session writing goal.

Custom fields

Many sites carry structured fields beside the post body: a subtitle, an event date, a team list, a page assembled from sections. With Advanced Custom Fields active, all of it edits in Minn (sites using Pods, Meta Box or ACPT get their fields in the same place, ACPT covering the everyday types with its images and the rest editing right on the post, while its dates, repeaters and fields holding a shortcode or HTML are counted as locked, with a link to edit them in wp-admin):

  • Every field group appears. The editor sidebar's Custom fields card opens a dialog with every group that applies to what you are editing, with no plugin settings to change first, and everything saves with the post. A save sends only the fields you changed, so one someone else changed meanwhile keeps their value. Fields show and hide the way their rules intend as you flip the switches that control them, and a hidden field always keeps its value. When ACPT, Pods, Meta Box or another field panel refuses a value (a choice the field does not offer, a number outside its range, a malformed email, an address that is not a web link), the post still saves once, the rest of the fields with it, and the editor names the field that was not saved and keeps it unsaved; what was stored stays, so a refused link never erases the saved one. An ACPT box its plugin shows only to certain accounts or on posts in a certain state stays out of Minn the same way.
  • The everyday types edit in place: text, choices, switches, checkboxes, colors with a real picker, dates and times on the same calendar the editor's scheduling uses, files and images from the media library, and links to other content, where the picker only ever offers what the field allows. Image, file and gallery fields are read-only for someone who cannot use the media library.
  • The structured types are real too. A repeater is a stack of row cards you add, reorder and remove. Flexible content, the field theme page builders are made of, reads as a list of named sections, each opening into its own fields. A gallery field opens the same images editor the editor's gallery blocks use, and a rich-text field opens a focused writing window that hands you back to the dialog when you finish. Anything a row or dialog cannot show is preserved untouched through every edit, reorder and removal, and a new row starts at each field's default, as in ACF's own screen.
  • A few ACF fields stay in wp-admin. Where Minn could not save a field without losing something, it leaves that field to ACF's own screen and counts it as locked: flexible content with sections switched off or renamed in ACF, a repeater holding a taxonomy field that saves terms, and fields that come from a seamless clone. The rest of the post saves as usual.
  • Theme settings pages. ACF options pages (a footer, an announcement banner, a logo strip) live under the sidebar's Site Options entry with their tabs intact, editing the same field types and saving through ACF's own storage, with each page's own permissions honored.

Designing the fields themselves lives under Field Groups in the sidebar, one place shared by every plugin that defines them: ACF and ACPT each list their groups there, and an ACPT group opens the same builder ACF groups use, with its boxes kept as sections and the whole group lifecycle (add, duplicate, delete, export and import in ACPT's own file format) alongside. Open a group into a builder page where fields stack, configure inline, drag to reorder, and save as one change. Location rules edit as readable sentences over your site's real post types, templates and roles; repeaters get their own sub-field builder; and groups export and import as the same files ACF's own tools produce, with an import that updates an existing group in place instead of quietly duplicating it. Field names lock after the first save so stored content can never be orphaned, groups registered in code open read-only because their source of truth is the codebase, and anything the builder does not model keeps an honest pointer to ACF's own editor.

Search appearance

With an SEO plugin active (Yoast, Rank Math, All in One SEO, SEOPress, SiteSEO, SureRank or Squirrly), the editor sidebar carries an SEO panel that edits the plugin's real per-post surface, not a summary of it. The panel opens on a live preview of what the post will look like in a Google result, resolving your plugin's title templates as you type, with length counters on the SEO title and meta description. Below it: search indexing and the robots directives, the canonical URL, the Facebook and X cards with their own titles, descriptions and images, and your plugin's extras such as cornerstone or pillar content, each field in the vocabulary its plugin uses. Everything saves through the plugin's own storage, so its analysis, sitemaps and caches behave exactly as if its screen had saved it, and clearing a field restores the site-wide default rather than storing an empty value. Each plugin's own permission model carries over: fields a plugin reserves for administrators are reserved here too, and the panel appears only where your SEO plugin's own box would (a Contributor under Rank Math gets none). A change the plugin refuses is named after the save, and the rest of the post saves as usual. Building schema stays in your SEO plugin's generator, one click away; the panel shows what the post actually emits.

Daily site care

Comments: approve, reply, edit in place or mark spam. Bulk-select works across the list. WordPress's own Disallowed comment keys list is still under Settings → Comments.

Media: drop files anywhere in the app to upload. Images can be cropped and rotated right in Minn, and regenerating thumbnails is one button when that plugin is installed. The library filters by type, upload month, folder (when a folder plugin is active), files not attached to any post, and Mine, which narrows the grid to your own uploads and remembers that choice between visits. Mine is a view convenience, not a wall: WordPress's own permissions still decide who can access what.

Notifications (the bell) collects what actually needs attention: pending comments, available updates, and Notices.

About Notices: other plugins' wp-admin banners never render inside Minn. Instead, Minn reads them in the background and reduces each one to plain text with its buttons intact, attributed to the plugin that posted it. Act on one ("No thanks", "Allow") without leaving the panel, or press Hide and it stays gone for you, with Undo. This is the calm version of the notice wall, and it is permanent policy: plugins cannot buy space in Minn's interface.

Updates: the Updates tab shows everything pending, and Update everything runs plugins, then themes, then any waiting translations, then WordPress core, telling you exactly what will change and what is untouched before it starts. Plugins, themes and language packs run as one batch, the way the command line does it, and a panel reports it the way a package manager would: every plugin, theme and pack on its own line down one list with its old and new version, packages fetched several at a time before anything installs, then Extracting, Installing and a tick moving down the list, and a closing line with the totals. Hide the panel and the batch keeps running; a chip in the top bar counts it down and reopens it. While WordPress holds the site in maintenance mode for a plugin swap, the panel keeps moving and says so rather than going blank, and a package is only ever installed after Minn's own checksum check has accepted it. When Minn Admin runs on Minn rather than WordPress, the banner, the chip and Update everything offer Minn's own releases instead. Translations are worth calling out because WordPress keeps language packs apart from everything else: a site can be current on plugins, themes and core and still owe translations, so they are counted here rather than left for the WordPress updates screen to mention. While a run is going, a progress pill in the top bar names the current phase and stays visible on every screen, so you can close the panel or move around Minn and still see that updates are working; click it to come back to the panel. Minn updates itself the same way: each release is fetched from the project's GitHub releases and checked against a published checksum before it is allowed to install. After a WordPress core update on multisite, Minn runs the required database upgrade across the network's sites. Very large networks are sent to WordPress's own Upgrade Network screen instead.

Traffic: with a supported analytics plugin active (Koko Analytics, Plausible Analytics, Matomo, Independent Analytics, MonsterInsights, ExactMetrics, Jetpack Stats, Site Kit and others, plus a self-hosted Matomo or Matomo Cloud connected through Connect Matomo), the Overview chart shows the recent pulse: daily visitors and pageviews from that plugin's own numbers. Click a day for its top pages and referrers, and step through days with the arrow keys without closing the dialog. Open stats (also the View traffic stats command in the palette) opens a dedicated page for longer history: ranges up to twelve months, including a custom window inside the last year, with one-click This month, Last month, This year and Last year. Visitor and pageview totals sit above a full-width chart, bars group by day, week or month to fit the range, and clicking a bar opens that period's top pages and referrers. Below the chart, breakdown panels cover the whole selected range: top pages and referrers from every analytics plugin Minn already reads, plus richer dimensions where the provider tracks them. Roles without reporting permission see a plain explanation instead of numbers.

Forms: with a form plugin active (Gravity Forms, WPForms, Fluent Forms, Contact Form 7 with Flamingo or CFDB7, Ninja Forms, Formidable, Forminator, Everest Forms, SureForms, Elementor Pro and Bricks), Forms lists every entry, and an entry opens on its own page: who sent it with their email and phone, what they wrote, the rest of their answers and the plugin's notes. The arrows, or ← and →, step through the list you came from. Reply writes back from the site to the address in the entry (Gravity Forms logs it in the entry's notes); because anyone can put an address in an entry by filling in the form, replying needs the form plugin's permission to email entry notes, or administrator access. Edit answers (Gravity Forms, WPForms Pro, Ninja Forms and Elementor Pro) turns the answers into a form, so a mistyped email can be fixed before you reply, and saves each answer through the plugin's own edit. A checkbox pick the form no longer offers shows ticked and marked "no longer on the form", and stays unless you untick it. Files and payments stay in the form plugin, and if someone else changed an answer while you were editing, Minn asks you to reload instead of overwriting it. A form's own page holds what it sends and shows: Gravity Forms notifications (recipients, routing, conditions, a preview and Send test) and confirmations (a message, a page or a redirect, with conditions), the emails and confirmations of WPForms and Fluent Forms, and Contact Form 7's mail, second mail and messages. Previews fill in the form's latest entry for people allowed to read its entries; anyone else sees the tags as typed. A preview or test email fills in only what the entry holds: its answers, the form, the site, and the submitter's name and email as the entry screen shows them (to a role that may not list users, Gravity Forms shows only the username and WPForms leaves those tags as placeholders). Tags that read more of the submitter's account, the page the form was sent from, or anything another plugin adds stay placeholders, a Gravity Forms test runs no shortcodes and adds no note to the entry, and real emails fill everything in as usual. Gravity Forms forms also open in a builder: add fields from the list or drag them in, reorder, duplicate and remove them, edit their settings, and save through Gravity Forms' own save. Removing a field deletes its answers in past entries, as it does in Gravity Forms, and Minn says so before you confirm. Minn offers only what your edition of each plugin offers: answers are editable where the plugin itself allows it, and Fluent Forms' routing and new emails need Fluent Forms Pro.

With Breakwater active, Forms also carries its log: every comment, sign-up and form submission it checked, filtered to what was held, marked spam or let through, each with the reasons it scored what it did. Not spam hands a held submission back to its form, saved and sent as if it had never been held, and trusts the sender from then on; Was spam marks one that got through. Breakwater's mode (Automatic, Monitor only, Protect or Off) switches on its Settings tab.

Cache and backups: if a caching plugin or host cache is active, ⌘K "Clear site cache" purges all of them at once. If a backup plugin is installed, "Back up site now" is there too, and the System page reports how fresh your last backup is.

Agent Access: on a site running Novamira (the MCP server that lets Claude, Codex, Cursor and other agents work inside WordPress), Tools gains an Agent Access view. Its card says whether AI abilities are on, how many connections exist, how many abilities an agent may call, and the endpoint to copy, with a switch to turn abilities on or off. Connections lists every credential that can reach the site (OAuth apps, client ids, Novamira application passwords) with when it was made, last used and expires, and Revoke on each, run through the plugin's own revocation. Abilities opens on the Context tab holding the instructions every agent session reads, then one switch per ability grouped by category, saved into Novamira's own rules, and an agent cannot switch a disabled ability back on for itself: changes to the switch, the rules, connections and memories need your signed-in browser session, not an agent's application password. Tokens and passwords never appear. With Novamira Pro, the card reports the license (activated from Extensions → Licenses) and a Memory view lists what agents remember between sessions, with edit and delete. Connecting a client, Chat, Design and Skills stay on Novamira's screens. Elementor's own MCP server (Elementor 4.3 and later) appears there too: whether it is on, the same switch Elementor uses, and its connections with Revoke.

Many plugin pages open with a card that charts the last fourteen days: mail providers draw sent and failed, forms providers draw entries, activity logs draw events per day by severity, and bookings draw the fortnight ahead. Where the list beneath can honour it, clicking a bar narrows that list to the day you clicked, with a chip naming the day and clearing it again. It combines with the tabs and the search, so Failed plus a bar is that day's failures. Opening a logged email shows it without loading its remote images, styles or fonts, so reading it never fires a sender's tracking pixel; a bar above the message loads them for that one email when you ask.

Dates and times throughout Minn are on your site's clock, the timezone set in Settings, whatever timezone your browser is in. A booking at 9:00 am reads 9:00 am for everyone who opens it, and the charts count each day on the site's calendar.

Backups and exports start from the Backups page's status card and run in the background, so you can carry on working or close the tab. A pill in the top bar shows how far along the run is on whatever page you are on; clicking it opens a small window with the current step, a progress bar and a Stop button, and the job is still there after a reload. Every finished backup row offers Download from its ⋯ menu or a right-click: the file streams straight from the plugin's own backup folder through a door only your signed-in session can open, so nothing has to be left web-readable and the link cannot be passed around. A backup made of several files hands you a short page with one link per file.

You are in control of the interface

Anything in Minn's menus can be hidden, per user, without touching the site itself:

  • Right-click any sidebar entry, whether a plugin added it or it is one of Minn's own views (Comments on a site that never uses them, Widgets you never touch), and choose Hide for you. Hiding is cosmetic: every screen stays reachable from the command palette and by its address.
  • Right-click a group heading in the block library to hide that plugin's blocks or designs from your menus.
  • Hide any notice from the Notices tab.
  • If a developer already hid admin menus in wp-admin with code (a common client-site setup), Minn notices and keeps those entries out of its sidebar too, automatically: Comments, Media, Users, Plugins and Settings. Like the wp-admin original this is cosmetic; the screens stay reachable by address and from the palette.
  • When White Label CMS hides a plugin's (or a theme's) whole menu from your clients, Minn hides the screens it adds for that plugin from the same people: its sidebar item, its ⌘K entries and its doorway on Extensions. A screen several plugins share (Field Groups, Site Options) goes only once all of them are hidden, and until then hiding one takes only its own list off that screen; a plugin whose content list is still in the menu (Elementor's Templates, say) stays. Minn's own screens, like the store's Orders and Products, stay too, and your White Label CMS Admins still see everything. This tidies the interface rather than locking anything: the plugin still answers to whoever its own permissions allow.

Everything hidden is listed under Your profile, where one click restores it, and an administrator can restore items for you from your entry on the Users page. Hiding is personal: your co-editors see their own layout. Plugins also have hard budgets for how much space they may claim in the sidebar, palette and menus, so the interface stays calm as you install more of them.

Minn in your language

Pick a language on Your profile and all of Minn follows: buttons, table headings, empty states, confirmations, error messages, counts. Twenty-four languages ship with the plugin. Formal variants such as Deutsch (Sie) use the same catalog as the parent language, and Swiss and Austrian German use the German one, so Minn matches the WordPress dashboard instead of staying in English. The switch applies the moment you save; a language you have not installed yet downloads in the background, with plugin translations following behind, so the interface never sits waiting on them. Your pick is yours alone; it never changes what anybody else sees.

Right-to-left languages such as Arabic, Hebrew and Persian get a genuinely mirrored interface: the sidebar, menus and settings move to the correct side, while addresses, file paths and version numbers stay readable left to right inside the surrounding text.

Translations arrive as WordPress language packs through the same update system as everything else. Open Extensions → Translations to see every language whose files are on this site, not only the ones with an update waiting. Each language names how many WordPress, plugin and theme translations it carries, and how many are waiting to update. Update translations runs that queue on its own as one batch, in the same panel Update everything uses, while Check for updates refreshes it alongside plugin and theme updates. Large batches keep their progress visible in the top bar, so you can continue working while they finish. Languages nothing uses get a Remove action that deletes their files and stops the downloads; WordPress otherwise keeps every installed language current forever. The site language and any language a person has chosen on their profile cannot be removed, and the row says which is holding it. On a network every site shares the same language files, so a language another site runs in (its own or the network's default) is kept too, and its row says how many sites use it; on a very large network nothing is offered for removal. A language a multilingual plugin (WPML, Polylang, TranslatePress and others) serves to visitors, here or on another site of the network, is kept and its row names the plugin; when Minn cannot read that plugin's list, every language is kept. Other code that switches the site's language is named when you confirm, so you can check it does not use the one you are removing. Removing is not permanent: WordPress reinstalls a language the moment it is selected again.

Your store

With WooCommerce active, the sidebar gains a Commerce group for Orders, Customers, Products and Coupons. WooCommerce Subscriptions adds Subscriptions, WooCommerce Memberships adds Memberships, a supported appointment plugin adds Bookings, and a supported gift card plugin (YITH, official WooCommerce Gift Cards, or PW Gift Cards) adds Gift cards, all in the same operational group. Every price shows the store's currency on the side WooCommerce's currency position setting puts it ("₹500" or "500 ₹").

  • Orders open as their own page, at their own address, so an order can be linked to or kept in a second tab. The main column holds the work: items with the money broken down, status, payment, refunds, mail and the timeline. The sidebar holds the context: customer, shipping, attribution and other orders from the same customer, each card showing text until its pencil opens the form, and the Customer card has a button to the customer's own page. You can take a payment by hand, refund whole lines or an arbitrary amount, apply or remove a coupon, resend an email and read the order's notes without leaving Minn, and the Back button returns you to wherever the visit started. A resent email says it was sent, and is noted on the order, only once WooCommerce really sent it; Customer note resends the order's latest note. When the payment gateway links its transactions (Stripe's dashboard, for one), the transaction ID carries a "View in" link to that payment. Refund stays in the header; sending an email, copying the payment URL, the WooCommerce link and Move to Trash live behind a More menu.
  • Invoices and packing slips. With PDF Invoices & Packing Slips active, the order page and quick view carry a Documents card with a PDF button for every document, plus the invoice's number, date and notes; its ⋯ menu creates, edits, regenerates or deletes it through the plugin. Changing a number or a date follows the plugin's own rule: someone who manages the plugin, once document data editing is on in its Advanced settings. The orders list gains an Invoice column linking each number to its PDF, and right-clicking an order opens any of its documents.
  • New order opens a page in the same layout: several products (a variable product asks which variation), coupons, a shipping charge, the payment method and transaction ID, a customer from your store (which fills in their details) or a guest, billing and shipping addresses, a note and the starting status. Nothing is saved until you press Create order, and WooCommerce works out discounts, tax and the total as it does. If it refuses a coupon, the page tells you why and no order is left behind. You then land on the new order's page, where Record payment and the emails are.
  • Trashing an order is undoable. Move to Trash (from the More menu or by right-clicking a row) offers Undo, and the list's Trash view holds what was trashed. A trashed order opens read-only, as in wp-admin, with Restore (which puts back the status it had) and Delete permanently, which asks first because it cannot be taken back. An order that started a subscription also asks before it goes to the Trash: WooCommerce Subscriptions cancels the subscription with it, and restoring the order brings the subscription back cancelled.
  • The orders list filters like a storefront back office. One row holds a status view, the search box and Add filter; active filters sit beneath as removable chips. Status accepts more than one at a time, and a date window, customer or product filter narrows on the server, so it survives paging. Filters live in the address, so a filtered list can be reloaded or pasted to someone else. A Payment column shows the method title WooCommerce stored on the order (Stripe, PayPal, a bank transfer). Orders that belong to a subscription carry a small badge that opens a summary of it.
  • Customers open on a page of their own: WooCommerce's order count and total spent, their orders ten at a time, their subscriptions and memberships, and their profile, billing and shipping addresses, each with a pencil to edit it. New order starts an order for them with their details filled in, and the ⋯ menu emails them, lists their orders, opens their user account or deletes the customer.
  • Subscriptions open on their own page in the order page's shape, with editable items and schedule, coupons, a notes timeline and a quick view of related orders. The subscriptions list wears the same filter bar with its own status vocabulary.
  • Memberships (WooCommerce Memberships) is the list of people who hold a plan. It wears the Orders filter bar with the plugin's own statuses (any mix of them at once), a date window, a customer, a plan and the product that granted access, and search by name, email or username. A status card counts active members, the paused and pending-cancellation ones, new this month and those ending within thirty days, and its fourteen-day chart of new and cancelled memberships narrows the list to a day. Clicking a row opens the membership on a page of its own in the product page's shape: plan and status, member since and expiry with a save bar that appears once something changed, the order, product and subscription behind it (with the next payment and last renewal, and a control to link, move or unlink the subscription), notes newest first with a switch to email a note to the member, the member's card with a transfer form, every plan that person holds with an Add a plan control for the ones they do not, and their profile answers. Pause, resume, cancel, set an end date (a past date expires the membership, a future date brings an expired one back, blank means no end) and delete are in the menu, and the same verbs run across a selection from the list. Add member grants a plan to an existing customer by hand.

The Plans view lists every plan with how access is granted, how long it lasts, its member, active and expired counts, and a View members link narrows the members list to that plan; the plan's own page breaks the members down by every status. A plan opens on its own page: name, slug, description, how access is granted (by hand, at registration, or by buying chosen products), how long it lasts, the content and product restriction rules and purchasing discounts as plain lists, and the sections shown in a member's account. Duplicate makes a draft copy; a plan with active members cannot be deleted. A customer's memberships also appear on their customer page. CSV import and export, the members directory and the plugin's emails stay in WooCommerce, one click from the status card.

  • Gift cards (YITH WooCommerce Gift Cards, official WooCommerce Gift Cards, or PW WooCommerce Gift Cards) is the list of cards the store has issued and still owes. When more than one of those plugins is active they share one Commerce item with a provider switcher. The same filter bar Orders uses: status (more than one at a time), a date window, search by code or recipient, and the whole narrowing in the address. A status card leads with the outstanding balance the store still owes, and does not count expired cards. Opening a card shows its code, balance, original amount, recipient and the order it came from, and you can enable or disable it, change the balance, or resend the email. The code copies with one click. Add gift card issues one by hand: amount, an optional code (left blank, the plugin generates one), recipient, message, and whether to send the email now. Product amounts, bulk generation, CSV, PDF and QR stay in the plugin, one click from the card.
  • Products open as a page too, in the order page's shape. The main column holds what the product is: name and summary, pictures, pricing with an optional sale schedule and tax class, inventory (SKU, GTIN, whether you track quantity, backorders, a low stock threshold, the one-per-order limit), shipping (weight, dimensions, shipping class), attributes and variations. The sidebar holds what it is filed under: published or not, product type, categories, tags and brands, the address slug, featured, and linked products. A purchase note sits with the rest. Everything saves together: a bar rises along the bottom as soon as something changes, offering Discard beside Save, so a long product is never a scroll away from either. A save sends only what you changed, so a price an import set while the page was open stays.

Add product (and Product in the New menu) opens this same page over a blank product, with every card there from the start. The product is created when you first save it, as a draft unless you pick another status, and a variable product's variations are saved right after it, in the same click.

The products list wears the same filter bar as Orders. Status is the dropdown (one at a time, because that is what WooCommerce accepts). Stock, category, tag, type, featured and on sale sit behind Add filter and live in the address. Low stock is the store's own low-stock lookup, not a stock status, and it still applies when you search. Search matches the product name or the SKU. Coupons get the same bar with a date window.

A few things follow the product rather than sitting there always. Marking a product virtual removes the shipping fields, because nothing ships. Marking it downloadable adds a Downloads card where you name each file and either paste a URL or pick it from your media library. An external product asks for the address and button text that send shoppers away. A variable product gains a Variations card: give an attribute some values (a store-wide one such as Size offers the terms the shop already has as a ticked list, and a new value can be typed and added) and turn on its Variations switch, then Generate from attributes builds every combination you do not already have. The card reads as a list of what the product sells, one row per variation with its picture, its name, its price and what is available. Click a row to open that variation on its own: attribute values, regular and sale price, SKU, stock status, quantity tracking, and its picture. Cancel leaves it untouched; Done writes it back, and the whole set still saves with the page's Save.

Categories, tags and brands drop a list when you click them, with a tick box per row and a tick where the product already sits. A row toggles without closing the list, and typing searches the whole site. When the term you want does not exist yet, Add new opens a small dialog for it, which is where a category is asked for its parent.

Images are tiles you drag to reorder. The first one is the picture your shop shows, so promoting a gallery photo is a drag rather than a trip to WooCommerce. Click a tile to swap it, hover it for the × that removes it. Adding pictures takes a whole selection at once, from the file dialog or dropped straight in, and names each file as it uploads.

The long description opens in Minn's own editor, with blocks, autosave and revisions, rather than sending you elsewhere, and the editor carries a button back to the product you came from. If you would rather see a product without leaving the list, hover its row and click the eye for a quick look with the same fields, which saves only what you change there too; Open full page takes you to the real product page.

Two jobs stay in WooCommerce on purpose: creating a brand new store-wide attribute, which belongs to the whole shop rather than to one product, and the children of a grouped product.

  • Coupons: Add coupon and every coupon in the list open a page with everything WooCommerce's coupon screen has: the code (with Generate), discount type and amount, expiry, free shipping, minimum and maximum spend, individual use, excluding sale items, the products and categories it applies to, allowed emails and the usage limits. Emptying a usage limit saves it as unlimited and clearing the expiry removes it. Editing a coupon saves only what you changed, so a limit someone raised meanwhile stays. For people who can open orders, the page lists the orders that used the code, twenty at a time with Show more, and says so when it couldn't load them.
  • Store settings is the last item in the Commerce group, for anyone who can manage WooCommerce. It carries a section for each page WooCommerce registers (General, Products, Tax, Shipping, Accounts & Privacy, Emails, Page setup, Features, and any extension's own page), read from WooCommerce's settings registry, so a new extension's settings appear without waiting for Minn. WooCommerce Subscriptions' settings stay on WooCommerce's screen, because its save only accepts its own form. Countries pick from a searchable list, the store location is one country-and-state box, pages are pickers, and saves run through WooCommerce's own save pipeline, so its rules and every extension listening for a save still apply; a switch you did not touch is never flipped. Emails lists every email the store sends with an on/off switch and an Edit for its recipient, subject, heading and format. Payments lists the methods in checkout order: drag to reorder, switch on or off in place, open one for its title, instructions and settings; adding a provider and WooPayments onboarding link to WooCommerce. Shipping shows the zones in the order they are tried, with a zone editor for regions, postcodes and the zone's methods, and shipping classes beside them. Tax rates get a section per tax class, with add, edit, reorder, delete and a CSV export in WooCommerce's own layout. Under Advanced, Webhooks and REST API keys are managed in place; a new key's consumer key and secret are shown once, the way WooCommerce shows them, and never kept by Minn. Editing or revoking a key follows WooCommerce's own rule: you must be able to edit the person the key acts as, or it must be yours. The few controls that are WooCommerce's own React app (email preview, Blueprint, local pickup for block checkout, webhook deliveries) count as locked and link across.

Managing the site

  • Extensions — four tabs: Plugins, Themes, Translations, and Licenses. Translations lists every language whose files are on this site, groups pending packs by language, and names the plugin, theme or WordPress core package behind each download. Languages nothing uses can be removed. Install extensions by search, upload, or dropping a zip on the dialog; uploading a zip of something already installed shows what is installed against what you uploaded and offers to replace it, files swapped, settings and content untouched. Toggle, update and delete with plain confirmations. The version number on every plugin and theme card opens its changelog, one release per chip with the one you are running marked, whether or not an update is pending; with an update waiting, the installed and offered versions are named above the notes. The notes are whatever the plugin's author publishes, so they may not describe the release on offer yet. An active plugin's card carries a row of doorways: chips for every Minn view built on it (Forms for Gravity Forms, Store settings for WooCommerce, its Licenses row) and its own screen in wp-admin for whatever Minn does not cover yet; the right-click menu lists every screen the plugin has, and the provider name in the top bar of a plugin-backed view opens the same menu the other way. Every plugin and theme card carries an Auto pill for WordPress automatic updates, the same setting wp-admin manages, and inactive themes offer a Live preview so you can walk the site in a candidate theme before switching. The Licenses tab gathers every external service relationship in one place: paid plugins' license keys (activate, verify or deactivate without hunting through each plugin's settings screen; a licence whose plugin keeps you off its

own licence screen shows without those buttons), service keys like Akismet's, account connections like Envato Market and WPMU DEV, and the AI connector keys WordPress itself manages, which link out to Settings → Connectors for editing. Small chips mark which rows are service keys or connections rather than licenses.

  • Users — create, edit, change roles in bulk, reset passwords, sign out sessions, and (with the User Switching plugin) switch into an account to see what they see. Add user opens a page of its own: the username and email, the role (starting on the one your site gives new accounts), their language, a password generated for you, and their public profile. WordPress's welcome email, on by default, gives them their username and a link to set their own password; if the site keeps WordPress from sending it, the page tells you instead. Nothing is created until you press Create user. On a network that lets site administrators add users, WordPress keeps editing accounts for network administrators, so a site administrator's page leaves out the language and the email (pass the password on yourself) and returns to the Users list. Where each session came from (its address, browser, sign-in time and expiry) is shown to administrators (on a network, to network administrators) and to the account holder; a role that may merely edit the user sees the count and the sign-out buttons. Opening a user is a full page: identity, public profile, language, password and sessions, plus their Minn appearance. An administrator can set another user's color scheme and defaults there, so a client's Minn looks right before their first sign-in, and restore anything that user hid from their own menus. Light or dark mode stays personal to each person's device, starting from the site's default until they pick one. On a subsite, this page manages site membership rather than network accounts: add an existing account by email or username, change its role, or remove it from that site. Network administrators are protected from per-site role and removal controls. Administrators also get a Role defaults tab: per role, choose what happens after sign-in (person chooses, or always open Minn) and which toolbar that role gets on the public site (person chooses, the Minn bar, the WordPress toolbar, or none). An Every role row leads the table: any role without a setting of its own follows it, including roles a plugin adds later. Enforcement is an overlay, never a write: changing a policy does not erase anyone's saved preference, and a role returned to Person chooses hands each person their previous choice back. If another administrator saved role defaults after you opened them, Minn asks you to reload.
  • Settings — the settings people actually change: identity and logo, reading and discussion, permalinks, visibility (search engines, maintenance mode, and a switch that turns a detected coming-soon or maintenance plugin's mode off in place, with Undo), site language, spam protection (with Akismet or CleanTalk, paste or change your key right on its card), Connectors (AI providers plus spam services like Akismet and CleanTalk: activate the plugin, then paste the key), custom CSS (shown as it is saved, and if someone else saved it after you opened it, Minn asks you to reload rather than overwrite theirs), and Appearance: the palette everyone sees in Minn until they pick their own, and the light or dark mode a device starts in. A save the site refuses leaves the form as you typed it, to correct and try again. The long tail of rarely-touched options deliberately stays in wp-admin, one click away. If you look for a setting and don't find it, that is the reason, not a bug.
  • System — a health check (PHP, HTTPS, caching, backups, loopback), an activity view of what is installed, and debug tools when someone technical asks you to turn on logging. A debug switch that wp-config.php sets in a way a switch could not safely rewrite (more than once, inside a condition, after the line that loads WordPress, or in another file it loads) shows locked with the reason. It also says plainly when a custom post type is hidden from Minn by its own REST setting, naming the post types affected and where the fix lives.
  • Design (block themes) — three tabs: Templates, Navigation and Styles. Styles lists your theme's style variations as swatch cards drawn from each variation's own colors and fonts, with the theme's default first and the active one marked. Applying one asks first, because it changes the site for every visitor immediately, then offers Undo, which restores the exact look you had, including any customizations made in the Site Editor. Every Undo on this tab refuses, changing nothing, if the look changed again since (in another tab or the Site Editor), so it never removes someone else's change. Some sites cannot store a variation's colors and fonts at all: a site on a network, or one whose owner has turned off unfiltered HTML, keeps the layout and drops the palette it refers to. On those the tab says so and does not apply the style, rather than changing half your design and offering an Undo it could not honor. Above the cards, Current look shows what visitors get right now: the palette, body and heading fonts, text sizes, content and wide widths, background and shadow presets, each row opening Minn's own editor at that section (Shadows, which Minn does not edit, links to the Site Editor and says so), and a Customized list that says in plain words what was changed from the theme ("H1 font → Quattrocento"). Reset to theme defaults clears every customization with an Undo, and History lists every saved version of the site's styles with who saved it, when, and what changed, with Restore on each (and Undo after a restore). Edit look turns the card into a short form for the everyday changes: background, text, link, heading, button and caption colors (pick a palette color or type a hex value), body and heading font, a font and size for each heading level from H1 to H6, body text size and line height, page padding, block spacing, and the content and wide widths. Empty fields keep the theme's value, a × next to a field hands it back to the theme, and Save reaches every visitor at once with an Undo. Each style card's ⋯ menu (or a right-click) also offers Use its colors only and Use its type only, so you can take one variation's palette with another's fonts; the Default card's menu resets just the colors or just the type to the theme. A Contrast row grades body text, links and headings against the page background and button text against the button background by the WCAG AA ratio, so a hard-to-read combination shows up here before a visitor finds it. A specimen at the top of the card, a heading, a paragraph with a link and a button, renders with the site's own stylesheet and follows your edits as you type, so a font or color shows itself before you save. Each line in the Customized list names who made that change and when, and History labels a save that matches a style variation as "Applied" with its name. The ⋯ menu on the card copies the look as a theme.json-shaped document and pastes one from another site, replacing this site's customizations with an Undo. Per-block styles, background images and font uploads stay in the Site Editor. Templates answers the question the Site Editor's flat list cannot: which of your theme's templates this site has actually changed. Changed ones sort to the top, and every row says which it is: from the theme, customized here (naming who changed it and when), added here, or contributed by a plugin. Each row also says what uses it: a template you can choose for a page reports how many pages chose it, or says plainly that nothing did, and a template part reports how many templates pull it in, so a leftover from an old design is easy to spot. Templates WordPress reaches by its own rules, such as Index or Single Posts, make no such claim, because they are used by rule rather than by being picked. A customized template can be reset to the theme's version in one step, which hands the theme's own file back rather than deleting anything; your content is not affected either way. Deleting a template names how many pages will fall back to a more general one first, and deleting a template part names how many templates include it. If Minn cannot work out what uses something, it says that instead of telling you nothing does. Template parts have their own tab. Templates a plugin registered are marked as such and offer no delete, because deleting one lasts only until that plugin registers it again. Clicking a template opens it in Minn's own editor: the text is directly editable (a footer's copyright line, the 404 message), layout blocks are preserved exactly, and anything you did not touch is written back byte for byte. Editing one of the theme's own templates creates this site's copy on save (the theme file is untouched), the sidebar flips to Customized, and Reset to theme is right there to undo it. Templates never autosave; saving is a deliberate click. Once this site has its own copy of a template, the sidebar carries History, the same one posts and pages have: every saved version, who saved it and when, any version readable side by side against what is on screen, and one click to put it back. A template still coming straight from the theme has no history to show and says nothing. The Site Editor stays one click away for layout work, and a plugin's templates still open there: while you edit a template or part, the editor's Block editor button (and ⌘K) opens it in the Site Editor, saving what you typed first. Navigation is your site's menus, with the question the Site Editor never answers: where each one actually renders. A menu used in your header says so, and a menu left behind by a previous theme reads as not used, which is usually how you discover you have three. Each row shows how many items the menu holds and when it last changed. Create, rename and delete are here, and deleting a menu your theme is currently rendering names the part that will lose its links before you confirm. Open a menu and you get its items: rename a link, change where it points, drag to reorder, indent one under another to build a dropdown, add a page or a custom link, and remove one with an Undo offered back. Nesting an item under a plain link turns that link into a dropdown, and emptying a dropdown turns it back into a plain link, so you never end up with a menu that opens onto nothing. Only a link or an existing dropdown can take a child, so the indent button is unavailable when the item above is something else. Items that are not links (an all-pages block, social icons, anything a plugin added) are listed and can be reordered or removed, but they are edited in the Site Editor, one click away on every screen. Anything Minn did not edit is written back exactly as it was found, so a menu's styling and blocks Minn has never heard of come through a rearrangement untouched, and a menu holding markup Minn cannot vouch for says so and stays read-only rather than guessing. On a classic theme there is no Design item: navigation lives in Menus, where Minn edits the menu itself and assigns it to your theme's locations, and the theme's templates are PHP files rather than something WordPress can edit.
  • Structure — post types, taxonomies and terms: rename, merge and re-parent categories and tags safely. Post type and taxonomy rows answer a right-click the way the rest of Minn does: open the definition, jump to that type's content, start a new item, manage a taxonomy's terms, or remove an editable definition. Entries only appear where they can actually work. Removing a definition asks first, and spells out that existing content and terms stay in the database. Editing a definition saves only what you changed, and if someone changed it after you opened it, Minn asks you to reopen it. Unticking a taxonomy or feature that another definition, the theme or a plugin adds changes the definition that holds it when you may edit that, and otherwise says where it comes from instead of reporting a change. A new type or taxonomy cannot take a name WordPress already uses for itself (order, author, type and the other query words), because a definition under one of those breaks the site's own queries the moment it exists.
  • Database — a window into where your site actually stores things. Most sites never need it, so it is not in the sidebar: you reach it from the System page's Database card, the command palette ("Browse database"), or the /minn-admin/database address. It has three parts. Tables lists every table with its size and rough row count, and opening one shows its rows, with sorting, a per-column filter and a detail view for any single row. A table follows its plugin's own rule for who may read it: one whose plugin keeps you off its screen (an activity log kept to administrators, form entries or visitor logs you may not read, a booking list held to your own rows) is left out for you, along with the plugin's other tables holding the same data and any copies of them, and a log whose plugin is inactive is left out too. Structure (a tab on any open table) shows that table's columns and indexes, which is what someone technical will ask for when a page is slow. Health runs a set of storage checks: leftover rows pointing at posts or users that no longer exist, missing indexes, tables using an old storage engine, space that could be reclaimed, and backlogs like expired shop sessions. Its checks never name or open a table you cannot browse.

Two things are true of all of it. It is read-only: Minn will never change or delete anything in the database, because doing so behind a plugin's back is how sites break in ways nobody can trace. Credentials are described rather than shown: password hashes, pending reset keys, sign-in session tokens, application-password hashes, WooCommerce API secrets, license keys, the API keys and sign-in tokens plugins store, and the update caches that carry a license key appear as a placeholder with their size, in the list and in the row detail. Searching values skips the rows that hold them, and a column that can hold them cannot be sorted. A column named like a password, secret or token is hidden in every table, other plugins' own tables included, and can't be sorted or searched. A copy of a hidden credential is hidden wherever it sits, even encoded, and value searches leave it out; activity logs still show what they recorded, as their own screens do. To keep that safe, long text columns (a post's content, an option's value) can't be sorted, and a value search may stop at the first 1,000 matching rows, and says so when it does. And where a Health check finds something worth cleaning up, Minn gives you the exact command to run rather than a button that runs it: copy it, back up, and run it yourself or hand it to whoever looks after the site. If you need to genuinely edit the database, that is a job for your host's tools or the WP-CLI command line, and Minn says so plainly rather than pretending otherwise.

Your profile

Your account page covers your name and avatar, password and sessions, interface language (each user can pick their own), appearance (theme mode, color scheme with "Site default" first, and a switch that dresses Minn in wp-admin's fonts and styles for people who live in both), everything you have hidden, and AI Access: application passwords for connecting an AI assistant or other tool to your site over the standard WordPress API, created and revoked per tool. When a role default is in force for your role, the matching switch is replaced by a short locked note that says why; your saved preference is still there if the policy is later returned to Person chooses.

Keyboard shortcuts

Pages that keep your edits until you press Save (the builders, a notification or confirmation, settings forms, products, coupons, a new order, a new user, memberships, Styles) ask before you leave them with unsaved changes, whichever way you leave: the sidebar, ⌘K, a link, or the browser's Back and Forward.

KeysDoes
⌘KCommand palette (with text selected in the editor: link)
⌘SSave, keeping the current status. On any page or dialog with a Save button (the form and field group builders, a notification or confirmation, settings forms, products, coupons, memberships…), presses it. Create order and Create user are left to a click, because they can send an email
⌘Z / ⇧⌘ZOn the form and field group builders and the notification and confirmation pages: undo and redo your last changes (the arrows beside Save do the same). In a box you're typing in, ⌘Z undoes the typing first. History starts over when you save
⌘⏎Publish, Update or Schedule
⌘/Block library
⌘⇧FFind and replace in the post
⌘⇧DFocus mode
⌘⇧OOutline mode
⌘⇧⌥TMove the current block up
⌘⇧⌥YMove the current block down
⌘.Show or hide the navigation
← →Previous / next item in a media or entry dialog; previous / next day in the traffic dialog
EscClose menus and dialogs

On Windows and Linux, use Ctrl wherever ⌘ appears.

Moving a site to Minn

Minn Admin also runs on Minn, the engine that stands in for WordPress under the same database and wp-content. With Minn Admin active, whoever looks after the site on the command line has three WP-CLI commands: wp minn preflight reports what the site will and will not get on Minn and changes nothing; wp minn install downloads Minn from the Minn update service, checks its checksum and release signature, shows that report and, once you confirm, runs the site on Minn, moving WordPress's own files to a folder beside the site while wp-config.php, wp-content and the database stay as they are; and once Minn runs the site, wp minn eject brings WordPress back.

On Minn, Add plugin searches WordPress.org and the plugin catalog as it does on WordPress. Page builders whose editors need WordPress's own scripts (Elementor, Brizy, Beaver Builder, Bricks) keep their "Edit in" links; following one before the Minn Legacy Pack is on offers to install it, then opens the editor, and the Plugins tab offers it too. When a plugin's scripts on your public pages need the pack (WooCommerce's product options and block cart do), the Overview names the plugin and a page where visitors hit it, with the same offer.

Safety, honestly stated

  • Is my content locked in? No. Minn writes standard WordPress data and nothing else. Deactivating or deleting the plugin changes nothing about your content, users or settings.
  • How do updates arrive? From the project's GitHub releases, through the normal WordPress updates screen. Since v0.21.0 every download is verified against a checksum published with the release before it installs, including one a host's package cache hands over; a tampered or broken download refuses to install.
  • Can a plugin misbehave inside Minn? Not in the ways you are used to. Plugins describe their screens to Minn as plain data; their own code never draws inside the app, so a broken or pushy plugin cannot take the interface down with it or plaster it with banners.
  • Can a post's own markup reach Minn? No. Scripts, event handlers and stylesheets inside content stay switched off while you edit, block styles apply only inside the editor, and the post is saved exactly as it was written. When a Contributor or Author previews a block, every plugin's dynamic block code and every shortcode is switched off for that preview, so it cannot show them what they could not read.
  • Will Minn show my keys? No. A licence key, API token or other credential the database browser hides is hidden on every Minn screen, shown as [redacted:…], even inside a log or a link, and whether or not the plugin that stored it is still active. Screens that hand you a key on purpose (WP Migrate's connection info, the Disembark command, one-time login links) still show it. Saving a screen that showed a hidden key keeps the real one; a change that would store the placeholder instead (moved to another field, or edited around) is refused with a message asking for the real value, and an export that would carry a hidden key is refused rather than handed over broken.
  • Who can open /minn-admin/? Only logged-in users your site already trusts to edit content, and each person sees only what their role allows. Everything is re-checked on the server on every action.
  • Could a save in Minn hand my site to someone? No. Whatever a screen in Minn saves, it can't change who runs your site unless the person's own account could make that change in WordPress: opening registration or changing the role new accounts get, changing the site's admin email or address, switching plugins on or off, changing the theme, giving an account a powerful role (Administrator, Editor, Shop Manager) or taking one away, or changing a more powerful account's username, email, password or password-reset link. On a network, a site's administrators can't move their site, change network settings or name a network administrator. Everyday changes go through as before, like WooCommerce Subscriptions making a buyer a Subscriber when their subscription starts. When a save is held back, the screen tells you part of the change wasn't saved.
  • Multisite? Yes. Site members can switch among the sites they may use, subsite administrators can manage local membership, and network administrators get daily Sites, Users, Settings, plugin and theme controls. WP Multi Network adds a Networks directory, network creation and deletion, and guarded site moves between networks. Account creation and deletion, the long settings tail and very-large-network database upgrades stay in Network Admin.
  • Something looks wrong? Hard-refresh first (a cached stylesheet after an update is the usual cause), check the System page's health strip second, and report bugs at github.com/austinginder/minn-admin/issues. wp-admin always remains as the fallback while anything is sorted out.