@rasamjs/core 0.1.2 → 0.2.0

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.
Files changed (106) hide show
  1. package/API.md +15 -5
  2. package/CHANGELOG.md +39 -1
  3. package/README.md +140 -20
  4. package/RELEASING.md +29 -21
  5. package/dist/changes/service.d.ts +5 -2
  6. package/dist/changes/service.d.ts.map +1 -1
  7. package/dist/changes/service.js +29 -4
  8. package/dist/changes/service.js.map +1 -1
  9. package/dist/changes/types.d.ts +9 -0
  10. package/dist/changes/types.d.ts.map +1 -1
  11. package/dist/changes/types.js.map +1 -1
  12. package/dist/changes.d.ts +5 -3
  13. package/dist/changes.d.ts.map +1 -1
  14. package/dist/changes.js +103 -2
  15. package/dist/changes.js.map +1 -1
  16. package/dist/dom/images.d.ts.map +1 -1
  17. package/dist/dom/images.js +3 -1
  18. package/dist/dom/images.js.map +1 -1
  19. package/dist/elements/image.d.ts.map +1 -1
  20. package/dist/elements/image.js +4 -1
  21. package/dist/elements/image.js.map +1 -1
  22. package/dist/interchange/clone.js +1 -1
  23. package/dist/interchange/clone.js.map +1 -1
  24. package/dist/interchange/dom.d.ts +3 -1
  25. package/dist/interchange/dom.d.ts.map +1 -1
  26. package/dist/interchange/dom.js +29 -5
  27. package/dist/interchange/dom.js.map +1 -1
  28. package/dist/interchange/markup.d.ts.map +1 -1
  29. package/dist/interchange/markup.js +71 -3
  30. package/dist/interchange/markup.js.map +1 -1
  31. package/dist/interchange/policy.d.ts.map +1 -1
  32. package/dist/interchange/policy.js +4 -0
  33. package/dist/interchange/policy.js.map +1 -1
  34. package/dist/interchange/types.d.ts +10 -1
  35. package/dist/interchange/types.d.ts.map +1 -1
  36. package/dist/mixins/transformable.d.ts.map +1 -1
  37. package/dist/mixins/transformable.js +25 -27
  38. package/dist/mixins/transformable.js.map +1 -1
  39. package/dist/raster/frame.d.ts +12 -0
  40. package/dist/raster/frame.d.ts.map +1 -0
  41. package/dist/raster/frame.js +43 -0
  42. package/dist/raster/frame.js.map +1 -0
  43. package/dist/raster/images.d.ts +2 -0
  44. package/dist/raster/images.d.ts.map +1 -0
  45. package/dist/raster/images.js +60 -0
  46. package/dist/raster/images.js.map +1 -0
  47. package/dist/raster/render.d.ts +3 -0
  48. package/dist/raster/render.d.ts.map +1 -0
  49. package/dist/raster/render.js +40 -0
  50. package/dist/raster/render.js.map +1 -0
  51. package/dist/raster/types.d.ts +10 -0
  52. package/dist/raster/types.d.ts.map +1 -0
  53. package/dist/raster/types.js +2 -0
  54. package/dist/raster/types.js.map +1 -0
  55. package/dist/raster.d.ts +6 -0
  56. package/dist/raster.d.ts.map +1 -0
  57. package/dist/raster.js +10 -0
  58. package/dist/raster.js.map +1 -0
  59. package/dist/resources/references.d.ts.map +1 -1
  60. package/dist/resources/references.js +3 -1
  61. package/dist/resources/references.js.map +1 -1
  62. package/dist/services/viewport.d.ts +2 -0
  63. package/dist/services/viewport.d.ts.map +1 -1
  64. package/dist/services/viewport.js +4 -3
  65. package/dist/services/viewport.js.map +1 -1
  66. package/dist/text/content.d.ts +0 -2
  67. package/dist/text/content.d.ts.map +1 -1
  68. package/dist/text/content.js +4 -10
  69. package/dist/text/content.js.map +1 -1
  70. package/dist/text/policies.d.ts +7 -0
  71. package/dist/text/policies.d.ts.map +1 -0
  72. package/dist/text/policies.js +13 -0
  73. package/dist/text/policies.js.map +1 -0
  74. package/package.json +6 -1
  75. package/reports/adoption.json +20 -20
  76. package/reports/animation-benchmark.json +617 -617
  77. package/reports/benchmark.json +44 -44
  78. package/reports/creation.json +26 -26
  79. package/reports/interchange-benchmark.json +85 -85
  80. package/reports/public-api-contract.json +20 -7
  81. package/reports/public-api-review.md +23 -0
  82. package/reports/size-parity.json +54 -19
  83. package/reports/size.json +2 -2
  84. package/reports/svgjs-comparison.json +3464 -3464
  85. package/reports/svgjs-comparison.md +19 -19
  86. package/reports/svgjs-parity-current.json +58 -34
  87. package/src/changes/service.ts +39 -5
  88. package/src/changes/types.ts +9 -0
  89. package/src/changes.ts +93 -4
  90. package/src/dom/images.ts +2 -1
  91. package/src/elements/image.ts +4 -1
  92. package/src/interchange/clone.ts +1 -1
  93. package/src/interchange/dom.ts +34 -5
  94. package/src/interchange/markup.ts +77 -3
  95. package/src/interchange/policy.ts +6 -0
  96. package/src/interchange/types.ts +10 -1
  97. package/src/mixins/transformable.ts +23 -25
  98. package/src/raster/frame.ts +53 -0
  99. package/src/raster/images.ts +73 -0
  100. package/src/raster/render.ts +45 -0
  101. package/src/raster/types.ts +9 -0
  102. package/src/raster.ts +13 -0
  103. package/src/resources/references.ts +5 -1
  104. package/src/services/viewport.ts +5 -4
  105. package/src/text/content.ts +4 -14
  106. package/src/text/policies.ts +18 -0
