fix(islands): iframe fallback for osis on web build #118

Merged
mik-tf merged 1 commit from development_mik_osis_iframe_fallback into development 2026-04-30 00:19:52 +00:00
Owner

Summary

The OSIS island only had an island-osis-native cfg arm in IslandContent (see island_content.rs:581). Default web builds do not enable that feature, so clicking the OSIS dock icon fell through to the dynamic WASM loader, producing Failed to load island WASM 'osis': Island not found: osis (HTTP 404) (since there is no hero_archipelagos_osis bundle on disk either).

Mirror the pattern already in tree for collab and whiteboard: iframe fallback to /hero_osis/ui/ when the native island is not compiled in. The native path is unchanged.

// OSIS: iframe fallback or native Dioxus island
#[cfg(not(feature = "island-osis-native"))]
"osis" => rsx! { ExternalServiceIframe { src: "/hero_osis/ui/", id: "osis-iframe" } },
#[cfg(feature = "island-osis-native")]
"osis" => rsx! { hero_osis_app::HeroOsisApp { context: context } },

Verification

  • cargo fmt --check — clean.
  • cargo clippy -p hero_os_app --target wasm32-unknown-unknown --no-default-features --features web --all-targets -- -D warnings — clean.
  • web-native clippy regression noted in passing (unused import: hero_archipelagos_hero::island::HeroApp at island_content.rs:64) is pre-existing on development HEAD and unrelated to this change.

Closes

Refs

  • lhumina_code/hero_demo#34 — broader scope (services dead-wood removal, books default swap, videos missing) intentionally not bundled here.
## Summary The OSIS island only had an `island-osis-native` cfg arm in `IslandContent` (see [`island_content.rs:581`](https://forge.ourworld.tf/lhumina_code/hero_os/src/branch/development/crates/hero_os_app/src/island_content.rs#L581)). Default `web` builds do not enable that feature, so clicking the OSIS dock icon fell through to the dynamic WASM loader, producing `Failed to load island WASM 'osis': Island not found: osis (HTTP 404)` (since there is no `hero_archipelagos_osis` bundle on disk either). Mirror the pattern already in tree for `collab` and `whiteboard`: iframe fallback to `/hero_osis/ui/` when the native island is not compiled in. The native path is unchanged. ```rust // OSIS: iframe fallback or native Dioxus island #[cfg(not(feature = "island-osis-native"))] "osis" => rsx! { ExternalServiceIframe { src: "/hero_osis/ui/", id: "osis-iframe" } }, #[cfg(feature = "island-osis-native")] "osis" => rsx! { hero_osis_app::HeroOsisApp { context: context } }, ``` ## Verification - `cargo fmt --check` — clean. - `cargo clippy -p hero_os_app --target wasm32-unknown-unknown --no-default-features --features web --all-targets -- -D warnings` — clean. - `web-native` clippy regression noted in passing (`unused import: hero_archipelagos_hero::island::HeroApp` at `island_content.rs:64`) is **pre-existing on `development` HEAD** and unrelated to this change. ## Closes - https://forge.ourworld.tf/lhumina_code/hero_os/issues/112 ## Refs - https://forge.ourworld.tf/lhumina_code/hero_demo/issues/34 — broader scope (services dead-wood removal, books default swap, videos missing) intentionally not bundled here.
fix(islands): iframe fallback for osis on web build
All checks were successful
Build and Test / build (pull_request) Successful in 3m33s
1f48364eff
The OSIS island had only an `island-osis-native` cfg arm in the dispatcher,
so default `web` builds (which do not enable that feature) had no matching
arm and fell through to the dynamic loader, producing a 404 when users
clicked the OSIS dock icon. Mirror the pattern already used by `collab` and
`whiteboard`: iframe fallback to /hero_osis/ui/ when the native island is
not compiled in.

Closes #112
Refs   lhumina_code/hero_demo#34

Signed-off-by: mik-tf
mik-tf merged commit d70af39ecc into development 2026-04-30 00:19:52 +00:00
mik-tf deleted branch development_mik_osis_iframe_fallback 2026-04-30 00:19:52 +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!118
No description provided.