diff --git a/DESIGN.md b/DESIGN.md index 41dc1da..5322c12 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -1839,3 +1839,18 @@ knows."* wiki/interface/narration.md. Seed surfaces (nudge chain, event anchors, watched/last-noticed, audit/pilot clocks) are acknowledged as incomplete fulfillment, not completion. +- **2026-07-08 — Computer visual language: territory at a glance.** Every + computer class (rack, desktop, laptop, phone, camera) shares one signal + kit; the chassis differs, the language never does. Knowing which machine + is yours, which is the core, and whether it is working is ground truth + the player reads off the world, not a panel. Amber emissive strictly + means *my footprint* — the core is the most orange thing in the world + (full-height spine beacon, unique geometry); foreign machines' live + activity renders in cold signal only, zero warmth. Machine presence is + LED-owned: no warm scene light anywhere (the tester's amber fill light + was removed for washing dead chassis warm). Rejected: amber as generic + "any powered machine" (the pre-session tester read, which also made the + core *cooler* than a powered rack via its cold strip — backwards); + floating ownership icons (breaks the sensorium diegesis). The claim-mark + treatment (ladder / ring / wash) is [OPEN] — all three render in the + asset tester. Spec: wiki/interface/computer-visual-language.md (DRAFT). diff --git a/src/bin/assets/mod.rs b/src/bin/assets/mod.rs index bc637a1..997394b 100644 --- a/src/bin/assets/mod.rs +++ b/src/bin/assets/mod.rs @@ -4,7 +4,8 @@ //! cargo run --features bevy_ui --bin misaligned-assets //! ``` //! -//! Controls: drag orbit, scroll zoom, 1/2/3 rack state, Esc quit. +//! Controls: drag orbit, scroll zoom, 1-5 rack state, Q/W/E claim style, +//! L lineup view (all five states side by side), Esc quit. mod palette; mod rack; @@ -14,13 +15,23 @@ use bevy::prelude::*; use bevy::render::view::screenshot::{Screenshot, save_to_disk}; use bevy::window::{CursorGrabMode, CursorOptions, WindowResolution}; -use palette::{AMBER, GUNMETAL, NEAR_BLACK, PORCELAIN}; -use rack::{RackRoot, RackState, spawn_server_rack}; +use palette::{GUNMETAL, NEAR_BLACK, PORCELAIN}; +use rack::{Blink, ClaimStyle, RackRoot, RackState, spawn_server_rack}; -/// Dev screenshot harness (`MISALIGNED_SHOT=rack|dead|powered|core`, -/// path via `MISALIGNED_SHOT_PATH`): apply rack state, settle, save one -/// PNG, exit. Not a player surface — agents capture review shots without -/// a human at the keyboard. +/// Single asset on the pedestal, or all five states side by side. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Resource)] +enum ViewMode { + #[default] + Single, + Lineup, +} + +/// Dev screenshot harness (`MISALIGNED_SHOT=`, path via +/// `MISALIGNED_SHOT_PATH`): apply the staged scene, settle, save one +/// PNG, exit. Kinds: `dead|foreign|idle|busy|core` optionally suffixed +/// `_ladder|_ring|_wash`, or `lineup[_