Skip to content

Follow-up: packaging/release + remaining ease-of-use work #6

Description

@armpro24-blip

Tracking issue for work deferred after the in-app config / backend-supervision rework (branch feat/in-app-config-and-backend-supervisor).

Shipped in that branch

  • Electron now launches/supervises the Python backend (no terminal); startup/error gate UI.
  • In-app Settings (⚙): LLM key/model + Test connection, Whisper size/device, preview backend — saved per-user, applied via backend restart.
  • /config, /config/test-llm, /audio/devices endpoints; audio device picker.
  • Silent LLM-fallback now surfaced as an actionable toast; simple/advanced diagnostics; summary expand modal (no more window.alert).

1. One-click packaging / release (biggest remaining item)

Goal: a non-technical user downloads one installer — no Python/Node, no scripts.

  • Freeze the backend with PyInstaller (one-folder); ship via electron-builder extraResources. Highest risk: native libs (ctranslate2, onnxruntime, sounddevice/portaudio, soundfile/libsndfile, silero-vad, soundcard).
  • electron-builder config: NSIS (Windows) + dmg (macOS); spawn the bundled backend exe via process.resourcesPath (the BackendSupervisor already abstracts spawn/attach — extend path resolution for app.isPackaged).
  • main.py: branch PROJECT_ROOT on sys.frozen; move writable paths (DB, exports) to %APPDATA%/~/Library/Application Support (currently parents[3], read-only under Program Files).
  • Models downloaded on first run (not bundled); default bundle to CPU/int8, detect CUDA at runtime; optional GPU pack later.
  • Code signing (Authenticode / Apple notarization) to avoid SmartScreen/Gatekeeper.
  • Estimate: ~4–6 weeks for a signed Windows installer; macOS adds calendar time.

2. Smaller follow-ups

  • Emit translation_unavailable errors the same way summaries now do (LLMTranslator + manager call site).
  • Real model-download progress (byte-level) instead of the coarse phase flag.
  • Robust venv handling: the desktop spawn path needs app/backend/.venv to be Python 3.12+. Detect a wrong-version/empty venv pre-spawn and show a clear "run installer" message (today it surfaces as a runtime ModuleNotFoundError in the gate).
  • Optional: Chinese UI i18n (READMEs are bilingual; UI strings are still English-only) — lightweight t() dictionary.
  • Optional: incremental App.tsx decomposition (Header/Transcript/Workspace/HealthDrawer) — deferred as low-risk-only.

Verification status of the shipped branch

  • Backend boots and serves /health {ready,phase}, /config, /audio/devices, /config/test-llm over HTTP (port override via MEETINGBRO_PORT confirmed).
  • Frontend tsc (both configs) + production vite build pass.
  • Electron GUI not visually driven in CI; supervisor spawn command + attach probe verified against a live backend.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions