feat: consolidated improvements — CI, tech debt, docs, MDX, PDF, books, island fixes #35

Merged
mik-tf merged 31 commits from development_consolidated into development 2026-03-05 17:59:32 +00:00
Owner

Summary

Consolidates 7 open PRs into a single branch, plus the books island is now WASM-native instead of iframe-based.

Merged PRs

  • PR #25: Make CI build workflow pass 100% on all workspace crates
  • PR #27: Clean up clippy suppressions and restore WASM crate coverage
  • PR #28: Add Creating Islands guide documentation
  • PR #30: MDX rendering support in books island
  • PR #20: Inline PDF preview in filesystem island
  • PR #33: Fix books island metadata and standalone registration
  • PR #34: Fix standalone WASM compilation for 5 islands

Additional fixes

  • books island: Replace iframe with WASM-native views (HomeView, SearchView, etc.)
    • New base_url prop replaces host/port — accepts /hero_books_server for proxy routing
    • All API calls go through hero_proxy instead of localhost:8883
  • lib.rs standalone mode: Derives base_url from host:port attrs or backend-url attr

Test plan

  • Build WASM for books island with cargo build --target wasm32-unknown-unknown
  • CI passes on all workspace crates
  • Books island renders HomeView with library list when deployed
  • Navigation between views works (Home → Library → Book → Page)

🤖 Generated with Claude Code

## Summary Consolidates 7 open PRs into a single branch, plus the books island is now WASM-native instead of iframe-based. ### Merged PRs - PR #25: Make CI build workflow pass 100% on all workspace crates - PR #27: Clean up clippy suppressions and restore WASM crate coverage - PR #28: Add Creating Islands guide documentation - PR #30: MDX rendering support in books island - PR #20: Inline PDF preview in filesystem island - PR #33: Fix books island metadata and standalone registration - PR #34: Fix standalone WASM compilation for 5 islands ### Additional fixes - **books island**: Replace iframe with WASM-native views (HomeView, SearchView, etc.) - New `base_url` prop replaces `host`/`port` — accepts `/hero_books_server` for proxy routing - All API calls go through hero_proxy instead of localhost:8883 - **lib.rs standalone mode**: Derives `base_url` from `host:port` attrs or `backend-url` attr ## Test plan - [ ] Build WASM for books island with `cargo build --target wasm32-unknown-unknown` - [ ] CI passes on all workspace crates - [ ] Books island renders HomeView with library list when deployed - [ ] Navigation between views works (Home → Library → Book → Page) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: inline PDF preview in filesystem island
Some checks failed
Build and Test / build (pull_request) Failing after 40s
37380cf4c8
When opening a PDF file, show an inline preview within the island
using an iframe instead of opening in a new browser tab.

Closes #19
fix: make CI build workflow pass 100% on all workspace crates
Some checks failed
Build and Test / build (pull_request) Failing after 2m25s
4d58772fbb
- Run cargo fmt --all across workspace (25+ files with formatting drift)
- Fix build.rs to run rustfmt on generated island_content.rs
- Update WASM check in build.yaml: use --workspace --exclude instead of
  stale hardcoded crate list (12 → all island crates automatically)
- Align Makefile targets with CI workflow:
  - test: cargo test --workspace --lib (matches CI, skips broken doc tests)
  - fmt/fmt-check: use --all flag (matches CI cargo fmt --all)
  - lint: exclude livekit_bridge (matches CI clippy exclusion)
- Fix ci-docker.sh: clean up root-owned .cargo/config.toml between runs
  to prevent duplicate [patch] entries
- Fix clippy warnings: remove unused imports (IslandContext in kanban,
  sprints, stories), remove dead constant (BTN_DISABLED_STYLE), fix
  push_str single-char, allow dead_code on public icon constants
- Apply cargo clippy --fix for clone-on-copy, redundant closures, etc.

Verified with make ci-docker (100% fidelity with Forgejo runner).

Closes #24

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: resolve WASM compilation errors from CI run
All checks were successful
Build and Test / build (pull_request) Successful in 5m26s
4bca09a732
- Fix `_view` → `view` in theme island's dispatch_view_change (E0425)
- Exclude os_widgets and os_components from WASM check (examples depend
  on BaseClient API that drifts with patched hero_osis_sdk)
- Remove uniffi-bindgen from exclude list (not in workspace)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: resolve all remaining clippy warnings for clean CI
All checks were successful
Build and Test / build (pull_request) Successful in 5m29s
95ca2b6851
- editor: allow clippy::should_implement_trait on from_str method
- intelligence: allow dead_code on Role alias and AVAILABLE_MODELS const
- business: fix let_underscore_future (use named binding for use_resource)
- business: fix redundant_pattern_matching (use .is_ok() instead of
  if let Ok(_))
- business: fix format_in_format_args (fold nested format! calls)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: suppress too_many_arguments clippy warning in songs crate
All checks were successful
Build and Test / build (pull_request) Successful in 5m34s
0e213da581
The upload_and_create_song function takes 8 parameters (1 over clippy's
default max of 7). Adding an allow attribute for this specific case.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: clean up clippy suppressions and restore WASM crate coverage
All checks were successful
Build and Test / build (pull_request) Successful in 4m51s
cc53c44e92
- Refactor upload_and_create_song to use CreateSongRequest struct,
  removing the too_many_arguments suppression
- Delete unused Role type alias and AVAILABLE_MODELS constant from
  intelligence crate role_editor
- Add platform-specific create_client() wrappers to os_widgets so
  BaseClient::new() compiles on both wasm32 and native targets
- Re-include os_widgets and os_components in the CI WASM check

Closes #26
docs: add Creating Islands guide and link from README
Some checks failed
Build and Test / build (pull_request) Failing after 7s
90733d25fc
Add step-by-step guide for creating new islands — covers crate setup,
metadata registration, theming, and auto-discovery. Links from README
documentation section.

Closes #12

Co-Authored-By: mik-tf <mik@threefold.io>
feat: add client-side MDX rendering in books island
Some checks failed
Build and Test / build (pull_request) Failing after 14s
11bf9e759e
When the hero_books backend returns content_type="mdx" with raw MDX
source in content_raw, the books island now:

1. Shows the server-side HTML fallback immediately (stripped JSX)
2. Loads mdx-js + React from CDN via dynamic import
3. Compiles raw MDX source client-side
4. Renders JSX components with custom component mappings:
   - Tabs/TabItem — tabbed content panels
   - CodeBlock — syntax-highlighted code
   - Callout/Admonition — info/warning/error boxes
   - Details — collapsible sections
5. Replaces the fallback HTML with the fully rendered MDX output

Falls back gracefully to server HTML if MDX compilation fails.

Closes #29

Co-Authored-By: mik-tf <mik@threefold.io>
fix: add island metadata and update register API for books island
Some checks failed
Build and Test / build (pull_request) Failing after 6s
b2903dfe83
Add [package.metadata.island] so build_standalone.sh discovers the
books island. Port register_custom_element call to the new 5-argument
API (connected/disconnected/attribute_changed callbacks). Add wasm-opt
= false and proper web feature gating.

Closes #32
fix: resolve standalone WASM compilation errors in 5 islands
Some checks failed
Build and Test / build (pull_request) Failing after 6s
039bce8bf6
- filesystem, contexts, ai, room: remove duplicate import of IslandApp
  that conflicts with the existing `pub use island::*` re-export
- code: add missing `use dioxus::prelude::*` and `use island::CodeIslandApp`
  imports for standalone feature

All 5 islands now compile with `wasm-pack build --target web --features
standalone --no-default-features`.

Closes #31
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: replace iframe with WASM views in books island
Some checks failed
Build and Test / build (pull_request) Failing after 9s
41cb0946b7
- BooksApp now renders views/ components directly (HomeView, SearchView, etc.)
- Replace host/port props with base_url prop
  - Production: /hero_books_server (routes through hero_proxy)
  - Local dev: http://localhost:8883 (default)
- lib.rs standalone mode derives base_url from host:port attributes
  or accepts backend-url attribute directly
- All iframe theme-sync code removed (views use CSS variables natively)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: detect proxy base_url in standalone books island
Some checks failed
Build and Test / build (pull_request) Failing after 7s
39fe6110c7
In standalone/custom-element mode, connected_callback now detects
hero_proxy by checking window.location.pathname (same pattern as
osis_url() in hero_os/config.rs):
- pathname starts with /hero_os_http → returns /hero_books_server
- explicit backend-url attribute → uses that directly
- fallback → http://host:port (local dev)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: add nav bar to books island (development_consolidated)
Some checks failed
Build and Test / build (pull_request) Failing after 7s
0717df0b30
Adds top navigation bar (Home, All Books, Import, Convert, Settings)
to BooksApp component. This is the branch consumed by hero_os_ui as
a native Dioxus dependency — the nav bar now appears in the live
hero_os deployment.