package/API.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Public entry points
2
2
 
3
3
  Generated from emitted declarations and document-free runtime imports.
4
- Run `npm run api:check` to detect changes; review differences before `api:update`.
4
+ Run `bun run api:check` to detect changes; review differences before `api:update`.
5
5
 
6
6
  Only documented operations are supported application APIs. Deep imports, mutable
7
7
  service bookkeeping, TypeScript-private methods and undocumented symbol hooks remain internal,
@@ -50,13 +50,13 @@ Type-only exports (7):
50
50
 
51
51
  ## @rasamjs/core/changes
52
52
 
53
- Runtime exports (14):
53
+ Runtime exports (15):
54
54
 
55
- `ChangeConflictError`, `ChangeObserverError`, `ChangeRollbackError`, `beginChangeGroup`, `captureModelState`, `changeKey`, `claimRecorder`, `combineChanges`, `observeChanges`, `restoreChanges`, `restoreModelState`, `sameState`, `validateModelState`, `withChanges`.
55
+ `ChangeConflictError`, `ChangeObserverError`, `ChangeRollbackError`, `beginChangeGroup`, `captureModelState`, `changeKey`, `claimRecorder`, `combineChanges`, `deriveChanges`, `observeChanges`, `restoreChanges`, `restoreModelState`, `sameState`, `validateModelState`, `withChanges`.
56
56
 
57
- Type-only exports (13):
57
+ Type-only exports (14):
58
58
 
59
- `ChangeBatch`, `ChangeEvent`, `ChangeGroup`, `ChangeMetadata`, `ContentState`, `ModelChange`, `ModelFeatures`, `ModelSnapshot`, `NativeNodeState`, `NodeHandle`, `Placement`, `PropertyState`, `TextPolicies`.
59
+ `ChangeBatch`, `ChangeDerivation`, `ChangeEvent`, `ChangeGroup`, `ChangeMetadata`, `ContentState`, `ModelChange`, `ModelFeatures`, `ModelSnapshot`, `NativeNodeState`, `NodeHandle`, `Placement`, `PropertyState`, `TextPolicies`.
60
60
 
61
61
  ## @rasamjs/core/data
62
62
 
@@ -128,6 +128,16 @@ Type-only exports (1):
128
128
 
129
129
  `NodePredicate`.
130
130
 
131
+ ## @rasamjs/core/raster
132
+
133
+ Runtime exports (1):
134
+
135
+ `exportImage`.
136
+
137
+ Type-only exports (1):
138
+
139
+ `RasterOptions`.
140
+
131
141
  ## @rasamjs/core/resources
132
142
 
133
143
  Runtime exports (4):
package/CHANGELOG.md CHANGED
@@ -1,6 +1,44 @@
1
1
  # Changelog
2
2
 
