9eec79cc0eca06921784e9abf93f721202cab372
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2afb0126a5 |
fix(layout): restore [Docking] structure + per-window DockId references in bundled INI
Tier 2's commit |
||
|
|
e965451842 |
fix(layout): strip stale dockspace IDs from bundled INI; force live-session apply
Bundled layouts/default.ini (relocated from tests/artifacts/ in Phase 1) contained a [Docking] data block with a hardcoded DockSpace ID 0xAFBEEF01 plus per-window DockId references to nodes 0x10 and 0x11. Those IDs were captured at the time the layout was first generated; on any fresh session HelloImgui computes dockspace IDs dynamically (typically a hash of the dockspace name + creation order) so the hardcoded literal is stale by the first render and the orphan docking instructions are silently dropped. Result: window positions stored in the INI render the windows as floating at their absolute Pos coordinates, but the auto-created dockspace captures the full window body, hiding them all. User observed empty dockspace with only the menu ribbon rendering. Two-part fix: 1. layouts/default.ini: remove [Docking] data block and per-window DockId lines. Comment rewritten to explain why the auto-dock strategy is the only session-stable option. Each [Window] entry now has only Pos + Size + Collapsed=0, so HelloImgui's auto-dock layer places the panels as tabs in the central dockspace on first render. 2. _install_default_layout_if_empty: after writing the bundled INI to disk, also call imgui.load_ini_settings_from_memory(src_text) to force the live HelloImgui session to apply the new INI. Without this, the install only takes effect on the NEXT launch (since HelloImgui reads cwd/manualslop_layout.ini BEFORE the post_init callback fires). With it, first-launch panels appear immediately. Tests: - tests/test_default_layout_install.py assertions updated: instead of checking for a per-window DockId line, the install now verifies (a) [Window][Project Settings] entry exists, (b) the INI has at least one [Window] entry, (c) the INI has no [Docking] data block. - New _assert_live_session_apply() on tests 1 and 2 verifies the "(and applied to live session)" log line appears in stderr, confirming imgui.load_ini_settings_from_memory was invoked. 17/17 tests pass (3 install + 2 reset_layout + 8 adjacent gui/commands). |
||
|
|
7577d7d28b |
chore(layouts): introduce layouts/ directory + src/layouts.py; relocate default layout asset
TIER-2 READ AGENTS.md, conductor/workflow.md, conductor/edit_workflow.md, conductor/tier2/githooks/forbidden-files.txt, conductor/tracks/tier2_leak_prevention_20260620/spec.md, conductor/code_styleguides/data_oriented_design.md, conductor/code_styleguides/error_handling.md, conductor/code_styleguides/type_aliases.md, conductor/product-guidelines.md, conductor/code_styleguides/python.md, docs/guide_meta_boundary.md before Phase 1 Task 1.10. Phase 1 of default_layout_install_20260629: - tests/artifacts/manualslop_layout_default.ini -> layouts/default.ini (git mv preserves history; same content, new parallel-to-themes home) - src/paths.py: layouts: Path field + SLOP_GLOBAL_LAYOUTS env override + get_layouts_dir() accessor (mirror themes at 60/83/150/210+) - src/layouts.py: new LayoutFile @dataclass(frozen=True, slots=True) + load_layouts_from_dir/file + load_layouts_from_disk consumer (mirror src/theme_models.py + src/theme_2.py; Result drain per error_handling) - tests/conftest.py:709: reads from layouts/default.ini |