Files
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

2.5 KiB

ADDED Requirements

Requirement: SQLite Database Support

The backend SHALL support SQLite as an alternative to MySQL for offline/standalone deployments.

Scenario: SQLite mode initialization

  • WHEN database.type is set to "sqlite" in config.json
  • THEN backend SHALL create SQLite database at database.sqlitePath
  • AND initialize all required tables using SQLite-compatible syntax

Scenario: MySQL mode initialization

  • WHEN database.type is set to "mysql" or not specified in config.json
  • THEN backend SHALL connect to MySQL using credentials from database section
  • AND behave exactly as before this change

Scenario: SQLite thread safety

  • WHEN multiple concurrent requests access SQLite database
  • THEN backend SHALL use thread lock to serialize database operations
  • AND use check_same_thread=False for SQLite connection

Scenario: SQLite data persistence

  • WHEN app is closed and reopened
  • THEN all meeting data SHALL persist in SQLite file
  • AND be accessible on next launch

Requirement: Portable Extraction Path Configuration

The portable Windows build SHALL extract to a predictable folder name.

Scenario: Fixed extraction folder

  • WHEN portable executable starts
  • THEN it SHALL extract to %TEMP%\Meeting-Assistant instead of random UUID folder

Scenario: Windows Defender consistency

  • WHEN user launches portable executable multiple times
  • THEN Windows Defender SHALL NOT prompt for permission each time
  • BECAUSE extraction path is consistent across launches

MODIFIED Requirements

Requirement: Unified Configuration Schema

All configuration for frontend, backend, and whisper SHALL be in a single config.json file.

Scenario: Backend configuration loading

  • WHEN backend sidecar starts
  • THEN it SHALL read database type from config.json backend.database.type section
  • AND read SQLite path from config.json backend.database.sqlitePath section (if SQLite mode)
  • AND read database credentials from config.json backend.database section (if MySQL mode)
  • AND read API keys from config.json backend.externalApis section
  • AND read auth settings from config.json backend.auth section

Scenario: Configuration priority

  • WHEN both environment variable and config.json value exist
  • THEN environment variable SHALL take precedence

Scenario: Default values

  • WHEN configuration value is not specified
  • THEN system SHALL use sensible defaults (host: 127.0.0.1, port: 8000, database.type: mysql)