Preserves base_url prop for hero_os_ui island_content.rs compatibility.
fix: add missing closing brace for view content div in BooksApp RSX
Some checks failed
Build and Test / build (pull_request) Failing after 7s
99828c07a7
fix: on_view_change must be mut for Dioxus 0.7 FnMut requirement
Some checks failed
Build and Test / build (pull_request) Failing after 7s
f486a32085
chore: bump rust-version from 1.85.0 to 1.92 per hero_ecosystem standard
Some checks failed
Build and Test / build (pull_request) Has been cancelled
f4179002fc
Aligns with hero_ecosystem skill requirement: all repos must use
edition = "2024" and rust-version = "1.92".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge remote-changes: keep edition 2024 per ecosystem standard
Some checks failed
Build and Test / build (pull_request) Failing after 12s
f938fe5993
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: replace Books island iframe with native Dioxus view router
Some checks failed
Build and Test / build (pull_request) Has been cancelled
8d993a400b
- Add [package.metadata.island] to Cargo.toml so build_standalone.sh
  discovers and builds this island as a standalone WASM package
- Rewrite island.rs: remove iframe + postMessage theme sync; render
  all 9 views (Home, BookList, Library, BookDetail, Page, Search,
  Import, Convert, Settings) as native Dioxus components
- base_url derived from context.api_host ("/hero_books" relative path
  works behind hero_proxy; absolute URL works for direct access)
- View changes dispatched via hero:view-change custom event
- lib.rs: remove host/port thread_locals, pass only context to BooksApp
- Add ViewList with 5 nav views + 4 hidden detail views to metadata()
fix: update books island lib.rs to use new register_custom_element API
Some checks failed
Build and Test / build (pull_request) Failing after 7s
f1957e9258
Rewrite lib.rs to match the current register_custom_element signature:
5-argument form (tag, observed_attrs, on_connected, on_disconnected,
on_attribute_changed). Follows the sprints island pattern.

Removes the old 3-argument register() approach that was incompatible
with the current hero_archipelagos_core API.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: add top nav bar to Books island and disable wasm-opt
Some checks failed
Build and Test / build (pull_request) Failing after 6s
b6f84eeca7
- Add 5-tab navigation bar (Home, All Books, Import, Convert, Settings)
  with active tab highlighting using purple accent color
- Layout changed to flex-column to accommodate nav + view content
- Add wasm-opt = false to Cargo.toml to avoid bulk memory wasm-opt failure
  with older toolchain versions
chore: set edition 2024 and rust-version 1.92 per ecosystem standard
Some checks failed
Build and Test / build (pull_request) Has been cancelled
054e925646
Aligns with hero_ecosystem skill requirement: all repos must use
edition = "2024" and rust-version = "1.92".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge development_books_wasm_views: take validated books island implementation
Some checks failed
Build and Test / build (pull_request) Failing after 6s
c2d7ca7dc4
Books island files (island.rs, lib.rs, Cargo.toml) take the version from
development_books_wasm_views — the implementation validated in reliable21.
Consolidated into development_consolidated as the single PR for all
archipelagos changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: add books-island CSS class to outer div for E2E test targeting
Some checks failed
Build and Test / build (pull_request) Failing after 6s
f1822a750a
Playwright e2e tests in hero_os use .books-island as a stable locator to
scope nav-bar assertions to the Books island. Without this class the tests
fall back to emoji-button selectors, but adding the class makes the
selector robust and self-documenting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: rename herofossil_webdav_client to hero_foundry_webdav_client
Some checks failed
Build and Test / build (pull_request) Failing after 6s
7c2688aef5
hero_fossil renamed the package from herofossil_webdav_client to
hero_foundry_webdav_client on the development branch. Update all
20 files referencing it across Cargo.toml and Rust sources.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: rename hero_foundry_webdav_client to hero_fossil_webdav_client
Some checks failed
Build and Test / build (pull_request) Failing after 0s
3ece3e178d
hero_foundry was renamed to hero_fossil. Update all references.
mik-tf merged commit eb3af8561a into development 2026-03-05 17:59:32 +00:00
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_archipelagos!35
No description provided.