diff --git a/Cargo.lock b/Cargo.lock index a4d2005b6..29012132f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -830,7 +830,7 @@ dependencies = [ "alloy-sol-types", "anyhow", "bincode", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "rand 0.8.5", "serde", @@ -1195,7 +1195,7 @@ dependencies = [ "anyhow", "chrono", "hex", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "rand 0.8.5", "rmp-serde", @@ -1546,7 +1546,7 @@ dependencies = [ "anyhow", "bincode", "hex", - "hyperware_process_lib 2.2.1", + "hyperware_process_lib 3.0.1", "process_macros", "rand 0.8.5", "serde", @@ -2477,7 +2477,7 @@ name = "download" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -2489,7 +2489,7 @@ name = "downloads" version = "0.5.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "rand 0.8.5", "serde", @@ -2673,6 +2673,7 @@ name = "explorer" version = "0.1.0" dependencies = [ "anyhow", + "file_explorer_caller_utils", "hyperapp_macro 0.1.1", "hyperware_process_lib 2.2.0 (git+https://github.com/hyperware-ai/process_lib?rev=1a6ad9d)", "md5", @@ -2770,6 +2771,22 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "file_explorer_caller_utils" +version = "0.1.0" +dependencies = [ + "anyhow", + "futures", + "futures-util", + "hyperware_process_lib 2.2.0 (git+https://github.com/hyperware-ai/process_lib?rev=1a6ad9d)", + "once_cell", + "process_macros", + "serde", + "serde_json", + "uuid 1.17.0", + "wit-bindgen 0.41.0", +] + [[package]] name = "fixed-hash" version = "0.8.0" @@ -2855,7 +2872,7 @@ version = "0.2.0" dependencies = [ "anyhow", "bincode", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "rand 0.8.5", "serde", @@ -3031,7 +3048,7 @@ dependencies = [ name = "get-block" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "serde", "serde_json", "wit-bindgen 0.42.1", @@ -3343,7 +3360,7 @@ dependencies = [ "alloy-sol-types", "anyhow", "hex", - "hyperware_process_lib 2.2.1", + "hyperware_process_lib 3.0.1", "process_macros", "rmp-serde", "serde", @@ -3648,7 +3665,7 @@ dependencies = [ "anyhow", "chrono", "hex", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "rand 0.8.5", "rmp-serde", @@ -3744,8 +3761,9 @@ dependencies = [ [[package]] name = "hyperware_process_lib" -version = "2.2.1" -source = "git+https://github.com/hyperware-ai/process_lib?rev=4e91521#4e915218b382e4b3f7f93cddeec30415f02a504b" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe2b6795488c3f7d3410808cf7e29404725f862ad42a3822886464b92451a21" dependencies = [ "alloy", "alloy-primitives", @@ -3755,6 +3773,8 @@ dependencies = [ "base64 0.22.1", "bincode", "color-eyre", + "futures-channel", + "futures-util", "http 1.3.1", "mime_guess", "rand 0.8.5", @@ -3767,14 +3787,14 @@ dependencies = [ "tracing-error", "tracing-subscriber", "url", + "uuid 1.17.0", "wit-bindgen 0.42.1", ] [[package]] name = "hyperware_process_lib" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe2b6795488c3f7d3410808cf7e29404725f862ad42a3822886464b92451a21" +version = "3.0.1" +source = "git+https://github.com/hyperware-ai/process_lib?rev=34b1f1d857f76fb474f7af96f089961445758edb#34b1f1d857f76fb474f7af96f089961445758edb" dependencies = [ "alloy", "alloy-primitives", @@ -3784,8 +3804,6 @@ dependencies = [ "base64 0.22.1", "bincode", "color-eyre", - "futures-channel", - "futures-util", "http 1.3.1", "mime_guess", "rand 0.8.5", @@ -3798,7 +3816,6 @@ dependencies = [ "tracing-error", "tracing-subscriber", "url", - "uuid 1.17.0", "wit-bindgen 0.42.1", ] @@ -4030,7 +4047,7 @@ name = "install" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -4803,7 +4820,7 @@ dependencies = [ name = "node-info" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -5841,7 +5858,7 @@ dependencies = [ name = "reset" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -5852,7 +5869,7 @@ dependencies = [ name = "reset-cache" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -5864,7 +5881,7 @@ name = "reset-store" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -6378,7 +6395,7 @@ dependencies = [ name = "set-nodes" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -6623,12 +6640,29 @@ dependencies = [ "serde", "serde_json", "sha2", + "spider_caller_utils", "url", "uuid 1.17.0", "wit-bindgen 0.42.1", "wit-parser 0.220.1", ] +[[package]] +name = "spider_caller_utils" +version = "0.1.0" +dependencies = [ + "anyhow", + "futures", + "futures-util", + "hyperware_process_lib 2.2.0 (git+https://github.com/hyperware-ai/process_lib?rev=41f25ce)", + "once_cell", + "process_macros", + "serde", + "serde_json", + "uuid 1.17.0", + "wit-bindgen 0.41.0", +] + [[package]] name = "spin" version = "0.9.8" @@ -6671,7 +6705,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" name = "start-providing" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -6682,7 +6716,7 @@ dependencies = [ name = "state" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -6716,7 +6750,7 @@ dependencies = [ name = "stop-providing" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", @@ -7569,7 +7603,7 @@ name = "uninstall" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.3.0", + "hyperware_process_lib 3.0.1", "process_macros", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index ffa7d7559..9f1aa5ee0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "hyperdrive_lib" authors = ["Sybil Technologies AG"] -version = "1.9.2" +version = "1.9.3" edition = "2021" description = "A general-purpose sovereign cloud computing platform" homepage = "https://hyperware.ai" diff --git a/hyperdrive/Cargo.toml b/hyperdrive/Cargo.toml index e430f62e8..a798db974 100644 --- a/hyperdrive/Cargo.toml +++ b/hyperdrive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "hyperdrive" authors = ["Sybil Technologies AG"] -version = "1.9.2" +version = "1.9.3" edition = "2021" description = "A general-purpose sovereign cloud computing platform" homepage = "https://hyperware.ai" @@ -67,7 +67,7 @@ p256 = { version = "0.13", features = ["ecdsa"] } public-ip = "0.2.2" rand = "0.8.4" regex = "1.11.0" -reqwest = "0.12.4" +reqwest = { version = "0.12.4", features = ["json"] } ring = "0.17.8" rmp-serde = "1.1.2" rocksdb = { version = "0.22.0", features = ["multi-threaded-cf"] } diff --git a/hyperdrive/packages/app-store/Cargo.lock b/hyperdrive/packages/app-store/Cargo.lock index a5db5f05d..730674f6c 100644 --- a/hyperdrive/packages/app-store/Cargo.lock +++ b/hyperdrive/packages/app-store/Cargo.lock @@ -585,7 +585,7 @@ dependencies = [ "alloy-sol-types", "anyhow", "bincode", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "rand", "serde", @@ -952,7 +952,7 @@ dependencies = [ "anyhow", "bincode", "hex", - "hyperware_process_lib 2.2.1", + "hyperware_process_lib", "process_macros", "rand", "serde", @@ -1156,7 +1156,7 @@ name = "download" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", @@ -1168,7 +1168,7 @@ name = "downloads" version = "0.5.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "rand", "serde", @@ -1344,7 +1344,7 @@ version = "0.2.0" dependencies = [ "anyhow", "bincode", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "rand", "serde", @@ -1656,35 +1656,8 @@ dependencies = [ [[package]] name = "hyperware_process_lib" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3abd008d22c3b96ee43300c4c8dffbf1d072a680a13635b5f9da11a0ce9395" -dependencies = [ - "alloy", - "alloy-primitives", - "alloy-sol-macro", - "alloy-sol-types", - "anyhow", - "base64", - "bincode", - "hex", - "http", - "mime_guess", - "rand", - "regex", - "rmp-serde", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "url", - "wit-bindgen", -] - -[[package]] -name = "hyperware_process_lib" -version = "2.2.1" -source = "git+https://github.com/hyperware-ai/process_lib?rev=4e91521#4e915218b382e4b3f7f93cddeec30415f02a504b" +version = "3.0.1" +source = "git+https://github.com/hyperware-ai/process_lib?rev=34b1f1d857f76fb474f7af96f089961445758edb#34b1f1d857f76fb474f7af96f089961445758edb" dependencies = [ "alloy", "alloy-primitives", @@ -1886,7 +1859,7 @@ name = "install" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", @@ -2580,7 +2553,7 @@ name = "reset-store" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", @@ -3341,7 +3314,7 @@ name = "uninstall" version = "0.1.0" dependencies = [ "anyhow", - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", diff --git a/hyperdrive/packages/app-store/app-store/Cargo.toml b/hyperdrive/packages/app-store/app-store/Cargo.toml index a2a2be749..f830c7c91 100644 --- a/hyperdrive/packages/app-store/app-store/Cargo.toml +++ b/hyperdrive/packages/app-store/app-store/Cargo.toml @@ -11,7 +11,7 @@ alloy-primitives = "0.8.15" alloy-sol-types = "0.8.15" anyhow = "1.0" bincode = "1.3.3" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" rand = "0.8" serde = { version = "1.0", features = ["derive"] } diff --git a/hyperdrive/packages/app-store/app-store/src/lib.rs b/hyperdrive/packages/app-store/app-store/src/lib.rs index b465f2e05..fc2db616e 100644 --- a/hyperdrive/packages/app-store/app-store/src/lib.rs +++ b/hyperdrive/packages/app-store/app-store/src/lib.rs @@ -147,8 +147,13 @@ fn handle_message( response.send().unwrap(); } } - http::server::HttpServerRequest::WebSocketOpen { path, channel_id } => { - http_server.handle_websocket_open(&path, channel_id); + http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + source_socket_addr, + forwarded_for, + } => { + http_server.handle_websocket_open(&path, channel_id, source_socket_addr, forwarded_for); } http::server::HttpServerRequest::WebSocketClose(channel_id) => { http_server.handle_websocket_close(channel_id); diff --git a/hyperdrive/packages/app-store/chain/Cargo.toml b/hyperdrive/packages/app-store/chain/Cargo.toml index fcd1b2904..562dba6d9 100644 --- a/hyperdrive/packages/app-store/chain/Cargo.toml +++ b/hyperdrive/packages/app-store/chain/Cargo.toml @@ -12,7 +12,7 @@ alloy-sol-types = "0.8.15" anyhow = "1.0" hex = "0.4" bincode = "1.3.3" -hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "4e91521" } +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" rand = "0.8" serde = { version = "1.0", features = ["derive"] } diff --git a/hyperdrive/packages/app-store/download/Cargo.toml b/hyperdrive/packages/app-store/download/Cargo.toml index 1744ce7bf..3d624d433 100644 --- a/hyperdrive/packages/app-store/download/Cargo.toml +++ b/hyperdrive/packages/app-store/download/Cargo.toml @@ -8,7 +8,7 @@ simulation-mode = [] [dependencies] anyhow = "1.0" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/hyperdrive/packages/app-store/downloads/Cargo.toml b/hyperdrive/packages/app-store/downloads/Cargo.toml index 6f90c7c05..f75f17555 100644 --- a/hyperdrive/packages/app-store/downloads/Cargo.toml +++ b/hyperdrive/packages/app-store/downloads/Cargo.toml @@ -8,7 +8,7 @@ simulation-mode = [] [dependencies] anyhow = "1.0" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" rand = "0.8" serde = { version = "1.0", features = ["derive"] } diff --git a/hyperdrive/packages/app-store/ft-worker/Cargo.toml b/hyperdrive/packages/app-store/ft-worker/Cargo.toml index 9f6ea88d3..1b1c8326f 100644 --- a/hyperdrive/packages/app-store/ft-worker/Cargo.toml +++ b/hyperdrive/packages/app-store/ft-worker/Cargo.toml @@ -9,7 +9,7 @@ simulation-mode = [] [dependencies] anyhow = "1.0" bincode = "1.3.3" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" rand = "0.8" serde = { version = "1.0", features = ["derive"] } diff --git a/hyperdrive/packages/app-store/install/Cargo.toml b/hyperdrive/packages/app-store/install/Cargo.toml index 1320b5161..4af498c94 100644 --- a/hyperdrive/packages/app-store/install/Cargo.toml +++ b/hyperdrive/packages/app-store/install/Cargo.toml @@ -8,7 +8,7 @@ simulation-mode = [] [dependencies] anyhow = "1.0" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/hyperdrive/packages/app-store/reset-store/Cargo.toml b/hyperdrive/packages/app-store/reset-store/Cargo.toml index 754ae83cb..6ca79c9eb 100644 --- a/hyperdrive/packages/app-store/reset-store/Cargo.toml +++ b/hyperdrive/packages/app-store/reset-store/Cargo.toml @@ -8,7 +8,7 @@ simulation-mode = [] [dependencies] anyhow = "1.0" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/hyperdrive/packages/app-store/uninstall/Cargo.toml b/hyperdrive/packages/app-store/uninstall/Cargo.toml index 8bbd3559b..64c3fccd2 100644 --- a/hyperdrive/packages/app-store/uninstall/Cargo.toml +++ b/hyperdrive/packages/app-store/uninstall/Cargo.toml @@ -8,7 +8,7 @@ simulation-mode = [] [dependencies] anyhow = "1.0" -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } process_macros = "0.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/hyperdrive/packages/file-explorer/Cargo.lock b/hyperdrive/packages/file-explorer/Cargo.lock index 16213b04f..b83ada160 100644 --- a/hyperdrive/packages/file-explorer/Cargo.lock +++ b/hyperdrive/packages/file-explorer/Cargo.lock @@ -1240,9 +1240,8 @@ name = "explorer" version = "0.1.0" dependencies = [ "anyhow", - "file_explorer_caller_utils", - "hyperprocess_macro", - "hyperware_process_lib 2.2.0 (git+https://github.com/hyperware-ai/process_lib?rev=4beff93)", + "hyperapp_macro", + "hyperware_process_lib 2.2.0", "md5", "process_macros", "serde", @@ -1300,22 +1299,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "file_explorer_caller_utils" -version = "0.1.0" -dependencies = [ - "anyhow", - "futures", - "futures-util", - "hyperware_process_lib 2.2.0 (git+https://github.com/hyperware-ai/process_lib?rev=4beff93)", - "once_cell", - "process_macros", - "serde", - "serde_json", - "uuid", - "wit-bindgen 0.41.0", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -1330,9 +1313,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide 0.8.9", @@ -1682,11 +1665,12 @@ dependencies = [ ] [[package]] -name = "hyperprocess_macro" -version = "0.1.0" -source = "git+https://github.com/hyperware-ai/hyperprocess-macro?rev=66884c0#66884c0a22b845d1db632f0fb8985a7e5bdad3fb" +name = "hyperapp_macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e694a2a3dd6c4d1ba3ec2110b054dca52834ae10d98630b39efd7a59ed4887c8" dependencies = [ - "hyperware_process_lib 2.2.0 (git+https://github.com/hyperware-ai/process_lib?rev=b9f1ead)", + "hyperware_process_lib 2.3.0", "proc-macro2", "quote", "syn 2.0.100", @@ -1695,7 +1679,7 @@ dependencies = [ [[package]] name = "hyperware_process_lib" version = "2.2.0" -source = "git+https://github.com/hyperware-ai/process_lib?rev=4beff93#4beff9389598978d2f97e4cd6d1d0f74a7acac0f" +source = "git+https://github.com/hyperware-ai/process_lib?rev=1a6ad9d#1a6ad9d00e98bd6b268a7d434a7e78a0bb3cce7b" dependencies = [ "alloy", "alloy-primitives", @@ -1705,6 +1689,7 @@ dependencies = [ "base64", "bincode", "color-eyre", + "futures-channel", "futures-util", "http", "mime_guess", @@ -1724,8 +1709,9 @@ dependencies = [ [[package]] name = "hyperware_process_lib" -version = "2.2.0" -source = "git+https://github.com/hyperware-ai/process_lib?rev=b9f1ead#b9f1ead63356bfd4b60b337a380fef1be81d81c6" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe2b6795488c3f7d3410808cf7e29404725f862ad42a3822886464b92451a21" dependencies = [ "alloy", "alloy-primitives", @@ -1735,6 +1721,7 @@ dependencies = [ "base64", "bincode", "color-eyre", + "futures-channel", "futures-util", "http", "mime_guess", @@ -3082,9 +3069,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "slab" diff --git a/hyperdrive/packages/file-explorer/explorer/Cargo.toml b/hyperdrive/packages/file-explorer/explorer/Cargo.toml index 33fefce8f..bb289e760 100644 --- a/hyperdrive/packages/file-explorer/explorer/Cargo.toml +++ b/hyperdrive/packages/file-explorer/explorer/Cargo.toml @@ -1,13 +1,17 @@ [dependencies] anyhow = "1.0" -md5 = "0.7" hyperapp_macro = "0.1.1" +md5 = "0.7" process_macros = "0.1" serde_json = "1.0" serde_urlencoded = "0.7" tracing = "0.1.37" wit-bindgen = "0.42.1" +[dependencies.file_explorer_caller_utils] +optional = true +path = "../target/file-explorer-caller-utils" + [dependencies.hyperware_process_lib] features = ["hyperapp"] git = "https://github.com/hyperware-ai/process_lib" @@ -17,6 +21,9 @@ rev = "1a6ad9d" features = ["derive"] version = "1.0" +[features] +caller-utils = ["file_explorer_caller_utils"] + [lib] crate-type = ["cdylib"] name = "explorer" diff --git a/hyperdrive/packages/hns-indexer/Cargo.lock b/hyperdrive/packages/hns-indexer/Cargo.lock index 111a29fbf..2bf5a6385 100644 --- a/hyperdrive/packages/hns-indexer/Cargo.lock +++ b/hyperdrive/packages/hns-indexer/Cargo.lock @@ -1379,7 +1379,7 @@ dependencies = [ name = "get-block" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "serde", "serde_json", "wit-bindgen", @@ -1487,7 +1487,7 @@ dependencies = [ "alloy-sol-types", "anyhow", "hex", - "hyperware_process_lib 2.2.1", + "hyperware_process_lib", "process_macros", "rmp-serde", "serde", @@ -1592,35 +1592,8 @@ dependencies = [ [[package]] name = "hyperware_process_lib" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3abd008d22c3b96ee43300c4c8dffbf1d072a680a13635b5f9da11a0ce9395" -dependencies = [ - "alloy", - "alloy-primitives", - "alloy-sol-macro", - "alloy-sol-types", - "anyhow", - "base64", - "bincode", - "hex", - "http", - "mime_guess", - "rand", - "regex", - "rmp-serde", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "url", - "wit-bindgen", -] - -[[package]] -name = "hyperware_process_lib" -version = "2.2.1" -source = "git+https://github.com/hyperware-ai/process_lib?rev=4e91521#4e915218b382e4b3f7f93cddeec30415f02a504b" +version = "3.0.1" +source = "git+https://github.com/hyperware-ai/process_lib?rev=34b1f1d857f76fb474f7af96f089961445758edb#34b1f1d857f76fb474f7af96f089961445758edb" dependencies = [ "alloy", "alloy-primitives", @@ -2032,7 +2005,7 @@ dependencies = [ name = "node-info" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", @@ -2569,7 +2542,7 @@ dependencies = [ name = "reset" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", @@ -2973,7 +2946,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" name = "state" version = "0.1.0" dependencies = [ - "hyperware_process_lib 2.1.0", + "hyperware_process_lib", "process_macros", "serde", "serde_json", diff --git a/hyperdrive/packages/hns-indexer/get-block/Cargo.toml b/hyperdrive/packages/hns-indexer/get-block/Cargo.toml index fd9a55e5f..d185896a0 100644 --- a/hyperdrive/packages/hns-indexer/get-block/Cargo.toml +++ b/hyperdrive/packages/hns-indexer/get-block/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" simulation-mode = [] [dependencies] -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" wit-bindgen = "0.42.1" diff --git a/hyperdrive/packages/hns-indexer/hns-indexer/Cargo.toml b/hyperdrive/packages/hns-indexer/hns-indexer/Cargo.toml index 1d4c67035..db195099d 100644 --- a/hyperdrive/packages/hns-indexer/hns-indexer/Cargo.toml +++ b/hyperdrive/packages/hns-indexer/hns-indexer/Cargo.toml @@ -11,7 +11,7 @@ anyhow = "1.0" alloy-primitives = "0.8.15" alloy-sol-types = "0.8.15" hex = "0.4.3" -hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "4e91521", features = ["logging"] } +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb", features = ["logging"] } process_macros = "0.1" rmp-serde = "1.1.2" serde = { version = "1.0", features = ["derive"] } diff --git a/hyperdrive/packages/hns-indexer/node-info/Cargo.toml b/hyperdrive/packages/hns-indexer/node-info/Cargo.toml index 09baa1417..552e465d8 100644 --- a/hyperdrive/packages/hns-indexer/node-info/Cargo.toml +++ b/hyperdrive/packages/hns-indexer/node-info/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" simulation-mode = [] [dependencies] -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" process_macros = "0.1" diff --git a/hyperdrive/packages/hns-indexer/reset/Cargo.toml b/hyperdrive/packages/hns-indexer/reset/Cargo.toml index 55e12c42d..58e2b35a6 100644 --- a/hyperdrive/packages/hns-indexer/reset/Cargo.toml +++ b/hyperdrive/packages/hns-indexer/reset/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" simulation-mode = [] [dependencies] -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" process_macros = "0.1" diff --git a/hyperdrive/packages/hns-indexer/state/Cargo.toml b/hyperdrive/packages/hns-indexer/state/Cargo.toml index 70565c3cd..73587fe9b 100644 --- a/hyperdrive/packages/hns-indexer/state/Cargo.toml +++ b/hyperdrive/packages/hns-indexer/state/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" simulation-mode = [] [dependencies] -hyperware_process_lib = "2.1.0" +hyperware_process_lib = { git = "https://github.com/hyperware-ai/process_lib", rev = "34b1f1d857f76fb474f7af96f089961445758edb" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" process_macros = "0.1" diff --git a/hyperdrive/packages/homepage/homepage/src/lib.rs b/hyperdrive/packages/homepage/homepage/src/lib.rs index d7a0d901a..eb1af9d58 100644 --- a/hyperdrive/packages/homepage/homepage/src/lib.rs +++ b/hyperdrive/packages/homepage/homepage/src/lib.rs @@ -63,6 +63,65 @@ enum NotificationsResponse { Err(String), } +/// WebSocket message types sent to frontend +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(tag = "kind", content = "data")] +#[serde(rename_all = "snake_case")] +enum WsMessage { + AppsUpdate(Vec), +} + +/// App data sent over WebSocket (mirrors HomepageApp in TypeScript) +#[derive(Serialize, Deserialize, Debug, Clone)] +struct WsApp { + id: String, + process: String, + package_name: String, + publisher: String, + #[serde(skip_serializing_if = "Option::is_none")] + path: Option, + label: String, + #[serde(skip_serializing_if = "Option::is_none")] + base64_icon: Option, + #[serde(skip_serializing_if = "Option::is_none")] + widget: Option, + order: u32, + favorite: bool, +} + +impl From<&homepage::App> for WsApp { + fn from(app: &homepage::App) -> Self { + WsApp { + id: app.id.clone(), + process: app.process.clone(), + package_name: app.package_name.clone(), + publisher: app.publisher.clone(), + path: app.path.clone(), + label: app.label.clone(), + base64_icon: app.base64_icon.clone(), + widget: app.widget.clone(), + order: app.order, + favorite: app.favorite, + } + } +} + +/// Helper function to broadcast app updates to all WebSocket clients +fn broadcast_apps_update( + http_server: &server::HttpServer, + app_data: &BTreeMap, +) { + let apps: Vec = app_data.values().map(WsApp::from).collect(); + let message = WsMessage::AppsUpdate(apps); + let json = serde_json::to_string(&message).unwrap(); + + http_server.ws_push_all_channels( + "/", + http::server::WsMessageType::Text, + LazyLoadBlob::new(Some("application/json"), json.into_bytes()), + ); +} + wit_bindgen::generate!({ path: "../target/wit", world: "homepage-sys-v1", @@ -295,6 +354,10 @@ fn init(our: Address) { .bind_http_path("/api/notifications/test-vapid", http_config) .expect("failed to bind /api/notifications/test-vapid"); + http_server + .bind_ws_path("/", server::WsBindingConfig::default()) + .expect("failed to bind ws path"); + hyperware_process_lib::homepage::add_to_homepage( "Clock", None, @@ -319,6 +382,23 @@ fn init(our: Address) { let Ok(request) = http_server.parse_request(message.body()) else { continue; }; + // Handle WebSocket events + match &request { + http::server::HttpServerRequest::WebSocketOpen { path, channel_id } => { + http_server.handle_websocket_open(path, *channel_id); + continue; + } + http::server::HttpServerRequest::WebSocketClose(channel_id) => { + http_server.handle_websocket_close(*channel_id); + continue; + } + http::server::HttpServerRequest::WebSocketPush { .. } => { + continue; + } + http::server::HttpServerRequest::Http(_) => { + // Fall through to handle_request for HTTP + } + } http_server.handle_request( request, |incoming| { @@ -955,11 +1035,13 @@ fn init(our: Address) { .contains(&message.source().process.to_string().as_str()), }, ); + broadcast_apps_update(&http_server, &app_data); } homepage::Request::Remove => { let id = message.source().process.to_string(); app_data.remove(&id); persisted_app_order.remove(&id); + broadcast_apps_update(&http_server, &app_data); } homepage::Request::RemoveOther(id) => { // caps check @@ -973,6 +1055,7 @@ fn init(our: Address) { // end caps check app_data.remove(&id); persisted_app_order.remove(&id); + broadcast_apps_update(&http_server, &app_data); } homepage::Request::GetApps => { let apps = app_data.values().cloned().collect::>(); diff --git a/hyperdrive/packages/homepage/ui/src/components/Home/components/AppContainer.tsx b/hyperdrive/packages/homepage/ui/src/components/Home/components/AppContainer.tsx index b6ab69a15..95967d5af 100644 --- a/hyperdrive/packages/homepage/ui/src/components/Home/components/AppContainer.tsx +++ b/hyperdrive/packages/homepage/ui/src/components/Home/components/AppContainer.tsx @@ -10,6 +10,14 @@ export const AppContainer: React.FC = ({ app, isVisible }) => const iframeRef = useRef(null); const [hasError, setHasError] = useState(false); const [isLoading, setIsLoading] = useState(true); + const [hasAnimatedIn, setHasAnimatedIn] = useState(false); + + // Track when the app first becomes visible to trigger entrance animation + useEffect(() => { + if (isVisible && !hasAnimatedIn) { + setHasAnimatedIn(true); + } + }, [isVisible, hasAnimatedIn]); // Ensure we have a valid path const appUrl = useMemo(() => { @@ -29,8 +37,13 @@ export const AppContainer: React.FC = ({ app, isVisible }) => return (
{hasError ? (
diff --git a/hyperdrive/packages/homepage/ui/src/components/Home/components/AppDrawer.tsx b/hyperdrive/packages/homepage/ui/src/components/Home/components/AppDrawer.tsx index 6099ae1af..c79d934f3 100644 --- a/hyperdrive/packages/homepage/ui/src/components/Home/components/AppDrawer.tsx +++ b/hyperdrive/packages/homepage/ui/src/components/Home/components/AppDrawer.tsx @@ -33,7 +33,7 @@ export const AppDrawer: React.FC = () => { return (
@@ -59,10 +59,11 @@ export const AppDrawer: React.FC = () => { 'grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6': filteredApps.length > 0, 'grid-cols-2': filteredApps.length === 0, })}> - {filteredApps.map(app => ( + {filteredApps.map((app, index) => (
{ diff --git a/hyperdrive/packages/homepage/ui/src/components/Home/components/AppIcon.tsx b/hyperdrive/packages/homepage/ui/src/components/Home/components/AppIcon.tsx index 40263e495..232553672 100644 --- a/hyperdrive/packages/homepage/ui/src/components/Home/components/AppIcon.tsx +++ b/hyperdrive/packages/homepage/ui/src/components/Home/components/AppIcon.tsx @@ -18,6 +18,7 @@ export const AppIcon: React.FC = ({ }) => { const { openApp } = useNavigationStore(); const [isPressed, setIsPressed] = useState(false); + const [isHovered, setIsHovered] = useState(false); const handlePress = () => { if (!isEditMode && app.path && app.path !== null) { @@ -25,19 +26,30 @@ export const AppIcon: React.FC = ({ } }; + // Calculate scale based on state priority: pressed > hovered > default + const getScale = () => { + if (isPressed) return 'scale(0.94)'; + if (isHovered && !isEditMode && isFloating) return 'scale(1.08)'; + return 'scale(1)'; + }; + return (
setIsPressed(true)} onMouseUp={() => setIsPressed(false)} - onMouseLeave={() => setIsPressed(false)} + onMouseEnter={() => setIsHovered(true)} + onMouseLeave={() => { setIsPressed(false); setIsHovered(false); }} + onTouchStart={() => setIsPressed(true)} + onTouchEnd={() => setIsPressed(false)} onClick={handlePress} data-app-id={app.id} data-app-path={app.path} diff --git a/hyperdrive/packages/homepage/ui/src/components/Home/components/HomeScreen.tsx b/hyperdrive/packages/homepage/ui/src/components/Home/components/HomeScreen.tsx index 303359612..90a55a9a6 100644 --- a/hyperdrive/packages/homepage/ui/src/components/Home/components/HomeScreen.tsx +++ b/hyperdrive/packages/homepage/ui/src/components/Home/components/HomeScreen.tsx @@ -430,6 +430,7 @@ export const HomeScreen: React.FC = () => { > {app ? (
{ e.dataTransfer.setData('appId', app.id); diff --git a/hyperdrive/packages/homepage/ui/src/components/Home/components/Modal.tsx b/hyperdrive/packages/homepage/ui/src/components/Home/components/Modal.tsx index 6f51bd43b..75eec412a 100644 --- a/hyperdrive/packages/homepage/ui/src/components/Home/components/Modal.tsx +++ b/hyperdrive/packages/homepage/ui/src/components/Home/components/Modal.tsx @@ -18,8 +18,8 @@ export const Modal: React.FC = ({ title }) => { return ( -
-
+
+
{title &&

{title}

}