diff --git a/v2/crates/wifi-densepose-privshield/README.md b/v2/crates/wifi-densepose-privshield/README.md index 6aba6db4..67b7680b 100644 --- a/v2/crates/wifi-densepose-privshield/README.md +++ b/v2/crates/wifi-densepose-privshield/README.md @@ -73,6 +73,8 @@ counterpart to the npm metaharness). It drives the same model the tests use — interactive ANSI dashboard plus scriptable subcommands, std-only (no `crossterm`/`ratatui`), so it runs in any terminal, pipe, or CI. +![veil TUI walkthrough — toggling the shield off/on, dropping to 32 passes (out of spec), back to 96 (pass), a ward preset, optimize, and a witness check](docs/veil-tui.gif) + ```bash cargo run -p wifi-densepose-privshield --bin veil # interactive TUI (or a one-shot report when piped) cargo run -p wifi-densepose-privshield --bin veil -- sweep # re-ID vs passes + throughput vs bits @@ -97,8 +99,11 @@ cargo run -p wifi-densepose-privshield --bin veil -- doctor # self-check, exit In the TUI, type commands to steer the shield live: `on`/`off`, `passes `, `bits `, `n `, `snr `, `metric euclid|cosine`, `preset scif|board|ward|hotel`, `optimize`, `proof`, `quit`. All readouts are -**SYNTHETIC / L0**. (A graphical VEIL Console web dashboard mirrors this same -instrument; `veil` is the terminal-native version.) +**SYNTHETIC / L0**. + +A self-contained graphical **VEIL Console** web dashboard mirrors this same +instrument — it ships in [`ui/veil-console.html`](ui/veil-console.html) (open it +in any browser; no build, no network). `veil` is the terminal-native version. ## Modules diff --git a/v2/crates/wifi-densepose-privshield/docs/veil-tui.gif b/v2/crates/wifi-densepose-privshield/docs/veil-tui.gif new file mode 100644 index 00000000..21b1783e Binary files /dev/null and b/v2/crates/wifi-densepose-privshield/docs/veil-tui.gif differ diff --git a/v2/crates/wifi-densepose-privshield/src/bin/veil.rs b/v2/crates/wifi-densepose-privshield/src/bin/veil.rs index b62b2f59..57701d2f 100644 --- a/v2/crates/wifi-densepose-privshield/src/bin/veil.rs +++ b/v2/crates/wifi-densepose-privshield/src/bin/veil.rs @@ -38,9 +38,16 @@ const BOLD: &str = "\x1b[1m"; const RST: &str = "\x1b[0m"; const BLOCKS: [char; 8] = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█']; -/// Emit color only for a real terminal, and never when `NO_COLOR` is set. +/// Emit color for a real terminal; never when `NO_COLOR` is set; always when +/// `CLICOLOR_FORCE` is set (so piped captures keep their color). fn color_enabled() -> bool { - io::stdout().is_terminal() && std::env::var_os("NO_COLOR").is_none() + if std::env::var_os("NO_COLOR").is_some() { + return false; + } + if std::env::var_os("CLICOLOR_FORCE").is_some() { + return true; + } + io::stdout().is_terminal() } /// Wrap `s` in `code` when color is on. diff --git a/v2/crates/wifi-densepose-privshield/ui/veil-console.html b/v2/crates/wifi-densepose-privshield/ui/veil-console.html new file mode 100644 index 00000000..68caea77 --- /dev/null +++ b/v2/crates/wifi-densepose-privshield/ui/veil-console.html @@ -0,0 +1,934 @@ +VEIL Console — WiFi-Sensing Privacy Shield + + + +
+
+
+ + + VEIL Console + WiFi-sensing shield + +
+ + Monitoring + + +
+ +
+ +
+
+ +
+
+

Identity inference,
collapsed to chance.

+
4.7%re-id · shield on
+
+
+
+ + + +
+
+ exposed + shielded +
+
+
+
+
+ + +
Live scorecard
+
+
Re-ID · off
100%
attacker unhindered
+
Re-ID · on
4.7%
chance 6.25%
+
Throughput
97.6%
of baseline link
+
Emission
1.000×
not jamming
+
+ + +
+

Collapse curve

re-ID vs mixing
+
+
Givens passes →op: 96 · re-ID 4.7%
+
+ + +
+

Throughput optimum

vs feedback bits
+
+
Feedback resolution (bits) →5-bit · 97.6%
+
+ + +
+

Sensing activity

solicitations / s
+
+
threshold 5.0 Hz — shield auto-engages above0.0 Hz
+
+ + +
+

Shield controls

live model
+ +
+
Givens passes96min robust 48
+ +
+
+
Feedback resolution5bits · 802.11 {5,7,9}
+ +
+
+
Candidate identities16chance 6.25%
+ +
+
+
Link SNR20dB
+ +
+ +
+
+ Energy in +
= energy out · 1.000×
+ out +
+
+ + +
+

Attacker vs. protector

synthetic · L0
+
+
+ Passive re-ID — shield off +
+
+
+ Passive re-ID — shield on +
+
+
+ Link throughput retained +
+
+
+
+
+ + +
+
Deployment presets · adaptive shield
+
+ + + + +
+
+ +
+ Prefer the terminal? The same instrument ships as veil — a dependency-free + TUI & scriptable harness inside the crate + (cargo run -p wifi-densepose-privshield --bin veil). Live-steer the + shield with on/off · passes · bits · preset · optimize, or run + veil doctor in CI. +
+ +
+ Compliant waveform controls only — never jamming. The shield rotates its own beamforming + feedback with keyed Givens rotations (energy-preserving), so a sniffer can't average out a stable + identity while the associated receiver, holding the key, decodes normally. All figures are + SYNTHETIC / evidence-level L0 from the reference model — not measured on hardware. + +
+
+
+ + + + + + + + +