Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
8a4271c
feat(batch-auth): sticky dashboard and page-level scroll
shiliu-yang Jun 26, 2026
4f0c64d
feat(batch-auth): refine flash phase status labels
shiliu-yang Jun 26, 2026
3cda17f
fix(batch-auth): use correct canvas bg for sticky dashboard
shiliu-yang Jun 26, 2026
65bf4ef
feat(core): add AuthStorage enum and FlashJob.authorize_storage field
shiliu-yang Jun 26, 2026
7f10530
feat(core): run_batch_auth_slot accepts auth_storage, tests for OTP c…
shiliu-yang Jun 26, 2026
938b5d1
feat(tauri): pass auth_storage through BatchAuthStartConfig to run_ba…
shiliu-yang Jun 26, 2026
0e62189
feat(types): add authStorage to BatchAuthConfigData and BatchAuthStar…
shiliu-yang Jun 26, 2026
786d7da
feat(store): default authStorage to kv, pass through to startAuth
shiliu-yang Jun 26, 2026
5cbd2bb
feat(i18n): add storage mode keys for T5AI OTP selection
shiliu-yang Jun 26, 2026
1c000eb
feat(ui): show T5AI OTP storage selector with irreversibility warning
shiliu-yang Jun 26, 2026
86b17c8
fix(types): add authorizeStorage to FlashJobPayload, add TODO for sin…
shiliu-yang Jun 26, 2026
7a79ba0
feat(ui): merge conflict-policy and storage-mode into one wrapping ro…
shiliu-yang Jun 26, 2026
b4ff43a
feat(store): persist shared config (chip/baud rates) across sessions
shiliu-yang Jun 26, 2026
a1566a5
feat(auth): pass storage param to auth-read for OTP; align storage-mo…
shiliu-yang Jun 26, 2026
40ec432
chore(assets): update auth-firmware-t5ai-1.1.0.bin
shiliu-yang Jun 26, 2026
87cd0b7
feat(core): add read_auth_probe for read-only MAC+auth query
shiliu-yang Jun 26, 2026
464a9cf
feat(tauri): add batch_auth_read_ports command for read-only MAC+auth…
shiliu-yang Jun 26, 2026
25ca2b5
feat(types): add reading status, read probe fields, and BatchAuthRead…
shiliu-yang Jun 26, 2026
cd01f2d
feat(store): add readPort/readAll actions and batch-auth-read-progres…
shiliu-yang Jun 26, 2026
c2d0eac
feat(i18n): add read-probe keys for batch-flash-auth
shiliu-yang Jun 26, 2026
127e0ec
feat(ui): add Read button and idle read-result display to BatchFlashA…
shiliu-yang Jun 26, 2026
0282b73
feat(ui): wire @read event in BatchFlashAuthSlotList
shiliu-yang Jun 26, 2026
fb6f54e
feat(ui): add 全部读取 button to BatchFlashAuthToolbar
shiliu-yang Jun 26, 2026
9c76627
fix(tauri): emit batch-auth-progress done event unconditionally in ba…
shiliu-yang Jun 26, 2026
013782b
fix(ui): clear stale read data on probe failure; always show readError
shiliu-yang Jun 26, 2026
1116f1f
refactor(ui): move excel validation state into store, call autoAssign…
shiliu-yang Jun 26, 2026
315f554
fix(ui): disallow batch start while excel validation is pending or er…
shiliu-yang Jun 26, 2026
ce2b613
feat(core): add AuthSession::auth_otp_lock with dedicated timeout
shiliu-yang Jun 26, 2026
3b1e096
feat(core): wire auth-otp-lock into run_batch_auth_slot
shiliu-yang Jun 26, 2026
b895a83
feat(tauri): plumb lockOtpAfterAuth through batch_auth_start
shiliu-yang Jun 26, 2026
adba4b2
feat(batch-flash-auth): add lockOtpAfterAuth to config and IPC types
shiliu-yang Jun 26, 2026
bdc67ca
feat(batch-flash-auth): wire lockOtpAfterAuth in store
shiliu-yang Jun 26, 2026
97dee29
i18n(batch-flash-auth): add otpLock toggle copy in zh-CN and en
shiliu-yang Jun 26, 2026
1b7b4c8
feat(batch-flash-auth): add eFuse lock toggle UI
shiliu-yang Jun 26, 2026
770b604
fix(core): harden run_batch_auth_slot around eFuse-burned Done path
shiliu-yang Jun 26, 2026
98dab5b
feat(batch-flash-auth): surface LockFailed slots distinctly in UI
shiliu-yang Jun 26, 2026
eb7f601
fix(batch-flash-auth): exclude lockFailed slots from retry
shiliu-yang Jun 26, 2026
d229487
feat(batch-flash-auth): visually distinguish lockFailed slots
shiliu-yang Jun 26, 2026
0d4d713
fix(tauri): use stable error codes for excel validation
shiliu-yang Jun 26, 2026
e3f6c1c
fix(batch-flash-auth): stop elapsed timer after batch; add retryPort;…
shiliu-yang Jun 26, 2026
3cae753
fix(core): add CancelledAfterWrite variant for cancel-after-auth-writ…
shiliu-yang Jun 26, 2026
c3d427c
fix(tauri): handle CancelledAfterWrite — confirm_row instead of release
shiliu-yang Jun 26, 2026
a361032
feat(batch-flash-auth): surface cancelled-after-write devices as quar…
shiliu-yang Jun 26, 2026
4ce4bc5
style(batch-flash-auth): widen slot status badge to fit English copy
shiliu-yang Jun 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified assets/auth-firmware/t5ai/auth-firmware-t5ai-1.1.0.bin
Binary file not shown.
4 changes: 4 additions & 0 deletions crates/tyutool-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
firmware_path: None,
authorize_uuid: uuid,
authorize_key: authkey,
authorize_storage: None,
confirm_overwrite: None,
};
let reporter = CliReporter::new(force_plain);
Expand Down Expand Up @@ -519,6 +520,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
firmware_path: Some(file),
authorize_uuid: None,
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
run_job(&job, &cancel, reporter.callback())
Expand Down Expand Up @@ -561,6 +563,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
firmware_path: None,
authorize_uuid: None,
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
run_job(&job, &cancel, reporter.callback())
Expand Down Expand Up @@ -602,6 +605,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
firmware_path: None,
authorize_uuid: None,
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
run_job(&job, &cancel, reporter.callback())
Expand Down
582 changes: 505 additions & 77 deletions crates/tyutool-core/src/authorize.rs

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions crates/tyutool-core/src/flash_event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ mod tests {
firmware_path: None,
authorize_uuid: Some("u".into()),
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
let s = JobSummary::from_job(&job);
Expand Down Expand Up @@ -315,6 +316,7 @@ mod tests {
firmware_path: None,
authorize_uuid: None,
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
let s = JobSummary::from_job(&job);
Expand Down
4 changes: 4 additions & 0 deletions crates/tyutool-core/src/job.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::authorize::AuthStorage;
use serde::{Deserialize, Serialize};

/// Mirrors Python `FlashArgv.mode` (write / read); extended for GUI tabs.
Expand Down Expand Up @@ -41,6 +42,7 @@ pub struct FlashJob {
pub firmware_path: Option<String>,
pub authorize_uuid: Option<String>,
pub authorize_key: Option<String>,
pub authorize_storage: Option<AuthStorage>,
/// Called when a conflicting credential is found on-device during authorize.
/// Returns `true` to proceed with overwrite, `false` to abort.
/// `None` in CLI mode — conflict is always overwritten without prompting.
Expand Down Expand Up @@ -72,6 +74,7 @@ impl std::fmt::Debug for FlashJob {
.field("firmware_path", &self.firmware_path)
.field("authorize_uuid", &self.authorize_uuid)
.field("authorize_key", &self.authorize_key)
.field("authorize_storage", &self.authorize_storage)
.field(
"confirm_overwrite",
&self.confirm_overwrite.as_ref().map(|_| "<closure>"),
Expand All @@ -98,6 +101,7 @@ impl Clone for FlashJob {
firmware_path: self.firmware_path.clone(),
authorize_uuid: self.authorize_uuid.clone(),
authorize_key: self.authorize_key.clone(),
authorize_storage: self.authorize_storage,
confirm_overwrite: None, // closures are not Clone
}
}
Expand Down
5 changes: 4 additions & 1 deletion crates/tyutool-core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ mod serial_debug;
mod tuya_dev_usb;
mod usb_port_survey;

pub use authorize::{run_batch_auth_slot, BatchAuthSlotResult, BatchAuthStep, ConflictPolicy};
pub use authorize::{
read_auth_probe, run_batch_auth_slot, AuthStorage, BatchAuthSlotResult, BatchAuthStep,
ConflictPolicy, ReadAuthProbeResult,
};
pub use error::FlashError;
pub use flash_event::{
FlashEvent, FlashMilestone, FlashPhase, FlashResult, JobDetails, JobSummary,
Expand Down
2 changes: 2 additions & 0 deletions crates/tyutool-core/src/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ mod tests {
firmware_path: None,
authorize_uuid: None,
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
let cancel = AtomicBool::new(false);
Expand Down Expand Up @@ -267,6 +268,7 @@ mod tests {
firmware_path: None,
authorize_uuid: None,
authorize_key: None,
authorize_storage: None,
confirm_overwrite: None,
};
let cancel = AtomicBool::new(false);
Expand Down
Loading
Loading