warning: unused import: `std::io::Cursor`
 --> src\cli\commands\ffu.rs:2:5
  |
2 | use std::io::Cursor;
  |     ^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

warning: unused import: `Context`
  --> src\core\restore.rs:19:20
   |
19 | use anyhow::{bail, Context, Result};
   |                    ^^^^^^^

warning: unused import: `error`
  --> src\core\restore.rs:20:18
   |
20 | use log::{debug, error, info, warn};
   |                  ^^^^^

warning: unused imports: `PathBuf` and `Path`
  --> src\core\restore.rs:22:17
   |
22 | use std::path::{Path, PathBuf};
   |                 ^^^^  ^^^^^^^

warning: unused import: `Context`
  --> src\core\secureboot.rs:16:20
   |
16 | use anyhow::{bail, Context, Result};
   |                    ^^^^^^^

warning: unused imports: `error`, `info`, and `warn`
  --> src\core\secureboot.rs:17:18
   |
17 | use log::{debug, error, info, warn};
   |                  ^^^^^  ^^^^  ^^^^

warning: unused import: `PathBuf`
  --> src\core\secureboot.rs:19:23
   |
19 | use std::path::{Path, PathBuf};
   |                       ^^^^^^^

warning: unused import: `SystemTime`
  --> src\core\telemetry.rs:22:36
   |
22 | use std::time::{Duration, Instant, SystemTime};
   |                                    ^^^^^^^^^^

warning: unused imports: `error` and `warn`
  --> src\core\wim_extract.rs:17:18
   |
17 | use log::{debug, error, info, warn};
   |                  ^^^^^        ^^^^

warning: unused import: `std::collections::HashMap`
  --> src\core\wim_extract.rs:19:5
   |
19 | use std::collections::HashMap;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `SeekFrom` and `Seek`
  --> src\core\wim_extract.rs:20:21
   |
20 | use std::io::{Read, Seek, SeekFrom};
   |                     ^^^^  ^^^^^^^^

warning: unused import: `PathBuf`
  --> src\core\wim_extract.rs:21:23
   |
21 | use std::path::{Path, PathBuf};
   |                       ^^^^^^^

warning: unused import: `anyhow::Result`
 --> src\core\drive_constraints.rs:6:5
  |
6 | use anyhow::Result;
  |     ^^^^^^^^^^^^^^

warning: unused imports: `Read`, `SeekFrom`, and `Seek`
 --> src\core\syslinux.rs:9:15
  |
9 | use std::io::{Read, Seek, SeekFrom};
  |               ^^^^  ^^^^  ^^^^^^^^

warning: unused imports: `PathBuf` and `Path`
  --> src\core\syslinux.rs:10:17
   |
10 | use std::path::{Path, PathBuf};
   |                 ^^^^  ^^^^^^^

warning: unused imports: `SeekFrom` and `Seek`
 --> src\core\wintogo.rs:9:21
  |
9 | use std::io::{Read, Seek, SeekFrom};
  |                     ^^^^  ^^^^^^^^

warning: unused import: `PathBuf`
  --> src\core\wintogo.rs:10:23
   |
10 | use std::path::{Path, PathBuf};
   |                       ^^^^^^^

warning: unused import: `bail`
  --> src\core\elevate.rs:20:14
   |
20 | use anyhow::{bail, Context, Result};
   |              ^^^^

warning: unused imports: `LittleEndian` and `ReadBytesExt`
  --> src\core\isohybrid.rs:23:17
   |
23 | use byteorder::{LittleEndian, ReadBytesExt};
   |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^

warning: unused import: `self`
  --> src\core\optical.rs:19:15
   |
19 | use std::io::{self, Read, Seek, SeekFrom, Write};
   |               ^^^^

warning: unused import: `Context`
  --> src\core\proclock.rs:18:14
   |
18 | use anyhow::{Context, Result};
   |              ^^^^^^^

warning: unused imports: `PathBuf` and `Path`
  --> src\core\proclock.rs:20:17
   |
20 | use std::path::{Path, PathBuf};
   |                 ^^^^  ^^^^^^^

warning: unused variable: `drive_path`
   --> src\core\optical.rs:285:17
    |
285 |             let drive_path = format!("\\\\.\\{}:", letter as char);
    |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_drive_path`
    |
    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default

warning: unused variable: `config`
   --> src\core\proclock.rs:397:31
    |
397 | fn scan_windows(target: &str, config: &LockScanConfig, result: &mut LockScanResult) -> Result<()> {
    |                               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`

