Skip to content

feat(cityflow): add retained Cityflow adapter - #90

Draft
alowpoly wants to merge 1 commit into
mainfrom
feat/cityflow
Draft

feat(cityflow): add retained Cityflow adapter#90
alowpoly wants to merge 1 commit into
mainfrom
feat/cityflow

Conversation

@alowpoly

Copy link
Copy Markdown
Contributor

Summary

  • add a source-backed XScreenSaver Cityflow adapter using one retained PolyCSS Morph graph
  • prepare the seeded source simulation into canonical transform and color-index tables
  • apply sparse prepared state with the merged DOMFORMAT polycss-playback@0 timer/rAF elapsed-catch-up precedent
  • keep the runtime at 200 retained box roots / 600 solid quad leaves with no Canvas, SVG scene, runtime rasterization, topology rebuilding, or DOM growth
  • add deterministic preparation, pinned native state, browser smoke, frame-sequence visual oracle, and source-only contracts

Why

The initial 800-root CSS-keyframe implementation was GPU/compositor bound and caused per-leaf paint pressure. The source supports an authored count control and scales boxes as 1.8 / sqrt(count), so the product uses 200 boxes to preserve field coverage while reaching the source's 20 ms cadence. Per-box keyframes were replaced by prepared sparse playback rather than changing the renderer.

Validation

  • pnpm verify:source-only
  • pnpm test:cityflow — 8/8
  • pnpm prepare:cityflow:check — deterministic 2,601,211-byte closure
  • pnpm oracle:cityflow:native — ticks 0, 73, and 251 exact within the locked float tolerance
  • pnpm build:cityflow
  • pnpm test:cityflow:browser — desktop and mobile, stable 200/600 DOM, zero Canvas/SVG/atlas work
  • pnpm oracle:cityflow:visual — calibrated 48-frame native/browser comparison passes; native A/A and browser A/A are byte-exact
  • FrameSleuth, untouched 1280×720 route: DrawFrame p50 113.421 → 19.728 ms, p95 210.782 → 34.213 ms, worst gap 232.409 → 43.047 ms, pipeline drops 864 → 175

Known limits

  • The extended 252-frame diagnostic passes 250/252 frames. Frames 155–156 exceed the mean-delta threshold; worst mean delta is 1.111 against 1.0, while changed-pixel ratio remains within threshold. This draft does not claim full-cycle video parity.
  • Netlify deployment wiring and a landing-page entry are intentionally not included in this draft.

@netlify

netlify Bot commented Aug 18, 2026

Copy link
Copy Markdown

Deploy Preview for cssgraphics ready!

Name Link
🔨 Latest commit 05e1e62
🔍 Latest deploy log https://app.netlify.com/projects/cssgraphics/deploys/6a83ba4963f1b70007526525
😎 Deploy Preview https://deploy-preview-90--cssgraphics.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

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