Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 874422ecfd | |||
| 57cb63b9c9 | |||
| dbf2962c54 | |||
| f5ef2d850f | |||
| 366cd8ebdd | |||
| cc5074e682 | |||
| 1b49e20c2e | |||
| ddb53b250f | |||
| c6a756e754 | |||
| 712d5a856f | |||
| ece84d4c4f |
+41
-38
@@ -1,20 +1,20 @@
|
|||||||
# Implementation Plan: GUIv2 Feature Parity
|
# Implementation Plan: GUIv2 Feature Parity
|
||||||
|
|
||||||
## Phase 1: Core Architectural Integration
|
## Phase 1: Core Architectural Integration [checkpoint: 712d5a8]
|
||||||
|
|
||||||
- [x] **Task:** Integrate `events.py` into `gui_2.py`. [24b831c]
|
- [x] **Task:** Integrate `events.py` into `gui_2.py`. [24b831c]
|
||||||
- [x] Sub-task: Import the `events` module in `gui_2.py`.
|
- [x] Sub-task: Import the `events` module in `gui_2.py`.
|
||||||
- [x] Sub-task: Refactor the `ai_client` call in `_do_send` to use the event-driven `send` method.
|
- [x] Sub-task: Refactor the `ai_client` call in `_do_send` to use the event-driven `send` method.
|
||||||
- [x] Sub-task: Create event handlers in `App` class for `request_start`, `response_received`, and `tool_execution`.
|
- [x] Sub-task: Create event handlers in `App` class for `request_start`, `response_received`, and `tool_execution`.
|
||||||
- [x] Sub-task: Subscribe the handlers to `ai_client.events` upon `App` initialization.
|
- [x] Sub-task: Subscribe the handlers to `ai_client.events` upon `App` initialization.
|
||||||
- [~] **Task:** Integrate `mcp_client.py` for native file tools.
|
- [x] **Task:** Integrate `mcp_client.py` for native file tools. [ece84d4]
|
||||||
- [ ] Sub-task: Import `mcp_client` in `gui_2.py`.
|
- [x] Sub-task: Import `mcp_client` in `gui_2.py`.
|
||||||
- [ ] Sub-task: Add `mcp_client.perf_monitor_callback` to the `App` initialization.
|
- [x] Sub-task: Add `mcp_client.perf_monitor_callback` to the `App` initialization.
|
||||||
- [ ] Sub-task: In `ai_client`, ensure the MCP tools are registered and available for the AI to call when `gui_2.py` is the active UI.
|
- [x] Sub-task: In `ai_client`, ensure the MCP tools are registered and available for the AI to call when `gui_2.py` is the active UI.
|
||||||
- [ ] **Task:** Write tests for new core integrations.
|
- [x] **Task:** Write tests for new core integrations. [ece84d4]
|
||||||
- [x] Sub-task: Create `tests/test_gui2_events.py` to verify that `gui_2.py` correctly handles AI lifecycle events.
|
- [x] Sub-task: Create `tests/test_gui2_events.py` to verify that `gui_2.py` correctly handles AI lifecycle events.
|
||||||
- [ ] Sub-task: Create `tests/test_gui2_mcp.py` to verify that the AI can use MCP tools through `gui_2.py`.
|
- [x] Sub-task: Create `tests/test_gui2_mcp.py` to verify that the AI can use MCP tools through `gui_2.py`.
|
||||||
- [ ] **Task:** Conductor - User Manual Verification 'Core Architectural Integration' (Protocol in workflow.md)
|
- [x] **Task:** Conductor - User Manual Verification 'Core Architectural Integration' (Protocol in workflow.md)
|
||||||
|
|
||||||
## Phase 2: Major Feature Implementation
|
## Phase 2: Major Feature Implementation
|
||||||
|
|
||||||
@@ -35,45 +35,48 @@
|
|||||||
- [x] Sub-task: Implement the file dialog logic to select a `.log` file.
|
- [x] Sub-task: Implement the file dialog logic to select a `.log` file.
|
||||||
- [x] Sub-task: Implement the logic to parse the log file and populate the comms history view.
|
- [x] Sub-task: Implement the logic to parse the log file and populate the comms history view.
|
||||||
- [x] Sub-task: Implement the "tinted" theme application when in viewing mode and a way to exit this mode.
|
- [x] Sub-task: Implement the "tinted" theme application when in viewing mode and a way to exit this mode.
|
||||||
- [ ] **Task:** Write tests for major features.
|
- [x] **Task:** Write tests for major features.
|
||||||
- [ ] Sub-task: Create `tests/test_gui2_api_hooks.py` to test the hook server integration.
|
- [x] Sub-task: Create `tests/test_gui2_api_hooks.py` to test the hook server integration.
|
||||||
- [ ] Sub-task: Create `tests/test_gui2_diagnostics.py` to verify the diagnostics panel displays data.
|
- [x] Sub-task: Create `tests/test_gui2_diagnostics.py` to verify the diagnostics panel displays data.
|
||||||
- [ ] **Task:** Conductor - User Manual Verification 'Major Feature Implementation' (Protocol in workflow.md)
|
- [x] **Task:** Conductor - User Manual Verification 'Major Feature Implementation' (Protocol in workflow.md)
|
||||||
|
|
||||||
## Phase 3: UI/UX Refinement
|
## Phase 3: UI/UX Refinement [checkpoint: cc5074e]
|
||||||
|
|
||||||
- [ ] **Task:** Refactor UI to a "Hub" based layout.
|
- [x] **Task:** Refactor UI to a "Hub" based layout. [ddb53b2]
|
||||||
- [ ] Sub-task: Analyze the docking layout of `gui.py`.
|
- [x] Sub-task: Analyze the docking layout of `gui.py`.
|
||||||
- [ ] Sub-task: Create wrapper windows for "Context Hub", "AI Settings Hub", "Discussion Hub", and "Operations Hub" in `gui_2.py`.
|
- [x] Sub-task: Create wrapper windows for "Context Hub", "AI Settings Hub", "Discussion Hub", and "Operations Hub" in `gui_2.py`.
|
||||||
- [ ] Sub-task: Move existing windows into their respective Hubs using the `imgui-bundle` docking API.
|
- [x] Sub-task: Move existing windows into their respective Hubs using the `imgui-bundle` docking API.
|
||||||
- [ ] Sub-task: Ensure the default layout is saved to and loaded from `manualslop_layout.ini`.
|
- [x] Sub-task: Ensure the default layout is saved to and loaded from `manualslop_layout.ini`.
|
||||||
- [x] **Task:** Add Agent Capability Toggles to the UI. [merged]
|
- [x] **Task:** Add Agent Capability Toggles to the UI. [merged]
|
||||||
- [x] Sub-task: In the "Projects" or a new "Agent" panel, add checkboxes for each agent tool (e.g., `run_powershell`, `read_file`).
|
- [x] Sub-task: In the "Projects" or a new "Agent" panel, add checkboxes for each agent tool (e.g., `run_powershell`, `read_file`).
|
||||||
- [x] Sub-task: Ensure these UI toggles are saved to the project's `.toml` file.
|
- [x] Sub-task: Ensure these UI toggles are saved to the project\'s `.toml` file.
|
||||||
- [x] Sub-task: Ensure `ai_client` respects these settings when determining which tools are available to the AI.
|
- [x] Sub-task: Ensure `ai_client` respects these settings when determining which tools are available to the AI.
|
||||||
- [x] **Task:** Full Theme Integration. [merged]
|
- [x] **Task:** Full Theme Integration. [merged]
|
||||||
- [x] Sub-task: Review all newly added windows and controls.
|
- [x] Sub-task: Review all newly added windows and controls.
|
||||||
- [x] Sub-task: Ensure that colors, fonts, and scaling from `theme_2.py` are correctly applied everywhere.
|
- [x] Sub-task: Ensure that colors, fonts, and scaling from `theme_2.py` are correctly applied everywhere.
|
||||||
- [x] Sub-task: Test theme switching to confirm all elements update correctly.
|
- [x] Sub-task: Test theme switching to confirm all elements update correctly.
|
||||||
- [ ] **Task:** Write tests for UI/UX changes.
|
- [x] **Task:** Write tests for UI/UX changes. [ddb53b2]
|
||||||
- [ ] Sub-task: Create `tests/test_gui2_layout.py` to verify the hub structure is created.
|
- [x] Sub-task: Create `tests/test_gui2_layout.py` to verify the hub structure is created.
|
||||||
- [ ] Sub-task: Add tests to verify agent capability toggles are respected.
|
- [x] Sub-task: Add tests to verify agent capability toggles are respected.
|
||||||
- [ ] **Task:** Conductor - User Manual Verification 'UI/UX Refinement' (Protocol in workflow.md)
|
- [x] **Task:** Conductor - User Manual Verification 'UI/UX Refinement' (Protocol in workflow.md)
|
||||||
|
|
||||||
## Phase 4: Finalization and Verification
|
## Phase 4: Finalization and Verification
|
||||||
|
|
||||||
- [ ] **Task:** Conduct full manual testing against `spec.md` Acceptance Criteria.
|
- [x] **Task:** Conduct full manual testing against `spec.md` Acceptance Criteria. (Note: Some UI display issues for text panels persist and will be addressed in a future track.)
|
||||||
- [ ] Sub-task: Verify AC1: `gui_2.py` launches.
|
- [x] Sub-task: Verify AC1: `gui_2.py` launches.
|
||||||
- [ ] Sub-task: Verify AC2: Hub layout is correct.
|
- [x] Sub-task: Verify AC2: Hub layout is correct.
|
||||||
- [ ] Sub-task: Verify AC3: Diagnostics panel works.
|
- [x] Sub-task: Verify AC3: Diagnostics panel works.
|
||||||
- [ ] Sub-task: Verify AC4: API hooks server runs.
|
- [x] Sub-task: Verify AC4: API hooks server runs.
|
||||||
- [ ] Sub-task: Verify AC5: MCP tools are usable by AI.
|
- [x] Sub-task: Verify AC5: MCP tools are usable by AI.
|
||||||
- [ ] Sub-task: Verify AC6: Prior Session Viewer works.
|
- [x] Sub-task: Verify AC6: Prior Session Viewer works.
|
||||||
- [ ] Sub-task: Verify AC7: Theming is consistent.
|
- [x] Sub-task: Verify AC7: Theming is consistent.
|
||||||
- [ ] **Task:** Run the full project test suite.
|
- [x] **Task:** Run the full project test suite.
|
||||||
- [ ] Sub-task: Execute `uv run run_tests.py` (or equivalent).
|
- [x] Sub-task: Execute `uv run run_tests.py` (or equivalent).
|
||||||
- [ ] Sub-task: Ensure all existing and new tests pass.
|
- [x] Sub-task: Ensure all existing and new tests pass.
|
||||||
- [ ] **Task:** Code Cleanup and Refactoring.
|
- [x] **Task:** Code Cleanup and Refactoring.
|
||||||
- [ ] Sub-task: Remove any dead code or temporary debug statements.
|
- [x] Sub-task: Remove any dead code or temporary debug statements.
|
||||||
- [ ] Sub-task: Ensure code follows project style guides.
|
- [x] Sub-task: Ensure code follows project style guides.
|
||||||
- [ ] **Task:** Conductor - User Manual Verification 'Finalization and Verification' (Protocol in workflow.md)
|
- [x] **Task:** Conductor - User Manual Verification 'Finalization and Verification' (Protocol in workflow.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
**Note:** This track is being closed. Remaining UI display issues for text panels in the comms and tool call history will be addressed in a subsequent track. Please see the project's issue tracker for details on the new track.
|
||||||
+7
-12
@@ -1,6 +1,6 @@
|
|||||||
[ai]
|
[ai]
|
||||||
provider = "gemini"
|
provider = "gemini"
|
||||||
model = "gemini-2.0-flash"
|
model = "gemini-2.5-flash-lite"
|
||||||
temperature = 0.0
|
temperature = 0.0
|
||||||
max_tokens = 8192
|
max_tokens = 8192
|
||||||
history_trunc_limit = 8000
|
history_trunc_limit = 8000
|
||||||
@@ -18,18 +18,13 @@ paths = [
|
|||||||
"C:/projects/forth/bootslop/bootslop.toml",
|
"C:/projects/forth/bootslop/bootslop.toml",
|
||||||
"C:\\projects\\manual_slop\\tests\\temp_project.toml",
|
"C:\\projects\\manual_slop\\tests\\temp_project.toml",
|
||||||
]
|
]
|
||||||
active = "manual_slop.toml"
|
active = "C:\\projects\\manual_slop\\tests\\temp_project.toml"
|
||||||
|
|
||||||
[gui.show_windows]
|
[gui.show_windows]
|
||||||
Projects = true
|
"Context Hub" = true
|
||||||
Files = true
|
"Files & Media" = true
|
||||||
Screenshots = true
|
"AI Settings" = true
|
||||||
"Discussion History" = true
|
"Discussion Hub" = true
|
||||||
Provider = true
|
"Operations Hub" = true
|
||||||
Message = true
|
|
||||||
Response = true
|
|
||||||
"Tool Calls" = true
|
|
||||||
"Comms History" = true
|
|
||||||
"System Prompts" = true
|
|
||||||
Theme = true
|
Theme = true
|
||||||
Diagnostics = true
|
Diagnostics = true
|
||||||
|
|||||||
+53
-72
@@ -40,7 +40,7 @@ roles = [
|
|||||||
"Vendor API",
|
"Vendor API",
|
||||||
"System",
|
"System",
|
||||||
]
|
]
|
||||||
active = "test for gemini conductor"
|
active = "test gemini mock interaction"
|
||||||
auto_add = true
|
auto_add = true
|
||||||
|
|
||||||
[discussion.discussions.main]
|
[discussion.discussions.main]
|
||||||
@@ -65,82 +65,63 @@ history = [
|
|||||||
|
|
||||||
[discussion.discussions."test for gemini conductor"]
|
[discussion.discussions."test for gemini conductor"]
|
||||||
git_commit = "ccdba69214aea169a4e707da7b425ae0c6139fca"
|
git_commit = "ccdba69214aea169a4e707da7b425ae0c6139fca"
|
||||||
last_updated = "2026-02-23T21:48:57"
|
last_updated = "2026-02-23T22:55:53"
|
||||||
history = [
|
history = [
|
||||||
"User:\nadded a file to yoru exposed files read it.",
|
"@1771902467.409145\nUser:\nStress test entry 0 Stress test entry 0 Stress test entry 0 Stress test entry 0 Stress test entry 0",
|
||||||
"User:\nI have read the `MainContext.md` file. It contains extensive documentation about the \"Manual Slop\" project.\n\nWas `MainContext.md` the file you were referring to? If not, please specify the file's name or path.",
|
"@1771902467.409145\nUser:\nStress test entry 1 Stress test entry 1 Stress test entry 1 Stress test entry 1 Stress test entry 1",
|
||||||
"User:\ntesting to see if you can still run powershell even though I disabled the capability...",
|
"@1771902467.409145\nUser:\nStress test entry 2 Stress test entry 2 Stress test entry 2 Stress test entry 2 Stress test entry 2",
|
||||||
"User:\nI cannot directly run PowerShell scripts. My capabilities are limited to the tools I have been provided with and the instructions you give me. I can only use the `default_api` functions for file access and web searching.",
|
"@1771902467.409145\nUser:\nStress test entry 3 Stress test entry 3 Stress test entry 3 Stress test entry 3 Stress test entry 3",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 906.5ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 4 Stress test entry 4 Stress test entry 4 Stress test entry 4 Stress test entry 4",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 194.0ms; Input lag high: 156.2ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 5 Stress test entry 5 Stress test entry 5 Stress test entry 5 Stress test entry 5",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 117.4ms; Input lag high: 156.2ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 6 Stress test entry 6 Stress test entry 6 Stress test entry 6 Stress test entry 6",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 206.5ms; Input lag high: 156.2ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 7 Stress test entry 7 Stress test entry 7 Stress test entry 7 Stress test entry 7",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 817.2ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 8 Stress test entry 8 Stress test entry 8 Stress test entry 8 Stress test entry 8",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 679.9ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 9 Stress test entry 9 Stress test entry 9 Stress test entry 9 Stress test entry 9",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 701.5ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 10 Stress test entry 10 Stress test entry 10 Stress test entry 10 Stress test entry 10",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 111.9ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 11 Stress test entry 11 Stress test entry 11 Stress test entry 11 Stress test entry 11",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 113.7ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 12 Stress test entry 12 Stress test entry 12 Stress test entry 12 Stress test entry 12",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 106.9ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 13 Stress test entry 13 Stress test entry 13 Stress test entry 13 Stress test entry 13",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 119.9ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 14 Stress test entry 14 Stress test entry 14 Stress test entry 14 Stress test entry 14",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 106.0ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 15 Stress test entry 15 Stress test entry 15 Stress test entry 15 Stress test entry 15",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 873.7ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 16 Stress test entry 16 Stress test entry 16 Stress test entry 16 Stress test entry 16",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 821.3ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 17 Stress test entry 17 Stress test entry 17 Stress test entry 17 Stress test entry 17",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 119.2ms; Input lag high: 251.6ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 18 Stress test entry 18 Stress test entry 18 Stress test entry 18 Stress test entry 18",
|
||||||
"User:\n[PERFORMANCE ALERT] Frame time high: 685.6ms. Please consider optimizing recent changes or reducing load.",
|
"@1771902467.409145\nUser:\nStress test entry 19 Stress test entry 19 Stress test entry 19 Stress test entry 19 Stress test entry 19",
|
||||||
"User:\nStress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20",
|
"@1771902467.409145\nUser:\nStress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20 Stress test entry 20",
|
||||||
"User:\nStress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21",
|
"@1771902467.409145\nUser:\nStress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21 Stress test entry 21",
|
||||||
"User:\nStress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22",
|
"@1771902467.409145\nUser:\nStress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22 Stress test entry 22",
|
||||||
"User:\nStress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23",
|
"@1771902467.409145\nUser:\nStress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23 Stress test entry 23",
|
||||||
"User:\nStress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24",
|
"@1771902467.409145\nUser:\nStress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24 Stress test entry 24",
|
||||||
"User:\nStress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25",
|
"@1771902467.409145\nUser:\nStress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25 Stress test entry 25",
|
||||||
"User:\nStress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26",
|
"@1771902467.409145\nUser:\nStress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26 Stress test entry 26",
|
||||||
"User:\nStress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27",
|
"@1771902467.409145\nUser:\nStress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27 Stress test entry 27",
|
||||||
"User:\nStress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28",
|
"@1771902467.409145\nUser:\nStress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28 Stress test entry 28",
|
||||||
"User:\nStress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29",
|
"@1771902467.409145\nUser:\nStress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29 Stress test entry 29",
|
||||||
"User:\nStress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30",
|
"@1771902467.409145\nUser:\nStress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30 Stress test entry 30",
|
||||||
"User:\nStress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31",
|
"@1771902467.409145\nUser:\nStress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31 Stress test entry 31",
|
||||||
"User:\nStress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32",
|
"@1771902467.409145\nUser:\nStress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32 Stress test entry 32",
|
||||||
"User:\nStress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33",
|
"@1771902467.409145\nUser:\nStress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33 Stress test entry 33",
|
||||||
"User:\nStress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34",
|
"@1771902467.409145\nUser:\nStress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34 Stress test entry 34",
|
||||||
"User:\nStress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35",
|
"@1771902467.409145\nUser:\nStress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35 Stress test entry 35",
|
||||||
"User:\nStress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36",
|
"@1771902467.409145\nUser:\nStress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36 Stress test entry 36",
|
||||||
"User:\nStress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37",
|
"@1771902467.409145\nUser:\nStress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37 Stress test entry 37",
|
||||||
"User:\nStress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38",
|
"@1771902467.409145\nUser:\nStress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38 Stress test entry 38",
|
||||||
"User:\nStress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39",
|
"@1771902467.409145\nUser:\nStress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39 Stress test entry 39",
|
||||||
"User:\nStress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40",
|
"@1771902467.409145\nUser:\nStress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40 Stress test entry 40",
|
||||||
"User:\nStress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41",
|
"@1771902467.409145\nUser:\nStress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41 Stress test entry 41",
|
||||||
"User:\nStress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42",
|
"@1771902467.409145\nUser:\nStress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42 Stress test entry 42",
|
||||||
"User:\nStress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43",
|
"@1771902467.409145\nUser:\nStress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43 Stress test entry 43",
|
||||||
"User:\nStress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44",
|
"@1771902467.409145\nUser:\nStress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44 Stress test entry 44",
|
||||||
"User:\nStress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45",
|
"@1771902467.409145\nUser:\nStress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45 Stress test entry 45",
|
||||||
"User:\nStress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46",
|
"@1771902467.409145\nUser:\nStress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46 Stress test entry 46",
|
||||||
"User:\nStress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47",
|
"@1771902467.409145\nUser:\nStress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47 Stress test entry 47",
|
||||||
"User:\nStress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48",
|
"@1771902467.409145\nUser:\nStress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48 Stress test entry 48",
|
||||||
"User:\nStress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49",
|
"@1771902467.409145\nUser:\nStress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49 Stress test entry 49",
|
||||||
"@2026-02-23T15:28:40\nSystem:\n[PERFORMANCE ALERT] Frame time high: 210.4ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T15:29:20\nSystem:\n[PERFORMANCE ALERT] Frame time high: 266.8ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T15:29:48\nSystem:\n[PERFORMANCE ALERT] Frame time high: 734.8ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T15:30:27\nSystem:\n[PERFORMANCE ALERT] Frame time high: 160.9ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:03:29\nSystem:\n[PERFORMANCE ALERT] Frame time high: 862.8ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:04:08\nSystem:\n[PERFORMANCE ALERT] Frame time high: 146.3ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:17:39\nSystem:\n[PERFORMANCE ALERT] Frame time high: 790.9ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:18:19\nSystem:\n[PERFORMANCE ALERT] Frame time high: 170.3ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:18:49\nSystem:\n[PERFORMANCE ALERT] Frame time high: 371.8ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:19:29\nSystem:\n[PERFORMANCE ALERT] Frame time high: 158.2ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:19:59\nSystem:\n[PERFORMANCE ALERT] Frame time high: 221.8ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T16:29:49\nSystem:\n[PERFORMANCE ALERT] Frame time high: 795.2ms. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T18:57:49\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 123.4%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T18:58:19\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 109.4%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T21:08:13\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 92.2%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T21:08:44\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 201.6%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T21:09:15\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 104.7%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T21:09:51\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 103.1%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
"@2026-02-23T21:28:21\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 87.5%. Please consider optimizing recent changes or reducing load.",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[discussion.discussions."test gemini mock interaction"]
|
[discussion.discussions."test gemini mock interaction"]
|
||||||
git_commit = ""
|
git_commit = ""
|
||||||
last_updated = "2026-02-23T21:07:57"
|
last_updated = "2026-02-23T22:59:50"
|
||||||
history = []
|
history = []
|
||||||
|
|
||||||
[agent.tools]
|
[agent.tools]
|
||||||
|
|||||||
+63
-20
@@ -12,7 +12,7 @@ ViewportPos=43,95
|
|||||||
ViewportId=0x78C57832
|
ViewportId=0x78C57832
|
||||||
Size=897,649
|
Size=897,649
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x0000000D,0
|
DockId=0x00000002,0
|
||||||
|
|
||||||
[Window][Files]
|
[Window][Files]
|
||||||
ViewportPos=3125,170
|
ViewportPos=3125,170
|
||||||
@@ -33,7 +33,7 @@ DockId=0x0000000A,0
|
|||||||
Pos=0,17
|
Pos=0,17
|
||||||
Size=1680,730
|
Size=1680,730
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x0000000C,0
|
DockId=0x00000011,0
|
||||||
|
|
||||||
[Window][Provider]
|
[Window][Provider]
|
||||||
ViewportPos=43,95
|
ViewportPos=43,95
|
||||||
@@ -41,7 +41,7 @@ ViewportId=0x78C57832
|
|||||||
Pos=0,651
|
Pos=0,651
|
||||||
Size=897,468
|
Size=897,468
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x0000000E,0
|
DockId=0x00000002,0
|
||||||
|
|
||||||
[Window][Message]
|
[Window][Message]
|
||||||
Pos=0,749
|
Pos=0,749
|
||||||
@@ -80,9 +80,9 @@ DockId=0x0000000F,2
|
|||||||
[Window][Theme]
|
[Window][Theme]
|
||||||
ViewportPos=43,95
|
ViewportPos=43,95
|
||||||
ViewportId=0x78C57832
|
ViewportId=0x78C57832
|
||||||
Size=897,649
|
Size=897,1896
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x0000000D,2
|
DockId=0x00000002,0
|
||||||
|
|
||||||
[Window][Text Viewer - Entry #7]
|
[Window][Text Viewer - Entry #7]
|
||||||
Pos=379,324
|
Pos=379,324
|
||||||
@@ -90,24 +90,67 @@ Size=900,700
|
|||||||
Collapsed=0
|
Collapsed=0
|
||||||
|
|
||||||
[Window][Diagnostics]
|
[Window][Diagnostics]
|
||||||
ViewportPos=43,95
|
Pos=1190,794
|
||||||
ViewportId=0x78C57832
|
Size=490,406
|
||||||
Size=897,649
|
|
||||||
Collapsed=0
|
Collapsed=0
|
||||||
DockId=0x0000000D,1
|
DockId=0x00000006,0
|
||||||
|
|
||||||
|
[Window][Context Hub]
|
||||||
|
Pos=0,17
|
||||||
|
Size=270,728
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000011,0
|
||||||
|
|
||||||
|
[Window][AI Settings Hub]
|
||||||
|
Pos=406,17
|
||||||
|
Size=435,1186
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x0000000D,0
|
||||||
|
|
||||||
|
[Window][Discussion Hub]
|
||||||
|
Pos=1190,17
|
||||||
|
Size=490,775
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000005,0
|
||||||
|
|
||||||
|
[Window][Operations Hub]
|
||||||
|
Pos=272,17
|
||||||
|
Size=916,1183
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000010,0
|
||||||
|
|
||||||
|
[Window][Files & Media]
|
||||||
|
Pos=0,17
|
||||||
|
Size=270,728
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000011,1
|
||||||
|
|
||||||
|
[Window][AI Settings]
|
||||||
|
Pos=0,747
|
||||||
|
Size=270,453
|
||||||
|
Collapsed=0
|
||||||
|
DockId=0x00000012,0
|
||||||
|
|
||||||
[Docking][Data]
|
[Docking][Data]
|
||||||
DockNode ID=0x00000007 Pos=43,95 Size=897,1896 Split=Y
|
DockNode ID=0x00000007 Pos=43,95 Size=897,1896 Split=Y
|
||||||
DockNode ID=0x00000002 Parent=0x00000007 SizeRef=1029,1119 Split=Y
|
DockNode ID=0x00000002 Parent=0x00000007 SizeRef=1029,1119 Selected=0x8CA2375C
|
||||||
DockNode ID=0x0000000D Parent=0x00000002 SizeRef=1029,649 Selected=0xB4CBF21A
|
DockNode ID=0x00000001 Parent=0x00000007 SizeRef=1029,775 Selected=0x8B4EBFA6
|
||||||
DockNode ID=0x0000000E Parent=0x00000002 SizeRef=1029,468 Selected=0xA07B5F14
|
DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y
|
||||||
DockNode ID=0x00000001 Parent=0x00000007 SizeRef=1029,775 Selected=0x8B4EBFA6
|
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
|
||||||
DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y
|
DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02
|
||||||
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
|
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=476,516 Size=1680,1183 Split=Y
|
||||||
DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02
|
DockNode ID=0x0000000C Parent=0xAFC85805 SizeRef=1362,1041 Split=X Selected=0x5D11106F
|
||||||
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=1052,572 Size=1680,1183 Split=Y
|
DockNode ID=0x00000003 Parent=0x0000000C SizeRef=1188,1183 Split=X
|
||||||
DockNode ID=0x0000000C Parent=0xAFC85805 SizeRef=1362,1041 CentralNode=1 Selected=0x5D11106F
|
DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2
|
||||||
DockNode ID=0x0000000F Parent=0xAFC85805 SizeRef=1362,451 Selected=0xDD6419BC
|
DockNode ID=0x0000000E Parent=0x0000000B SizeRef=270,1183 Split=Y Selected=0xF4139CA2
|
||||||
|
DockNode ID=0x00000011 Parent=0x0000000E SizeRef=422,728 CentralNode=1 Selected=0xF4139CA2
|
||||||
|
DockNode ID=0x00000012 Parent=0x0000000E SizeRef=422,453 Selected=0x7BD57D6A
|
||||||
|
DockNode ID=0x00000010 Parent=0x0000000B SizeRef=916,1183 Selected=0x418C7449
|
||||||
|
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6
|
||||||
|
DockNode ID=0x00000004 Parent=0x0000000C SizeRef=490,1183 Split=Y Selected=0x418C7449
|
||||||
|
DockNode ID=0x00000005 Parent=0x00000004 SizeRef=837,775 Selected=0x6F2B5B04
|
||||||
|
DockNode ID=0x00000006 Parent=0x00000004 SizeRef=837,406 Selected=0xB4CBF21A
|
||||||
|
DockNode ID=0x0000000F Parent=0xAFC85805 SizeRef=1362,451 Selected=0xDD6419BC
|
||||||
|
|
||||||
;;;<<<Layout_655921752_Default>>>;;;
|
;;;<<<Layout_655921752_Default>>>;;;
|
||||||
;;;<<<HelloImGui_Misc>>>;;;
|
;;;<<<HelloImGui_Misc>>>;;;
|
||||||
|
|||||||
+4
-6
@@ -112,16 +112,14 @@ def _resolve_and_check(raw_path: str) -> tuple[Path | None, str]:
|
|||||||
p = Path(raw_path)
|
p = Path(raw_path)
|
||||||
if not p.is_absolute() and _primary_base_dir:
|
if not p.is_absolute() and _primary_base_dir:
|
||||||
p = _primary_base_dir / p
|
p = _primary_base_dir / p
|
||||||
try:
|
p = p.resolve()
|
||||||
p = p.resolve(strict=True)
|
|
||||||
except (OSError, ValueError):
|
|
||||||
p = p.resolve()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return None, f"ERROR: invalid path '{raw_path}': {e}"
|
return None, f"ERROR: invalid path '{raw_path}': {e}"
|
||||||
if not _is_allowed(p):
|
if not _is_allowed(p):
|
||||||
|
allowed_bases = "\\n".join([f" - {d}" for d in _base_dirs])
|
||||||
return None, (
|
return None, (
|
||||||
f"ACCESS DENIED: '{raw_path}' is not within the allowed paths. "
|
f"ACCESS DENIED: '{raw_path}' resolves to '{p}', which is not within the allowed paths.\\n"
|
||||||
f"Use list_directory or search_files on an allowed base directory first."
|
f"Allowed base directories are:\\n{allowed_bases}"
|
||||||
)
|
)
|
||||||
return p, ""
|
return p, ""
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -35,5 +35,5 @@ active = "main"
|
|||||||
|
|
||||||
[discussion.discussions.main]
|
[discussion.discussions.main]
|
||||||
git_commit = ""
|
git_commit = ""
|
||||||
last_updated = "2026-02-23T19:01:39"
|
last_updated = "2026-02-23T22:59:46"
|
||||||
history = []
|
history = []
|
||||||
|
|||||||
@@ -38,7 +38,12 @@ auto_add = true
|
|||||||
|
|
||||||
[discussion.discussions.main]
|
[discussion.discussions.main]
|
||||||
git_commit = ""
|
git_commit = ""
|
||||||
last_updated = "2026-02-23T20:56:57"
|
last_updated = "2026-02-23T23:25:47"
|
||||||
history = [
|
history = [
|
||||||
"@2026-02-23T20:12:12\nSystem:\n[PERFORMANCE ALERT] CPU usage high: 121.9%. Please consider optimizing recent changes or reducing load.",
|
"@2026-02-23T23:01:07\nUser:\nhey this is a test, plaase read temp-project.toml and do a random web search!",
|
||||||
|
"@2026-02-23T23:01:10\nAI:\nI encountered an error trying to read the file `temp-project.toml`. It seems the file doesn't exist.\n\nFor the web search, I found a few interesting results for \"random search\":\n\n1. **The Useless Web:** A site that takes you to random, useless websites.\n2. **Random Number Generator - Calculator.net:** Information on how random number generators work.\n3. **Random Google Search Generator - Perchance:** A tool to create random Google search queries.\n4. **Random Picker - Vondy:** A tool to randomly select items from a list.\n5. **Wikipedia on Random Search:** An explanation of random search as an optimization method.",
|
||||||
|
"@2026-02-23T23:01:29\nUser:\nmy bad temp_project.toml",
|
||||||
|
"@2026-02-23T23:01:30\nAI:\nI'm sorry, but I still couldn't find the file `temp_project.toml`. Please double-check the filename and try again.",
|
||||||
|
"@2026-02-23T23:01:52\nUser:\n./tests/temp_project.toml?",
|
||||||
|
"@2026-02-23T23:01:53\nAI:\nOkay, I've successfully read the content of `./tests/temp_project.toml`. It appears to be a configuration file for a project, detailing settings for project name, Git directory, output directories, file paths, screenshot paths, agent tools, and discussion history.",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import pytest
|
||||||
|
from unittest.mock import patch
|
||||||
|
from gui_2 import App
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def app_instance():
|
||||||
|
with (
|
||||||
|
patch('gui_2.load_config', return_value={'gui': {'show_windows': {}}}),
|
||||||
|
patch('gui_2.save_config'),
|
||||||
|
patch('gui_2.project_manager'),
|
||||||
|
patch('gui_2.session_logger'),
|
||||||
|
patch('gui_2.immapp.run'),
|
||||||
|
patch.object(App, '_load_active_project'),
|
||||||
|
patch.object(App, '_fetch_models'),
|
||||||
|
patch.object(App, '_load_fonts'),
|
||||||
|
patch.object(App, '_post_init')
|
||||||
|
):
|
||||||
|
yield App()
|
||||||
|
|
||||||
|
def test_gui2_hubs_exist_in_show_windows(app_instance):
|
||||||
|
"""
|
||||||
|
Verifies that the new consolidated Hub windows are defined in the App's show_windows.
|
||||||
|
This ensures they will be available in the 'Windows' menu.
|
||||||
|
"""
|
||||||
|
expected_hubs = [
|
||||||
|
"Context Hub",
|
||||||
|
"AI Settings",
|
||||||
|
"Discussion Hub",
|
||||||
|
"Operations Hub",
|
||||||
|
"Files & Media",
|
||||||
|
"Theme",
|
||||||
|
]
|
||||||
|
|
||||||
|
for hub in expected_hubs:
|
||||||
|
assert hub in app_instance.show_windows, f"Expected hub window '{hub}' not found in show_windows"
|
||||||
|
|
||||||
|
def test_gui2_old_windows_removed_from_show_windows(app_instance):
|
||||||
|
"""
|
||||||
|
Verifies that the old fragmented windows are removed from show_windows.
|
||||||
|
"""
|
||||||
|
old_windows = [
|
||||||
|
"Projects", "Files", "Screenshots",
|
||||||
|
"Provider", "System Prompts",
|
||||||
|
"Message", "Response", "Tool Calls", "Comms History"
|
||||||
|
]
|
||||||
|
|
||||||
|
for old_win in old_windows:
|
||||||
|
assert old_win not in app_instance.show_windows, f"Old window '{old_win}' should have been removed from show_windows"
|
||||||
+10
-9
@@ -36,32 +36,33 @@ def test_mcp_tool_call_is_dispatched(app_instance):
|
|||||||
# 2. Construct the mock AI response (Gemini format)
|
# 2. Construct the mock AI response (Gemini format)
|
||||||
mock_response_with_tool = MagicMock()
|
mock_response_with_tool = MagicMock()
|
||||||
mock_part = MagicMock()
|
mock_part = MagicMock()
|
||||||
|
mock_part.text = ""
|
||||||
mock_part.function_call = mock_fc
|
mock_part.function_call = mock_fc
|
||||||
mock_candidate = MagicMock()
|
mock_candidate = MagicMock()
|
||||||
mock_candidate.content.parts = [mock_part]
|
mock_candidate.content.parts = [mock_part]
|
||||||
mock_candidate.finish_reason.name = "TOOL_CALLING"
|
mock_candidate.finish_reason.name = "TOOL_CALLING"
|
||||||
mock_response_with_tool.candidates = [mock_candidate]
|
mock_response_with_tool.candidates = [mock_candidate]
|
||||||
|
|
||||||
mock_usage_metadata = MagicMock()
|
class DummyUsage:
|
||||||
mock_usage_metadata.prompt_token_count = 100
|
prompt_token_count = 100
|
||||||
mock_usage_metadata.candidates_token_count = 10
|
candidates_token_count = 10
|
||||||
mock_usage_metadata.cached_content_token_count = 0
|
cached_content_token_count = 0
|
||||||
mock_response_with_tool.usage_metadata = mock_usage_metadata
|
|
||||||
|
mock_response_with_tool.usage_metadata = DummyUsage()
|
||||||
|
|
||||||
# 3. Create a mock for the final AI response after the tool call
|
# 3. Create a mock for the final AI response after the tool call
|
||||||
mock_response_final = MagicMock()
|
mock_response_final = MagicMock()
|
||||||
mock_response_final.text = "Final answer"
|
mock_response_final.text = "Final answer"
|
||||||
mock_response_final.candidates = []
|
mock_response_final.candidates = []
|
||||||
mock_response_final.usage_metadata = mock_usage_metadata
|
mock_response_final.usage_metadata = DummyUsage()
|
||||||
|
|
||||||
# 4. Patch the necessary components
|
# 4. Patch the necessary components
|
||||||
with patch("ai_client._ensure_gemini_client"), \
|
with patch("ai_client._ensure_gemini_client"), \
|
||||||
patch("ai_client._gemini_client"), \
|
patch("ai_client._gemini_client") as mock_client, \
|
||||||
patch("ai_client._gemini_chat") as mock_chat, \
|
|
||||||
patch('mcp_client.dispatch', return_value="file content") as mock_dispatch:
|
patch('mcp_client.dispatch', return_value="file content") as mock_dispatch:
|
||||||
|
|
||||||
|
mock_chat = mock_client.chats.create.return_value
|
||||||
mock_chat.send_message.side_effect = [mock_response_with_tool, mock_response_final]
|
mock_chat.send_message.side_effect = [mock_response_with_tool, mock_response_final]
|
||||||
ai_client._gemini_chat = mock_chat
|
|
||||||
|
|
||||||
ai_client.set_provider("gemini", "mock-model")
|
ai_client.set_provider("gemini", "mock-model")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user