WIP: Dioxus Bootstrap migration — hero_cloud_ui #18

Draft
mik-tf wants to merge 14 commits from development_dioxus_bootstrap into development
Owner

DO NOT MERGE

Phase 1 of the Dioxus Bootstrap migration for hero_cloud_ui.

Ref: #26

What this PR does

  • Adds new hero_cloud_ui_wasm crate with Dioxus 0.7 + dioxus-bootstrap-css 0.1.6
  • Translates the Askama/JS dashboard into reactive Dioxus components:
    • AppNavbar with theme toggle and connection status
    • NodeCard for compute node registration and info
    • SlicesTable for slice listing
    • VmsTable for VM management (start/stop/delete)
    • DeployModal for deploying new VMs
  • JSON-RPC client via gloo-net calling /rpc proxy
  • Modifies hero_cloud_ui Axum server:
    • --dist CLI arg for serving WASM dist directory
    • Feature-gated Askama (backward compatible)
    • /assets/{*path} route for WASM dist files

Build verification

  • cargo check -p hero_cloud_ui passes
  • cargo check -p hero_cloud_ui_wasm --target wasm32-unknown-unknown passes

Test plan

  • dx build in crates/hero_cloud_ui_wasm/
  • hero_cloud_ui serve --dist target/dx/hero_cloud_ui_wasm/release/web/public
  • Verify dashboard loads, node register works, VMs table populates
  • Verify theme toggle (dark/light) works
  • Verify backward compat: hero_cloud_ui serve (no --dist) still renders Askama template
## DO NOT MERGE **Phase 1** of the Dioxus Bootstrap migration for `hero_cloud_ui`. Ref: #26 ### What this PR does - Adds new `hero_cloud_ui_wasm` crate with Dioxus 0.7 + dioxus-bootstrap-css 0.1.6 - Translates the Askama/JS dashboard into reactive Dioxus components: - `AppNavbar` with theme toggle and connection status - `NodeCard` for compute node registration and info - `SlicesTable` for slice listing - `VmsTable` for VM management (start/stop/delete) - `DeployModal` for deploying new VMs - JSON-RPC client via gloo-net calling `/rpc` proxy - Modifies `hero_cloud_ui` Axum server: - `--dist` CLI arg for serving WASM dist directory - Feature-gated Askama (backward compatible) - `/assets/{*path}` route for WASM dist files ### Build verification - `cargo check -p hero_cloud_ui` passes - `cargo check -p hero_cloud_ui_wasm --target wasm32-unknown-unknown` passes ### Test plan - [ ] `dx build` in `crates/hero_cloud_ui_wasm/` - [ ] `hero_cloud_ui serve --dist target/dx/hero_cloud_ui_wasm/release/web/public` - [ ] Verify dashboard loads, node register works, VMs table populates - [ ] Verify theme toggle (dark/light) works - [ ] Verify backward compat: `hero_cloud_ui serve` (no --dist) still renders Askama template
feat: add Dioxus WASM frontend for hero_cloud_ui (Phase 1)
Some checks failed
Test / test (push) Failing after 2s
Test / test (pull_request) Failing after 2s
d2e6fb7003
refactor: convert hero_cloud_ui_wasm to archipelago library crate
Some checks failed
Test / test (pull_request) Failing after 4s
Test / test (push) Failing after 6s
060c34fc45
Change from [[bin]] to [lib] with crate-type = ["cdylib", "rlib"].
Add hero_archipelagos_core dependency and IslandContext-based props.
Split main.rs into lib.rs + app.rs, export HeroCloudApp component.
Add [package.metadata.island] and feature gates (default/web/standalone).
fix: use single-segment route params for Axum 0.7 compat
Some checks failed
Test / test (push) Failing after 1m44s
Test / test (pull_request) Failing after 2m16s
d7a1f78c41
fix: RPC routing + conditional BootstrapHead for hero_os integration
Some checks failed
Test / test (pull_request) Failing after 1m46s
Test / test (push) Failing after 2m43s
f620e45157
fix: synchronous RPC base init (before first render)
Some checks failed
Test / test (push) Failing after 1m44s
Test / test (pull_request) Failing after 1m55s
5478c0eb6a
fix: unconditional RPC base init
Some checks failed
Test / test (push) Failing after 2m23s
Test / test (pull_request) Failing after 1m37s
7ba4868179
fix(cloud): convert one-shot node_status to polling loop
Some checks failed
Test / test (push) Failing after 3m5s
Test / test (pull_request) Failing after 3m24s
b0c864c9bc
The initial node_status RPC was a one-shot use_future that could hang
forever if the backend was down. Convert to a polling loop so it retries
and shows Disconnected gracefully.
chore: bump dioxus-bootstrap-css to 0.1.7
Some checks failed
Test / test (pull_request) Failing after 1m45s
Test / test (push) Failing after 2m47s
c62a0357f4
chore: bump dioxus-bootstrap-css to 0.1.8
Some checks failed
Test / test (pull_request) Failing after 1m37s
Test / test (push) Failing after 1m58s
fdb90c80de
refactor: pixel-perfect Askama→dioxus-bootstrap-css rewrite
Some checks failed
Test / test (push) Failing after 2m46s
Test / test (pull_request) Failing after 2m52s
63a21a49fa
Convert raw HTML div/table/button elements to proper dioxus-bootstrap-css
components (Card, Table, Button, Row, Col) for pixel-perfect Bootstrap 5.3.
chore: bump dioxus-bootstrap-css to 0.1.9
Some checks failed
Test / test (push) Failing after 1m55s
Test / test (pull_request) Failing after 2m1s
c689ddb641
chore: bump dioxus-bootstrap-css to 0.2.0 (extends GlobalAttributes)
Some checks failed
Test / test (pull_request) Failing after 3m37s
Test / test (push) Failing after 3m39s
465bc46594
chore: bump dioxus-bootstrap-css to 0.2.1
Some checks failed
Test / test (push) Failing after 1m39s
Test / test (pull_request) Failing after 2m3s
e3051baad8
refactor: remove Bootstrap-overriding CSS, use pure dioxus-bootstrap utility classes
Some checks failed
Test / test (push) Failing after 1m35s
Test / test (pull_request) Failing after 2m0s
3190389abf
Some checks failed
Test / test (push) Failing after 1m35s
Test / test (pull_request) Failing after 2m0s
This pull request has changes conflicting with the target branch.
  • Cargo.lock
  • Cargo.toml
  • crates/hero_compute_server/src/cloud/osis_server_generated.rs
  • crates/hero_compute_server/src/cloud/rpc_generated.rs
  • crates/hero_compute_ui/Cargo.toml
  • crates/hero_compute_ui/src/server.rs
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin development_dioxus_bootstrap:development_dioxus_bootstrap
git switch development_dioxus_bootstrap

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch development
git merge --no-ff development_dioxus_bootstrap
git switch development_dioxus_bootstrap
git rebase development
git switch development
git merge --ff-only development_dioxus_bootstrap
git switch development_dioxus_bootstrap
git rebase development
git switch development
git merge --no-ff development_dioxus_bootstrap
git switch development
git merge --squash development_dioxus_bootstrap
git switch development
git merge --ff-only development_dioxus_bootstrap
git switch development
git merge development_dioxus_bootstrap
git push origin development
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_compute!18
No description provided.