mirror of
https://github.com/jhbruhn/respira.git
synced 2026-01-27 10:23:41 +00:00
Controller Software for the Brother PP-1 SKiTCH embroidery machine.
Fix bug where deleting a cached pattern prevented re-uploading because the filename was lost. After deletion, the pattern remains visible in the UI for re-editing and re-uploading, but the upload would silently fail because displayFileName was empty. The issue occurred because: 1. Pattern loaded from cache uses resumeFileName (from hook) 2. Local fileName state in FileUpload was never set (empty string) 3. After deletion, resumeFileName is cleared to null 4. displayFileName becomes empty, preventing upload Solution: - Add fallback to 'pattern.pes' when pesDataProp exists but no filename - This ensures re-upload works after deletion while keeping pattern visible - Pattern data (pesData) persists in App.tsx state for re-editing Now users can delete a cached pattern and immediately re-upload it with position adjustments or other modifications. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| public | ||
| src | ||
| .gitignore | ||
| eslint.config.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| QUICK_UI_IMPROVEMENTS.md | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| UI_BEFORE_AFTER_EXAMPLES.md | ||
| UI_DESIGN_ANALYSIS.md | ||
| UI_IMPROVEMENTS.md | ||
| UI_IMPROVEMENTS_IMPLEMENTED.md | ||
| UI_IMPROVEMENTS_SUMMARY.md | ||
| vite.config.ts | ||
Brother Embroidery Machine Web Controller
A modern web application for controlling Brother embroidery machines via WebBluetooth.
Features
- WebBluetooth Connection: Connect directly to Brother PP1 embroidery machines from your browser
- Pattern Upload: Load and upload PEN format embroidery files
- Pattern Visualization: Preview embroidery patterns on an interactive canvas with color information
- Real-time Monitoring: Monitor sewing progress, position, and status in real-time
- Machine Control: Start mask trace, start sewing, and manage patterns
Requirements
- Modern browser with WebBluetooth support (Chrome, Edge, Opera)
- HTTPS connection (required for WebBluetooth API)
- Brother PP1 compatible embroidery machine with BLE
Getting Started
Installation
npm install
Development
npm run dev
The application will be available at http://localhost:5173
Note: WebBluetooth requires HTTPS. For local development, you can use:
localhost(works with HTTP)- A reverse proxy with SSL
- Vite's HTTPS mode:
npm run dev -- --https
Build for Production
npm run build
The built files will be in the dist directory.
Preview Production Build
npm run preview
Usage
-
Connect to Machine
- Click "Connect to Machine"
- Select your Brother embroidery machine from the browser's Bluetooth device picker
- Machine information and status will be displayed
-
Load Pattern
- Click "Choose PEN File" and select a
.penembroidery file - Pattern details and preview will be shown on the canvas
- Different colors are displayed in the preview
- Click "Choose PEN File" and select a
-
Upload to Machine
- Click "Upload to Machine" to transfer the pattern
- Upload progress will be shown
- Pattern information will be retrieved from the machine
-
Start Mask Trace (optional)
- Click "Start Mask Trace" to trace the pattern outline
- Confirm on the machine when prompted
-
Start Sewing
- Click "Start Sewing" to begin the embroidery process
- Real-time progress, position, and status will be displayed
- Follow machine prompts for color changes
-
Monitor Progress
- View current stitch count and completion percentage
- See real-time needle position
- Track elapsed time
Project Structure
web/
├── src/
│ ├── components/ # React components
│ │ ├── MachineConnection.tsx
│ │ ├── FileUpload.tsx
│ │ ├── PatternCanvas.tsx
│ │ └── ProgressMonitor.tsx
│ ├── hooks/ # Custom React hooks
│ │ └── useBrotherMachine.ts
│ ├── services/ # BLE communication
│ │ └── BrotherPP1Service.ts
│ ├── types/ # TypeScript types
│ │ └── machine.ts
│ ├── utils/ # Utility functions
│ │ └── penParser.ts
│ ├── App.tsx # Main application component
│ ├── App.css # Application styles
│ └── main.tsx # Entry point
├── public/ # Static assets
├── package.json
├── tsconfig.json
└── vite.config.ts
Technology Stack
- React 18: UI framework
- TypeScript: Type safety
- Vite: Build tool and dev server
- WebBluetooth API: BLE communication
- HTML5 Canvas: Pattern visualization
Protocol
The application implements the Brother PP1 BLE protocol:
- Service UUID:
a76eb9e0-f3ac-4990-84cf-3a94d2426b2b - Write Characteristic:
a76eb9e2-f3ac-4990-84cf-3a94d2426b2b - Read Characteristic:
a76eb9e1-f3ac-4990-84cf-3a94d2426b2b
See ../emulator/PROTOCOL.md for detailed protocol documentation.
PEN Format
The application supports PEN format embroidery files:
- Binary format with 4-byte stitch records
- Coordinates in 0.1mm units
- Supports multiple colors and color changes
- Includes jump stitches and flags
Browser Compatibility
WebBluetooth is supported in:
- Chrome 56+
- Edge 79+
- Opera 43+
Not supported in:
- Firefox (no WebBluetooth support)
- Safari (no WebBluetooth support)
License
MIT