diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-28 23:34:20 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:15 -0300 |
| commit | faa5ee1d81e2b9c4be6925b7178db2d2dc4577f8 (patch) | |
| tree | 14799bbd5748743b985ac617ba134ad12bdc9269 /docs | |
| parent | d8d770454e77fbeeb0dd9c5e965a7eda6a5558ba (diff) | |
| download | pardes-faa5ee1d81e2b9c4be6925b7178db2d2dc4577f8.tar.gz pardes-faa5ee1d81e2b9c4be6925b7178db2d2dc4577f8.zip | |
G3: the focused cursor glides a jump on the Motion flavour's springs, and blinks
The core owns the motion, as Lift: animation.CursorGlide keeps the focused
cursor's four corners on springs (leading corners at the flavour's pace x2.4,
trailing ones x follow, so a jump smears and collapses; a long jump bows by
the flavour's arc), sampled at each frame's own time. A step of a cell or
less, insert mode, a focus change and any scroll (a file's view, a
terminal's output) land at once; a snap lands a glide under way too. The
quad is clamped to the focused pane when drawn (never its springs). Chrome
carries it on the wire (cursor_glide: bit 1 a cursor, bit 0 gliding;
cursor_alpha; cursor_quad, grid cells; cursor_idle_ms): the GUI draws the
quad as an overlay in the cursor's colour, at 85% (70% on the long
flavours) rising to solid as it lands, and hides the cells' cursors while it
does: one or the other every frame. Only the focused cursor glides.
Blink (CursorBlink, on by default in pixel shells) is the shell's: from
cursor_idle_ms and when the frame arrived, solid while typing and 500 ms
after, 530 ms halves with 80 ms eased edges, solid after 10 s idle, and
never while the window is unfocused or minimized or on a virtual clock. An
edge redraws the last frame with no core render (level B, blink_redraws);
an attached GUI blinks from the same field without a frame per edge.
Tests: snaps a cell, glides a jump with smear and bow, arrives under a pixel
by 150 ms on smooth and lands exactly, shifts with a scroll; blink holds,
eases, stops; the core glides a jump (ge) frame by frame (gliding exactly
while it moves, alpha rising, exact at rest), snaps a step (j) and a switch
to insert mid-glide; a terminal's scrolling output lands its cursor; wire
round-trip of the cursor record.
Shared files: src/animation.zig, src/pardes.zig, src/config.zig (toggle
CursorBlink), src/surface.zig, src/detached/wire.zig.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/config.md | 2 | ||||
| -rw-r--r-- | docs/effects.md | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/docs/config.md b/docs/config.md index 0332d854..8c986d81 100644 --- a/docs/config.md +++ b/docs/config.md @@ -545,6 +545,8 @@ Lift auto a shadow on a light page; on a dark one the others recede Lift off InactiveDim 30 the unfocused panes' text fades 30% toward its ground Motion smooth off, crisp, smooth (the default), bouncy or playful +CursorBlink on the cursor blinks, solid while typing and half a second + after, eased at each edge, solid after 10 idle seconds GripWidth 150 the grip's button and the scrollbar under it, percent of the theme's rail_px (12px at a 17px tagline; 50 to 300) ``` diff --git a/docs/effects.md b/docs/effects.md index 3f375b7d..08fd3d88 100644 --- a/docs/effects.md +++ b/docs/effects.md @@ -23,6 +23,7 @@ why. The verdict is the user's. | Crt (bundled post pass) | `Crt 0..3` | kept, rewritten (no barrel) | fx-compare stills, live window | kept at the user's live look | | Ripple, Glitch | — | removed | live window | dropped by the user after a live look | | G1 lift | `Lift shadow\|rim\|auto` (off), `InactiveDim <percent>` | opt-in until the focus-lift default is decided | lift-shots-2 (off, shadow, rim, auto on acme, dusk, forge); frame series + mp4 per Motion flavour | shadow on acme: keep as is. Round 1 dropped glow and surface (surface lowered the focused text's contrast) and made rim a hairline just above the focused tag (light on a dark page, shade on a light one). auto on a dark page recedes the others (InactiveDim 30) | +| G3 cursor | follows `Motion`; `CursorBlink on\|off` (on) | glide on by default through the default flavour (smooth); blink on (decision 6) | .scratch/render/cursor/cursor-flavours-grid.mp4 (and quarter speed), raw/<flavour>/<motion>/ | pending | ## Motion flavours @@ -64,9 +65,13 @@ Which principles each motion uses: spring over the move's length; anticipation (playful). A pane past its mark never takes a neighbour's click, a rising one stays in its box, and a notice past its row stays in its pane's body. -- **Cursor** (G3, next): designed around the same set: glide on the spring, - stretch along the path, an arc on long jumps, the trailing corners as the - secondary action. +- **Cursor** (G3): timing (the flavour's spring, 2.4x its pace: it follows + input), follow-through (bouncy and playful pass the target), squash and + stretch and secondary action (the trailing corners lag by the flavour's + follow, so a jump smears and collapses), arcs (a jump over 8 cells bows by + the flavour's arc), anticipation (playful's wind-up). A step of a cell or + less, or any move in insert mode, lands at once, so typing never trails; + a scroll carries the cursor with the text. Only the focused cursor moves. Notes on G1: the lift and the dim run on one focus spring per pane, at the |
