Use dioxus-bootstrap-css thoroughly in hero_components #2

Open
opened 2026-06-21 23:20:00 +00:00 by mik-tf · 7 comments
Owner

Objective

Wire hero_components to dioxus-bootstrap-css properly, not as a half-step. The shared Hero admin app must use the crate as the Bootstrap layer: bundled/offline assets, typed Bootstrap components for generic Bootstrap UI, and Dioxus signals for interactive behavior.

This issue is only for the dioxus-bootstrap-css + hero_components foundation. It is not the migration of every service-specific admin UI from home#309.

Why

home#309 defines the frontend pattern as Dioxus admin in hero_components, styled by dioxus-bootstrap-css, zero Bootstrap JavaScript, and offline-first assets. Today hero_components_app still loads Bootstrap and Bootstrap Icons from jsDelivr in both Dioxus.toml and AdminRoot, and much of the app hand-writes Bootstrap component markup (btn, card, alert, badge, form-control, table, icons) instead of using typed wrappers.

Design boundary

  • dioxus-bootstrap-css owns generic Bootstrap 5.3 components and behaviors.
  • hero_components owns Hero-specific composition: shell, islands, logs, process views, router diagnostics, service panes.
  • If hero_components needs a generic Bootstrap component/prop/behavior that the crate does not expose, add it in dioxus-bootstrap-css first and then consume the pinned crates.io release from hero_components.
  • Utility classes remain allowed where the crate itself expects them (py-2, mb-0, d-flex, gap-2, text-secondary, etc.). Raw Bootstrap component widgets are not the target form when a typed crate component exists.

Requirements

  • Remove all runtime public CDN Bootstrap and Bootstrap Icons loading from hero_components_app.
  • Add pinned crates.io dioxus-bootstrap-css dependency to hero_components_app.
  • Mount BootstrapHead {} once at app root so Bootstrap CSS and icons are bundled/offline.
  • Use ThemeProvider and Theme signals for dark/light mode instead of manually writing data-bs-theme string state on local containers.
  • Convert shared shell and primitives to typed Bootstrap components where the crate has equivalents: Button, Card, Alert, Badge, Icon, Table, Input, Select, Textarea, ButtonGroup, InputGroup, etc.
  • Convert interactive Bootstrap behaviors to Dioxus signals, not Bootstrap JS or data-bs-* attributes.
  • Keep Island, Scaffold, TabHead, LogsPanel, ProcessTable, ServiceMenu, diagnostics, and service panes as Hero abstractions, but build their Bootstrap widgets from typed primitives.
  • Do not introduce a local generic Bootstrap wrapper layer inside hero_components when that wrapper belongs in dioxus-bootstrap-css.

Implementation Plan

  1. Baseline audit

    • Confirm current hero_components_app CDN loading in Dioxus.toml and src/lib.rs.
    • Inventory raw Bootstrap component usage and split it into: generic Bootstrap component, utility/layout class, Hero-specific component.
    • Identify any missing generic Bootstrap primitive needed by the conversion.
  2. dioxus-bootstrap-css gap pass

    • Add only truly generic Bootstrap components/props/behaviors needed by hero_components.
    • Keep APIs typed and signal-driven.
    • Add focused tests/examples where the crate already has coverage patterns.
    • Release/bump only if a new crate API is required; otherwise consume current crates.io version.
  3. Foundation wiring in hero_components_app

    • Add pinned dioxus-bootstrap-css dependency.
    • Replace CDN stylesheet injection with BootstrapHead {}.
    • Remove [web.resource.*].style CDN entries from Dioxus.toml.
    • Replace string theme state with Signal<Theme> and ThemeProvider.
  4. Shared primitive conversion

    • Convert admin/shell.rs, admin/layout.rs, admin/components/mod.rs, and common router table/status widgets from raw Bootstrap component classes to typed components.
    • Preserve Hero layout semantics and visual behavior.
    • Leave utility classes where they express spacing/layout and are passed into typed components.
  5. Pane conversion sweep

    • Convert obvious component widgets in existing first-party panes (proc, router, aibroker, voice) to typed components where practical in this pass.
    • For large tables/forms, prefer crate Table, Input, Select, Textarea, Badge, Button, and Icon while preserving current behavior.
    • Record any remaining raw component markup as explicit follow-up only if it is too risky to convert in the same pass.
  6. Verification

    • cargo check in dioxus-bootstrap-css/crates/dioxus-bootstrap.
    • cargo check in hero_components/crates/hero_components_app.
    • dx build --platform web for hero_components_app or lab build hero_components --restart --install if local Hero services are available.
    • Browser smoke test /hero_components/admin/ and representative service routes through hero_router: fleet console, ?service=hero_proc, and at least one non-proc service if discovered.
    • Confirm no network requests to jsDelivr/Bootstrap CDN and no Bootstrap JS requirement.
    • Confirm theme toggle, tabs, selectors, tables, forms, and copy/log views still render and respond.

Acceptance Criteria

  • hero_components_app has no jsDelivr Bootstrap or Bootstrap Icons runtime dependency.
  • BootstrapHead {} is the only Bootstrap asset loader in the app root.
  • ThemeProvider controls Bootstrap theme via a Signal<Theme>.
  • No Bootstrap JS, new bootstrap.*, or behavior-driving data-bs-* attributes are introduced.
  • Shared shell/primitives use typed dioxus-bootstrap-css components for generic Bootstrap widgets.
  • Generic missing Bootstrap APIs, if any, are implemented in dioxus-bootstrap-css, not ad hoc in hero_components.
  • Utility classes remain only for layout/spacing/text helpers where typed components still accept class.
  • Rust checks pass for both crates.
  • Browser smoke checks pass and show no CDN styling dependency.

Notes

The goal is not to delete every class: attribute. The goal is to eliminate raw Bootstrap component markup when the crate owns a typed equivalent, while preserving Hero-specific layout components and normal Bootstrap utility-class usage.

## Objective Wire `hero_components` to `dioxus-bootstrap-css` properly, not as a half-step. The shared Hero admin app must use the crate as the Bootstrap layer: bundled/offline assets, typed Bootstrap components for generic Bootstrap UI, and Dioxus signals for interactive behavior. This issue is only for the `dioxus-bootstrap-css` + `hero_components` foundation. It is not the migration of every service-specific admin UI from home#309. ## Why home#309 defines the frontend pattern as Dioxus admin in `hero_components`, styled by `dioxus-bootstrap-css`, zero Bootstrap JavaScript, and offline-first assets. Today `hero_components_app` still loads Bootstrap and Bootstrap Icons from jsDelivr in both `Dioxus.toml` and `AdminRoot`, and much of the app hand-writes Bootstrap component markup (`btn`, `card`, `alert`, `badge`, `form-control`, `table`, icons) instead of using typed wrappers. ## Design boundary - `dioxus-bootstrap-css` owns generic Bootstrap 5.3 components and behaviors. - `hero_components` owns Hero-specific composition: shell, islands, logs, process views, router diagnostics, service panes. - If `hero_components` needs a generic Bootstrap component/prop/behavior that the crate does not expose, add it in `dioxus-bootstrap-css` first and then consume the pinned crates.io release from `hero_components`. - Utility classes remain allowed where the crate itself expects them (`py-2`, `mb-0`, `d-flex`, `gap-2`, `text-secondary`, etc.). Raw Bootstrap component widgets are not the target form when a typed crate component exists. ## Requirements - Remove all runtime public CDN Bootstrap and Bootstrap Icons loading from `hero_components_app`. - Add pinned crates.io `dioxus-bootstrap-css` dependency to `hero_components_app`. - Mount `BootstrapHead {}` once at app root so Bootstrap CSS and icons are bundled/offline. - Use `ThemeProvider` and `Theme` signals for dark/light mode instead of manually writing `data-bs-theme` string state on local containers. - Convert shared shell and primitives to typed Bootstrap components where the crate has equivalents: `Button`, `Card`, `Alert`, `Badge`, `Icon`, `Table`, `Input`, `Select`, `Textarea`, `ButtonGroup`, `InputGroup`, etc. - Convert interactive Bootstrap behaviors to Dioxus signals, not Bootstrap JS or `data-bs-*` attributes. - Keep `Island`, `Scaffold`, `TabHead`, `LogsPanel`, `ProcessTable`, `ServiceMenu`, diagnostics, and service panes as Hero abstractions, but build their Bootstrap widgets from typed primitives. - Do not introduce a local generic Bootstrap wrapper layer inside `hero_components` when that wrapper belongs in `dioxus-bootstrap-css`. ## Implementation Plan 1. Baseline audit - Confirm current `hero_components_app` CDN loading in `Dioxus.toml` and `src/lib.rs`. - Inventory raw Bootstrap component usage and split it into: generic Bootstrap component, utility/layout class, Hero-specific component. - Identify any missing generic Bootstrap primitive needed by the conversion. 2. `dioxus-bootstrap-css` gap pass - Add only truly generic Bootstrap components/props/behaviors needed by `hero_components`. - Keep APIs typed and signal-driven. - Add focused tests/examples where the crate already has coverage patterns. - Release/bump only if a new crate API is required; otherwise consume current crates.io version. 3. Foundation wiring in `hero_components_app` - Add pinned `dioxus-bootstrap-css` dependency. - Replace CDN stylesheet injection with `BootstrapHead {}`. - Remove `[web.resource.*].style` CDN entries from `Dioxus.toml`. - Replace string theme state with `Signal<Theme>` and `ThemeProvider`. 4. Shared primitive conversion - Convert `admin/shell.rs`, `admin/layout.rs`, `admin/components/mod.rs`, and common router table/status widgets from raw Bootstrap component classes to typed components. - Preserve Hero layout semantics and visual behavior. - Leave utility classes where they express spacing/layout and are passed into typed components. 5. Pane conversion sweep - Convert obvious component widgets in existing first-party panes (`proc`, `router`, `aibroker`, `voice`) to typed components where practical in this pass. - For large tables/forms, prefer crate `Table`, `Input`, `Select`, `Textarea`, `Badge`, `Button`, and `Icon` while preserving current behavior. - Record any remaining raw component markup as explicit follow-up only if it is too risky to convert in the same pass. 6. Verification - `cargo check` in `dioxus-bootstrap-css/crates/dioxus-bootstrap`. - `cargo check` in `hero_components/crates/hero_components_app`. - `dx build --platform web` for `hero_components_app` or `lab build hero_components --restart --install` if local Hero services are available. - Browser smoke test `/hero_components/admin/` and representative service routes through `hero_router`: fleet console, `?service=hero_proc`, and at least one non-proc service if discovered. - Confirm no network requests to jsDelivr/Bootstrap CDN and no Bootstrap JS requirement. - Confirm theme toggle, tabs, selectors, tables, forms, and copy/log views still render and respond. ## Acceptance Criteria - [ ] `hero_components_app` has no jsDelivr Bootstrap or Bootstrap Icons runtime dependency. - [ ] `BootstrapHead {}` is the only Bootstrap asset loader in the app root. - [ ] `ThemeProvider` controls Bootstrap theme via a `Signal<Theme>`. - [ ] No Bootstrap JS, `new bootstrap.*`, or behavior-driving `data-bs-*` attributes are introduced. - [ ] Shared shell/primitives use typed `dioxus-bootstrap-css` components for generic Bootstrap widgets. - [ ] Generic missing Bootstrap APIs, if any, are implemented in `dioxus-bootstrap-css`, not ad hoc in `hero_components`. - [ ] Utility classes remain only for layout/spacing/text helpers where typed components still accept `class`. - [ ] Rust checks pass for both crates. - [ ] Browser smoke checks pass and show no CDN styling dependency. ## Notes The goal is not to delete every `class:` attribute. The goal is to eliminate raw Bootstrap component markup when the crate owns a typed equivalent, while preserving Hero-specific layout components and normal Bootstrap utility-class usage.
Author
Owner

Progress update:

Implemented the safe foundation for the Dioxus Bootstrap integration:

  • removed the app-level Bootstrap/Bootstrap Icons CDN links from Dioxus.toml
  • mounted dioxus-bootstrap-css with BootstrapHead {} and ThemeProvider
  • switched the root discovery warning to typed Alert
  • converted the admin shell/layout/component primitives that were touched in this pass to typed Button, Card, Alert, Badge, Icon, Input, Select, and Textarea components
  • added keyboard event support to dioxus-bootstrap-css Input/Textarea on branch development_input_key_events, because the app needed typed onkeydown rather than falling back to raw input

Verification:

  • cargo check passes in dioxus-bootstrap-css/crates/dioxus-bootstrap
  • cargo check passes in hero_components_app with the local dioxus-bootstrap-css path dependency
  • dx build --platform web --release --debug-symbols false passes

Important remaining work before this issue should be called complete:

  • hero_components_app currently depends on the local dioxus-bootstrap-css branch; that shared crate change needs to be merged/published or replaced with an appropriate git dependency before this can be merged cleanly
  • proc/process.rs and proc/terminal_app.js still actively load terminal assets and Bootstrap JS from CDN; this terminal widget is still a JS-owned UI and should be refactored so xterm/PTY remains imperative JS but Bootstrap UI state/modals move into Dioxus signals/components
  • the router/proc feature tabs still contain many direct Bootstrap class usages; those should be migrated module-by-module to typed components after the shell foundation
  • browser smoke testing was not completed because the local hero_router/hero_browser services were not running in this workspace
