Skip to content

chore: convert flows, deprecate box2d raw slots, drop legacy renderEventEntry (RFC-PLUGIN-EVENTS phase 6) #13

@apotema

Description

@apotema

Phase 6 of RFC-PLUGIN-EVENTS. Tracker: flow-codegen#11.

Scope

Cross-repo cleanup once phases 1-5 are stable: convert every in-tree flow to the new form, deprecate then remove labelle-box2d's raw callback slots, and delete flow-codegen's legacy OnEvent codegen.

  1. Convert in-tree flows. Run the phase-3 legacy_onevent_to_name converter on every .flow.jsonc in the toolkit — bouncing-ball, flying-platform-labelle, bakery-game (and any other shipped game with OnEvent flows). Commit per-repo.
  2. labelle-box2d deprecation. Mark the pub var on_collision_begin / on_collision_end / on_collision_hit / on_sensor_enter / on_sensor_exit slots (labelle-box2d/src/root.zig:90-95) deprecated. After a deprecation window (one release), remove them entirely and drop the raw-slot calls from processContacts / processSensorEvents (they become game.emit-only — the dual-emit code added in phase 2 becomes the only emit).
  3. flow-codegen legacy deletion. Drop the v1 renderEventEntry legacy path (codegen.zig:517-575 — the setup() + flowEvent + slot-assign codegen). Remove the legacy module/callback/params fields from flow_io.Event.OnEvent. Update / delete tests pinning the legacy form.

This is cross-repo. The legacy renderEventEntry deletion is the most concrete artifact; the box2d deprecation can be split into its own follow-up sub-ticket if a longer deprecation window is wanted.

Success criteria

  • No .flow.jsonc in the toolkit uses the legacy module+callback+params form.
  • labelle-box2d exposes only pub const Events — the pub var on_collision_* slots are gone.
  • flow-codegen's renderEventEntry is single-path (new-form only); the legacy code-path is deleted; the test suite is green.

Blocked on

References

  • RFC: Migration, Phased plan §6.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions