Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
4045c57
fix(linux): guard KDE Wayland WebKit renderer startup
BLCCoreStudio Sep 6, 2026
c6bf370
fix(build): avoid accidental host BLAS linkage
BLCCoreStudio Sep 6, 2026
d2a273b
feat(overlay): add compact waveform recording surface
BLCCoreStudio Sep 6, 2026
236bb77
feat(overlay): style lightweight waveform states
BLCCoreStudio Sep 6, 2026
eb08371
feat(overlay): position left and show recording lifecycle
BLCCoreStudio Sep 6, 2026
efca5b7
feat(ui): reorganize desktop app around focused navigation
BLCCoreStudio Sep 6, 2026
8284b43
feat(ui): add persistent sidebar navigation
BLCCoreStudio Sep 6, 2026
b5cb4da
feat(ui): add focused sidebar workspace layout
BLCCoreStudio Sep 6, 2026
996a40f
feat(ui): load workspace layout with navigation
BLCCoreStudio Sep 6, 2026
6d747ca
fix(ui): use portable navigation scroll behavior
BLCCoreStudio Sep 6, 2026
5e86db5
style: apply rustfmt to Linux startup guard
BLCCoreStudio Sep 6, 2026
fa9aefe
fix(audio): clamp finite resampler overshoot before ASR
BLCCoreStudio Sep 6, 2026
7feaae8
feat(wayland): identify EIS clipboard fallback backend
BLCCoreStudio Sep 6, 2026
387a3c8
feat(wayland): add native data-control clipboard dependency
BLCCoreStudio Sep 6, 2026
24a5e2c
ci: temporarily resolve Wayland fallback lockfile
BLCCoreStudio Sep 6, 2026
cdbd048
ci: let Cargo commit resolved branch lockfile
BLCCoreStudio Sep 6, 2026
c5fc27c
chore: resolve Wayland clipboard lockfile
github-actions[bot] Sep 6, 2026
4a2ee1e
fix(wayland): fall back to native clipboard over EIS keyboard
BLCCoreStudio Sep 6, 2026
9681c31
fix(desktop): report the connected Wayland insertion backend
BLCCoreStudio Sep 6, 2026
24acfad
ci: remove temporary branch lockfile helper
BLCCoreStudio Sep 6, 2026
031da86
ci: temporarily apply rustfmt on branch
BLCCoreStudio Sep 6, 2026
f44579a
style: apply rustfmt
github-actions[bot] Sep 6, 2026
87a4541
ci: remove temporary branch format helper
BLCCoreStudio Sep 6, 2026
66b9ec1
ci: temporarily apply exact Clippy compatibility fix
BLCCoreStudio Sep 6, 2026
312f5cb
fix(wayland): scope compatibility capability helper
github-actions[bot] Sep 6, 2026
38c63ac
ci: remove temporary Clippy fix helper
BLCCoreStudio Sep 6, 2026
6b4cc5a
fix(shortcut): report actual portal trigger binding
BLCCoreStudio Sep 6, 2026
4a3a0e6
fix: configure missing KDE portal shortcut
BLCCoreStudio Sep 6, 2026
39ef376
ui: shrink dictation overlay to compact bar
BLCCoreStudio Sep 6, 2026
978d8eb
ui: make overlay a draggable single-line control
BLCCoreStudio Sep 6, 2026
6d6623b
ui: restyle overlay as thin unobtrusive bar
BLCCoreStudio Sep 6, 2026
1a88b0f
ui: persist draggable compact overlay position
BLCCoreStudio Sep 6, 2026
fd69ef5
fix: allow overlay sizing and dragging
BLCCoreStudio Sep 6, 2026
8372c5d
fix: enforce compact draggable overlay
BLCCoreStudio Sep 6, 2026
eb7d6b2
style: apply rustfmt to portal shortcut helper
BLCCoreStudio Sep 6, 2026
48cdc34
fix(ci): gate Linux-only EIS fallback mode
BLCCoreStudio Sep 16, 2026
f3dd9a7
fix(ci): gate Linux-only shortcut state
BLCCoreStudio Sep 16, 2026
f31b1a2
ci: refresh vulnerable rustls lock entry
BLCCoreStudio Sep 16, 2026
ceed533
fix(security): update rustls to 0.23.45
github-actions[bot] Sep 16, 2026
ce77283
ci: validate refreshed rustls lock
BLCCoreStudio Sep 16, 2026
58e5426
docs: cover Wayland clipboard fallback evidence
BLCCoreStudio Oct 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Keep the default local ASR build self-contained and deterministic.
# Host-wide BLAS/MKL installations must not silently change BLCVoice's native link graph.
# Developers can still override this environment variable explicitly for controlled experiments.
[env]
TRANSCRIBE_CMAKE_ARGS = { value = "-DTRANSCRIBE_USE_SYSTEM_BLAS=OFF", force = false }
160 changes: 154 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions apps/desktop/src-tauri/capabilities/overlay.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "overlay-capability",
"description": "Minimal event and visibility permissions for the non-interactive dictation overlay.",
"description": "Window permissions required by the compact dictation overlay.",
"windows": ["overlay"],
"permissions": [
"core:event:allow-listen",
"core:event:allow-unlisten",
"core:window:default",
"core:window:allow-show",
"core:window:allow-hide"
"core:window:allow-hide",
"core:window:allow-set-size",
"core:window:allow-set-position",
"core:window:allow-start-dragging"
]
}
9 changes: 8 additions & 1 deletion apps/desktop/src-tauri/src/insertion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ impl DesktopInsertionService {
}

pub fn capability(&self) -> Result<InsertionCapability, InsertionError> {
let state = self.lock_state();
if let Some(inserter) = state.inserter.as_ref() {
return Ok(inserter.capability());
}
drop(state);

resolve_insertion_capability(self.environment).map_err(|error| {
InsertionError::new(InsertionErrorKind::BackendUnavailable, error.to_string())
})
Expand Down Expand Up @@ -101,7 +107,8 @@ impl DesktopInsertionService {
}
InsertionBackend::X11XTest => X11Inserter::connect(X11Options::default())
.map(|inserter| Box::new(inserter) as Box<dyn TextInserter>),
InsertionBackend::XdgRemoteDesktopEis => {
InsertionBackend::XdgRemoteDesktopEis
| InsertionBackend::XdgRemoteDesktopEisClipboard => {
let inserter = WaylandEisInserter::connect(WaylandEisOptions::new(
state.wayland_restore_token.clone(),
))?;
Expand Down
32 changes: 32 additions & 0 deletions apps/desktop/src-tauri/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]

#[cfg(target_os = "linux")]
fn apply_linux_webkit_compatibility() {
use std::os::unix::process::CommandExt;
use std::process::Command;

let wayland = std::env::var_os("WAYLAND_DISPLAY").is_some();
let kde = std::env::var("XDG_CURRENT_DESKTOP")
.ok()
.is_some_and(|desktop| desktop.to_ascii_lowercase().contains("kde"));
let override_present = std::env::var_os("WEBKIT_DISABLE_DMABUF_RENDERER").is_some();

if !wayland || !kde || override_present {
return;
}

let Ok(executable) = std::env::current_exe() else {
return;
};

let error = Command::new(executable)
.args(std::env::args_os().skip(1))
.env("WEBKIT_DISABLE_DMABUF_RENDERER", "1")
.exec();

eprintln!(
"failed to restart BLCVoice with the KDE/Wayland WebKit compatibility guard: {error}"
);
}

fn main() {
#[cfg(target_os = "linux")]
apply_linux_webkit_compatibility();

blcvoice_desktop_lib::run();
}
Loading
Loading