summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/config.md35
-rw-r--r--docs/macos.md12
-rw-r--r--docs/web.md6
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