spicyv
This commit is contained in:
@@ -46,6 +46,7 @@ For deep implementation details when planning or implementing tracks, consult `d
|
|||||||
- **Parallel Tool Execution:** Executes independent tool calls (e.g., parallel file reads) concurrently within a single agent turn using an asynchronous execution engine, significantly reducing end-to-end latency.
|
- **Parallel Tool Execution:** Executes independent tool calls (e.g., parallel file reads) concurrently within a single agent turn using an asynchronous execution engine, significantly reducing end-to-end latency.
|
||||||
- **Automated Tier 4 QA:** Integrates real-time error interception in the shell runner, automatically forwarding technical failures to cheap sub-agents for 20-word diagnostic summaries injected back into the worker history.
|
- **Automated Tier 4 QA:** Integrates real-time error interception in the shell runner, automatically forwarding technical failures to cheap sub-agents for 20-word diagnostic summaries injected back into the worker history.
|
||||||
- **High-Fidelity Selectable UI:** Most read-only labels and logs across the interface (including discussion history, comms payloads, tool outputs, and telemetry metrics) are now implemented as selectable text fields. This enables standard OS-level text selection and copying (Ctrl+C) while maintaining a high-density, non-editable aesthetic.
|
- **High-Fidelity Selectable UI:** Most read-only labels and logs across the interface (including discussion history, comms payloads, tool outputs, and telemetry metrics) are now implemented as selectable text fields. This enables standard OS-level text selection and copying (Ctrl+C) while maintaining a high-density, non-editable aesthetic.
|
||||||
|
- **High-Fidelity UI Rendering:** Employs advanced 3x font oversampling and sub-pixel positioning to ensure crisp, high-clarity text rendering across all resolutions, enhancing readability for dense logs and complex code fragments.
|
||||||
- **Enhanced MMA Observability:** Worker streams and ticket previews now support direct text selection, allowing for easy extraction of specific logs or reasoning fragments during parallel execution.
|
- **Enhanced MMA Observability:** Worker streams and ticket previews now support direct text selection, allowing for easy extraction of specific logs or reasoning fragments during parallel execution.
|
||||||
- **Detailed History Management:** Rich discussion history with branching, timestamping, and specific git commit linkage per conversation.
|
- **Detailed History Management:** Rich discussion history with branching, timestamping, and specific git commit linkage per conversation.
|
||||||
- **Advanced Log Management:** Optimizes log storage by offloading large data (AI-generated scripts and tool outputs) to unique files within the session directory, using compact `[REF:filename]` pointers in JSON-L logs to minimize token overhead during analysis. Features a dedicated **Log Management panel** for monitoring, whitelisting, and pruning session logs.
|
- **Advanced Log Management:** Optimizes log storage by offloading large data (AI-generated scripts and tool outputs) to unique files within the session directory, using compact `[REF:filename]` pointers in JSON-L logs to minimize token overhead during analysis. Features a dedicated **Log Management panel** for monitoring, whitelisting, and pruning session logs.
|
||||||
|
|||||||
14
config.toml
14
config.toml
@@ -1,6 +1,6 @@
|
|||||||
[ai]
|
[ai]
|
||||||
provider = "deepseek"
|
provider = "minimax"
|
||||||
model = "deepseek-chat"
|
model = "MiniMax-M2.5"
|
||||||
temperature = 0.0
|
temperature = 0.0
|
||||||
max_tokens = 24000
|
max_tokens = 24000
|
||||||
history_trunc_limit = 900000
|
history_trunc_limit = 900000
|
||||||
@@ -42,10 +42,12 @@ Theme = true
|
|||||||
Diagnostics = false
|
Diagnostics = false
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
palette = "DPG Default"
|
palette = "Nord Dark"
|
||||||
font_path = ""
|
font_path = "C:/projects/manual_slop/assets/fonts/Inter-Regular.ttf"
|
||||||
font_size = 14.0
|
font_size = 12.0
|
||||||
scale = 1.0
|
scale = 1.25
|
||||||
|
transparency = 0.6499999761581421
|
||||||
|
child_transparency = 0.7200000286102295
|
||||||
|
|
||||||
[mma]
|
[mma]
|
||||||
max_workers = 4
|
max_workers = 4
|
||||||
|
|||||||
@@ -49,10 +49,9 @@ Size=1065,548
|
|||||||
Collapsed=0
|
Collapsed=0
|
||||||
|
|
||||||
[Window][Response]
|
[Window][Response]
|
||||||
Pos=826,1416
|
Pos=1009,1217
|
||||||
Size=873,721
|
Size=1036,351
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000014,1
|
|
||||||
|
|
||||||
[Window][Tool Calls]
|
[Window][Tool Calls]
|
||||||
Pos=99,730
|
Pos=99,730
|
||||||
@@ -74,8 +73,8 @@ Collapsed=0
|
|||||||
DockId=0xAFC85805,2
|
DockId=0xAFC85805,2
|
||||||
|
|
||||||
[Window][Theme]
|
[Window][Theme]
|
||||||
Pos=0,17
|
Pos=0,26
|
||||||
Size=824,961
|
Size=848,827
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000005,1
|
DockId=0x00000005,1
|
||||||
|
|
||||||
@@ -85,14 +84,14 @@ Size=900,700
|
|||||||
Collapsed=0
|
Collapsed=0
|
||||||
|
|
||||||
[Window][Diagnostics]
|
[Window][Diagnostics]
|
||||||
Pos=2813,17
|
Pos=2622,27
|
||||||
Size=1027,2120
|
Size=1218,2110
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000004,2
|
DockId=0x00000004,1
|
||||||
|
|
||||||
[Window][Context Hub]
|
[Window][Context Hub]
|
||||||
Pos=0,17
|
Pos=0,26
|
||||||
Size=824,961
|
Size=848,827
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000005,0
|
DockId=0x00000005,0
|
||||||
|
|
||||||
@@ -103,26 +102,26 @@ Collapsed=0
|
|||||||
DockId=0x0000000D,0
|
DockId=0x0000000D,0
|
||||||
|
|
||||||
[Window][Discussion Hub]
|
[Window][Discussion Hub]
|
||||||
Pos=1761,17
|
Pos=1736,26
|
||||||
Size=1050,1397
|
Size=884,1463
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000013,0
|
DockId=0x00000013,0
|
||||||
|
|
||||||
[Window][Operations Hub]
|
[Window][Operations Hub]
|
||||||
Pos=826,17
|
Pos=850,26
|
||||||
Size=933,1397
|
Size=884,1463
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000012,0
|
DockId=0x00000012,0
|
||||||
|
|
||||||
[Window][Files & Media]
|
[Window][Files & Media]
|
||||||
Pos=0,1560
|
Pos=0,1885
|
||||||
Size=824,577
|
Size=848,252
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000002,0
|
DockId=0x00000002,0
|
||||||
|
|
||||||
[Window][AI Settings]
|
[Window][AI Settings]
|
||||||
Pos=0,980
|
Pos=0,855
|
||||||
Size=824,578
|
Size=848,1028
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000001,0
|
DockId=0x00000001,0
|
||||||
|
|
||||||
@@ -132,43 +131,43 @@ Size=416,325
|
|||||||
Collapsed=0
|
Collapsed=0
|
||||||
|
|
||||||
[Window][MMA Dashboard]
|
[Window][MMA Dashboard]
|
||||||
Pos=2813,17
|
Pos=2622,26
|
||||||
Size=1027,2120
|
Size=1218,2111
|
||||||
Collapsed=0
|
|
||||||
DockId=0x00000004,0
|
|
||||||
|
|
||||||
[Window][Log Management]
|
|
||||||
Pos=2813,17
|
|
||||||
Size=1027,2120
|
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000004,1
|
DockId=0x00000004,1
|
||||||
|
|
||||||
|
[Window][Log Management]
|
||||||
|
Pos=2622,26
|
||||||
|
Size=1218,2111
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000004,0
|
||||||
|
|
||||||
[Window][Track Proposal]
|
[Window][Track Proposal]
|
||||||
Pos=709,326
|
Pos=709,326
|
||||||
Size=262,209
|
Size=262,209
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
|
|
||||||
[Window][Tier 1: Strategy]
|
[Window][Tier 1: Strategy]
|
||||||
Pos=826,1416
|
Pos=850,1491
|
||||||
Size=873,721
|
Size=306,646
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000014,0
|
DockId=0x00000014,0
|
||||||
|
|
||||||
[Window][Tier 2: Tech Lead]
|
[Window][Tier 2: Tech Lead]
|
||||||
Pos=1701,1416
|
Pos=1158,1491
|
||||||
Size=353,721
|
Size=550,646
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000016,0
|
DockId=0x00000016,0
|
||||||
|
|
||||||
[Window][Tier 4: QA]
|
[Window][Tier 4: QA]
|
||||||
Pos=2542,1416
|
Pos=2215,1491
|
||||||
Size=269,721
|
Size=405,646
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000019,0
|
DockId=0x00000019,0
|
||||||
|
|
||||||
[Window][Tier 3: Workers]
|
[Window][Tier 3: Workers]
|
||||||
Pos=2056,1416
|
Pos=1710,1491
|
||||||
Size=484,721
|
Size=503,646
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x00000018,0
|
DockId=0x00000018,0
|
||||||
|
|
||||||
@@ -307,6 +306,21 @@ Pos=532,397
|
|||||||
Size=616,406
|
Size=616,406
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][Markdown Test]
|
||||||
|
Pos=447,895
|
||||||
|
Size=1286,827
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][Dear ImGui Demo]
|
||||||
|
Pos=650,49
|
||||||
|
Size=550,680
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
|
[Window][Theme Tweaks]
|
||||||
|
Pos=755,679
|
||||||
|
Size=420,966
|
||||||
|
Collapsed=0
|
||||||
|
|
||||||
[Table][0xFB6E3870,4]
|
[Table][0xFB6E3870,4]
|
||||||
RefScale=13
|
RefScale=13
|
||||||
Column 0 Width=80
|
Column 0 Width=80
|
||||||
@@ -338,11 +352,11 @@ Column 3 Width=20
|
|||||||
Column 4 Weight=1.0000
|
Column 4 Weight=1.0000
|
||||||
|
|
||||||
[Table][0x2A6000B6,4]
|
[Table][0x2A6000B6,4]
|
||||||
RefScale=13
|
RefScale=14
|
||||||
Column 0 Width=40
|
Column 0 Width=42
|
||||||
Column 1 Width=60
|
Column 1 Width=64
|
||||||
Column 2 Weight=1.0000
|
Column 2 Weight=1.0000
|
||||||
Column 3 Width=100
|
Column 3 Width=107
|
||||||
|
|
||||||
[Table][0x8BCC69C7,6]
|
[Table][0x8BCC69C7,6]
|
||||||
RefScale=13
|
RefScale=13
|
||||||
@@ -354,47 +368,68 @@ Column 4 Weight=1.0000
|
|||||||
Column 5 Width=50
|
Column 5 Width=50
|
||||||
|
|
||||||
[Table][0x3751446B,4]
|
[Table][0x3751446B,4]
|
||||||
RefScale=13
|
RefScale=14
|
||||||
Column 0 Width=40
|
Column 0 Width=42
|
||||||
Column 1 Width=60
|
Column 1 Width=64
|
||||||
Column 2 Weight=1.0000
|
Column 2 Weight=1.0000
|
||||||
Column 3 Width=100
|
Column 3 Width=106
|
||||||
|
|
||||||
[Table][0x2C515046,4]
|
[Table][0x2C515046,4]
|
||||||
RefScale=13
|
RefScale=14
|
||||||
Column 0 Width=57
|
Column 0 Width=61
|
||||||
Column 1 Weight=1.0000
|
Column 1 Weight=1.0000
|
||||||
Column 2 Width=150
|
Column 2 Width=161
|
||||||
Column 3 Width=40
|
Column 3 Width=42
|
||||||
|
|
||||||
[Table][0xD99F45C5,4]
|
[Table][0xD99F45C5,4]
|
||||||
Column 0 Sort=0v
|
Column 0 Sort=0v
|
||||||
|
|
||||||
|
[Table][0x1829A682,7]
|
||||||
|
Column 0 Weight=0.5786
|
||||||
|
Column 1 Weight=1.4145
|
||||||
|
Column 2 Weight=0.9966
|
||||||
|
Column 3 Weight=0.7956
|
||||||
|
Column 4 Weight=1.2055
|
||||||
|
Column 5 Weight=1.0046
|
||||||
|
Column 6 Weight=1.0046
|
||||||
|
|
||||||
|
[Table][0x5386208F,3]
|
||||||
|
RefScale=13
|
||||||
|
Column 0 Width=150
|
||||||
|
Column 1 Width=100
|
||||||
|
Column 2 Weight=1.0000
|
||||||
|
|
||||||
|
[Table][0xA02D8C87,3]
|
||||||
|
RefScale=14
|
||||||
|
Column 0 Width=160
|
||||||
|
Column 1 Width=106
|
||||||
|
Column 2 Weight=1.0000
|
||||||
|
|
||||||
[Docking][Data]
|
[Docking][Data]
|
||||||
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,17 Size=3840,2120 Split=X
|
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,26 Size=3840,2111 Split=X
|
||||||
DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2811,1183 Split=X
|
DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2620,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=824,858 Split=Y Selected=0x8CA2375C
|
DockNode ID=0x00000007 Parent=0x0000000B SizeRef=848,858 Split=Y Selected=0x8CA2375C
|
||||||
DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,961 Selected=0xF4139CA2
|
DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,827 Selected=0x8CA2375C
|
||||||
DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,1157 Split=Y Selected=0x7BD57D6A
|
DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,1286 Split=Y Selected=0x7BD57D6A
|
||||||
DockNode ID=0x00000001 Parent=0x00000006 SizeRef=824,578 CentralNode=1 Selected=0x7BD57D6A
|
DockNode ID=0x00000001 Parent=0x00000006 SizeRef=824,1032 CentralNode=1 Selected=0x7BD57D6A
|
||||||
DockNode ID=0x00000002 Parent=0x00000006 SizeRef=824,577 Selected=0x1DCB2623
|
DockNode ID=0x00000002 Parent=0x00000006 SizeRef=824,252 Selected=0x1DCB2623
|
||||||
DockNode ID=0x0000000E Parent=0x0000000B SizeRef=1985,858 Split=Y Selected=0x418C7449
|
DockNode ID=0x0000000E Parent=0x0000000B SizeRef=1770,858 Split=Y Selected=0x418C7449
|
||||||
DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,1397 Split=X Selected=0x418C7449
|
DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,1466 Split=X Selected=0x418C7449
|
||||||
DockNode ID=0x00000012 Parent=0x00000010 SizeRef=933,402 Selected=0x418C7449
|
DockNode ID=0x00000012 Parent=0x00000010 SizeRef=884,402 Selected=0x418C7449
|
||||||
DockNode ID=0x00000013 Parent=0x00000010 SizeRef=1050,402 Selected=0x6F2B5B04
|
DockNode ID=0x00000013 Parent=0x00000010 SizeRef=884,402 Selected=0x6F2B5B04
|
||||||
DockNode ID=0x00000011 Parent=0x0000000E SizeRef=868,721 Split=X Selected=0x5CDB7A4B
|
DockNode ID=0x00000011 Parent=0x0000000E SizeRef=868,647 Split=X Selected=0x5CDB7A4B
|
||||||
DockNode ID=0x00000014 Parent=0x00000011 SizeRef=873,837 Selected=0x0D5A5273
|
DockNode ID=0x00000014 Parent=0x00000011 SizeRef=306,837 Selected=0xBB346584
|
||||||
DockNode ID=0x00000015 Parent=0x00000011 SizeRef=1110,837 Split=X Selected=0x5CDB7A4B
|
DockNode ID=0x00000015 Parent=0x00000011 SizeRef=1462,837 Split=X Selected=0x5CDB7A4B
|
||||||
DockNode ID=0x00000016 Parent=0x00000015 SizeRef=353,837 Selected=0x390E7942
|
DockNode ID=0x00000016 Parent=0x00000015 SizeRef=550,837 Selected=0x390E7942
|
||||||
DockNode ID=0x00000017 Parent=0x00000015 SizeRef=755,837 Split=X Selected=0x655BC6E9
|
DockNode ID=0x00000017 Parent=0x00000015 SizeRef=910,837 Split=X Selected=0x655BC6E9
|
||||||
DockNode ID=0x00000018 Parent=0x00000017 SizeRef=484,874 Selected=0x655BC6E9
|
DockNode ID=0x00000018 Parent=0x00000017 SizeRef=503,874 Selected=0x655BC6E9
|
||||||
DockNode ID=0x00000019 Parent=0x00000017 SizeRef=269,874 Selected=0x5CDB7A4B
|
DockNode ID=0x00000019 Parent=0x00000017 SizeRef=405,874 Selected=0x5CDB7A4B
|
||||||
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6
|
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6
|
||||||
DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=1027,1183 Selected=0x2C0206CE
|
DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=1218,1183 Selected=0x2C0206CE
|
||||||
|
|
||||||
;;;<<<Layout_655921752_Default>>>;;;
|
;;;<<<Layout_655921752_Default>>>;;;
|
||||||
;;;<<<HelloImGui_Misc>>>;;;
|
;;;<<<HelloImGui_Misc>>>;;;
|
||||||
@@ -404,6 +439,6 @@ Name=Default
|
|||||||
Show=false
|
Show=false
|
||||||
ShowFps=true
|
ShowFps=true
|
||||||
[Theme]
|
[Theme]
|
||||||
Name=SoDark_AccentRed
|
Name=ImGuiColorsClassic
|
||||||
;;;<<<SplitIds>>>;;;
|
;;;<<<SplitIds>>>;;;
|
||||||
{"gImGuiSplitIDs":{"MainDockSpace":2949142533}}
|
{"gImGuiSplitIDs":{"MainDockSpace":2949142533}}
|
||||||
|
|||||||
20
project.toml
20
project.toml
@@ -3,10 +3,6 @@ name = "project"
|
|||||||
git_dir = ""
|
git_dir = ""
|
||||||
system_prompt = ""
|
system_prompt = ""
|
||||||
main_context = ""
|
main_context = ""
|
||||||
word_wrap = true
|
|
||||||
summary_only = false
|
|
||||||
auto_scroll_comms = true
|
|
||||||
auto_scroll_tool_calls = true
|
|
||||||
|
|
||||||
[output]
|
[output]
|
||||||
output_dir = "./md_gen"
|
output_dir = "./md_gen"
|
||||||
@@ -59,19 +55,3 @@ py_set_var_declaration = false
|
|||||||
epic = ""
|
epic = ""
|
||||||
active_track_id = ""
|
active_track_id = ""
|
||||||
tracks = []
|
tracks = []
|
||||||
|
|
||||||
[mma.tier_models."Tier 1"]
|
|
||||||
model = "gemini-3.1-pro-preview"
|
|
||||||
provider = "gemini"
|
|
||||||
|
|
||||||
[mma.tier_models."Tier 2"]
|
|
||||||
model = "gemini-3-flash-preview"
|
|
||||||
provider = "gemini"
|
|
||||||
|
|
||||||
[mma.tier_models."Tier 3"]
|
|
||||||
model = "gemini-2.5-flash-lite"
|
|
||||||
provider = "gemini"
|
|
||||||
|
|
||||||
[mma.tier_models."Tier 4"]
|
|
||||||
model = "gemini-2.5-flash-lite"
|
|
||||||
provider = "gemini"
|
|
||||||
|
|||||||
@@ -6,9 +6,8 @@ roles = [
|
|||||||
"Context",
|
"Context",
|
||||||
]
|
]
|
||||||
active = "main"
|
active = "main"
|
||||||
auto_add = false
|
|
||||||
|
|
||||||
[discussions.main]
|
[discussions.main]
|
||||||
git_commit = ""
|
git_commit = ""
|
||||||
last_updated = "2026-03-08T03:12:45"
|
last_updated = "2026-03-08T22:48:42"
|
||||||
history = []
|
history = []
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ from src import aggregate
|
|||||||
from src import orchestrator_pm
|
from src import orchestrator_pm
|
||||||
from src import conductor_tech_lead
|
from src import conductor_tech_lead
|
||||||
from src import multi_agent_conductor
|
from src import multi_agent_conductor
|
||||||
from src import theme
|
from src import theme_2 as theme
|
||||||
|
|
||||||
def hide_tk_root() -> Tk:
|
def hide_tk_root() -> Tk:
|
||||||
root = Tk()
|
root = Tk()
|
||||||
@@ -744,6 +744,7 @@ class AppController:
|
|||||||
def init_state(self):
|
def init_state(self):
|
||||||
"""Initializes the application state from configurations."""
|
"""Initializes the application state from configurations."""
|
||||||
self.config = models.load_config()
|
self.config = models.load_config()
|
||||||
|
theme.load_from_config(self.config)
|
||||||
ai_cfg = self.config.get("ai", {})
|
ai_cfg = self.config.get("ai", {})
|
||||||
self._current_provider = ai_cfg.get("provider", "gemini")
|
self._current_provider = ai_cfg.get("provider", "gemini")
|
||||||
self._current_model = ai_cfg.get("model", "gemini-2.5-flash-lite")
|
self._current_model = ai_cfg.get("model", "gemini-2.5-flash-lite")
|
||||||
@@ -2085,14 +2086,18 @@ class AppController:
|
|||||||
self.config["ai"]["system_prompt"] = self.ui_global_system_prompt
|
self.config["ai"]["system_prompt"] = self.ui_global_system_prompt
|
||||||
self.config["projects"] = {"paths": self.project_paths, "active": self.active_project_path}
|
self.config["projects"] = {"paths": self.project_paths, "active": self.active_project_path}
|
||||||
from src import bg_shader
|
from src import bg_shader
|
||||||
self.config["gui"] = {
|
# Update gui section while preserving other keys like bg_shader_enabled
|
||||||
|
gui_cfg = self.config.get("gui", {})
|
||||||
|
gui_cfg.update({
|
||||||
"show_windows": self.show_windows,
|
"show_windows": self.show_windows,
|
||||||
"separate_message_panel": getattr(self, "ui_separate_message_panel", False),
|
"separate_message_panel": getattr(self, "ui_separate_message_panel", False),
|
||||||
"separate_response_panel": getattr(self, "ui_separate_response_panel", False),
|
"separate_response_panel": getattr(self, "ui_separate_response_panel", False),
|
||||||
"separate_tool_calls_panel": getattr(self, "ui_separate_tool_calls_panel", False),
|
"separate_tool_calls_panel": getattr(self, "ui_separate_tool_calls_panel", False),
|
||||||
"bg_shader_enabled": bg_shader.get_bg().enabled
|
"bg_shader_enabled": bg_shader.get_bg().enabled
|
||||||
}
|
})
|
||||||
# Explicitly call theme save to ensure self.config is updated
|
self.config["gui"] = gui_cfg
|
||||||
|
|
||||||
|
# Explicitly save theme state into the config dict
|
||||||
theme.save_to_config(self.config)
|
theme.save_to_config(self.config)
|
||||||
|
|
||||||
def _do_generate(self) -> tuple[str, Path, list[dict[str, Any]], str, str]:
|
def _do_generate(self) -> tuple[str, Path, list[dict[str, Any]], str, str]:
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ def load_config() -> dict[str, Any]:
|
|||||||
|
|
||||||
def save_config(config: dict[str, Any]) -> None:
|
def save_config(config: dict[str, Any]) -> None:
|
||||||
import tomli_w
|
import tomli_w
|
||||||
|
import sys
|
||||||
|
sys.stderr.write(f"[DEBUG] Saving config. Theme: {config.get('theme')}\n")
|
||||||
|
sys.stderr.flush()
|
||||||
with open(CONFIG_PATH, "wb") as f:
|
with open(CONFIG_PATH, "wb") as f:
|
||||||
tomli_w.dump(config, f)
|
tomli_w.dump(config, f)
|
||||||
|
|
||||||
|
|||||||
@@ -334,6 +334,7 @@ def set_scale(factor: float) -> None:
|
|||||||
|
|
||||||
def save_to_config(config: dict) -> None:
|
def save_to_config(config: dict) -> None:
|
||||||
"""Persist theme settings into the config dict under [theme]."""
|
"""Persist theme settings into the config dict under [theme]."""
|
||||||
|
import sys
|
||||||
config.setdefault("theme", {})
|
config.setdefault("theme", {})
|
||||||
config["theme"]["palette"] = _current_palette
|
config["theme"]["palette"] = _current_palette
|
||||||
config["theme"]["font_path"] = _current_font_path
|
config["theme"]["font_path"] = _current_font_path
|
||||||
@@ -341,11 +342,16 @@ def save_to_config(config: dict) -> None:
|
|||||||
config["theme"]["scale"] = _current_scale
|
config["theme"]["scale"] = _current_scale
|
||||||
config["theme"]["transparency"] = _transparency
|
config["theme"]["transparency"] = _transparency
|
||||||
config["theme"]["child_transparency"] = _child_transparency
|
config["theme"]["child_transparency"] = _child_transparency
|
||||||
|
sys.stderr.write(f"[DEBUG theme_2] save_to_config: palette={_current_palette}, transparency={_transparency}\n")
|
||||||
|
sys.stderr.flush()
|
||||||
|
|
||||||
def load_from_config(config: dict) -> None:
|
def load_from_config(config: dict) -> None:
|
||||||
"""Read [theme] from config. Font is handled separately at startup."""
|
"""Read [theme] from config. Font is handled separately at startup."""
|
||||||
|
import sys
|
||||||
global _current_font_path, _current_font_size, _current_scale, _current_palette, _transparency, _child_transparency
|
global _current_font_path, _current_font_size, _current_scale, _current_palette, _transparency, _child_transparency
|
||||||
t = config.get("theme", {})
|
t = config.get("theme", {})
|
||||||
|
sys.stderr.write(f"[DEBUG theme_2] load_from_config raw: {t}\n")
|
||||||
|
sys.stderr.flush()
|
||||||
_current_palette = t.get("palette", "10x Dark")
|
_current_palette = t.get("palette", "10x Dark")
|
||||||
if _current_palette in ("", "DPG Default"):
|
if _current_palette in ("", "DPG Default"):
|
||||||
_current_palette = "10x Dark"
|
_current_palette = "10x Dark"
|
||||||
@@ -355,6 +361,8 @@ def load_from_config(config: dict) -> None:
|
|||||||
_current_scale = float(t.get("scale", 1.0))
|
_current_scale = float(t.get("scale", 1.0))
|
||||||
_transparency = float(t.get("transparency", 1.0))
|
_transparency = float(t.get("transparency", 1.0))
|
||||||
_child_transparency = float(t.get("child_transparency", 1.0))
|
_child_transparency = float(t.get("child_transparency", 1.0))
|
||||||
|
sys.stderr.write(f"[DEBUG theme_2] load_from_config effective: palette={_current_palette}, transparency={_transparency}\n")
|
||||||
|
sys.stderr.flush()
|
||||||
|
|
||||||
def apply_current() -> None:
|
def apply_current() -> None:
|
||||||
"""Apply the loaded palette and scale. Call after imgui context exists."""
|
"""Apply the loaded palette and scale. Call after imgui context exists."""
|
||||||
|
|||||||
Reference in New Issue
Block a user