Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f063be3
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
8ee4706
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
da0642b
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
9ce4806
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
71c95a3
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
1a934f6
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
2c15a9a
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
fcd13d8
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
693c0b2
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
f277947
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
49588ff
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
619cff1
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
81f9439
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
6b31864
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
7d2cfcc
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
c936a2f
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
38d663d
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
e09e05f
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
0de5c78
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
f74631b
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
3824c53
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
32c416a
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
fb33159
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
9b99a32
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
04e7527
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
bccd62b
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
1ac7eb2
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
ebbcc36
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
18b3690
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
e9c3200
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
e90adca
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
0164d43
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
fc93e9d
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
c3330ee
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
f8a4f9a
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
9d45b3e
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
fd8c395
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
a0693db
fix: feat: bounty deeplinks support raycast extension
orbitwebsites-cloud Apr 26, 2026
846590c
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
6a81c5b
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
406d854
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
7a7bdae
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
e9eb947
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
2e3e3ea
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
9381b9d
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 2026
a321f7a
fix: complete rewrite addressing reviewer quality feedback
orbitwebsites-cloud Apr 26, 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
48 changes: 48 additions & 0 deletions crates/recording/src/camera.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// File: crates/recording/src/camera.rs
use cap_recording::CameraFeed;
use cap_utils::Url;
use std::collections::HashMap;

pub struct Camera {
pub feed: CameraFeed,
pub deeplink_handler: DeeplinkHandler,
}

impl Camera {
pub fn new() -> Self {
Self {
feed: CameraFeed::new(),
deeplink_handler: DeeplinkHandler::new(),
}
}

pub fn start_recording(&self) {
let deeplink = self.deeplink_handler.handle_deeplink("recording_start".to_string()).unwrap();
println!("{}", deeplink.recording_start());
}

pub fn stop_recording(&self) {
let deeplink = self.deeplink_handler.handle_deeplink("recording_stop".to_string()).unwrap();
println!("{}", deeplink.recording_stop());
}

pub fn pause_recording(&self) {
let deeplink = self.deeplink_handler.handle_deeplink("recording_pause".to_string()).unwrap();
println!("{}", deeplink.recording_pause());
}

pub fn resume_recording(&self) {
let deeplink = self.deeplink_handler.handle_deeplink("recording_resume".to_string()).unwrap();
println!("{}", deeplink.recording_resume());
}

pub fn switch_camera(&self) {
let deeplink = self.deeplink_handler.handle_deeplink("camera_switch".to_string()).unwrap();
println!("{}", deeplink.camera_switch());
}

pub fn switch_microphone(&self) {
let deeplink = self.deeplink_handler.handle_deeplink("microphone_switch".to_string()).unwrap();
println!("{}", deeplink.microphone_switch());
}
}
Comment on lines +2 to +48
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Missing imports, wrong logic, and not wired into the actual recording system

Several issues in this file:

  1. DeeplinkHandler is referenced on line 7 and 14 but there is no use statement importing it β€” the compiler will fail with "cannot find type DeeplinkHandler".
  2. The recording methods (e.g. start_recording) call handle_deeplink(...) to look up a URL and then print it. No deeplink is ever registered in the DeeplinkHandler's HashMap, so every call returns None and .unwrap() will panic at runtime.
  3. Printing a URL does not trigger any actual recording action. The real recording logic lives in apps/desktop/src-tauri/src/deeplink_actions.rs and should be invoked there β€” this layer of indirection achieves nothing.
  4. use cap_recording::CameraFeed, use cap_utils::Url, and use std::collections::HashMap are all unused.
  5. This file is not declared in lib.rs, so it will never be compiled as part of the crate.
Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/recording/src/camera.rs
Line: 1-47

Comment:
**Missing imports, wrong logic, and not wired into the actual recording system**

Several issues in this file:

1. `DeeplinkHandler` is referenced on line 7 and 14 but there is no `use` statement importing it β€” the compiler will fail with "cannot find type `DeeplinkHandler`".
2. The recording methods (e.g. `start_recording`) call `handle_deeplink(...)` to look up a URL and then print it. No deeplink is ever registered in the `DeeplinkHandler`'s `HashMap`, so every call returns `None` and `.unwrap()` will **panic at runtime**.
3. Printing a URL does not trigger any actual recording action. The real recording logic lives in `apps/desktop/src-tauri/src/deeplink_actions.rs` and should be invoked there β€” this layer of indirection achieves nothing.
4. `use cap_recording::CameraFeed`, `use cap_utils::Url`, and `use std::collections::HashMap` are all unused.
5. This file is not declared in `lib.rs`, so it will never be compiled as part of the crate.

How can I resolve this? If you propose a fix, please make it concise.

8 changes: 8 additions & 0 deletions crates/recording/src/cap_recording.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// File: crates/recording/src/cap_recording.rs

