Repository navigation
Commit 160e354
authored
* 💄 Say what a row's characters are, and where a drawer stops (#881)
XMD source and JSON keep their own colours wherever this screen shows them
verbatim, panes and drawers have surfaces of their own, and a drawer says where
the reading behind it stops.
A row whose characters mean different things now carries immutable token runs:
plain view data, issued by the composition module, concatenating to exactly the
text the row draws. The ops builder emits one text operation per run inside the
one element the row was measured as, so a row reading as several things is still
one node, one bound and one pointer target.
A private `presentation-text.ts` says what the characters of the two readings
this screen shows verbatim are — executable Markdown source and a serialized
JSON value — one line at a time, classifying nothing it was not handed. It
validates nothing, evaluates nothing and rewrites nothing, and JSON is
classified from a value this product already parsed rather than from a guess
about arbitrary text.
Focus no longer repaints a row. It adds weight, and the cue in front of the row
is the one run the focus colour belongs to, so the row a keystroke reaches stays
readable as the thing it is while selection keeps its own surface.
The application paints its own uncovered area, a question or permission drawer is
named in the waiting accent, a field's name and the value in it are told apart,
and the contextual drawer is bounded by a rule along the top of its rectangle and
inset one cell on each side. Both belong to the measured rectangle: the content
window is measured at what they leave, which costs that window one row and two
columns at every profile and is why UI16 and UI17 now reach `[submit]` and the
validation row through one `[v later]`.
* 🐛 Draw a row as its own stretches only where the frame holds it whole
The engine wraps each text operation on its own, and a row is one cell tall:
several stretches whose total is wider than the element each show their own
first line and leave the cells their remainder went to blank. A 400-column
generated tag in a 118-column drawer came out with its quoted values missing —
found by capturing the gallery, which the focused tests could not reach because
every example in them fits.
A row carries its stretches only when the element it was measured in holds them
whole, read off the constraint the element was opened with. A row the engine
must wrap is drawn as the one thing it is, which is the reading this screen has
always shown. The regression commits a tag far wider than any supported drawer
and holds every written cell to being the next character of the source.
* 🐛 Keep the roles of the characters a row can show (#881 R1–R3)
Planner feedback on f0b8eb1: three frozen requirements were unmet.
**R1.** An overflowing row went through a single-colour fallback, so the Plan
preview read as ordinary source and, at 72×20, a populated field painted its
visible value as though it were the field's name. The fallback existed because
the engine wraps each text operation on its own. The stretches are now cut at
the room the element has instead: nothing wraps, every character the row can
show keeps the role it has and the order it was in, and the cue in front of a
focused row is still the one cyan thing. A row whose width the flow decides —
only the pass that is asking what the widths are draws one — is unchanged.
The overflow regression now asserts the delimiter, tag, attribute, quoted
value, reference and prose roles on the overflowing row itself, that no row is
one colour throughout, and that the narrow populated form keeps its field's
name and its value apart. The gallery audit no longer accepts a tag drawn as
one stretch.
**R2.** The new assertions read expected RGB from the production palette, which
would have stayed green through a palette drift. They now read a fixture
transcribed from the corrected Terminal Interface archive — its `S`, `C` and
`Y` constants, with the archive hash and the sources they came from — so the
two sides of every comparison are independent. Changing one palette entry by a
single bit now fails three rows.
**R3.** The frozen resize endpoints are taken with the populated project
question open, so the refusal and the recovery prove the editable question and
its values survive, rather than substituting the permission drawer.
1 parent 4c0414b commit 160e354
13 files changed
Lines changed: 1761 additions & 77 deletions
File tree
- packages/cli
- src/repl
- components
- tests
- fixtures/repl
- specs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5842 | 5842 | | |
5843 | 5843 | | |
5844 | 5844 | | |
| 5845 | + | |
| 5846 | + | |
| 5847 | + | |
| 5848 | + | |
| 5849 | + | |
| 5850 | + | |
| 5851 | + | |
| 5852 | + | |
| 5853 | + | |
| 5854 | + | |
| 5855 | + | |
| 5856 | + | |
| 5857 | + | |
| 5858 | + | |
| 5859 | + | |
| 5860 | + | |
| 5861 | + | |
| 5862 | + | |
| 5863 | + | |
5845 | 5864 | | |
5846 | 5865 | | |
5847 | 5866 | | |
5848 | | - | |
5849 | | - | |
5850 | | - | |
| 5867 | + | |
| 5868 | + | |
| 5869 | + | |
| 5870 | + | |
5851 | 5871 | | |
5852 | 5872 | | |
5853 | 5873 | | |
5854 | 5874 | | |
5855 | 5875 | | |
5856 | 5876 | | |
5857 | | - | |
| 5877 | + | |
| 5878 | + | |
| 5879 | + | |
| 5880 | + | |
| 5881 | + | |
5858 | 5882 | | |
5859 | 5883 | | |
5860 | 5884 | | |
| |||
0 commit comments