2026-04-16 - 2026-07-16

Overview

0 active pull requests
89 active issues
Excluding merges, 1 author has pushed 87 commits to master and 119 commits to all branches. On master, 534 files have changed and there have been 65858 additions and 35439 deletions.

73 issues closed from 1 user

Closed #385 WASM: IDBFS not exported to runtime under Emscripten 5.0.0 — /save mount throws ReferenceError 2026-07-16 04:42:52 +00:00

Closed #382 [Tooling] "Open in Playground" links from doc snippets — url-encoded short, raw-URL fetch long — with tag/commit version pinning 2026-07-16 04:42:52 +00:00

Closed #383 Headless Timer epoch uses wall clock (runtime), not simulation_time — first fire under step() is nondeterministic 2026-07-16 04:42:51 +00:00

Closed #384 make wasm full-game web build wears the playground code-panel shell (shell.html) instead of shell_game.html 2026-07-16 04:42:51 +00:00

Closed #378 [Bugfix] Embedded interpreter's filesystem encoding is ASCII: open() cannot read a UTF-8 file 2026-07-15 04:32:56 +00:00

Closed #379 [Bugfix] A transition into the first scene leaves mcrfpy.current_scene as None for the whole transition 2026-07-15 04:32:56 +00:00

Closed #373 [Bugfix] A GC'd Python subclass wrapper resurrects as its base type (residual gap from #369) 2026-07-14 12:01:04 +00:00

Closed #377 [Bugfix] Only UICollection.append maintains the parent link; insert/extend/setitem/slice do not 2026-07-14 12:01:04 +00:00

Closed #341 get_metrics() draw_calls / ui_elements / render counters read 0 in windowed builds 2026-07-14 12:01:03 +00:00

Closed #376 [Bugfix] Grid layer property setters (visible, z_index) don't invalidate the render cache 2026-07-14 12:01:03 +00:00

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 2026-07-14 12:01:03 +00:00

Closed #356 [Bugfix] Doc generator/stub generator miss module-level dynamic attributes (current_scene, scenes) 2026-07-14 12:01:03 +00:00

Closed #369 [Bugfix] .parent allocates a fresh wrapper on every read, so child.parent is parent is always False 2026-07-14 12:01:03 +00:00

Closed #350 [Bugfix] Headless mcrfpy.step() bypasses updatePythonScenes() — scene.update() and lifecycle callbacks never fire in headless tests 2026-07-14 12:01:03 +00:00

Closed #375 [Bugfix] DijkstraMap.path_from() returns the path reversed; step_from() returns a non-adjacent cell (teleport) 2026-07-14 12:01:03 +00:00

Closed #355 [Bugfix] Grid cell callbacks, child clicks, and cell hover all dead since #252 GridView unification 2026-07-13 11:44:13 +00:00

Closed #361 [Refactor] Complete #252: GridData becomes a public data type, GridView is the only drawable, Grid becomes an alias 2026-07-13 11:44:13 +00:00

Closed #358 [Bugfix] ImGui scene explorer shows no children/entities for grids (UIGRIDVIEW hits default: break) 2026-07-13 11:44:13 +00:00

Closed #360 [Bugfix] Grid children get grid-world pixel coords in click_at, Frame children get frame-local — inconsistent 2026-07-13 11:44:13 +00:00

Closed #359 [Bugfix] Shared-data grid path is unwired: Grid(grid=...) never sets owning_view, and _GridData.view is always None 2026-07-13 11:44:13 +00:00

Closed #363 [Bugfix] Cursor leaving the window never fires on_cell_exit; hovered_cell stays stuck 2026-07-13 11:44:13 +00:00

Closed #366 [Refactor] Dead derived_type()==UIGRID gate remains in UICollection::repr — grids counted as "other" 2026-07-13 11:44:13 +00:00

Closed #365 [Bugfix] Stale last_clicked_cell can be dispatched for a GridView with no grid data 2026-07-13 11:44:13 +00:00

Closed #367 [Bugfix] Losing window focus strands hover state the same way a window-leave did (#363's sibling) 2026-07-13 11:44:13 +00:00

Closed #368 [Bugfix] Frame(cache_subtree=True) silently freezes its subtree's content: render_dirty is a write-once latch, so markContentDirty never propagates 2026-07-13 11:44:13 +00:00

