2025-12-04 - 2026-03-04
Overview
1 release published by 1 user
Tag
0.2.3-prerelease-7drl2026-emscripten
95 issues closed from 2 users
Closed
#251 Timer fires with corrupted callback after Python object is garbage collected
Closed
#250 [7DRL Prep] itch.io deployment pipeline
Closed
#249 [7DRL Prep] Cookbook 4: Responsive design guide
Closed
#246 [7DRL Prep] WASM fullscreen on mobile devices
Closed
#244 [Bugfix] Entity3D.viewport returns None instead of parent Viewport3D
Closed
#243 [Minor Feature] EntityCollection3D missing pop(), find(), extend() methods
Closed
#242 [Bugfix] Entity3D.animate() raises NotImplementedError
Closed
#245 [Minor Feature] screen_to_world() only intersects Y=0 plane
Closed
#247 [7DRL Prep] SDL audio working in browser (WASM)
Closed
#227 [Bugfix] UIDrawable: Silent failure when RenderTexture creation fails
Closed
#158 [Major Feature] WebAssembly/Emscripten build target for browser deployment
Closed
#157 [Major Feature] True headless execution without X11/GPU dependencies
Closed
#100 Add rotation support to UIDrawable objects
Closed
#241 [Bugfix] Fix segfault when animation callbacks start new animations
Closed
#106 Shader support
Closed
#231 Middle Click produces no event
Closed
#232 Scrollwheel registers as MouseButton.LEFT
Closed
#230 on_enter and on_exit have unnecessary parameters
Closed
#228 [Bugfix] UIGrid: RenderTexture hard-coded to 1080p causes issues at higher resolutions
Closed
#229 Animation callback doesn't provide data
Closed
#224 [Bugfix] UIFrame: RenderTexture not disabled when clip_children toggled off
Closed
#225 [Bugfix] UIFrame: Child appearance changes don't invalidate parent's cached texture
Closed
#223 [Bugfix] UIFrame: box.setPosition(0,0) corrupts position when using clip_children
Closed
#226 [Bugfix] UIFrame: Zero-size frame with clip_children causes inconsistent state
Closed
#136 ImGui Object Explorer / Scene Tree View
Closed
#161 [Documentation] Update Grid stubs to match current API
Closed
#166 [Refactoring] Test suite cleanup and organization
Closed
#165 [Documentation] Update mcrogueface.github.io website
Closed
#168 [Documentation] README polish for public release
Closed
#215 Cleanup: mcrfpy.libtcod
Closed
#219 Primary Concurrency Model: Threading Support with mcrfpy.lock()
Closed
#221 Grid children: support .grid_pos property
Closed
#222 on_click receiving string args instead of enums
Closed
#217 mcrfpy.Entity __repr__ lies
Closed
#213 [Bugfix] Color component values outside 0-255 wrap silently without warning
Closed
#216 Grid.entities_in_radius - args style mismatch
Closed
#212 respect GRID_MAX when creating Grids and GridLayers
Closed
#214 [Bugfix] Potential null pointer dereference in HeightMap layer operations
Closed
#192 [Leader Issue] 7DRL 2026 ProcGen Systems
Closed
#208 [Proc Gen] NoiseSource.sample and NoiseSample class
Closed
#209 [Proc Gen] HeightMap - Direct source sampling (add_noise, add_bsp)
Closed
#198 [Proc Gen] HeightMap - kernel_transform
Closed
#194 [Proc Gen] HeightMap - Combination operations
Closed
#207 [Proc Gen] NoiseSource - Core class with point queries
Closed
#210 [Proc Gen] BSP.adjacency - Room connectivity graph
Closed
#206 [Proc Gen] BSP.to_heightmap and BSPMap class
Closed
#205 [Proc Gen] BSP - Query methods (find, contains)
Closed
#204 [Proc Gen] BSP - Iteration (leaves, traverse)
Closed
#203 [Proc Gen] BSPNode - Lightweight node reference
Closed
#202 [Proc Gen] BSP - Core class with splitting
Closed
#200 [Proc Gen] TileLayer - apply_threshold and apply_ranges for tile indices
Closed
#201 [Proc Gen] ColorLayer - apply_threshold, apply_gradient, apply_ranges
Closed
#195 [Proc Gen] HeightMap - Terrain generation methods
Closed
#197 [Proc Gen] HeightMap - Threshold operations
Closed
#191 PyWeakref_GetObject is deprecated, removal in Python 3.15
Closed
#199 [Proc Gen] Grid - apply_threshold and apply_ranges for walkable/transparent
Closed
#196 [Proc Gen] HeightMap - Query methods
Closed
#193 [Proc Gen] HeightMap - Core class with scalar operations
Closed
#163 [Minor Feature] Packaging variants: light vs batteries-included
Closed
#162 [Major Feature] Cross-compilation for Windows from Linux
Closed
#170 console: multi-line input
Closed
#186 mcrfpy.Window, mcrfpy.Keyboard ... mcrfpy.Mouse?
Closed
#180 Timers without a user-stored reference don't fire
Closed
#176 Entities have grid_pos initializer argument, but pos property
Closed
#183 .parent quirks
Closed
#189 Hide classes from the module which can't be instantiated
Closed
#179 Grid attributes: Vectors instead of Tuples
Closed
#188 .bounds and .global_bounds should be a pair of vectors, not 4 values
Closed
#177 GridPoint shows its coordinate in repr, but doesn't expose it as a property.
Closed
#181 Grid attributes: grid_x and grid_y should be grid_w and grid_h
Closed
#190 mcrfpy.TileLayer / mcrfpy.GridLayer have no __init__ docs
Closed
#182 Caption.resize does nothing; bounds are available but size is not
Closed
#184 mcrfpy.Window.get() is annoying
Closed
#185 .get_bounds() is annoying
Closed
#187 No method to add layer to grid after initialization
Closed
#178 positions should always be iterables, not separate X and Y values.
Closed
#175 segfault: use of animations causes segfault on exit
Closed
#174 [Documentation] Color sub-property assignment doesn't propagate (expected behavior)
Closed
#172 Timer objects: remove setTimer, delTimer
Closed
#173 Timer System Refactor: Stopwatch-like semantics and mcrfpy.timers collection
Closed
#171 console: wrap errors
Closed
#169 [API] Grid camera default to top-left + center_camera() method
Closed
#160 [Minor Feature] Engine-level modifier key state tracking
Closed
#164 [Tiny Feature] Add mcrfpy.__version__ for version identity
Closed
#66 Standardize Audio Handling
Closed
#125 Gitea/Forgejo Issues Automation
Closed
#143 [Demo] Widget Focus System Example
Closed
#126 Generate perfectly consistent and complete Python interface
Closed
#120 Animation Property Locking
Closed
#101 Standardize default position arguments across constructors
Closed
#64 Grid - Entity - GridPointState updates via TCOD
Closed
#115 SpatialHash Implementation
Closed
#159 [Bugfix] EntityCollection iterator is O(n²) due to index-based list traversal
Closed
#151 remove setScene, keyPressScene, currentScene in favor of mcrfpy.scene
Closed
#155 Deterministic Text Descriptions From Room Graph
98 issues created by 1 user
Opened
#157 [Major Feature] True headless execution without X11/GPU dependencies
Opened
#158 [Major Feature] WebAssembly/Emscripten build target for browser deployment
Opened
#159 [Bugfix] EntityCollection iterator is O(n²) due to index-based list traversal
Opened
#160 [Minor Feature] Engine-level modifier key state tracking
Opened
#161 [Documentation] Update Grid stubs to match current API
Opened
#162 [Major Feature] Cross-compilation for Windows from Linux
Opened
#163 [Minor Feature] Packaging variants: light vs batteries-included
Opened
#164 [Tiny Feature] Add mcrfpy.__version__ for version identity
Opened
#165 [Documentation] Update mcrogueface.github.io website
Opened
#166 [Refactoring] Test suite cleanup and organization
Opened
#167 [Demo Target] r/roguelikedev Tutorial Series Demo Game
Opened
#168 [Documentation] README polish for public release
Opened
#169 [API] Grid camera default to top-left + center_camera() method
Opened
#170 console: multi-line input
Opened
#171 console: wrap errors
Opened
#172 Timer objects: remove setTimer, delTimer
Opened
#173 Timer System Refactor: Stopwatch-like semantics and mcrfpy.timers collection
Opened
#174 [Documentation] Color sub-property assignment doesn't propagate (expected behavior)
Opened
#175 segfault: use of animations causes segfault on exit
Opened
#176 Entities have grid_pos initializer argument, but pos property
Opened
#177 GridPoint shows its coordinate in repr, but doesn't expose it as a property.
Opened
#178 positions should always be iterables, not separate X and Y values.
Opened
#179 Grid attributes: Vectors instead of Tuples
Opened
#180 Timers without a user-stored reference don't fire
Opened
#181 Grid attributes: grid_x and grid_y should be grid_w and grid_h
Opened
#182 Caption.resize does nothing; bounds are available but size is not
Opened
#183 .parent quirks
Opened
#184 mcrfpy.Window.get() is annoying
Opened
#185 .get_bounds() is annoying
Opened
#186 mcrfpy.Window, mcrfpy.Keyboard ... mcrfpy.Mouse?
Opened
#187 No method to add layer to grid after initialization
Opened
#188 .bounds and .global_bounds should be a pair of vectors, not 4 values
Opened
#189 Hide classes from the module which can't be instantiated
Opened
#190 mcrfpy.TileLayer / mcrfpy.GridLayer have no __init__ docs
Opened
#191 PyWeakref_GetObject is deprecated, removal in Python 3.15
Opened
#192 [Leader Issue] 7DRL 2026 ProcGen Systems
Opened
#193 [Proc Gen] HeightMap - Core class with scalar operations
Opened
#194 [Proc Gen] HeightMap - Combination operations
Opened
#195 [Proc Gen] HeightMap - Terrain generation methods
Opened
#196 [Proc Gen] HeightMap - Query methods
Opened
#197 [Proc Gen] HeightMap - Threshold operations
Opened
#198 [Proc Gen] HeightMap - kernel_transform
Opened
#199 [Proc Gen] Grid - apply_threshold and apply_ranges for walkable/transparent
Opened
#200 [Proc Gen] TileLayer - apply_threshold and apply_ranges for tile indices
Opened
#201 [Proc Gen] ColorLayer - apply_threshold, apply_gradient, apply_ranges
Opened
#202 [Proc Gen] BSP - Core class with splitting
Opened
#203 [Proc Gen] BSPNode - Lightweight node reference
Opened
#204 [Proc Gen] BSP - Iteration (leaves, traverse)
Opened
#205 [Proc Gen] BSP - Query methods (find, contains)
Opened
#206 [Proc Gen] BSP.to_heightmap and BSPMap class
Opened
#207 [Proc Gen] NoiseSource - Core class with point queries
Opened
#208 [Proc Gen] NoiseSource.sample and NoiseSample class
Opened
#209 [Proc Gen] HeightMap - Direct source sampling (add_noise, add_bsp)
Opened
#210 [Proc Gen] BSP.adjacency - Room connectivity graph
Opened
#212 respect GRID_MAX when creating Grids and GridLayers
Opened
#213 [Bugfix] Color component values outside 0-255 wrap silently without warning
Opened
#214 [Bugfix] Potential null pointer dereference in HeightMap layer operations
Opened
#215 Cleanup: mcrfpy.libtcod
Opened
#216 Grid.entities_in_radius - args style mismatch
Opened
#217 mcrfpy.Entity __repr__ lies
Opened
#218 mcrfpy.Color and mcrfpy.Vector animation targets
Opened
#219 Primary Concurrency Model: Threading Support with mcrfpy.lock()
Opened
#220 Secondary Concurrency Model: Subinterpreter Support
Opened
#221 Grid children: support .grid_pos property
Opened
#222 on_click receiving string args instead of enums
Opened
#223 [Bugfix] UIFrame: box.setPosition(0,0) corrupts position when using clip_children
Opened
#224 [Bugfix] UIFrame: RenderTexture not disabled when clip_children toggled off
Opened
#225 [Bugfix] UIFrame: Child appearance changes don't invalidate parent's cached texture
Opened
#226 [Bugfix] UIFrame: Zero-size frame with clip_children causes inconsistent state
Opened
#227 [Bugfix] UIDrawable: Silent failure when RenderTexture creation fails
Opened
#228 [Bugfix] UIGrid: RenderTexture hard-coded to 1080p causes issues at higher resolutions
Opened
#229 Animation callback doesn't provide data
Opened
#230 on_enter and on_exit have unnecessary parameters
Opened
#231 Middle Click produces no event
Opened
#232 Scrollwheel registers as MouseButton.LEFT
Opened
#233 Enhance Entity rendering and positioning capabilities
Opened
#234 Entity origin offset for oversized sprites
Opened
#235 Texture display bounds for non-uniform sprite content
Opened
#236 Multi-tile entities using oversized sprites
Opened
#237 Multi-tile entities using composite sprites
Opened
#238 Playground: Emscripten debugging infrastructure (DWARF, source maps, debug dumps)
Opened
#239 Playground: Automated WASM testing infrastructure with headless browser
Opened
#240 Playground: Developer troubleshooting documentation for WASM deployments
Opened
#241 [Bugfix] Fix segfault when animation callbacks start new animations
Opened
#242 [Bugfix] Entity3D.animate() raises NotImplementedError
Opened
#243 [Minor Feature] EntityCollection3D missing pop(), find(), extend() methods
Opened
#244 [Bugfix] Entity3D.viewport returns None instead of parent Viewport3D
Opened
#245 [Minor Feature] screen_to_world() only intersects Y=0 plane
Opened
#246 [7DRL Prep] WASM fullscreen on mobile devices
Opened
#247 [7DRL Prep] SDL audio working in browser (WASM)
Opened
#248 [7DRL Prep] Crypt of Sokoban Remaster
Opened
#249 [7DRL Prep] Cookbook 4: Responsive design guide
Opened
#250 [7DRL Prep] itch.io deployment pipeline
Opened
#251 Timer fires with corrupted callback after Python object is garbage collected
Opened
#252 GridView and Grid, FOVLayer and PathLayer
Opened
#253 Use spatial hash by default when checking GridPoint for entities
Opened
#254 TileLayer doesn't get any texture when assigned manually
Opened
#255 Tracking down performance improvement opportunities
9 unresolved conversations
Open
#46
subinterpreter tests
Open
#149
Reduce the size of UIGrid.cpp
Open
#152
Sparse Grid Layers
Open
#154
Grounded Multi-Agent Testbed: LLM Agents in Discrete Simulated Environments
Open
#156
Turn-based LLM Agent Orchestration
Open
#45
Accessibility modes and demos
Open
#124
Grid Point Animation
Open
#145
TexturePool with power-of-2 bucketing for RenderTexture reuse
Open
#117
Memory Pool for Entities