No description
  • Rust 79.7%
  • TypeScript 14.5%
  • CSS 4.1%
  • JavaScript 1.4%
  • HTML 0.3%
Find a file
mik-tf 70f627d9fe
All checks were successful
Build and Test / build (push) Successful in 3m54s
D-10: hero_os service.toml sweep (5-binary wholesale)
Brings the hero_os repo into D-10 compliance: 0 lab infocheck findings
across all 5 binary crates.

Changes:
- Add 3 new service.toml files at crates/hero_os/, crates/hero_os_app/,
  crates/hero_os_web/ (kinds cli/cmdline/cmdline, categories core/ui/ui).
- Add `[[env]] PATH_ROOT` to existing crates/hero_os_server/service.toml
  and crates/hero_os_admin/service.toml so lab forwards the var to
  hero_proc-supervised daemons (required since hero_lib 30a0b34e
  introduced the herolib_core::base::paths::path_root() startup
  panic-on-missing).
- Wire `service_base!()` + `validate_service_toml(SERVICE_TOML)` +
  `handle_info_flag(SERVICE_TOML)` into the 5 mains. hero_os_server +
  hero_os_admin drop their manual `const SERVICE_TOML` lines in favor of
  the macro. hero_os_app + hero_os_web gate the service-info contract on
  `#[cfg(not(target_arch = "wasm32"))]` so the wasm build keeps working.
- Make `herolib_core` a non-optional dep on hero_os_app (was optional,
  only pulled by the `mobile` feature); add it to hero_os_web/Cargo.toml.
- Rewrite crates/hero_os/src/main.rs CLI to follow the canonical
  hero_voice pattern: drop the hand-rolled print_info_json /
  print_startup_info / manual --info+--help arg scanning; replace with
  the macro-driven flow. Adds the lesson #19 forward_env_if_set helper
  (PATH_ROOT/PATH_VAR/PATH_BUILD/PATH_CODE/HERO_SOCKET_DIR) on both
  spawned ActionSpecs in build_service_definition() so the `hero_os
  --start` CLI path also threads these vars into the daemons (the
  service.toml [[env]] block only covers the `lab service --start`
  path).

Verification (local):
- lab build --release --install --workspace --policy-mode warn:
  5 discovered, 5 built, 0 failed
- lab infocheck: 5 crate(s) clean, 0 finding(s) total
- lab service hero_os_server --start: smoke 4/4 (health + openrpc.json
  + heroservice.json + system.ping)
- lab service hero_os_admin --start: smoke 2/2 (health + heroservice.json)
- cargo test --workspace --release: 31 passed, 0 failed, 6 ignored
  (matches pre-change baseline)

