# The Bevy frontend ``` Type: knowledge ``` The graphical frontend (`src/bin/misaligned-bevy`, feature `bevy_ui`, Bevy 0.18). Like the terminal it is a **thin view** over `misaligned::sim::Sim` — no game rules live here; the binary owns wall-clock-to-tick pacing, rendering, and input mapping only (architecture guardrail, [engineering/architecture.md](../engineering/architecture.md)). As of 2026-07-07 the Bevy build is at **feature parity with the terminal** (ROADMAP item 2): every mechanic the terminal exposes is playable here with the same keys. The active visual-quality target is [bevy-visual-floor.md](bevy-visual-floor.md): make the default frame read as an intentional AI sensorium / clinical command surface rather than a debug map plus terminal dump, without adding Bevy-only facts. The proposed 2.5D/near-3D direction is scoped separately in [bevy-digital-real-canvas.md](bevy-digital-real-canvas.md): digital and real should share one canvas/framing, with digital as the AI's model/signal dialect and real as the camera/material dialect. The first pass replaces the stale humanoid process sprite with an amber cursor reticle, removes purple/teal placeholder color from B1 runtime rendering, gives unknown space deliberate sensor-dark texture, dims physical tile art into a learned-world model, overlays earned device nodes and reach/topology traces, and adds minimal sidebar/modal chrome; the fuller graphical sidebar remains in progress. ## What it renders - **Map** — textured tiles where pixel art exists ([art/pixel-pipeline.md](../art/pixel-pipeline.md)), flat clinical colors otherwise, under the same fog rule as the terminal (`Seen` / `Heard` / `Remembered` / `Blueprint` / `Unknown`). The process has no walking body: the always-visible marker is the frontend-only cursor, the camera follows it, mouse-clicks retarget it, and `[` / `]` zoom. - **People markers** — a person's first initial, rendered only while a controlled sensor covers them ([mechanics/schedules.md](../mechanics/schedules.md)), exactly like the terminal map. - **Sidebar** — the terminal sidebar's sections, in the same order: identity (day / tick, PAUSED or running + ms/tick), INSPECT (cursor coordinate, fog state, provenance-tagged facts), COMPUTE (effective, efficiency, machines/money, the stacked four-channel allocation bar with per-channel percent and effect, overhead, social pool), CORE (host, sync freshness, fallbacks), DETECTION (Assurance plus field observers, four-cell band meter with the band name printed beside it), DAY JOB (trust, attention, strikes when nonzero; the active job with ticks to deadline, its band against the average delivered rate and the projected outcome, the target with the delivered feed rate, and the attended/unattended state — attended with the rate bonus while the cursor is on the host rack, otherwise the standing policy the job runs at), the key hints, and the log — every log line prefixed with the tick it happened on. A one-line contextual nudge under the clock states what the game is waiting for (no eyes yet; job underfed) using only earned facts. - **People panel** (`t`) — the modal roster: per-person suspicion band, staged knowledge, located presence (seen / scheduled / unknown), the selected person's leverage/disposition/obligation/asset card, persona status, and the action footer with compute costs. Selection is a `>` marker; the recruit flow prompts for the reveal level. - **Overlays** — title card and the RUN ENDED card (reason, day / tick). Text is ASCII-only (meters `#...`, bar fills `# = ~ -`) because Bevy's embedded default font carries a limited glyph set; the terminal's box-drawing vocabulary does not apply here. One meaning per color still holds: amber for machine presence (title, overlays), bone for data, and no information carried by color alone. ## Controls Identical to the terminal ([interface/terminal.md](terminal.md), README controls table), plus zoom: - Move cursor `WASD` / `hjkl` / arrows, or left-click the map; pause `SPACE`/`p`; speed `+`/`-`; zoom `[` / `]`; quit `q`; save/load `Ctrl+S` / `Ctrl+L`. - Actions: `v` salvage near cursor, `c` buy rack at cursor, `o` add fallback at cursor, `1`–`4` raise a compute channel (`shift+1`–`4` lowers it), `x` cycles the active job's target. `r` opens the reach panel; there `t` taps, `e` splices eyes, `x` takes, `n` scans, and `c` compromises the switch. - People panel: `t` opens/closes; `w`/`s`, `j`/`k` (or arrows) select; `o` reviews the selected person's oldest unprocessed recording, `a` toggles their standing watch, `m` message, `f` favor, `b` bribe, `d` deceive, `r` recruit (then `u`/`c`/`k` for the reveal, `esc` cancels), `g` persona; `1`/`2`/`3`/`4` asset tasks; `esc` closes. ## Verification `cargo build --features bevy_ui --bin misaligned-bevy` is part of `tools/check.sh`; the launch check in [process/workflows.md](../process/workflows.md) is the observed-run gate for Bevy-visible changes.