Closed #357 [Bugfix] mcrfpy.find()/findAll() never search entities inside grids (UIGRID gate dead since #252) 2026-07-13 11:44:13 +00:00

Closed #362 [Bugfix] GridData::views leaks expired weak_ptrs — ~UIGridView never unregisters 2026-07-13 11:44:13 +00:00

Closed #370 [Bugfix] Grid.center_camera() and Grid.size = ... are silent no-ops (they write to the ghost camera) 2026-07-13 11:44:13 +00:00

Closed #371 [Bugfix] Shader uniform binding reads a GridView wrapper as a _GridData wrapper (type confusion) 2026-07-13 11:44:13 +00:00

Closed #364 [Bugfix] Grid children's dirty propagation dead-ends at the internal UIGrid, never reaching the GridView or its caching ancestors 2026-07-13 11:44:13 +00:00

Closed #282 [Minor Feature] Install modern Clang for improved TSan and fuzzing 2026-07-11 15:17:36 +00:00

Closed #333 Eliminate walkable/transparent duplication between GridData and TCODMap 2026-07-11 14:52:35 +00:00

Closed #354 [Minor Feature] The Crucible — headless wall-clock microbenchmark for cross-version A/B 2026-07-11 14:42:07 +00:00

Closed #332 GridData SoA refactor: dense uint8 planes for walkable/transparent 2026-07-11 14:42:07 +00:00

Closed #353 [Bugfix] The Gauntlet can OOM / hard-lock the machine — GRID TITAN ramps grid side unbounded 2026-07-11 14:42:07 +00:00

Closed #351 [Bugfix] UIGridView::render() has no clean-state early-out — idle grid clears+redraws its RenderTexture every frame 2026-07-11 14:42:07 +00:00

Closed #334 Buffer protocol for DiscreteMap (np.asarray zero-copy) 2026-07-11 14:42:07 +00:00

Closed #335 Buffer protocol / numpy views for ColorLayer and TileLayer 2026-07-11 14:42:07 +00:00

Closed #145 TexturePool with power-of-2 bucketing for RenderTexture reuse 2026-07-11 04:06:31 +00:00

Closed #117 Memory Pool for Entities 2026-07-11 04:06:30 +00:00

Closed #255 Tracking down performance improvement opportunities 2026-07-11 04:06:29 +00:00

Closed #344 [Performance] on_key rebuilds Key/InputState enum members on every keypress 2026-07-11 03:02:54 +00:00

Closed #342 [Performance] Animation property dispatch resolves property name by strcmp cascade every frame 2026-07-11 03:02:54 +00:00

Closed #343 [Performance] PyScene::update does GetAttrString("update") every frame even when unoverridden 2026-07-11 03:02:54 +00:00

Closed #348 [Performance] GridView shim's get_grid re-allocates a Grid wrapper + weakref on every call (100% cache miss) 2026-07-11 03:02:54 +00:00

Closed #345 [Performance] Add profiling build target + document native profiler workflow (Callgrind + perf) 2026-07-10 22:59:45 +00:00

Closed #331 Fast path for .pos and similar getters: stop importing mcrfpy per property read 2026-07-09 03:08:50 +00:00

Closed #327 [1.0 Decision] Document the threading contract: mcrfpy.lock() is the rule for off-main-thread access 2026-07-03 03:45:58 +00:00

Closed #328 [1.0 Decision] Bulk-edit convention for future array/buffer APIs (edit() context manager vs explicit sync) 2026-07-03 03:45:58 +00:00

Closed #330 [1.0 Docs] State that subinterpreters are out of scope for 1.x compatibility 2026-07-03 03:45:58 +00:00

Closed #340 The Gauntlet: interactive on-screen stress benchmark with baseline recording 2026-07-03 03:45:58 +00:00

Closed #326 [1.0 Decision] Color/Vector copy semantics: value types vs write-through proxies 2026-07-03 03:45:58 +00:00

Closed #329 grid.entities[i] is O(n): std::list + std::advance per indexed access 2026-07-03 03:45:57 +00:00

Closed #339 [Test] MCP label validation — safe to close 2026-07-02 17:49:41 +00:00

Closed #324 [Bugfix] UBSan: Texture.hsl_shift(nan) -> nan->unsigned char cast (PyTexture.cpp:458-460) 2026-06-30 22:16:21 +00:00

Closed #325 [Bugfix] UBSan: Vector with inf component -> inf->long cast (PyVector.cpp:610-611) 2026-06-30 22:16:21 +00:00

Closed #323 [Bugfix] UBSan: SoundBuffer.pitch_shift(nan) -> nan->unsigned long cast (AudioEffects.cpp:27) 2026-06-30 22:16:21 +00:00

Closed #322 [Bugfix] WangSet.terrain_enum() calls Python with a pending error -> _PyErr_Occurred assertion / abort 2026-06-30 22:16:20 +00:00

Closed #321 [Bugfix] bad-free in GridData::computeFOV / ~GridData via ColorLayer.draw_fov (ASan) 2026-06-30 22:16:20 +00:00

Closed #312 [Minor Feature] Extend fuzz coverage to remaining public API surface 2026-06-21 20:45:17 +00:00

Closed #320 [Bugfix] Caption constructor positional signature disagrees with its frozen docstring 2026-06-21 16:19:04 +00:00

Closed #317 [Bugfix] automation.scroll() ignores the x-coordinate of its position argument 2026-06-21 14:12:50 +00:00

Closed #318 GridView.texture getter always returns None (unimplemented) 2026-06-21 14:12:50 +00:00

Closed #319 [Bugfix] Entity.visible_entities(radius=None) raises TypeError instead of applying the default 2026-06-21 14:12:50 +00:00

Closed #316 Sparse perspective writeback in UIEntity::updateVisibility (Phase 5.2 finding) 2026-06-21 13:40:18 +00:00

Closed #314 [Documentation] API audit follow-through: close the gaps from docs/api-audit-2026-04.md 2026-06-21 10:54:43 +00:00

Closed #313 [Refactoring] Migrate UIEntity::grid from shared_ptr<UIGrid> to shared_ptr<GridData> 2026-06-21 03:33:59 +00:00

Closed #315 Behavior pathfinding architecture — support A*↔Dijkstra spectrum, multi-root, and custom heuristics 2026-04-18 14:16:12 +00:00

Closed #294 Entity.gridstate as DiscreteMap reference 2026-04-18 09:44:14 +00:00

Closed #311 DijkstraMap pathfinding accepts out-of-bounds coords and aborts via TCOD assertion 2026-04-18 00:05:58 +00:00

Closed #309 Caption numeric setters cast negative floats to unsigned int (UBSan) 2026-04-18 00:05:58 +00:00

Closed #310 compute_fov loads out-of-range int into TCOD_fov_algorithm_t enum (UBSan) 2026-04-18 00:05:58 +00:00

Closed #283 [Major Feature] Coverage-guided fuzz harness for Python API (libFuzzer + ASan) 2026-04-17 03:15:00 +00:00

80 issues created by 1 user

Opened #312 [Minor Feature] Extend fuzz coverage to remaining public API surface 2026-04-17 03:25:19 +00:00

Opened #313 [Refactoring] Migrate UIEntity::grid from shared_ptr<UIGrid> to shared_ptr<GridData> 2026-04-17 03:25:40 +00:00

Opened #314 [Documentation] API audit follow-through: close the gaps from docs/api-audit-2026-04.md 2026-04-17 03:26:00 +00:00

Opened #315 Behavior pathfinding architecture — support A*↔Dijkstra spectrum, multi-root, and custom heuristics 2026-04-18 01:03:01 +00:00

Opened #316 Sparse perspective writeback in UIEntity::updateVisibility (Phase 5.2 finding) 2026-04-18 10:46:49 +00:00

Opened #317 [Bugfix] automation.scroll() ignores the x-coordinate of its position argument 2026-06-21 10:37:03 +00:00

Opened #318 GridView.texture getter always returns None (unimplemented) 2026-06-21 10:37:07 +00:00

Opened #319 [Bugfix] Entity.visible_entities(radius=None) raises TypeError instead of applying the default 2026-06-21 10:37:11 +00:00

Opened #320 [Bugfix] Caption constructor positional signature disagrees with its frozen docstring 2026-06-21 14:50:21 +00:00

