2026-07-12 - 2026-07-19
Overview
30 issues closed from 1 user
Closed
#385 WASM: IDBFS not exported to runtime under Emscripten 5.0.0 — /save mount throws ReferenceError
Closed
#382 [Tooling] "Open in Playground" links from doc snippets — url-encoded short, raw-URL fetch long — with tag/commit version pinning
Closed
#384 make wasm full-game web build wears the playground code-panel shell (shell.html) instead of shell_game.html
Closed
#383 Headless Timer epoch uses wall clock (runtime), not simulation_time — first fire under step() is nondeterministic
Closed
#378 [Bugfix] Embedded interpreter's filesystem encoding is ASCII: open() cannot read a UTF-8 file
Closed
#379 [Bugfix] A transition into the first scene leaves mcrfpy.current_scene as None for the whole transition
Closed
#373 [Bugfix] A GC'd Python subclass wrapper resurrects as its base type (residual gap from #369)
Closed
#377 [Bugfix] Only UICollection.append maintains the parent link; insert/extend/setitem/slice do not
Closed
#369 [Bugfix] .parent allocates a fresh wrapper on every read, so child.parent is parent is always False
Closed
#375 [Bugfix] DijkstraMap.path_from() returns the path reversed; step_from() returns a non-adjacent cell (teleport)
Closed
#372 [Bugfix] tests/demo/ is rotted and unrunnable — screens/base.py calls mcrfpy.sceneUI, removed long ago; demos are not in the test suite
Closed
#376 [Bugfix] Grid layer property setters (visible, z_index) don't invalidate the render cache
Closed
#341 get_metrics() draw_calls / ui_elements / render counters read 0 in windowed builds
Closed
#350 [Bugfix] Headless mcrfpy.step() bypasses updatePythonScenes() — scene.update() and lifecycle callbacks never fire in headless tests
Closed
#356 [Bugfix] Doc generator/stub generator miss module-level dynamic attributes (current_scene, scenes)
Closed
#365 [Bugfix] Stale last_clicked_cell can be dispatched for a GridView with no grid data
Closed
#367 [Bugfix] Losing window focus strands hover state the same way a window-leave did (#363's sibling)
Closed
#368 [Bugfix] Frame(cache_subtree=True) silently freezes its subtree's content: render_dirty is a write-once latch, so markContentDirty never propagates
Closed
#357 [Bugfix] mcrfpy.find()/findAll() never search entities inside grids (UIGRID gate dead since #252)
Closed
#362 [Bugfix] GridData::views leaks expired weak_ptrs — ~UIGridView never unregisters
Closed
#370 [Bugfix] Grid.center_camera() and Grid.size = ... are silent no-ops (they write to the ghost camera)
Closed
#371 [Bugfix] Shader uniform binding reads a GridView wrapper as a _GridData wrapper (type confusion)
Closed
#361 [Refactor] Complete #252: GridData becomes a public data type, GridView is the only drawable, Grid becomes an alias
Closed
#364 [Bugfix] Grid children's dirty propagation dead-ends at the internal UIGrid, never reaching the GridView or its caching ancestors
Closed
#358 [Bugfix] ImGui scene explorer shows no children/entities for grids (UIGRIDVIEW hits default: break)
Closed
#355 [Bugfix] Grid cell callbacks, child clicks, and cell hover all dead since #252 GridView unification
Closed
#360 [Bugfix] Grid children get grid-world pixel coords in click_at, Frame children get frame-local — inconsistent
Closed
#359 [Bugfix] Shared-data grid path is unwired: Grid(grid=...) never sets owning_view, and _GridData.view is always None
Closed
#363 [Bugfix] Cursor leaving the window never fires on_cell_exit; hovered_cell stays stuck
Closed
#366 [Refactor] Dead derived_type()==UIGRID gate remains in UICollection::repr — grids counted as "other"
35 issues created by 1 user
Opened
#357 [Bugfix] mcrfpy.find()/findAll() never search entities inside grids (UIGRID gate dead since #252)
Opened
#358 [Bugfix] ImGui scene explorer shows no children/entities for grids (UIGRIDVIEW hits default: break)
Opened
#359 [Bugfix] Shared-data grid path is unwired: Grid(grid=...) never sets owning_view, and _GridData.view is always None
Opened
#360 [Bugfix] Grid children get grid-world pixel coords in click_at, Frame children get frame-local — inconsistent
Opened
#361 [Refactor] Complete #252: GridData becomes a public data type, GridView is the only drawable, Grid becomes an alias
Opened
#362 [Bugfix] GridData::views leaks expired weak_ptrs — ~UIGridView never unregisters
Opened
#363 [Bugfix] Cursor leaving the window never fires on_cell_exit; hovered_cell stays stuck
Opened
#364 [Bugfix] Grid children's dirty propagation dead-ends at the internal UIGrid, never reaching the GridView or its caching ancestors
Opened
#365 [Bugfix] Stale last_clicked_cell can be dispatched for a GridView with no grid data
Opened
#366 [Refactor] Dead derived_type()==UIGRID gate remains in UICollection::repr — grids counted as "other"
Opened
#367 [Bugfix] Losing window focus strands hover state the same way a window-leave did (#363's sibling)
Opened
#368 [Bugfix] Frame(cache_subtree=True) silently freezes its subtree's content: render_dirty is a write-once latch, so markContentDirty never propagates
Opened
#369 [Bugfix] .parent allocates a fresh wrapper on every read, so child.parent is parent is always False
Opened
#370 [Bugfix] Grid.center_camera() and Grid.size = ... are silent no-ops (they write to the ghost camera)
Opened
#371 [Bugfix] Shader uniform binding reads a GridView wrapper as a _GridData wrapper (type confusion)
Opened
#372 [Bugfix] tests/demo/ is rotted and unrunnable — screens/base.py calls mcrfpy.sceneUI, removed long ago; demos are not in the test suite
Opened
#373 [Bugfix] A GC'd Python subclass wrapper resurrects as its base type (residual gap from #369)
Opened
#374 [Refactoring] Adopt or retire the 19 orphan scripts under tests/demo/screens/
Opened
#375 [Bugfix] DijkstraMap.path_from() returns the path reversed; step_from() returns a non-adjacent cell (teleport)
Opened
#376 [Bugfix] Grid layer property setters (visible, z_index) don't invalidate the render cache
Opened
#377 [Bugfix] Only UICollection.append maintains the parent link; insert/extend/setitem/slice do not
Opened
#378 [Bugfix] Embedded interpreter's filesystem encoding is ASCII: open() cannot read a UTF-8 file
Opened
#379 [Bugfix] A transition into the first scene leaves mcrfpy.current_scene as None for the whole transition
Opened
#380 Template example programs (templates/*/) are shipped but gated by nothing
Opened
#381 [Tooling] Deterministic snippet screenshots as a visual-regression oracle (rendered into the doc-site repo, not the engine)
Opened
#382 [Tooling] "Open in Playground" links from doc snippets — url-encoded short, raw-URL fetch long — with tag/commit version pinning
Opened
#383 Headless Timer epoch uses wall clock (runtime), not simulation_time — first fire under step() is nondeterministic
Opened
#384 make wasm full-game web build wears the playground code-panel shell (shell.html) instead of shell_game.html
Opened
#385 WASM: IDBFS not exported to runtime under Emscripten 5.0.0 — /save mount throws ReferenceError
Opened
#386 [DX] make deploy-playground — copy build-playground/ into the site checkout
Opened
#387 [Epic] Web deployment parity & divergence-testing sprint
Opened
#388 [Keystone] Cross-backend screenshot diff harness (desktop-headless oracle vs web canvas)
Opened
#389 [Testing] Validate SDL-event → SFML-enum input parity (asserted "Full", never tested)
Opened
#390 [Hardening] SDL2Renderer: Fail-Early on shader/program compile, GL context loss, canvas resize
Opened
#391 [Docs] Promote the Web Build Constraints table into an audited parity matrix with test-coverage column
7 unresolved conversations
Open
#346
[Performance] Document web-build (WASM) profiling workflow — DevTools + emcc, sibling to #345
Open
#239
Playground: Automated WASM testing infrastructure with headless browser
Open
#347
[Rendering] Investigate renderer parity: SFML (desktop) vs SDL2/WebGL (web) — shaders & pixel-perfect output
Open
#337
numpy availability strategy: bundle, side-venv, or scientific package variant
Open
#336
Free-threading (3.14t) hardening: Py_mod_gil, UIEntity::pyobject race, unlocked registries
Open
#62
Multiple Windows
Open
#352
[Refactoring] Let perspective-enabled grids take the render early-out (track FOV/perspective_map changes in content-generation)