PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.12
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.12
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 0.8.9 All 36 releases
← All changes | includes/assets.php +83 -135 1.1.1 → 1.1.12 View file →
@@ -122,13 +122,14 @@
122 122 *
123 123 * window-chrome → window-states → effects → window-links
124 124 * → windows
125 125 *
126 - * `window-overview` and `os-settings` are deliberately NOT in this
127 - * chain — they are registered below, after `os-windows`,
128 - * so they can load deferred. Adding a sheet here means splicing it
129 - * into the chain, not appending an unrelated dependency: order is
130 - * the contract.
126 + * `window-overview` is deliberately NOT in this chain — it is
127 + * registered below, after `os-windows`, so it can load deferred.
128 + * Adding a sheet here means splicing it into the chain, not
129 + * appending an unrelated dependency: order is the contract.
130 + * (The Preferences window's sheet is not here at all: it rides
131 + * the `apps/os-settings/` app as a first-open companion style.)
131 132 */
132 133 $window_sheets = array(
133 134 'os-window-chrome' => 'assets/css/window-chrome.css',
134 135 'os-window-states' => 'assets/css/window-states.css',
@@ -154,14 +155,14 @@
154 155 OPENSTATION_URL . 'assets/css/windows.css',
155 156 $previous,
156 157 $built_version( 'assets/css/windows.css' )
157 158 );
158 - // These two load DEFERRED (see `openstation_defer_non_critical_styles()`):
159 - // the UI they style — the OS Settings panel and the window
160 - // overview — is lazy-loaded JS that can never be on screen at
161 - // first paint, so ~47 KB of CSS has no business blocking render.
162 - // They depend on `os-windows` so they print after it,
163 - // preserving the cascade position they had as `@import`s.
159 + // Loads DEFERRED (see `openstation_defer_non_critical_styles()`):
160 + // the UI it styles — the window overview — is lazy-loaded JS that
161 + // can never be on screen at first paint, so its CSS has no
162 + // business blocking render. It depends on `os-windows` so it
163 + // prints after it, preserving the cascade position it had as an
164 + // `@import`.
164 165 wp_register_style(
165 166 'os-window-overview',
166 167 OPENSTATION_URL . 'assets/css/window-overview.css',
167 168 array( 'os-windows' ),
@@ -166,14 +167,8 @@
166 167 OPENSTATION_URL . 'assets/css/window-overview.css',
167 168 array( 'os-windows' ),
168 169 $built_version( 'assets/css/window-overview.css' )
169 170 );
170 - wp_register_style(
171 - 'os-settings',
172 - OPENSTATION_URL . 'assets/css/os-settings.css',
173 - array( 'os-windows' ),
174 - $built_version( 'assets/css/os-settings.css' )
175 - );
176 171 // Solo mode — one window, no desk around it. Loads last so it can
177 172 // hide surfaces the sheets above declared, and only enqueues on a
178 173 // solo request, so a normal shell never pays for it.
179 174 wp_register_style(
@@ -193,16 +188,29 @@
193 188 OPENSTATION_URL . 'assets/css/dock-peek.css',
194 189 array( 'os-dock' ),
195 190 $built_version( 'assets/css/dock-peek.css' )
196 191 );
197 - // The notch — the shell's top-centre voice and the site
198 - // assistant's front door. Scoped to `.os-notch`.
192 + // The phone layer. Every rule is scoped to
193 + // `html[data-os-mode="mobile"]`, so the sheet is inert on a
194 + // desktop and the first paint on a phone is already right (the
195 + // head stamp writes the attribute before any stylesheet applies).
196 + // Depends on the dock and window sheets because it overrides them.
199 197 wp_register_style(
200 - 'os-notch',
201 - OPENSTATION_URL . 'assets/css/notch.css',
202 - array( 'os-variables' ),
203 - $built_version( 'assets/css/notch.css' )
198 + 'os-mobile',
199 + OPENSTATION_URL . 'assets/css/mobile.css',
200 + array( 'os-variables', 'dashicons', 'os-dock', 'os-windows' ),
201 + $built_version( 'assets/css/mobile.css' )
204 202 );
203 + // The workspace wizard. Scoped to `.os-workspace-wizard`, so it is
204 + // inert until the user opens it from the overview bar's `+` or a
205 + // tile's Edit. Those controls are styled with the rest of the bar
206 + // in `window-overview.css`.
207 + wp_register_style(
208 + 'os-workspaces',
209 + OPENSTATION_URL . 'assets/css/workspaces.css',
210 + array( 'os-variables', 'dashicons' ),
211 + $built_version( 'assets/css/workspaces.css' )
212 + );
205 213 // Keyboard-shortcuts window. Scoped to `.os-shortcuts`, so it is
206 214 // inert until the System menu opens the window, and unconditional
207 215 // for the same reason the layout sheet is: the window can be
208 216 // opened at any moment and a deferred sheet would paint it raw.
@@ -267,40 +275,10 @@
267 275 array( 'os-variables', 'dashicons' ),
268 276 file_exists( $recycle_bin_css ) ? (string) filemtime( $recycle_bin_css ) : $version
269 277 );
270 278
271 - // `filemtime` for the native Posts window CSS — same rationale as
272 - // the recycle-bin CSS: bundle iterates faster than the plugin
273 - // version and stale caches are worse than the cost of a 304.
274 - $posts_window_css = OPENSTATION_DIR . 'assets/css/posts-window.css';
275 - wp_register_style(
276 - 'os-posts-window',
277 - OPENSTATION_URL . 'assets/css/posts-window.css',
278 - array( 'os-variables', 'dashicons' ),
279 - file_exists( $posts_window_css ) ? (string) filemtime( $posts_window_css ) : $version
280 - );
281 -
282 - // Native Plugins window CSS — same `filemtime`-cache-bust posture
283 - // as the Posts/Recycle Bin styles.
284 - $plugins_window_css = OPENSTATION_DIR . 'assets/css/plugins-window.css';
285 - wp_register_style(
286 - 'os-plugins-window',
287 - OPENSTATION_URL . 'assets/css/plugins-window.css',
288 - array( 'os-variables', 'dashicons' ),
289 - file_exists( $plugins_window_css ) ? (string) filemtime( $plugins_window_css ) : $version
290 - );
291 -
292 - // Native Comments window CSS — same `filemtime` posture.
293 - $comments_window_css = OPENSTATION_DIR . 'assets/css/comments-window.css';
294 - wp_register_style(
295 - 'os-comments-window',
296 - OPENSTATION_URL . 'assets/css/comments-window.css',
297 - array( 'os-variables', 'dashicons' ),
298 - file_exists( $comments_window_css ) ? (string) filemtime( $comments_window_css ) : $version
299 - );
300 -
301 279 // Files-on-the-Desktop tile + layer styles. `filemtime` for the
302 - // same reason as the recycle-bin / posts-window CSS: this file
280 + // same reason as the recycle-bin CSS: this file
303 281 // iterates faster than the plugin version, and a stale cache
304 282 // would mask a real fix.
305 283 $desktop_files_css = OPENSTATION_DIR . 'assets/css/desktop-files.css';
306 284 wp_register_style(
@@ -336,14 +314,17 @@
336 314 );
337 315
338 316 // Pinned-notes layer styles (paper, pushpin, pastel tokens, pin
339 317 // animations). Same `filemtime` cache-bust posture as the other
340 - // fast-iterating feature stylesheets above.
318 + // fast-iterating feature stylesheets above. Depends on `os-files`
319 + // because a pinned note dresses the canonical `.os-file-tile`
320 + // chrome — anything that restyles a tile has to print after the
321 + // file that declares one.
341 322 $notes_css = OPENSTATION_DIR . 'assets/css/notes.css';
342 323 wp_register_style(
343 324 'os-notes',
344 325 OPENSTATION_URL . 'assets/css/notes.css',
345 - array( 'os-variables', 'dashicons' ),
326 + array( 'os-variables', 'dashicons', 'os-files' ),
346 327 file_exists( $notes_css ) ? (string) filemtime( $notes_css ) : $version
347 328 );
348 329
349 330 // Announcement-dialog styles (scrim, hero card, buttons). Registered
@@ -407,8 +388,49 @@
407 388 $built_version( 'assets/js/iframe-bridge' . $suffix . '.js' ),
408 389 true
409 390 );
410 391
392 + // `os-deactivation-feedback` — the dialog that asks one optional
393 + // question when an admin deactivates OpenStation. Enqueued on
394 + // `plugins.php` (classic, chromeless and network admin) by
395 + // `includes/feedback/deactivation.php`, and lazy-loaded by the
396 + // native Plugins app from its config block. Plain DOM on purpose:
397 + // the classic screen has no `<os-*>` kit.
398 + wp_register_script(
399 + 'os-deactivation-feedback',
400 + OPENSTATION_URL . 'assets/js/deactivation-feedback' . $suffix . '.js',
401 + array( 'wp-i18n' ),
402 + $built_version( 'assets/js/deactivation-feedback' . $suffix . '.js' ),
403 + true
404 + );
405 + wp_set_script_translations(
406 + 'os-deactivation-feedback',
407 + 'desktop-mode',
408 + OPENSTATION_DIR . 'languages'
409 + );
410 + $feedback_css = OPENSTATION_DIR . 'assets/css/deactivation-feedback.css';
411 + wp_register_style(
412 + 'os-deactivation-feedback',
413 + OPENSTATION_URL . 'assets/css/deactivation-feedback.css',
414 + array(),
415 + file_exists( $feedback_css ) ? (string) filemtime( $feedback_css ) : $version
416 + );
417 +
418 + // `os-chromeless-bridge` — the iframe side of every window,
419 + // enqueued on `admin_footer` by
420 + // `openstation_chromeless_bridge_script()` with its per-request
421 + // data attached as a `before` inline block. Registered here (not
422 + // there) so the handle exists before the enqueue and so the asset
423 + // guard's OPENSTATION_URL snapshot protects it like every other
424 + // bundle of ours.
425 + wp_register_script(
426 + 'os-chromeless-bridge',
427 + OPENSTATION_URL . 'assets/js/chromeless-bridge' . $suffix . '.js',
428 + array(),
429 + $built_version( 'assets/js/chromeless-bridge' . $suffix . '.js' ),
430 + true
431 + );
432 +
411 433 // `os-gutenberg-drop-receiver` — iframe-side bundle
412 434 // enqueued only on the Block Editor screens (`post.php` /
413 435 // `post-new.php`) for openstation users. Listens for
414 436 // `os-drop` postMessages from the parent shell (see
@@ -424,30 +446,13 @@
424 446 $built_version( 'assets/js/gutenberg-drop-receiver' . $suffix . '.js' ),
425 447 true
426 448 );
427 449
428 - // `desktop-mode-recycle-bin` — small bundle for the Recycle Bin
429 - // native window. Lazy-loaded by the native-window sync the first
430 - // time the bin opens; registers a render callback on
431 - // `window.openStationNativeWindows['desktop-mode-recycle-bin']`.
432 - $recycle_bin_js = OPENSTATION_DIR . 'assets/js/recycle-bin' . $suffix . '.js';
433 - wp_register_script(
434 - 'desktop-mode-recycle-bin',
435 - OPENSTATION_URL . 'assets/js/recycle-bin' . $suffix . '.js',
436 - // `heartbeat` + `jquery` — the bin opts in to the WordPress
437 - // Heartbeat API while its window is open as the catch-all
438 - // real-time channel for deletes that don't render an admin
439 - // footer (REST/AJAX/other tabs/WP-CLI). See
440 - // `src/recycle-bin/realtime.ts` for the subscriber.
441 - array( 'wp-i18n', 'heartbeat', 'jquery' ),
442 - file_exists( $recycle_bin_js ) ? (string) filemtime( $recycle_bin_js ) : $version,
443 - true
444 - );
445 - wp_set_script_translations(
446 - 'desktop-mode-recycle-bin',
447 - 'desktop-mode',
448 - OPENSTATION_DIR . 'languages'
449 - );
450 + // The Recycle Bin window is an App Framework app (`apps/trash/`);
451 + // its client view rides the app-bundle pipeline, so no dedicated
452 + // script handle. The `desktop-mode-recycle-bin` STYLE handle above
453 + // stays — the drag-to-trash drop-target highlight must be present
454 + // at boot (dropping on the closed bin's dock tile), not window-open.
450 455
451 456 // `desktop-mode-games` — bundle for the Games hub native window
452 457 // (launcher grid, scoreboard, challenges client). Lazy-loaded by
453 458 // the native-window sync the first time the hub opens; registers a
@@ -499,65 +504,8 @@
499 504 true
500 505 );
501 506 wp_set_script_translations(
502 507 'os-game-alphabet-soup',
503 - 'desktop-mode',
504 - OPENSTATION_DIR . 'languages'
505 - );
506 -
507 - // `os-posts-window` — small bundle for the native Posts
508 - // window. Lazy-loaded by the native-window sync the first time the
509 - // window opens (via the dock-click swap when the user opts in);
510 - // registers a render callback on
511 - // `window.openStationNativeWindows['desktop-mode-posts']`.
512 - $posts_window_js = OPENSTATION_DIR . 'assets/js/posts-window' . $suffix . '.js';
513 - wp_register_script(
514 - 'os-posts-window',
515 - OPENSTATION_URL . 'assets/js/posts-window' . $suffix . '.js',
516 - array( 'wp-i18n' ),
517 - file_exists( $posts_window_js ) ? (string) filemtime( $posts_window_js ) : $version,
518 - true
519 - );
520 - wp_set_script_translations(
521 - 'os-posts-window',
522 - 'desktop-mode',
523 - OPENSTATION_DIR . 'languages'
524 - );
525 -
526 - // `os-plugins-window` — small bundle for the native
527 - // Plugins window. Lazy-loaded by the native-window sync the first
528 - // time the window opens (via the dock-click swap when the user
529 - // opts in); registers a render callback on
530 - // `window.openStationNativeWindows['desktop-mode-plugins']`.
531 - $plugins_window_js = OPENSTATION_DIR . 'assets/js/plugins-window' . $suffix . '.js';
532 - wp_register_script(
533 - 'os-plugins-window',
534 - OPENSTATION_URL . 'assets/js/plugins-window' . $suffix . '.js',
535 - array( 'wp-i18n' ),
536 - file_exists( $plugins_window_js ) ? (string) filemtime( $plugins_window_js ) : $version,
537 - true
538 - );
539 - wp_set_script_translations(
540 - 'os-plugins-window',
541 - 'desktop-mode',
542 - OPENSTATION_DIR . 'languages'
543 - );
544 -
545 - // `os-comments-window` — small bundle for the native
546 - // Comments window. Lazy-loaded by the native-window sync the first
547 - // time the window opens (via the dock-click swap when the user
548 - // opts in); registers a render callback on
549 - // `window.openStationNativeWindows['desktop-mode-comments']`.
550 - $comments_window_js = OPENSTATION_DIR . 'assets/js/comments-window' . $suffix . '.js';
551 - wp_register_script(
552 - 'os-comments-window',
553 - OPENSTATION_URL . 'assets/js/comments-window' . $suffix . '.js',
554 - array( 'wp-i18n' ),
555 - file_exists( $comments_window_js ) ? (string) filemtime( $comments_window_js ) : $version,
556 - true
557 - );
558 - wp_set_script_translations(
559 - 'os-comments-window',
560 508 'desktop-mode',
561 509 OPENSTATION_DIR . 'languages'
562 510 );
563 511