3
- ## [0.1.2] (unreleased)
3
+ ## Unreleased
4
+
5
+ - Add `document: 'presentation'` imports to retain scoped root styles and compositing
6
+ while omitting the viewport envelope. Validate document envelopes before unwrapping.
7
+ Add `document: 'replace'` for empty drawings so full-document restoration does not
8
+ apply configured root presentation twice; fragments retain their defaults.
9
+ - Isolate the text-policy cloning bridge so interchange bundles do not retain the
10
+ rich-text implementation; keep the existing interchange size budget.
11
+
12
+ - Preserve omitted ancestor transforms and nested SVG viewports in content-framed
13
+ subtree exports, including raster exports of nested shapes.
14
+
15
+ - Keep matrix and transform-snapshot reads outside model edit transactions.
16
+ Release destroyed native image sources and avoid restarting a missing-source
17
+ request when disposing a completed image metadata probe.
18
+
19
+ - Add opt-in `deriveChanges()` to include synchronous dependent writes in the same
20
+ operation/group before recording, skipping getters and restoration. Recognize reserved
21
+ connector endpoint references during SVG export/import and clone ID remapping.
22
+
23
+ - Restore exported embedded image data URLs on `<image>` elements during SVG import.
24
+ Data URLs on links and Use instances, unsupported MIME types and active URL schemes
25
+ remain rejected.
26
+
27
+ - Add optional `./raster` PNG/JPEG/WebP export with scale, background, content/viewBox
28
+ framing, same-origin/data image embedding, snapshot isolation and clear decode or
29
+ tainted-canvas failures. Document nonembedded web fonts/styles and pixel limits.
30
+ - Add an isolated 12 KiB raster budget; existing entry budgets are unchanged.
31
+
32
+ - Add labelled change groups and `ChangeGroup.cancel()`, including rollback without
33
+ history, restored completion signals, conflict detection and observer-error reporting.
34
+ - Add content-framed SVG export with padding and whole-document import with `SyntaxError`
35
+ parse diagnostics. Document import accepts an XML declaration and a DOCTYPE without an
36
+ internal subset. Default export and nested SVG import behavior remain compatible.
37
+
38
+ - Add editor Phase 0 test-only group rollback spikes for text creation, attribute edits,
39
+ observer notifications and preservation of unrelated edits.
40
+
41
+ ## [0.1.2] - 2026-11-02
4
42
 
5
43
  ### Fixed
6
44
 
package/README.md CHANGED
@@ -15,10 +15,10 @@ Install dependencies at the repository root, then run the remaining commands in
15
15
  this README from `packages/rasam`:
16
16
 
17
17
  ```sh
18
- npm ci
18
+ bun install --frozen-lockfile
19
19
  cd packages/rasam
20
- npm run build
21
- npm run dev
20
+ bun run build
21
+ bun run dev
22
22
  ```
23
23
 
24
24
  Open `http://127.0.0.1:5173/playground/` for the LED demonstration. It includes
@@ -26,7 +26,7 @@ template updates, nested transforms, pointer capture, gradients, a marker, and a
26
26
  After building, you can also open `playground/index.html` directly in a browser.
27
27
  That route loads the standalone script in `preview/playground.js`; rebuild after
28
28
  changing the source. The Vite route loads TypeScript directly for live development.
29
- For the standalone rectangle example, run `npm run build` and open
29
+ For the standalone rectangle example, run `bun run build` and open
30
30
  `http://127.0.0.1:5173/examples/rect.html` while the development server is running.
31
31
 
32
32
  ```ts
@@ -179,7 +179,7 @@ attributes, including pending writes, and do not resolve inherited or computed C
179
179
 
180
180
  ## Runnable examples
181
181
 
182
- Run `npm run build` and `npm run dev`, then open an example on the development
182
+ Run `bun run build` and `bun run dev`, then open an example on the development
183
183
  server. Each phase example exercises its supported editing and lifecycle behavior.
184
184
 
185
185
  | Topic | Page | Optional module |
@@ -554,26 +554,26 @@ appropriate owner document/browser APIs.
554
554
 
555
555
  ## Verification
556
556
 
557
- `npm run release:check` runs the complete acceptance pipeline and records source
557
+ `bun run release:check` runs the complete acceptance pipeline and records source
558
558
  consistency, individual results and candidate readiness. `release:assess` does not
559
559
  run validation. Review public API changes with `api:check` before `api:update`.
560
560
 
561
561
  ```sh
562
- npm run typecheck
563
- npm test
564
- npm run build
562
+ bun run typecheck
563
+ bun run test
564
+ bun run build
565
565
  npx playwright install chromium firefox webkit
