3.8 KiB
Eve Renderer Parity
Parity is currently uneven by design. The shared surface contract is forming, but the browser reference is the first renderer that can be used as a practical comparison oracle.
See runtime-app-parity-roadmap.md for the generic Eve app plan across web, Flutter, Fensalir Direct2D, iOS/UIKit, and Android/Kotlin. Repixelizer is the first style-parity target.
Pixel parity is not byte-identical screenshot parity. Text rasterization, antialiasing, GPU backends, and device scale will differ. The target is recognizable CultUI fidelity: the same partitions, fonts, colors, panel treatments, spacing, image sampling intent, and control anatomy lower cleanly enough that Repixelizer remains itself across runtimes.
The shared fixture/report path lives in parity-testing-harness.md. That harness is the current evidence surface for semantic parity and runtime capture gaps.
Current State
| Renderer | Status | Proof | Gap |
|---|---|---|---|
| Web reference | Active reference/debug renderer | web/ renders live VoidBot and fixture surfaces through the provider picker; compiles indentation CultUI; lowers partitions, field rows, and slider anatomy; Chrome headless capture emits phone/tablet/desktop PNGs |
Needs command round-trip tests |
| Windows / Flutter | Active shared graphical smoke target | flutter/eve_parity loads exported gamecult.eve.surface.v1 fixture JSON and emits phone/tablet/desktop golden PNGs through capture-flutter-parity.ps1 |
Needs native window capture and tighter text/style normalization |
| Linux / Flutter | Active shared graphical smoke target | Nightwing runs the Flutter parity goldens over SSH and returns phone/tablet/desktop PNGs | Needs native window capture and runner health checks |
| iOS / UIKit | Active native screenshot target | SSH capture stages selected fixture JSON, EveCanvas renders it, and emits a PNG from /var/mobile/Library/EveCanvas/latest-screenshot.png |
Needs real scene composition for vn.stage, Repixelizer token fidelity, and responsive/simulator capture |
| Android / Kotlin | Active device screenshot target | APK builds with selected fixture assets; Periwinkle captures phone/tablet/desktop plus native portrait/landscape PNGs through adb | Needs text scale/font normalization, image lowering, and command controls |
| Fensalir Direct2D | Specialized native/game-runtime landing zone | Existing AquariumUiDocument and DirectWriteOverlay path |
Needs adapter from Eve surface document to AquariumUiDocument, DirectWrite/Direct2D token lowering, and a clear reason to stay separate from Flutter for desktop UI |
Spawned Surfaces
The browser reference runner now exposes local advertisements through the provider picker:
VoidBot Live: connects to Mimir's/eve/deckbroker and opensvoidbot.swarm.Repixelizer: loadsweb/fixtures/repixelizer.provider-advertisement.jsonandweb/fixtures/repixelizer.eve-surface.json.Fensalir Direct2D: loadsweb/fixtures/fensalir-client-surface.json, a recorded surface describing the Direct2D client lowering path.Sai VN Surface: loadsweb/fixtures/sai-vn-surface.json.Huginn .cc: compilesweb/fixtures/huginn-cc-surface.eve.Reactive DSL: compilesweb/fixtures/reactive-composition.eve.CultUI Inspector: compilesweb/fixtures/cultui-slider-inspector.eveand proves partition/field-row/slider-anatomy lowering in the web reference.
The remaining temporary part is the local provider list itself. The runtime app
target is the same picker fed by live gamecult.eve.provider_advertisement.v1
documents through CultMesh/Odin.
Start it with:
powershell -ExecutionPolicy Bypass -File .\scripts\start-browser-reference.ps1
Then open:
http://127.0.0.1:8891/