Repository navigation
Implements Synod 0.3 (themes, richer drawing).
Added
- Scene format 0.3, read by the rules of the formats guide: the top-level
styleandcamera; the kindsicon(the 16-icon set,src/render/icons.json, checked against dsl byscripts/sync-icons.ts) andcounter(rolling digits); the key propertiescurve,trail,dash,draw,halo,icon,count,roleandface; the effectsindicate,flash,circumscribe,rippleandsweep. Old 0.2 scenes load unchanged. - Style: stroke width, glow, drop shadow, vignette (drawn last, in canvas space), type roles and faces with sizes, weights and tracking, spring easing for
x,y,scale,rotationand the camera, camera keys with idle drift (hit testing inverts letterbox, camera and drift). - Sketch: every outline wobbles by a seeded value noise (FNV-1a-32 of the shape id, mulberry32, smoothstep), twice at alpha 1 and 0.6; stable in time, cached per shape.
- Trails (8 ghosts), Bezier curves, dashes, partial draw, halo, icon morph.
- Fonts: the closed set Inter, JetBrains Mono, Source Serif 4 and Shantell Sans (SIL OFL 1.1, variable woff2, sources and checksums in
fonts/README.md), the release assetsynod-player-fonts-<tag>.tar.gz,options.fontBaseandplayer.fontsReady(). - Hit testing also answers icons and counters (like a filled shape).
- Tests: hand-made scenes for every new key, kind, effect and style value, display-list and WebKit pixel goldens for them, the compiler's 0.3 scenes, and a 50-node, 200-message stress scene with sketch 1 and trails (JS frame work p99 under 4 ms).
Fixed
- Counter: a column of 100s or more rolled by the wrong amount (the whole number 199 drew the hundreds column 0.9 of the way to 2). Column
know rolls bymax(0, (|count| mod 10^k) - (10^k - 1)), as the formats guide says, so a whole number draws crisp.
Changed
- Example scenes, frame and hit goldens, and the
markers,paxosandraftpixel snapshots follow the lesson note in the top band (y40) andpaxoswriting its state to disk. - The vendored scenes follow the compiler's wider ring (layout centre (520, 315)) and 24-character state rows; the builder scene
state-rows-longis new, and the goldens and the WebKit snapshots of the scenes that changed are regenerated. - The default sans is Inter (was the system font). Every display-list golden differs only in its
font = ...line; the WebKit pixel snapshots are regenerated. - A counter column rolls only while the column below is on its last digit (an odometer), so a whole number is drawn crisp.
- The bundle budget is 96 KB minified and 32 KB gzip (was 48 KB and 16 KB): the icon set and the new drawing code.
- The player redraws the last drawn time, not the clock, when fonts finish loading.