Skip to content

fix(recording): honor the selected save folder - #664

Open
themaddoxed wants to merge 6 commits into
Zackriya-Solutions:devtestfrom
themaddoxed:feature/recording-folder-selection
Open

fix(recording): honor the selected save folder#664
themaddoxed wants to merge 6 commits into
Zackriya-Solutions:devtestfrom
themaddoxed:feature/recording-folder-selection

Conversation

@themaddoxed

Copy link
Copy Markdown

Description

Adds a native Choose Folder action next to Open Folder and makes the persisted recording root apply to all future live recordings and future audio imports.

Behavior

  • Existing meetings keep their stored folder_path and are not moved.
  • New live recordings capture the selected root when recording starts.
  • New audio imports capture the selected root before the background import starts.
  • Invalid or unavailable configured roots fail before recording/import output begins; there is no silent fallback to the default folder.
  • Folder changes are validated and persisted transactionally, with rollback and serialized reads/writes.
  • The folder-only command reloads the latest preferences under the lock, so unrelated device and auto-save settings are preserved.
  • The UI changes only after persistence succeeds, blocks duplicate/racing controls, and reports picker/save/open errors.
  • Analytics records only folder_selected: true; no filesystem path is sent.

Related Issue

Fixes #481

Related to #516. This PR covers the same live-recording and import paths while adding transactional persistence, fail-fast destination handling, race protection, privacy-safe analytics, and focused tests.

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Performance improvement
  • Code refactoring
  • Other

Testing

  • Unit tests added/updated
  • Manual testing performed
  • All feature tests pass

Clean upstream/devtest branch:

  • 6 recording-preference persistence/concurrency tests passed.
  • 2 live-recording root tests passed.
  • 3 import-root/snapshot tests passed.
  • pnpm run build passed.

Source build with browser-test infrastructure:

  • Full Rust suite: 204 passed, 0 failed, 3 ignored.
  • Playwright: 14 passed (folder contract plus settings/theme regression).
  • pnpm exec tsc --noEmit passed.
  • pnpm run build passed.

Known upstream baseline checks outside this diff:

  • The full devtest Rust suite has one exact-duration float assertion failure: 159.999996ms != 160ms in audio::device_detection::tests::test_calculate_buffer_timeout_bluetooth. This PR does not modify that file.
  • Direct project-wide tsc --noEmit on devtest reports the existing missing bun:test declaration in tests/lib/blocknote-markdown.test.ts; the production Next.js build passes type checking.

Documentation

  • Documentation updated
  • No documentation needed

Checklist

  • Code follows project style
  • Self-reviewed the code
  • Added comments/tests for non-obvious concurrency behavior
  • README update is not needed

@themaddoxed
themaddoxed marked this pull request as ready for review July 21, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant