From a8898a45464bc9e3cb1146d84d6319a8c992540f Mon Sep 17 00:00:00 2001 From: mixelpixx Date: Mon, 16 Mar 2026 13:18:59 -0400 Subject: [PATCH] Delete CHANGELOG_2025-10-26.md --- CHANGELOG_2025-10-26.md | 453 ---------------------------------------- 1 file changed, 453 deletions(-) delete mode 100644 CHANGELOG_2025-10-26.md diff --git a/CHANGELOG_2025-10-26.md b/CHANGELOG_2025-10-26.md deleted file mode 100644 index 95ce04c..0000000 --- a/CHANGELOG_2025-10-26.md +++ /dev/null @@ -1,453 +0,0 @@ -# Changelog - October 26, 2025 - -## 🎉 Major Updates: Testing, Fixes, and UI Auto-Launch - -**Summary:** Complete testing of KiCAD MCP server, critical bug fixes, and new UI auto-launch feature for seamless visual feedback. - ---- - -## 🐛 Critical Fixes - -### 1. Python Environment Detection (src/server.ts) -**Problem:** Server hardcoded to use system Python, couldn't access venv dependencies - -**Fixed:** -- Added `findPythonExecutable()` function with platform detection -- Auto-detects virtual environment at `./venv/bin/python` -- Falls back to system Python if venv not found -- Cross-platform support (Linux, macOS, Windows) - -**Files Changed:** -- `src/server.ts` (lines 32-70, 153) - -**Impact:** ✅ `kicad-skip` and other venv packages now accessible - ---- - -### 2. KiCAD Path Detection (python/utils/platform_helper.py) -**Problem:** Platform helper didn't check system dist-packages on Linux - -**Fixed:** -- Added `/usr/lib/python3/dist-packages` to search paths -- Added `/usr/lib/python{version}/dist-packages` for version-specific installs -- Now finds pcbnew successfully on Ubuntu/Debian systems - -**Files Changed:** -- `python/utils/platform_helper.py` (lines 82-89) - -**Impact:** ✅ pcbnew module imports successfully from system installation - ---- - -### 3. Board Reference Management (python/kicad_interface.py) -**Problem:** After opening project, board reference not properly updated - -**Fixed:** -- Changed from `pcbnew.GetBoard()` (doesn't work) to `self.project_commands.board` -- Board reference now correctly propagates to all command handlers - -**Files Changed:** -- `python/kicad_interface.py` (line 210) - -**Impact:** ✅ All board operations work after opening project - ---- - -### 4. Parameter Mapping Issues - -#### open_project Parameter Mismatch (src/tools/project.ts) -**Problem:** TypeScript expected `path`, Python expected `filename` - -**Fixed:** -- Changed tool schema to use `filename` parameter -- Updated type definition to match - -**Files Changed:** -- `src/tools/project.ts` (line 33) - -#### add_board_outline Parameter Structure (src/tools/board.ts) -**Problem:** Nested `params` object, Python expected flattened parameters - -**Fixed:** -- Flatten params object in handler -- Rename `x`/`y` to `centerX`/`centerY` for Python compatibility - -**Files Changed:** -- `src/tools/board.ts` (lines 168-185) - -**Impact:** ✅ Tools now work correctly with proper parameter passing - ---- - -## 🚀 New Features - -### UI Auto-Launch System - -**Description:** Automatic KiCAD UI detection and launching for seamless visual feedback - -**New Files:** -- `python/utils/kicad_process.py` (286 lines) - - Cross-platform process detection (Linux, macOS, Windows) - - Automatic executable discovery - - Background process spawning - - Process info retrieval - -- `src/tools/ui.ts` (45 lines) - - MCP tool definitions for UI management - - `check_kicad_ui` - Check if KiCAD is running - - `launch_kicad_ui` - Launch KiCAD with optional project - -**Modified Files:** -- `python/kicad_interface.py` (added UI command handlers) -- `src/server.ts` (registered UI tools) - -**New MCP Tools:** - -1. **check_kicad_ui** - - Parameters: None - - Returns: running status, process list - -2. **launch_kicad_ui** - - Parameters: `projectPath` (optional), `autoLaunch` (optional) - - Returns: launch status, process info - -**Environment Variables:** -- `KICAD_AUTO_LAUNCH` - Enable automatic UI launching (default: false) -- `KICAD_EXECUTABLE` - Override KiCAD executable path (optional) - -**Impact:** 🎉 Users can now see PCB changes in real-time with auto-reload workflow - ---- - -## 📚 Documentation Updates - -### New Documentation -1. **docs/UI_AUTO_LAUNCH.md** (500+ lines) - - Complete guide to UI auto-launch feature - - Usage examples and workflows - - Configuration options - - Troubleshooting guide - -2. **docs/VISUAL_FEEDBACK.md** (400+ lines) - - Current SWIG workflow (manual reload) - - Future IPC workflow (real-time updates) - - Side-by-side design workflow - - Troubleshooting tips - -3. **CHANGELOG_2025-10-26.md** (this file) - - Complete record of today's work - -### Updated Documentation -1. **README.md** - - Added UI Auto-Launch feature section - - Updated "What Works Now" section - - Added UI management examples - - Marked component placement/routing as WIP - -2. **config/linux-config.example.json** - - Added `KICAD_AUTO_LAUNCH` environment variable - - Added description field - - Note about auto-detected PYTHONPATH - -3. **config/macos-config.example.json** - - Added `KICAD_AUTO_LAUNCH` environment variable - - Added description field - -4. **config/windows-config.example.json** - - Added `KICAD_AUTO_LAUNCH` environment variable - - Added description field - ---- - -## ✅ Testing Results - -### Test Suite Executed -- Platform detection tests: **13/14 passed** (1 skipped - expected) -- MCP server startup: **✅ Success** -- Python module import: **✅ Success** (pcbnew v9.0.5) -- Command handlers: **✅ All imported** - -### End-to-End Demo Created -**Project:** `/tmp/mcp_demo/New_Project.kicad_pcb` - -**Operations Tested:** -1. ✅ create_project - Success -2. ✅ open_project - Success -3. ✅ add_board_outline - Success (68.6mm × 53.4mm Arduino shield) -4. ✅ add_mounting_hole - Success (4 holes at corners) -5. ✅ save_project - Success -6. ✅ get_project_info - Success - -### Tool Success Rate -| Category | Tested | Passed | Rate | -|----------|--------|--------|------| -| Project Ops | 4 | 4 | 100% | -| Board Ops | 3 | 2 | 67% | -| UI Ops | 2 | 2 | 100% | -| **Overall** | **9** | **8** | **89%** | - -### Known Issues -- ⚠️ `get_board_info` - KiCAD 9.0 API compatibility issue (`LT_USER` attribute) -- ⚠️ `place_component` - Library path integration needed -- ⚠️ Routing operations - Not yet tested - ---- - -## 📊 Code Statistics - -### Lines Added -- Python: ~400 lines -- TypeScript: ~100 lines -- Documentation: ~1,500 lines -- **Total: ~2,000 lines** - -### Files Modified/Created -**New Files (7):** -- `python/utils/kicad_process.py` -- `src/tools/ui.ts` -- `docs/UI_AUTO_LAUNCH.md` -- `docs/VISUAL_FEEDBACK.md` -- `CHANGELOG_2025-10-26.md` -- `scripts/auto_refresh_kicad.sh` - -**Modified Files (10):** -- `src/server.ts` -- `src/tools/project.ts` -- `src/tools/board.ts` -- `python/kicad_interface.py` -- `python/utils/platform_helper.py` -- `README.md` -- `config/linux-config.example.json` -- `config/macos-config.example.json` -- `config/windows-config.example.json` - ---- - -## 🔧 Technical Improvements - -### Architecture -- ✅ Proper separation of UI management concerns -- ✅ Cross-platform process management -- ✅ Automatic environment detection -- ✅ Robust error handling with fallbacks - -### Developer Experience -- ✅ Virtual environment auto-detection -- ✅ No manual PYTHONPATH configuration needed (if venv exists) -- ✅ Clear error messages with helpful suggestions -- ✅ Comprehensive logging - -### User Experience -- ✅ Automatic KiCAD launching -- ✅ Visual feedback workflow -- ✅ Natural language UI control -- ✅ Cross-platform compatibility - ---- - -## 🎯 Week 1 Status Update - -### Completed -- ✅ Cross-platform Python environment setup -- ✅ KiCAD path auto-detection -- ✅ Board creation and manipulation -- ✅ Project operations (create, open, save) -- ✅ **UI auto-launch and detection** (NEW!) -- ✅ **Visual feedback workflow** (NEW!) -- ✅ End-to-end testing -- ✅ Comprehensive documentation - -### In Progress -- 🔄 Component library integration -- 🔄 Routing operations -- 🔄 IPC backend implementation (skeleton exists) - -### Upcoming (Week 2-3) -- ⏳ IPC API migration (real-time UI updates) -- ⏳ JLCPCB parts integration -- ⏳ Digikey parts integration -- ⏳ Component placement with library support - ---- - -## 🚀 User Impact - -### Before Today -``` -User: "Create a board" -→ Creates project file -→ User must manually open in KiCAD -→ User must manually reload after each change -``` - -### After Today -``` -User: "Create a board" -→ Creates project file -→ Auto-launches KiCAD (optional) -→ KiCAD auto-detects changes and prompts reload -→ Seamless visual feedback! -``` - ---- - -## 📝 Migration Notes - -### For Existing Users -1. **Rebuild required:** `npm run build` -2. **Restart MCP server** to load new features -3. **Optional:** Add `KICAD_AUTO_LAUNCH=true` to config for automatic launching -4. **Optional:** Install `inotify-tools` on Linux for file monitoring (future enhancement) - -### Breaking Changes -None - all changes are backward compatible - -### New Dependencies -- Python: None (all in stdlib) -- Node.js: None (existing SDK) - ---- - -## 🐛 Bug Tracker - -### Fixed Today -- [x] Python venv not detected -- [x] pcbnew import fails on Linux -- [x] Board reference not updating after open_project -- [x] Parameter mismatch in open_project -- [x] Parameter structure in add_board_outline - -### Remaining Issues -- [ ] get_board_info KiCAD 9.0 API compatibility -- [ ] Component library path detection -- [ ] Routing operations implementation - ---- - -## 🎓 Lessons Learned - -1. **Process spawning:** Background processes need proper detachment (CREATE_NEW_PROCESS_GROUP on Windows, start_new_session on Unix) - -2. **Parameter mapping:** TypeScript tool schemas must exactly match Python expectations - use transform functions when needed - -3. **Board lifecycle:** KiCAD's pcbnew module doesn't provide a global GetBoard() - must maintain references explicitly - -4. **Platform detection:** Each OS has different process management tools (pgrep, tasklist) - must handle gracefully - -5. **Virtual environments:** Auto-detecting venv dramatically improves DX - no manual PYTHONPATH configuration needed - ---- - -## 🙏 Acknowledgments - -- **KiCAD Team** - For the excellent pcbnew Python API -- **Anthropic** - For the Model Context Protocol -- **kicad-python** - For IPC API library (future use) -- **kicad-skip** - For schematic generation support - ---- - -## 📅 Timeline - -- **Start Time:** ~2025-10-26 02:00 UTC -- **End Time:** ~2025-10-26 09:00 UTC -- **Duration:** ~7 hours -- **Commits:** Multiple (testing, fixes, features, docs) - ---- - -## 🔮 Next Session - -**Priority Tasks:** -1. Test UI auto-launch with user -2. Fix get_board_info KiCAD 9.0 API issue -3. Implement component library detection -4. Begin IPC backend migration - -**Goals:** -- Component placement working end-to-end -- IPC backend operational for basic operations -- Real-time UI updates via IPC - ---- - -**Session Status:** ✅ **COMPLETE - PRODUCTION READY** - ---- - -## 🔧 Session 2: Bug Fixes & KiCAD 9.0 Compatibility (2025-10-26 PM) - -### Issues Fixed - -**1. KiCAD Process Detection Bug** ✅ -- **Problem:** `check_kicad_ui` was detecting MCP server's own processes -- **Root Cause:** Process search matched `kicad_interface.py` in process names -- **Fix:** Added filters to exclude MCP server processes, only match actual KiCAD binaries -- **Files:** `python/utils/kicad_process.py:31-61, 196-213` -- **Result:** UI auto-launch now works correctly - -**2. Missing Command Mapping** ✅ -- **Problem:** `add_board_text` command not found -- **Root Cause:** TypeScript tool named `add_board_text`, Python expected `add_text` -- **Fix:** Added command alias in routing dictionary -- **Files:** `python/kicad_interface.py:150` -- **Result:** Text annotations now work - -**3. KiCAD 9.0 API - set_board_size** ✅ -- **Problem:** `BOX2I_SetSize` argument type mismatch -- **Root Cause:** KiCAD 9.0 changed SetSize to take two parameters instead of VECTOR2I -- **Fix:** Try new API first, fallback to old API for compatibility -- **Files:** `python/commands/board/size.py:44-57` -- **Result:** Board size setting now works on KiCAD 9.0 - -**4. KiCAD 9.0 API - add_text rotation** ✅ -- **Problem:** `EDA_TEXT_SetTextAngle` expecting EDA_ANGLE, not integer -- **Root Cause:** KiCAD 9.0 uses EDA_ANGLE class instead of decidegrees -- **Fix:** Create EDA_ANGLE object, fallback to integer for older versions -- **Files:** `python/commands/board/outline.py:282-289` -- **Result:** Text annotations with rotation now work - -### Testing Results - -**Complete End-to-End Workflow:** ✅ **PASSING** - -Created test board with: -- ✅ Project creation and opening -- ✅ Board size: 100mm x 80mm -- ✅ Rectangular board outline -- ✅ 4 mounting holes (3.2mm) at corners -- ✅ 2 text annotations on F.SilkS layer -- ✅ Project saved successfully -- ✅ KiCAD UI launched with project - -### Code Statistics - -**Lines Changed:** ~50 lines -**Files Modified:** 4 -- `python/utils/kicad_process.py` -- `python/kicad_interface.py` -- `python/commands/board/size.py` -- `python/commands/board/outline.py` - -**Documentation Updated:** -- `README.md` - Updated status, known issues, roadmap -- `CHANGELOG_2025-10-26.md` - This session log - -### Current Status - -**Working Features:** 11/14 core features (79%) -**Known Issues:** 4 (documented in README) -**KiCAD 9.0 Compatibility:** ✅ Major APIs fixed - -### Next Steps - -1. **Component Library Integration** (highest priority) -2. **Routing Operations Testing** (verify KiCAD 9.0 compatibility) -3. **IPC Backend Implementation** (real-time UI updates) -4. **Example Projects & Tutorials** - ---- - -*Updated: 2025-10-26 PM* -*Version: 2.0.0-alpha.2* -*Session ID: Week 1 - Bug Fixes & Testing*