fix(islands): wire books, compute, voice to archipelago embeds #75

Merged
mahmoud merged 2 commits from development_fix_island_embeds into development 2026-04-20 08:19:40 +00:00
Member

Summary

Replaces the three remaining ExternalServiceIframe fallbacks in island_content.rs with the real archipelago embed components (BooksApp, ComputeApp, VoiceApp). Those components construct the iframe src via IslandContext::with_window_id(...) and carry the per-island theme/auth sync wiring that the generic fallback lacks.

Closes #74

Changes

  • crates/hero_os_app/src/island_content.rs

    • Added BooksApp, ComputeApp, VoiceApp cfg-gated re-exports alongside the existing embed imports.
    • Books arm: replaced the unconditional iframe with BooksApp (feature island-books) and kept the native HeroBooksApp arm under island-books-native.
    • Compute arm: split the previously unconditional iframe into ComputeApp (feature island-compute) and an iframe fallback for the defensive "neither feature" case.
    • Voice arm: replaced the iframe with VoiceApp (feature island-voice), keeping the existing native arm.
    • Dropped stale comments that said the books UI was served as a standalone iframe.
  • crates/hero_os_app/Cargo.toml

    • Declared island-voice = ["dep:hero_archipelagos_voice"].
    • Added hero_archipelagos_voice as an optional git dep on branch = "development" (mirroring the other hero_archipelagos_* crate declarations).
    • Added island-books and island-voice to the default web feature list so the new arms are selected in the default web build.
  • Cargo.lock — regenerated to include the new archipelago crates (books, compute, voice) and their transitive deps.

Test Plan

  • cargo check -p hero_os_app --no-default-features --features web passes (13 warnings, all pre-existing).
  • cargo check -p hero_os_app --no-default-features --features web-native passes (15 warnings, all pre-existing).
  • In a running hero_os web build, opening the books island renders the .books-island wrapper from BooksApp rather than .embed-container-plain. Same for compute (.compute-embed.embed-container) and voice (.voice-embed / .voice-island per VoiceApp).
  • The iframe src for each of the three islands contains hero_window_id=<id> when a window_id is provided (verified by inspecting the src attribute in the devtools inspector).
## Summary Replaces the three remaining `ExternalServiceIframe` fallbacks in `island_content.rs` with the real archipelago embed components (`BooksApp`, `ComputeApp`, `VoiceApp`). Those components construct the iframe `src` via `IslandContext::with_window_id(...)` and carry the per-island theme/auth sync wiring that the generic fallback lacks. ## Related Issue Closes https://forge.ourworld.tf/lhumina_code/hero_os/issues/74 ## Changes - `crates/hero_os_app/src/island_content.rs` - Added `BooksApp`, `ComputeApp`, `VoiceApp` cfg-gated re-exports alongside the existing embed imports. - Books arm: replaced the unconditional iframe with `BooksApp` (feature `island-books`) and kept the native `HeroBooksApp` arm under `island-books-native`. - Compute arm: split the previously unconditional iframe into `ComputeApp` (feature `island-compute`) and an iframe fallback for the defensive "neither feature" case. - Voice arm: replaced the iframe with `VoiceApp` (feature `island-voice`), keeping the existing native arm. - Dropped stale comments that said the books UI was served as a standalone iframe. - `crates/hero_os_app/Cargo.toml` - Declared `island-voice = ["dep:hero_archipelagos_voice"]`. - Added `hero_archipelagos_voice` as an optional git dep on `branch = "development"` (mirroring the other `hero_archipelagos_*` crate declarations). - Added `island-books` and `island-voice` to the default `web` feature list so the new arms are selected in the default web build. - `Cargo.lock` — regenerated to include the new archipelago crates (`books`, `compute`, `voice`) and their transitive deps. ## Test Plan - [x] `cargo check -p hero_os_app --no-default-features --features web` passes (13 warnings, all pre-existing). - [x] `cargo check -p hero_os_app --no-default-features --features web-native` passes (15 warnings, all pre-existing). - [ ] In a running hero_os web build, opening the `books` island renders the `.books-island` wrapper from `BooksApp` rather than `.embed-container-plain`. Same for `compute` (`.compute-embed.embed-container`) and `voice` (`.voice-embed` / `.voice-island` per `VoiceApp`). - [ ] The iframe `src` for each of the three islands contains `hero_window_id=<id>` when a window_id is provided (verified by inspecting the `src` attribute in the devtools inspector).
fix(islands): wire books, compute, voice to archipelago embeds
Some checks failed
Build and Test / test (pull_request) Failing after 36s
77eaed907d
Swap the three remaining ExternalServiceIframe fallbacks for their
hero_archipelagos embed components (BooksApp, ComputeApp, VoiceApp)
so that per-island theme sync, window_id, and hero_router URL
resolution work correctly.

- island-books / island-voice added to the default web feature set
- island-voice feature declared (dep:hero_archipelagos_voice)
- hero_archipelagos_voice added as an optional git dep alongside
  books/compute

#74
fix: lints and fmt
Some checks failed
Build and Test / test (pull_request) Failing after 1s
251ba2f410
salmaelsoly force-pushed development_fix_island_embeds from 251ba2f410
Some checks failed
Build and Test / test (pull_request) Failing after 1s
to 904c35c967
Some checks failed
Build and Test / test (pull_request) Failing after 31s
2026-04-19 15:49:55 +00:00
Compare
salmaelsoly force-pushed development_fix_island_embeds from 904c35c967
Some checks failed
Build and Test / test (pull_request) Failing after 31s
to da8ca82cd1
Some checks failed
Build and Test / test (pull_request) Failing after 30s
2026-04-19 15:50:59 +00:00
Compare
ci: update rustc and reorder checks
Some checks failed
Build and Test / test (pull_request) Failing after 8s
cc46d0dfb9
salmaelsoly force-pushed development_fix_island_embeds from cc46d0dfb9
Some checks failed
Build and Test / test (pull_request) Failing after 8s
to 3366a8f350
Some checks failed
Build and Test / build (pull_request) Failing after 1m51s
2026-04-20 06:56:01 +00:00
Compare
salmaelsoly force-pushed development_fix_island_embeds from 3366a8f350
Some checks failed
Build and Test / build (pull_request) Failing after 1m51s
to 6277895402
Some checks failed
Build and Test / build (pull_request) Failing after 2m5s
2026-04-20 07:06:11 +00:00
Compare
salmaelsoly force-pushed development_fix_island_embeds from 6277895402
Some checks failed
Build and Test / build (pull_request) Failing after 2m5s
to 4414dc7fff
All checks were successful
Build and Test / build (pull_request) Successful in 3m27s
2026-04-20 07:15:27 +00:00
Compare
mahmoud merged commit d265221e3d into development 2026-04-20 08:19:40 +00:00
mahmoud deleted branch development_fix_island_embeds 2026-04-20 08:19:44 +00:00
Sign in to join this conversation.
No reviewers
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_os!75
No description provided.