summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-21 23:43:31 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commite714bbfa8b7cbf9970053cfbabbb9b1f02a2290e (patch)
treed1112abb074f739cb2d70f1117b91f064d9875b7 /docs
parent8fc6bb0633d7992dad6b28a2d36730689226e096 (diff)
downloadpardes-e714bbfa8b7cbf9970053cfbabbb9b1f02a2290e.tar.gz
pardes-e714bbfa8b7cbf9970053cfbabbb9b1f02a2290e.zip
Draw a frame only when there is one worth drawing
A 9P round trip on a local Unix socket cost 9.7 ms against the SDL shell and 0.758 ms against the terminal one. The server was not slow and the wake was not broken: instrumenting the path showed every request waking the loop early (wakes=210, woke_early=212, timed_out=38 over 250 ticks) and being answered on that same pass. The cost was that `pump` answers 9P at one point in a loop that then renders and presents unconditionally, so a client's next request landed while the main thread was blocked on the display, and each round trip therefore cost a whole frame. The frame rate was governing something that has nothing to do with drawing. `Pardes.needs_frame` starts true, is set by every event except a tick with nothing animating and a filesystem request that only reads, and is cleared once a frame is presented. `pump` returns before render and present when it is false and nothing is animating. An idle editor answering reads now draws nothing at all. 9P read_fid, one RPC: gui 9.7 ms -> 0.056 ms (173x) tty 0.758 ms -> 0.062 ms (12x) Verified the shells still paint rather than going quiet: the rendered screen carries the opened file, a write through 9P redraws within the frame, and `fs-discovery-test` passes over the real wire. Suite unchanged at 778/783 with the two pre-existing crashes. Also from the adversarial review of the previous commits: `pardes --tty FILE` silently discarded the file, and `--tty MISSING` silently discarded the error pane. main.zig named the boot layout before the positional was resolved, and naming one short-circuits `Boot.of`. The choice now happens after the argument is known, and only when there is no file and no missing word. macos.zig names the same layout, so the app no longer boots a different one from the terminal and SDL shells. `pre_close_last_pane_tail` was transcribed from the NEW default rather than the old one, so the upgrade path it was added for did not exist: a workspace dumped before the tagline reorder came back with the old default welded on as a custom tail. It is now the string it claims to be. A pane two rows tall lost its message and, worse, its prompt and the cursor with it. The notice cap keeps the LAST notices now, because the prompt is last and a prompt you cannot see is one you type into blind. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Diffstat (limited to 'docs')
-rw-r--r--docs/config.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/docs/config.md b/docs/config.md
index e2b95e21..8eff79a8 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -37,7 +37,7 @@ hosted shell, `window_opacity` the SDL GUI only, and `tagline_font_size`
everything but the TTY and the board. So
the TTY reports Font, TaglineSize and the scene shaders as unsupported; the
browser reports Font, panel transitions and the scene shaders as unsupported,
-and its TaglineSize row reads `82% (build-time only)` — tagline font size is
+and its TaglineSize row reads `82 (build-time only)` — tagline font size is
its own capability precisely because GUI font SELECTION is native-only while
the browser still applies the compiled percentage to its DOM glyphs.
The startup path is printed whether or not a file exists — that is usually when
@@ -203,7 +203,7 @@ does not make those areas more opaque. Regular text, syntax colors, tagline
text, terminal glyphs, and the cursor keep their normal opacity. This does
not blend foreground colors into their cell backgrounds. The TTY
and other non-SDL hosts do not emulate this effect; their `Config` report says
-`WindowOpacity: unsupported`.
+`WindowOpacity unsupported`.
On native Wayland, Pardes uses an alpha-capable transparent surface. It does
not use whole-window opacity protocols such as `wp_alpha_modifier_v1`, because