Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ea4a2e9
fix: bound recording device setup and native capture lifetimes
richiemcilroy Sep 4, 2026
847dae1
fix: retain preview surfaces until their consumers release them
richiemcilroy Sep 4, 2026
873b2a8
fix: preserve settings when recovering malformed configuration
richiemcilroy Sep 4, 2026
880291f
fix: validate local inference runtimes and prepare Wayland targets
richiemcilroy Sep 4, 2026
e77ce5e
feat: add timed styles and images with reliable desktop recording con…
richiemcilroy Sep 4, 2026
5a67fd2
fix: align macOS desktop bundles with their supported system version
richiemcilroy Sep 4, 2026
fa917e4
fix: select the native GTK backend for Linux AppImages
richiemcilroy Sep 4, 2026
39752db
improve: let homepage navigation use the full page width
richiemcilroy Sep 4, 2026
aeada5d
test: declare JSON fixtures for editor cursor regressions
richiemcilroy Sep 4, 2026
27b34af
fix: find ONNX Runtime in installed Linux packages
richiemcilroy Sep 4, 2026
443d834
refactor: use kebab-case for new editor modules
richiemcilroy Sep 4, 2026
e370c25
fix: stop repeated Windows camera resource allocation
richiemcilroy Sep 8, 2026
56316d3
fix: reject camera formats from stale device queries
richiemcilroy Sep 8, 2026
5cccfae
Merge pull request #2248 from CapSoftware/fix/windows-camera-idle-res…
richiemcilroy Sep 8, 2026
752fae4
chore: reconcile desktop review and camera fixes
richiemcilroy Sep 8, 2026
ae19682
feat: reconcile desktop editor and recording improvements
richiemcilroy Sep 8, 2026
fd20dbe
fix: reject stale desktop export preview results
richiemcilroy Sep 8, 2026
56a7653
fix: preserve desktop editor control bindings
richiemcilroy Sep 8, 2026
96634b4
fix: release recording stop requests after failures
richiemcilroy Sep 8, 2026
1fb8843
fix: retain one entry per desktop overlay lane
richiemcilroy Sep 8, 2026
62d5a6b
fix: use explicit Git paths for desktop build metadata
richiemcilroy Sep 8, 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
1 change: 1 addition & 0 deletions .github/workflows/sync-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ jobs:
shell: bash
run: |
cargo test --locked -p cap-timestamp -p cap-enc-ffmpeg
cargo test --locked -p cap-camera-effects --lib
cargo test --locked -p cap-recording --lib -- --test-threads=1
# --nocapture so a WARP-adapter notch skip prints instead of
# looking identical to a pass in the CI log.
Expand Down
17 changes: 17 additions & 0 deletions Cargo.lock

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

1 change: 1 addition & 0 deletions apps/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ toml_edit = "0.23.7"
url = "2.5.7"
tracing.workspace = true
tracing-subscriber = "0.3.19"
tracing-appender = "0.2.3"
cpal = { workspace = true }
winit = "0.30"
softbuffer = "0.4"
Expand Down
4 changes: 4 additions & 0 deletions apps/cli/build.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#[path = "../../scripts/diagnostic-build.rs"]
mod diagnostic_build;

use std::path::Path;

// The cap-demo skill directory is embedded wholesale into the `cap` binary via
Expand All @@ -9,6 +12,7 @@ use std::path::Path;
// including playwright-core — bloating the shipped CLI and making builds
// non-reproducible. Guard against that here, loudly, at build time.
fn main() {
diagnostic_build::emit();
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR is set");
let node_modules = Path::new(&manifest_dir)
.join("skill")
Expand Down
28 changes: 28 additions & 0 deletions apps/cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,30 @@ fn main() {
)
.init();

let _diagnostic_guard = if std::env::var_os("CAP_DIAGNOSTIC_PARENT").is_some() {
let (writer, guard) = tracing_appender::non_blocking(std::io::stderr());
let queue_errors = writer.error_counter();
cap_utils::operation_diagnostics::install_queue_loss_counter(move || {
queue_errors.dropped_lines()
});
cap_utils::operation_diagnostics::install_sink(
cap_utils::operation_diagnostics::AppInfo {
flavor: "export_worker",
version: env!("CARGO_PKG_VERSION"),
source_revision: option_env!("CAP_BUILD_REVISION"),
debug_build: cfg!(debug_assertions),
source_dirty: option_env!("CAP_BUILD_DIRTY").map(|value| value == "true"),
},
move |bytes| {
use std::io::Write;
let _ = writer.clone().write_all(bytes);
},
);
Some(guard)
} else {
None
};

let exit_after_success = cli.exit_after_success();

// The self-test opens a window, which AppKit requires to live on the real
Expand Down Expand Up @@ -516,7 +540,11 @@ fn main() {
.build()
.map_err(|e| format!("Failed to build Tokio runtime: {e}"))?;

if _diagnostic_guard.is_some() {
drop(runtime.spawn(cap_utils::operation_diagnostics::run_checkpoints()));
}
let result = runtime.block_on(run(cli));
drop(_diagnostic_guard);
if exit_after_success && result.is_ok() {
// Successful export/preview workers have already written their output by here.
// Exiting directly avoids Windows GPU/MediaFoundation teardown crashes in the
Expand Down
2 changes: 2 additions & 0 deletions apps/cli/src/selftest/playback.rs
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,8 @@ mod fixture {
transitions: Vec::new(),
zoom_segments: Vec::new(),
scene_segments: Vec::new(),
style_segments: Vec::new(),
image_segments: Vec::new(),
mask_segments: Vec::new(),
text_segments: Vec::new(),
caption_segments: Vec::new(),
Expand Down
8 changes: 8 additions & 0 deletions apps/desktop-gpui/Cargo.lock

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

3 changes: 2 additions & 1 deletion apps/desktop-gpui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ name = "Cap GPUI"
identifier = "so.cap.desktop.gpui"
icon = ["assets/dock-icon.png"]
category = "public.app-category.productivity"
osx_minimum_system_version = "11.0"
osx_minimum_system_version = "12.3"
osx_info_plist_exts = ["resources/Info.plist"]
osx_url_schemes = ["cap-desktop"]

Expand Down Expand Up @@ -188,6 +188,7 @@ windows-sys = { version = "0.59", features = [

[target.'cfg(target_os = "linux")'.dependencies]
ashpd = { version = "0.11", default-features = false, features = ["tokio"] }
wayland-client = "0.31"

[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
raw-window-handle = "0.6"
Expand Down
4 changes: 4 additions & 0 deletions apps/desktop-gpui/build.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
#[path = "../../scripts/diagnostic-build.rs"]
mod diagnostic_build;

fn main() {
diagnostic_build::emit();
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") {
return;
}
Expand Down
Loading
Loading