Files
Meeting_Assistant/openspec/changes/archive/2025-12-22-add-embedded-backend-packaging/proposal.md
egg e7a06e2b8f chore: Archive all pending OpenSpec proposals
Force archive the following proposals:
- add-audio-device-selector (complete)
- add-embedded-backend-packaging (19/26 tasks)
- add-flexible-deployment-options (20/21 tasks)

New specs created:
- audio-device-management (7 requirements)
- embedded-backend (8 requirements)

Updated specs:
- transcription (+2 requirements for model download progress)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 08:44:04 +08:00

1.8 KiB

Change: Add Embedded Backend Packaging for All-in-One Deployment

Why

Currently, deploying Meeting Assistant requires setting up both the Electron client and a separate backend server. For enterprise internal deployment, users want a simpler experience: double-click the exe and it works without needing to understand or configure backend services separately.

Additionally, when users first run the packaged application, the Whisper model download (~1.5GB) shows only "loading_model" status with no progress indication, causing confusion about whether the download is actually happening.

What Changes

  • New capability: Embedded Backend - Package FastAPI backend as a sidecar managed by Electron
  • Backend sidecar management - Electron starts/stops backend process automatically
  • Health check mechanism - Wait for backend readiness before loading frontend
  • Configuration unification - All settings (DB, API keys, auth) in single config.json
  • Backward compatible - Existing deployment method (separate backend) still works via backend.embedded: false flag
  • Model download progress - Show real-time download percentage for Whisper model

Impact

  • Affected specs: embedded-backend (new), transcription (modified)
  • Affected code:
    • backend/run_server.py (new) - Backend entry point for packaging
    • backend/build.py (new) - PyInstaller build script
    • backend/app/config.py - Support frozen executable paths
    • client/src/main.js - Backend sidecar management
    • client/src/preload.js - Expose backend status API
    • client/config.json - Extended configuration schema
    • client/package.json - Build configuration for backend resources
    • sidecar/transcriber.py - Model download progress reporting
    • scripts/build-client.bat - Integrated build script
    • scripts/build-all.ps1 - PowerShell build script