mirror of
https://github.com/jkcoxson/idevice.git
synced 2026-03-02 06:26:15 +01:00
* feat(springboard): add get_icon_state method for reading home screen layout Add get_icon_state() method to SpringBoardServicesClient that retrieves the current home screen icon layout from iOS devices. Features: - Read complete home screen layout including icon positions and folders - Support for optional formatVersion parameter - Works on all iOS versions (tested on iOS 18.7.3) - Comprehensive documentation with usage examples Note: This PR intentionally does NOT include set_icon_state() as that functionality is non-operational on iOS 18+ (see issue #62 for details). Tested on: - Device: iPhone 16,2 (iPhone 15 Pro) - iOS: 18.7.3 (Build 22H217) * feat(springboard): add set_icon_state method with date precision fix - Implement set_icon_state() to modify home screen layout - Implement set_icon_state_with_version() with format_version parameter - Add truncate_dates_to_seconds() to convert nanosecond precision dates to second precision - Fix iOS compatibility issue where high-precision dates were rejected - Successfully tested on iOS 18.7.3 (previously believed to be restricted) - Follows pymobiledevice3 implementation pattern * refactor(utils): extract truncate_dates_to_seconds to utils::plist module - Move date truncation logic from springboardservices to reusable utils::plist module - Add comprehensive unit tests for date truncation functionality - Add public API documentation for the utility function - This makes the date normalization logic available for other services that may need it * perf(springboard): normalize dates on read instead of write - Move date truncation from set_icon_state to get_icon_state - Eliminates unnecessary clone() operation in set_icon_state - Better performance when setting icon state multiple times - Cleaner API: data from get_icon_state is directly usable in set_icon_state - Users don't need to worry about date precision issues * refactor(springboard): address PR feedback - use Option<&str> and add error validation - Change format_version parameter from Option<String> to Option<&str> for consistency - Remove outdated iOS 18+ restriction comments since setIconState works on iOS 18+ - Add error validation to get_icon_state method similar to get_icon_pngdata - Update documentation to reflect accurate iOS compatibility * Fix cargo clippy warnings * Fix clippy warnings in plist.rs * Add springboard CLI commands --------- Co-authored-by: Jackson Coxson <jkcoxson@gmail.com>
46 lines
1.2 KiB
TOML
46 lines
1.2 KiB
TOML
[package]
|
|
name = "idevice-tools"
|
|
description = "Rust binary tools to interact with services on iOS devices."
|
|
authors = ["Jackson Coxson"]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
license = "MIT"
|
|
documentation = "https://docs.rs/idevice"
|
|
repository = "https://github.com/jkcoxson/idevice"
|
|
keywords = ["lockdownd", "ios"]
|
|
default-run = "idevice-tools"
|
|
|
|
# [[bin]]
|
|
# name = "core_device_proxy_tun"
|
|
# path = "src/core_device_proxy_tun.rs"
|
|
|
|
[[bin]]
|
|
name = "idevice_id"
|
|
path = "src/idevice_id.rs"
|
|
|
|
[[bin]]
|
|
name = "iproxy"
|
|
path = "src/iproxy.rs"
|
|
|
|
[dependencies]
|
|
idevice = { path = "../idevice", features = ["full"], default-features = false }
|
|
tokio = { version = "1.43", features = ["full"] }
|
|
tracing = { version = "0.1.41" }
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
# tun-rs = { version = "1.5", features = ["async"] }
|
|
sha2 = { version = "0.10" }
|
|
ureq = { version = "3" }
|
|
clap = { version = "4.5" }
|
|
jkcli = { version = "0.1" }
|
|
plist = { version = "1.7" }
|
|
plist-macro = { version = "0.1.3" }
|
|
ns-keyed-archive = "0.1.2"
|
|
uuid = "1.16"
|
|
futures-util = { version = "0.3" }
|
|
|
|
[features]
|
|
default = ["aws-lc"]
|
|
aws-lc = ["idevice/aws-lc"]
|
|
ring = ["idevice/ring"]
|
|
openssl = ["idevice/openssl"]
|