- Calculate avail at window level, divide by num_open sections
- Pass height_override to _render_files_panel and _render_screenshots_panel
- When both open: each gets equal share of available space
- When one open: it gets full available space
- Calculate available space from get_content_region_avail().y
- Divide by number of open sections (1 or 2)
- Each section gets equal height (section_h)
- Content scrolls internally if it exceeds allocated space
- When both collapsed, shows minimal placeholder
- Track section open state via _files_section_open, _shots_section_open
- Calculate available space, divide by number of open sections
- Each section gets equal height when both open
- Content scrolls internally if it exceeds allocated space
- Removed unused _render_files_panel and _render_screenshots_panel methods
- Files: child_h = min(max(len(files),1) * 28 + 40, 400) - 28px per row, 40px header, 400px max
- Screenshots: shot_h = min(max(len(shots),1) * 28 + 40, 300) - same pattern with 300px max
Replaces hacky (0, -40) which stretched to fill available space regardless of content.
Added:
- _files_split_v state (0.5 default) for split ratio
- _files_open and _shots_open tracking for collapse state
- Splitter bar between collapsing headers when both open
- Splitter updates _files_split_v based on mouse drag
- Persona editor: splitter shown when BOTH models and prompt open (not just prompt)
- Bias profiles: move splitter OUTSIDE btool_scroll child, between both sections
- Fixed nesting issues causing EndTable/EndChild errors
- When both sections open: use min(h, max(200, rem_y*0.3)) for tools, min(h, max(150, rem_y*0.5)) for bias
- Single section open: cap at 400px instead of hard small values
- This preserves split ratio while ensuring minimum readable sizes
The begin_child() was using (0, -40) which made it stretch to fill parent.
Changed to (0, min(len(items) * 30 + 50, 300)) so it:
- Sizes to content (30px per row + 50px header)
- Caps at 300px max height
- Allows scrolling when content overflows
The main_context field in Project Settings was stored but never used.
Nothing reads it to inject into AI context. System Prompt in AI Settings
already serves this purpose.
Removed:
- app_controller.py: ui_project_main_context state variable and all refs
- gui_2.py: Main Context File UI section from Projects panel
- project_manager.py: main_context from default_project()
- project.toml, manual_slop.toml, gencpp_manual_slop_template.toml: main_context entries
- Copied 58 files from C:\projects\gencpp\base\ to tests/assets/gencpp_samples
- Added test_gencpp_full_suite.py that validates:
- Skeleton generation for all .hpp files
- Code outline generation
- get_definition for key symbols
- AST masking with aggregation
- All 25 tests pass