What's New
Product updates and release notes for the TerpScribe desktop assistant.
Version 0.9.48
July 26, 2026Fixed
- Pure Logprob Candidate Scoring: Reduced anchor density score multiplier to
0.01to prevent translated English stopword inflation from outscoring raw acoustic decoding confidence (avg_logprob).
Version 0.9.47
July 25, 2026Fixed
- Log-Probability Candidate Scoring & Anti-Translation: Implemented
avg_logprobcandidate decoder scoring with native anchor density boost to guarantee native transcription over forced translation during language switching in dual-language mode. - Decoder Context Drift Prevention: Completely removed
initial_promptfrom Whisper base decode options to eliminate English prompt context drift during non-English speech recognition. - Accented Character Loop Suppression: Expanded
suppress_character_loopsinengines/normalize.pyto cover accented vowel repetitions (e.g.ÉÉÉÉ->ÉÉÉ).
Version 0.9.46
July 25, 2026Fixed
- System Prompt & Stutter Suppression Verification: Reinforced prompt leak self-hallucination suppression and single-letter stutter regex filters.
Version 0.9.45
July 24, 2026Fixed
- System Prompt Self-Hallucination & Subtitle Suppression: Added prompt self-hallucination guard in
engines/whisper.pyto wipe out echoed system prompts, expandedNON_SPEECH_HALLUCINATIONSinaudio.pyto filter stock subtitle credits (provided by microsoft corporation), and added single-character stutter suppression. - Universal Translation-Suppression & Quick Reference Isolation: Isolated Quick Reference as a 100% inert UI notepad and enabled dual-pass translation suppression across all engines.
Version 0.9.44
July 24, 2026Fixed
- Contextual Initial Prompt Framing & Keyword Sanitization: Stripped metadata badges/role suffixes (such as
- CR) from dynamic keywords and wrapped terms in a natural sentence context (The following transcript may mention these names and terms: ...) to prevent Whisper from interpreting entity lists as prior audio transcript. - N-Gram Multi-Word Repetition & Prompt Leak Guards: Added
is_repetition_loop(detecting 1-20 word phrase loops) andis_prompt_leakacross engines and audio pipeline to eliminate hallucinated entity repetition loops during silence, pauses, or low speech energy.
Version 0.9.43
July 24, 2026Added & Fixed
- Character Repetition Loop Suppressor: Added post-processor to collapse 4+ repeated consecutive letters down to 3 (e.g.
Mmmmmmmm->Mmm) and drop standalone hesitation tokens to eliminate Whisper hallucination loops during speaker hesitations or background noise.
Version 0.9.42
July 23, 2026Fixed
- Formatted Number Entity Highlighting: Updated number entity pattern to include thousands separators (
,,.) and decimal points as part of the yellow entity highlight (e.g.4,291instead of splitting into4and291). - Single-Click Quick Reference: Clicking formatted numbers in transcript text now correctly adds the complete formatted string (e.g.
4,291) to Quick Reference.
Version 0.9.41
July 23, 2026Added
- Dedicated Public Model Repository Integration: Updated
WhisperEnginemodel streaming URL to point to the dedicated public release repository, enabling 1-click model downloads for all users while keeping the core codebase 100% private.
Fixed
- SSL Certificate Verification Handling: Added unverified SSL context fallback in
_download_from_github()to prevent macOS Python certificate verification errors on fresh system installations.
Version 0.9.40
July 23, 2026Added
- Direct GitHub Release Model Streaming:
WhisperEnginestreams model zip archives directly from GitHub Release assets with HTTP download and zip extraction callbacks for precise progress bar tracking, plus automatic fallback to Hugging Face.
Fixed
- Audio Overlap & Soft Gain Tuning: Reduced
OVERLAP_CHUNKSto12(~360ms) inaudio.pyto prevent boundary word duplication, and capped peak software audio gain at2.0x(0.65 target RMS) to eliminate background noise amplification. - Scenario-Agnostic Prompt Conditioning: Removed hardcoded legal domain prompts and added a clean, neutral prose primer fallback ('The following is a clear, accurate, natural transcript.') when no custom Quick Reference terms are configured.
- Single-Pass Master Normalization: Unified all number normalization (unicode non-breaking space flattening, short/long scale multipliers, small prose digit restoration) into
engines/normalize.pyexecuted as the final post-processing pass inapp.py.
Version 0.9.39
July 23, 2026Fixed
- Language-Aware Number Normalization & Homograph Protection: Fixed a cross-language homograph issue where the English word 'once' was incorrectly converted to the digit '11' (thinking it was Spanish for 11). Refactored
engines/normalize.pyto scope number-word dictionaries by detected language (en,es,pt,fr) and added protection for English words like 'once', 'dos', 'doze', and 'cents'. Updatedaudio.pyandengines/whisper.pyto pass the detected language to the normalizer.
Version 0.9.38
July 23, 2026Fixed
- Instant Model Download Progress & Real-Time Bar Feedback: Resolved an issue where the model download progress bar remained empty throughout the download process. Patched
tqdmprogress monitoring inengines/whisper.pyandengines/canary.pyto stream real-time percentage progress (2%→95%→100%) and updatedapp.pyto display immediate visual feedback (2% Initializing connection...) the instant downloading begins.
Version 0.9.37
July 22, 2026Added
- MLX Whisper Engine Integration: Added native support for
mlx-community/whisper-large-v3-turbowith fast Apple Silicon GPU inference, low-volume hallucination suppression, and zero-speech thresholding. - Anchor Vocabulary & Multi-Script Filtering: Integrated high-frequency anchor vocabulary dictionaries for 9 Latin-script languages (
en,es,fr,de,it,pt,nl,pl,tr) and Unicode script range classifiers to override false language tags while suppressing Cyrillic, CJK, and Arabic script leaks unless explicitly selected. - N-Gram Repetition Loop Suppressor (Guard 0): Added pre-processing regex filtering to catch and drop phrase repetition loops (1–3 word phrases repeating 4+ times) caused by background music or continuous audio noise.
- Acoustic Gate & Non-Speech Suppressor: Integrated Peak-to-RMS Crest Factor acoustic envelope analysis to drop flat background hiss (
crest < 2.8), stripped bracketed music annotations ('[Music]','♪'), and filtered non-speech hallucination dictionaries. - Peak Target Normalization: Automatically scaled audio segments to a
0.75target peak before engine inference to dramatically improve recognition of quiet phonemes. - Non-Blocking CoreAudio Pipe Reading: Migrated native process tap pipe reads to non-blocking system calls, eliminating random stream freezes and decoupling waveform signal meter rendering to 33 FPS.
Version 0.9.35
July 22, 2026Fixed
- Native Process Pipe Drain: Fixed native process pipe reading using non-blocking OS system calls to eliminate random transcription and signal meter freezes.
- Watchdog Auto-Recovery: Restored full responsiveness of the 3.0-second stream watchdog, allowing self-healing auto-reconnections when audio routes or sample rates change.
- Meter Decoupling: Optimized waveform signal meter animation loop to decouple energy updates from redraws, halving main-thread rendering overhead.
- Backpressure Safety: Added backpressure safety capping (16,000 samples) to the Swift CoreAudio process tap helper accumulator.
Version 0.9.33
July 20, 2026Added
- Smart Boundary VAD & Overlap Context: Optimized continuous speech splitting with inter-word volume dip detection and a 1.35-second acoustic overlap tail to eliminate mid-word cuts and boundary hallucinations.
- Cross-Segment Deduplication & Digit Welding: Added a 12-word streaming deduplication filter to strip repeated boundary words, and integrated a post-processing regex pass to weld split compound ordinals (e.g., '24th', '31st').
- Rapid Micro-Turn Language Detection: Refactored heuristic language identification with Short-Form Anchors ('yes', 'sí', 'absolutely', 'correcto') and dynamic hysteresis bias for instant color-tag switching on rapid conversational turns.
- Audio Capture Auto-Recovery & Stderr Drain: Added non-blocking
proc.stderrreading to prevent 64KB OS pipe deadlocks, and integrated a self-healing auto-reconnect loop to recover within 300ms from audio device switches. - UI & Accessibility Polish: Added single-line transcript selection/highlighting with a high-contrast theme palette (
#2A3F5Fdark,#DBEAFElight), fixed Pause Detection slider midpoint dot clipping, and aligned settings panel margins.
Version 0.9.32
July 20, 2026Added
- Native CoreAudio Process Tap Migration: Replaced the legacy PyAudio and BlackHole virtual driver setup with a native macOS 14.4+ CoreAudio Process Tap (
AudioHardwareCreateProcessTap) to capture uncompressed, zero-latency system audio natively without external driver installations. - High-Fidelity Audio Engineering Pass: Implemented mastering-grade polyphase FIR resampling (
AVSampleRateConverterAlgorithm_Mastering+AVAudioQuality.max), phase-aware stereo-to-mono downmixing to eliminate signal cancellation, and Float32 to Int16 scaling with explicit clamping (max(-32768.0, min(32767.0, sample * 32767.0))). - UI Cleanup & Settings Panel Polish: Eradicated the legacy 'Input Device' configuration card, centered the Live Waveform Meter next to the settings gear button in the live audio status bar, and adjusted settings rollout animations from 355px to 295px.
- Streamlined 2-Step Onboarding: Collapsed the setup wizard down to a clean 2-step sequence. Step 1 handles Screen & System Audio Recording TCC permissions check using an automated background thread checking native tap output, and Step 2 configures language settings.
- Settings Migration Bridge: Implemented a version-checking migration hook that automatically detects legacy upgrades, resets the wizard state to False, and saves settings to seamlessly transition existing users.
Version 0.9.26
July 17, 2026Added
- HIG-Compliant App Icon Resizing: Rescaled the main blue squircle to a HIG-compliant 824x824 size (100px margins) for both the Finder icon (
terpscribe.icns) and the runtime Dock icons (dark, light, clear, tinted themes). Added a dedicated centered, scaled-up quill icon (icon-quillonly.png) for all UI logos and favicons while maintaining the original offset asset (icon-quill-dock.png) for Dock compositing. - Settings Panel Header Redesign: Renamed the settings panel header to 'TerpScribe Settings', removed the blue speaker icon to the left, and removed the subtitle text.
- Account Dashboard Billing Redesign: Integrated homepage-identical Monthly and Annual pricing cards (scaled down for fit) inside the portal account dashboard, and renamed 'Professional Monthly/Annual' to 'TerpScribe Monthly/Annual' across the entire website for brand consistency.
Version 0.9.24
July 16, 2026Fixed
- Onboarding Setup Crash Guard: Guarded UI properties inside
_commit_lang()so they don't triggerAttributeErrorwhen onboarding completes prior to main window initialization. - Waveform Meter Energy level: Corrected the waveform meter property polling reference to use
current_energyinstead ofsmoothed_energy. - Verified BlackHole 2ch UID: Documented the verified CoreAudio UID string for BlackHole 2ch to ensure aggregate output device creation does not fail.
- Threshold & Silence Settings Persistence: Saved auto-threshold, auto-silence, and manual slider coordinates to
settings.jsonso they are restored on relaunch. - Pre-startup Input Scan Fallback: Implemented PyAudio fallback scanning in the setup wizard to locate the virtual audio loopback device before main threads start.
- Settings Animation Rebuild Reset: Reset settings animation progress, height, and active callbacks on UI rebuild to prevent flat/invisible settings panel after setup wizard completes.
Version 0.9.22
July 15, 2026Added
- Model Download Resilience: Added connection timeouts and automatic 3-attempt retry logic to the speech-to-text offline engine model zip download.
- Settings Panel Card Redesign: Refactored the collapsible audio settings panel into high-fidelity card containers with custom icons, layout alignment, and border radii matching standard UI mockups.
- Symmetric Alignment & Sizing: Aligned the 'Auto Detect' checkboxes vertically inside Column 2 of the settings cards so they remain locked when toggled, maximizing the width of the Pause Detection slider and Language Pair menus.
- Ghosted Language States: Dropped grid collapse transitions; language dropdown menus now ghost (disable/grey out) gracefully when Auto Detect is active.
- Slop-Free Toggle Animation: Fixed panel toggle 'shaking' by introducing strict
after_cancelcallback guards, preventing competing animation loops from competing over height values. - Descender Cutoff Fix: Re-introduced
pady=2to settings label constructors to guarantee descender line clearance on macOS. - Emoji Option Prefixing: Prefixes input audio options with 💻 for internal microphones and 🎙️ for external devices.
Fixed
- Tester Metallib Crash resolved: Downgraded the MLX neural network framework dependency bundle to version 0.29.4 to resolve the default metallib startup load crash on macOS 13, 14, and 15.
Version 0.9.20
July 14, 2026Added
- Audio Setup Wizard Redesign: Reorganized step 4 video call routing instructions into three distinct horizontal panels with colored letter badges and support for transparent PNG logos. Expanded the layout container to 720px width and adapted text wrapping bounds to prevent long device names from clipping. Added a styled theme-red 'Skip Setup' button, reformatted layout descriptions in step 1 and step 2 to print one sentence per line, and enlarged the step tracker indicator.
- Brand Logo Descender Slicing: Added explicit height parameters to large logo labels and expanded the About window height to 290px, preventing letters with descenders from being cut off.
Fixed
- Root Click Crash Guard: Added checks in the root click handler to prevent TclError crashes when the wizard replaces the main app layout.
Version 0.9.18
July 12, 2026Added
- Optimized Pause Detection Range: Adjusted the Pause Detection slider range to 200–1000 ms with 16 steps (50 ms increments), centering the 600 ms default value at the mathematical midpoint of the slider track.
- Midpoint Dot Indicator: Added a visual midpoint dot indicator centered directly beneath the Pause Detection slider track, layered behind the slider to prevent intercepting user clicks on the slider handle.
Changed
- Hidden Speech Trigger Volume controls: Hidden the 'Auto' checkbox and slider controls from the settings panel while keeping automatic trigger volume calculations active in the background.
- Hidden Noise Floor indicators: Hidden the Noise Floor and energy value indicators from the settings panel.
- Compact Settings Panel Layout: Reduced the animated settings panel target height to 290px to match the new compact layout, and renamed the 'Pause Detection Delay' label to 'Pause Detection'.
Version 0.9.16
July 9, 2026Added
- Self-Hosted GCS Model Downloader: Migrated ASR model weight downloads to Google Cloud Storage (GCS) to bypass Hugging Face firewall block issues in restricted regions (such as China).
- Robust macOS SSL Certificate Bypass: Integrated an unverified SSL context and custom chunked stream loader to completely bypass macOS SSL certificate verification failures common in Python installations.
- Legacy Cache Path Resolution: Added folder sanitization to exclude macOS hidden system files (like
.DS_Store) when resolving legacy Hugging Face snapshot paths, preventing runtime crashes for existing users. - Tagline Addition: Added the tagline 'Made by interpreters, for interpreters.' styled in italics under the version label in the custom About TerpScribe dialog.
Version 0.9.15
July 7, 2026Added
- Quick Reference Sidebar Drag-and-Drop: Built a coordinate-tracking drag-and-drop system to reorder items inside the sidebar scroll container. Computes absolute mouse offsets relative to the scroll container root and updates widget positions dynamically, maintaining Tkinter grab focus.
- Theme Schema Decoupling & Swatch Picker: Decoupled visual reference item colors from core app code. Implemented a dynamic
QUICK_REF_PALETTESmapping inthemes.pyand a custom centered TopLevel modal dialog to select, clear, and render 9 highlight colors with automatic keyboard focus. - Phone Number Entity Category: Added phone number pattern matching as a fifth entity category returned from extraction, wired highlights to highlight themes, and implemented exclusion rules with email, date, and name entities.
- US Highway & Caribbean Address Matching: Added Interstate/Highway and street intersection patterns to English address heuristics, and neighborhood labels (
Reparto Miramar) to Spanish address checks. - Sidebar Capacity Warning Alerts: Designed a dynamic sidebar warning frame displaying center-aligned, high-legibility red text instructions that wrap dynamically and fade out after 4 seconds when the 30-item cap is hit, and gridded inline error labels directly in the edit/add modal view.
- Onboarding Configuration Card: Constructed an inline settings card above the main transcription textbox to prompt first-time users for default transcription language pairs.
Fixed
- Spelled-Out Number Normalization Summing: Developed a compatibility validator loop in the ASR digit normalizer to distinguish consecutive numbers (like 'twenty twenty') and prevent incorrect summing.
- Docket Number Highlighting Exclusions: Tightened date parsing patterns using negative lookaheads to prevent legal docket/case reference numbers (e.g.
2024-CV-0045) from triggering false date highlights. - Month Name Patterns: Removed a duplicate month name in the Italian months pattern.
Version 0.9.13
July 5, 2026Added
- Two-Tier FAQ System: Built a categorized public
/faqpage structured with Native details-summary accordions and schema-compliant JSON-LD structured data, and added a matching compact FAQ preview section on the home page. - WebP Graphics Transition: Swapped out the generic vector SVGs under the feature grid cards with aspect-contained custom WebP assets (
icon-scribe.webp,icon-lock.webp, andicon-confidential.webp) positioned bare against the card background. - Formspree Contact Integration: Refactored the
/contactfeedback submission process to run secure client-side AJAX requests directly to Formspree endpoints. Removed obsoleteresendandnodemailernpm packages, default-denied Firestore rules for client writes to/feedbackcollections, and cleaned up unused server actions. - Mobile Menu Link Shortening: Changed the main top navbar links to 'Guide' and 'Portal' to ensure a clean, responsive layout alignment on narrower mobile viewports.
- Typography & Color Gradients: Aligned all page titles (Setup Guide, FAQ, What's New, and Account Dashboard) to share the same blue-to-green linear gradient background-clip text colors as the hero header. Applied the
"American Typewriter"font family with a normal (regular) style weight to the FAQ, Definition, Core Capabilities, and Pricing section titles. Refined the hero wave separator backdrop animation, configuring custom mask gradient boundaries (opaque at the ends, dimmed in the center) to support high visual legibility.
Version 0.9.12
July 1, 2026Added
- On-Demand Model Downloading & Caches Integration: Shifted model weights out of the application bundle to target the macOS Caches directory (
~/Library/Caches/TerpScribe), reducing the DMG size from 2.43GB to under 150MB. Added a dynamic downloading overlay using the customWaveformMeterand class-leveltqdmmonkey-patches to report real-time, throttled percentage progress updates. - Interactive Listening State Synchronization: Configured the application to start in a 'Paused' state while the model is downloading or loading, automatically transitioning to an active 'Listening...' state once the model is fully loaded.
- 14-Day Free Trial Promotion: Expanded the platform's default free trial window from 7 days to 14 days. Applied updates across the homepage marketing copy, Hero CTAs, pricing card buttons, and the web portal dashboard display states.
- Cloud Functions Alignment: Synced the Firebase Cloud Functions backend triggers (
createUserSubscriptionandbondMachineHTTPS endpoint) to provision 14-day trial periods on new user signups. - Entity Extraction Rebranding: Repositioned the automated sidebar highlights from generic quick-reference placeholders to advanced 'Automated Real-Time Entity Extraction' terminology.
Version 0.9.11
June 30, 2026Added
- Refined Heuristic Language Validation: Constrained language detection to the two selected dropdown languages when Auto-Detect is disabled. This force-classifies speech segments to either candidate, ensuring correct language tagging/coloring and completely preventing acoustic warning false-positives.
- Custom Rectangular DMG Layout: Reconfigured the DMG builder window to a standard 600x400 points rectangular layout. Adjusted icon center coordinates to Y=230 to prevent visual occlusion of background text instructions.
Version 0.9.10
June 30, 2026Added
- CDN Update Hosting: Migrated the distribution zip package hosting to a public, token-less Google Cloud Storage URL. This resolves Next.js memory buffering issues (500 errors) on Cloud Run and prevents download token expiration issues (403 errors).
- DMG Container Notarization & Stapling: Automated full Apple notarization and stapling for the final custom DMG package, ensuring instant Gatekeeper clearance on testers' machines.
Fixed
- XML Feed Entity Escaping: Escaped reserved ampersand characters (
&) inappcast.xml, resolving Sparkle update feed parsing failures.
Version 0.9.9
June 29, 2026Added
- Production Sparkle Updater Integration: Implemented a dynamic updater bridge loaded via PyObjC (
updater_bridge.py) that binds natively withSparkle.frameworkinside frozen macOS builds. - Updater Check Settings UI: Appended a new row (Row 6) to the collapsible settings panel displaying the current app version and a 'Check for Updates' button. Expanded the settings panel slide rollout animation from 285px to 325px.
- Dynamic Build Versioning: Configured
Terpscribe.specto parse the app version dynamically fromapp.pyat compile time and map it directly toCFBundleShortVersionStringandCFBundleVersion. - Custom Styled DMG Packager: Created the
create_dmg.shscript to build and sign custom DMG containers featuring a premium dark-themed background mapping the drag-to-Applications flow. Staged the compilation in a dedicated directory to speed up packaging.
Version 0.9.8
June 26, 2026Added
- macOS Audio Routing Guide: Built and deployed a new `/guide` route to the website detailing BlackHole installation (.pkg links, Discord/Homebrew fallbacks), macOS Audio MIDI Setup instructions, app preferences (Zoom, Teams, Google Meet), and TerpScribe setup.
- Audio MIDI Setup Visual Reference: Embedded a high-fidelity visual reference screenshot of the macOS Audio MIDI Setup Multi-Output configuration in the setup wizard.
- SVG Signal Routing Flowchart: Created an interactive inline SVG flowchart animating sound wave splitting between physical speakers and virtual loopbacks.
- Build Pipeline Automation: Created the
build_and_notarize.shscript to automate PyInstaller building, stripping iCloud attributes, signing with Developer ID certificates, notarizing, stapling, and packaging.
Fixed
- Quick Reference Sidebar Scrolling: Recursively bound mouse wheel and trackpad scroll events to the entire sidebar widget tree in
app.py. This ensures trackpad 2-finger drag scrolling works smoothly without getting stuck or locked when hovering between terms, gaps, titles, or entry inputs.
Version 0.9.7.3
June 23, 2026Refactored
- Retina/Dock Icon Scaling: Refactored icon handling in the app constructor to fix Dock icon scaling, support Retina specifications (512x512 pt), and add support for native macOS Clear/Tinted appearance themes.
- Informative Exceptions: Cleansed standard boilerplate exception messages across app loops to provide much clearer diagnostic logging.
- Code Cleanups: Completely removed unused progress bar modules (dead code replaced by WaveformMeter).
Version 0.9.7
June 18, 2026Changed
- Premium Waveform Meter Refinement: Upgraded the audio signal visualizer to a dynamic multi-layered fluid wave stream with 3 overlapping waves. Implemented high-performance PIL-based 3x supersampling and bilinear downscaling to achieve flawless subpixel anti-aliasing.
- Glowing Surfing Particle Field: Synchronized the floating particle pool to glide gracefully along the exact path coordinates of their wave layers, appearing as glowing embers.
- Listening Indicator Green: Synchronized the listening capture button active states to match the vibrant icon green (#01FF66) in both light and dark themes.
Version 0.9.6
June 16, 2026Added
- PKCE OAuth Flow: Integrated Google Sign-In with PKCE (Proof Key for Code Exchange) to avoid hardcoding active client secrets in compiled code.
- Environment Variables Configuration: Shifted Firebase and Google OAuth credentials from hardcoded variables in source to a secure, runtime-loaded .env file.
Changed
- Thread-Safe Shared State: Implemented thread-safe Lock-guarded properties to serialize reads and writes to shared mutable variables accessed across VAD/inference background threads and the main UI thread.
- Periodic Session Re-Verification: Added a background task that periodically re-checks the user's subscription and hardware lock status (every 24 hours) against the secure Firestore backend.
- Secure Keychain Storage: Migrated Firebase refresh token storage from plaintext on disk to the OS-level macOS Keychain using the keyring library.
Version 0.9.4
June 15, 2026Added
- Dynamic Font Registration: Dynamically registers TrueType Collection fonts at runtime via CoreText APIs on macOS and GDI32 on Windows to render brand text with pixel-perfect clarity.
- Visual Setup Feedback: Conditional visual prompts printed inside the main transcript window at startup explaining Whisper MLX model downloading on first-time launch.
Changed
- Flexible Window Resize Constraints: Expanded window flexibility by lowering minimum size from 1050x600 to 700x500 and reducing the transcription panel minimum width constraint to 450px.
Version 0.9.3
June 11, 2026Added
- Dynamic Horizontal Theme Logos: Replaced square logo icons in the header bar and login screen with new horizontal logo graphics.
Fixed
- Sidebar Divider Performance: Replaced heavy CustomTkinter buttons with standard Tkinter components inside the Quick Reference scroll list, making sidebar divider dragging completely smooth and lag-free.