PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.10
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.10
1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 0.8.7 All 34 releases
← All changes | readme.txt +352 -194 0.9.21.1.10 View file →
@@ -1,270 +1,428 @@
1 -=== Desktop Mode ===
2 -Contributors: automattic, allterraindeveloper, epeicher
3 -Tags: desktop, admin, ui, productivity, ai
1 +=== OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin ===
2 +Contributors: automattic, allterraindeveloper, epeicher, mmtr86, nickhamze, nuriapena
3 +Tags: admin, dashboard, desktop, productivity, ai
4 4 Requires at least: 6.0
5 -Tested up to: 7.0
5 +Tested up to: 7.1
6 6 Requires PHP: 7.4
7 -Stable tag: 0.9.2
7 +Stable tag: 1.1.10
8 8 License: GPLv2 or later
9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html
10 10
11 -Reimagines the WordPress admin as a desktop OS with draggable windows and a dock. Per-user opt-in. By Automattic.
11 +A windowed workspace for wp-admin. Open posts, media, and settings side by side, with a dock, virtual desktops, and a Cmd+K palette.
12 12
13 13 == Description ==
14 14
15 -Desktop Mode renders /wp-admin as a desktop operating system. Admin screens open as draggable, resizable, minimizable windows on a desktop, with a left-edge dock built from the admin menu. The classic admin stays untouched for everyone else, and deactivating the plugin restores vanilla Core exactly.
15 +**wp-admin forgets. OpenStation doesn't.**
16 16
17 -Built and maintained by [Automattic](https://automattic.com) — the company behind WordPress.com, Jetpack, WooCommerce, and Tumblr. Zero Core patches: every feature is wired through public WordPress hooks.
17 +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.
18 18
19 -= Highlights =
19 +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.
20 20
21 -* **Per-user opt-in.** An admin-bar toggle flips a user-meta flag; nobody else sees any change.
22 -* **Window system.** Iframe windows load admin pages chromelessly. Native windows render directly in the parent DOM via a public registration API. Both share drag, resize, minimize, maximize, fullscreen, and detach-to-new-tab.
23 -* **Dock + taskbar.** Left-edge dock for core menus; bottom macOS-style pill taskbar for plugin menus. Letter-badge icon fallback for plugins without icon art.
24 -* **Virtual desktops ("Spaces").** Multiple desktops per user, each with its own window set. Overview grid surfaces the Spaces switcher and thumbnails.
25 -* **Arrange & snap.** Cascade, Tile, Overview, Snap-to-grid. Plugins contribute custom entries.
26 -* **Wallpaper & widget registries.** Server- and client-side registration. CSS presets plus canvas (WebGL/2D) wallpapers with collision-aware surface data for snow/rain/physics effects.
27 -* **Desktop icons.** Wallpaper-layer shortcuts that open native windows or admin URLs.
28 -* **AI Copilot (optional).** Cmd+K palette backed by an agentic loop with built-in search tools. Disabled until you supply an API key. See "External services" below.
29 -* **Slash commands & palettes.** Public registration APIs for plugin authors.
30 -* **Cross-frame drag bridge.** Media-library attachments drag across iframe boundaries.
31 -* **Session persistence.** Window stack (including desktops, focus, state) restored across reloads.
32 -* **i18n.** Full gettext coverage across PHP and TypeScript; Spanish translation shipped.
21 +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.
33 22
34 -= For plugin authors =
23 +OpenStation touches it.
35 24
36 -Desktop Mode is built to be extended. Every significant behavior is hookable — add a desktop icon, register a dock item, gate desktop mode by role, react to window events, or register a native window, all from your own plugin with zero patches here.
25 +https://www.youtube.com/watch?v=g5MLB3WMlCc
37 26
38 -Comprehensive PHP and JavaScript hook surface, plus stable `desktop_mode_register_*` functions for windows, widgets, wallpapers, icons, window tabs, commands, settings tabs, and AI tools. See the [developer docs on GitHub](https://github.com/WordPress/desktop-mode/tree/trunk/docs).
27 +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.
39 28
29 +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.
30 +
31 +Built and maintained by [Automattic](https://automattic.com), the company behind WordPress.com, Jetpack, WooCommerce, and Tumblr.
32 +
33 += Work on more than one thing at once =
34 +
35 +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.
36 +
37 += Never lose your place =
38 +
39 +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.
40 +
41 += A desk you can actually put things on =
42 +
43 +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.
44 +
45 += One desktop per job =
46 +
47 +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.
48 +
49 += Find anything with Cmd+K =
50 +
51 +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.)
52 +
53 += See how your site fits together =
54 +
55 +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.
56 +
57 += Running a store? =
58 +
59 +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.
60 +
61 += Make it yours =
62 +
63 +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.
64 +
65 += For developers =
66 +
67 +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](https://github.com/WordPress/openstation/tree/trunk/docs).
68 +
40 69 = External services =
41 70
42 -This plugin's optional **AI Copilot** sends data to **OpenAI** (`https://api.openai.com/v1/responses`) when, and only when, an administrator configures an OpenAI API key in **Settings → AI**. With no key configured, no external requests are made.
71 +No external service is required for OpenStation's desktop interface. The optional AI Assistant, two user-initiated enrichment features and an optional feedback form on deactivation make the external requests described below.
43 72
44 -When the AI Copilot is enabled and a user invokes it (via Cmd+K or the slash-command palette):
73 +**AI Assistant**
45 74
46 -* **What is sent:** the user's prompt, the conversation history for the active session, the chosen model identifier (e.g. `gpt-4o-mini`), 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 OpenAI as part of the agentic loop.
47 -* **When it is sent:** on user-initiated AI requests, and (if enabled) on comment-save hooks for spam analysis. Comment spam analysis runs server-side as part of the comment-insert flow. Posts, pages, and taxonomy terms are not sent automatically.
48 -* **Why it is sent:** to obtain model completions and tool-call decisions that drive the AI Copilot.
49 -* **Who provides the service:** OpenAI, L.L.C. — see the [OpenAI Terms of Use](https://openai.com/policies/row-terms-of-use/) and the [OpenAI Privacy Policy](https://openai.com/policies/row-privacy-policy/).
75 +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.
50 76
51 -The AI Copilot's provider layer is also extensible: third-party plugins may register additional providers via `desktop_mode_register_ai_provider()`. Those providers may send data to other endpoints; review each plugin's own privacy disclosure separately.
77 +When the AI Assistant is enabled and a user invokes it (via Cmd+K or the slash-command palette):
52 78
53 -No other external services are contacted by this plugin.
79 +* **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.
80 +* **When it is sent:** on user-initiated AI requests only. Nothing is sent automatically — posts, pages, comments and taxonomy terms are never analyzed in the background.
81 +* **Why it is sent:** to obtain model completions and tool-call decisions that drive the AI Assistant.
82 +* **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).
54 83
84 +**URL shortcut favicons**
85 +
86 +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.
87 +
88 +**Deactivation feedback**
89 +
90 +When an administrator deactivates OpenStation, a dialog asks one optional question about why. Nothing is sent unless you click **Send and deactivate**; **Skip and deactivate** sends nothing, and both deactivate the plugin.
91 +
92 +* **What is sent:** the reasons you ticked, the optional details you typed, the OpenStation, WordPress and PHP versions, your site language, whether the site is a network, how long OpenStation was installed, whether anyone on the site had turned it on (how many people, and how many days after install the first one did), whether the person deactivating had it on, the number of active plugins, and where the dialog was shown. Nothing that identifies you or your site: no URL, no site id, no email, no user name, no plugin names, and no IP address is stored. Each submission carries a random id used only to ignore an accidental retry.
93 +* **When it is sent:** only when you click Send in the dialog shown on deactivation. There is no background ping.
94 +* **Why it is sent:** to learn what did not work so it can be fixed.
95 +* **Who provides the service:** the request goes from your server to [openstation.blog](https://openstation.blog/), the plugin's own site, operated by Automattic. Review the [Automattic Privacy Policy](https://automattic.com/privacy/). Site owners can turn the dialog off with the `openstation_deactivation_feedback_enabled` filter.
96 +
97 +**WordPress.org plugin information**
98 +
99 +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](https://wordpress.org/about/privacy/).
100 +
101 +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.
102 +
55 103 == Installation ==
56 104
57 -1. Upload the plugin folder to `/wp-content/plugins/`, or install via **Plugins → Add New → Upload Plugin**.
58 -2. Activate the plugin through the **Plugins** screen in WordPress.
105 +1. Install via **Plugins → Add New** (search for "OpenStation"), or upload the plugin folder to `/wp-content/plugins/`.
106 +2. Activate the plugin through the **Plugins** screen.
59 107 3. Click the **desktop** icon in the admin bar's top-right corner. The admin reloads inside the desktop shell.
60 108 4. Click the same icon again at any time to return to the classic admin.
61 109
62 -= Optional: enable the AI Copilot =
110 += Optional: enable the AI Assistant =
63 111
64 -1. Open **Settings → AI** inside desktop mode.
65 -2. Paste an OpenAI API key and pick a model.
66 -3. Press **Cmd+K** (or **Ctrl+K**) anywhere in desktop mode to open the AI palette.
112 +1. In **Settings → Connectors**, set up an AI provider (OpenAI, Anthropic, or Google). Requires WordPress 7.0+.
113 +2. In OpenStation, open **OpenStation Preferences → Features** and turn on **AI assistant** (it's off by default).
114 +3. Press **Cmd+K** (or **Ctrl+K**) anywhere in OpenStation to open the AI assistant.
67 115
68 116 == Frequently Asked Questions ==
69 117
118 += Isn't this just a gimmick? =
119 +
120 +The desktop look is the visible part, so it's a fair question. But the look is a consequence, and the mechanism underneath is the point: windows hold their state, so switching tasks stops costing you your place. wp-admin is a single-document interface where every navigation destroys the last screen. OpenStation replaces that with the same concurrency model your operating system has used for decades. The research behind it goes back to Henderson and Card's "Rooms" paper at Xerox PARC in 1986. The wallpaper is just what that model looks like when you build it.
121 +
122 += Will this slow down my site? =
123 +
124 +OpenStation's desktop interface and browser assets are loaded only inside wp-admin, and only for users who have turned it on. Its PHP integration still participates in normal WordPress request handling where needed, including tracking content changes, but visitors never receive the desktop UI.
125 +
70 126 = Does this change anything for users who don't opt in? =
71 127
72 -No. The classic admin is untouched until a user toggles desktop mode on for themselves. Deactivating the plugin restores vanilla Core exactly.
128 +No. The classic admin is untouched until a user toggles OpenStation on for themselves. Deactivating the plugin restores vanilla Core exactly.
73 129
130 += Does it work with my other plugins? =
131 +
132 +Most plugin admin pages open as windows without special integration. Plugins that depend on running in the top-level browser context or use unusual navigation may need compatibility work. Plugins can also register their own native windows, widgets, and commands for a deeper integration.
133 +
74 134 = Does the plugin require an external service to function? =
75 135
76 -No. The desktop shell, windowing, dock, taskbar, virtual desktops, widgets, wallpapers, and all extension APIs work entirely on-site. The AI Copilot is the only feature that contacts an external service, and it is disabled until an administrator configures an API key. See "External services" in the description.
136 +No. The desktop shell, windowing, dock, taskbar, virtual desktops, widgets, wallpapers, and extension APIs work without an external service. The optional AI Assistant requires a configured AI provider. OpenStation also makes limited, user-initiated requests to resolve URL-shortcut favicons and display WordPress.org plugin information, and offers an optional, one-click feedback form when you deactivate. See "External services" in the description.
77 137
78 138 = Does it patch WordPress core? =
79 139
80 140 No. Every feature is wired through public WordPress actions and filters.
81 141
82 -= How do I disable desktop mode for my user? =
142 += How do I turn OpenStation off for my user? =
83 143
84 -Click the desktop icon in the admin bar a second time to flip the toggle off. The plugin can also be deactivated globally from the Plugins screen.
144 +Click the desktop icon in the admin bar a second time. The plugin can also be deactivated globally from the Plugins screen.
85 145
86 146 = Where is the developer documentation? =
87 147
88 -In `docs/` inside the plugin, and on [GitHub](https://github.com/WordPress/desktop-mode/tree/trunk/docs). The hook reference, JavaScript reference, bridge protocol, and copy-paste examples all live there.
148 +In `docs/` inside the plugin, and on [GitHub](https://github.com/WordPress/openstation/tree/trunk/docs). The hook reference, JavaScript reference, bridge protocol, and copy-paste examples all live there.
89 149
90 150 == Screenshots ==
91 151
92 -1. The desktop shell — wallpaper, dock, taskbar, and a window with the admin loaded inside it.
93 -2. Multiple windows open across virtual desktops (Spaces).
94 -3. The AI Copilot Cmd+K palette in action.
95 -4. Custom wallpapers and widgets registered by a plugin.
96 -5. The Arrange menu — Cascade, Tile, Overview, Snap to grid.
152 +1. Real multitasking: your posts, your preferences, and the Trash open side by side as windows.
153 +2. Make it yours: accent colours, wallpaper presets and animated scenes, and a dock on whichever edge you like.
154 +3. Find anything with Cmd+K: the Site Assistant opens admin pages, runs commands, and answers questions about your content.
155 +4. Give an AI agent its own instructions and tools, then set it to work on your posts, media, and comments.
156 +5. Live widgets on the wallpaper: post stats, recent comments, drafts, a notepad, and more from your plugins.
157 +6. Mio, your desk companion, tuned to whatever shape, colour, and mood suits you.
158 +7. One desktop per job: keep writing, the store, and moderation on separate Spaces.
159 +8. Games built into the desktop, with a scoreboard shared across everyone on your site.
160 +9. Corkboard: a zoomable map of how your posts and pages link together.
97 161
98 162 == Credits ==
99 163
100 -Desktop Mode is brought to you by [Automattic](https://automattic.com). The plugin is open source under GPLv2-or-later; contributions are welcome on [GitHub](https://github.com/WordPress/desktop-mode).
164 +OpenStation is brought to you by [Automattic](https://automattic.com). The plugin is open source under GPLv2-or-later; contributions are welcome on [GitHub](https://github.com/WordPress/openstation).
101 165
102 166 = Third-party libraries =
103 167
104 168 The plugin bundles the following third-party JavaScript library, loaded on demand only when a feature that needs it is in use:
105 169
106 -* **[PixiJS](https://pixijs.com/)** (MIT License) — used by the interactive **OS Settings → About** scene, the **Content Graph** window, and built-in canvas wallpapers (e.g. the animated WordPress logo). PixiJS is loaded from the plugin's own `assets/vendor/` directory; no CDN requests are made.
170 +* **[PixiJS](https://pixijs.com/)** (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.
107 171
172 += Data files =
173 +
174 +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):
175 +
176 +* **[FrequencyWords](https://github.com/hermitdave/FrequencyWords)** by Hermit Dave (CC-BY-SA 4.0) — English word-frequency ranking derived from the OpenSubtitles corpus.
177 +* **[english-words](https://github.com/dwyl/english-words)** by dwyl (Unlicense) — used as a validity filter.
178 +* **[LDNOOBW English list](https://github.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words)** (CC-BY 4.0) — used as an exclusion filter.
179 +
108 180 == Changelog ==
109 181
110 -= 0.9.2 =
111 -* Persist welcome-dialog dismissal when Desktop Mode is disabled
112 -* Welcome dialog reappears on every page when the admin is served from an origin that differs from `site_url`
182 += 1.1.10 =
183 +* Fix: drop a plugin zip into Core's upload box, not the Media Library dialog
184 +* Multisite: Open sites without OpenStation in a browser tab
185 +* Preferences: Open from the network admin shell
186 +* Network app: Open from a desktop icon instead of a dock tile
187 +* Highlight the best matching control in Preferences search
188 +* Fix: External apps work on activation without needing to refresh
189 +* Multisite: Drop Site Spaces from the Network Admin tile comments
190 +* Multisite: Route My Sites and network Sites links out of the window
191 +* Remove AI comment scoring from the shell
192 +* Add responsive grid, app frame, and resizable split layouts
193 +* Default theme: toning down accent
194 +* Separate hidden columns for posts and pages
195 +* Fix: keep metabox screens two-column down to 796px
196 +* Overview: Merge the two edit controls on desktop tiles
197 +* Plugins: Add AllTerrain MAIA to the Featured tab
198 +* Ask one optional question when OpenStation is deactivated
199 +* Plugins: Add a Plugin File Editor tab to the native Plugins window
113 200
114 -= 0.9.1 =
115 -* Make native list windows opt-in (Beta) instead of opt-out
116 -* Scope AI to comment spam + native-search assistant
117 -* Feat/unfocus window effects
118 -* Fix placement, gear/Help, and dock⇄desktop visibility bugs
119 -* Fix Guidelines-experiment 404 noise, duplicate welcome dialog, and unused-preload warnings
120 -* Add "View activity footprint" row action in Users list
201 += 1.1.9 =
202 +* Add saved Plugins table view and fix preserved table rendering
203 +* OS Settings: let a registered settings tab name its sidebar glyph
204 +* Fix timeout stalled plugin updates
205 +* Fix dock overlap on maximized and snapped windows
206 +* Posts: paint plugin columns on the writing-desk cards
207 +* My WordPress: gate the user dossier aggregates on the viewer
208 +* Add window-scoped MIO assistance and private Settings actions
121 209
122 -= 0.9.0 =
123 -* Gate per-user REST routes on desktop mode enabled
124 -* Refine recycle bin badge styling and sync on stop
125 -* Clear comments selection after applying action
126 -* Don't let a failing sync block the agent
127 -* Make the AI-disabled error link to AI Settings
210 += 1.1.8 =
211 +* Files: add uploaded files to the Media Library, and start a post or page from an image
212 +* Add minimize and restore dock animations.
213 +* Fix native app windows restoring the wrong saved instance
214 +* Fix Native Users tables action icons visibility
215 +* Add optimistic Trash updates and Explorer previews
216 +* Redesign native Plugins, Posts, Pages, and Users workspaces
217 +* Multisite: an OpenStation network of separate installs, with one switcher on every one
218 +* Add the data-model page and unbreak the wiki sync
219 +* Network: log in on arrival, mark external sites, and keep the switcher live
220 +* Harden stored-file cleanup and make presence updates atomic
221 +* Network: opt-in through an extended option, off by default
222 +* Fix agent request timeouts and stale Recycle Bin contents
223 +* Make preloading and shared cache opt-out Extended options
224 +* Post Stats: draw the chart chrome in tokens instead of hardcoded black
225 +* Preserve preferences on theme switch
226 +* Os-text-field: add hide-label so a compact field can have a name without a visible label
227 +* Widgets: raise the frame's chrome buttons to the 24px target-size floor
228 +* AI Copilot: keep password-protected posts out of the search abilities
229 +* Agents: seal password-protected posts in the get-post ability
230 +* AI Copilot: gate comment search on parent-post readability
231 +* My WordPress: scope the term-stats endpoint to posts the caller may read
232 +* AI Copilot: authorize the model-named entity id before building the entity card
233 +* My WordPress: gate the comment dossier on the window capability and parent-post readability
128 234
129 -= 0.8.9 =
130 -* Improve drag-and-drop handling in chromeless bridge and iframe bridge
131 -* The whole shell loads faster, especially the first time you open wp-admin
132 -* Open an app from the wallpaper or from the dock — it's the same window now (no more two copies floating around)
133 -* Minimize a window and the dock icon shows it's minimized — even if you opened it from the desktop icon
134 -* Click "+ New" twice and you get two editors. Drafting a post and want to start another? Just click again
135 -* "Switch to Desktop Mode" always takes you to the dashboard, so you know where you're starting from
136 -* Resizing a window and accidentally letting go over the desktop no longer minimizes everything
137 -* WooCommerce: the "Add Order" button is back on the Orders page
138 -* "Add New" buttons (Add Post, Add Order, Add anything) stay visible inside every plugin page
139 -* After we ship a fix, you get it on your next page load — no more "try refreshing twice"
235 += 1.1.7 =
236 +* Files: paint a dropped folder's tile as soon as it exists
237 +* Shell: keep third-party scripts out of os-* fields and fixed panels out of the dynamic bar
238 +* Files: drop the marching-ants frame from the wallpaper drop highlight
239 +* WP Explorer: hover card off, preview pane only when open; Note Pad: drop the Public checkbox and Pin button
240 +* Admin bar: keep items the bar's height; shell starts below the bar's measured edge
140 241
141 -= 0.8.8 =
142 -* Align dock badge with in-window update count
143 -* Make every dock scrollable, keep system tiles pinned
144 -* No more flash when you create, move, or delete a file or shortcut on the desktop
145 -* Trashing a folder that contained other folders now works (used to silently fail)
146 -* Drag an image from the Media Library straight into a Gutenberg post, it now inserts
147 -* Edit User screen: the form is centered instead of pinned to the left
148 -* Title-bar icons (Help, etc.) are now visually centered
149 -* Sticky notes powered by WP Guidelines
242 += 1.1.6 =
243 +* Fix: Script loading: read the concat blob's handle list, so a lazily-loaded package stops replacing wp.hooks
244 +* Fix: Shell boot: a target is one-shot and must be a real page, so a reload stops opening an empty window
245 +* Add close all windows keybinds.
246 +* Multisite: support the network admin, and scope desktops per site
247 +* App Framework — a window in one PHP file (.osx.php + optional .os.ts), Code Blue & WP Explorer rebuilt on it
248 +* App Framework DX: warn on the silent footguns, trace dispatches, open client views to third parties
249 +* Trash: the Recycle Bin rebuilt on the App Framework — 659 lines against 1,869, the frozen id claimed, the legacy window deleted whole
250 +* Station Home: the native Dashboard rebuilt on the App Framework — 931 lines against 1,323, no client script, the legacy window deleted whole
251 +* WP Explorer: a list view — ids, slugs, dates and counts in sortable columns, remembered per user
252 +* OpenStation Preferences: the settings window rebuilt on the App Framework — 4,858 lines against 7,136, the panel bundle deleted whole
253 +* WooCommerce orders open on new window
254 +* Multisite: drop deleted sites' tables, Core parity for site admins, per-site PWA, and a multisite CI job
255 +* [Proposal] Workspaces — desktops that know what they're for
256 +* Fix portal redirect: leave sub-resource fetches alone, so Jetpack's admin-bar sparkline renders
257 +* Multisite: Site Spaces — another admin opens on its own desktop
258 +* App Framework: find an app's client bundle without its TypeScript source, so packaged installs open client-view apps
259 +* Code Blue: read the error without resizing, and a read-only skill that investigates it
260 +* Drafts: name a draft's window after the draft, not the whole row
261 +* Mobile: the phone layer — wp.os.mode, full-screen apps, switcher, tab bar
262 +* Mobile: one desk on a phone — fold every desktop, switch workspaces off
263 +* Mobile: fit the installed app to a phone — display stamp, no zoom, anchored tab bar
264 +* Mobile: the native apps on a phone — one tap, one pane, pinch, and a self-updating PWA
265 +* PWA: the shell never reloads itself — a waiting worker, a build stamp, and a Reload the user takes
266 +* Chromeless: fix in-page title actions a plugin has grouped
267 +* Drafts: fix the row's interaction states and name its actions
268 +* App icons: full-bleed tiles, three purposes, and an apple-touch-icon
269 +* Mobile: the list windows as cards, a bin that looks full, Explorer's item as a page
270 +* Apps: Posts, Pages, Users, User Edit, Plugins and Comments become App Framework apps
271 +* Mio: the inner line the artwork always had
272 +* Preserve rapid extended options saves
273 +* Multisite: every site is its own OpenStation, with a site switcher in overview
150 274
151 -= 0.8.7 =
152 -* Bump Tested up to WordPress 7.0
153 -* Fix plugins window stale-nonce 'Cookie check failed' on long-running sessions
154 -* Fix plugin .zip drop routing to Media Library uploader
155 -* Add server-side search to entity list views
156 -* Rename Browse tab to Add Plugin
157 -* Drag and drop improvements
275 += 1.1.5 =
276 +* Add OpenStation Beta: install builds from PR branches, trunk, or stable
277 +* Pin every action to a commit SHA, prune closed PRs' zips from ci-artifacts
278 +* Shell screen: boot the desktop from its own admin page instead of riding on the Dashboard
279 +* Register --wp-admin-theme-color so chromeless documents never compute it to transparent
280 +* Sync active Post/Page tab when navigating to Add Post from the Dock
281 +* Attribute columns save to active window id
282 +* Hotfix: a dock flyout holds a rail out, it never summons a parked one
283 +* Revisions: open the revision browser in its own window
284 +* Two low-contrast fixes in native windows: the shell document leaves quirks mode, and a neutral crumb stops pinning its paint inline
285 +* Window channels: one set of books, so a window can leave its loading overlay
286 +* Command palette: a harvested command that throws says so, instead of nothing at all
287 +* Widgets: declare the card's token contract, so a widget's muted text stops landing at 3.81:1
288 +* In-window navigation: ask before painting, so a cancelled "Leave site?" stops stranding the window
158 289
159 -= 0.8.6 =
160 -* Light indicators for native-window-target dock icons
161 -* Additional fixes and polish
162 -* Add compatibility layer for Divi script dependencies and tests
163 -* Show plugin icons
164 -* Open off-site menu items in a new browser tab
290 += 1.1.4 =
291 +* Tooling: a deterministic boot-cost measurement for the shell document
292 +* Native-window script data ships once per handle, not once per window (boot document −8.9%)
293 +* The boot config ships references, not copies (boot document −12.8%)
294 +* The shell-bundle diet — five features leave desktop.min.js (−21% vs the v1.1.3 release)
295 +* Tooling: mirror docs/ into the GitHub wiki on every trunk push
296 +* Purge pre-1.0 history and reconcile every page with the code
297 +* Agents: give the cast faces, and rebuild create as a guided flow
298 +* Shared admin-asset cache + hover window prewarming (opt-in)
299 +* The shell asks the service worker for a screen before you click it
300 +* Fix: Sub-pages within main page are not shown in dock menu
301 +* Fix: Tile icons in the wallpaper can't display correctly some characters
302 +* Windows stop paying for a command palette they never show
303 +* The command palette stops costing every window and every boot
304 +* Sync layout and status on settings rollback
305 +* Decode HTML entities in Corkboard titles.
306 +* A window stops building the admin bar it never draws
307 +* Perf regression sweep: every finding, fixed
308 +* Show a loader in place for every lazy-loaded surface
309 +* Corkboard: keep a sparse board centred and explained
310 +* The shell stops bouncing /wp-admin/ through the portal
311 +* Trash: Hide the list chrome while the bin is empty
312 +* Status ring: report classic form saves, and stop reporting reads
313 +* Dynamic dock: auto-hide behavior setting, and one shared work area so windows, widgets, icons and graphs stay clear of the dock
314 +* Adding Nuria as a contributor
165 315
166 -= 0.8.6-rc1 =
167 -* Tag cloud & category mindmap: search, clustering, server cache
168 -* Drag & Drop from local desktop
169 -* Implement loading skeletons and staggered animations for file tiles
170 -* Arrow-key shortcuts + Overview-from-Show-Desktop fix
171 -* Shortcuts popover, dock-style tooltips, reorder
172 -* Add Featured Plugins View and Ribbon Component
173 -* Add "Automatic Updates" column and related functionality to Plugins window
174 -* Add window notices feature with persistent dismissal and server sync
175 -* Polish four framework surfaces for plugin authors
176 -* Disable focus on other window actions
177 -* Add Media section to "My WordPress" + uniform preview-pane hook surface
178 -* Refactor My WordPress to use `<wpd-tile>` + add post status ribbons
179 -* Allow deactivating plugins in CMO desktop & dock
180 -* OS-file drop — progress UI, live refresh, cancel cleanup, CMO
181 -* Group-by selector + click-to-deselect + focused-icon centering
182 -* Test against PHP 8.3 and 8.4
183 -* Enhance minimize/restore behavior to preserve pre-minimize state and add cross-state transition tests
316 += 1.1.3 =
317 +* Refresh file associations when openers change
318 +* Add Code Blue, the error-log reader app
319 +* Station Home: stop claiming Dashboard subpages
320 +* Add MailPoet compatiblity
321 +* Station Home: make it opt-in via OS Settings → Features
322 +* Components: the missing-import demo shows the code it talks about
323 +* Desktop icons: one reading order per canvas, and a bounded scan
324 +* Trash: localize config before the lazy payload harvest
325 +* Corkboard: disc nodes by default, pins one row away
326 +* Unfocus effects: split view is not "behind"
327 +* Menu-refresh probe: attach script data before the payload harvest
328 +* Windows: companion stylesheets, and the Woo CSS stops riding every page
329 +* Plugin icons still missing
330 +* Defer every window stylesheet to first open; fix shared-bundle configs; real theming tokens in Users/Profile
331 +* Virtual desktops: rename in place, and four overview fixes
332 +* Defer the command palette's Gutenberg runtime to first ⌘K
184 333
185 -= 0.8.5 =
186 -* Shared folders, heartbeat widget, and heartbeat-pipeline hardening
187 -* Recycle Bin: show item type badges inline next to title
188 -* Plugins window: expandable rows with rich plugin details
189 -* Remember native window size across opens
190 -* Fix blank plugin icons in the Plugins window
191 -* Restore "Show desktop on wallpaper click" as an opt-in setting
192 -* Fix plugin update refresh, dock badge, and stuck-row failures
193 -* Trash bin polish: URL badge, live placement badge, no media auto-trash
194 -* Throw on empty REST body to avoid TypeError after self-replace
195 -* Hide Media filter tab when MEDIA_TRASH is off
196 -* Sequence openCurrentPage after restoreSession to avoid duplicate windows
197 -* Fix window refresh issue on new sessions
334 += 1.1.2 =
335 +* Window: the open-animation deadline must not outlive its window
336 +* Update notice: show the vinyl card when the release post lands late
337 +* Add native Station Home dashboard
338 +* Explorer: better third party apps integration
339 +* Icons: adopt @wordpress/icons and draw the shell from one set
340 +* Files: a drag out of the Media Library lands on the desktop
341 +* Preserve and forward select host aria-label
342 +* Navigation: one model decides where every menu, app and control lives
343 +* Take the shell off the editor's typing path
344 +* Widgets: reveal the add button on hover and snap floating widgets to a grid
345 +* Appearance → Editor: the window's tab strip goes dark once the site editor loads
346 +* Replace About scene with RSS-powered journal
347 +* Tests: End the About CSS slice at the next section, not a named one
348 +* Dock: keep off-site admin menus out, and put the wp-admin originals back
198 349
199 -= 0.8.4 =
200 -* Faster Desktop Mode, main bundle cut by 59 %
201 -* "Edit Post" from the front-end admin bar opens nothing
202 -* Cross-page admin-link clicks: state, destructive actions, referer hint
203 -* Warn loudly when a `<wpd-*>` tag is used without being imported
204 -* Support re-uploading existing plugins, add post-install Activate panel
205 -* Restore the full WordPress command palette inside Cmd+K
350 += 1.1.1 =
351 +* My WordPress: let the entity hover card follow the desktop theme
352 +* Expose and sync status ribbons setting
353 +* Load window, wallpaper and widget bundles on demand
354 +* Components: add <os-field-row>, <os-token-field> and <os-repeater>
355 +* Windows: guard focus(), unstick the opening class, add child windows
356 +* Files: make the conflict toast's "View folder" actually open the folder
357 +* Notch: place it behind the windows
358 +* Update the wp.org screenshots for the current shell
359 +* Windows: make Reload a common action for native windows too
360 +* Themes: answer every palette literal in the Legacy snapshot
361 +* Settings: open the Custom accent's colour wheel on its own swatch
362 +* Components: a dark dialog owns its surfaces, not just its text
363 +* Redesign the WordPress Themes workspace
364 +* Hide iridescence slider when effect is off
365 +* Hide wobble sliders when effect is off
206 366
207 -= 0.8.3 =
208 -* Feat comments as native windows
209 -* Chrome <111 titlebars + duplicate-placement REST 500s
210 -* SW navigation interception caused window-in-window after core update
211 -* Open each post as its own window from the Posts window
212 -* Fix Users window data + live-refresh, plus per-window REST clients
213 -* Session-expiry cascade + Plugins window sync
214 -* Narrow scope to /wp-admin/ and throttle SW reloads
215 -* Plugins window: real updates, not just a phantom badge
216 -* Support plain permalinks for REST URL construction
217 -* Hide registered icons from desktop instead of trashing
367 += 1.1.0 =
368 +* Consolidate navigation into a single dock
369 +* Notes: Merge the sticky-notes into pinned notes
370 +* Confirm dialog: route Enter to the focused button, trap and restore focus
371 +* Posts window: Pluralize the bulk-action confirm text
372 +* Windows: Fix the accessibility semantics of controls, tabs and loading
373 +* Make the active window tab a frosted plate that slides
374 +* A11y: keep actionable toasts alive while attended, trap focus in first-run dialogs
375 +* Add the missing Domain Path header
376 +* AI: Internationalize the assistant overlay
377 +* Dashboard: Stop the welcome panel dismiss opening a stray window
378 +* Shell: exit OpenStation when the plugin stops being active
379 +* AI: Drop the SSE transport and answer over a single request
380 +* Activity indicator: settle on the response, not on the promise
381 +* Native windows: Remove the first-open intro modals
382 +* Woo relations: a refund is not a purchase; user tiles: carry their key
383 +* Settings: Redesign of this panel and regrouping
384 +* Refresh folder share action on settings save
385 +* Fixes: silent settings loss, folder-sharing visibility, and wallpaper shortcuts
386 +* Dock: Move the admin bar's jobs into the dock and a notch
387 +* Trash: Drop the desktop icon, and let a placeable tile choose its rail
218 388
219 -= 0.8.2 =
220 -* Many fixes and new features
221 -* Add unit test to ensure bridge script skips core AJAX update buttons
222 -* Native Plugins window + `<wpd-card>`
223 -* Appearance window polish + dock-peek fixes
224 -* Fix upload theme
225 -* Implement favicon resolver and associated tests for desktop mode
226 -* Auto-inject X-WP-Nonce for REST API requests
227 -* Enhance user management functionality in WordPress REST API
228 -* Fix user role updates
229 -* Fix plugin native issues
230 -* Enhance color scheme preview functionality by adding shell scheme flipping
231 -* Fix rearrange icons out of desktop
232 -* Open each post in its own window
233 -* Add item visibility and dock order settings
234 -* Add first-run welcome dialog for Desktop Mode
235 -* Fix dock management
236 -* Refetch desktop placements on Recycle Bin restore
389 += 1.0.1 =
390 +* AI: the assistant answers over a single request again; live progress streaming is gone
391 +* Tile contrast, comments-window styling, Overview clicks, and preview refreshes
392 +* Always show the Agents section in WP Explorer
393 +* Windows: Preserve fullscreen state after leaving Overview
394 +* Decode HTML entities in plugin install toast
395 +* Settle a pending Overview exit before re-entering
396 +* AI: surface an empty final answer as an error instead of a silent success
397 +* Experimental: Set OpenStation windows free into real OS windows (Electron adapter)
237 398
238 -= 0.8.1 =
239 -* Framework rework and stability improvements — significant internals refactor, smoother window lifecycle, and more reliable bridging between iframe and native windows.
240 -* Drag and drop reworked end-to-end: calmer pointer behavior, more accurate hit-testing, and reliable handoff across windows.
241 -* Posts, Pages, and Users now open as native desktop windows — direct DOM rendering inside the shell instead of an iframe, faster open, instant interaction, and UI tailored to the windowing model.
242 -* New Content Graph tool — an interactive map of how your content links together. Pan, zoom, and focus a node to explore its neighborhood.
243 -* Cross-page admin link routing in the chromeless bridge so links across the admin stay inside the desktop shell.
244 -* Many bug fixes across the admin bar, Fullscreen toggle, resize handles over iframes, real-time icon refresh on plugin activation, and the PWA shell.
399 += 1.0.0 =
400 +* Desktop Mode is now OpenStation — new name, new look, same plugin. Settings, files, sessions and desktop layouts carry over untouched.
401 +* The site folder is now WP Explorer, and OS Settings is now OpenStation Preferences.
402 +* A new palette and typography, with four wallpapers: Galaxy (the new default), Space, Holomesh and Pulsemesh.
403 +* Desktop Mode (Legacy) — a built-in desktop theme that puts the previous look back in one click, WordPress blue included.
404 +* Mio — a soft-body desk companion that drifts across the wallpaper and gets pushed around by your windows. Off by default; turn it on from the dock.
405 +* Holographic controls, a new Switch component, and a searchable Components tab in OpenStation Preferences.
406 +* Multi-select everywhere: click, Ctrl-click, Shift-click, marquee and Cmd+A, with WordPress's own bulk actions and multi-item drag.
407 +* Custom post types now appear in WP Explorer, grouped by the plugin or theme that registered them.
408 +* Post tiles show their featured image instead of a generic icon.
409 +* WooCommerce — Orders, Products, Coupons and Customers as browsable folders, with stock and sale ribbons, customer lifetime spend, and coupon redemption views.
410 +* The editor's preview companion follows your typing in the classic editor too, and opens straight away instead of waiting on a save.
411 +* Many fixes: Media Library uploads, context menus near the screen edge, Quick Edit after list refreshes, revisions opening in-window, window state across refreshes.
412 +* The portal URL moved from `/desktop-mode/` to `/openstation/`. Reinstall the app if you added OpenStation to your home screen.
413 +* For plugin authors: `wp.desktop` is now `wp.os`, `<wpd-*>` components are `<os-*>`, PHP functions and hooks use the `openstation_` prefix, and activity channels moved to `os/<event>`. Stored data — options, meta, custom tables, REST namespaces and the WordPress.org slug — is unchanged.
245 414
246 -= 0.5.1 =
247 -* Code editor and framework improvements.
248 -* Enhanced AI provider integration: third-party providers may register through `desktop_mode_register_ai_provider()`.
249 -* Title-bar button registry with icon painting for plugin authors.
250 -* OS Settings tabs are now extensible via `desktop_mode_register_settings_tab_script()` / `desktop_mode_register_settings_tab()`.
251 -* AI Copilot extensibility: server-side tool registry (`desktop_mode_register_ai_tool()`) and client-side `wp.desktop.ai.ask()` programmatic entry point.
252 -* UI component kit expansion (~25 `<wpd-*>` web components).
253 -* Backtick hotkey to cycle window focus.
254 -* Unified command palettes via the palette registry.
255 -* OS Settings Help tab.
415 += 0.9.8 =
416 +* Desktop Themes — uploadable ZIP theme system
417 +* Drafts widget with an AI writing assistant, window corner-radius setting, live split-view editor preview
418 +* AI Agents framework: agents as WordPress users, abilities runner, chat with persisted conversations
419 +* Redesigned two-pane Comments window, Aero Peek dock previews, window reveal animations
420 +* Security: closed privilege-escalation and session-bypass paths; strict structured-output schemas at the provider boundary
421 +* Many smaller fixes and polish
256 422
257 -= 0.5.0 =
258 -* Command registration APIs (`desktop_mode_register_command_script()` / `desktop_mode_register_command()`) with live install/activate refresh.
259 -* Media-library enhancement enabled by default, with opt-out.
260 -* Dock CSS selectors updated; overflow handling improved.
423 +Earlier releases are on the [GitHub releases page](https://github.com/WordPress/openstation/releases).
261 424
262 -See the [GitHub releases page](https://github.com/WordPress/desktop-mode/releases) for the full history.
263 -
264 425 == Upgrade Notice ==
265 426
266 -= 0.8.1 =
267 -Framework and stability rework, reworked drag and drop, native Posts/Pages/Users windows, and a new Content Graph tool. Backwards-compatible.
268 -
269 -= 0.5.1 =
270 -Adds AI Copilot extensibility (server-side tools, multi-provider support) and a title-bar button registry. Backwards-compatible.
427 += 1.0.0 =
428 +Desktop Mode is now OpenStation. Everything carries over: settings, files, sessions, desktop layouts. Plugin authors: `wp.desktop` is now `wp.os`; see the changelog for the rename map.