Compare commits

..

3 Commits

Author SHA1 Message Date
Gitea Actions
d263be2ac1 chore: bump sidecar version to 1.0.15 [skip ci] 2026-04-12 17:44:51 +00:00
Developer
1c8c6ad7e8 Fix display user not updating locally until app restart
All checks were successful
Tests / Python Backend Tests (push) Successful in 5s
Tests / Frontend Tests (push) Successful in 7s
Tests / Rust Sidecar Tests (push) Successful in 3m12s
Engines now read user.name from the config object at transcription time
instead of caching it at init, so name changes take effect immediately.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 10:40:46 -07:00
Gitea Actions
023bc0218b chore: bump version to 2.0.20 [skip ci] 2026-04-12 02:12:38 +00:00
10 changed files with 23 additions and 31 deletions

View File

@@ -276,7 +276,6 @@ class AppController:
self.current_model_size = model
self.current_device_config = device_config
user_name = self.config.get('user.name', 'User')
continuous_mode = self.config.get('transcription.continuous_mode', False)
if continuous_mode:
@@ -293,7 +292,6 @@ class AppController:
if remote_mode in ('managed', 'byok'):
self.transcription_engine = DeepgramTranscriptionEngine(
config=self.config,
user_name=user_name,
input_device_index=audio_device,
)
self.transcription_engine.set_callbacks(
@@ -343,7 +341,7 @@ class AppController:
initial_prompt=self.config.get('transcription.initial_prompt', ''),
no_log_file=self.config.get('transcription.no_log_file', True),
input_device_index=audio_device,
user_name=user_name,
app_config=self.config,
)
self.transcription_engine.set_callbacks(
realtime_callback=self._on_realtime_transcription,

View File

@@ -36,18 +36,16 @@ class DeepgramTranscriptionEngine:
# Construction / configuration
# ------------------------------------------------------------------ #
def __init__(self, config, user_name: str = "User", input_device_index: Optional[int] = None):
def __init__(self, config, input_device_index: Optional[int] = None):
"""
Initialise the engine from a :class:`client.config.Config` object.
Args:
config: Application ``Config`` instance.
user_name: Display name attached to transcriptions.
input_device_index: Index of the audio input device to use
(``None`` for the system default).
"""
self.config = config
self.user_name = user_name
self.input_device_index = input_device_index
# Mode: 'managed' (proxy) or 'byok' (direct Deepgram)
@@ -454,7 +452,7 @@ class DeepgramTranscriptionEngine:
text=text,
is_final=is_final,
timestamp=datetime.now(),
user_name=self.user_name,
user_name=self.config.get('user.name', 'User'),
)
if is_final:
if self.final_callback:
@@ -505,7 +503,7 @@ class DeepgramTranscriptionEngine:
text=transcript,
is_final=is_final,
timestamp=datetime.now(),
user_name=self.user_name,
user_name=self.config.get('user.name', 'User'),
)
if is_final:
if self.final_callback:
@@ -536,10 +534,6 @@ class DeepgramTranscriptionEngine:
pass
self._ws = None
def set_user_name(self, user_name: str):
"""Update the user name attached to future transcriptions."""
self.user_name = user_name
def is_recording_active(self) -> bool:
"""Return ``True`` if audio is currently being captured."""
return self._is_recording

View File

@@ -58,8 +58,8 @@ class RealtimeTranscriptionEngine:
no_log_file: bool = True,
# Audio device
input_device_index: Optional[int] = None,
# User name
user_name: str = ""
# App config (for reading user.name at transcription time)
app_config=None
):
"""
Initialize RealtimeSTT transcription engine.
@@ -82,7 +82,7 @@ class RealtimeTranscriptionEngine:
initial_prompt: Optional prompt to guide transcription
no_log_file: Disable RealtimeSTT logging
input_device_index: Audio input device index
user_name: User name for transcriptions
app_config: App Config object for reading user.name dynamically
"""
self.model = model
self.language = language
@@ -100,7 +100,7 @@ class RealtimeTranscriptionEngine:
self.enable_realtime = enable_realtime_transcription
self.realtime_model = realtime_model
self.realtime_processing_pause = realtime_processing_pause
self.user_name = user_name
self.app_config = app_config
# Callbacks
self.realtime_callback: Optional[Callable[[TranscriptionResult], None]] = None
@@ -162,6 +162,11 @@ class RealtimeTranscriptionEngine:
self.realtime_callback = realtime_callback
self.final_callback = final_callback
def _get_user_name(self) -> str:
if self.app_config:
return self.app_config.get('user.name', '')
return ''
def _on_realtime_transcription(self, text: str):
"""Internal callback for realtime transcriptions."""
if self.realtime_callback and text.strip():
@@ -169,7 +174,7 @@ class RealtimeTranscriptionEngine:
text=text,
is_final=False,
timestamp=datetime.now(),
user_name=self.user_name
user_name=self._get_user_name()
)
self.realtime_callback(result)
@@ -180,7 +185,7 @@ class RealtimeTranscriptionEngine:
text=text,
is_final=True,
timestamp=datetime.now(),
user_name=self.user_name
user_name=self._get_user_name()
)
self.final_callback(result)
@@ -406,10 +411,6 @@ class RealtimeTranscriptionEngine:
if self.is_recording:
print("VAD settings updated. Restart transcription to apply changes.")
def set_user_name(self, user_name: str):
"""Set the user name for transcriptions."""
self.user_name = user_name
def __repr__(self) -> str:
return f"RealtimeTranscriptionEngine(model={self.model}, device={self.device}, running={self.is_recording})"

View File

@@ -401,7 +401,6 @@ class MainWindow(QMainWindow):
# Use Deepgram-based remote transcription
self.transcription_engine = DeepgramTranscriptionEngine(
config=self.config,
user_name=user_name,
input_device_index=audio_device
)
self.transcription_engine.set_callbacks(
@@ -431,7 +430,7 @@ class MainWindow(QMainWindow):
initial_prompt=self.config.get('transcription.initial_prompt', ''),
no_log_file=self.config.get('transcription.no_log_file', True),
input_device_index=audio_device,
user_name=user_name
app_config=self.config
)
# Set up callbacks for transcription results

View File

@@ -90,7 +90,7 @@ class TranscriptionCLI:
initial_prompt=self.config.get('transcription.initial_prompt', ''),
no_log_file=True,
input_device_index=audio_device,
user_name=user_name
app_config=self.config
)
# Set up callbacks

View File

@@ -1,7 +1,7 @@
{
"name": "local-transcription",
"private": true,
"version": "2.0.19",
"version": "2.0.20",
"type": "module",
"scripts": {
"dev": "vite dev",

View File

@@ -1,6 +1,6 @@
[project]
name = "local-transcription"
version = "1.0.14"
version = "1.0.15"
description = "A standalone desktop application for real-time speech-to-text transcription using Whisper models"
readme = "README.md"
requires-python = ">=3.9"

View File

@@ -1,6 +1,6 @@
[package]
name = "local-transcription"
version = "2.0.19"
version = "2.0.20"
description = "Real-time speech-to-text transcription for streamers"
authors = ["Local Transcription Contributors"]
edition = "2021"

View File

@@ -1,6 +1,6 @@
{
"productName": "Local Transcription",
"version": "2.0.19",
"version": "2.0.20",
"identifier": "net.anhonesthost.local-transcription",
"build": {
"frontendDist": "../dist",

View File

@@ -1,7 +1,7 @@
"""Version information for Local Transcription."""
__version__ = "2.0.19"
__version_info__ = (2, 0, 19)
__version__ = "2.0.20"
__version_info__ = (2, 0, 20)
# Version history:
# 1.4.0 - Auto-update feature: