1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//! FlashKraft GUI Library
//!
//! This crate contains the Iced desktop application for FlashKraft.
//!
//! ## Contents
//!
//! | Module | What lives here |
//! |--------|-----------------|
//! | [`core`] | Iced app state, messages, update logic, flash subscription, storage |
//! | [`components`] | Iced UI widgets and component renderers |
//! | [`view`] | Top-level view orchestration |
//! | [`utils`] | GUI-specific utilities (Bootstrap icon mapper) |
//!
//! ## Dependency on `flashkraft-core`
//!
//! All domain models, the flash pipeline, and drive-detection logic live in
//! the `flashkraft-core` crate. This crate re-exports the most commonly
//! used types so callers only need to import from `flashkraft_gui`.
// GUI-specific utilities (Bootstrap icon mapper uses iced types)
// ── Core re-exports ───────────────────────────────────────────────────────────
// Re-export `flashkraft_core::domain` at the crate root so that submodules can
// use `crate::domain::DriveInfo` / `crate::domain::ImageInfo` etc.
pub use domain;
// Re-export the `flash_debug!` macro from flashkraft_core so that
// `use crate::flash_debug;` in flash_subscription.rs resolves correctly.
pub use debug_log;
pub use flash_debug;
pub use status_log;
// Re-export Iced app entry points
pub use ;
// ── GUI entry point ───────────────────────────────────────────────────────────
/// Entry point for the Iced desktop GUI.
///
/// The binary must be installed **setuid-root** for the flash pipeline to be
/// able to open block devices:
///
/// ```text
/// sudo chown root:root /usr/bin/flashkraft
/// sudo chmod u+s /usr/bin/flashkraft
/// ```
///
/// The real UID is captured in `main.rs` before this function is called.
// Re-export domain types from core so downstream code can do
// `use flashkraft_gui::{DriveInfo, ImageInfo}` without knowing about
// flashkraft-core directly.
pub use ;