use cap_recording::CameraFeed;
use cap_utils::Url;
use std::collections::HashMap;

// Removed the unnecessary and circular module declaration
// pub mod cap_recording;
31 changes: 31 additions & 0 deletions crates/recording/src/cap_utils.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// File: crates/recording/src/cap_utils.rs
use std::collections::HashMap;

pub struct Url {
url: String,
}

impl Url {
pub fn parse(s: &str) -> Result<Self, std::fmt::Error> {
// Simplified parsing logic
if s.is_empty() || !s.contains("://") {
return Err(std::fmt::Error);
}
Ok(Url { url: s.to_string() })
}

pub fn join(&self, path: &str) -> Result<Self, std::fmt::Error> {
if path.is_empty() {
return Ok(Url {
url: self.url.clone(),
});
}
let sep = if self.url.ends_with('/') || path.starts_with('/') {
""
} else {
"/"
};
let joined = format!("{}{}{}", self.url, sep, path);
Url::parse(&joined)
}
}
37 changes: 37 additions & 0 deletions crates/recording/src/deeplink.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// File: crates/recording/src/deeplink.rs
use cap_utils::Url;
use std::collections::HashMap;

pub struct Deeplink {
pub url: Url,
}

impl Deeplink {
pub fn new(url: Url) -> Self {
Self { url }
}

pub fn recording_start(&self) -> Url {
self.url.join("recording/start").unwrap()
}

pub fn recording_stop(&self) -> Url {
self.url.join("recording/stop").unwrap()
}

pub fn recording_pause(&self) -> Url {
self.url.join("recording/pause").unwrap()
}

pub fn recording_resume(&self) -> Url {
self.url.join("recording/resume").unwrap()
}

pub fn camera_switch(&self) -> Url {
self.url.join("camera/switch").unwrap()
}

pub fn microphone_switch(&self) -> Url {
self.url.join("microphone/switch").unwrap()
}
}
23 changes: 23 additions & 0 deletions crates/recording/src/deeplink_handler.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
use cap_recording::CameraFeed;
use cap_utils::Url;
use std::collections::HashMap;

pub struct DeeplinkHandler {
pub deeplinks: HashMap<String, Deeplink>,
}

Comment on lines +6 to +8
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Deeplink type not imported β€” will not compile

DeeplinkHandler stores HashMap<String, Deeplink> and register_deeplink takes a Deeplink argument, but there is no use statement that brings Deeplink into scope. The compiler will reject this with "cannot find type Deeplink in this scope". Also, use cap_recording::CameraFeed is unused, and the file is not declared in lib.rs.

Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/recording/src/deeplink_handler.rs
Line: 6-8

Comment:
**`Deeplink` type not imported β€” will not compile**

`DeeplinkHandler` stores `HashMap<String, Deeplink>` and `register_deeplink` takes a `Deeplink` argument, but there is no `use` statement that brings `Deeplink` into scope. The compiler will reject this with "cannot find type `Deeplink` in this scope". Also, `use cap_recording::CameraFeed` is unused, and the file is not declared in `lib.rs`.

How can I resolve this? If you propose a fix, please make it concise.

impl DeeplinkHandler {
pub fn new() -> Self {
Self {
deeplinks: HashMap::new(),
}
}

pub fn register_deeplink(&mut self, name: String, deeplink: Deeplink) {
self.deeplinks.insert(name, deeplink);
}

pub fn handle_deeplink(&self, name: String) -> Option<&Deeplink> {
self.deeplinks.get(&name)
}
}
13 changes: 13 additions & 0 deletions crates/recording/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
use cap_recording::CameraFeed;
use cap_utils::Url;
use std::collections::HashMap;

pub fn main() {
let camera = Camera::new();
camera.start_recording();
camera.stop_recording();
camera.pause_recording();
camera.resume_recording();
camera.switch_camera();
camera.switch_microphone();
}
Comment on lines +1 to +13
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 main.rs conflicts with lib.rs in a library crate

crates/recording already has a lib.rs, making it a library crate. Cargo does not allow a crate to be both a library and a binary unless the binary is placed under src/bin/. Placing main.rs directly in src/ will either cause a build error or silently shadow the library entry point depending on the Cargo edition. Additionally, Camera is used here without any use import, and the three use statements at the top (CameraFeed, Url, HashMap) are all unused.

Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/recording/src/main.rs
Line: 1-13

Comment:
**`main.rs` conflicts with `lib.rs` in a library crate**

`crates/recording` already has a `lib.rs`, making it a library crate. Cargo does not allow a crate to be both a library and a binary unless the binary is placed under `src/bin/`. Placing `main.rs` directly in `src/` will either cause a build error or silently shadow the library entry point depending on the Cargo edition. Additionally, `Camera` is used here without any `use` import, and the three `use` statements at the top (`CameraFeed`, `Url`, `HashMap`) are all unused.

How can I resolve this? If you propose a fix, please make it concise.