You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(v1.2.11): bundle ffmpeg, drag window, transcript preserved on summary failure
Six accumulated fixes:
1) ffmpeg auto-bundle (zero manual setup)
- Add imageio-ffmpeg to requirements.txt + collect_all() in spec.
- find_ffmpeg() prefers the bundled static binary (resolved via
imageio_ffmpeg.get_ffmpeg_exe()) over system PATH so end users don't
need brew/choco install ffmpeg anymore.
- Rewrite _ffprobe_duration to parse "Duration:" from ffmpeg stderr with
early-terminate Popen (imageio-ffmpeg ships ffmpeg only, no ffprobe).
- Cache result so audio call sites don't re-spawn.
- Drop the now-redundant CI install/copy steps on Win/Mac/Linux that
installed ffmpeg on the build runner.
2) Drag window
- Add core:window:allow-start-dragging + toggle-maximize permissions to
capabilities/default.json — they're NOT in core:default in Tauri 2.9.
Without them startDragging() rejects silently; the click did nothing.
- Make handleTopnavMouseDown fire-and-forget (drag-start must be called
synchronously while OS still has mouse button held).
- console.error with permission-hint instead of silent console.warn.
3) Upload + summary best-effort (transcript preserved on LLM failure)
- Pipeline: pre-check llm_api_key; skip summarize with
summary_skipped=true when missing — job still ends DONE with saved
transcript. Summary errors also isolated in their own try/except
so they never trash the upload pass.
- JobState: add transcript_saved, summary_skipped, summary_skip_reason.
- UploadAudioModal: pre-flight STT key check; recovery path when
status=failed but transcript_saved=true; friendly "Transcript đã lưu"
screen with hint to configure AI key in Settings.
4) Empty meeting cleanup + smart duplicate check
- On pipeline failure or cancellation with no transcript: DELETE the
meeting row + audio file instead of leaving it as 'failed'. Stops
cluttering the meeting list and prevents poisoning the duplicate
lookup for the user's next upload of the same file.
- find_meeting_by_hash filters out empty/failed rows (transcript IS
NULL OR empty), belt-and-suspenders for users who already have rows
from earlier versions.
5) Realtime WS error toast
- When openStreamingWebSocket returns null (all bases rejected), show
a clear toast with provider name + recovery hint instead of silently
downgrading to chunk mode.
6) Version bump 1.2.10 → 1.2.11.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments