Repository navigation
Honour q on the last chunk of a kitty transmission, bump to 2.0.5 - #164
Conversation
Continuation chunks may carry "only the m and optionally q keys", and
notcurses uses exactly that: its first chunk names no q and its last says
q=2. The quiet level was read from the first chunk alone, so XTerm.NET
answered OK to a client that had asked for silence -- and once notcurses
exited, the reply reached the shell as typed input ("Gi=13871133;OK" at
the prompt after notcurses-info).
A continuation chunk's q now updates the transmission's quiet level, and
the reply sent on completion follows it.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Perf comparison — this change, against its base3 run(s) of each side, alternating on one machine. Allocation is a count and is gated exactly. Time is a measurement, so its gate is derived from the spread this job just observed in itself rather than fixed in advance.
Each corpus is gated at assemblies measured
Perf comparison — cumulative, everything since 2.0.33 run(s) of each side, alternating on one machine. Allocation is a count and is gated exactly. Time is a measurement, so its gate is derived from the spread this job just observed in itself rather than fixed in advance.
Each corpus is gated at assemblies measured
|
Picks up the kitty quiet-level fix (tomlm/XTerm.NET#164): no stray OK reply at the shell prompt after notcurses exits. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
#176) * Draw block elements and sextants as rectangles snapped to the cell Half blocks, eighths, quadrants, shades (U+2580-259F) and sextants (U+1FB00-1FB3B) were drawn from the font. A glyph keeps the font's metrics, not the cell's, so neighbouring blocks overlapped by a fraction or left a hairline between them: seams through every picture notcurses draws out of them (notcurses-info's blitter samples), where Windows Terminal draws them solid. Fonts without sextants showed boxes. BlockGlyphs maps each to rectangles in 24ths of a cell (the unit that holds both eighths and thirds). The classic renderer gives block cells runs of their own, drawn as fills; the Skia renderer branches per cell. Every edge is snapped against the cell's own snapped edges, the same arithmetic as backgrounds, so shapes meet their neighbours on one pixel. Shades fill at 25/50/75% of the foreground. Checked with Skia renders at 7x14, 8x15 and 10x21 cells: no partially covered pixels in either renderer, and the two renderers identical. The sextant mapping was checked against all 60 UnicodeData names. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the smooth-mosaic wedges, triangles and extra eighths too notcurses-info stacks the U+1FB3C..1FB67 wedges into shapes two rows tall. Drawn from the font, the upper glyph stopped a few pixels short of its cell's bottom, so a background-coloured band ran through every shape. BlockGlyphs now also covers U+1FB3C..1FB8B: the 44 wedges as polygons (extracted mechanically from WezTerm's customglyph.rs, which defines each by its Unicode name), the U+1FB68..1FB6F triangles meeting at the centre, and the U+1FB70..1FB8B eighths Block Elements lacked. Polygon vertices are snapped with the same arithmetic as rectangle edges, so straight sides meet their neighbours and only the diagonal is antialiased. Checked with Skia renders of notcurses-info's pairs at 10x21 cells: white coverage continues across the row boundary, mirrored top and bottom, in both renderers. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Bump version to 4.0.5 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Update XTerm.NET to 2.0.5 Picks up the kitty quiet-level fix (tomlm/XTerm.NET#164): no stray OK reply at the shell prompt after notcurses exits. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Summary
qand its last chunk saysq=2. XTerm.NET read the quiet level from the first chunk only, so it sentOKto a client that had asked for no reply. Once notcurses exited, that reply reached the shell as typed input:Gi=13871133;OKat the prompt afternotcurses-info.KittyTransmission.ApplyContinuationtakesqfrom a later chunk, and the reply sent when the image completes follows it.Tests
Quiet_on_the_last_chunk_silences_the_replyreplays notcurses' chunk pattern. Without the fix it fails with exactlyESC _Gi=31;OK ESC \.A_chunked_transmission_without_quiet_still_replieschecks thatOKstill comes when no chunk setsq.🤖 Generated with Claude Code