Controller Software for the Brother PP-1 SKiTCH embroidery machine.
Find a file
Jan-Henrik Bruhn 4428b8472c Properly preserve pattern filename after deletion for re-upload
Improve the previous fix by actually preserving the original filename
from the cache instead of using a generic fallback. This is a cleaner
solution that maintains the actual pattern name.

Changes:
- Add currentFileName state to App.tsx to track pattern filename
- When loading cached pattern, preserve resumeFileName in currentFileName
- When loading new pattern, pass fileName to handlePatternLoaded callback
- Pass currentFileName to FileUpload component as prop
- Use currentFileName in displayFileName logic (prioritized first)
- Remove generic 'pattern.pes' fallback

Now when you delete a cached pattern and re-upload it, the original
filename (e.g., "mypattern.pes") is preserved instead of using a
generic fallback name. This maintains better traceability.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-06 23:42:47 +01:00
.claude Fix PEN encoding and improve UI layout 2025-12-06 12:56:27 +01:00
public initial 2025-11-30 22:18:14 +01:00
src Properly preserve pattern filename after deletion for re-upload 2025-12-06 23:42:47 +01:00
.gitignore Migrate to Tailwind CSS and fix canvas zoom issues 2025-12-05 23:25:55 +01:00
eslint.config.js initial 2025-11-30 22:18:14 +01:00
index.html initial 2025-11-30 22:18:14 +01:00
package-lock.json Add Heroicons and remove button hover lift effect 2025-12-05 23:44:48 +01:00
package.json Add Heroicons and remove button hover lift effect 2025-12-05 23:44:48 +01:00
QUICK_UI_IMPROVEMENTS.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
README.md initial 2025-11-30 22:18:14 +01:00
tailwind.config.js Implement comprehensive dark mode support and improve pattern visibility 2025-12-06 20:12:46 +01:00
tsconfig.app.json initial 2025-11-30 22:18:14 +01:00
tsconfig.json initial 2025-11-30 22:18:14 +01:00
tsconfig.node.json initial 2025-11-30 22:18:14 +01:00
UI_BEFORE_AFTER_EXAMPLES.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
UI_DESIGN_ANALYSIS.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
UI_IMPROVEMENTS.md Fix PEN encoding and improve UI layout 2025-12-06 12:56:27 +01:00
UI_IMPROVEMENTS_IMPLEMENTED.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
UI_IMPROVEMENTS_SUMMARY.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
vite.config.ts Migrate to Tailwind CSS and fix canvas zoom issues 2025-12-05 23:25:55 +01:00

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

  1. 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
  2. Load Pattern

    • Click "Choose PEN File" and select a .pen embroidery file
    • Pattern details and preview will be shown on the canvas
    • Different colors are displayed in the preview
  3. Upload to Machine

    • Click "Upload to Machine" to transfer the pattern
    • Upload progress will be shown
    • Pattern information will be retrieved from the machine
  4. Start Mask Trace (optional)

    • Click "Start Mask Trace" to trace the pattern outline
    • Confirm on the machine when prompted
  5. 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
  6. 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