566
- npm run test:browser
567
- npm run check:consumer
568
- npm run check:size
569
- npm run bench
570
- npm run bench:create
571
- npm run bench:adopt
572
- npm run bench:svgjs
573
- npm run bench:svgjs -- --browser=all
574
- npm run bench:svgjs -- --browser=chromium --gc --output=reports/svgjs-comparison-gc
566
+ bun run test:browser
567
+ bun run check:consumer
568
+ bun run check:size
569
+ bun run bench
570
+ bun run bench:create
571
+ bun run bench:adopt
572
+ bun run bench:svgjs
573
+ bun run bench:svgjs -- --browser=all
574
+ bun run bench:svgjs -- --browser=chromium --gc --output=reports/svgjs-comparison-gc
575
575
  node scripts/profile-svgjs-creation.mjs
576
- npm run format:check
576
+ bun run format:check
577
577
  ```
578
578
 
579
579
  The packed consumer fixture verifies declarations, public runtime exports, typed
@@ -663,9 +663,88 @@ external subscriptions and application state are not revived. See the
663
663
  [history package](../history/README.md) for transactions, limits, conflict handling,
664
664
  and the precise supported-state contract.
665
665
 
666
+ Neutral groups can carry an undo label without importing history:
667
+
668
+ ```ts
669
+ import { beginChangeGroup } from '@rasamjs/core/changes';
670
+
671
+ const edit = beginChangeGroup(drawing, { label: 'Add text' });
672
+ edit.run(() => drawing.text({ text: 'Draft' }));
673
+ edit.cancel(); // Restores only this group's edits, then ends it.
674
+ ```
675
+
676
+ `cancel()` records and restores the group's non-temporary changes even when no history
677
+ is attached. Observers receive the restoration, followed by `groupend` with `cancelled`
678
+ and `restored` set to true. Finish the synchronous `run()` callback before cancelling.
679
+ Repeated `end()` or `cancel()` calls after completion do nothing. A conflicting external
680
+ edit leaves the group open and the model unchanged by the rejected cancellation, so the
681
+ application can resolve the conflict and retry. Permanent `destroy()` invalidates active
682
+ groups; further `run()` and `cancel()` calls throw `ChangeConflictError`. Close an invalidated
683
+ group with `end()`. Use `remove()` for reversible work.
684
+ Notification failures are reported after a successful restore and completion; multiple
685
+ failures are retained in an `AggregateError`. `end(true)` alone still performs no rollback.
686
+
687
+ ## Derived model changes
688
+
689
+ `deriveChanges(drawing, callback)` from `@rasamjs/core/changes` registers a synchronous
690
+ dependent edit before an operation's final snapshot. Its event contains changed nodes
691
+ and current source/group/label/temporary metadata. Callback writes join the same
692
+ operation and group, so one undo step can contain a shape and attached connectors.
693
+ Getter-only calls, no-op writes and restoration do not invoke derivations. Callbacks
694
+ run once in registration order and must not start another attribution scope/group.
695
+ The returned unsubscribe removes the callback; context destruction clears it. Caller
696
+ transactions own failure rollback.
697
+
698
+ Core reserves `data-rasam-connector-start` and `data-rasam-connector-end` as typed local
699
+ href references so endpoints follow ID remapping through cloning and SVG import/export.
700
+
701
+ ## Document framing and import
702
+
703
+ ```ts
704
+ import { exportSvg, importSvg } from '@rasamjs/core/interchange';
705
+
706
+ const svg = exportSvg(drawing, { frame: 'content', padding: 16 });
707
+ const nodes = importSvg(drawing, svg, { document: true });
708
+ ```
709
+
710
+ Content framing sets the exported document's `viewBox`, width and height from geometric
711
+ bounds in root coordinates. Padding defaults to zero and must be finite and nonnegative.
712
+ It excludes stroke and marker extents, and throws when content bounds are unavailable.
713
+ An empty drawing uses its numeric document dimensions, with 800 by 600 as the fallback
714
+ for unresolved dimensions. Export does not change the live drawing or camera. Framing
715
+ requires document output; the default export continues to preserve existing dimensions.
716
+ Framing a nested shape carries its omitted ancestors' transforms into the export;
717
+ framing a nested SVG preserves its own viewport inside the exported document.
718
+ Nested viewport percentages retain their original bases when the outer frame changes.
719
+ Use `BBox.union(nodes.map(node => node.bounds('root')))` to union several root-space bounds.
720
+
721
+ `document: true` imports the children of a single outer SVG, preserving the destination's
722
+ camera and dimensions and discarding root presentation. Use `document: 'presentation'`
723
+ to retain root paint, text styles, opacity, transforms and references in a scoped `<g>`.
724
+ This mode omits the root viewport attributes (`x`, `y`, `width`, `height`, `viewBox`,
725
+ `preserveAspectRatio`) and does not add a group for an envelope with no remaining
726
+ attributes. Existing destination content keeps its presentation; repeated exports and
727
+ imports do not add redundant groups. Both document modes validate the complete passive
728
+ envelope before discarding attributes. They also accept fragments and a full document's prolog: an XML
729
+ declaration, comments and a DOCTYPE without an internal subset, such as the public SVG 1.1
730
+ DOCTYPE that drawing applications write. Internal subsets, entities and later processing
731
+ instructions are still rejected. Malformed XML throws `SyntaxError` containing the parser's first error line.
732
+ Existing passive-content, namespace, resource and URL validation still applies. Without
733
+ the option, importing an SVG creates a nested viewport as before.
734
+
735
+ `document: 'replace'` requires an empty owning drawing. For a full SVG document it
736
+ also clears configured root presentation (retaining root ID/class and viewport settings),
737
+ so the incoming document owns its paint, styles and compositing. This prevents configured
738
+ root opacity from applying again to restored content. Fragments retain root defaults.
739
+
740
+ Embedded PNG, JPEG, GIF, WebP, AVIF and SVG data URLs are accepted by `importSvg()`
741
+ on `<image>` elements, allowing exported images to be restored. Other data-URL
742
+ positions and MIME types remain unsupported. Absolute HTTP(S) images, links and Use
743
+ URLs still require `externalUrls: 'http'`. Register the media catalog before importing images.
744
+
666
745
  ## Release status and license
667
746
 
668
- `@rasamjs/core@0.1.1` is published,
747
+ `@rasamjs/core@0.1.2` is published,
669
748
  licensed under [MIT](./LICENSE). The name is not reserved by these checks. Recheck the intended registry at the
670
749
  time of a separately authorized publication.
671
750
  The package remains `private: true` until publication is separately authorized.
@@ -674,3 +753,44 @@ See [CHANGELOG.md](./CHANGELOG.md) and the [public API review](./reports/public-
674
753
  `release:check` verifies CI wiring for the configured GitHub remote, `hdevlop/rasam`.
675
754
  The [CI workflow](../../.github/workflows/ci.yml) runs the full gate on pushes to `main`
676
755
  and pull requests once committed and pushed. See [RELEASING.md](RELEASING.md).
756
+
757
+ ## Raster image export
758
+
759
+ The optional `@rasamjs/core/raster` entry exports
760
+ `exportImage(root, options): Promise<Blob>` and `RasterOptions`. Importing needs no
761
+ DOM; rendering needs a browser.
762
+
763
+ ```ts
764
+ import { exportImage } from '@rasamjs/core/raster';
765
+ const png = await exportImage(drawing, {
766
+ type: 'image/png',
767
+ scale: 2,
768
+ frame: 'content',
769
+ padding: 16,
770
+ });
771
+ ```
772
+
773
+ PNG is the default; `image/jpeg` and `image/webp` request the browser's native
774
+ encoder. Unsupported encoders reject clearly instead of returning a different
775
+ format. `frame: 'content'` (default) uses geometric content bounds in drawing units,
776
+ independently of the camera, with zero padding by default. `frame: 'viewBox'` uses
777
+ the current document view and ignores padding. Positive finite scale rounds output
778
+ dimensions up to pixels. No export changes the source model or camera; snapshots
779
+ are taken before asynchronous resource loading. Add padding for strokes, markers
780
+ and filters, which can extend beyond geometric bounds.
781
+
782
+ `background` accepts a CSS color. PNG/WebP default to transparent; JPEG defaults to
783
+ white. Zero-size content needs positive padding. Output is limited to 32,767 pixels
784
+ per axis and 16,777,216 total pixels; reduce scale for larger documents.
785
+
786
+ Images must be data URLs or direct same-origin HTTP(S) resources. Resources are
787
+ fetched, validated and embedded, including images inside nested SVG image files.
788
+ Redirects, other protocols, cross-origin resources, corrupt images and cyclic or
789
+ overly nested resources reject. Tainted canvases produce a clear error; temporary
790
+ object URLs are released on success and failure.
791
+
792
+ **Web fonts are not embedded.** External stylesheets, computed page styles and
793
+ external SVG/CSS references are not embedded either. Rendering uses authored SVG
794
+ attributes and browser SVG-as-image rules; fallback fonts can differ from the live
795
+ editor. See [SVG processing modes](https://www.w3.org/TR/SVG2/conform.html) and
796
+ [canvas encoding rules](https://html.spec.whatwg.org/multipage/canvas.html).
package/RELEASING.md CHANGED
@@ -1,19 +1,27 @@
1
1
  # Release preparation
2
2
 
3
- The source manifest is the `@rasamjs/core@0.1.2` candidate, ESM-only, MIT-licensed and
4
- kept `private: true` between releases. It has no runtime dependencies. Core 0.1.1 is
5
- published; 0.1.2 is a patch release with no public API change. It gives replay observers
6
- the restored sibling order and keeps text reads out of change tracking, so observers that
7
- measure or edit during structural undo no longer record stray history entries. It pairs
8
- with the editor candidates `@rasamjs/transformer@0.4.0`, `@rasamjs/selection@0.3.0`,
9
- `@rasamjs/tools@0.2.0` and the first `@rasamjs/viewport@0.1.0`, whose core peer range
10
- stays `^0.1.0`. History 0.1.0 is unchanged and needs no republishing. Clipboard stays
11
- private until its real-Safari check. A published version
3
+ The source manifest is `@rasamjs/core@0.1.2`, ESM-only, MIT-licensed and kept
4
+ `private: true` between releases. It has no runtime dependencies. Core 0.1.2 was
5
+ published on 2026-11-02 with transformer 0.4.0, selection 0.3.0, tools 0.2.0 and the first
6
+ viewport 0.1.0 in the [editor release](https://github.com/hdevlop/rasam/releases/tag/viewport-v0.1.0);
7
+ it gives replay observers the restored sibling order and keeps text reads out of change
8
+ tracking, with no public API change. History 0.1.0 is unchanged. The first
9
+ `@rasamjs/clipboard@0.1.0` followed on 2026-11-02 in the
10
+ [clipboard release](https://github.com/hdevlop/rasam/releases/tag/clipboard-v0.1.0),
11
+ after its real-Safari check, with core peer range `^0.1.0`. A published version
12
12
  must never be overwritten. Select subsequent versions from the actual public API
13
13
  changes and record migration notes before a later release.
14
14
 
15
15
  ## Local acceptance gate
16
16
 
17
+ Editor Phase 16 performance work keeps transform snapshot/matrix reads outside
18
+ change transactions and releases image resources during disposal. Completed
19
+ metadata probes retain their source until collection, avoiding a second native
20
+ missing-source request. Scoped regression and benchmark evidence is recorded in
21
+ the [integrated performance report](../../apps/playground/reports/editor-performance.md).
22
+ Existing entry budgets, peers and the public API remain unchanged. The editor
23
+ plan's scoped-check policy applies to this work; no publication is authorized.
24
+
17
25
  Install dependencies at the repository root, which holds the only lockfile. The
18
26
  root builds rasam, then `@rasamjs/history` and `@rasamjs/transformer`, runs all packages
19
27
  for `test`, `test:browser`, `typecheck`, `format` and `format:check`, and runs all release gates
@@ -21,11 +29,11 @@ serially for `release:check`. Run other package scripts from the root with
21
29
  `-w @rasamjs/core`, or run them directly inside `packages/rasam`.
22
30
 
23
31
  ```sh
