Skip to content

feat: save completed transcriptions as text files - #22

Open
nikolaykolibarov wants to merge 1 commit into
mainfrom
feat/issue-12-save-transcriptions
Open

nikolaykolibarov wants to merge 1 commit into
mainfrom
feat/issue-12-save-transcriptions

Conversation

@nikolaykolibarov

Copy link
Copy Markdown
Member

Summary

Closes #12.

Implements the agreed Settings-based workflow: choose a Transcription output folder, then enable Save transcriptions as .txt to save each successful transcription automatically.

  • Defaults off; requires a writable folder and persists the folder/toggle across restarts.
  • Creates a uniquely named UTF-8 .txt file for each completed transcription, preserving Unicode, whitespace, and line breaks without overwriting existing files.
  • Keeps automatic saving independent of clipboard copying and auto-paste. A failed file write leaves the completed transcription in History and surfaces a distinct error across the app, with a link to Settings.
  • Handles picker cancellation, missing/unwritable destinations, settings persistence failures, and recovery. Failed configuration writes roll back the in-memory change.
  • Includes backend/frontend regressions and regenerated Wails bindings.

Verification

  • go test ./... — passed.
  • npm test in frontend — 86 tests passed.
  • npm run build in frontend — passed.
  • wails build -s -m -nosyncgomod — macOS arm64 production build passed.
  • git diff --check — passed.
  • Playwriter: defaults, folder selection, enable/disable, cancellation, duplicate-dialog protection, persistence failure/retry, global error recovery, and layout at 950×620 / 850×550.
  • Isolated native macOS harness: real folder picker and App.transcribe completion with a local provider fixture; exact saved bytes, History, isolated clipboard dispatch, emitted ready/error state, failed writes, and disabled saving all passed.
  • Luna implementation audit — no blockers.

Native autosave end-to-end coverage is macOS only. The existing Windows CI covers the platform-independent configuration/package tests; Windows/Linux native picker and autosave runtime testing is not claimed.

Try it

  1. Open Settings → Transcription files, choose a writable folder, and enable Save transcriptions as .txt.
  2. Complete two recordings and confirm two separate .txt files contain their full transcripts.
  3. With Behavior → Auto-paste enabled, confirm transcription still pastes into the focused app while saving its file.
  4. Restart and confirm the folder and toggle persist.
  5. Make the selected folder unavailable and transcribe: verify the output error is visible while the transcript remains in History and copying/pasting still works. Choose a writable folder or disable saving to recover.

@nikolaykolibarov

Copy link
Copy Markdown
Member Author

Final review and verification

Reviewed commit a82248303ad0816ed510f1d84eadfcb5c774db65 against current main (3e6ba69523e545230321d10b9aed44da490bf764). The branch is up to date with main and fully pushed; the worktree is clean.

  • All four CI checks passed: macOS test and Windows test-windows on both the branch push and PR.
  • Local verification passed: full Go suite, 86 frontend tests, frontend production build, and macOS Wails production build.
  • Playwriter verified the settings/error flows and compact-window layout; a final live-backend check also confirmed the persisted output folder and enabled save toggle render correctly.
  • Native macOS smoke passed the actual picker and transcription-completion success/failure/disabled paths, with exact file bytes, History, isolated clipboard dispatch, and state events. The smoke harness's app source matches the published code.
  • Luna's implementation and published-PR reviews found no blockers or material evidence gaps.
  • No review comments or unresolved review threads are present. GitHub reports MERGEABLE / CLEAN.

Ready for squash and user testing. Native Windows/Linux autosave runtime testing remains outside the verified coverage; the Windows package/configuration checks passed.

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.

Feature request: Save transcriptions to a file

1 participant