Opened #321 [Bugfix] bad-free in GridData::computeFOV / ~GridData via ColorLayer.draw_fov (ASan) 2026-06-21 20:41:23 +00:00

Opened #322 [Bugfix] WangSet.terrain_enum() calls Python with a pending error -> _PyErr_Occurred assertion / abort 2026-06-21 20:42:04 +00:00

Opened #323 [Bugfix] UBSan: SoundBuffer.pitch_shift(nan) -> nan->unsigned long cast (AudioEffects.cpp:27) 2026-06-21 20:42:21 +00:00

Opened #324 [Bugfix] UBSan: Texture.hsl_shift(nan) -> nan->unsigned char cast (PyTexture.cpp:458-460) 2026-06-21 20:42:36 +00:00

Opened #325 [Bugfix] UBSan: Vector with inf component -> inf->long cast (PyVector.cpp:610-611) 2026-06-21 20:42:45 +00:00

Opened #326 [1.0 Decision] Color/Vector copy semantics: value types vs write-through proxies 2026-07-02 12:24:32 +00:00

Opened #327 [1.0 Decision] Document the threading contract: mcrfpy.lock() is the rule for off-main-thread access 2026-07-02 12:29:36 +00:00

Opened #329 grid.entities[i] is O(n): std::list + std::advance per indexed access 2026-07-02 12:29:37 +00:00

Opened #328 [1.0 Decision] Bulk-edit convention for future array/buffer APIs (edit() context manager vs explicit sync) 2026-07-02 12:29:37 +00:00

Opened #331 Fast path for .pos and similar getters: stop importing mcrfpy per property read 2026-07-02 12:29:38 +00:00

Opened #330 [1.0 Docs] State that subinterpreters are out of scope for 1.x compatibility 2026-07-02 12:29:38 +00:00

Opened #332 GridData SoA refactor: dense uint8 planes for walkable/transparent 2026-07-02 12:29:39 +00:00

Opened #334 Buffer protocol for DiscreteMap (np.asarray zero-copy) 2026-07-02 12:29:40 +00:00

Opened #333 Eliminate walkable/transparent duplication between GridData and TCODMap 2026-07-02 12:29:40 +00:00

Opened #336 Free-threading (3.14t) hardening: Py_mod_gil, UIEntity::pyobject race, unlocked registries 2026-07-02 12:29:41 +00:00

Opened #335 Buffer protocol / numpy views for ColorLayer and TileLayer 2026-07-02 12:29:41 +00:00

Opened #337 numpy availability strategy: bundle, side-venv, or scientific package variant 2026-07-02 12:29:42 +00:00

Opened #338 UIDrawable per-instance memory diet (always-embedded render_sprite, duplicate RenderTextures, string members) 2026-07-02 12:29:42 +00:00

Opened #339 [Test] MCP label validation — safe to close 2026-07-02 17:49:12 +00:00

Opened #340 The Gauntlet: interactive on-screen stress benchmark with baseline recording 2026-07-03 00:07:28 +00:00

Opened #341 get_metrics() draw_calls / ui_elements / render counters read 0 in windowed builds 2026-07-03 00:49:40 +00:00

Opened #342 [Performance] Animation property dispatch resolves property name by strcmp cascade every frame 2026-07-10 21:57:19 +00:00

Opened #343 [Performance] PyScene::update does GetAttrString("update") every frame even when unoverridden 2026-07-10 21:57:25 +00:00

Opened #344 [Performance] on_key rebuilds Key/InputState enum members on every keypress 2026-07-10 21:57:31 +00:00

Opened #345 [Performance] Add profiling build target + document native profiler workflow (Callgrind + perf) 2026-07-10 22:29:38 +00:00

Opened #346 [Performance] Document web-build (WASM) profiling workflow — DevTools + emcc, sibling to #345 2026-07-10 22:50:26 +00:00

Opened #347 [Rendering] Investigate renderer parity: SFML (desktop) vs SDL2/WebGL (web) — shaders & pixel-perfect output 2026-07-10 22:50:41 +00:00

Opened #348 [Performance] GridView shim's get_grid re-allocates a Grid wrapper + weakref on every call (100% cache miss) 2026-07-10 23:47:50 +00:00