24
- npm ci
32
+ bun install --frozen-lockfile
25
33
  npx playwright install chromium firefox webkit
26
- npm run build
27
- npm run api:check -w @rasamjs/core
28
- npm run release:check
34
+ bun run build
35
+ bun run --filter @rasamjs/core api:check
36
+ bun run release:check
29
37
  ```
30
38
 
31
39
  The rasam release gate runs checks serially: formatting, coverage freshness, typecheck,
@@ -70,10 +78,10 @@ methods and symbol hooks. Review changed exports, return types,
70
78
  declarations and prototype reachability before updating that inventory:
71
79
 
72
80
  ```sh
73
- npm run build
74
- npm run api:check -w @rasamjs/core
81
+ bun run build
82
+ bun run --filter @rasamjs/core api:check
75
83
  # After reviewing the actual change:
76
- npm run api:update -w @rasamjs/core
84
+ bun run --filter @rasamjs/core api:update
77
85
  ```
78
86
 
79
87
  The packed-consumer fixture checks positive and negative type examples, every
@@ -91,7 +99,7 @@ stable-v1 application contract.
91
99
  The configured GitHub remote is `hdevlop/rasam`. The
92
100
  [CI workflow](../../.github/workflows/ci.yml) runs on pushes to `main` and pull requests.
93
101
  It uses Node.js 24, installs locked dependencies and Chromium, Firefox and WebKit,
94
- runs `npm run release:check` from the root, and uploads
102
+ runs `bun run release:check` from the root, and uploads
95
103
  `packages/rasam/reports/release-readiness.json`,
96
104
  `packages/history/reports/release-readiness.json`, and
97
105
  `packages/transformer/reports/release-readiness.json` even when validation fails.
@@ -115,14 +123,14 @@ validation script removes `private: true`, sends messages, creates a tag, upload
115
123
  artifacts or invokes `npm publish`.
116
124
 
117
125
  The public names are `@rasamjs/core`, `@rasamjs/history`, `@rasamjs/transformer`,
118
- `@rasamjs/selection`, `@rasamjs/tools` and `@rasamjs/viewport`.
126
+ `@rasamjs/selection`, `@rasamjs/tools`, `@rasamjs/viewport` and `@rasamjs/clipboard`.
119
127
  Keep the source manifests guarded for candidate validation. After authorization,
120
128
  extract each validated tarball into an isolated publication directory, remove only
121
129
  the manifest's `private` field, and repack it. Verify that every other packed file
122
130
  and manifest value matches the validated candidate, then test the exact public
123
131
  tarballs together as installed consumers. Record their new integrity values and
124
132
  publish new versions in dependency order: rasam, history, transformer, selection,
125
- tools, viewport. For the current editor candidate, publish core 0.1.2, then transformer
126
- 0.4.0, selection 0.3.0, tools 0.2.0 and viewport 0.1.0. History 0.1.0 stays as published.
127
- Verify the new registry
133
+ tools, viewport, clipboard. Verify the new registry
128
134
  versions and integrity values before publishing the GitHub release.
135
+
136
+ The optional raster entry has a 12 KiB gzip budget and must stay outside existing bundles. Raster acceptance covers decoded pixels, formats, same-origin/data resources, corrupt images, camera/model preservation and tainted-canvas errors. Browser font/style embedding is not provided.
@@ -1,6 +1,6 @@
1
1
  import type { AnyNode } from '../core/types.js';
2
2
  import type { DrawingContext } from '../services/context.js';
3
- import type { ChangeEvent, ChangeGroup, ChangeMetadata, ModelChange, ModelSnapshot, NodeHandle } from './types.js';
3
+ import type { ChangeEvent, ChangeGroup, ChangeMetadata, ChangeDerivation, ModelChange, ModelSnapshot, NodeHandle } from './types.js';
4
4
  interface ChangeAdapter {
5
5
  capture(node: AnyNode): ModelSnapshot;
6
6
  diff(target: NodeHandle, before: ModelSnapshot, after: ModelSnapshot): ModelChange[];
@@ -9,6 +9,7 @@ interface ChangeAdapter {
9
9
  export declare class ChangeService {
10
10
  private readonly context;
11
11
  private readonly listeners;
12
+ readonly derivations: Set<(event: ChangeDerivation) => void>;
12
13
  private readonly identities;
13
14
  private readonly retained;
14
15
  private readonly queue;
@@ -49,7 +50,9 @@ export declare class ChangeService {
49
50
  run<Result>(node: AnyNode | null, callback: () => Result): Result;
50
51
  private finish;
51
52
  scope<Result>(metadata: ChangeMetadata, callback: () => Result, node?: AnyNode | null): Result;
52
- group(metadata?: ChangeMetadata): ChangeGroup;
53
+ group(metadata?: ChangeMetadata): Omit<ChangeGroup, 'cancel'> & {
54
+ end(cancelled?: boolean, restored?: boolean): void;
55
+ };
53
56
  permanent(nodes: readonly AnyNode[]): void;
54
57
  beforeDisposal(nodes: readonly AnyNode[]): void;
55
58
  restoring<Result>(callback: () => Result): Result;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/changes/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/changes/service.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { ChangeConflictError, ChangeObserverError } from './types.js';
2
2
  export class ChangeService {
3
3
  context;
4
4
  listeners = new Set();
5
+ derivations = new Set();
5
6
  identities = new WeakMap();
6
7
  retained = new WeakSet();
7
8
  queue = [];
@@ -24,7 +25,7 @@ export class ChangeService {
24
25
  this.context = context;
25
26
  }
26
27
  get observed() {
27
- return this.listeners.size > 0;
28
+ return this.listeners.size > 0 || this.derivations.size > 0;
28
29
  }
29
30
  get replaying() {
30
31
  return this.replayDepth > 0;
@@ -169,6 +170,18 @@ export class ChangeService {
169
170
  if (node)
170
171
  this.touch(node);
171
172
  result = callback();
173
+ if (this.before.size && this.derivations.size) {
174
+ const nodes = [...this.before]
175
+ .filter(([target, previous]) => target.node.isDestroyed ||
176
+ this.adapter.diff(target, previous, this.adapter.capture(target.node)).length)
177
+ .map(([target]) => target.node);
178
+ if (nodes.length) {
179
+ const event = { ...this.metadata, nodes };
180
+ for (const derive of [...this.derivations])
181
+ if (this.derivations.has(derive))
182
+ derive(event);
183
+ }
184
+ }
172
185
  }
173
186
  catch (error) {
174
187
  failure = { error };
@@ -241,7 +254,12 @@ export class ChangeService {
241
254
  let active = true;
242
255
  this.groups.add(id);
243
256
  try {
244
- this.publish(Object.freeze({ type: 'groupstart', group: id, source }));
257
+ this.publish(Object.freeze({
258
+ type: 'groupstart',
259
+ group: id,
260
+ source,
261
+ ...(metadata.label === undefined ? {} : { label: metadata.label }),
262
+ }));
245
263
  }
246
264
  catch (error) {
247
265
  this.groups.delete(id);
@@ -255,12 +273,18 @@ export class ChangeService {
255
273
  throw new Error('Change group has ended');
256
274
  return this.scope({ ...metadata, group: id }, callback, null);
257
275
  },
258
- end: (cancelled = false) => {
276
+ end: (cancelled = false, restored = false) => {
259
277
  if (!active)
260
278
  return;
261
279
  active = false;
262
280
  this.groups.delete(id);
263
- this.publish(Object.freeze({ type: 'groupend', group: id, source, cancelled }));
281
+ this.publish(Object.freeze({
282
+ type: 'groupend',
283
+ group: id,
284
+ source,
285
+ cancelled,
286
+ ...(restored ? { restored: true } : {}),
287
+ }));
264
288
  },
265
289
  });
266
290
  }
@@ -354,6 +378,7 @@ export class ChangeService {
354
378
  }
355
379
  destroy() {
356
380
  this.listeners.clear();
381
+ this.derivations.clear();
357
382
  this.queue.length = 0;
358
383
  this.notifications.length = 0;
359
384
  this.replacements.length = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/changes/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/changes/service.ts"],"names":[],"mappings":"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"}
@@ -88,9 +88,14 @@ export type ModelChange = (RecordOf<'property', PropertyState> & {
88
88
  }) | RecordOf<'transform', TransformState> | RecordOf<'content', ContentState> | RecordOf<'presentation', string | null | undefined> | RecordOf<'custom', Readonly<Record<string, unknown>> | undefined> | RecordOf<'placement', Placement> | RecordOf<'bounds', boolean> | RecordOf<'children', readonly NodeHandle[]> | RecordOf<'native', readonly NativeNodeState[]> | RecordOf<'existence', ModelSnapshot | null>;
89
89
  export interface ChangeMetadata {
90
90
  readonly source?: string;
91
+ readonly label?: string;
91
92
  readonly temporary?: boolean;
92
93
  readonly group?: number;
93
94
  }
95
+ /** Runs synchronously after an operation's writes, before its final change snapshot. */
96
+ export interface ChangeDerivation extends ChangeMetadata {
97
+ readonly nodes: readonly AnyNode[];
98
+ }
94
99
  export interface ChangeBatch {
95
100
  readonly type: 'change';
96
101
  readonly id: number;
@@ -108,7 +113,9 @@ export type ChangeEvent = ChangeBatch | {
108
113
  readonly type: 'groupstart' | 'groupend';
109
114
  readonly group: number;
110
115
  readonly source: string;
116
+ readonly label?: string;
111
117
  readonly cancelled?: boolean;
118
+ readonly restored?: boolean;
112
119
  } | {
113
120
  readonly type: 'dispose' | 'willdispose';
114
121
  readonly targets: readonly NodeHandle[];
@@ -117,6 +124,8 @@ export interface ChangeGroup {
117
124
  readonly id: number;
118
125
  run<Result>(callback: () => Result): Result;
119
126
  end(cancelled?: boolean): void;
127
+ /** Restore this group's own non-temporary changes, then end it as cancelled. */
128
+ cancel(): void;
120
129
  }
121
130
  export declare class ChangeConflictError extends Error {
122
131
  constructor(message?: string);
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/changes/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/changes/types.ts"],"names":[],"mappings":"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"}