Skip to content

refactor(api)!: v0.15 Welle 1 — API-Konsistenz (System.update, serializer per-app, barrel cleanup)#164

Merged
Exoridus merged 1 commit into
mainfrom
feat/v0.15-w1-api-core
Jun 23, 2026
Merged

refactor(api)!: v0.15 Welle 1 — API-Konsistenz (System.update, serializer per-app, barrel cleanup)#164
Exoridus merged 1 commit into
mainfrom
feat/v0.15-w1-api-core

Conversation

@Exoridus

Copy link
Copy Markdown
Owner

v0.15 Welle 1 — API-Konsistenz (BREAKING, vor 1.0)

Bündelt die drei kleinen, disjunkten Slices 3a/3b/3d. Spec: .workspace/specs/v0.15-hardening/02-api-konsistenz.md. (3c Text-ctor + 3e Barrels folgen separat.)

3a — System.update(delta: Time): void über alle 5 Manager (BREAKING)

InputManager.update(): thisupdate(_delta: Time): void (fluenter Return entfernt); InteractionManager + AudioManager bekommen den Param. Tween/RenderingContext waren schon konform. 0 externe Call-Sites brechen (kein Code kettet den this-Return). Param ist _delta (ungenutzt, aber Teil des System-Contracts — lint:strict verbietet ungenutzte nicht-_-Args; die Spec-Annahme „Lint erlaubt es" war empirisch falsch).

3b — Serializer per-App + Test-Reset

registerSerializer + Prefab.from/instantiate bekommen optionalen registry-Param (default global). Neue @internal _resetDefaultSerializers() + SerializationRegistry.clear() schließen einen belegten Cross-Suite-Leak im globalen Registry (serialization.test.ts:273). afterEach-Reset + 2 neue Tests.

3d — Toten internen Barrel entfernt

src/rendering/index.ts war toter Code (0 statische Importe). Gelöscht; der einzige (dynamische) Test-Import wandert auf #rendering/public. Abgrenzung abstrakte (subclass-stabil) vs. konkrete (intern) Renderer in renderer-sdk.ts + custom-renderers-Guide dokumentiert.

Verifikation (lokale CI-Parität)

  • typecheck (root + Pakete) ✅ · lint:strict / lint / lint:packages ✅ · format:check ✅
  • test: 3395 passed, 1 skip, 0 fail ✅
  • docs:api:check in-sync (audio/input/interaction-manager.mdx + prefab.mdx regeneriert) ✅

…app, dead barrel removed

BREAKING: unifies the System.update protocol across all managers and removes a
dead internal rendering barrel.

3a — System.update(delta: Time): void across all 5 app systems. InputManager
  update(): this -> update(_delta: Time): void (fluent return removed);
  InteractionManager + AudioManager gain the param. Tween/RenderingContext were
  already conform. 0 external call-sites broke. The param is `_delta` (unused but
  required by the System contract; lint:strict forbids unused non-_ args, the
  spec's "lint allows it" assumption was empirically wrong).

3b — registerSerializer + Prefab.from/instantiate gain an optional `registry`
  param (per-app serialization; default = global). New @internal
  _resetDefaultSerializers() + SerializationRegistry.clear() close a cross-suite
  global-registry leak (serialization.test.ts:273); afterEach reset + 2 new tests.

3d — deleted dead internal barrel src/rendering/index.ts (0 static imports;
  migrated its one dynamic test import to #rendering/public). Documented the
  abstract-vs-concrete renderer boundary in renderer-sdk.ts + custom-renderers guide.

api-mdx regenerated (audio/input/interaction-manager, prefab). 3395 tests pass.
@Exoridus Exoridus merged commit bfea366 into main Jun 23, 2026
12 checks passed
@Exoridus Exoridus deleted the feat/v0.15-w1-api-core branch June 23, 2026 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant