Compare commits
6 Commits
v2.0.12
...
sidecar-v1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5837b97a20 | ||
|
|
ab09a3e9da | ||
|
|
5343a28a08 | ||
|
|
f0bf026133 | ||
|
|
37a029d1c6 | ||
|
|
5ec030387f |
@@ -19,9 +19,26 @@ datas = [
|
||||
('config/default_config.yaml', 'config'),
|
||||
]
|
||||
|
||||
# Collect sounddevice's bundled PortAudio library (_sounddevice_data)
|
||||
try:
|
||||
import sounddevice
|
||||
sd_path = os.path.dirname(sounddevice.__file__)
|
||||
sd_data = os.path.join(sd_path, '_sounddevice_data')
|
||||
if os.path.exists(sd_data):
|
||||
datas.append((sd_data, '_sounddevice_data'))
|
||||
print(f" + Collected sounddevice PortAudio data from {sd_data}")
|
||||
# Also collect the package itself
|
||||
sd_datas = collect_data_files('sounddevice')
|
||||
if sd_datas:
|
||||
datas += sd_datas
|
||||
print(f" + Collected {len(sd_datas)} sounddevice data files")
|
||||
except ImportError:
|
||||
print(" - Warning: sounddevice not found")
|
||||
|
||||
# Hidden imports -- only lightweight deps needed for Deepgram streaming
|
||||
hiddenimports = [
|
||||
'sounddevice',
|
||||
'_sounddevice_data',
|
||||
'numpy',
|
||||
# FastAPI and dependencies
|
||||
'fastapi',
|
||||
|
||||
@@ -38,6 +38,21 @@ datas = [
|
||||
(vad_assets_path, 'faster_whisper/assets'),
|
||||
] + pvporcupine_data_files
|
||||
|
||||
# Collect sounddevice's bundled PortAudio library (_sounddevice_data)
|
||||
try:
|
||||
import sounddevice
|
||||
sd_path = os.path.dirname(sounddevice.__file__)
|
||||
sd_data = os.path.join(sd_path, '_sounddevice_data')
|
||||
if os.path.exists(sd_data):
|
||||
datas.append((sd_data, '_sounddevice_data'))
|
||||
print(f" + Collected sounddevice PortAudio data from {sd_data}")
|
||||
sd_datas = collect_data_files('sounddevice')
|
||||
if sd_datas:
|
||||
datas += sd_datas
|
||||
print(f" + Collected {len(sd_datas)} sounddevice data files")
|
||||
except ImportError:
|
||||
print(" - Warning: sounddevice not found")
|
||||
|
||||
# Hidden imports -- NO PySide6/Qt needed for headless backend
|
||||
hiddenimports = [
|
||||
# Transcription engine
|
||||
@@ -46,6 +61,7 @@ hiddenimports = [
|
||||
'faster_whisper.vad',
|
||||
'ctranslate2',
|
||||
'sounddevice',
|
||||
'_sounddevice_data',
|
||||
'scipy',
|
||||
'scipy.signal',
|
||||
'numpy',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "local-transcription",
|
||||
"private": true,
|
||||
"version": "2.0.12",
|
||||
"version": "2.0.13",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "local-transcription"
|
||||
version = "1.0.9"
|
||||
version = "1.0.11"
|
||||
description = "A standalone desktop application for real-time speech-to-text transcription using Whisper models"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.9"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "local-transcription"
|
||||
version = "2.0.12"
|
||||
version = "2.0.13"
|
||||
description = "Real-time speech-to-text transcription for streamers"
|
||||
authors = ["Local Transcription Contributors"]
|
||||
edition = "2021"
|
||||
|
||||
@@ -74,14 +74,25 @@ pub fn run() {
|
||||
.build(tauri::generate_context!())
|
||||
.expect("error while building tauri application")
|
||||
.run(|app, event| {
|
||||
if let tauri::RunEvent::Exit = event {
|
||||
// Stop the sidecar when the app exits
|
||||
if let Some(state) = app.try_state::<sidecar::ManagedSidecar>() {
|
||||
if let Ok(mut mgr) = state.0.lock() {
|
||||
eprintln!("[app] Stopping sidecar on exit...");
|
||||
mgr.stop();
|
||||
match event {
|
||||
tauri::RunEvent::Exit => {
|
||||
if let Some(state) = app.try_state::<sidecar::ManagedSidecar>() {
|
||||
if let Ok(mut mgr) = state.0.lock() {
|
||||
eprintln!("[app] Stopping sidecar on exit...");
|
||||
mgr.stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
tauri::RunEvent::ExitRequested { .. } => {
|
||||
// Also stop sidecar on exit request (Cmd+Q on macOS)
|
||||
if let Some(state) = app.try_state::<sidecar::ManagedSidecar>() {
|
||||
if let Ok(mut mgr) = state.0.lock() {
|
||||
eprintln!("[app] Stopping sidecar on exit request...");
|
||||
mgr.stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"productName": "Local Transcription",
|
||||
"version": "2.0.12",
|
||||
"version": "2.0.13",
|
||||
"identifier": "net.anhonesthost.local-transcription",
|
||||
"build": {
|
||||
"frontendDist": "../dist",
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
let sidecarState = $state<SidecarState>("checking");
|
||||
let debugLog = $state("");
|
||||
let availableUpdate = $state("");
|
||||
let appVersion = $state("");
|
||||
|
||||
let obsDisplayUrl = $derived(backendStore.obsUrl);
|
||||
let syncDisplayUrl = $derived(backendStore.syncUrl);
|
||||
@@ -108,6 +109,14 @@
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
// Get app version from Tauri
|
||||
import("@tauri-apps/api/app").then(({ getVersion }) =>
|
||||
getVersion().then((v) => { appVersion = v; })
|
||||
).catch(() => {
|
||||
// Browser dev mode -- read from package.json or use fallback
|
||||
appVersion = "dev";
|
||||
});
|
||||
|
||||
checkAndLaunchSidecar();
|
||||
|
||||
return () => {
|
||||
@@ -201,7 +210,7 @@
|
||||
<TranscriptionDisplay />
|
||||
<Controls />
|
||||
|
||||
<div class="version-label">v{backendStore.version}</div>
|
||||
<div class="version-label">v{appVersion || backendStore.version}</div>
|
||||
</div>
|
||||
|
||||
{#if showSettings}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Version information for Local Transcription."""
|
||||
|
||||
__version__ = "2.0.12"
|
||||
__version_info__ = (2, 0, 12)
|
||||
__version__ = "2.0.13"
|
||||
__version_info__ = (2, 0, 13)
|
||||
|
||||
# Version history:
|
||||
# 1.4.0 - Auto-update feature:
|
||||
|
||||
Reference in New Issue
Block a user