Skip to content

Commit afc7f99

Browse files
feat(pixi): port idaptik-reached Pixi/UI/Sound remainder (#764)
Closes #760. Audit of IDApixiTIK src/app+engine vs Pixi.res. Unused decls stay out.
1 parent 5204e90 commit afc7f99

14 files changed

Lines changed: 515 additions & 31 deletions

CHANGELOG.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ kept so existing scripts fail loudly (Refs #56)
2323

2424
==== Added
2525

26+
* Pixi/UI/Sound idaptik-reached remainder (#760): Graphics
27+
circle/stroke/roundRect/path, per-axis Container x/y, parent Option,
28+
interactiveChildren, ObservablePoint.set, Texture.WHITE, Assets
29+
init/loadBundle, Renderer.resize, FancyButton onPress/onDown/onHover,
30+
Slider/Input value, `@pixi/sound` singleton pauseAll/find/play(name).
31+
Bun-ESM lowerings + smokes. Unused Pixi.res decls stay out.
2632
* CI gates on `.deed` (DEED grammar). Leftover `.a2ml` is a hard fail.
2733
`tools/check-deed-gates.sh` + `.github/workflows/deed-validate.yml`.
2834
Machine-readable manifests renamed `.a2ml` → `.deed`. Repo deed:

docs/CAPABILITY-MATRIX.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,9 @@ their own ledger (link:SOUNDNESS.adoc[SOUNDNESS.adoc]), gated by
298298
(INT-09) closed 2026-07-25. `affinescript-pixijs` in-tree bindings
299299
(`stdlib/Pixi.affine` + UI/Sound) plus 56-A `stdlib/Dom.affine` /
300300
`stdlib/Console.affine` and 56 PR 4 Window/Document/utility externs
301-
landed 2026-09-21; record-literal attrs + remaining idaptik Pixi
302-
decls are still open (#56). The `-dom-loader` satellite was folded into
301+
landed 2026-09-21; idaptik-reached Pixi/UI/Sound remainder landed
302+
2026-09-21 (#760). Unused Pixi.res decls (BigPool, Extensions,
303+
ScrollBox, sprite atlases) are not in the #760 bar. The `-dom-loader` satellite was folded into
303304
`affine-js` (#489).
304305

305306
== Change control

docs/TECH-DEBT.adoc

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

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

495494
== Stage E — typed-wasm convergence runway
496495

497496
Formal interface spec:
498497
link:specs/TYPED-WASM-INTERFACE.adoc[specs/TYPED-WASM-INTERFACE.adoc]
499-
(+ link:specs/TYPED-WASM-INTERFACE.a2ml[machine companion]).
498+
(+ link:specs/TYPED-WASM-INTERFACE.deed[machine companion]).
500499
Widening roadmap (tranches A..E, recommended sequencing):
501500
link:specs/TYPED-WASM-ROADMAP.adoc[specs/TYPED-WASM-ROADMAP.adoc].
502501
Proposed ADRs: ADR-020 (schema versioning), ADR-021 (multi-producer

docs/bindings-roadmap.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,21 @@ no further significant → AffineScript work is tractable.
4949

5050
|1
5151
|*PixiJS core* (Application, Container, Sprite, Graphics, Text, Ticker, FederatedEvent)
52-
|`◑` 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)
52+
|`◑` 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)
5353
|`stdlib/Pixi.affine` (eventual home: `affinescript-pixijs` as a separate repo per the SNIFs/typed-wasm precedent)
54-
|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.
54+
|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.
5555

5656
|2
5757
|*@pixi/sound* (`Sound.from`, play, stop, volume, setVolume, loop)
58-
|`◐` scaffold (from / play / stop / pause / resume / setVolume / setLoop landed)
58+
|`◑` partial (`Sound.from` transport + idaptik singleton `pauseAll` / `resumeAll` / `muteAll` / `unmuteAll` / `volumeAll` / `find` / `play(name)` landed #760)
5959
|`stdlib/PixiSound.affine` (eventual home: `affinescript-pixijs` sub-module, or `affinescript-pixi-sound`)
60-
|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.
60+
|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.
6161

6262
|3
6363
|*@pixi/ui* (Button, FancyButton, Switch, Slider, Input, ScrollBox)
64-
|`◐` scaffold
64+
|`◑` partial (idaptik-reached: FancyButton onPress/onDown/onHover, Slider value + addChild, Input value/onEnter/onChange, List.addChild, ProgressBar progress; Button/Switch constructors remain)
6565
|`stdlib/PixiUI.affine` (eventual home: `affinescript-pixijs` sub-module)
66-
|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.
66+
|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.
6767

6868
|4
6969
|*motion* (animate, animateMini, tween, ease, spring)

0 commit comments

Comments
 (0)