Commit Graph

376 Commits

Author SHA1 Message Date
ed ca4719687a fix(external_editor): cache auto-detect result, avoid hitting registry on every UI frame 2026-05-07 21:00:41 -04:00
ed b70b837885 test: Add GUI integration tests for external editor with live_gui fixture
Note: Due to process boundaries (GUI runs in subprocess), monkeypatch doesn't
cross to GUI subprocess. Manual verification requires configuring
config.toml in project root with VSCode path.
2026-05-07 20:42:36 -04:00
ed f78042969d fix(gui): Use theme colors in External Editor panel 2026-05-07 19:48:06 -04:00
ed 630c9abd3a feat(gui): Improve External Editor panel with combo selector
- Add dropdown combo to select default editor
- Add _set_external_editor_default method to save selection to config
- Clean up layout and improve visual hierarchy
- Add better color coding for configured vs default editors
2026-05-07 19:35:49 -04:00
ed 8fe366e041 fix(external-editor): Fix TextEditorConfig parsing and add error handling
- TextEditorConfig.from_dict no longer requires 'name' field since name comes from dict key
- Added try/except around _render_external_editor_panel to prevent tab bar mismatch
2026-05-07 19:30:45 -04:00
ed 0948cae5a0 fix(external-editor): Move panel to Operations Hub, fix config key lookup
- Moved External Editor panel from AI Settings to External Tools tab in Operations Hub
- Fixed default_editor lookup to use nested [tools.default_editor] structure
- Added example entries for vscode, notepadpp, 10xEditor, rider, sublime
- Improved panel UI with section header and clearer formatting
2026-05-07 19:27:07 -04:00
ed d2beb79563 feat(gui): Add External Editor configuration panel to AI Settings
- Added _render_external_editor_panel method to display configured editors
- Shows default editor marker and diff args
- Displays config file locations for user reference
- Integrated as 'External Editor' section in AI Settings
2026-05-07 19:12:28 -04:00
ed c711d26eac feat(gui): Add 'Open in External Editor' button to patch modal
- Added button to launch external editor for reviewing agent proposed changes
- Added _open_patch_in_external_editor method to handle the launch logic
- Integrated with ExternalEditorLauncher and create_temp_modified_file
2026-05-07 19:10:13 -04:00
ed 414d2ab561 feat(external-editor): Add TextEditorConfig and ExternalEditorConfig models
- Add TextEditorConfig and ExternalEditorConfig dataclasses to models.py
- Create src/external_editor.py with ExternalEditorLauncher class
- Add tests for configuration and launcher functionality
- Support for config.toml [tools.text_editors] and manual_slop.toml default_editor
2026-05-07 19:07:05 -04:00
ed b043d06771 chore: add standard STATUS markers to worker streams and optimize test polling
This fixes the 'stuck' behavior in concurrent tests by ensuring the tests look for standard completion markers and don't wait for unnecessary timeouts.
2026-05-07 18:37:19 -04:00
ed d4b4312dd2 chore: remove debug logging and fix closure bug in test hooks 2026-05-07 15:02:00 -04:00
ed 7d12806ce6 finally? 2026-05-07 13:42:31 -04:00
ed 40f0c04a91 chore(conductor): Mark track 'Fix Concurrent MMA Live GUI Tests' as complete
Fixes UI flickering between tracks in app_controller.py and an indentation bug in multi_agent_conductor.py that caused workers to crash silently.
2026-05-07 13:30:42 -04:00
ed b0a837d235 fix(mma): Add explicit reload logic when _cb_load_track fails in _cb_start_track
The test clicks btn_mma_start_track twice with different track_ids.
When _cb_load_track fails for track_a, self.active_track remains None or wrong.
Then track_b loads but we can't distinguish if a later call is for track_a retry
or track_b (which already has an engine). This adds an explicit reload path
when loaded track doesn't match requested track.
2026-05-07 08:41:08 -04:00
ed f3585cb5a1 fix(mma): Use track.id instead of self.active_track.id in _start_track_logic
active_track was None when _start_track_logic was called from _cb_accept_tracks
because active_track is only set when loading a track via _cb_load_track.
_start_track_logic creates a new track locally and should use that track's id.
2026-05-07 08:28:20 -04:00
ed cab733abc6 debug: Add logging to _cb_start_track 2026-05-07 08:19:05 -04:00
ed 6f2a2c2eea fix(gui): Initialize active_tickets in AppController.init_state
The AppController.__getattr__ delegation was returning controller.active_tickets
but init_state() never initialized self.active_tickets, causing an
AttributeError when gui_2.py tried to access self.active_tickets before
controller state was fully loaded.

Fixes live_gui fixture crash in test_mma_concurrent_tracks_stress_sim.py
2026-05-07 08:05:58 -04:00
ed ac0b564c02 fix(mma): Change self.engine to self.engines dict for concurrent track support
- self.engine was a single ConductorEngine reference that got overwritten
  when multiple tracks ran concurrently, orphaning the first track's engine
- Now uses self.engines: Dict[str, ConductorEngine] keyed by track.id
- Updated _spawn_worker, kill_worker, pause_mma, resume_mma, approve_ticket,
  _load_active_tickets, and _update_ticket_depends_on to use engines.get(track_id)