Progress update: Implemented the safe foundation for the Dioxus Bootstrap integration: - removed the app-level Bootstrap/Bootstrap Icons CDN links from Dioxus.toml - mounted dioxus-bootstrap-css with BootstrapHead {} and ThemeProvider - switched the root discovery warning to typed Alert - converted the admin shell/layout/component primitives that were touched in this pass to typed Button, Card, Alert, Badge, Icon, Input, Select, and Textarea components - added keyboard event support to dioxus-bootstrap-css Input/Textarea on branch development_input_key_events, because the app needed typed onkeydown rather than falling back to raw input Verification: - cargo check passes in dioxus-bootstrap-css/crates/dioxus-bootstrap - cargo check passes in hero_components_app with the local dioxus-bootstrap-css path dependency - dx build --platform web --release --debug-symbols false passes Important remaining work before this issue should be called complete: - hero_components_app currently depends on the local dioxus-bootstrap-css branch; that shared crate change needs to be merged/published or replaced with an appropriate git dependency before this can be merged cleanly - proc/process.rs and proc/terminal_app.js still actively load terminal assets and Bootstrap JS from CDN; this terminal widget is still a JS-owned UI and should be refactored so xterm/PTY remains imperative JS but Bootstrap UI state/modals move into Dioxus signals/components - the router/proc feature tabs still contain many direct Bootstrap class usages; those should be migrated module-by-module to typed components after the shell foundation - browser smoke testing was not completed because the local hero_router/hero_browser services were not running in this workspace
Author
Owner

Checkpoint update:

  • Bumped local dioxus-bootstrap-css to 0.5.2 for backward-compatible typed component API gaps: Button link style, Badge onclick, Input min/max/autocomplete/change/key events, Textarea change/key events and size.
  • Updated hero_components_app to use the local 0.5.2 path dependency explicitly.
  • Removed app-level Bootstrap CDN styles from Dioxus.toml and rely on BootstrapHead/ThemeProvider from dioxus-bootstrap-css.
  • Migrated shell/layout and major app surfaces to typed Bootstrap components: buttons, cards, alerts, badges, forms, tables, selects, textareas, icons, tabs/modal-capable primitives where applicable.
  • Refactored terminal loading away from external CDNs and Bootstrap JS: xterm CSS/JS and fit addon are vendored locally; terminal modal behavior no longer uses window.bootstrap or data-bs attributes. xterm/PTTY browser plumbing remains JS because that is the terminal engine boundary.

Verification:

  • dioxus-bootstrap-css: cargo check passed.
  • dioxus-bootstrap-css: cargo test passed, including doctests.
  • dioxus-bootstrap-css: cargo publish --dry-run --allow-dirty passed for 0.5.2.
  • crates.io currently reports dioxus-bootstrap-css latest as 0.5.1, so 0.5.2 is available.
  • hero_components_app: cargo check passed.
  • hero_components_app: dx build --platform web --release --debug-symbols false completed successfully. dx logs a version compatibility warning/error banner for dx 0.7.3 vs dioxus 0.7.9 but exits 0 and produces the web bundle.
  • Source scans show no CDN, Bootstrap bundle, window.bootstrap, data-bs, or document::Stylesheet usage remaining.
  • Headless Chrome smoke test against the built static bundle rendered the app and produced /tmp/hero_components_app.png. Static mode shows the expected discovery error because no Hero backend is attached.

Outstanding caveat:

  • The terminal island still contains Bootstrap CSS class names in generated JS HTML for its xterm-specific DOM, but no Bootstrap JS/CDN dependency remains. A full Dioxus rewrite of that terminal UI would be a separate larger change because xterm session/pane orchestration is imperative browser integration.
Checkpoint update: - Bumped local dioxus-bootstrap-css to 0.5.2 for backward-compatible typed component API gaps: Button link style, Badge onclick, Input min/max/autocomplete/change/key events, Textarea change/key events and size. - Updated hero_components_app to use the local 0.5.2 path dependency explicitly. - Removed app-level Bootstrap CDN styles from Dioxus.toml and rely on BootstrapHead/ThemeProvider from dioxus-bootstrap-css. - Migrated shell/layout and major app surfaces to typed Bootstrap components: buttons, cards, alerts, badges, forms, tables, selects, textareas, icons, tabs/modal-capable primitives where applicable. - Refactored terminal loading away from external CDNs and Bootstrap JS: xterm CSS/JS and fit addon are vendored locally; terminal modal behavior no longer uses window.bootstrap or data-bs attributes. xterm/PTTY browser plumbing remains JS because that is the terminal engine boundary. Verification: - dioxus-bootstrap-css: cargo check passed. - dioxus-bootstrap-css: cargo test passed, including doctests. - dioxus-bootstrap-css: cargo publish --dry-run --allow-dirty passed for 0.5.2. - crates.io currently reports dioxus-bootstrap-css latest as 0.5.1, so 0.5.2 is available. - hero_components_app: cargo check passed. - hero_components_app: dx build --platform web --release --debug-symbols false completed successfully. dx logs a version compatibility warning/error banner for dx 0.7.3 vs dioxus 0.7.9 but exits 0 and produces the web bundle. - Source scans show no CDN, Bootstrap bundle, window.bootstrap, data-bs, or document::Stylesheet usage remaining. - Headless Chrome smoke test against the built static bundle rendered the app and produced /tmp/hero_components_app.png. Static mode shows the expected discovery error because no Hero backend is attached. Outstanding caveat: - The terminal island still contains Bootstrap CSS class names in generated JS HTML for its xterm-specific DOM, but no Bootstrap JS/CDN dependency remains. A full Dioxus rewrite of that terminal UI would be a separate larger change because xterm session/pane orchestration is imperative browser integration.
Author
Owner

Strict Bootstrap/Dioxus pass completed.

What changed:

  • Deleted the previous premature status comment.
  • Bootstrap JS/CDN remains removed.
  • hero_components_app now uses BootstrapHead/ThemeProvider and local dioxus-bootstrap-css 0.5.2 by path dependency.
  • Bootstrap-owned UI is now rendered through typed Dioxus Bootstrap components, including terminal shell controls, dialogs, context menu, buttons, alerts, checkboxes, dropdown menu, icons, forms, cards, tables, and badges.
  • terminal_app.js no longer injects Bootstrap HTML/classes. It now stays limited to terminal/session orchestration: xterm/PTTY lifecycle, panes, WebSocket attach/detach, session tree rendering, keyboard shortcuts, context coordinates, and event/state bridge to Dioxus.
  • dioxus-bootstrap-css 0.5.2 now includes the typed API gaps needed by this integration: form key/change handlers/min/max/autocomplete, Button::link, Badge::onclick, Checkbox::input_id, Checkbox::onclick, forwarded Icon attributes, and standalone DropdownMenu.

Verification:

  • Strict source scan: no raw Bootstrap component classes / Bootstrap JS hooks in hero_components_app/src (btn btn, alert alert, dropdown-*, list-group, form-check*, btn-close, bi bi-*, data-bs-*, CDN refs, window.bootstrap, old modal helpers).
  • cargo +1.96 check -q in hero_components_app: pass, existing warnings only.
  • dx build --platform web --release --debug-symbols false: pass, exit 0. The existing dx 0.7.3 / Dioxus 0.7.9 compatibility banner still prints, but the bundle completes.
  • cargo +1.96 test -q in dioxus-bootstrap-css: pass, 10 tests plus 55 doctests passed, 7 doctests ignored.
  • cargo +1.96 publish --dry-run --allow-dirty: pass for dioxus-bootstrap-css 0.5.2.
  • Static Chrome smoke against the release bundle: pass. The app renders local bundled Bootstrap/Icon assets and shows the expected no-backend discovery alert.

Remaining release steps:

  • Review and publish dioxus-bootstrap-css 0.5.2.
  • Switch hero_components_app from local path dependency to registry 0.5.2 after publish.
  • Run a live/backend browser pass for the terminal workflows before merging/pushing.
