@@ -145,21 +145,6 @@ const frame = deformation.sample({
145145mounted .apply ({ leaves: frame .leafUpdates });
146146```
147147
148- Morph supports ` static-prepared ` , ` morph-regions ` , ` joint-skin ` , and
149- ` prepared-playback ` profiles. It does not own an animation scheduler: callers
150- sample controls, springs, clips, skinning, or playback and pass only changed
151- rows to ` mounted.apply(...) ` . Mounted leaf identity stays stable, and runtime
152- updates do not rebuild topology or redraw prepared image resources.
153- Prepared playback uses a two-phase sample: apply ` sample.update ` , then call
154- ` runtime.commit(sample) ` only after the retained mount accepts the update.
155-
156- Morph chooses the triangle paint path once when it mounts. It uses
157- ` corner-shape ` where available, a larger CSS border triangle in Firefox, and
158- prepared alpha-atlas pages in WebKit/Safari. Every polygon receives a slice
159- sized to its local-2D bounding rect. Mount creates object URLs from the
160- already-verified package bytes, selects the fallback once, and revokes those
161- URLs at teardown; it never refetches, generates, or redraws the atlas.
162-
163148See the [ PolyCSS Morph guide] ( https://polycss.com/guides/morph/ ) , including the
164149interactive cube-to-sphere example.
165150
@@ -235,36 +220,7 @@ Each visible polygon is emitted as one leaf element; the renderer chooses the le
235220- ` <i> ` clips solid polygons with ` border-shape: polygon(...) ` when the browser supports it.
236221- ` <s> ` maps a packed texture-atlas slice with ` background-image ` , and is the fallback for textured or unsupported shapes.
237222
238- <!-- polycss:shared:packages:start -->
239- ## Packages
240-
241- | Package | Description |
242- | ---| ---|
243- | ` @layoutit/polycss-core ` | Pure math, parsers, lighting, camera helpers, mesh optimization. Zero browser globals. |
244- | ` @layoutit/polycss ` | Vanilla custom elements and imperative ` createPolyScene ` API. |
245- | ` @layoutit/polycss-react ` | React components, hooks, controls, and core re-exports. |
246- | ` @layoutit/polycss-vue ` | Vue 3 components, composables, controls, and core re-exports. |
247- | ` @layoutit/polycss-morph ` | Prepared-model loading, retained DOM animation, morph targets, skinning, and playback. |
248- | ` @layoutit/polycss-skills ` | ` npx @layoutit/polycss-skills ` — installs the PolyCSS agent skill into ` .claude/skills ` or ` .agents/skills ` . |
249- | ` @layoutit/polycss-domformat ` | Private MIT-licensed producer-neutral ` domformat@0 ` runtime for canonical JSON plus digest-bound sibling resources; conformance and specifications stay repository-side. Not published. |
250- <!-- polycss:shared:packages:end -->
251-
252- The website-owned producer also carries a deterministic canonical JSON snapshot
253- of every Gallery model at ` website/gallery-domformat-corpus/ ` , with digest-bound
254- CSS and image siblings. Its catalog pins the 640×640 Playwright Chromium
255- strategy environment, including engine version, device scale, media queries,
256- CSS feature branches, and per-model leaf-strategy counts; it does not claim
257- cross-engine strategy topology. Static models are presentation-only. Animated
258- models add the Gallery-selected preferred clip sampled at a fixed 30 Hz. The
259- corpus is a website asset, not package payload.
260- Regenerate it with ` pnpm gallery:domformat ` , verify exact Gallery inventory and
261- sibling-resource closure with ` pnpm gallery:domformat:verify ` , and run an
262- independent byte-for-byte regeneration check with
263- ` pnpm gallery:domformat:verify:fresh ` . Produce an
264- external direct-versus-canonical animated proof with
265- ` pnpm gallery:domformat:prove --output /absolute/path ` ; it requires exact
266- retained DOM and computed paint semantics and reports bounded subpixel
267- Chromium compositor differences.
223+
268224
269225## Coding Agents
270226
0 commit comments