Add otel to desktop app #3852
ci.yml
on: pull_request
Detect Changes
7s
Typecheck
1m 17s
Format (Biome)
7s
Format (Cargo)
9s
Lint (Biome)
13s
Matrix: Build Desktop
Annotations
13 errors and 10 warnings
|
Format (Biome)
Process completed with exit code 1.
|
|
Typecheck
Process completed with exit code 2.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/recordings.tsx#L323
Cannot find name 'InstantModeActions'.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/UploadStatsForNerds.tsx#L314
Cannot find name 'TooltipIconButton'.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/UploadStatsForNerds.tsx#L311
Cannot find name 'shell'.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/UploadStatsForNerds.tsx#L309
Cannot find name 'TooltipIconButton'.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/UploadStatsForNerds.tsx#L297
Cannot find name 'TooltipIconButton'.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/UploadStatsForNerds.tsx#L292
Cannot find name 'TooltipIconButton'.
|
|
Typecheck:
apps/desktop/src/routes/(window-chrome)/settings/UploadStatsForNerds.tsx#L275
Cannot find name 'Recording'. Did you mean 'Record'?
|
|
Clippy
Clippy had exited with the 101 exit code
|
|
the trait bound `OpenTelemetryLayer<FilterFn<fn(&...) -> bool>, ...>: Layer<...>` is not satisfied:
apps/desktop/src-tauri/src/lib.rs#L192
error[E0277]: the trait bound `OpenTelemetryLayer<FilterFn<fn(&...) -> bool>, ...>: Layer<...>` is not satisfied
--> apps/desktop/src-tauri/src/lib.rs:192:26
|
192 | .reload(Some(Box::new(
| __________________________^
193 | | tracing_subscriber::fmt::layer()
194 | | .with_ansi(false)
195 | | .with_target(true)
196 | | .with_writer(logfile),
197 | | ) as DynLoggingLayer))
| |_____________^ unsatisfied trait bound
|
= help: the trait `tracing_subscriber::Layer<tracing_subscriber::Registry>` is not implemented for `OpenTelemetryLayer<FilterFn<fn(&Metadata<'b>) -> bool>, ...>`
= help: the trait `tracing_subscriber::Layer<S>` is implemented for `tracing_opentelemetry::OpenTelemetryLayer<S, T>`
= note: required for `Layered<OpenTelemetryLayer<FilterFn<fn(&...) -> bool>, ...>, ...>` to implement `tracing::Subscriber`
= note: required for `Layer<Layered<OpenTelemetryLayer<..., ...>, ...>, ..., ..., ...>` to implement `tracing_subscriber::Layer<tracing_subscriber::layer::Layered<tracing_opentelemetry::OpenTelemetryLayer<tracing_subscriber::filter::FilterFn<for<'a, 'b> fn(&'a tracing::Metadata<'b>) -> bool>, opentelemetry_sdk::trace::SdkTracerProvider>, tracing_subscriber::Registry>>`
= note: required for the cast from `Box<Layer<Layered<OpenTelemetryLayer<..., ...>, ...>, ..., ..., ...>>` to `Box<dyn Layer<Layered<..., ...>> + Send + Sync>`
= note: the full name for the type has been written to '/Users/runner/work/Cap/Cap/target/debug/deps/cap_desktop_lib-94433aeed1ec3959.long-type-6032539183573426428.txt'
= note: consider using `--verbose` to print the full type name to the console
|
|
Build Desktop (x86_64-pc-windows-msvc, windows-latest)
Process completed with exit code 1.
|
|
Build Desktop (aarch64-apple-darwin, macos-latest)
Process completed with exit code 1.
|
|
unused `std::result::Result` that must be used:
crates/export/src/mp4.rs#L100
warning: unused `std::result::Result` that must be used
--> crates/export/src/mp4.rs:100:17
|
100 | / encoder.queue_video_frame(
101 | | frame.video,
102 | | Duration::from_secs_f32(encoded_frames as f32 / fps as f32),
103 | | );
| |_________________^
|
= note: this `Result` may be an `Err` variant, which should be handled
= note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
|
100 | let _ = encoder.queue_video_frame(
| +++++++
|
|
unused variable: `prev_audio_config`:
crates/editor/src/playback.rs#L257
warning: unused variable: `prev_audio_config`
--> crates/editor/src/playback.rs:257:17
|
257 | prev_audio_config = project.audio.clone();
| ^^^^^^^^^^^^^^^^^
|
= help: did you mean to capture by reference instead?
= note: `#[warn(unused_variables)]` on by default
|
|
value assigned to `prev_audio_config` is never read:
crates/editor/src/playback.rs#L257
warning: value assigned to `prev_audio_config` is never read
--> crates/editor/src/playback.rs:257:17
|
257 | prev_audio_config = project.audio.clone();
| ^^^^^^^^^^^^^^^^^
|
= help: maybe it is overwritten before being read?
= note: `#[warn(unused_assignments)]` on by default
|
|
unneeded `return` statement:
crates/enc-ffmpeg/src/video/h264.rs#L191
warning: unneeded `return` statement
--> crates/enc-ffmpeg/src/video/h264.rs:191:13
|
191 | return;
| ^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
190 - tracing::error!("Failed to send EOF to encoder: {:?}", e);
191 - return;
190 + tracing::error!("Failed to send EOF to encoder: {:?}", e);
|
|
|
manual implementation of an assign operation:
crates/enc-ffmpeg/src/audio/buffered_resampler.rs#L92
warning: manual implementation of an assign operation
--> crates/enc-ffmpeg/src/audio/buffered_resampler.rs:92:13
|
92 | next_pts = next_pts + samples as i64;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `next_pts += samples as i64`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern
= note: `#[warn(clippy::assign_op_pattern)]` on by default
|
|
redundant pattern matching, consider using `is_some()`:
crates/enc-ffmpeg/src/audio/buffered_resampler.rs#L78
warning: redundant pattern matching, consider using `is_some()`
--> crates/enc-ffmpeg/src/audio/buffered_resampler.rs:78:19
|
78 | while let Some(_) = self.resampler.delay() {
| ----------^^^^^^^------------------------- help: try: `while self.resampler.delay().is_some()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
= note: `#[warn(clippy::redundant_pattern_matching)]` on by default
|
|
this `if` statement can be collapsed:
crates/enc-ffmpeg/src/audio/buffered_resampler.rs#L59
warning: this `if` statement can be collapsed
--> crates/enc-ffmpeg/src/audio/buffered_resampler.rs:59:9
|
59 | / if let Some(min_next_pts) = self.min_next_pts {
60 | | if let Some(pts) = frame.pts() {
61 | | frame.set_pts(Some(pts.max(min_next_pts)));
62 | | }
63 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
= note: `#[warn(clippy::collapsible_if)]` on by default
help: collapse nested if block
|
59 ~ if let Some(min_next_pts) = self.min_next_pts
60 ~ && let Some(pts) = frame.pts() {
61 | frame.set_pts(Some(pts.max(min_next_pts)));
62 ~ }
|
|
|
unneeded `return` statement:
crates/enc-ffmpeg/src/audio/buffered_resampler.rs#L51
warning: unneeded `return` statement
--> crates/enc-ffmpeg/src/audio/buffered_resampler.rs:51:9
|
51 | return remaining_samples;
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
= note: `#[warn(clippy::needless_return)]` on by default
help: remove `return`
|
51 - return remaining_samples;
51 + remaining_samples
|
|
|
field `config` is never read:
crates/enc-ffmpeg/src/video/h264.rs#L142
warning: field `config` is never read
--> crates/enc-ffmpeg/src/video/h264.rs:142:5
|
139 | pub struct H264Encoder {
| ----------- field in this struct
...
142 | config: VideoInfo,
| ^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
|
clamp-like pattern without using clamp function:
crates/media-info/src/lib.rs#L69
warning: clamp-like pattern without using clamp function
--> crates/media-info/src/lib.rs:69:13
|
69 | raw_channels.min(Self::MAX_AUDIO_CHANNELS).max(1)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `raw_channels.clamp(1, Self::MAX_AUDIO_CHANNELS)`
|
= note: clamp will panic if max < min
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp
= note: `#[warn(clippy::manual_clamp)]` on by default
|