mirror of
https://github.com/tiennm99/time-mocker.git
synced 2026-10-11 03:13:47 +00:00
Hold one process handle across every identity check and injection so the PID cannot be recycled mid-inject, and prune injected entries whose start time no longer matches. Read the delta back before reporting a successful injection so a dead channel is no longer a silent no-op mock. Match rules case-insensitively and skip the path arm when the path is empty, surface invalid patterns instead of swallowing them, and stop retrying a failed auto-inject target until its PID is reused. Restore the last fake time on startup, reset "Now" to exactly zero delta, clamp the whole date to range so a boundary shift no longer jumps a year, and default missing persisted fields so one bad field cannot wipe all rules. Show a message box on release startup failure, and cache compiled rules between scans.
49 lines
1.3 KiB
TOML
49 lines
1.3 KiB
TOML
[package]
|
|
name = "time-mocker-ui"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
description = "Controller UI for time-mocker — picks fake time and injects hook DLL into target processes"
|
|
|
|
[[bin]]
|
|
name = "time_mocker_ui"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
time-mocker-core = { path = "../time-mocker-core" }
|
|
eframe = { version = "0.29", default-features = false, features = [
|
|
"default_fonts",
|
|
"glow",
|
|
"persistence",
|
|
] }
|
|
egui = "0.29"
|
|
dll-syringe = "0.17"
|
|
sysinfo = "0.32"
|
|
globset = "0.4"
|
|
regex = "1.11"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
|
|
anyhow = "1.0"
|
|
windows-sys = { workspace = true, features = [
|
|
"Win32_Foundation",
|
|
"Win32_System_Memory",
|
|
"Win32_System_SystemInformation",
|
|
"Win32_System_Threading",
|
|
"Win32_Security",
|
|
"Win32_UI_Shell",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
] }
|
|
|
|
[build-dependencies]
|
|
embed-manifest = "1.4"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.8"
|
|
# Test-only: exercises `#[serde(default)]` on `Persistent`/`Rule` against the
|
|
# exact format `eframe`'s persistence feature actually uses (RON), rather
|
|
# than a stand-in format that wouldn't catch a real deserialization gap.
|
|
ron = "0.8"
|