diff --git a/.gitignore b/.gitignore
index b40d9258..afb9ce17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,8 @@
target/
target-docker/
+cache/
+out/
# Dependencies that are explicitly vendored for offline builds.
# .vendor/ stores a snapshot of crates.io deps; re-generate via:
diff --git a/Cargo.lock b/Cargo.lock
index a471c296..19170b5a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2263,6 +2263,7 @@ dependencies = [
"clap",
"clap_complete",
"hex",
+ "humantime",
"predicates",
"qrcode",
"rand 0.8.6",
diff --git a/Cargo.toml b/Cargo.toml
index ece44249..6f0b8b08 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -67,6 +67,7 @@ rusqlite = { version = "0.31", features = ["bundled"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
mpp = { version = "0.10.4", default-features = false, features = ["client", "tempo", "reqwest-rustls-tls"] }
url = "2"
+humantime = "2"
humantime-serde = "1"
tempfile = "3"
futures = "0.3"
diff --git a/crates/bloom-daemon/src/ipc.rs b/crates/bloom-daemon/src/ipc.rs
index 64ae39a1..b6e2c810 100644
--- a/crates/bloom-daemon/src/ipc.rs
+++ b/crates/bloom-daemon/src/ipc.rs
@@ -24,6 +24,7 @@
use std::path::{Path, PathBuf};
use std::sync::Arc;
+use std::time::UNIX_EPOCH;
use base64::Engine as _;
use base64::engine::general_purpose::STANDARD as B64;
@@ -1334,12 +1335,19 @@ fn entry_to_json(e: &Entry) -> Value {
EntryKind::File => "file",
EntryKind::Symlink => "symlink",
};
+ let modified_ms = e.modified.map(|modified| {
+ modified
+ .duration_since(UNIX_EPOCH)
+ .unwrap_or_default()
+ .as_millis()
+ });
json!({
"name": e.name,
"kind": kind,
"size": e.size,
"mode": e.mode,
"link_target": e.link_target,
+ "modified_ms": modified_ms,
})
}
diff --git a/crates/bloom-evm/src/lib.rs b/crates/bloom-evm/src/lib.rs
index f727ef9e..997a3a05 100644
--- a/crates/bloom-evm/src/lib.rs
+++ b/crates/bloom-evm/src/lib.rs
@@ -331,10 +331,29 @@ impl ChainClient {
Ok(self.primary.get_transaction_by_hash(hash).await?)
}
+ pub async fn raw_tx_by_hash(
+ &self,
+ hash: B256,
+ ) -> Result