Skip to content

Releases: luongndcoder/Scribble

v1.3.2

Choose a tag to compare

@github-actions github-actions released this 23 Jun 00:47
  • 🐛 Sửa lỗi khiến máy mới cài không upload được file ghi âm (báo "no such column: status").
  • ⚡ Nâng nhận diện giọng nói Soniox lên model v5 — chính xác hơn rõ rệt.
  • 🗣️ Tách người nói (diarization) tốt hơn nhờ engine v5 mới.
  • 💰 Giá sử dụng giữ nguyên, không đổi.
  • ⬆️ Mở app là tự nhận bản cập nhật mới nhất.

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 12 Jun 07:07
  • Ghi âm offline: nhận diện giọng nói chạy trên máy, không cần API key hay kết nối mạng. Hỗ trợ nhiều ngôn ngữ (macOS Apple Silicon).
  • Thay model tách người nói, tối ưu cho tiếng Việt và ngôn ngữ châu Á — giảm tình trạng nhiều người bị gộp thành một speaker.
  • Upload file: mặc định chỉ phiên âm, không tự tạo biên bản. Bật "Tạo biên bản tự động" nếu cần.
  • Nghe lại có đồng bộ transcript: audio phát đến đâu transcript cuộn theo, bấm mốc thời gian để tua.
  • Chế độ Local (offline): tắt "Dịch cabin" (dịch cabin cần Nvidia, không có model offline).
  • Sửa lỗi chọn chế độ Local vẫn yêu cầu mã Nvidia.
  • Sửa lỗi Soniox gộp toàn bộ vào một speaker ở phiên ghi âm dài (trên 1 tiếng).
  • Đổi kiểu biên bản mặc định sang "Phân tích chi tiết".

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 01:48
  • Ghi âm offline: nhận diện giọng nói chạy trên máy, không cần API key hay kết nối mạng. Hỗ trợ nhiều ngôn ngữ (macOS Apple Silicon).
  • Thay model tách người nói, tối ưu cho tiếng Việt và ngôn ngữ châu Á — giảm tình trạng nhiều người bị gộp thành một speaker.
  • Upload file: mặc định chỉ phiên âm, không tự tạo biên bản. Bật "Tạo biên bản tự động" nếu cần.
  • Nghe lại có đồng bộ transcript: audio phát đến đâu transcript cuộn theo, bấm mốc thời gian để tua.
  • Sửa lỗi chọn chế độ Local vẫn yêu cầu mã Nvidia.
  • Sửa lỗi Soniox gộp toàn bộ vào một speaker ở phiên ghi âm dài (trên 1 tiếng).
  • Đổi kiểu biên bản mặc định sang "Phân tích chi tiết".

v1.2.16

Choose a tag to compare

@github-actions github-actions released this 06 Jun 02:34

🎧 Nghe lại ghi âm ngay trong app — player play/pause + tua, hợp tông màu
🔍 Tìm trong transcript ở màn chi tiết — gõ tới đâu lọc + tô vàng tới đó
📄 Tải transcript thống nhất định dạng .txt ở mọi nơi
🕑 Thời lượng hiển thị gọn — qua 60 phút quy ra giờ (vd 1h 36m)
🔒 Khoá đổi cấu hình + rời màn hình khi đang ghi âm, tránh lỗi
🪟 Kéo được cửa sổ kể cả khi đang mở popup upload
⚡ Khởi động nhẹ hơn — giải nén sidecar bằng zstd, đồng nhất Win/macOS/Ubuntu

v1.2.15

Choose a tag to compare

@github-actions github-actions released this 30 May 16:25
  • ✨ Trợ lý AI giờ là tùy chọn — chỉ cần STT vẫn dùng đầy đủ
  • 🌐 Phát hiện mất mạng & thông báo mượt hơn
  • 🎨 Tinh gọn giao diện Cài đặt và thanh điều khiển
  • ⚡ Ổn định hiển thị biên bản + một số cải thiện nhỏ

v1.2.14

Choose a tag to compare

@github-actions github-actions released this 30 May 01:32
  • 🌐 Phát hiện mất mạng tự động + banner cảnh báo trong khi upload
  • 🔁 Soniox upload tách 2 bước (upload riêng → STT riêng) an toàn hơn
  • ⚡ Auto-retry chunk fail với backoff thông minh (1s → 2s → 4s)
  • 📜 Transcript dài 4h+ không còn lag (sliding window + auto-load)
  • 👥 Speaker IDs sequential 1-2-3-4 (hết cảnh nhảy 3 → 101)
  • 💾 Crash giữa upload không mất tiến trình — có nút "Thử lại"
  • ⏱ Hiển thị stage rõ: "Đang tải file" vs "Soniox đang xử lý"

v1.2.11

Choose a tag to compare