Refs: hero_proc#105 (D-10 sweep tracker, hero_os row)
2026-05-19 08:11:24 -04:00
.cargo feat: implement Hero socket strategy with HERO_SOCKET_DIR support 2026-04-06 09:52:21 +02:00
.forgejo/workflows create Forgejo Release and upload web tarball asset on tag push 2026-05-14 12:54:19 +02:00
.hero chore: add hero_builder artifacts and fix dep version strings 2026-05-10 14:08:53 +02:00
android/res Phase 2e/2f: Bootstrap 5.3 theme unification + dock sizing 2026-03-06 20:04:41 -05:00
crates D-10: hero_os service.toml sweep (5-binary wholesale) 2026-05-19 08:11:24 -04:00
docs fix: update lifecycle.md socket reference ui.sock -> web.sock 2026-05-07 12:01:14 +02:00
schemas/desktop feat: migrate to OServer::run_cli() and rename contexts → spaces 2026-03-12 15:09:55 +01:00
tests Merge origin/development_30: add browser-based URL route tests 2026-05-08 07:37:30 +02:00
.gitignore refactor: rename crates and switch to Unix domain sockets 2026-03-25 15:50:37 +01:00
Cargo.lock D-10: hero_os service.toml sweep (5-binary wholesale) 2026-05-19 08:11:24 -04:00
Cargo.toml Rename hero_service → hero_lifecycle (#55 downstream) (#149) 2026-05-19 02:32:37 +00:00
clippy.toml refactor: Update dependencies and add slides iframe support (#70) 2026-04-19 20:11:15 +00:00
config.toml feat(dock): enable Office archipelago in default profile 2026-05-01 18:48:47 +00:00
Dioxus.toml feat: sessions 17-18 — native dioxus islands, new URL routing, OSIS auth fix, build safety 2026-04-12 09:58:05 -04:00
PURPOSE.md fix: logging compliance, socket naming, add PURPOSE.md 2026-05-07 12:00:26 +02:00
README.md fix: logging compliance, socket naming, add PURPOSE.md 2026-05-07 12:00:26 +02:00
VALIDATION_REPORT.json chore: update rust-version to 1.95.0 and canonical dep versions 2026-05-08 09:35:33 +02:00

Hero OS

A desktop environment framework built with Dioxus (Rust → WASM) that serves as the host for Hero Archipelago islands. Provides macOS-style window management, context switching, and theming for dynamically loaded WASM applications.

Architecture

hero_os/
├── crates/
│   ├── hero_os/              # CLI — registers services with hero_proc
│   ├── hero_os_server/       # OpenRPC state server (desktop state, windows, layout)
│   ├── hero_os_sdk/          # Type-safe async Rust SDK client
│   ├── hero_os_ui/           # HTTP server — serves WASM assets + RPC proxy
│   ├── hero_os_app/          # Dioxus desktop environment (web/mobile/desktop)
│   ├── hero_os_web/          # Bootstrap shell WASM UI (alternative)
│   └── hero_os_examples/     # Example programs using the SDK
├── schemas/                  # OSchema definitions
├── tests/                    # Playwright E2E tests
├── Makefile
└── buildenv.sh

Sockets

All services use Unix domain sockets exclusively (no TCP ports).

Service Socket Path
hero_os_server $HERO_SOCKET_DIR/hero_os/rpc.sock
hero_os_ui $HERO_SOCKET_DIR/hero_os/web.sock

Service Communication

Browser
  └─ hero_os_app (WASM, served by hero_os_ui)
       └─ /rpc/{context} → hero_os_ui (proxy)
            └─ Unix socket → hero_osis_server

hero_os CLI (--start/--stop)
  └─ hero_proc (process supervisor)
       ├─ hero_os_server (desktop state, OpenRPC)
       └─ hero_os_ui (HTTP + RPC proxy)

Running

Prerequisites: hero_proc_server must be running.

service os start --update --reset
service os stop
service os status

Via make

# Install and start all services
make install       # Build release binaries → ~/hero/bin/
make start         # Register and start via hero_proc

# Development
make installdev    # Build debug binaries → ~/hero/bin/
make run           # Start + stream logs (Ctrl-C to stop)
make web           # Dioxus dev server with hot reload

# Management
make stop          # Stop all services
make restart       # Stop + start
make status        # Show hero_proc status
make logs          # Server logs
make logs-ui       # UI logs

Full stack (dev)

# Terminal 0: hero_proc (if not already running)
hero_proc_server

# Terminal 1: Backend servers
make run

# Terminal 2: Frontend with hot reload
make web

Platforms

Platform Command Notes
Web make web Default, Dioxus dev server
iOS make ios Requires Xcode
Android make android Requires Android SDK
Desktop make desktop Native desktop app

Key Concepts

Contexts

A context is a workspace/namespace that isolates data (e.g., herozero, geomind). Each context has its own desktop state and theme.

Themes

A theme defines visual appearance (colors, typography, spacing). Stored in the backend, referenced by context.

Islands

Islands are self-contained WASM applications loaded as web components from Hero Archipelagos. Each island registers as a custom HTML element, receives configuration via attributes, and makes API calls to the backend.

Testing

make test          # Unit tests
make test-all      # Full test suite
make e2e           # Playwright E2E tests (local)
make e2e-remote    # E2E against live VM
Document Purpose
ARCHITECTURE.md Detailed system architecture
docs/ANDROID.md Android/Volla OS setup
docs/MOBILE.md Mobile layout and sizing
docs/DIOXUS.md Dioxus configuration