Skip to content

feat(spectrum): ship Voyage imagery, hoist mood into frame contract, prune M4-era styles - #37

Merged
jamiesun merged 1 commit into
mainfrom
m9-voyage-imagery
Jul 22, 2026
Merged

feat(spectrum): ship Voyage imagery, hoist mood into frame contract, prune M4-era styles#37
jamiesun merged 1 commit into
mainfrom
m9-voyage-imagery

Conversation

@jamiesun

Copy link
Copy Markdown
Contributor

M9 second wave

The perception substrate moves into the framework, the M4-era style registry is pruned, and the first single-world imagery — 航线 · Voyage — ships on top of it. docs/roadmap.md M9 status updated accordingly.

航线 · Voyage (new imagery)

src/lib/spectrum/three/voyage.ts — a PBR capital ship on a fast course:

  • Hull-as-equalizer armor bays, UV-free structure-bound weathering, selective Bloom, parallax deep-space field (nebulae, dark dust, clustered stars, planet, near particles)
  • Weather transliterated for vacuum: rain → debris stream, storm → ion flashes
  • Beat-launched energy pulses travel the hull conduits stern → bow
  • Engine cluster built as a four-layer optic per the acceptance spec:
    1. faceted gunmetal nozzles — two concentric rings, backlit twelve-vane louver grille, machined hub; never enters Bloom
    2. compact cyan-white core, 31% of nozzle diameter, only the center approaches white
    3. parallel analytic jets — Gaussian radial falloff + continuous axial fade, ~3.15 diameters long
    4. restrained 1.7× deep-blue envelope carrying deterministic edge sparks (≤15% core brightness)
  • Music response: bass → jet length ±20%, energy → core brightness ±15%, beat → 100 ms pulse; all attack/release smoothed, no radius pumping
  • src/lib/spectrum/voyage.ts + voyage.test.ts: pure cruise / engine-response model (33 unit tests)
  • examples/voyage-demo: esbuild harness (npm run demo:voyage) with scene legs and freeze/bloom/at query switches for deterministic captures

Bloom off / on comparison:

Bloom off Bloom on
five parallel jets, nozzle rings and grille legible cores + jets glow; nozzle structure preserved

Perception substrate (shared, pure)

  • SpectrumFrame/ThreeFrame gain optional mood; SpectrumView owns the single MoodEngine, computed once per frame only while a moodAware style is active
  • The mood scene consumes frame.mood (neutral-state fallback); the intent echo feeds the HUD

Registry prune

  • Removed: wave, spectrogram, loopring, flux, terrain, rings, crystal
  • bars remains the plain readout and universal fallback, mood the flagship imagery; auto picks between them until affinity selection lands

App shell

  • Spectrum palette hue override — settings.spectrum_hue (CSS-hue validated in Rust) + Player UI control
  • SceneRail filter and name/time sort (project.rs exposes modified_ms)
  • VisualizerOverlay imagery-playback recording path
  • New builtin style packs: aaa-game-score, eastern-wuxia
  • examples/armor-material-lab (npm run demo:armor): hull weathering material workbench

Verification

  • npm run check — 0 errors / 0 warnings
  • npm test — 10 files, 104 tests passed
  • npm run build — OK
  • cargo fmt --check, cargo clippy, cargo test in src-tauri/ — clean

…prune M4-era styles

M9 second wave — the perception substrate moves into the framework and the
first single-world imagery ships on top of it.

Voyage imagery (航线):
- src/lib/spectrum/three/voyage.ts: PBR capital ship on a fast course —
  hull-as-equalizer armor bays, selective Bloom, parallax deep-space field
  (nebulae, dust, star clusters, planet), vacuum-transliterated weather
  (rain → debris, storm → ion flashes), energy-pulse conduit system
- Engine cluster rebuilt to a four-layer optic: faceted gunmetal nozzles
  with backlit twelve-vane louver grilles and hub, compact cyan-white
  cores (31% of nozzle diameter), parallel analytic jets (Gaussian radial
  falloff + continuous axial fade), restrained 1.7x outer envelope with
  deterministic edge sparks; bass drives jet length ±20%, energy drives
  core brightness ±15%, beats fire a 100 ms pulse — all attack/release
  smoothed, no radius pumping, nozzles kept out of Bloom
- src/lib/spectrum/voyage.ts + voyage.test.ts: pure unit-tested cruise /
  engine-response model (33 tests)
- examples/voyage-demo: esbuild harness with scene legs, freeze/bloom
  query switches for deterministic captures (demo:voyage)

Perception substrate:
- SpectrumFrame/ThreeFrame gain optional mood; SpectrumView owns the
  single MoodEngine, computed only while a moodAware style is active
- mood scene consumes frame.mood; intent echo feeds the HUD

Registry prune:
- remove wave, spectrogram, loopring, flux, terrain, rings, crystal;
  bars stays the plain readout/fallback, mood the flagship imagery,
  auto picks between them

App shell:
- spectrum palette hue override (settings + Player UI, CSS-hue validated)
- SceneRail filter + name/time sort (project.rs exposes modified_ms)
- VisualizerOverlay records imagery playback
- new builtin style packs: aaa-game-score, eastern-wuxia
- examples/armor-material-lab: hull weathering material workbench

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jamiesun
jamiesun merged commit fc460cc into main Jul 22, 2026
2 checks passed
@jamiesun
jamiesun deleted the m9-voyage-imagery branch July 22, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant