From 95381c258c712423eb1a37da6405ab3c38160514 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 9 Mar 2026 22:35:52 -0400 Subject: [PATCH] chore(conductor): Mark track 'Saved System Prompt Presets' as complete --- conductor/tracks.md | 2 +- .../tracks/saved_presets_20260308/plan.md | 28 +- config.toml | 9 +- manualslop_layout.ini | 134 +- mock_debug_prompt.txt | 1486 +++++++++++++++++ src/app_controller.py | 85 +- src/gui_2.py | 32 +- src/presets.py | 38 +- tests/test_saved_presets_sim.py | 73 +- 9 files changed, 1729 insertions(+), 158 deletions(-) diff --git a/conductor/tracks.md b/conductor/tracks.md index 2f13d30..2f29c58 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -85,7 +85,7 @@ This file tracks all major tracks for the project. Each track has its own detail ### Manual UX Controls -1. [~] **Track: Saved System Prompt Presets** +1. [x] **Track: Saved System Prompt Presets** *Link: [./tracks/saved_presets_20260308/](./tracks/saved_presets_20260308/)* *Goal: Ability to have saved presets for global and project system prompts. Includes full AI profiles with temperature and top_p settings, managed via a dedicated GUI modal.* diff --git a/conductor/tracks/saved_presets_20260308/plan.md b/conductor/tracks/saved_presets_20260308/plan.md index 5d35c57..36b3101 100644 --- a/conductor/tracks/saved_presets_20260308/plan.md +++ b/conductor/tracks/saved_presets_20260308/plan.md @@ -28,19 +28,19 @@ - [x] Task: Conductor - User Manual Verification 'Phase 2: UI: Settings Integration' (Protocol in workflow.md) ## Phase 3: UI: Preset Manager Modal -- [~] Task: Create the `PresetManagerModal` in `gui_2.py` (or a separate module). - - [ ] Implement a list view of all presets (global and project). - - [ ] Implement "Add", "Edit", and "Delete" functionality. - - [ ] Ensure validation for unique names. -- [ ] Task: Add a button to open the manager modal from the settings panels. -- [ ] Task: Write integration tests for the Preset Manager using `live_gui`. - - [ ] Verify creating a new preset adds it to the list and dropdown. - - [ ] Verify editing an existing preset updates it correctly. - - [ ] Verify deleting a preset removes it from the list and dropdown. -- [ ] Task: Conductor - User Manual Verification 'Phase 3: UI: Preset Manager Modal' (Protocol in workflow.md) +- [x] Task: Create the `PresetManagerModal` in `gui_2.py` (or a separate module). + - [x] Implement a list view of all presets (global and project). + - [x] Implement "Add", "Edit", and "Delete" functionality. + - [x] Ensure validation for unique names. +- [x] Task: Add a button to open the manager modal from the settings panels. +- [x] Task: Write integration tests for the Preset Manager using `live_gui`. + - [x] Verify creating a new preset adds it to the list and dropdown. + - [x] Verify editing an existing preset updates it correctly. + - [x] Verify deleting a preset removes it from the list and dropdown. +- [x] Task: Conductor - User Manual Verification 'Phase 3: UI: Preset Manager Modal' (Protocol in workflow.md) ## Phase 4: Final Integration & Polish -- [ ] Task: Ensure robust error handling for missing or malformed `.toml` files. -- [ ] Task: Final UI polish (spacing, icons, tooltips). -- [ ] Task: Run full suite of relevant tests. -- [ ] Task: Conductor - User Manual Verification 'Phase 4: Final Integration & Polish' (Protocol in workflow.md) +- [x] Task: Ensure robust error handling for missing or malformed `.toml` files. +- [x] Task: Final UI polish (spacing, icons, tooltips). +- [x] Task: Run full suite of relevant tests. +- [x] Task: Conductor - User Manual Verification 'Phase 4: Final Integration & Polish' (Protocol in workflow.md) diff --git a/config.toml b/config.toml index 92d9bf2..e5da747 100644 --- a/config.toml +++ b/config.toml @@ -22,6 +22,7 @@ separate_message_panel = false separate_response_panel = false separate_tool_calls_panel = false bg_shader_enabled = true +crt_filter_enabled = false [gui.show_windows] "Context Hub" = true @@ -39,15 +40,15 @@ Response = false "Tool Calls" = false Theme = true "Log Management" = true -Diagnostics = false +Diagnostics = true [theme] palette = "Nord Dark" font_path = "C:/projects/manual_slop/assets/fonts/Inter-Regular.ttf" font_size = 12.0 -scale = 1.25 -transparency = 0.6499999761581421 -child_transparency = 0.7200000286102295 +scale = 1.2999999523162842 +transparency = 0.550000011920929 +child_transparency = 0.6399999856948853 [mma] max_workers = 4 diff --git a/manualslop_layout.ini b/manualslop_layout.ini index 2830f47..a603074 100644 --- a/manualslop_layout.ini +++ b/manualslop_layout.ini @@ -44,12 +44,12 @@ Collapsed=0 DockId=0x00000001,0 [Window][Message] -Pos=1005,726 +Pos=1890,1100 Size=1065,548 Collapsed=0 [Window][Response] -Pos=1009,1217 +Pos=2086,1780 Size=1036,351 Collapsed=0 @@ -73,8 +73,8 @@ Collapsed=0 DockId=0xAFC85805,2 [Window][Theme] -Pos=0,26 -Size=848,827 +Pos=0,30 +Size=762,943 Collapsed=0 DockId=0x00000005,1 @@ -84,14 +84,14 @@ Size=900,700 Collapsed=0 [Window][Diagnostics] -Pos=2622,27 -Size=1218,2110 +Pos=2674,26 +Size=1166,1678 Collapsed=0 -DockId=0x00000004,1 +DockId=0x0000000C,2 [Window][Context Hub] -Pos=0,26 -Size=848,827 +Pos=0,30 +Size=762,943 Collapsed=0 DockId=0x00000005,0 @@ -102,26 +102,26 @@ Collapsed=0 DockId=0x0000000D,0 [Window][Discussion Hub] -Pos=1736,26 -Size=884,1463 +Pos=1668,30 +Size=1004,2107 Collapsed=0 DockId=0x00000013,0 [Window][Operations Hub] -Pos=850,26 -Size=884,1463 +Pos=764,30 +Size=902,2107 Collapsed=0 DockId=0x00000012,0 [Window][Files & Media] -Pos=0,1885 -Size=848,252 +Pos=0,1849 +Size=762,288 Collapsed=0 DockId=0x00000002,0 [Window][AI Settings] -Pos=0,855 -Size=848,1028 +Pos=0,975 +Size=762,872 Collapsed=0 DockId=0x00000001,0 @@ -131,16 +131,16 @@ Size=416,325 Collapsed=0 [Window][MMA Dashboard] -Pos=2622,26 -Size=1218,2111 +Pos=2674,30 +Size=1166,1675 Collapsed=0 -DockId=0x00000004,1 +DockId=0x0000000C,0 [Window][Log Management] -Pos=2622,26 -Size=1218,2111 +Pos=2674,30 +Size=1166,1675 Collapsed=0 -DockId=0x00000004,0 +DockId=0x0000000C,1 [Window][Track Proposal] Pos=709,326 @@ -148,28 +148,28 @@ Size=262,209 Collapsed=0 [Window][Tier 1: Strategy] -Pos=850,1491 -Size=306,646 +Pos=2674,1707 +Size=1166,430 Collapsed=0 -DockId=0x00000014,0 +DockId=0x0000000F,0 [Window][Tier 2: Tech Lead] -Pos=1158,1491 -Size=550,646 +Pos=2674,1707 +Size=1166,430 Collapsed=0 -DockId=0x00000016,0 +DockId=0x0000000F,1 [Window][Tier 4: QA] -Pos=2215,1491 -Size=405,646 +Pos=2674,1707 +Size=1166,430 Collapsed=0 -DockId=0x00000019,0 +DockId=0x0000000F,2 [Window][Tier 3: Workers] -Pos=1710,1491 -Size=503,646 +Pos=764,30 +Size=902,2107 Collapsed=0 -DockId=0x00000018,0 +DockId=0x00000012,1 [Window][Approve PowerShell Command] Pos=649,435 @@ -352,11 +352,11 @@ Column 3 Width=20 Column 4 Weight=1.0000 [Table][0x2A6000B6,4] -RefScale=14 -Column 0 Width=42 -Column 1 Width=64 +RefScale=18 +Column 0 Width=54 +Column 1 Width=82 Column 2 Weight=1.0000 -Column 3 Width=107 +Column 3 Width=137 [Table][0x8BCC69C7,6] RefScale=13 @@ -375,11 +375,11 @@ Column 2 Weight=1.0000 Column 3 Width=106 [Table][0x2C515046,4] -RefScale=14 -Column 0 Width=61 +RefScale=18 +Column 0 Width=58 Column 1 Weight=1.0000 -Column 2 Width=161 -Column 3 Width=42 +Column 2 Width=138 +Column 3 Width=54 [Table][0xD99F45C5,4] Column 0 Sort=0v @@ -400,36 +400,30 @@ Column 1 Width=100 Column 2 Weight=1.0000 [Table][0xA02D8C87,3] -RefScale=14 -Column 0 Width=160 -Column 1 Width=106 +RefScale=16 +Column 0 Width=182 +Column 1 Width=120 Column 2 Weight=1.0000 [Docking][Data] -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=3840,2111 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=0x00000007 Parent=0x0000000B SizeRef=848,858 Split=Y Selected=0x8CA2375C - DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,827 Selected=0x8CA2375C - DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,1286 Split=Y Selected=0x7BD57D6A - DockNode ID=0x00000001 Parent=0x00000006 SizeRef=824,1032 CentralNode=1 Selected=0x7BD57D6A - DockNode ID=0x00000002 Parent=0x00000006 SizeRef=824,252 Selected=0x1DCB2623 - DockNode ID=0x0000000E Parent=0x0000000B SizeRef=1770,858 Split=Y Selected=0x418C7449 - DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,1466 Split=X Selected=0x418C7449 - DockNode ID=0x00000012 Parent=0x00000010 SizeRef=884,402 Selected=0x418C7449 - DockNode ID=0x00000013 Parent=0x00000010 SizeRef=884,402 Selected=0x6F2B5B04 - DockNode ID=0x00000011 Parent=0x0000000E SizeRef=868,647 Split=X Selected=0x5CDB7A4B - DockNode ID=0x00000014 Parent=0x00000011 SizeRef=306,837 Selected=0xBB346584 - DockNode ID=0x00000015 Parent=0x00000011 SizeRef=1462,837 Split=X Selected=0x5CDB7A4B - DockNode ID=0x00000016 Parent=0x00000015 SizeRef=550,837 Selected=0x390E7942 - DockNode ID=0x00000017 Parent=0x00000015 SizeRef=910,837 Split=X Selected=0x655BC6E9 - DockNode ID=0x00000018 Parent=0x00000017 SizeRef=503,874 Selected=0x655BC6E9 - DockNode ID=0x00000019 Parent=0x00000017 SizeRef=405,874 Selected=0x5CDB7A4B - DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6 - DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=1218,1183 Selected=0x2C0206CE +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,30 Size=3840,2107 Split=X + DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2672,1183 Split=X + DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2 + DockNode ID=0x00000007 Parent=0x0000000B SizeRef=762,858 Split=Y Selected=0x8CA2375C + DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,943 Selected=0xF4139CA2 + DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,1168 Split=Y Selected=0x7BD57D6A + DockNode ID=0x00000001 Parent=0x00000006 SizeRef=824,872 CentralNode=1 Selected=0x7BD57D6A + DockNode ID=0x00000002 Parent=0x00000006 SizeRef=824,288 Selected=0x1DCB2623 + DockNode ID=0x0000000E Parent=0x0000000B SizeRef=1908,858 Split=X Selected=0x418C7449 + DockNode ID=0x00000012 Parent=0x0000000E SizeRef=902,402 Selected=0x418C7449 + DockNode ID=0x00000013 Parent=0x0000000E SizeRef=1004,402 Selected=0x6F2B5B04 + DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6 + DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=1166,1183 Split=Y Selected=0x3AEC3498 + DockNode ID=0x0000000C Parent=0x00000004 SizeRef=1074,1679 Selected=0x2C0206CE + DockNode ID=0x0000000F Parent=0x00000004 SizeRef=1074,431 Selected=0x5CDB7A4B ;;;<<>>;;; ;;;<<>>;;; diff --git a/mock_debug_prompt.txt b/mock_debug_prompt.txt index 2ec238e..72e15cd 100644 --- a/mock_debug_prompt.txt +++ b/mock_debug_prompt.txt @@ -861,3 +861,1489 @@ PROMPT: role: tool Here are the results: {"content": "done"} ------------------ +--- MOCK INVOKED --- +ARGS: ['tests/mock_gemini_cli.py'] +PROMPT: +PATH: Epic Initialization — please produce tracks +------------------ +--- MOCK INVOKED --- +ARGS: ['tests/mock_gemini_cli.py'] +PROMPT: +Please generate the implementation tickets for this track. +------------------ +--- MOCK INVOKED --- +ARGS: ['tests/mock_gemini_cli.py'] +PROMPT: +Please read test.txt +You are assigned to Ticket T1. +Task Description: do something +------------------ +--- MOCK INVOKED --- +ARGS: ['tests/mock_gemini_cli.py'] +PROMPT: +role: tool +Here are the results: {"content": "done"} +------------------ +--- MOCK INVOKED --- +ARGS: ['C:\\projects\\manual_slop\\tests\\mock_gemini_cli.py', '-m', 'gemini-2.5-flash-lite', '--prompt', '', '--output-format', 'stream-json'] +PROMPT: +You are a helpful coding assistant with access to a PowerShell tool (run_powershell) and MCP tools (file access: read_file, list_directory, search_files, get_file_summary, web access: web_search, fetch_url). When calling file/directory tools, always use the 'path' parameter for the target path. When asked to create or edit files, prefer targeted edits over full rewrites. Always explain what you are doing before invoking the tool. + +When writing or rewriting large files (especially those containing quotes, backticks, or special characters), avoid python -c with inline strings. Instead: (1) write a .py helper script to disk using a PS here-string (@'...'@ for literal content), (2) run it with `python