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.
Loading State Improvements: - Add SkeletonLoader component with pattern info, canvas, and connection skeletons - Show loading spinner on file selection and during pattern upload - Display upload progress with enhanced progress bar and percentage - Add success confirmation message when upload completes - Show thread color preview dots inline with pattern info (up to 5 colors) Visual Polish & Animations: - Add custom animations: fadeIn, slideInRight, pulseGlow, skeleton-loading - Enhance all cards with subtle hover shadow effects - Improve header with richer gradient (blue-600 → blue-700 → blue-800) - Polish error messages with icons and improved layouts - Enhance empty state with decorative patterns and feature highlights - Add smooth transitions to all NextStepGuide states - Current color block pulses with blue glow animation - Color blocks have hover states for better interactivity Pattern Upload & Lock Functionality: - Hide upload button after pattern is uploaded (patternUploaded && uploadProgress === 100) - Disable pattern dragging when uploaded with visual lock indicator - Pattern position overlay shows amber background with lock icon when locked - Pattern remains in canvas after deletion for re-editing and re-upload - Delete pattern from cache when deleting from machine to prevent auto-resume - Add LockClosedIcon to indicate locked pattern state Pattern Management: - Keep pattern data in UI after deletion for repositioning and re-uploading - Clear machine-related state but preserve pattern visualization - Reset upload progress and pattern uploaded state on deletion 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| public | ||
| src | ||
| .gitignore | ||
| COMPONENT_IMPLEMENTATION_CHECKLIST.md | ||
| DESIGN_TOKENS_REFERENCE.md | ||
| eslint.config.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| QUICK_UI_IMPROVEMENTS.md | ||
| README.md | ||
| 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