Skip to main content

max / quasi

Say why a terminal and an egui toast do not fade 43bdbff7 point 3. quasi-webview draws Motion::Fade as of 0.81.0 and these two remove at Dismiss, which is a decision rather than the unfinished half of one. Written into both headers so the next reader finds the answer instead of filing it again.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session
https://claude.ai/code/session_0136sbU8F6i9WrcvA3wn4Lgk
Author: Max Johnson <me@maxj.phd> · 2026-08-29 18:49 UTC
Signed with PGP, not checked
Commit: 408e5f54990384989d0980b90bd7fa7047bf01a9
Parent: 9d9b1ae
2 files changed, +30 insertions, -0 deletions
@@ -13,6 +13,22 @@
13 13 //!
14 14 //! The spellings match the other two renderers' on purpose. A screen described
15 15 //! once and drawn three times should not read as three different facts.
16 + //!
17 + //! # A notice is removed at Dismiss here, with no leaving
18 + //!
19 + //! `43bdbff7`, and it is a decision rather than the unfinished half of one.
20 + //! `makeover-timing` says `Intent::Dismiss` is how long a notice lives *before
21 + //! it starts to leave* and that the leaving is `Motion::Fade`, and
22 + //! quasi-webview draws that fade as of 0.81.0. This renderer does not, because
23 + //! there is no transition to run: egui could fade a widget, and the toast is not
24 + //! a widget this renderer owns a frame of. It is drawn and gone between two
25 + //! paints, and an alpha ramp would be this renderer inventing a transition the
26 + //! description did not ask any host for.
27 + //!
28 + //! Adding the duration anyway would keep the message on screen 300ms longer
29 + //! and change nothing about how it goes, which is a longer message rather than
30 + //! a softer one. Written down so the next reader finds the answer instead of
31 + //! filing it again.
16 32
17 33 use std::time::{Duration, SystemTime};
18 34
@@ -9,6 +9,20 @@
9 9 //! drawn twice should not read as two different facts, and nothing about a
10 10 //! terminal makes `1:04:05` the wrong width -- the entitlement to differ is
11 11 //! kept for the renderer that needs it rather than spent because it exists.
12 + //!
13 + //! # A notice is removed at Dismiss here, with no leaving
14 + //!
15 + //! `43bdbff7`, and it is a decision rather than the unfinished half of one.
16 + //! `makeover-timing` says `Intent::Dismiss` is how long a notice lives *before
17 + //! it starts to leave* and that the leaving is `Motion::Fade`, and
18 + //! quasi-webview draws that fade as of 0.81.0. This renderer does not, because
19 + //! there is no transition to run: a terminal repaints, and a character cell is
20 + //! either painted or it is not -- there is no opacity to move through.
21 + //!
22 + //! Adding the duration anyway would keep the message on screen 300ms longer
23 + //! and change nothing about how it goes, which is a longer message rather than
24 + //! a softer one. Written down so the next reader finds the answer instead of
25 + //! filing it again.
12 26
13 27 use std::time::{Duration, SystemTime};
14 28