From f6fe3baaf4b57dfd3097281a3201a1453a458a46 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sun, 22 Mar 2026 11:16:52 -0400 Subject: [PATCH] fix(gui): Skip empty strings in selectable to prevent ImGui ID assertion Empty strings in bias_profiles.keys() and personas.keys() caused imgui.selectable() to fail with 'Cannot have an empty ID at root of window' assertion error. Added guards to skip empty names. --- .opencode/agents/explore.md | 6 +++--- .opencode/agents/general.md | 6 +++--- .opencode/agents/tier1-orchestrator.md | 10 ++++----- .opencode/agents/tier2-tech-lead.md | 14 ++++++------ .opencode/agents/tier3-worker.md | 6 +++--- .opencode/agents/tier4-qa.md | 6 +++--- config.toml | 6 +++--- manualslop_layout.ini | 30 +++++++++++++------------- opencode.json | 3 ++- src/gui_2.py | 4 ++++ 10 files changed, 48 insertions(+), 43 deletions(-) diff --git a/.opencode/agents/explore.md b/.opencode/agents/explore.md index 1fc1cb4..842a85a 100644 --- a/.opencode/agents/explore.md +++ b/.opencode/agents/explore.md @@ -1,7 +1,7 @@ ---- +--- description: Fast, read-only agent for exploring the codebase structure mode: subagent -model: MiniMax-M2.5 +model: minimax-coding-plan/MiniMax-M2.7 temperature: 0.2 permission: edit: deny @@ -78,4 +78,4 @@ Return concise findings with file:line references: ### Summary [One-paragraph summary of findings] -``` \ No newline at end of file +``` diff --git a/.opencode/agents/general.md b/.opencode/agents/general.md index 096e6b2..2c4a5e2 100644 --- a/.opencode/agents/general.md +++ b/.opencode/agents/general.md @@ -1,7 +1,7 @@ ---- +--- description: General-purpose agent for researching complex questions and executing multi-step tasks mode: subagent -model: MiniMax-M2.5 +model: minimax-coding-plan/MiniMax-M2.7 temperature: 0.3 --- @@ -81,4 +81,4 @@ Return detailed findings with evidence: ### Recommendations - [Suggested next steps if applicable] -``` \ No newline at end of file +``` diff --git a/.opencode/agents/tier1-orchestrator.md b/.opencode/agents/tier1-orchestrator.md index 1225dd5..4bac4f7 100644 --- a/.opencode/agents/tier1-orchestrator.md +++ b/.opencode/agents/tier1-orchestrator.md @@ -1,7 +1,7 @@ ---- +--- description: Tier 1 Orchestrator for product alignment, high-level planning, and track initialization mode: primary -model: MiniMax-M2.5 +model: minimax-coding-plan/MiniMax-M2.7 temperature: 0.5 permission: edit: ask @@ -18,7 +18,7 @@ ONLY output the requested text. No pleasantries. ## Context Management -**MANUAL COMPACTION ONLY** — Never rely on automatic context summarization. +**MANUAL COMPACTION ONLY** � Never rely on automatic context summarization. Use `/compact` command explicitly when context needs reduction. Preserve full context during track planning and spec creation. @@ -105,7 +105,7 @@ Use `manual-slop_py_get_code_outline`, `manual-slop_py_get_definition`, Document existing implementations with file:line references in a "Current State Audit" section in the spec. -**FAILURE TO AUDIT = TRACK FAILURE** — Previous tracks failed because specs +**FAILURE TO AUDIT = TRACK FAILURE** � Previous tracks failed because specs asked to implement features that already existed. ### 2. Identify Gaps, Not Features @@ -175,4 +175,4 @@ Focus: {One-sentence scope} - Do NOT use native `edit` tool - use MCP tools - DO NOT SKIP A TEST IN PYTEST JUST BECAUSE ITS BROKEN AND HAS NO TRIVIAL SOLUTION OR FIX. - DO NOT SIMPLIFY A TEST JUST BECAUSE IT HAS NO TRIVIAL SOLUTION TO FIX. -- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. \ No newline at end of file +- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. diff --git a/.opencode/agents/tier2-tech-lead.md b/.opencode/agents/tier2-tech-lead.md index 6edcd6b..f4bdb0a 100644 --- a/.opencode/agents/tier2-tech-lead.md +++ b/.opencode/agents/tier2-tech-lead.md @@ -1,7 +1,7 @@ ---- +--- description: Tier 2 Tech Lead for architectural design and track execution with persistent memory mode: primary -model: MiniMax-M2.5 +model: minimax-coding-plan/MiniMax-M2.7 temperature: 0.4 permission: edit: ask @@ -14,9 +14,9 @@ ONLY output the requested text. No pleasantries. ## Context Management -**MANUAL COMPACTION ONLY** — Never rely on automatic context summarization. +**MANUAL COMPACTION ONLY** � Never rely on automatic context summarization. Use `/compact` command explicitly when context needs reduction. -You maintain PERSISTENT MEMORY throughout track execution — do NOT apply Context Amnesia to your own session. +You maintain PERSISTENT MEMORY throughout track execution � do NOT apply Context Amnesia to your own session. ## CRITICAL: MCP Tools Only (Native Tools Banned) @@ -134,14 +134,14 @@ Before implementing: - Zero-assertion ban: Tests MUST have meaningful assertions - Delegate test creation to Tier 3 Worker via Task tool - Run tests and confirm they FAIL as expected -- **CONFIRM FAILURE** — this is the Red phase +- **CONFIRM FAILURE** � this is the Red phase ### 3. Green Phase: Implement to Pass - **Pre-delegation checkpoint**: Stage current progress (`git add .`) - Delegate implementation to Tier 3 Worker via Task tool - Run tests and confirm they PASS -- **CONFIRM PASS** — this is the Green phase +- **CONFIRM PASS** � this is the Green phase ### 4. Refactor Phase (Optional) @@ -213,4 +213,4 @@ When all tasks in a phase are complete: - Do NOT use native `edit` tool - use MCP tools - DO NOT SKIP A TEST IN PYTEST JUST BECAUSE ITS BROKEN AND HAS NO TRIVIAL SOLUTION OR FIX. - DO NOT SIMPLIFY A TEST JUST BECAUSE IT HAS NO TRIVIAL SOLUTION TO FIX. -- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. \ No newline at end of file +- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. diff --git a/.opencode/agents/tier3-worker.md b/.opencode/agents/tier3-worker.md index 0f3a9cf..7964450 100644 --- a/.opencode/agents/tier3-worker.md +++ b/.opencode/agents/tier3-worker.md @@ -1,7 +1,7 @@ ---- +--- description: Stateless Tier 3 Worker for surgical code implementation and TDD mode: subagent -model: MiniMax-M2.5 +model: minimax-coding-plan/minimax-m2.7 temperature: 0.3 permission: edit: allow @@ -133,4 +133,4 @@ If you cannot complete the task: - Do NOT modify files outside the specified scope - DO NOT SKIP A TEST IN PYTEST JUST BECAUSE ITS BROKEN AND HAS NO TRIVIAL SOLUTION OR FIX. - DO NOT SIMPLIFY A TEST JUST BECAUSE IT HAS NO TRIVIAL SOLUTION TO FIX. -- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. \ No newline at end of file +- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. diff --git a/.opencode/agents/tier4-qa.md b/.opencode/agents/tier4-qa.md index b3f073f..0f8cd1e 100644 --- a/.opencode/agents/tier4-qa.md +++ b/.opencode/agents/tier4-qa.md @@ -1,7 +1,7 @@ ---- +--- description: Stateless Tier 4 QA Agent for error analysis and diagnostics mode: subagent -model: MiniMax-M2.5 +model: minimax-coding-plan/MiniMax-M2.7 temperature: 0.2 permission: edit: deny @@ -119,4 +119,4 @@ If you cannot analyze the error: - Do NOT read full large files - use skeleton tools first - DO NOT SKIP A TEST IN PYTEST JUST BECAUSE ITS BROKEN AND HAS NO TRIVIAL SOLUTION OR FIX. - DO NOT SIMPLIFY A TEST JUST BECAUSE IT HAS NO TRIVIAL SOLUTION TO FIX. -- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. \ No newline at end of file +- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY. diff --git a/config.toml b/config.toml index de02ae0..3fe746d 100644 --- a/config.toml +++ b/config.toml @@ -1,6 +1,6 @@ [ai] -provider = "gemini_cli" -model = "gemini-2.5-flash-lite" +provider = "minimax" +model = "MiniMax-M2.5" temperature = 0.0 top_p = 1.0 max_tokens = 32000 @@ -61,7 +61,7 @@ Diagnostics = false "Session Hub" = false [theme] -palette = "10x Dark" +palette = "Nord Dark" font_path = "fonts/Inter-Regular.ttf" font_size = 16.0 scale = 1.0 diff --git a/manualslop_layout.ini b/manualslop_layout.ini index 6cc2099..d08542b 100644 --- a/manualslop_layout.ini +++ b/manualslop_layout.ini @@ -74,8 +74,8 @@ Collapsed=0 DockId=0xAFC85805,2 [Window][Theme] -Pos=0,249 -Size=32,951 +Pos=0,976 +Size=635,951 Collapsed=0 DockId=0x00000002,2 @@ -91,8 +91,8 @@ Collapsed=0 DockId=0x00000010,0 [Window][Context Hub] -Pos=0,249 -Size=32,951 +Pos=0,976 +Size=635,951 Collapsed=0 DockId=0x00000002,1 @@ -103,26 +103,26 @@ Collapsed=0 DockId=0x0000000D,0 [Window][Discussion Hub] -Pos=807,26 -Size=873,1174 +Pos=1936,24 +Size=1468,1903 Collapsed=0 DockId=0x00000013,0 [Window][Operations Hub] -Pos=34,26 -Size=771,1174 +Pos=637,24 +Size=1297,1903 Collapsed=0 DockId=0x00000005,0 [Window][Files & Media] -Pos=0,249 -Size=32,951 +Pos=0,976 +Size=635,951 Collapsed=0 DockId=0x00000002,0 [Window][AI Settings] -Pos=0,26 -Size=32,221 +Pos=0,24 +Size=635,950 Collapsed=0 DockId=0x00000001,0 @@ -513,12 +513,12 @@ Column 1 Weight=1.0000 DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02 -DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,26 Size=1680,1174 Split=X +DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,24 Size=3404,1903 Split=X DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2175,1183 Split=X DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2 DockNode ID=0x00000007 Parent=0x0000000B SizeRef=1071,858 Split=Y Selected=0x8CA2375C - DockNode ID=0x00000001 Parent=0x00000007 SizeRef=824,1037 CentralNode=1 Selected=0x7BD57D6A - DockNode ID=0x00000002 Parent=0x00000007 SizeRef=824,951 Selected=0x1DCB2623 + DockNode ID=0x00000001 Parent=0x00000007 SizeRef=824,950 CentralNode=1 Selected=0x7BD57D6A + DockNode ID=0x00000002 Parent=0x00000007 SizeRef=824,951 Selected=0x8CA2375C DockNode ID=0x0000000E Parent=0x0000000B SizeRef=2767,858 Split=X Selected=0x418C7449 DockNode ID=0x00000012 Parent=0x0000000E SizeRef=1297,402 Split=Y Selected=0x418C7449 DockNode ID=0x00000005 Parent=0x00000012 SizeRef=876,1749 Selected=0x418C7449 diff --git a/opencode.json b/opencode.json index 64e1bb0..d4d8a64 100644 --- a/opencode.json +++ b/opencode.json @@ -71,5 +71,6 @@ "logs/**", "*.log" ] - } + }, + "plugin": ["superpowers@git+https://github.com/obra/superpowers.git"] } diff --git a/src/gui_2.py b/src/gui_2.py index 1c73312..441984c 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -2652,6 +2652,8 @@ def hello(): if imgui.selectable("None", not self.ui_active_persona)[0]: self.ui_active_persona = "" for pname in sorted(personas.keys()): + if not pname: + continue if imgui.selectable(pname, pname == self.ui_active_persona)[0]: self.ui_active_persona = pname if pname in personas: @@ -4219,6 +4221,8 @@ def hello(): from src import ai_client ai_client.set_bias_profile(None) for bname in sorted(self.controller.bias_profiles.keys()): + if not bname: + continue if imgui.selectable(bname, bname == getattr(self, 'ui_active_bias_profile', ""))[0]: self.ui_active_bias_profile = bname from src import ai_client