Opened #349 [Major Feature] Hybrid Scene Serialization — declarative scene-graph snapshot (test oracle + save/load) with raster escape-hatch 2026-07-11 00:04:09 +00:00

Opened #350 [Bugfix] Headless mcrfpy.step() bypasses updatePythonScenes() — scene.update() and lifecycle callbacks never fire in headless tests 2026-07-11 03:02:18 +00:00

Opened #351 [Bugfix] UIGridView::render() has no clean-state early-out — idle grid clears+redraws its RenderTexture every frame 2026-07-11 04:06:08 +00:00

Opened #352 [Refactoring] Let perspective-enabled grids take the render early-out (track FOV/perspective_map changes in content-generation) 2026-07-11 04:36:06 +00:00

Opened #353 [Bugfix] The Gauntlet can OOM / hard-lock the machine — GRID TITAN ramps grid side unbounded 2026-07-11 14:27:30 +00:00

Opened #354 [Minor Feature] The Crucible — headless wall-clock microbenchmark for cross-version A/B 2026-07-11 14:27:50 +00:00

Opened #355 [Bugfix] Grid cell callbacks, child clicks, and cell hover all dead since #252 GridView unification 2026-07-12 00:26:51 +00:00

Opened #356 [Bugfix] Doc generator/stub generator miss module-level dynamic attributes (current_scene, scenes) 2026-07-12 01:01:56 +00:00

Opened #357 [Bugfix] mcrfpy.find()/findAll() never search entities inside grids (UIGRID gate dead since #252) 2026-07-12 19:19:29 +00:00

Opened #358 [Bugfix] ImGui scene explorer shows no children/entities for grids (UIGRIDVIEW hits default: break) 2026-07-12 19:19:36 +00:00

Opened #359 [Bugfix] Shared-data grid path is unwired: Grid(grid=...) never sets owning_view, and _GridData.view is always None 2026-07-12 19:19:53 +00:00

Opened #360 [Bugfix] Grid children get grid-world pixel coords in click_at, Frame children get frame-local — inconsistent 2026-07-12 19:20:04 +00:00

Opened #361 [Refactor] Complete #252: GridData becomes a public data type, GridView is the only drawable, Grid becomes an alias 2026-07-12 19:20:28 +00:00

Opened #362 [Bugfix] GridData::views leaks expired weak_ptrs — ~UIGridView never unregisters 2026-07-12 22:04:36 +00:00

Opened #363 [Bugfix] Cursor leaving the window never fires on_cell_exit; hovered_cell stays stuck 2026-07-12 22:04:50 +00:00

Opened #364 [Bugfix] Grid children's dirty propagation dead-ends at the internal UIGrid, never reaching the GridView or its caching ancestors 2026-07-12 22:05:04 +00:00

Opened #365 [Bugfix] Stale last_clicked_cell can be dispatched for a GridView with no grid data 2026-07-12 22:05:15 +00:00

Opened #366 [Refactor] Dead derived_type()==UIGRID gate remains in UICollection::repr — grids counted as &quot;other&quot; 2026-07-12 22:05:26 +00:00

Opened #367 [Bugfix] Losing window focus strands hover state the same way a window-leave did (#363's sibling) 2026-07-13 02:09:54 +00:00

Opened #368 [Bugfix] Frame(cache_subtree=True) silently freezes its subtree's content: render_dirty is a write-once latch, so markContentDirty never propagates 2026-07-13 03:05:36 +00:00

Opened #369 [Bugfix] .parent allocates a fresh wrapper on every read, so child.parent is parent is always False 2026-07-13 03:05:56 +00:00

Opened #370 [Bugfix] Grid.center_camera() and Grid.size = ... are silent no-ops (they write to the ghost camera) 2026-07-13 11:13:31 +00:00

Opened #371 [Bugfix] Shader uniform binding reads a GridView wrapper as a _GridData wrapper (type confusion) 2026-07-13 11:13:46 +00:00

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 2026-07-13 11:28:41 +00:00

Opened #373 [Bugfix] A GC'd Python subclass wrapper resurrects as its base type (residual gap from #369) 2026-07-14 10:47:56 +00:00

Opened #374 [Refactoring] Adopt or retire the 19 orphan scripts under tests/demo/screens/ 2026-07-14 10:48:06 +00:00

