| 26 |
26 |
|
//! An intent resolves to exactly one duration everywhere. Not one per renderer,
|
| 27 |
27 |
|
//! not one per theme.
|
| 28 |
28 |
|
//!
|
| 29 |
|
- |
//! The alternative was considered and rejected on 2026-08-21: a per-renderer
|
| 30 |
|
- |
//! table, resolving the way [`Density`](makeover_geometry::Density) resolves
|
| 31 |
|
- |
//! gaps. Distance has a renderer axis because a fingertip is coarser than a
|
| 32 |
|
- |
//! cursor and a terminal cell is coarser than a pixel — the *surface* differs.
|
| 33 |
|
- |
//! Time does not differ that way. A second is a second in a browser, in egui
|
| 34 |
|
- |
//! and in a terminal, and the reader waiting it out is the same reader. What
|
| 35 |
|
- |
//! looked like a renderer disagreement in the tree turned out to be drift: MNW
|
| 36 |
|
- |
//! debounced one typeahead at 150ms and two others at 200ms, in one repo, on
|
| 37 |
|
- |
//! one renderer, and no per-renderer table would have caught that.
|
|
29 |
+ |
//! A per-renderer table, resolving the way
|
|
30 |
+ |
//! [`Density`](makeover_geometry::Density) resolves gaps, is the wrong shape.
|
|
31 |
+ |
//! Distance has a renderer axis because a fingertip is coarser than a cursor
|
|
32 |
+ |
//! and a terminal cell is coarser than a pixel: the *surface* differs. Time
|
|
33 |
+ |
//! does not differ that way. A second is a second in a browser, in egui and in
|
|
34 |
+ |
//! a terminal, and the reader waiting it out is the same reader.
|
| 38 |
35 |
|
//!
|
| 39 |
36 |
|
//! So a divergence here is a bug report, not an axis.
|
| 40 |
37 |
|
//!
|
| 41 |
38 |
|
//! # What is deliberately not a timing intent
|
| 42 |
39 |
|
//!
|
| 43 |
|
- |
//! Three classes were measured out of scope on 2026-08-18, and leaving them
|
| 44 |
|
- |
//! out is most of what makes the four above coherent.
|
|
40 |
+ |
//! Three classes are out of scope, and leaving them out is most of what makes
|
|
41 |
+ |
//! the four above coherent.
|
| 45 |
42 |
|
//!
|
| 46 |
43 |
|
//! **A race is not an intent.** Waiting 300ms before navigating because the
|
| 47 |
44 |
|
//! write "should" have landed, or 150ms before closing a dropdown so a
|
| 103 |
100 |
|
//!
|
| 104 |
101 |
|
//! # Where the numbers came from
|
| 105 |
102 |
|
//!
|
| 106 |
|
- |
//! Every value below is a count from the tree, taken 2026-08-18 and re-checked
|
| 107 |
|
- |
//! 2026-08-21, not a preference:
|
|
103 |
+ |
//! Every value below is a count from the tree, not a preference:
|
| 108 |
104 |
|
//!
|
| 109 |
105 |
|
//! ```text
|
| 110 |
106 |
|
//! revert 1500ms MNW: 6 hand-rolled sites, plus core/clipboard.ts's own default
|
| 118 |
114 |
|
//! typeaheads sit at 200ms against everything else's 150ms. 150 wins on the
|
| 119 |
115 |
|
//! count and on the cross-renderer agreement, and the 200s conform.
|
| 120 |
116 |
|
//!
|
| 121 |
|
- |
//! [`Cadence::Activity`] is the exception and the only rung here not counted
|
| 122 |
|
- |
//! off the tree, because the mark it times does not exist yet: wiki
|
| 123 |
|
- |
//! `loading-and-progress-standard` settled on 2026-08-26 that an unmeasured
|
| 124 |
|
- |
//! wait blinks rather than spins, and nothing had drawn one. Writing it here
|
| 125 |
|
- |
//! before the three renderers reach for it is the point of the task that added
|
| 126 |
|
- |
//! it. What it is answerable to is stated on the member.
|
|
117 |
+ |
//! [`Cadence::Activity`] is the one rung not counted off the tree. Wiki
|
|
118 |
+ |
//! `loading-and-progress-standard` rules that an unmeasured wait blinks rather
|
|
119 |
+ |
//! than spins; this is the cadence it blinks at. What it is answerable to is
|
|
120 |
+ |
//! stated on the member.
|
| 127 |
121 |
|
//!
|
| 128 |
122 |
|
//! # Consumers
|
| 129 |
123 |
|
//!
|