diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/config.md | 35 | ||||
| -rw-r--r-- | docs/macos.md | 12 | ||||
| -rw-r--r-- | docs/web.md | 6 |
3 files changed, 42 insertions, 11 deletions
diff --git a/docs/config.md b/docs/config.md index 4f04d032..11346f4e 100644 --- a/docs/config.md +++ b/docs/config.md @@ -180,19 +180,46 @@ PanelZoom PanelDissolve PanelAscii PanelVertical +PanelEdges +PanelFall +PanelWave +PanelCurtain +PanelScramble +PanelType ``` All panel transitions start off. Slide uses cubic ease-out and zoom uses an overshooting ease-out-back. Dissolve and ASCII compare the last successfully presented grid with the new one. Dissolve switches visually changed cells at -stable noise thresholds. ASCII walks every changed single-byte printable glyph -from its old `u8` value to its new one. Nearby values increment or decrement -once per frame; longer distances use ease-out character skips, moving quickly -at first and settling exactly on the destination. Glyph-stable style changes +stable noise thresholds. +ASCII walks every changed single-byte printable glyph +from its old `u8` value to its new one, spending that byte distance as the +frames of the walk. The walk is eased in and out: a glyph creeps at both ends +and crosses the middle of its distance in a few large skips, inside the same +number of frames a constant one-value-per-frame walk would have taken. +Glyph-stable style changes and non-ASCII graphemes become canonical immediately. A walk is capped at twelve movement frames, and each pane lasts only as long as its longest walk. The core computes and composes that semantic diff once for every backend; pixel attachments, which have no character value, pass through unchanged. + +Six further transitions are character *motion* over the same frozen/new grid +pair, and are composed in the core the same way: + +- `PanelEdges` — whole rows slide in from alternating screen edges. +- `PanelFall` — columns rain down into place, each with its own head start. +- `PanelWave` — a vertical ripple travels across the pane and decays. +- `PanelCurtain` — a curtain of glyphs marches column by column, left to right. +- `PanelScramble` — every cell churns through printable ASCII and locks onto + its final glyph at its own stable noise threshold. +- `PanelType` — reading-order reveal with a caret sitting on the write head. + +Unlike dissolve and ASCII these carry *every* glyph in the pane, changed or +not: text flying in from a screen edge has to bring its unchanged glyphs with +it. A cell whose glyph has not arrived shows the frozen old cell rather than a +blank or a blend, so every intermediate frame is made of real characters. No +cell is a valid input target until its own glyph has settled. + Vertical is a pane-lifecycle effect: a newly added pane rises from below inside its own fixed box, and a deleted pane's frozen content drops back down; surviving panes are never animated. The TTY diff --git a/docs/macos.md b/docs/macos.md index be110532..940d5a58 100644 --- a/docs/macos.md +++ b/docs/macos.md @@ -657,16 +657,18 @@ against the Zig extern struct on Linux. The exported list is already stable paint order—moving panes by slot, then opening panes by slot—so Swift only consumes it. -CoreText renders the complete frame supplied by the core. PanelAscii bytes are -already interpolated there, identically to the TTY and SDL paths. When tracks +CoreText renders the complete frame supplied by the core. Character effects — +PanelAscii's byte walks and the glyph motion of PanelEdges, PanelFall, +PanelWave, PanelCurtain, PanelScramble and PanelType — are already composed +there, identically to the TTY and SDL paths. When tracks exist, the same retained bitmap used by scene effects is fed through two kernels in `shaders/crt.ci.metal`: `pardesPanelClear` removes every final target first, then `pardesPanel` samples each target into its eased presented box. Slide uses ease-out cubic, zoom uses ease-out-back, dissolve uses stable pane/cell noise, -while ASCII only clips the already-composed core cells; pixel attachments have -no ASCII value and pass through unchanged. Because the input is the finished -bitmap rather than a glyph-only +while `pardesComposedInCore` effects only clip the already-composed core cells; +pixel attachments have no character value and pass through unchanged. +Because the input is the finished bitmap rather than a glyph-only batch, backgrounds, glyphs, taglines, rules, the caret, PDF pages, and image panes move and dissolve together. Scene CRT/ripple/glitch runs once after the panel composition. diff --git a/docs/web.md b/docs/web.md index 578654d3..793c79bc 100644 --- a/docs/web.md +++ b/docs/web.md @@ -27,8 +27,10 @@ core ticks, so 120/144 Hz displays do not accelerate frame-count transitions and a returning background tab has bounded catch-up work. The `web` platform is deliberately not one of the shader-capable native GUI -shells. It exposes no `PanelSlide`/`PanelZoom`/`PanelDissolve`/`PanelAscii`/ -`PanelVertical` or `Crt`/`Ripple`/`Glitch` builtins: applying those faithfully +shells. It exposes no `Panel*` transition builtins (`PanelSlide`, `PanelZoom`, +`PanelDissolve`, `PanelAscii`, `PanelVertical`, `PanelEdges`, `PanelFall`, +`PanelWave`, `PanelCurtain`, `PanelScramble`, `PanelType`) and no +`Crt`/`Ripple`/`Glitch`: applying those faithfully would require a second canvas renderer and give up the DOM renderer's selectable/accessibility contract. Theme fades and the delayed, side-effect-free Look hover remain grid animations and continue to use the |
