Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ kept so existing scripts fail loudly (Refs #56)

==== Added

* Pixi/UI/Sound idaptik-reached remainder (#760): Graphics
circle/stroke/roundRect/path, per-axis Container x/y, parent Option,
interactiveChildren, ObservablePoint.set, Texture.WHITE, Assets
init/loadBundle, Renderer.resize, FancyButton onPress/onDown/onHover,
Slider/Input value, `@pixi/sound` singleton pauseAll/find/play(name).
Bun-ESM lowerings + smokes. Unused Pixi.res decls stay out.
* CI gates on `.deed` (DEED grammar). Leftover `.a2ml` is a hard fail.
`tools/check-deed-gates.sh` + `.github/workflows/deed-validate.yml`.
Machine-readable manifests renamed `.a2ml` → `.deed`. Repo deed:
Expand Down
5 changes: 3 additions & 2 deletions docs/CAPABILITY-MATRIX.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,9 @@ their own ledger (link:SOUNDNESS.adoc[SOUNDNESS.adoc]), gated by
(INT-09) closed 2026-07-25. `affinescript-pixijs` in-tree bindings
(`stdlib/Pixi.affine` + UI/Sound) plus 56-A `stdlib/Dom.affine` /
`stdlib/Console.affine` and 56 PR 4 Window/Document/utility externs
landed 2026-09-21; record-literal attrs + remaining idaptik Pixi
decls are still open (#56). The `-dom-loader` satellite was folded into
landed 2026-09-21; idaptik-reached Pixi/UI/Sound remainder landed
2026-09-21 (#760). Unused Pixi.res decls (BigPool, Extensions,
ScrollBox, sprite atlases) are not in the #760 bar. The `-dom-loader` satellite was folded into
`affine-js` (#489).

== Change control
Expand Down
13 changes: 6 additions & 7 deletions docs/TECH-DEBT.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ index. Residual WASI follow-ups #485 (S5 filesystem) and #487
(socket recv/send/accept) have preview1 lowerings + gated smokes in
tree; #486 flipped the *wrap* default to `--command` without the
one-way compiler re-target (native-preview2 cleanup still open).
Satellite remainder is #56 (56-A Dom/Console + Pixi gap-fill +
Window/Document/utility PR 4 landed; record-literal attrs + remaining
idaptik Pixi decls still open).
Satellite remainder for Pixi is #760 (idaptik-reached decls landed;
unused Pixi.res surface is not a close-blocker). #56 is closed.
====

toc::[]
Expand Down Expand Up @@ -487,16 +486,16 @@ Proven + locked (see INT-02)
#182 CLOSED 2026-07-25)
|SAT-04 |`affinescript-cadre` router runtime |S2 |**DONE** (=INT-09,
CLOSED 2026-07-25)
|SAT-05 |`affinescript-pixijs` migration prerequisite |S3 |open #56
56-A + Pixi gap-fill + Window/Document/utility (PR 4) landed; remainder
is record-literal attrs + the rest of idaptik's Pixi.res decls
|SAT-05 |`affinescript-pixijs` migration prerequisite |S3 |#56 closed;
idaptik-reached Pixi/UI/Sound remainder landed #760. Unused decls
(BigPool, Extensions, ScrollBox, sprite atlases) stay out of bar
|===

== Stage E — typed-wasm convergence runway

Formal interface spec:
link:specs/TYPED-WASM-INTERFACE.adoc[specs/TYPED-WASM-INTERFACE.adoc]
(+ link:specs/TYPED-WASM-INTERFACE.a2ml[machine companion]).
(+ link:specs/TYPED-WASM-INTERFACE.deed[machine companion]).
Widening roadmap (tranches A..E, recommended sequencing):
link:specs/TYPED-WASM-ROADMAP.adoc[specs/TYPED-WASM-ROADMAP.adoc].
Proposed ADRs: ADR-020 (schema versioning), ADR-021 (multi-producer
Expand Down
12 changes: 6 additions & 6 deletions docs/bindings-roadmap.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -49,21 +49,21 @@ no further significant → AffineScript work is tractable.

|1
|*PixiJS core* (Application, Container, Sprite, Graphics, Text, Ticker, FederatedEvent)
|`◑` partial (Application / Container / Sprite / Graphics / Text / Texture / Ticker landed; Container 8.x transform-and-event surface — scale / pivot / rotation / alpha / zIndex / sortableChildren / eventMode / cursor + on/off pointer-event registration + Sprite anchor — landed; opaque `FederatedPointerEvent` Json accessors + `parent` read accessor + Point/Rectangle/Circle helper types + sprite atlases + filters + hitArea deferred)
|`◑` partial (idaptik-reached surface landed #760: Application / Container / Sprite / Graphics / Text / Texture / Ticker / Point / Rectangle / Circle / ObservablePoint / BlurFilter / NineSliceSprite / Assets / Renderer; per-axis x/y, parent Option, interactiveChildren, addChildAt, removeChildren, Graphics circle/stroke/roundRect/path, Texture.WHITE, ticker deltaTime, renderer.resize, FederatedPointerEvent global + preventDefault)
|`stdlib/Pixi.affine` (eventual home: `affinescript-pixijs` as a separate repo per the SNIFs/typed-wasm precedent)
|idaptik `src/bindings/Pixi.res`; all 215 `src/app/*.res` files depend on this. Restarted 2026-05-28 — the prior `affinescript-pixijs/` directory used the obsolete `.as` extension + AGPL-3.0-or-later headers + a Zig→C→WASM-import architecture incompatible with the Deno-ESM emitter; it was deleted and the surface rebuilt in `stdlib/Pixi.affine` matching the wasmCall / motion pattern. Container accessor + on/off expansion landed 2026-05-31. Test fixture: `tests/codegen-deno/pixi_smoke.{affine,harness.mjs}` exercises every shipped extern, including `smokeAccessorsFlow` over the 11-extern 8.x transform-and-event addition. Follow-ups: typed `FederatedPointerEvent` accessors (read global/client x,y; target; stopPropagation); `parent` read accessor with Option-null handling; Point/Rectangle/Circle helper types; sprite atlases; filters; hitArea.
|idaptik `src/bindings/Pixi.res` (JoshuaJewell/IDApixiTIK). Restarted 2026-05-28 — the prior `affinescript-pixijs/` directory used the obsolete `.as` extension + AGPL-3.0-or-later headers + a Zig→C→WASM-import architecture incompatible with the Bun-ESM emitter; it was deleted and the surface rebuilt in `stdlib/Pixi.affine`. #760 ports only what `src/app` + `src/engine` still call. Test fixture: `tests/codegen-deno/pixi_smoke.{affine,harness.mjs}` (`smokeIdaptikReach` / `smokeAssets`). Unused decls (BigPool, Extensions, ResizePlugin, CanvasStyle, TextStyle, sprite atlases, stopPropagation target) stay out.

|2
|*@pixi/sound* (`Sound.from`, play, stop, volume, setVolume, loop)
|`◐` scaffold (from / play / stop / pause / resume / setVolume / setLoop landed)
|`◑` partial (`Sound.from` transport + idaptik singleton `pauseAll` / `resumeAll` / `muteAll` / `unmuteAll` / `volumeAll` / `find` / `play(name)` landed #760)
|`stdlib/PixiSound.affine` (eventual home: `affinescript-pixijs` sub-module, or `affinescript-pixi-sound`)
|idaptik `src/bindings/PixiSound.res`; BGM + SFX. Initial surface (`pixiSoundFrom` / `pixiSoundPlay` / `pixiSoundStop` / `pixiSoundPause` / `pixiSoundResume` / `pixiSoundSetVolume` / `pixiSoundSetLoop`) lands in `stdlib/` parallel to Motion / Http / Sqlite / Crypto; consumer provides `globalThis.__as_pixi_sound` (the `Sound` named export from `@pixi/sound`) at module-init time. Test fixture: `tests/codegen-deno/pixisound_smoke.{affine,harness.mjs}`. Follow-ups: `Sound.add` (multi-source registry), sprite atlases, async load (await + onload), `pauseAll` / `stopAll` / `resumeAll`, the `sound` singleton's filter pipeline.
|idaptik `src/bindings/PixiSound.res` talks to the `@pixi/sound` *singleton*, not `Sound.from`. Consumer sets `globalThis.__as_pixi_sound` to the `Sound` class and `globalThis.__as_pixi_sound_lib` to the `sound` singleton. Test fixture: `tests/codegen-deno/pixisound_smoke.{affine,harness.mjs}`. Follow-ups: `Sound.add`, sprite atlases, async load, singleton filter pipeline.

|3
|*@pixi/ui* (Button, FancyButton, Switch, Slider, Input, ScrollBox)
|`◐` scaffold
|`◑` partial (idaptik-reached: FancyButton onPress/onDown/onHover, Slider value + addChild, Input value/onEnter/onChange, List.addChild, ProgressBar progress; Button/Switch constructors remain)
|`stdlib/PixiUI.affine` (eventual home: `affinescript-pixijs` sub-module)
|idaptik `src/bindings/PixiUI.res`; all HUD / menu code. MVP surface (Button / FancyButton / Slider / Switch — `new` + primary callback + `AsContainer` upcast) lives in `stdlib/` alongside Pixi / PixiSound; consumer provides `globalThis.__as_pixi_ui` at module-init time. Test fixture: `tests/codegen-deno/pixiui_smoke.{affine,harness.mjs}`. Deferred follow-ups: Input (text-entry + focus + value), ScrollBox (scroll position + viewport), full event surface (onHover / onOut / onDown / onUp), FancyButton textures-per-state accessors, Slider min/max/step accessors.
|idaptik `src/bindings/PixiUI.res` HUD/menu. #760 adds the signals and value accessors `src/app` actually calls. Test fixture: `tests/codegen-deno/pixiui_smoke.{affine,harness.mjs}`. Deferred: ScrollBox, FancyButton textures-per-state, Slider min/max/step, Input focus.

|4
|*motion* (animate, animateMini, tween, ease, spring)
Expand Down
Loading
Loading