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>
2.5 KiB
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.typeis 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.typeis set to"mysql"or not specified in config.json - THEN backend SHALL connect to MySQL using credentials from
databasesection - 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=Falsefor 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-Assistantinstead 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.jsonbackend.database.type section - AND read SQLite path from
config.jsonbackend.database.sqlitePath section (if SQLite mode) - AND read database credentials from
config.jsonbackend.database section (if MySQL mode) - AND read API keys from
config.jsonbackend.externalApis section - AND read auth settings from
config.jsonbackend.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)