chore(stack): sync Web Audio privacy branch with live presentation root - #244
chore(stack): sync Web Audio privacy branch with live presentation root#244seonghobae wants to merge 1 commit into
Conversation
Merge exact-head bounded presentation surfaces into the privacy identity stack.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| } else if upper.starts_with("ANGLE") { | ||
| Some(Self::Angle) |
There was a problem hiding this comment.
🟡 Malformed renderer names bypass rejection
WebGlRendererToken::canonical accepts any spelling beginning with ANGLE, including ANGLEevil. Unknown renderers therefore enter the closed presentation set.
Prompt for agents
Tighten WebGlRendererToken::canonical in crates/originweave-fingerprint/src/stealth.rs so it recognizes only the documented ANGLE renderer grammar, rather than every string with an ANGLE prefix. Preserve software and SwiftShader precedence. Add realistic boundary tests for the accepted ANGLE form and malformed prefixes such as ANGLEevil, ANGLE suffixes without the required delimiter, and case variants, while retaining complete branch coverage.
Was this helpful? React with 👍 or 👎 to provide feedback.
| || version.is_empty() | ||
| || !version | ||
| .bytes() | ||
| .all(|byte| byte.is_ascii_alphanumeric() || byte == b'.') |
There was a problem hiding this comment.
🟡 Invalid dotted versions pass validation
UaBrand::new accepts ., .131, 131., and 131..0 because it validates characters instead of components. Malformed brand versions enter validated profiles.
Prompt for agents
Update UaBrand::new in crates/originweave-fingerprint/src/ua_hints.rs to validate version strings as nonempty dot-separated ASCII-alphanumeric components. Reject leading, trailing, and consecutive dots while preserving accepted undotted and normal Chromium versions. Add boundary tests for each malformed dot placement and maintain complete branch coverage.
Was this helpful? React with 👍 or 👎 to provide feedback.
| if !mobile && !model.is_empty() { | ||
| return Err(ClientHintsError::ModelWithoutMobile); | ||
| } | ||
| if model.len() > MAX_MOBILE_MODEL_LENGTH { | ||
| return Err(ClientHintsError::ModelTooLong); | ||
| } |
There was a problem hiding this comment.
🟡 Mobile hints require desktop platforms
UaClientHints::new accepts model-bearing mobile identities, but every available platform is desktop-only. Validated mobile profiles therefore report contradictory platform data.
Prompt for agents
Make mobile and platform semantics coherent in crates/originweave-fingerprint/src/ua_hints.rs. Either model the required mobile platform token or reject mobile identities until that platform is supported. Define and enforce the valid platform/mobile/model combinations, update the accessors and documentation as needed, and replace the current Linux Pixel test with realistic accepted and rejected combinations under complete branch coverage.
Was this helpful? React with 👍 or 👎 to provide feedback.
| pub use stealth::{ | ||
| CanvasNoise, StealthError, StealthSurface, WebAudioRate, WebGlRendererToken, WebRtcInterface, | ||
| require_stealth_surfaces, | ||
| }; | ||
| pub use ua_hints::{ | ||
| ClientHintsError, HintsArchitecture, HintsBitness, HintsPlatform, UaBrand, UaClientHints, | ||
| }; |
There was a problem hiding this comment.
| /// A validated, bounded UA Client Hints surface. | ||
| #[derive(Debug, Clone, PartialEq, Eq)] | ||
| pub struct UaClientHints { | ||
| platform: HintsPlatform, | ||
| architecture: HintsArchitecture, | ||
| bitness: HintsBitness, | ||
| mobile: bool, | ||
| model: String, | ||
| brands: Vec<UaBrand>, | ||
| } |
There was a problem hiding this comment.
| mod stealth; | ||
| mod ua_hints; | ||
|
|
||
| pub use stealth::{ | ||
| CanvasNoise, StealthError, StealthSurface, WebAudioRate, WebGlRendererToken, WebRtcInterface, | ||
| require_stealth_surfaces, | ||
| }; | ||
| pub use ua_hints::{ | ||
| ClientHintsError, HintsArchitecture, HintsBitness, HintsPlatform, UaBrand, UaClientHints, | ||
| }; |
There was a problem hiding this comment.
Closed after exact ancestry inspection showed this reverse sync cannot be merged cleanly: the historical #236 branch diverged from the live #229 root and GitHub reports conflicts. No merge or force push was attempted. The safe replacement path is a fresh branch from exact #229 with only the Web Audio delta replayed and reverified.