12 Commits

Author SHA1 Message Date
brentperteet
4281fa2b97 Add library git change detection and management system
Features:
- Yellow banner alert on Library tab when changes detected
- Custom diff viewer showing changed symbols/footprints by name
- Categorizes changes: symbols, footprints, and other files
- Color-coded status indicators (added/modified/deleted/untracked)
- Commit and push functionality from UI
- Smart authentication error handling with helpful messages
- Git configuration info display (remote URL, auth type, credential helper)
- Terminal opener for manual git credential setup
- Auto-refresh after commits to update status

Backend:
- check_library_git_status(): Checks for uncommitted/unpushed changes
- get_library_changed_parts(): Parses git status and categorizes by part type
- Socket handlers for git status, changes, commit, and push operations
- Authentication type detection (SSH vs HTTPS)
- Context-specific error messages for auth failures

Frontend:
- Git status banner with view changes button
- Modal with tabular display of changed parts
- Commit message input with commit/push buttons
- Real-time status updates during git operations
- Git config info section with terminal helper button

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 12:14:03 -06:00
brentperteet
7a7a9dfdcc Fix switchTab function scope for ES6 module compatibility
- Expose switchTab to window object so onclick handlers can access it
- Fixes "switchTab is not defined" error when using type="module"
- Module-scoped functions are not accessible from inline HTML onclick handlers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-27 14:01:35 -06:00
brentperteet
aa7f720194 Fix Three.js module loading for OrbitControls and STLLoader
- Switch from legacy script includes to ES6 modules with import map
- Import OrbitControls and STLLoader from three/addons/
- Update constructor calls to use imported classes directly
- Remove THREE namespace prefix for OrbitControls and STLLoader
- Fixes "THREE.OrbitControls is not a constructor" error

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-27 13:58:14 -06:00
brentperteet
5966f2b4b8 Add interactive 3D model viewer with STEP to STL conversion
- Install and integrate CadQuery for STEP to STL conversion on server
- Add convert_step_to_stl() function using CadQuery OCP bindings
- Implement Three.js-based interactive 3D viewer with OrbitControls
- Add STLLoader for loading converted models
- Auto-center and scale models to fit viewer
- Add lighting (ambient + 2 directional lights) for better visualization
- Enable mouse controls: rotate (left-click drag), zoom (scroll), pan (right-click drag)
- Add debug logging throughout conversion pipeline
- Display converted STL models in real-time when footprint is selected

Dependencies added: cadquery, cadquery-ocp, zstandard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-27 13:54:24 -06:00
brentperteet
fdfaa7e059 Fix 3D model viewer to show when editing existing parts
- Add 3D model request when loading part from database
- Add console logging for debugging model extraction
- Request model for both manual footprint selection and auto-loaded parts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-27 13:30:02 -06:00
brentperteet
adffdd211c Add 3D model extraction and download from embedded footprint models
- Parse embedded_files sections in KiCad footprint files
- Extract and decompress (zstd) embedded STEP models
- Add backend endpoint to serve 3D models
- Add UI section to display and download 3D models
- Include Three.js library for future interactive viewing
- Provide download link for extracted STEP files
- Note: Interactive 3D viewing requires STEP to STL/OBJ conversion (future enhancement)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-27 13:18:34 -06:00
brentperteet
5869d2c693 Enhance library browser with symbol/footprint resolution and datasheet links
- Add library path resolution for symbols and footprints using KiCad library tables
- Parse sym-lib-table and fp-lib-table with multi-line format support
- Resolve environment variables (KICAD9_SYMBOL_DIR, UM_KICAD, etc.)
- Auto-select symbol and footprint when loading part from database
- Add Datasheet column to parts search results with clickable links
- Make IPN, Description, Class, Manufacturer, and MPN fields read-only
- Remove file extensions (.kicad_sym, .pretty) from library dropdown display
- Fix column access in search results using index-based retrieval

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-27 12:44:10 -06:00
brentperteet
0de59dabfc Add complete manufacturing build pipeline with enhanced features
Build Pipeline:
- Generate schematic PDF with all sheets
- Generate 11 individual board layer PDFs (copper, silkscreen, soldermask, paste, fabrication, outline)
- Add "Layer: <name>" text overlay to each board layer PDF
- Merge all board PDFs into single document
- Generate Gerbers with all layers
- Generate drill files in Excellon format
- Generate ODB++ package (optional)
- Export STEP 3D model
- Generate BOMs for active variant
- Package all outputs into timestamped ZIP file
- Real-time progress bar (0-100%) with status updates
- Detailed build log with timestamps
- Auto-download ZIP on completion

Symbol & Footprint Library Integration:
- Browse KiCad symbol libraries from UM_KICAD environment variable
- Live SVG preview of selected symbols with pins, graphics, and labels
- Browse KiCad footprint libraries (.pretty directories)
- Live SVG preview of selected footprints with pads and silkscreen
- Associate symbols and footprints with parts in database
- Store as LibraryName:ComponentName format

WebSocket Connection Improvements:
- Increase ping timeout to 120 seconds (from 60s default)
- Add 25-second ping interval to keep connections alive
- Wait 10 seconds for reconnection before shutdown (handles page refresh)
- Cancel shutdown timer when client reconnects
- Use hidden link download to preserve WebSocket connection (not window.location)

PDF Text Overlay:
- Add reportlab and PyPDF2 imports for PDF manipulation
- Add add_text_overlay_to_pdf() helper function
- Overlay layer names in upper left corner of board PDFs
- Use Helvetica-Bold 14pt font at position (50, 750)

Bug Fixes:
- Fix BOM generator argument order (schematic, project, variant, dnp_uuids, pcb_file)
- Pass empty JSON array '[]' for dnp_uuids instead of output directory
- Move generated BOM files from project dir to output dir for packaging
- Fix datetime import (was missing)
- Use app_args instead of config for getting schematic/board file paths

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-23 13:01:35 -06:00
brentperteet
bcb2c70e93 Add create new part functionality to library browser
- Add UI to create parts from missing IPNs in spreadsheet
- "+ Add New Part" button switches to create part view
- Auto-populate fields from spreadsheet (description, class, manufacturer, MPN)
- Normalize class field (uppercase, replace special chars with underscores)
- Add optional datasheet URL field
- Exclude section header rows (no manufacturer/MPN)
- Cancel button returns to browser view
- Align logo banner and h1 header to left

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-23 09:30:19 -06:00
brentperteet
55235f222b Add library browser, BOM generation, and UI improvements
- Add parts library browser with ODBC database search
- Implement hierarchical BOM generation with PCB side detection
- Add STEP export and PCB rendering functionality
- Adjust page width to 80% up to 1536px max
- Add library-only mode for standalone library browsing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-22 19:26:36 -06:00
brentperteet
ab8d5c0c14 added windows interaction test
adding more variant stuff
2026-02-22 13:31:14 -06:00
brentperteet
3f0aff923d initial commit 2026-02-22 08:16:48 -06:00