@github-actions github-actions released this 28 May 13:59
  • 🎬 Tự động cài ffmpeg — không cần brew install / choco install nữa
  • 🪟 Sửa lỗi không kéo được cửa sổ app trên Mac
  • 📝 Transcript luôn được lưu kể cả khi tạo biên bản AI lỗi (chưa cấu hình API Key) — không còn cảnh "công cốc"
  • 🧹 Auto-xóa cuộc họp rỗng khi upload lỗi (hết bug "đã tồn tại" giả)
  • 🔄 Soniox tự reconnect khi session timeout (~1h) + transcript dài 4h không còn lag

v1.2.10

Choose a tag to compare

@github-actions github-actions released this 28 May 03:36

Scribble v1.2.10 — Soniox Auto-Reconnect & Transcript Load-More

🐛 Bug Fixes

STT realtime ổn định cho meeting dài (Soniox)

  • Trước: Soniox real-time WebSocket có session cap server-side (~1h tùy plan). Khi vượt, server đóng kết nối nhưng app không biết — transcript dừng đột ngột trong khi timer vẫn chạy, audio thread chết âm thầm.
  • Giờ: app tự reconnect tới 8 lần với exponential backoff (cap 5s). Timeline start_ms/end_ms được giữ liên tục qua các session bằng cumulative offset. Frontend hiện badge 🔄 Soniox session reconnecting... trong ~1s khi đang nối lại. Lỗi rõ ràng nếu hết quota / sai API key (không còn nuốt âm thầm).

Transcript dài 4h không còn lag

  • Trước: render full transcriptParts (500+ đoạn × split-sentence × translation) làm DOM lag kinh khủng khi cuộc họp dài.
  • Giờ: pagination — chỉ render 200 đoạn cuối, nút "↑ Tải thêm 200 đoạn cũ hơn" ở đầu, scroll position được preserve. Export / Copy / Tạo biên bản vẫn lấy TOÀN BỘ transcript (pagination chỉ ảnh hưởng render).

Auto-scroll không yank user nữa

  • Trước: cứ có transcript mới là kéo scroll xuống bottom → khó đọc đoạn cũ khi đang ghi âm.
  • Giờ: chỉ auto-scroll khi user đang trong 80px cuối list. Cuộn lên đọc thoải mái.

📦 Downloads

  • macOS (Apple Silicon): .dmg hoặc auto-update
  • Windows (x64): .exe installer
  • Linux (amd64): .AppImage hoặc .deb

v1.2.9

Choose a tag to compare

@github-actions github-actions released this 26 May 05:30
2a32652

🎙️ Soniox realtime — speaker attribution + timestamps (the actual fix)

User report: dùng Soniox STT realtime, text đúng nhưng speaker labels bị lẫn lộntimestamps stuck ở 0:00 – 0:00 đặc biệt trong session dài.

Root cause

  1. Speaker jumbling. SonioxRealtimeStreamer.results() chỉ update current_speaker ở cuối loop event. Khi 1 event Soniox trả [S1, S2, S1] tokens trong cùng batch, guard "speaker change" check accumulated_final = [] (chưa merge) nên không flush — tất cả tokens collapsed vào speaker cuối cùng.

  2. Timestamps = 0:00. Backend không forward start_ms / end_ms của Soniox tokens cho realtime. Frontend fall back state.seconds từ recording timer, race với WS open → events đầu arrive lúc seconds=0 → cả startTime lẫn endTime pin về "0".

Fix

  • Rewrite token loop trong src-python/stt.py: flush speaker change INLINE, current_speaker advance per-token. Track segment_start_ms / segment_end_ms từ token offsets thực, gửi trong mọi event.
  • Frontend (use-streaming-stt.ts) prefer ms offsets từ backend khi có, fallback state.seconds cho Nvidia/STT khác.

Verify

Long session với 3+ speakers: speaker labels stable, timestamps grow đều (vd: 2:34 – 3:12). Log sẽ thấy [stt:soniox-stream] Speaker change mid-event: S1 -> S2, flushing: '...' khi đổi giọng giữa event.

v1.2.8

Choose a tag to compare

@github-actions github-actions released this 15 May 11:41
3bab6f9

🖱️ Drag window from the topnav (the actual fix)

Previous attempts wired data-tauri-drag-region everywhere, but the attribute is silently ignored on Tauri 2 + macOS Overlay-titlebar — confirmed via user testing. Switched to Tauri's recommended manual approach: an onMouseDown handler that imperatively calls getCurrentWindow().startDragging().

What changed

  • Click-drag anywhere in the topnav (other than buttons / language toggle / settings cog) moves the window
  • Double-click the topnav background triggers toggleMaximize() — mirrors native title-bar behavior
  • Interactive elements (buttons, links, inputs) still get their onClick — drag handler bails out when the target is one of those

macOS — first "silent update" test

This is the first release after v1.2.7's stable-cert work, so it's the proof point for the TCC permissions fix. Updating from v1.2.7 → v1.2.8 should NOT trigger a macOS permission dialog (mic, system audio). Both releases are signed with the same Scribble Code Signing identity, so TCC sees them as the same app.

If you DO still get prompted, something in the cert chain changed between builds — open an issue.