warning: field `border_glow` is never read
   --> src\gui\mod.rs:175:5
    |
160 | struct Theme {
    |        ----- field in this struct
...
175 |     border_glow: egui::Color32,
    |     ^^^^^^^^^^^
    |
    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: `abt` (lib) generated 25 warnings (run `cargo fix --lib -p abt` to apply 24 suggestions)
warning: method `to_json` is never used
   --> src\core\backup.rs:150:12
    |
117 | impl BackupResult {
    | ----------------- method in this implementation
...
150 |     pub fn to_json(&self) -> Result<String> {
    |            ^^^^^^^
    |
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: field `max_size` is never read
  --> src\core\cache.rs:86:5
   |
83 | pub struct ImageCache {
   |            ---------- field in this struct
...
86 |     max_size: u64,
   |     ^^^^^^^^

warning: methods `set_max_size`, `lookup`, `get_path`, `insert`, and `cache_dir` are never used
   --> src\core\cache.rs:118:12
    |
 89 | impl ImageCache {
    | --------------- methods in this implementation
...
118 |     pub fn set_max_size(&mut self, max_bytes: u64) {
    |            ^^^^^^^^^^^^
...
123 |     pub fn lookup(&self, url: &str) -> Option<&CacheEntry> {
    |            ^^^^^^
...
134 |     pub fn get_path(&self, url: &str) -> Option<PathBuf> {
    |            ^^^^^^^^
...
145 |     pub fn insert(&mut self, url: &str, local_path: &Path, sha256: &str, etag: Option<&str>) -> Result<()> {
    |            ^^^^^^
...
320 |     pub fn cache_dir(&self) -> &Path {
    |            ^^^^^^^^^

warning: method `hex_len` is never used
  --> src\core\checksum_file.rs:33:12
   |
31 | impl HashAlgorithm {
   | ------------------ method in this implementation
32 |     /// Expected hex string length for this algorithm.
33 |     pub fn hex_len(&self) -> usize {
   |            ^^^^^^^

warning: methods `as_map` and `is_empty` are never used
   --> src\core\checksum_file.rs:134:12
    |
114 | impl ChecksumFile {
    | ----------------- methods in this implementation
...
134 |     pub fn as_map(&self) -> HashMap<String, String> {
    |            ^^^^^^
...
147 |     pub fn is_empty(&self) -> bool {
    |            ^^^^^^^^

warning: associated items `with_hostname`, `add_user`, `set_wifi`, and `enable_ssh` are never used
   --> src\core\customize.rs:156:12
    |
154 | impl OsCustomization {
    | -------------------- associated items in this implementation
155 |     /// Create a new customization with hostname.
156 |     pub fn with_hostname(hostname: &str) -> Self {
    |            ^^^^^^^^^^^^^
...
164 |     pub fn add_user(&mut self, user: UserAccount) {
    |            ^^^^^^^^
...
169 |     pub fn set_wifi(&mut self, ssid: &str, psk: Option<&str>, security: WifiSecurity) {
    |            ^^^^^^^^
...
180 |     pub fn enable_ssh(&mut self, keys: Vec<String>) {
    |            ^^^^^^^^^^

warning: fields `total_bytes`, `resume_count`, and `was_resumed` are never read
  --> src\core\download_resume.rs:72:9
   |
68 | pub struct DownloadResult {
   |            -------------- fields in this struct
...
72 |     pub total_bytes: u64,
   |         ^^^^^^^^^^^
73 |     /// Number of resume attempts that were needed.
74 |     pub resume_count: u32,
   |         ^^^^^^^^^^^^
75 |     /// Whether the download was resumed from a partial file.
76 |     pub was_resumed: bool,
   |         ^^^^^^^^^^^
   |
   = note: `DownloadResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: function `get_partial_status` is never used
   --> src\core\download_resume.rs:413:14
    |
413 | pub async fn get_partial_status(output_dir: &Path, url: &str) -> Option<PartialDownloadMeta> {
    |              ^^^^^^^^^^^^^^^^^^

warning: function `cleanup_partial` is never used
   --> src\core\download_resume.rs:421:14
    |
421 | pub async fn cleanup_partial(output_dir: &Path, url: &str) -> Result<()> {
    |              ^^^^^^^^^^^^^^^

warning: constant `FAT32_SIGNATURE` is never used
  --> src\core\fat32.rs:25:7
   |
25 | const FAT32_SIGNATURE: u16 = 0xAA55;
   |       ^^^^^^^^^^^^^^^

warning: constant `FAT32_FSINFO_SIGNATURE_1` is never used
  --> src\core\fat32.rs:26:7
   |
26 | const FAT32_FSINFO_SIGNATURE_1: u32 = 0x41615252;
   |       ^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant `FAT32_FSINFO_SIGNATURE_2` is never used
  --> src\core\fat32.rs:27:7
   |
27 | const FAT32_FSINFO_SIGNATURE_2: u32 = 0x61417272;
   |       ^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant `FAT32_FSINFO_SIGNATURE_3` is never used
  --> src\core\fat32.rs:28:7
   |
28 | const FAT32_FSINFO_SIGNATURE_3: u32 = 0xAA550000;
   |       ^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant `FAT_MEDIA_FIXED` is never used
  --> src\core\fat32.rs:29:7
   |
29 | const FAT_MEDIA_FIXED: u8 = 0xF8;
   |       ^^^^^^^^^^^^^^^

warning: constant `FAT_MEDIA_REMOVABLE` is never used
  --> src\core\fat32.rs:30:7
   |
30 | const FAT_MEDIA_REMOVABLE: u8 = 0xF0;
   |       ^^^^^^^^^^^^^^^^^^^

warning: constant `BS_OEM_NAME` is never used
  --> src\core\fat32.rs:31:7
   |
31 | const BS_OEM_NAME: &[u8; 8] = b"ABT     ";
   |       ^^^^^^^^^^^

warning: constant `MAX_FAT32_SIZE` is never used
  --> src\core\fat32.rs:34:11
   |
34 | pub const MAX_FAT32_SIZE: u64 = 2 * 1024 * 1024 * 1024 * 1024; // 2 TiB
   |           ^^^^^^^^^^^^^^

warning: enum `ClusterSize` is never used
  --> src\core\fat32.rs:38:10
   |
38 | pub enum ClusterSize {
   |          ^^^^^^^^^^^

warning: associated items `bytes` and `from_str_lossy` are never used
  --> src\core\fat32.rs:61:12
   |
59 | impl ClusterSize {
   | ---------------- associated items in this implementation
60 |     /// Size in bytes.
61 |     pub fn bytes(&self) -> u32 {
   |            ^^^^^
...
76 |     pub fn from_str_lossy(s: &str) -> Self {
   |            ^^^^^^^^^^^^^^

warning: struct `Fat32FormatOpts` is never constructed
   --> src\core\fat32.rs:111:12
    |
111 | pub struct Fat32FormatOpts {
    |            ^^^^^^^^^^^^^^^

warning: struct `Fat32FormatResult` is never constructed
   --> src\core\fat32.rs:144:12
    |
144 | pub struct Fat32FormatResult {
    |            ^^^^^^^^^^^^^^^^^

warning: function `auto_cluster_size` is never used
   --> src\core\fat32.rs:172:8
    |
172 | pub fn auto_cluster_size(total_bytes: u64) -> ClusterSize {
    |        ^^^^^^^^^^^^^^^^^

warning: function `available_cluster_sizes` is never used
   --> src\core\fat32.rs:199:8
    |
199 | pub fn available_cluster_sizes(total_bytes: u64) -> Vec<(ClusterSize, bool)> {
    |        ^^^^^^^^^^^^^^^^^^^^^^^

warning: function `calculate_fat32_params` is never used
   --> src\core\fat32.rs:225:8
    |
225 | pub fn calculate_fat32_params(opts: &Fat32FormatOpts) -> Result<Fat32FormatResult> {
    |        ^^^^^^^^^^^^^^^^^^^^^^

warning: function `build_boot_sector` is never used
   --> src\core\fat32.rs:290:8
    |
290 | pub fn build_boot_sector(opts: &Fat32FormatOpts, params: &Fat32FormatResult) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^

warning: function `build_fsinfo_sector` is never used
   --> src\core\fat32.rs:352:8
    |
352 | pub fn build_fsinfo_sector(params: &Fat32FormatResult) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^^^

warning: function `build_fat_initial_sector` is never used
   --> src\core\fat32.rs:367:8
    |
367 | pub fn build_fat_initial_sector(media_byte: u8) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^^^^^^^^

warning: function `validate_fat32_format` is never used
   --> src\core\fat32.rs:385:8
    |
385 | pub fn validate_fat32_format(opts: &Fat32FormatOpts) -> Result<()> {
    |        ^^^^^^^^^^^^^^^^^^^^^

warning: function `format_fat32` is never used
   --> src\core\fat32.rs:444:8
    |
444 | pub fn format_fat32<W: Write + Seek>(
    |        ^^^^^^^^^^^^

warning: function `humanize_size` is never used
   --> src\core\fat32.rs:540:4
    |
540 | fn humanize_size(bytes: u64) -> String {
    |    ^^^^^^^^^^^^^

warning: method `pass_count` is never used
  --> src\core\health.rs:41:12
   |
27 | impl TestPattern {
   | ---------------- method in this implementation
...
41 |     pub fn pass_count(&self) -> usize {
   |            ^^^^^^^^^^

warning: enum `InhibitReason` is never used
  --> src\core\inhibit.rs:10:10
   |
10 | pub enum InhibitReason {
   |          ^^^^^^^^^^^^^

warning: struct `SleepInhibitor` is never constructed
  --> src\core\inhibit.rs:35:12
   |
35 | pub struct SleepInhibitor {
   |            ^^^^^^^^^^^^^^

warning: associated items `new` and `reason` are never used
  --> src\core\inhibit.rs:47:12
   |
45 | impl SleepInhibitor {
   | ------------------- associated items in this implementation
46 |     /// Create a new sleep inhibitor. The OS will not sleep while this object exists.
47 |     pub fn new(reason: InhibitReason) -> Result<Self> {
   |            ^^^
...
87 |     pub fn reason(&self) -> &InhibitReason {
   |            ^^^^^^

warning: function `windows_inhibit_sleep` is never used
   --> src\core\inhibit.rs:172:4
    |
172 | fn windows_inhibit_sleep() -> u32 {
    |    ^^^^^^^^^^^^^^^^^^^^^

warning: function `windows_restore_sleep` is never used
   --> src\core\inhibit.rs:185:4
    |
185 | fn windows_restore_sleep(_prev: u32) {
    |    ^^^^^^^^^^^^^^^^^^^^^

warning: function `with_sleep_inhibited` is never used
   --> src\core\inhibit.rs:195:8
    |
195 | pub fn with_sleep_inhibited<F, T>(reason: InhibitReason, f: F) -> Result<T>
    |        ^^^^^^^^^^^^^^^^^^^^

warning: function `is_supported` is never used
   --> src\core\inhibit.rs:204:8
    |
204 | pub fn is_supported() -> bool {
    |        ^^^^^^^^^^^^

warning: associated items `available_count`, `reset_failures`, and `mirror_url` are never used
   --> src\core\mirror.rs:96:12
    |
 75 | impl MirrorList {
    | --------------- associated items in this implementation
...
 96 |     pub fn available_count(&self) -> usize {
    |            ^^^^^^^^^^^^^^^
...
124 |     pub fn reset_failures(&mut self) {
    |            ^^^^^^^^^^^^^^
...
131 |     pub fn mirror_url(mirror: &Mirror, relative_path: &str) -> String {
    |            ^^^^^^^^^^

warning: methods `mkfs_command`, `default_label`, and `supports_casper` are never used
  --> src\core\persist.rs:30:12
   |
28 | impl PersistFs {
   | -------------- methods in this implementation
29 |     /// mkfs command for this filesystem.
30 |     pub fn mkfs_command(&self) -> &str {
   |            ^^^^^^^^^^^^
...
42 |     pub fn default_label(&self) -> &str {
   |            ^^^^^^^^^^^^^
...
50 |     pub fn supports_casper(&self) -> bool {
   |            ^^^^^^^^^^^^^^^

warning: associated function `detect_from_distro` is never used
   --> src\core\persist.rs:103:12
    |
 81 | impl PersistenceMode {
    | -------------------- associated function in this implementation
...
103 |     pub fn detect_from_distro(name: &str) -> Self {
    |            ^^^^^^^^^^^^^^^^^^

warning: struct `PersistResult` is never constructed
   --> src\core\persist.rs:165:12
    |
165 | pub struct PersistResult {
    |            ^^^^^^^^^^^^^

warning: method `format_text` is never used
   --> src\core\persist.rs:185:12
    |
184 | impl PersistResult {
    | ------------------ method in this implementation
185 |     pub fn format_text(&self) -> String {
    |            ^^^^^^^^^^^

warning: function `is_update_dismissed` is never used
   --> src\core\update.rs:352:8
    |
352 | pub fn is_update_dismissed(version: &str, state_path: &Path) -> bool {
    |        ^^^^^^^^^^^^^^^^^^^

warning: associated function `from_linux_speed` is never used
  --> src\core\usb_speed.rs:54:12
   |
38 | impl UsbSpeed {
   | ------------- associated function in this implementation
...
54 |     pub fn from_linux_speed(speed_mbps: u32) -> Self {
   |            ^^^^^^^^^^^^^^^^

warning: function `check_and_warn_speed` is never used
   --> src\core\usb_speed.rs:337:8
    |
337 | pub fn check_and_warn_speed(device_path: &str) -> Option<String> {
    |        ^^^^^^^^^^^^^^^^^^^^

warning: methods `is_valid` and `by_severity` are never used
   --> src\core\drive_constraints.rs:106:12
    |
104 | impl ValidationReport {
    | --------------------- methods in this implementation
105 |     /// Whether all constraints passed.
106 |     pub fn is_valid(&self) -> bool {
    |            ^^^^^^^^
...
116 |     pub fn by_severity(&self, severity: ConstraintSeverity) -> Vec<&ConstraintResult> {
    |            ^^^^^^^^^^^

warning: function `is_drive_locked` is never used
   --> src\core\drive_constraints.rs:239:8
    |
239 | pub fn is_drive_locked(device: &DeviceInfo) -> bool {
    |        ^^^^^^^^^^^^^^^

warning: methods `name` and `enumerate` are never used
  --> src\core\drive_scan.rs:67:8
   |
65 | pub trait DeviceAdapter: Send + Sync {
   |           ------------- methods in this trait
66 |     /// Name of this adapter (for logging/events).
67 |     fn name(&self) -> &str;
   |        ^^^^
...
70 |     fn enumerate(&self) -> Result<Vec<DeviceInfo>>;
   |        ^^^^^^^^^

warning: field `config` is never read
   --> src\core\drive_scan.rs:215:5
    |
214 | pub struct DriveScanner {
    |            ------------ field in this struct
215 |     config: ScannerConfig,
    |     ^^^^^^

warning: multiple associated items are never used
   --> src\core\drive_scan.rs:242:12
    |
221 | impl DriveScanner {
    | ----------------- associated items in this implementation
...
242 |     pub fn with_adapters(
    |            ^^^^^^^^^^^^^
...
267 |     pub fn scan_once(&self) -> Result<Vec<DriveEvent>> {
    |            ^^^^^^^^^
...
377 |     pub fn is_running(&self) -> bool {
    |            ^^^^^^^^^^
...
385 |     pub fn stop(&self) -> Result<()> {
    |            ^^^^
...
392 |     fn filter_device(&self, device: &DeviceInfo) -> bool {
    |        ^^^^^^^^^^^^^
...
420 |     pub fn adapter_count(&self) -> usize {
    |            ^^^^^^^^^^^^^
...
425 |     pub fn adapter_names(&self) -> Vec<String> {
    |            ^^^^^^^^^^^^^

warning: field `state` is never read
   --> src\core\drive_scan.rs:432:5
    |
431 | pub struct ScanHandle {
    |            ---------- field in this struct
432 |     state: Arc<Mutex<ScannerState>>,
    |     ^^^^^

warning: methods `stop` and `is_running` are never used
   --> src\core\drive_scan.rs:437:12
    |
435 | impl ScanHandle {
    | --------------- methods in this implementation
436 |     /// Stop the scanner.
437 |     pub fn stop(&self) -> Result<()> {
    |            ^^^^
...
444 |     pub fn is_running(&self) -> bool {
    |            ^^^^^^^^^^

warning: methods `is_fat` and `is_ext` are never used
   --> src\core\fs_detect.rs:103:12
    |
 75 | impl FsType {
    | ----------- methods in this implementation
...
103 |     pub fn is_fat(&self) -> bool {
    |            ^^^^^^
...
108 |     pub fn is_ext(&self) -> bool {
    |            ^^^^^^

warning: method `is_newer_than` is never used
   --> src\core\syslinux.rs:152:12
    |
140 | impl SyslinuxVersion {
    | -------------------- method in this implementation
...
152 |     pub fn is_newer_than(&self, other: &SyslinuxVersion) -> bool {
    |            ^^^^^^^^^^^^^

warning: field `border_glow` is never read
   --> src\gui\mod.rs:175:5
    |
160 | struct Theme {
    |        ----- field in this struct
...
175 |     border_glow: egui::Color32,
    |     ^^^^^^^^^^^
    |
    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: `abt` (bin "abt") generated 80 warnings (24 duplicates)
    Finished `release` profile [optimized] target(s) in 0.93s