Fixes concurrent MMA track execution bug where only one worker ever appeared.
2026-05-07 07:54:39 -04:00
ed c36e691b8d fix(api): Include tracks list in get_mma_status response 2026-05-06 21:19:55 -04:00
ed bd37aa731b fix(aggregate): Handle string path in _build_files_section_from_items 2026-05-06 21:11:10 -04:00
ed 80afa4894b fix(conductor): Always recompute ready_tasks each tick to fix stale cache bug 2026-05-06 21:05:26 -04:00
ed 2b5185a78f perf(entropy): Fix nested imports in hot paths
Hoisted imports from inside frequently-called functions to module level:

app_controller.py:
- Added traceback and inspect at module level
- Removed 3 nested traceback imports from exception handlers

gui_2.py:
- Added traceback at module level
- Removed nested traceback import from _gui_func exception handler
- Kept uvicorn lazy-loaded (only for --headless mode)

multi_agent_conductor.py:
- Removed unused 'import sys' from run()
- Removed redundant nested imports (already at module level)

Also adds audit scripts and entropy findings documentation.
2026-05-06 20:18:30 -04:00
ed 54afbb9365 chore(entropy): Phase 5 start - fix duplicate line bug and document findings
- Fix duplicate line bug in rag_emb_provider.setter (app_controller.py)
- Add entropy_findings.md documenting audit results
- Update plan.md with Phase 5 tasks and findings
- Note: Property getter/setter 'duplicates' are false positives - proper Python patterns
2026-05-06 19:59:06 -04:00
ed f6feab9243 fix(gui): Correct indentation bug in _render_mma_dashboard that caused crash
The code after the 'prior session' return block was incorrectly indented
at 1 space, placing it inside the 'if is_viewing_prior_session' block
instead of after it. This caused 'total_cost' and 'perc' to be undefined
when viewing an active session, triggering an IM_ASSERT error.

Fix: Moved 'track_name', 'track_stats', and 'total_cost' to the
correct 2-space indentation (method body level).
2026-05-06 19:41:22 -04:00
ed 6bd052efc5 chore(perf): Save state before comprehensive entropy cleanup 2026-05-06 16:09:41 -04:00
ed f628e0b29a perf(core): Optimize DAG engine, orchestrator loop, and simulations 2026-05-06 15:27:27 -04:00
ed d0aff71430 feat(perf): Add performance tests and high-precision timing 2026-05-06 14:59:34 -04:00
ed 3f592afa16 perf(aggregate): Optimize focus file lookups and ASTParser hoisting 2026-05-06 14:54:21 -04:00
ed 23c1e21661 feat(perf): Expand instrumentation with context manager and extended metrics 2026-05-06 14:30:22 -04:00
ed 2b66f3569b feat(beads): integrate Beads Mode backend, MCP tools, and GUI support 2026-05-06 13:48:47 -04:00
ed ecc5a66027 feat(workspace): implement contextual auto-switch layout based on MMA active tier 2026-05-05 21:57:08 -04:00
ed ded9f38a00 feat(workspace): implement layout menu and save profile modal 2026-05-05 21:25:53 -04:00
ed eab1945035 feat(workspace): implement layout capture/restore and controller integration 2026-05-05 21:09:51 -04:00
ed 5b3173a1ae feat(workspace): implement WorkspaceManager and path resolution 2026-05-05 20:50:55 -04:00
ed 98400358af feat(models): implement WorkspaceProfile dataclass 2026-05-05 20:50:47 -04:00
ed 904dabe6a1 feat(mcp): Validate C++ tools against real-world gencpp components and improve enum support 2026-05-05 20:40:21 -04:00
ed 992e206769 feat(mcp): Finalize C/C++ AST tools with robust testing and bug fixes 2026-05-05 20:08:51 -04:00
ed 4e8b397c80 feat(mcp): Add full functional parity for C/C++ tools 2026-05-05 19:48:38 -04:00
ed 8642d894df feat(parser): Implement C/C++ update_definition 2026-05-05 19:44:40 -04:00
ed 799feb0f94 feat(parser): Implement C/C++ get_definition and get_signature 2026-05-05 19:42:14 -04:00
ed b8460107b9 chore(conductor): Expand Tree-Sitter C/C++ track with new phases for tool parity and robust testing 2026-05-05 19:31:25 -04:00
ed 3bb850aca9 test(mcp): Add tests for C/C++ skeleton and outline tools 2026-05-05 19:07:17 -04:00
ed 0db41efec6 feat(mcp): Integrate C/C++ skeleton and outline tools 2026-05-05 18:57:51 -04:00
ed d3cd7cf75a feat(parser): Implement C/C++ skeleton and outline extraction 2026-05-05 18:51:56 -04:00
ed c025ebc29d feat(parser): Add C and C++ support to ASTParser 2026-05-05 18:42:53 -04:00
ed 446a58717e conductor(checkpoint): Checkpoint end of Phase 4 - UI Features & History List 2026-05-05 17:50:55 -04:00
ed 0a5b90e772 conductor(checkpoint): Checkpoint end of Phase 3 - Discussion & Context Structure Mutation 2026-05-05 12:17:53 -04:00
ed a02849b9a3 conductor(checkpoint): Checkpoint end of Phase 2 - Text Input & Control Undo/Redo 2026-05-05 00:23:55 -04:00
ed 7743b157c7 feat(history): Implement generic HistoryManager and unit tests 2026-05-04 23:38:00 -04:00
ed 7bed4a8f97 conductor(checkpoint): Final checkpoint for RAG Support track - Phase 4 complete 2026-05-04 22:36:31 -04:00