Skip to content

Latest commit

 

History

History
66 lines (50 loc) · 2.73 KB

File metadata and controls

66 lines (50 loc) · 2.73 KB

Sensitivity engineering guide

Scope and architecture

Sensitivity has one Rust recovery core. The CLI in src/ is the authority for USB, ROM validation, download, sideload, and cancellation behaviour. Front ends supervise that core; they do not recreate recovery protocol logic.

  • apps/windows/Sensitivity.WinUI is the native WinUI 3 Windows application.
  • crates/gui is the portable eframe GUI for Linux and macOS.
  • installer/ contains the Inno Setup 7 Windows installer.
  • locales/ contains the versioned CLI, portable GUI, and Windows catalogs.

Do not add a second protocol implementation, invoke shells for backend commands, or pass sensitive values through logs, settings, or process arguments. Use ProcessStartInfo.ArgumentList in the Windows app.

Safety boundaries

Flashing and wiping are destructive. Preserve these invariants:

  • Validate a Recovery ROM before sideloading it.
  • Keep the default ADB policy non-disruptive. Stop ADB only after an explicit user choice or CLI policy.
  • Require clear confirmation for a server-requested wipe.
  • Never commit device serial numbers, validation tokens, recovery captures, private ROM links, or credentials.
  • Treat live device behaviour as unverified until it has been tested on that exact recovery state. Offline tests do not prove a flash.

Windows application

Use WinUI 3 controls and Windows App SDK resources before adding custom XAML. Preserve system light and dark mode, system accent behaviour, keyboard access, and high-contrast fallback. Use Fluent icons rather than emoji or arbitrary Unicode symbols for actions. Follow DESIGN.md for UI work.

User-facing Windows strings use stable semantic keys in locales/*/windows.json. Do not add hard-coded translated prose to XAML or C#; update the English source and every catalog through the localization workflow.

Validation

Run the narrowest relevant checks while changing code. Before a release-facing change, run:

cargo fmt --all -- --check
cargo test --workspace --locked
cargo clippy --workspace --all-targets --locked -- -D warnings
pwsh -NoProfile -File tools/check-locales.ps1
cargo check --manifest-path fuzz/Cargo.toml --locked
pwsh -NoProfile -File tools/preflight.ps1

The Windows CI matrix is the authoritative ARM64 and XAML publish check. Do not claim a real recovery or flash test without a connected device and a recorded, non-sensitive result.

Documentation and review

Keep README.md, relevant pages in docs/, and the Wiki source in docs/wiki/ consistent with product changes. Keep PRs focused, explain safety effects, and resolve review feedback with a test or other concrete validation where possible. See LOCALIZATION.md for translator context and catalog rules.