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.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
description: Fast, read-only agent for exploring the codebase structure
|
description: Fast, read-only agent for exploring the codebase structure
|
||||||
mode: subagent
|
mode: subagent
|
||||||
model: MiniMax-M2.5
|
model: minimax-coding-plan/MiniMax-M2.7
|
||||||
temperature: 0.2
|
temperature: 0.2
|
||||||
permission:
|
permission:
|
||||||
edit: deny
|
edit: deny
|
||||||
@@ -78,4 +78,4 @@ Return concise findings with file:line references:
|
|||||||
|
|
||||||
### Summary
|
### Summary
|
||||||
[One-paragraph summary of findings]
|
[One-paragraph summary of findings]
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
description: General-purpose agent for researching complex questions and executing multi-step tasks
|
description: General-purpose agent for researching complex questions and executing multi-step tasks
|
||||||
mode: subagent
|
mode: subagent
|
||||||
model: MiniMax-M2.5
|
model: minimax-coding-plan/MiniMax-M2.7
|
||||||
temperature: 0.3
|
temperature: 0.3
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -81,4 +81,4 @@ Return detailed findings with evidence:
|
|||||||
|
|
||||||
### Recommendations
|
### Recommendations
|
||||||
- [Suggested next steps if applicable]
|
- [Suggested next steps if applicable]
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
description: Tier 1 Orchestrator for product alignment, high-level planning, and track initialization
|
description: Tier 1 Orchestrator for product alignment, high-level planning, and track initialization
|
||||||
mode: primary
|
mode: primary
|
||||||
model: MiniMax-M2.5
|
model: minimax-coding-plan/MiniMax-M2.7
|
||||||
temperature: 0.5
|
temperature: 0.5
|
||||||
permission:
|
permission:
|
||||||
edit: ask
|
edit: ask
|
||||||
@@ -18,7 +18,7 @@ ONLY output the requested text. No pleasantries.
|
|||||||
|
|
||||||
## Context Management
|
## Context Management
|
||||||
|
|
||||||
**MANUAL COMPACTION ONLY** — Never rely on automatic context summarization.
|
**MANUAL COMPACTION ONLY** <EFBFBD> Never rely on automatic context summarization.
|
||||||
Use `/compact` command explicitly when context needs reduction.
|
Use `/compact` command explicitly when context needs reduction.
|
||||||
Preserve full context during track planning and spec creation.
|
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
|
Document existing implementations with file:line references in a
|
||||||
"Current State Audit" section in the spec.
|
"Current State Audit" section in the spec.
|
||||||
|
|
||||||
**FAILURE TO AUDIT = TRACK FAILURE** — Previous tracks failed because specs
|
**FAILURE TO AUDIT = TRACK FAILURE** <EFBFBD> Previous tracks failed because specs
|
||||||
asked to implement features that already existed.
|
asked to implement features that already existed.
|
||||||
|
|
||||||
### 2. Identify Gaps, Not Features
|
### 2. Identify Gaps, Not Features
|
||||||
@@ -175,4 +175,4 @@ Focus: {One-sentence scope}
|
|||||||
- Do NOT use native `edit` tool - use MCP tools
|
- 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 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 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.
|
- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
description: Tier 2 Tech Lead for architectural design and track execution with persistent memory
|
description: Tier 2 Tech Lead for architectural design and track execution with persistent memory
|
||||||
mode: primary
|
mode: primary
|
||||||
model: MiniMax-M2.5
|
model: minimax-coding-plan/MiniMax-M2.7
|
||||||
temperature: 0.4
|
temperature: 0.4
|
||||||
permission:
|
permission:
|
||||||
edit: ask
|
edit: ask
|
||||||
@@ -14,9 +14,9 @@ ONLY output the requested text. No pleasantries.
|
|||||||
|
|
||||||
## Context Management
|
## Context Management
|
||||||
|
|
||||||
**MANUAL COMPACTION ONLY** — Never rely on automatic context summarization.
|
**MANUAL COMPACTION ONLY** <EFBFBD> Never rely on automatic context summarization.
|
||||||
Use `/compact` command explicitly when context needs reduction.
|
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 <EFBFBD> do NOT apply Context Amnesia to your own session.
|
||||||
|
|
||||||
## CRITICAL: MCP Tools Only (Native Tools Banned)
|
## CRITICAL: MCP Tools Only (Native Tools Banned)
|
||||||
|
|
||||||
@@ -134,14 +134,14 @@ Before implementing:
|
|||||||
- Zero-assertion ban: Tests MUST have meaningful assertions
|
- Zero-assertion ban: Tests MUST have meaningful assertions
|
||||||
- Delegate test creation to Tier 3 Worker via Task tool
|
- Delegate test creation to Tier 3 Worker via Task tool
|
||||||
- Run tests and confirm they FAIL as expected
|
- Run tests and confirm they FAIL as expected
|
||||||
- **CONFIRM FAILURE** — this is the Red phase
|
- **CONFIRM FAILURE** <EFBFBD> this is the Red phase
|
||||||
|
|
||||||
### 3. Green Phase: Implement to Pass
|
### 3. Green Phase: Implement to Pass
|
||||||
|
|
||||||
- **Pre-delegation checkpoint**: Stage current progress (`git add .`)
|
- **Pre-delegation checkpoint**: Stage current progress (`git add .`)
|
||||||
- Delegate implementation to Tier 3 Worker via Task tool
|
- Delegate implementation to Tier 3 Worker via Task tool
|
||||||
- Run tests and confirm they PASS
|
- Run tests and confirm they PASS
|
||||||
- **CONFIRM PASS** — this is the Green phase
|
- **CONFIRM PASS** <EFBFBD> this is the Green phase
|
||||||
|
|
||||||
### 4. Refactor Phase (Optional)
|
### 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 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 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 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.
|
- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
description: Stateless Tier 3 Worker for surgical code implementation and TDD
|
description: Stateless Tier 3 Worker for surgical code implementation and TDD
|
||||||
mode: subagent
|
mode: subagent
|
||||||
model: MiniMax-M2.5
|
model: minimax-coding-plan/minimax-m2.7
|
||||||
temperature: 0.3
|
temperature: 0.3
|
||||||
permission:
|
permission:
|
||||||
edit: allow
|
edit: allow
|
||||||
@@ -133,4 +133,4 @@ If you cannot complete the task:
|
|||||||
- Do NOT modify files outside the specified scope
|
- 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 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 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.
|
- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
description: Stateless Tier 4 QA Agent for error analysis and diagnostics
|
description: Stateless Tier 4 QA Agent for error analysis and diagnostics
|
||||||
mode: subagent
|
mode: subagent
|
||||||
model: MiniMax-M2.5
|
model: minimax-coding-plan/MiniMax-M2.7
|
||||||
temperature: 0.2
|
temperature: 0.2
|
||||||
permission:
|
permission:
|
||||||
edit: deny
|
edit: deny
|
||||||
@@ -119,4 +119,4 @@ If you cannot analyze the error:
|
|||||||
- Do NOT read full large files - use skeleton tools first
|
- 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 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 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.
|
- DO NOT CREATE MOCK PATCHES TO PSEUDO API CALLS OR HOOKS BECAUSE THE APP SOURCE WAS CHANGED. ADAPT TESTS PROPERLY.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[ai]
|
[ai]
|
||||||
provider = "gemini_cli"
|
provider = "minimax"
|
||||||
model = "gemini-2.5-flash-lite"
|
model = "MiniMax-M2.5"
|
||||||
temperature = 0.0
|
temperature = 0.0
|
||||||
top_p = 1.0
|
top_p = 1.0
|
||||||
max_tokens = 32000
|
max_tokens = 32000
|
||||||
@@ -61,7 +61,7 @@ Diagnostics = false
|
|||||||
"Session Hub" = false
|
"Session Hub" = false
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
palette = "10x Dark"
|
palette = "Nord Dark"
|
||||||
font_path = "fonts/Inter-Regular.ttf"
|
font_path = "fonts/Inter-Regular.ttf"
|
||||||
font_size = 16.0
|
font_size = 16.0
|
||||||
scale = 1.0
|
scale = 1.0
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ Collapsed=0
|
|||||||
DockId=0xAFC85805,2
|
DockId=0xAFC85805,2
|
||||||
|
|
||||||
[Window][Theme]
|
[Window][Theme]
|
||||||
Pos=0,249
|
Pos=0,976
|
||||||
Size=32,951
|
Size=635,951
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000002,2
|
DockId=0x00000002,2
|
||||||
|
|
||||||
@@ -91,8 +91,8 @@ Collapsed=0
|
|||||||
DockId=0x00000010,0
|
DockId=0x00000010,0
|
||||||
|
|
||||||
[Window][Context Hub]
|
[Window][Context Hub]
|
||||||
Pos=0,249
|
Pos=0,976
|
||||||
Size=32,951
|
Size=635,951
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000002,1
|
DockId=0x00000002,1
|
||||||
|
|
||||||
@@ -103,26 +103,26 @@ Collapsed=0
|
|||||||
DockId=0x0000000D,0
|
DockId=0x0000000D,0
|
||||||
|
|
||||||
[Window][Discussion Hub]
|
[Window][Discussion Hub]
|
||||||
Pos=807,26
|
Pos=1936,24
|
||||||
Size=873,1174
|
Size=1468,1903
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000013,0
|
DockId=0x00000013,0
|
||||||
|
|
||||||
[Window][Operations Hub]
|
[Window][Operations Hub]
|
||||||
Pos=34,26
|
Pos=637,24
|
||||||
Size=771,1174
|
Size=1297,1903
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000005,0
|
DockId=0x00000005,0
|
||||||
|
|
||||||
[Window][Files & Media]
|
[Window][Files & Media]
|
||||||
Pos=0,249
|
Pos=0,976
|
||||||
Size=32,951
|
Size=635,951
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000002,0
|
DockId=0x00000002,0
|
||||||
|
|
||||||
[Window][AI Settings]
|
[Window][AI Settings]
|
||||||
Pos=0,26
|
Pos=0,24
|
||||||
Size=32,221
|
Size=635,950
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000001,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=0x00000008 Pos=3125,170 Size=593,1157 Split=Y
|
||||||
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
|
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
|
||||||
DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02
|
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=0x00000003 Parent=0xAFC85805 SizeRef=2175,1183 Split=X
|
||||||
DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2
|
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=0x00000007 Parent=0x0000000B SizeRef=1071,858 Split=Y Selected=0x8CA2375C
|
||||||
DockNode ID=0x00000001 Parent=0x00000007 SizeRef=824,1037 CentralNode=1 Selected=0x7BD57D6A
|
DockNode ID=0x00000001 Parent=0x00000007 SizeRef=824,950 CentralNode=1 Selected=0x7BD57D6A
|
||||||
DockNode ID=0x00000002 Parent=0x00000007 SizeRef=824,951 Selected=0x1DCB2623
|
DockNode ID=0x00000002 Parent=0x00000007 SizeRef=824,951 Selected=0x8CA2375C
|
||||||
DockNode ID=0x0000000E Parent=0x0000000B SizeRef=2767,858 Split=X Selected=0x418C7449
|
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=0x00000012 Parent=0x0000000E SizeRef=1297,402 Split=Y Selected=0x418C7449
|
||||||
DockNode ID=0x00000005 Parent=0x00000012 SizeRef=876,1749 Selected=0x418C7449
|
DockNode ID=0x00000005 Parent=0x00000012 SizeRef=876,1749 Selected=0x418C7449
|
||||||
|
|||||||
@@ -71,5 +71,6 @@
|
|||||||
"logs/**",
|
"logs/**",
|
||||||
"*.log"
|
"*.log"
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
"plugin": ["superpowers@git+https://github.com/obra/superpowers.git"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2652,6 +2652,8 @@ def hello():
|
|||||||
if imgui.selectable("None", not self.ui_active_persona)[0]:
|
if imgui.selectable("None", not self.ui_active_persona)[0]:
|
||||||
self.ui_active_persona = ""
|
self.ui_active_persona = ""
|
||||||
for pname in sorted(personas.keys()):
|
for pname in sorted(personas.keys()):
|
||||||
|
if not pname:
|
||||||
|
continue
|
||||||
if imgui.selectable(pname, pname == self.ui_active_persona)[0]:
|
if imgui.selectable(pname, pname == self.ui_active_persona)[0]:
|
||||||
self.ui_active_persona = pname
|
self.ui_active_persona = pname
|
||||||
if pname in personas:
|
if pname in personas:
|
||||||
@@ -4219,6 +4221,8 @@ def hello():
|
|||||||
from src import ai_client
|
from src import ai_client
|
||||||
ai_client.set_bias_profile(None)
|
ai_client.set_bias_profile(None)
|
||||||
for bname in sorted(self.controller.bias_profiles.keys()):
|
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]:
|
if imgui.selectable(bname, bname == getattr(self, 'ui_active_bias_profile', ""))[0]:
|
||||||
self.ui_active_bias_profile = bname
|
self.ui_active_bias_profile = bname
|
||||||
from src import ai_client
|
from src import ai_client
|
||||||
|
|||||||
Reference in New Issue
Block a user