Opened #375 [Bugfix] DijkstraMap.path_from() returns the path reversed; step_from() returns a non-adjacent cell (teleport) 2026-07-14 11:23:13 +00:00

Opened #376 [Bugfix] Grid layer property setters (visible, z_index) don't invalidate the render cache 2026-07-14 11:23:27 +00:00

Opened #377 [Bugfix] Only UICollection.append maintains the parent link; insert/extend/setitem/slice do not 2026-07-14 11:44:01 +00:00

Opened #378 [Bugfix] Embedded interpreter's filesystem encoding is ASCII: open() cannot read a UTF-8 file 2026-07-14 22:17:55 +00:00

Opened #379 [Bugfix] A transition into the first scene leaves mcrfpy.current_scene as None for the whole transition 2026-07-14 22:24:06 +00:00

Opened #380 Template example programs (templates/*/) are shipped but gated by nothing 2026-07-15 04:27:25 +00:00

Opened #381 [Tooling] Deterministic snippet screenshots as a visual-regression oracle (rendered into the doc-site repo, not the engine) 2026-07-16 00:27:46 +00:00

Opened #382 [Tooling] "Open in Playground" links from doc snippets — url-encoded short, raw-URL fetch long — with tag/commit version pinning 2026-07-16 00:28:04 +00:00

Opened #383 Headless Timer epoch uses wall clock (runtime), not simulation_time — first fire under step() is nondeterministic 2026-07-16 01:08:52 +00:00

Opened #384 make wasm full-game web build wears the playground code-panel shell (shell.html) instead of shell_game.html 2026-07-16 01:42:20 +00:00

Opened #385 WASM: IDBFS not exported to runtime under Emscripten 5.0.0 — /save mount throws ReferenceError 2026-07-16 04:42:02 +00:00

Opened #386 [DX] make deploy-playground — copy build-playground/ into the site checkout 2026-07-16 16:30:15 +00:00

Opened #387 [Epic] Web deployment parity & divergence-testing sprint 2026-07-16 16:47:18 +00:00

Opened #388 [Keystone] Cross-backend screenshot diff harness (desktop-headless oracle vs web canvas) 2026-07-16 16:47:33 +00:00

Opened #389 [Testing] Validate SDL-event → SFML-enum input parity (asserted "Full", never tested) 2026-07-16 16:47:42 +00:00

Opened #390 [Hardening] SDL2Renderer: Fail-Early on shader/program compile, GL context loss, canvas resize 2026-07-16 16:47:56 +00:00

Opened #391 [Docs] Promote the Web Build Constraints table into an audited parity matrix with test-coverage column 2026-07-16 16:48:06 +00:00

15 unresolved conversations

Open #239 Playground: Automated WASM testing infrastructure with headless browser 2026-07-16 16:48:36 +00:00

Open #62 Multiple Windows 2026-07-16 16:48:06 +00:00

Open #54 Jupyter Notebook Interface 2026-07-11 15:18:55 +00:00

Open #70 Package mcrfpy without embedded interpreter 2026-07-11 15:18:55 +00:00

Open #156 Turn-based LLM Agent Orchestration 2026-07-11 15:18:55 +00:00

Open #55 McRogueFace as Agent Simulation Environment 2026-07-11 15:18:55 +00:00

Open #124 Grid Point Animation 2026-07-03 00:07:28 +00:00

Open #220 Secondary Concurrency Model: Subinterpreter Support 2026-07-02 12:30:44 +00:00

Open #154 Grounded Multi-Agent Testbed: LLM Agents in Discrete Simulated Environments 2026-07-02 12:29:42 +00:00

Open #152 Sparse Grid Layers 2026-07-02 12:29:39 +00:00

Open #46 subinterpreter tests 2026-07-02 12:29:38 +00:00

Open #45 Accessibility modes and demos 2026-04-20 17:37:26 +00:00

Open #53 Alternative Input Methods 2026-04-20 17:37:24 +00:00

Open #248 [7DRL Prep] Crypt of Sokoban Remaster 2026-04-20 17:37:24 +00:00

Open #167 [Demo Target] r/roguelikedev Tutorial Series Demo Game 2026-04-20 17:37:24 +00:00