Strict Bootstrap/Dioxus pass completed. What changed: - Deleted the previous premature status comment. - Bootstrap JS/CDN remains removed. - `hero_components_app` now uses `BootstrapHead`/`ThemeProvider` and local `dioxus-bootstrap-css 0.5.2` by path dependency. - Bootstrap-owned UI is now rendered through typed Dioxus Bootstrap components, including terminal shell controls, dialogs, context menu, buttons, alerts, checkboxes, dropdown menu, icons, forms, cards, tables, and badges. - `terminal_app.js` no longer injects Bootstrap HTML/classes. It now stays limited to terminal/session orchestration: xterm/PTTY lifecycle, panes, WebSocket attach/detach, session tree rendering, keyboard shortcuts, context coordinates, and event/state bridge to Dioxus. - `dioxus-bootstrap-css 0.5.2` now includes the typed API gaps needed by this integration: form key/change handlers/min/max/autocomplete, `Button::link`, `Badge::onclick`, `Checkbox::input_id`, `Checkbox::onclick`, forwarded `Icon` attributes, and standalone `DropdownMenu`. Verification: - Strict source scan: no raw Bootstrap component classes / Bootstrap JS hooks in `hero_components_app/src` (`btn btn`, `alert alert`, `dropdown-*`, `list-group`, `form-check*`, `btn-close`, `bi bi-*`, `data-bs-*`, CDN refs, `window.bootstrap`, old modal helpers). - `cargo +1.96 check -q` in `hero_components_app`: pass, existing warnings only. - `dx build --platform web --release --debug-symbols false`: pass, exit 0. The existing dx 0.7.3 / Dioxus 0.7.9 compatibility banner still prints, but the bundle completes. - `cargo +1.96 test -q` in `dioxus-bootstrap-css`: pass, 10 tests plus 55 doctests passed, 7 doctests ignored. - `cargo +1.96 publish --dry-run --allow-dirty`: pass for `dioxus-bootstrap-css 0.5.2`. - Static Chrome smoke against the release bundle: pass. The app renders local bundled Bootstrap/Icon assets and shows the expected no-backend discovery alert. Remaining release steps: - Review and publish `dioxus-bootstrap-css 0.5.2`. - Switch `hero_components_app` from local path dependency to registry `0.5.2` after publish. - Run a live/backend browser pass for the terminal workflows before merging/pushing.
Author
Owner

Done.

dioxus-bootstrap-css:

  • 0.5.2 is on crates.io.
  • Source branch pushed to GitHub: development_input_key_events at 375ece3.
  • Tag pushed: v0.5.2.
  • GitHub Release workflow completed successfully for v0.5.2; it verified tag/version parity, detected crates.io already had 0.5.2, skipped the publish step, and created the release: https://github.com/mik-tf/dioxus-bootstrap-css/releases/tag/v0.5.2
  • Release workflow YAML was repaired in the same source commit so the tag CI path is valid going forward.

hero_components:

  • Branch pushed: development_dioxus_bootstrap_css at 5943a30.
  • hero_components_app now uses registry dependency dioxus-bootstrap-css = "0.5.2", no local path.
  • Bootstrap CDN/resource loading is removed from Dioxus.toml and app code.
  • BootstrapHead/ThemeProvider load Bootstrap CSS/icons from the crate assets.
  • Typed crate components now own Bootstrap controls/forms/tables/badges/buttons/alerts/dropdowns/modals where Bootstrap owns the behavior/markup; hero_components keeps product shell/layout primitives.
  • Terminal keeps JS only for xterm/PTTY/session orchestration. Bootstrap UI state and modals are Dioxus/signal-owned. xterm runtime assets are vendored locally, so no runtime CDN load is needed.

Validation passed:

  • dioxus-bootstrap-css: cargo +1.96 fmt --all -- --check, cargo +1.96 test -q, cargo +1.96 publish --dry-run --allow-dirty, git diff --check.
  • hero_components_app: cargo +1.96 fmt --all -- --check, cargo +1.96 check -q, terminal JS parse including vendored xterm files, strict no-CDN/no-Bootstrap-JS scans, dx build --platform web --release --debug-symbols false, static Chromium DOM/screenshot smoke.

Signed-by: mik-tf mik-tf@noreply.invalid

