OpenStation
wp-admin forgets. OpenStation doesn’t. You know the moment. You’re deep in a post and you need one image from the Media Library. You click over, find it, click back, and everything you had going is gone. Your scroll position, your half-typed thought, the three other things you had queued up in your head. That’s not a bug you hit. That’s the design. wp-admin shows you one screen at a time, and every navigation throws the last one away. It has worked this way since 2003, like a fridge that empties itself every time you close the door. WordPress has rebuilt almost everything else. The editor, the site editor, the patterns, the styles. The admin’s one-screen-at-a-time model is the layer nobody touched. OpenStation touches it. Install it and admin screens become draggable, resizable windows. Edit a post while the Media Library sits open next to it. Drag an image from one window straight into the other. Keep comments open in the corner. Reload the browser and your window layout — open pages, positions, sizes, and window states — comes back where you left it. OpenStation itself is free, GPL, and opt-in per user. One click in the admin bar turns it on for you. One click turns it off. Nobody else on your site sees anything change, and deactivating the plugin restores the classic admin exactly. No Core patches and no lock-in. Optional AI providers may charge for their service. Built and maintained by Automattic, the company behind WordPress.com, Jetpack, WooCommerce, and Tumblr. Work on more than one thing at once Admin pages open as windows, including pages added by most other plugins. Drag them, resize them, snap them, tile them, minimize them to a taskbar. The admin menu becomes a dock of icons. Two editors open at once is one click away. Never lose your place Moving between open windows leaves each page in place. Across reloads, OpenStation remembers your open pages, window positions, sizes and states, virtual desktops, and focus. Closing a window with unsaved changes warns you first. A desk you can actually put things on Drop posts, media, and links right onto the wallpaper. Sort them into folders. Trash them to a Trash that actually holds things. The stuff you’re working on this week can just sit out where you can see it. One desktop per job Virtual desktops, the way your operating system does them. One for writing. One for the store. One for comment triage. One for that redesign you keep poking at. Switch between them without closing anything. Find anything with Cmd+K The full WordPress command palette, plus slash commands from your plugins, all under one keystroke. Turn on the optional AI assistant and you can ask it things like “which post had the comment asking for the recipe?” and it searches your own content to answer. (Requires an AI provider configured in Settings → Connectors on WordPress 7.0+. Details under “External services” below.) See how your site fits together The Corkboard is an interactive, zoomable map of how your posts, pages, and products link to each other. Pan around it. Find the orphans. Find the hubs. Running a store? Orders, Products, Coupons, and Customers become browsable folders with stock and sale ribbons. Open a customer to see their lifetime spend and what they buy most. Follow a product to its buyers, or a coupon to who redeemed it. Make it yours Wallpapers, from color presets to animated scenes to your own photo. Live widgets pinned to the desktop: drafts, stats, recent comments, a focus timer. Uploadable desktop themes, including a built-in Legacy theme that brings the old WordPress blue back in one click. And Mio, a soft-body desk companion that drifts across your wallpaper and gets bumped around by your windows. Off by default. You’ll turn it on. For developers Extend OpenStation through documented PHP and JavaScript APIs. Register windows, icons, wallpapers, widgets, commands, and settings tabs through stable openstation_register_* PHP APIs and a typed JavaScript API; customize dock items through documented hooks; add AI tools with the WordPress Abilities API. Copy-paste examples live in the developer docs on GitHub. External services No external service is required for OpenStation’s desktop interface. The optional AI Assistant and two user-initiated enrichment features make the external requests described below. AI Assistant The optional AI Assistant sends data to the AI provider you configure in WordPress’s Settings → Connectors (for example OpenAI, Anthropic, or Google). Generation is routed through WordPress 7.0’s built-in AI Client, which supplies the credentials stored in Connectors. The plugin never handles an API key itself. With no provider configured in Connectors, no external AI requests are made. When the AI Assistant is enabled and a user invokes it (via Cmd+K or the slash-command palette): What is sent: the user’s prompt, the conversation history for the active session, and tool-call metadata. The plugin’s built-in tools (search_posts, search_pages, search_comments) run WordPress’s native keyword search and may include excerpts of the matching posts/pages/comments in tool results, which are then sent back to the provider as part of the agentic loop. When it is sent: on user-initiated AI requests, and (if an administrator enables “Score new comments with AI”) on comment-save hooks for spam analysis. Posts, pages, and taxonomy terms are not sent automatically. Why it is sent: to obtain model completions and tool-call decisions that drive the AI Assistant. Who provides the service: whichever provider you configured in Settings → Connectors. Which provider (and endpoint) receives the data depends entirely on that configuration. Review the chosen provider’s own terms and privacy policy (e.g. OpenAI, Anthropic, or Google). URL shortcut favicons When an authorized user creates a desktop shortcut to an external URL, OpenStation asks that URL for its page HTML and favicon so the shortcut can display the site’s icon. The request is made from your WordPress server and sends the requested URL, the server’s IP address, an OpenStation user-agent string, and normal HTTP request metadata to the operator of that site. This happens only when a user creates the shortcut. The destination site’s terms and privacy policy apply. WordPress.org plugin information When an authorized user opens or refreshes parts of OpenStation’s Plugins window, OpenStation may request public plugin details, update metadata, and review excerpts from WordPress.org. These requests send plugin slugs, the site’s locale, and normal HTTP request metadata to WordPress.org. This information is used only to display and manage plugins. Review the WordPress.org Privacy Policy. OpenStation’s OAuth relay does not contact a service by itself. Third-party plugins that configure the relay may contact their own providers and are responsible for disclosing those services. Credits OpenStation is brought to you by Automattic. The plugin is open source under GPLv2-or-later; contributions are welcome on GitHub. Third-party libraries The plugin bundles the following third-party JavaScript library, loaded on demand only when a feature that needs it is in use: PixiJS (MIT License) — used by the Corkboard window, built-in canvas wallpapers (e.g. the animated WordPress logo), the Mio desk companion, and the Inkfall typing game. PixiJS is loaded from the plugin’s own assets/vendor/ directory; no CDN requests are made. Data files The Inkfall game’s word list (assets/games/inkfall/words.txt) is generated from the following sources (attribution also ships in the file’s header): FrequencyWords by Hermit Dave (CC-BY-SA 4.0) — English word-frequency ranking derived from the OpenSubtitles corpus. english-words by dwyl (Unlicense) — used as a validity filter. LDNOOBW English list (CC-BY 4.0) — used as an exclusion filter.
Top keywords
- wordpress15×1.17%
- ai14×1.10%
- openstation13×1.02%
- open9×0.70%
- pages8×0.63%
- provider7×0.55%
- site7×0.55%
- window7×0.55%
- admin6×0.47%
- ai assistant6×0.47%
- assistant6×0.47%
- click6×0.47%
PSBDx Smart Report Management
PSBDx Smart Report Management turns any WordPress site into a lightweight support desk. Customers report a problem — with an order, a product, a course, or anything else — through a fast AJAX modal that never reloads the page, and every submission lands in a clean, organized admin inbox your team actually enjoys working from. No support-ticket plugin bloat, no separate helpdesk to learn, no per-agent pricing. Just a focused, fast, genuinely useful report and complaint management system that plugs straight into WooCommerce and LearnPress — and, when you want it, hands the busywork of sorting and prioritizing incoming reports to AI. Why site owners choose it It’s instant. Reports submit over AJAX with no page reload, so customers actually finish the form instead of abandoning it. It sorts itself. Turn on AI-assisted classification and every new report gets a suggested category and priority (Low / Medium / High) automatically — you triage a full inbox in minutes, not hours. It gives customers a reference. Every report gets its own unique, human-readable Ticket ID, so a customer can follow up by email or phone and your team can find the exact report instantly. It already knows your store. Reports from a WooCommerce order page auto-link to that order; reports from LearnPress courses, lessons, and quizzes are just as seamless. It fits your workflow, not the other way around. Custom statuses, custom categories, per-form rate limiting, captcha, and a drag-and-drop form builder mean the plugin adapts to how you already work. Key Features AJAX-powered modal report form — no page reload, works anywhere via shortcode Optional AI-assisted triage (WordPress 7.0+): automatically suggests a category and priority for every new report using the built-in WordPress AI Client — gracefully disabled with no impact on the rest of the plugin if you’re on an older WordPress version or haven’t connected a provider “Summarize with AI” on the report edit screen — a plain-language explanation of what the customer is actually reporting, for reports that are long or vaguely worded AI Response Log: a rolling 3-hour audit trail of every AI request and response, so you can see exactly what the AI decided and why Unique, human-readable Ticket ID on every report — the customer’s reference for following up, shown in their confirmation and report history Admin-defined report Categories and Low/Medium/High Priority, settable manually or by AI, editable any time from the report edit screen Drag-and-drop Form Builder: ten field types (name, email, phone, text, paragraph, number, select, radio, checkboxes, captcha), fully reorderable, mobile-friendly Five built-in report statuses with colour-coded badges (Processing, Contacting, Waiting, Solved, Failed), plus unlimited custom statuses E-commerce order auto-link — reports from an order page are automatically linked to that order in the admin, HPOS-compatible Per-form cooldown / rate limiting enforced on both the frontend and the server, so the same user can’t spam a form Captcha support: Google reCAPTCHA, hCaptcha, and Cloudflare Turnstile Admin dashboard widget and admin-bar shortcut with live, at-a-glance unsolved-report counts Built-in FAQ builder with a [psbdx_faq] accordion shortcode for your own site’s visitors Mobile-first responsive design throughout, including iOS safe-area support and a touch-friendly admin experience LearnPress course, lesson, and quiz page support, alongside WooCommerce Reporter identity (name and email) collected server-side from the WordPress session — never editable by the user, so it can’t be spoofed Shortcodes: [psbdx_report id="X"], [psbdx_user_reports], and [psbdx_faq] Also configurable, per form Fully custom report reasons (comma-separated, “Other” always appended) Optional extra fields (e.g. Transaction ID, Coupon Code) Contact field with a required/optional toggle Show or hide the reporter identity card in the form Auto-display on all products/orders/courses, or assign a form per item Perfect for WooCommerce stores that need a fast, structured way for customers to report an order or product problem Online course sites (LearnPress) fielding student questions about a specific course, lesson, or quiz Any WordPress site that wants a lightweight complaint/report/support-ticket system without a heavyweight external helpdesk Shortcodes [psbdx_report id="X"] Display a report button and modal form. Replace X with the Report Form post ID shown in the Shortcode box. [psbdx_user_reports] Display a paginated table of the currently logged-in user’s report history, including their ticket IDs. [psbdx_faq] Display your admin-managed FAQ as a clean accordion, anywhere on your site. Developer Hooks For developers building integrations or extensions on top of this plugin. Report status changes Instead of polling the database, listen for these action hooks — they fire from the one place in the plugin that ever writes a report’s status, so they’re guaranteed to fire exactly once per real change: psbdx_srm_report_status_changed( $report_id, $old_status, $new_status, $context ) Fires for every status change, whatever the new status is. psbdx_srm_report_status_changed_to_{$new_status}( $report_id, $old_status, $context ) Fires only for one specific new status (status run through sanitize_key()), e.g. psbdx_srm_report_status_changed_to_solved. Use this instead of the generic hook if you only care about one transition. $context is an associative array: report_id (int) — same as the first hook argument, included for convenience. ticket_id (string) — the report’s human-readable ticket ID. submitter_id (int) — numeric WP user ID of whoever filed the report, or 0 for a guest. submitter_email (string) — the reporter’s email address, if one was collected. old_status (string|null) — the previous status key, or null if this report never had one before (i.e. this is the very first status it’s ever had, from a brand-new submission). new_status (string) — the new status key. changed_by (int) — numeric WP user ID of whoever triggered the change (typically the logged-in admin editing the report), or 0 for a guest’s own submission or an automated process. updated_at (string) — MySQL datetime in GMT/UTC. updated_at_local (string) — MySQL datetime in the site’s local timezone. source (string) — where the change came from: submission (a brand-new report), admin (the report edit screen), or another value a specific integration may pass. Example: add_action( 'psbdx_srm_report_status_changed', function( $report_id, $old_status, $new_status, $context ) { error_log( sprintf( 'Ticket %s (user #%d): %s -> %s', $context['ticket_id'], $context['submitter_id'], $context['old_status'] ?? '(new)', $new_status ) ); }, 10, 4 ); Note: bulk/maintenance operations that write status directly to the database (CSV import, and the Repair & Reset page’s “fix invalid status values” tool) intentionally do not fire these hooks, since they’re bulk restores rather than individual live status changes. Upcoming Features The following features are planned for future releases: Email Notifications — Notify the admin on new submissions, and send a confirmation email to the reporter. Status Change Emails — Email the reporter automatically when their report status is updated. CSV Export — Export all report logs as a CSV file from the admin screen. File / Screenshot Attachment — Let users attach a screenshot or file to their report. (Added ✅) Internal Admin Notes — Private notes on each report log, visible only to admins. Report Categories / Tags — Organise reports with admin-defined categories for easier filtering. (Added ✅) Guest Email Verification — Allow non-logged-in users to submit with email verification before saving. (Added ✅) Duplicate Detection — Alert admins when a new report closely matches an existing open one. (Added ✅) Report Priority Levels — Assign Low / Medium / High priority to reports, manually or via AI. (Added ✅) REST API Endpoints — Query and manage reports programmatically via the WordPress REST API. AI Knowledgebase Suggestions — Recommend existing help-article answers to reporters based on their report content. (Settings → AI → Knowledgebase — coming soon)