PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.13
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.13
1.1.13 1.1.12 1.1.11 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 All 37 releases
← All changes | readme.txt +281 -5 1.1.2 → 1.1.13 View file →
@@ -1,11 +1,11 @@
1 1 === OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin ===
2 -Contributors: automattic, allterraindeveloper, epeicher, mmtr86, nickhamze
2 +Contributors: automattic, allterraindeveloper, epeicher, mmtr86, nickhamze, nuriapena
3 3 Tags: admin, dashboard, desktop, productivity, ai
4 4 Requires at least: 6.0
5 5 Tested up to: 7.1
6 6 Requires PHP: 7.4
7 -Stable tag: 1.1.2
7 +Stable tag: 1.1.13
8 8 License: GPLv2 or later
9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html
10 10
11 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.
@@ -67,9 +67,9 @@
67 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 68
69 69 = External services =
70 70
71 -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.
71 +No external service is required for OpenStation's desktop interface. The optional AI Assistant, two user-initiated enrichment features, the journal on the About tab, an optional feedback form on deactivation and an optional one-time feedback form for active users make the external requests described below.
72 72
73 73 **AI Assistant**
74 74
75 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.
@@ -76,9 +76,9 @@
76 76
77 77 When the AI Assistant is enabled and a user invokes it (via Cmd+K or the slash-command palette):
78 78
79 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, 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.
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 81 * **Why it is sent:** to obtain model completions and tool-call decisions that drive the AI Assistant.
82 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).
83 83
84 84 **URL shortcut favicons**
@@ -84,8 +84,35 @@
84 84 **URL shortcut favicons**
85 85
86 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 87
88 +**OpenStation journal (About tab)**
89 +
90 +When a user opens the About page in OpenStation Preferences, OpenStation shows the latest posts from the OpenStation journal.
91 +
92 +* **What is sent:** a request for the public RSS feed at `https://openstation.blog/feed/`. It is made from your WordPress server with WordPress's default user-agent string, which includes your WordPress version and your site's URL, along with the server's IP address and normal HTTP request metadata. Nothing about the user who opened the page is sent.
93 +* **When it is sent:** only when someone opens the About page, and at most once every 30 minutes; in between, the cached copy is shown. Nothing is fetched when nobody visits About.
94 +* **Why it is sent:** to show the project's latest news next to the version you are running.
95 +* **Who provides the service:** [openstation.blog](https://openstation.blog/), the plugin's own site, operated by Automattic. Review the [WordPress.com Terms of Service](https://wordpress.com/tos/) and the [Automattic Privacy Policy](https://automattic.com/privacy/).
96 +
97 +**Deactivation feedback**
98 +
99 +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.
100 +
101 +* **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.
102 +* **When it is sent:** only when you click Send in the dialog shown on deactivation. There is no background ping.
103 +* **Why it is sent:** to learn what did not work so it can be fixed.
104 +* **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 [WordPress.com Terms of Service](https://wordpress.com/tos/) and the [Automattic Privacy Policy](https://automattic.com/privacy/). Site owners can turn the dialog off with the `openstation_deactivation_feedback_enabled` filter.
105 +
106 +**Usage feedback**
107 +
108 +After you have had OpenStation on for a week, a small card asks once whether you have two minutes to say how it is going. Answering **No thanks** sends nothing, and it never comes back. Saying yes opens a short form with three optional questions and an optional email field. Nothing is sent unless you click **Send**; **Cancel**, Escape and the close button send nothing.
109 +
110 +* **What is sent:** the answers you typed, the email address if you chose to type one (the field starts empty and is never filled in for you), your language, the OpenStation and WordPress versions, and how many days you have had OpenStation on. Nothing that identifies your site: no URL, no site id, no user name, and no IP address is stored. Without an email the submission is anonymous. Each submission carries a random id used only to ignore an accidental retry.
111 +* **When it is sent:** only when you click Send in the form. There is no background ping.
112 +* **Why it is sent:** to learn what works and what gets in the way. An email address, when given, is used only to follow up on the feedback.
113 +* **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 [WordPress.com Terms of Service](https://wordpress.com/tos/) and the [Automattic Privacy Policy](https://automattic.com/privacy/). Site owners can turn the prompt off with the `openstation_usage_feedback_enabled` filter.
114 +
88 115 **WordPress.org plugin information**
89 116
90 117 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/).
91 118
@@ -123,9 +150,9 @@
123 150 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.
124 151
125 152 = Does the plugin require an external service to function? =
126 153
127 -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. See "External services" in the description.
154 +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, fetches the OpenStation journal when you open the About page, offers an optional, one-click feedback form when you deactivate, and once asks active users whether they want to share feedback. See "External services" in the description.
128 155
129 156 = Does it patch WordPress core? =
130 157
131 158 No. Every feature is wired through public WordPress actions and filters.
@@ -168,8 +195,257 @@
168 195 * **[english-words](https://github.com/dwyl/english-words)** by dwyl (Unlicense) — used as a validity filter.
169 196 * **[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.
170 197
171 198 == Changelog ==
199 +
200 += 1.1.13 =
201 +* Agents: Save conversations as sent for every role
202 +* Readme: Disclose the About journal feed and link the terms of service
203 +* Preferences: Say that "Reset what's-new dialogs" replays the tour
204 +* Switch active desktop when focusing cross-desktop window
205 +* Files: Make folder and file sharing work again
206 +* Windows: Keep sub-page tabs in step with the dock after a menu refresh
207 +* Site assistant: Title "Go to" windows with the menu's name
208 +* Windows: Stop opening slow front-end pages twice
209 +* Windows: Refresh classic list windows when their content changes
210 +* Deactivation feedback: Ask what broke when "too buggy" is ticked
211 +* Editor preview: Refresh without going black or jumping to the top
212 +* WP Explorer: Fix the Woo folder on WordPress.com, product drops and folder zips
213 +* Site assistant: Speed up Ask AI, name commenters and show plugin icons
214 +* Revisions: Keep the Revisions window from becoming a second editor
215 +* Elementor: Fix the Plugins window, dock tiles and classic tabs
216 +* Workspaces: Keep the wallpaper picked on a workspace desk
217 +* WP Explorer: Fix the weekday labels on the activity calendar
218 +* Welcome dialog: Show it only to the user who activated the plugin
219 +* Drafts widget: Refresh as soon as a post is saved
220 +* Widgets: Mark only the desk's own widgets as added in the picker
221 +* Widgets: Keep the Add widget picker inside the work area
222 +* Site Views: Read Jetpack Stats through the server
223 +* Fix request tracking, media drag setup, and session-save loop
224 +* Plugins: Keep the upload dialog readable on the station palette
225 +* Preferences: choose how newly opened windows appear
226 +* Folder sharing: Keep agents out of the share picker
227 +* Desktop icons: Seat a newly installed app's icon in the first free cell
228 +* Windows: Keep snapped and tiled windows at their minimum width
229 +* Shell: Show loading states while the palette and wizard load
230 +* Shell tour: Point with the tail and let Mío peek
231 +* Editor preview: Show the eye for drafts in the Posts app and after a first autosave
232 +* Desktop themes: Fix wallpapers, effects, file icons and widget text
233 +* Desktop themes: Add the extension points a theme needs to redraw the shell
234 +* Fixes: notes, Ask AI, window styling, categories and prewarm
235 +* Taskbar: Keep task buttons in the order the windows opened
236 +* Desktop themes: Let a theme draw tabs as keys
237 +* Windows: Add Copy link to the window actions menu
238 +* Widgets: Stop the column clipping the cards' shadow
239 +* Windows: Copy link in native windows, and stop loading pages from raising their window
240 +
241 += 1.1.12 =
242 +* AI: repair the tl;dr and SEO Medic prompts, and drop dated prompting patterns
243 +* Agents: give Comment Concierge its thread tool back, clean up faces on a Core user delete, and fix AI docs drift
244 +* Agents: align get-post, get-media and the per-agent invoke gate with Core's read rules
245 +* WP Explorer: Drag photos and posts into an editor window again
246 +* Workspaces: Give each launch entry its own window back
247 +* Workspaces: Open the Publishing desk with the draft as the main window
248 +* Agents: show the copied prompt in Describe, and let the trail jump to any step
249 +* AI: default the output-token ceiling, fail truncated turns, and stop stuck tool loops
250 +* Site assistant: Open from the dock and always offer Ask AI
251 +* Agents: keep the brief's focus ring inside the wizard pane
252 +* Windows: Decode HTML entities in titles, names and user names across the shell, and fix the Orders list columns
253 +* Add WooCommerce order details to window titles
254 +* WP Explorer: List every attached image under Attached media
255 +* Windows: Rename 'Open in browser tab' to 'Open in classic wp-admin' and explain the ⋯ menu
256 +* Agents: Decode HTML entities in agent names
257 +* WP Explorer: Show who is editing a locked post
258 +* Windows: Keep a lone less-than sign in titles, names, Trash and comment excerpts
259 +* Feedback: Ask active users how OpenStation is going, once
260 +* First run: New users get a short guided tour of the desktop
261 +* First run: After installing, the Plugins screen and the Dashboard now show how to turn OpenStation on
262 +
263 += 1.1.11 =
264 +* Overview: Replace the dock tile icon with the brand widgets glyph
265 +* Workspaces: Only offer a template when its plugin is active
266 +* Admin bar: Remove the OpenStation actions, keep only the way in
267 +* Workspaces: Rename Overview to Workspaces
268 +* Agents: Keep the chat on the latest message across status repaints
269 +* Workspaces: Land on the new blank desk before the wizard opens
270 +* Workspaces: Rename a desk by double-clicking its name
271 +* Chromeless: Fit the boot SPA screens edge to edge again
272 +* WP Explorer: Show revision titles as text, not an avatar tag
273 +* Fix: Let Jetpack route its own Stats and Blaze links
274 +* User Edit: Add a View activity footprint button to the profile sidebar
275 +* Fix: Jetpack Stats v2 not loading properly
276 +* Drafts widget: Say why suggestions failed instead of "Could not get suggestions."
277 +* Desktop: Make the desk readable on light wallpapers
278 +* Session: Restore window titles in the current admin language
279 +* Fix mixed-field forms for OpenStation Studio apps
280 +* Recycle Bin: Fix 404 error on requests
281 +* Prevent bottom dock scroll item clipping
282 +* Os-button: forward a host aria-label onto the inner button so an icon-only button has a name
283 +* Make corner close button visible on touch devices.
284 +* Workspaces: Let the wizard's step trail jump to any step
285 +* App runtime: open_url honours native-window URL remaps before opening an iframe
286 +* Os-table: a slot-shaped cell value renders a named slot the light DOM fills
287 +* Resolve toggle visibility and spacing on tablet screens.
288 +* Notes: Say why converting a note to a post failed and keep the draft reachable
289 +* Say why a request failed, everywhere: shared REST error, failure mapper, toast tone
290 +* Workspaces: Repaint the desk you land on after deleting a workspace
291 +* Menus: Open a window per pick, and make a window's tabs its menu
292 +* Agents: store an answerless run as an error row so it is never replayed as the agent's turn
293 +* Performance: Serialize each script dependency's payload once, not once per entry
294 +* Developers: Let plugins track the desktop's network requests
295 +* Kit: <os-facts> + <os-fact>, and the three apps that hand-rolled it
296 +
297 += 1.1.10 =
298 +* Fix: drop a plugin zip into Core's upload box, not the Media Library dialog
299 +* Multisite: Open sites without OpenStation in a browser tab
300 +* Preferences: Open from the network admin shell
301 +* Network app: Open from a desktop icon instead of a dock tile
302 +* Highlight the best matching control in Preferences search
303 +* Fix: External apps work on activation without needing to refresh
304 +* Multisite: Drop Site Spaces from the Network Admin tile comments
305 +* Multisite: Route My Sites and network Sites links out of the window
306 +* Remove AI comment scoring from the shell
307 +* Add responsive grid, app frame, and resizable split layouts
308 +* Default theme: toning down accent
309 +* Separate hidden columns for posts and pages
310 +* Fix: keep metabox screens two-column down to 796px
311 +* Overview: Merge the two edit controls on desktop tiles
312 +* Plugins: Add AllTerrain MAIA to the Featured tab
313 +* Ask one optional question when OpenStation is deactivated
314 +* Plugins: Add a Plugin File Editor tab to the native Plugins window
315 +
316 += 1.1.9 =
317 +* Add saved Plugins table view and fix preserved table rendering
318 +* OS Settings: let a registered settings tab name its sidebar glyph
319 +* Fix timeout stalled plugin updates
320 +* Fix dock overlap on maximized and snapped windows
321 +* Posts: paint plugin columns on the writing-desk cards
322 +* My WordPress: gate the user dossier aggregates on the viewer
323 +* Add window-scoped MIO assistance and private Settings actions
324 +
325 += 1.1.8 =
326 +* Files: add uploaded files to the Media Library, and start a post or page from an image
327 +* Add minimize and restore dock animations.
328 +* Fix native app windows restoring the wrong saved instance
329 +* Fix Native Users tables action icons visibility
330 +* Add optimistic Trash updates and Explorer previews
331 +* Redesign native Plugins, Posts, Pages, and Users workspaces
332 +* Multisite: an OpenStation network of separate installs, with one switcher on every one
333 +* Add the data-model page and unbreak the wiki sync
334 +* Network: log in on arrival, mark external sites, and keep the switcher live
335 +* Harden stored-file cleanup and make presence updates atomic
336 +* Network: opt-in through an extended option, off by default
337 +* Fix agent request timeouts and stale Recycle Bin contents
338 +* Make preloading and shared cache opt-out Extended options
339 +* Post Stats: draw the chart chrome in tokens instead of hardcoded black
340 +* Preserve preferences on theme switch
341 +* Os-text-field: add hide-label so a compact field can have a name without a visible label
342 +* Widgets: raise the frame's chrome buttons to the 24px target-size floor
343 +* AI Copilot: keep password-protected posts out of the search abilities
344 +* Agents: seal password-protected posts in the get-post ability
345 +* AI Copilot: gate comment search on parent-post readability
346 +* My WordPress: scope the term-stats endpoint to posts the caller may read
347 +* AI Copilot: authorize the model-named entity id before building the entity card
348 +* My WordPress: gate the comment dossier on the window capability and parent-post readability
349 +
350 += 1.1.7 =
351 +* Files: paint a dropped folder's tile as soon as it exists
352 +* Shell: keep third-party scripts out of os-* fields and fixed panels out of the dynamic bar
353 +* Files: drop the marching-ants frame from the wallpaper drop highlight
354 +* WP Explorer: hover card off, preview pane only when open; Note Pad: drop the Public checkbox and Pin button
355 +* Admin bar: keep items the bar's height; shell starts below the bar's measured edge
356 +
357 += 1.1.6 =
358 +* Fix: Script loading: read the concat blob's handle list, so a lazily-loaded package stops replacing wp.hooks
359 +* Fix: Shell boot: a target is one-shot and must be a real page, so a reload stops opening an empty window
360 +* Add close all windows keybinds.
361 +* Multisite: support the network admin, and scope desktops per site
362 +* App Framework — a window in one PHP file (.osx.php + optional .os.ts), Code Blue & WP Explorer rebuilt on it
363 +* App Framework DX: warn on the silent footguns, trace dispatches, open client views to third parties
364 +* Trash: the Recycle Bin rebuilt on the App Framework — 659 lines against 1,869, the frozen id claimed, the legacy window deleted whole
365 +* Station Home: the native Dashboard rebuilt on the App Framework — 931 lines against 1,323, no client script, the legacy window deleted whole
366 +* WP Explorer: a list view — ids, slugs, dates and counts in sortable columns, remembered per user
367 +* OpenStation Preferences: the settings window rebuilt on the App Framework — 4,858 lines against 7,136, the panel bundle deleted whole
368 +* WooCommerce orders open on new window
369 +* Multisite: drop deleted sites' tables, Core parity for site admins, per-site PWA, and a multisite CI job
370 +* [Proposal] Workspaces — desktops that know what they're for
371 +* Fix portal redirect: leave sub-resource fetches alone, so Jetpack's admin-bar sparkline renders
372 +* Multisite: Site Spaces — another admin opens on its own desktop
373 +* App Framework: find an app's client bundle without its TypeScript source, so packaged installs open client-view apps
374 +* Code Blue: read the error without resizing, and a read-only skill that investigates it
375 +* Drafts: name a draft's window after the draft, not the whole row
376 +* Mobile: the phone layer — wp.os.mode, full-screen apps, switcher, tab bar
377 +* Mobile: one desk on a phone — fold every desktop, switch workspaces off
378 +* Mobile: fit the installed app to a phone — display stamp, no zoom, anchored tab bar
379 +* Mobile: the native apps on a phone — one tap, one pane, pinch, and a self-updating PWA
380 +* PWA: the shell never reloads itself — a waiting worker, a build stamp, and a Reload the user takes
381 +* Chromeless: fix in-page title actions a plugin has grouped
382 +* Drafts: fix the row's interaction states and name its actions
383 +* App icons: full-bleed tiles, three purposes, and an apple-touch-icon
384 +* Mobile: the list windows as cards, a bin that looks full, Explorer's item as a page
385 +* Apps: Posts, Pages, Users, User Edit, Plugins and Comments become App Framework apps
386 +* Mio: the inner line the artwork always had
387 +* Preserve rapid extended options saves
388 +* Multisite: every site is its own OpenStation, with a site switcher in overview
389 +
390 += 1.1.5 =
391 +* Add OpenStation Beta: install builds from PR branches, trunk, or stable
392 +* Pin every action to a commit SHA, prune closed PRs' zips from ci-artifacts
393 +* Shell screen: boot the desktop from its own admin page instead of riding on the Dashboard
394 +* Register --wp-admin-theme-color so chromeless documents never compute it to transparent
395 +* Sync active Post/Page tab when navigating to Add Post from the Dock
396 +* Attribute columns save to active window id
397 +* Hotfix: a dock flyout holds a rail out, it never summons a parked one
398 +* Revisions: open the revision browser in its own window
399 +* Two low-contrast fixes in native windows: the shell document leaves quirks mode, and a neutral crumb stops pinning its paint inline
400 +* Window channels: one set of books, so a window can leave its loading overlay
401 +* Command palette: a harvested command that throws says so, instead of nothing at all
402 +* Widgets: declare the card's token contract, so a widget's muted text stops landing at 3.81:1
403 +* In-window navigation: ask before painting, so a cancelled "Leave site?" stops stranding the window
404 +
405 += 1.1.4 =
406 +* Tooling: a deterministic boot-cost measurement for the shell document
407 +* Native-window script data ships once per handle, not once per window (boot document −8.9%)
408 +* The boot config ships references, not copies (boot document −12.8%)
409 +* The shell-bundle diet — five features leave desktop.min.js (−21% vs the v1.1.3 release)
410 +* Tooling: mirror docs/ into the GitHub wiki on every trunk push
411 +* Purge pre-1.0 history and reconcile every page with the code
412 +* Agents: give the cast faces, and rebuild create as a guided flow
413 +* Shared admin-asset cache + hover window prewarming (opt-in)
414 +* The shell asks the service worker for a screen before you click it
415 +* Fix: Sub-pages within main page are not shown in dock menu
416 +* Fix: Tile icons in the wallpaper can't display correctly some characters
417 +* Windows stop paying for a command palette they never show
418 +* The command palette stops costing every window and every boot
419 +* Sync layout and status on settings rollback
420 +* Decode HTML entities in Corkboard titles.
421 +* A window stops building the admin bar it never draws
422 +* Perf regression sweep: every finding, fixed
423 +* Show a loader in place for every lazy-loaded surface
424 +* Corkboard: keep a sparse board centred and explained
425 +* The shell stops bouncing /wp-admin/ through the portal
426 +* Trash: Hide the list chrome while the bin is empty
427 +* Status ring: report classic form saves, and stop reporting reads
428 +* Dynamic dock: auto-hide behavior setting, and one shared work area so windows, widgets, icons and graphs stay clear of the dock
429 +* Adding Nuria as a contributor
430 +
431 += 1.1.3 =
432 +* Refresh file associations when openers change
433 +* Add Code Blue, the error-log reader app
434 +* Station Home: stop claiming Dashboard subpages
435 +* Add MailPoet compatiblity
436 +* Station Home: make it opt-in via OS Settings → Features
437 +* Components: the missing-import demo shows the code it talks about
438 +* Desktop icons: one reading order per canvas, and a bounded scan
439 +* Trash: localize config before the lazy payload harvest
440 +* Corkboard: disc nodes by default, pins one row away
441 +* Unfocus effects: split view is not "behind"
442 +* Menu-refresh probe: attach script data before the payload harvest
443 +* Windows: companion stylesheets, and the Woo CSS stops riding every page
444 +* Plugin icons still missing
445 +* Defer every window stylesheet to first open; fix shared-bundle configs; real theming tokens in Users/Profile
446 +* Virtual desktops: rename in place, and four overview fixes
447 +* Defer the command palette's Gutenberg runtime to first ⌘K
172 448
173 449 = 1.1.2 =
174 450 * Window: the open-animation deadline must not outlive its window
175 451 * Update notice: show the vinyl card when the release post lands late