Done. `dioxus-bootstrap-css`: - `0.5.2` is on crates.io. - Source branch pushed to GitHub: `development_input_key_events` at `375ece3`. - Tag pushed: `v0.5.2`. - GitHub Release workflow completed successfully for `v0.5.2`; it verified tag/version parity, detected crates.io already had `0.5.2`, skipped the publish step, and created the release: https://github.com/mik-tf/dioxus-bootstrap-css/releases/tag/v0.5.2 - Release workflow YAML was repaired in the same source commit so the tag CI path is valid going forward. `hero_components`: - Branch pushed: `development_dioxus_bootstrap_css` at `5943a30`. - `hero_components_app` now uses registry dependency `dioxus-bootstrap-css = "0.5.2"`, no local path. - Bootstrap CDN/resource loading is removed from `Dioxus.toml` and app code. - `BootstrapHead`/`ThemeProvider` load Bootstrap CSS/icons from the crate assets. - Typed crate components now own Bootstrap controls/forms/tables/badges/buttons/alerts/dropdowns/modals where Bootstrap owns the behavior/markup; `hero_components` keeps product shell/layout primitives. - Terminal keeps JS only for xterm/PTTY/session orchestration. Bootstrap UI state and modals are Dioxus/signal-owned. xterm runtime assets are vendored locally, so no runtime CDN load is needed. Validation passed: - `dioxus-bootstrap-css`: `cargo +1.96 fmt --all -- --check`, `cargo +1.96 test -q`, `cargo +1.96 publish --dry-run --allow-dirty`, `git diff --check`. - `hero_components_app`: `cargo +1.96 fmt --all -- --check`, `cargo +1.96 check -q`, terminal JS parse including vendored xterm files, strict no-CDN/no-Bootstrap-JS scans, `dx build --platform web --release --debug-symbols false`, static Chromium DOM/screenshot smoke. Signed-by: mik-tf <mik-tf@noreply.invalid>
Author
Owner

PRs opened for merge review:

Both are left unmerged pending explicit go-ahead.

Signed-by: mik-tf mik-tf@noreply.invalid

PRs opened for merge review: - `hero_components`: https://forge.ourworld.tf/lhumina_code/hero_components/pulls/3 - `dioxus-bootstrap-css`: https://github.com/mik-tf/dioxus-bootstrap-css/pull/39 Both are left unmerged pending explicit go-ahead. Signed-by: mik-tf <mik-tf@noreply.invalid>
Author
Owner

Follow-up on dioxus-bootstrap-css PR CI:

  • Initial Playwright failure was from the showcase Media tab using remote random image URLs; carousel height became 0 when those images did not load in CI.
  • Added a separate PR-branch commit 3d932b8 to make showcase media assets deterministic with inline SVG data images. The v0.5.2 release tag remains on 375ece3; it was not moved.
  • GitHub PR checks now pass: Check/Lint/Format, MSRV 1.85, and Playwright showcase.

Signed-by: mik-tf mik-tf@noreply.invalid

Follow-up on `dioxus-bootstrap-css` PR CI: - Initial Playwright failure was from the showcase Media tab using remote random image URLs; carousel height became `0` when those images did not load in CI. - Added a separate PR-branch commit `3d932b8` to make showcase media assets deterministic with inline SVG data images. The `v0.5.2` release tag remains on `375ece3`; it was not moved. - GitHub PR checks now pass: Check/Lint/Format, MSRV 1.85, and Playwright showcase. Signed-by: mik-tf <mik-tf@noreply.invalid>
Author
Owner

Merged PR #3 into development with squash commit 7a51d5b.

Next verification session should run the live hero_router workflow pass we discussed: router services/playground/diagnostics, proc processes/jobs/terminal, AI broker, and voice. Code-level Bootstrap ownership and static smoke are already complete; live workflow verification remains the acceptance pass.

Signed-by: mik-tf mik-tf@noreply.invalid

Merged PR #3 into `development` with squash commit `7a51d5b`. Next verification session should run the live `hero_router` workflow pass we discussed: router services/playground/diagnostics, proc processes/jobs/terminal, AI broker, and voice. Code-level Bootstrap ownership and static smoke are already complete; live workflow verification remains the acceptance pass. Signed-by: mik-tf <mik-tf@noreply.invalid>
Sign in to join this conversation.
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_components#2
No description provided.