pmx-canvas 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,32 @@
3
3
  All notable changes to `pmx-canvas` are documented here. This project follows
4
4
  [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [0.4.4] - 2026-08-06
7
+
8
+ ### Fixed
9
+
10
+ - Amp orb pages now default straight to the polling transport instead of
11
+ waiting out the 3-second SSE watchdog behind the portal's buffering proxy —
12
+ on slow proxy days that wait could trip the "did not finish booting" modal.
13
+ `?transport=sse` still overrides for diagnosis.
14
+ - When the SSE watchdog does fall back to polling mid-boot (non-orb buffering
15
+ proxies), the boot screen now shows "switching to polling" and restarts its
16
+ deadline instead of alarming while the fallback is already recovering.
17
+
18
+ ### Added
19
+
20
+ - A ninth theme, `volt` — built from the Amp app's real palette (green-tinted
21
+ charcoal neutrals, warm green-white text, coral accent). `ember` stays
22
+ unchanged.
23
+ - `pmx-canvas skills sync --yes` refreshes the pmx-canvas skill copies already
24
+ installed in the workspace — whatever agent layout owns them — by comparing
25
+ and replacing whole trees from the installed package; `--check` (or running
26
+ without `--yes`) reports drift and exits 1 without changing anything. A
27
+ directory whose `SKILL.md` identity doesn't match the bundled skill is
28
+ skipped, never replaced, and it never creates a copy where none is
29
+ installed. This automates the sync every release test cycle previously did
30
+ by hand.
31
+
6
32
  ## [0.4.3] - 2026-08-05
7
33
 
8
34
  ### Added
@@ -2912,6 +2938,7 @@ otherwise have to discover by trial and error.
2912
2938
  - Regression coverage for snapshot flat-`id` aliases on both MCP and
2913
2939
  HTTP surfaces, plus async / top-level-`await` WebView script bodies.
2914
2940
 
2941
+ [0.4.4]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.4.4
2915
2942
  [0.4.3]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.4.3
2916
2943
  [0.4.2]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.4.2
2917
2944
  [0.4.1]: https://github.com/pskoett/pmx-canvas/releases/tag/v0.4.1
package/Readme.md CHANGED
@@ -151,12 +151,13 @@ surfaces (the core never imports a host SDK).
151
151
  live workbench through the Amp portal (the `*.onamp.dev` URL ampcode.com
152
152
  embeds for the thread). Zero configuration: orbs set `AMP_ORB` in the
153
153
  service environment, and the canvas auto-adapts to the portal's constraints
154
- — it switches to a polling transport when the portal proxy buffers the live
155
- event stream, and renders HTML, graph, json-render, and app surfaces inline
156
- via `srcdoc` because the nested-iframe embed blocks `src`-URL child iframes
157
- (`/workbench?transport=poll` and `?iframe-mode=srcdoc` force either behavior
158
- when diagnosing). The same detection helps other buffering proxies and
159
- nested-iframe embeds.
154
+ — it defaults straight to the proxy-safe polling transport (the portal
155
+ proxy buffers the live event stream), and renders HTML, graph, json-render,
156
+ and app surfaces inline via `srcdoc` because the nested-iframe embed blocks
157
+ `src`-URL child iframes (`?transport=sse` and `?iframe-mode=src` override
158
+ either behavior when diagnosing). Non-orb buffering proxies get the same
159
+ protections via runtime detection: an SSE watchdog that falls back to
160
+ polling, and the boot-time iframe probe.
160
161
  <!-- screenshot: docs/screenshots/amp-orb-portal.png — PMX Canvas live inside the Amp portal (to be added) -->
161
162
 
162
163
  Any other app browser (the ChatGPT desktop app, an IDE webview, …) works the
@@ -446,6 +446,61 @@
446
446
  --c-annotation: #EDF5EF;
447
447
  }
448
448
 
449
+ :root[data-theme="volt"] {
450
+ /* ── Core palette (volt · green-tinted charcoal + coral) ── */
451
+ --c-bg: #0B0D0B;
452
+ --c-panel: #171A17;
453
+ --c-panel-soft: #111311;
454
+ --c-line: #272A27;
455
+ --c-text: #F6FFF5;
456
+ --c-text-soft: #CBD3CA;
457
+ --c-muted: #9CA49C;
458
+ --c-dim: #626962;
459
+ --c-accent: #F34E3F;
460
+ --c-ok: #52C880;
461
+ --c-warn: #E4C465;
462
+ --c-warn-alt: #FFB300;
463
+ --c-danger: #D67670;
464
+ --c-purple: #BC8FB4;
465
+ --c-thinking: #BC8FB4;
466
+ --c-subagent: #6CA0E0;
467
+ --c-input-bg: #111311;
468
+ --c-dot-grid: rgba(243, 78, 63, 0.08);
469
+ --c-panel-overlay: rgba(11, 13, 11, 0.6);
470
+ --c-panel-glass: rgba(23, 26, 23, 0.92);
471
+ --c-shadow: rgba(0, 0, 0, 0.3);
472
+ --c-shadow-heavy: rgba(0, 0, 0, 0.5);
473
+ --c-glow-accent: rgba(243, 78, 63, 0.15);
474
+ --c-surface-hover: rgba(255, 255, 255, 0.06);
475
+ --c-surface-subtle: rgba(255, 255, 255, 0.03);
476
+ --c-surface-th: rgba(255, 255, 255, 0.04);
477
+ --c-accent-8: rgba(243, 78, 63, 0.08);
478
+ --c-accent-10: rgba(243, 78, 63, 0.1);
479
+ --c-accent-12: rgba(243, 78, 63, 0.12);
480
+ --c-accent-15: rgba(243, 78, 63, 0.15);
481
+ --c-accent-25: rgba(243, 78, 63, 0.25);
482
+ --c-accent-30: rgba(243, 78, 63, 0.3);
483
+ --c-accent-40: rgba(243, 78, 63, 0.4);
484
+ --c-ok-10: rgba(82, 200, 128, 0.1);
485
+ --c-ok-12: rgba(82, 200, 128, 0.12);
486
+ --c-ok-20: rgba(82, 200, 128, 0.2);
487
+ --c-ok-25: rgba(82, 200, 128, 0.25);
488
+ --c-warn-10: rgba(228, 196, 101, 0.1);
489
+ --c-warn-12: rgba(228, 196, 101, 0.12);
490
+ --c-warn-15: rgba(228, 196, 101, 0.15);
491
+ --c-warn-20: rgba(228, 196, 101, 0.2);
492
+ --c-warn-22: rgba(228, 196, 101, 0.22);
493
+ --c-warn-30: rgba(228, 196, 101, 0.3);
494
+ --c-warn-60: rgba(228, 196, 101, 0.6);
495
+ --c-danger-12: rgba(214, 118, 112, 0.12);
496
+ --c-line-30: rgba(39, 42, 39, 0.3);
497
+ --c-contrast-fg: #0B0D0B;
498
+ --c-accent-hover: #F8695B;
499
+ --c-warn-hover: #EBD087;
500
+ --c-canvas-wash: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(0, 0, 0, 0));
501
+ --c-annotation: #F1F7F0;
502
+ }
503
+
449
504
  * {
450
505
  box-sizing: border-box;
451
506
  margin: 0;