2025-10-18 - 2026-04-18
Overview
1 release published by 1 user
Tag
0.2.3-prerelease-7drl2026-emscripten
209 issues closed from 2 users
Closed
#294 Entity.gridstate as DiscreteMap reference
Closed
#310 compute_fov loads out-of-range int into TCOD_fov_algorithm_t enum (UBSan)
Closed
#309 Caption numeric setters cast negative floats to unsigned int (UBSan)
Closed
#311 DijkstraMap pathfinding accepts out-of-bounds coords and aborts via TCOD assertion
Closed
#283 [Major Feature] Coverage-guided fuzz harness for Python API (libFuzzer + ASan)
Closed
#237 Multi-tile entities using composite sprites
Closed
#281 [Minor Feature] Free-threaded CPython + TSan Makefile targets
Closed
#149 Reduce the size of UIGrid.cpp
Closed
#280 [Minor Feature] Instrumented libtcod debug build for sanitizer coverage
Closed
#238 Playground: Emscripten debugging infrastructure (DWARF, source maps, debug dumps)
Closed
#240 Playground: Developer troubleshooting documentation for WASM deployments
Closed
#285 [Minor Feature] CI pipeline for debug-test and asan-test
Closed
#233 Enhance Entity rendering and positioning capabilities
Closed
#235 Texture display bounds for non-uniform sprite content
Closed
#287 [Minor Feature] Regression tests that trigger each bug from #258–#278
Closed
#236 Multi-tile entities using oversized sprites
Closed
#293 DiscreteMap serialization via bytes
Closed
#218 mcrfpy.Color and mcrfpy.Vector animation targets
Closed
#270 [Bugfix] GridLayer::parent_grid is a dangling raw pointer when grid is destroyed
Closed
#277 [Bugfix] GridChunk::parent_grid raw pointer can dangle
Closed
#271 [Bugfix] UIGridPoint::parent_grid is a dangling raw pointer
Closed
#256 [Bugfix] Animation system bypasses spatial hash updates for entity position
Closed
#234 Entity origin offset for oversized sprites
Closed
#279 [Meta] Engine memory safety audit — 7DRL 2026 post-mortem
Closed
#304 [API Freeze] Remove camelCase module functions before 1.0
Closed
#286 [Tiny Feature] Re-enable ASan leak detection after fixing #266/#275
Closed
#284 [Tiny Feature] Valgrind Massif heap profiling target
Closed
#289 [Bugfix] Caption Python property setters don't call markDirty()
Closed
#291 [Refactoring] Audit all Python property setters for missing markDirty() calls
Closed
#290 [Bugfix] UIDrawable base x/y/pos/grid_pos setters don't propagate dirty flags to parent
Closed
#288 [Bugfix] UICollection mutations don't invalidate parent Frame's render cache
Closed
#257 grid layers with z_index of zero are on top of entities
Closed
#308 [API Freeze] Remove redundant Grid.position alias
Closed
#305 [API Freeze] Remove deprecated sprite_number property
Closed
#306 [API Freeze] Remove legacy string enum comparisons
Closed
#307 [Bugfix] Color type missing __eq__/__ne__ despite having __hash__
Closed
#252 GridView and Grid, FOVLayer and PathLayer
Closed
#303 FOV optimization for behavior TARGET triggers
Closed
#302 Pathfinding with entity collision labels
Closed
#254 TileLayer doesn't get any texture when assigned manually
Closed
#295 Entity cell_pos — integer logical position decoupled from render position
Closed
#298 mcrfpy.Trigger enum — behavior trigger type identifiers
Closed
#297 mcrfpy.Behavior enum — behavior type identifiers
Closed
#266 [Bugfix] UIEntity self reference cycle causes permanent memory leak
Closed
#301 grid.step() — turn manager for entity behaviors
Closed
#253 Use spatial hash by default when checking GridPoint for entities
Closed
#300 Behavior data struct and primitive implementations
Closed
#299 Entity step() callback — Python-side turn handler
Closed
#292 Deduplicate redundant FOV computation
Closed
#296 Entity labels — multi-tag string set for collision and trigger grouping
Closed
#269 [Bugfix] PythonObjectCache::lookup() reads hash map without mutex
Closed
#268 [Bugfix] sfVector2f_to_PyObject crashes on NULL from PyObject_GetAttrString
Closed
#272 [Bugfix] UniformCollection stores raw pointer without checking weak_ptr owner before access
Closed
#273 [Bugfix] entity.die() during iteration over grid.entities invalidates list iterator
Closed
#276 [Bugfix] updateVisibility() gridstate.size()==0 guard doesn't validate against current grid dimensions
Closed
#275 [Bugfix] UIEntity has no tp_dealloc — Py_INCREF(self) in init() is never balanced
Closed
#265 [Bugfix] grid.at() returns GridPoint with dangling raw pointer into grid storage
Closed
#263 [Bugfix] EntityCollection extended slice assignment skips gridstate resize
Closed
#278 [Bugfix] entity.at() lazy init guard also has gridstate.size()==0 bug
Closed
#274 [Bugfix] UIEntity.set_grid() missing spatial hash cleanup on grid transfer
Closed
#267 [Bugfix] PyObject_GetAttrString return values leaked across 60+ call sites
Closed
#264 [Bugfix] entity.at() returns GridPointState with dangling raw pointer into gridstate vector
Closed
#260 [Bugfix] EntityCollection.insert() skips gridstate resize when entity has existing gridstate
Closed
#261 [Bugfix] EntityCollection.__setitem__ skips gridstate resize when replacing entity
Closed
#262 [Bugfix] EntityCollection contiguous slice assignment skips gridstate resize
Closed
#259 [Bugfix] EntityCollection.extend() skips gridstate resize when entity has existing gridstate
Closed
#258 [Bugfix] EntityCollection.append() skips gridstate resize when entity has existing gridstate
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
#245 [Minor Feature] screen_to_world() only intersects Y=0 plane
Closed
#247 [7DRL Prep] SDL audio working in browser (WASM)
Closed
#242 [Bugfix] Entity3D.animate() raises NotImplementedError
Closed
#244 [Bugfix] Entity3D.viewport returns None instead of parent Viewport3D
Closed
#243 [Minor Feature] EntityCollection3D missing pop(), find(), extend() methods
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
#232 Scrollwheel registers as MouseButton.LEFT
Closed
#231 Middle Click produces no event
Closed
#229 Animation callback doesn't provide data
Closed
#228 [Bugfix] UIGrid: RenderTexture hard-coded to 1080p causes issues at higher resolutions
Closed
#230 on_enter and on_exit have unnecessary parameters
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
#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
#213 [Bugfix] Color component values outside 0-255 wrap silently without warning
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
#201 [Proc Gen] ColorLayer - apply_threshold, apply_gradient, apply_ranges
Closed
#200 [Proc Gen] TileLayer - apply_threshold and apply_ranges for tile indices
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
#196 [Proc Gen] HeightMap - Query methods
Closed
#199 [Proc Gen] Grid - apply_threshold and apply_ranges for walkable/transparent
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
#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
#188 .bounds and .global_bounds should be a pair of vectors, not 4 values
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
#189 Hide classes from the module which can't be instantiated
Closed
#179 Grid attributes: Vectors instead of Tuples
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
#164 [Tiny Feature] Add mcrfpy.__version__ for version identity
Closed
#160 [Minor Feature] Engine-level modifier key state tracking
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
Closed
#153 Separate render loop from game state loop
Closed
#91 Generate Python type stub files (.pyi)
Closed
#114 CellView API
Closed
#16 Entity knowledge contents: make map data available directly through GridPointState
Closed
#113 Batch Operations for Grid
Closed
#150 Remove original layers and migrate Grids to entirely user-driven layer objects
Closed
#148 Grid Layer Dirty Flags and RenderTexture Caching
Closed
#146 Fix compute_fov() O(n²) performance bug - return None instead of cell list
Closed
#147 Dynamic Layer System for Grid
Closed
#123 Grid Subgrid System
Closed
#144 Universal Dirty Flag & Texture Caching System
Closed
#104 Basic profiling/metrics
Closed
#138 AABB / Hit Testing System
Closed
#111 Click Events Broken in Headless
Closed
#141 on_move Event for Pixel-Level Mouse Tracking
Closed
#140 Mouse State Tracking and Enter/Exit Events
Closed
#142 Grid Cell Mouse Events
Closed
#139 Callback Naming Standardization
Closed
#118 Scene as Drawable
Closed
#116 Dirty Flag System
Closed
#102 Add global_position property to nested UI elements
Closed
#122 Parent-Child UI System
Closed
#137 Self-Contained Virtual Environment Support
Closed
#65 Python Explorer Scene / Dropdown Console widget
Closed
#75 "Application is not responding" while REPL is open
Closed
#36 SFML-DearImgui usage
Closed
#35 TCOD as built-in module
Closed
#48 Compilation Guide
Closed
#135 Upgrade embedded Python from 3.12 to 3.14
Closed
#134 Create libtcod-headless fork for SDL-free builds
Closed
#133 Add --continue-after-exceptions flag; exit on first exception by default
Closed
#109 mcrfpy.Vector - support more convenience
Closed
#40 UIDrawable overwriting - search and replace by name
Closed
#41 Use UIDrawable names as tags / .find on a collection
Closed
#15 UIGridPointState Collection
Closed
#14 SFML Python Library
Closed
#20 UIGrid: replace vector member getter/setters
Closed
#1 Resize Event for Scene
Closed
#10 Visibility: skip render or click inputs
Closed
#130 Geometry helper module for orbital mechanics and spatial calculations
Closed
#129 Circle drawing primitives for range visualization
Closed
#128 Line and Arc drawing primitives for path visualization
Closed
#132 Add UIDrawable children collection to Grid
Closed
#131 Document correct Gitea MCP label IDs for programmatic issue creation
Closed
#127 Auto-exit in --headless --exec mode when script completes
Closed
#97 Create automated API documentation extraction tool
Closed
#92 Create inline C++ documentation system
189 issues created by 1 user
Opened
#127 Auto-exit in --headless --exec mode when script completes
Opened
#128 Line and Arc drawing primitives for path visualization
Opened
#129 Circle drawing primitives for range visualization
Opened
#130 Geometry helper module for orbital mechanics and spatial calculations
Opened
#131 Document correct Gitea MCP label IDs for programmatic issue creation
Opened
#132 Add UIDrawable children collection to Grid
Opened
#133 Add --continue-after-exceptions flag; exit on first exception by default
Opened
#134 Create libtcod-headless fork for SDL-free builds
Opened
#135 Upgrade embedded Python from 3.12 to 3.14
Opened
#136 ImGui Object Explorer / Scene Tree View
Opened
#137 Self-Contained Virtual Environment Support
Opened
#138 AABB / Hit Testing System
Opened
#139 Callback Naming Standardization
Opened
#140 Mouse State Tracking and Enter/Exit Events
Opened
#141 on_move Event for Pixel-Level Mouse Tracking
Opened
#142 Grid Cell Mouse Events
Opened
#143 [Demo] Widget Focus System Example
Opened
#144 Universal Dirty Flag & Texture Caching System
Opened
#145 TexturePool with power-of-2 bucketing for RenderTexture reuse
Opened
#146 Fix compute_fov() O(n²) performance bug - return None instead of cell list
Opened
#147 Dynamic Layer System for Grid
Opened
#148 Grid Layer Dirty Flags and RenderTexture Caching
Opened
#149 Reduce the size of UIGrid.cpp
Opened
#150 Remove original layers and migrate Grids to entirely user-driven layer objects
Opened
#151 remove setScene, keyPressScene, currentScene in favor of mcrfpy.scene
Opened
#152 Sparse Grid Layers
Opened
#153 Separate render loop from game state loop
Opened
#154 Grounded Multi-Agent Testbed: LLM Agents in Discrete Simulated Environments
Opened
#155 Deterministic Text Descriptions From Room Graph
Opened
#156 Turn-based LLM Agent Orchestration
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
#166 [Refactoring] Test suite cleanup and organization
Opened
#165 [Documentation] Update mcrogueface.github.io website
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
Opened
#256 [Bugfix] Animation system bypasses spatial hash updates for entity position
Opened
#257 grid layers with z_index of zero are on top of entities
Opened
#258 [Bugfix] EntityCollection.append() skips gridstate resize when entity has existing gridstate
Opened
#259 [Bugfix] EntityCollection.extend() skips gridstate resize when entity has existing gridstate
Opened
#260 [Bugfix] EntityCollection.insert() skips gridstate resize when entity has existing gridstate
Opened
#261 [Bugfix] EntityCollection.__setitem__ skips gridstate resize when replacing entity
Opened
#262 [Bugfix] EntityCollection contiguous slice assignment skips gridstate resize
Opened
#263 [Bugfix] EntityCollection extended slice assignment skips gridstate resize
Opened
#264 [Bugfix] entity.at() returns GridPointState with dangling raw pointer into gridstate vector
Opened
#265 [Bugfix] grid.at() returns GridPoint with dangling raw pointer into grid storage
Opened
#266 [Bugfix] UIEntity self reference cycle causes permanent memory leak
Opened
#267 [Bugfix] PyObject_GetAttrString return values leaked across 60+ call sites
Opened
#268 [Bugfix] sfVector2f_to_PyObject crashes on NULL from PyObject_GetAttrString
Opened
#269 [Bugfix] PythonObjectCache::lookup() reads hash map without mutex
Opened
#270 [Bugfix] GridLayer::parent_grid is a dangling raw pointer when grid is destroyed
Opened
#271 [Bugfix] UIGridPoint::parent_grid is a dangling raw pointer
Opened
#272 [Bugfix] UniformCollection stores raw pointer without checking weak_ptr owner before access
Opened
#273 [Bugfix] entity.die() during iteration over grid.entities invalidates list iterator
Opened
#274 [Bugfix] UIEntity.set_grid() missing spatial hash cleanup on grid transfer
Opened
#275 [Bugfix] UIEntity has no tp_dealloc — Py_INCREF(self) in init() is never balanced
Opened
#276 [Bugfix] updateVisibility() gridstate.size()==0 guard doesn't validate against current grid dimensions
Opened
#277 [Bugfix] GridChunk::parent_grid raw pointer can dangle
Opened
#278 [Bugfix] entity.at() lazy init guard also has gridstate.size()==0 bug
Opened
#279 [Meta] Engine memory safety audit — 7DRL 2026 post-mortem
Opened
#280 [Minor Feature] Instrumented libtcod debug build for sanitizer coverage
Opened
#281 [Minor Feature] Free-threaded CPython + TSan Makefile targets
Opened
#282 [Minor Feature] Install modern Clang for improved TSan and fuzzing
Opened
#283 [Major Feature] Coverage-guided fuzz harness for Python API (libFuzzer + ASan)
Opened
#284 [Tiny Feature] Valgrind Massif heap profiling target
Opened
#285 [Minor Feature] CI pipeline for debug-test and asan-test
Opened
#286 [Tiny Feature] Re-enable ASan leak detection after fixing #266/#275
Opened
#287 [Minor Feature] Regression tests that trigger each bug from #258–#278
Opened
#288 [Bugfix] UICollection mutations don't invalidate parent Frame's render cache
Opened
#289 [Bugfix] Caption Python property setters don't call markDirty()
Opened
#290 [Bugfix] UIDrawable base x/y/pos/grid_pos setters don't propagate dirty flags to parent
Opened
#291 [Refactoring] Audit all Python property setters for missing markDirty() calls
Opened
#292 Deduplicate redundant FOV computation
Opened
#293 DiscreteMap serialization via bytes
Opened
#294 Entity.gridstate as DiscreteMap reference
Opened
#295 Entity cell_pos — integer logical position decoupled from render position
Opened
#296 Entity labels — multi-tag string set for collision and trigger grouping
Opened
#297 mcrfpy.Behavior enum — behavior type identifiers
Opened
#298 mcrfpy.Trigger enum — behavior trigger type identifiers
Opened
#299 Entity step() callback — Python-side turn handler
Opened
#300 Behavior data struct and primitive implementations
Opened
#301 grid.step() — turn manager for entity behaviors
Opened
#302 Pathfinding with entity collision labels
Opened
#303 FOV optimization for behavior TARGET triggers
Opened
#304 [API Freeze] Remove camelCase module functions before 1.0
Opened
#305 [API Freeze] Remove deprecated sprite_number property
Opened
#306 [API Freeze] Remove legacy string enum comparisons
Opened
#307 [Bugfix] Color type missing __eq__/__ne__ despite having __hash__
Opened
#308 [API Freeze] Remove redundant Grid.position alias
Opened
#309 Caption numeric setters cast negative floats to unsigned int (UBSan)
Opened
#310 compute_fov loads out-of-range int into TCOD_fov_algorithm_t enum (UBSan)
Opened
#311 DijkstraMap pathfinding accepts out-of-bounds coords and aborts via TCOD assertion
Opened
#312 [Minor Feature] Extend fuzz coverage to remaining public API surface
Opened
#313 [Refactoring] Migrate UIEntity::grid from shared_ptr<UIGrid> to shared_ptr<GridData>
Opened
#314 [Documentation] API audit follow-through: close the gaps from docs/api-audit-2026-04.md
Opened
#315 Behavior pathfinding architecture — support A*↔Dijkstra spectrum, multi-root, and custom heuristics
Opened
#316 Sparse perspective writeback in UIEntity::updateVisibility (Phase 5.2 finding)
11 unresolved conversations
Open
#46
subinterpreter tests
Open
#45
Accessibility modes and demos
Open
#124
Grid Point Animation
Open
#117
Memory Pool for Entities
Open
#67
Grid Stitching: an infinite world prototype
Open
#55
McRogueFace as Agent Simulation Environment
Open
#70
Package mcrfpy without embedded interpreter
Open
#107
Particle system
Open
#54
Jupyter Notebook Interface
Open
#62
Multiple Windows
Open
#53
Alternative Input Methods