diff --git a/extensions/levelcode-ai/media/chat.html b/extensions/levelcode-ai/media/chat.html index a6188eb..280e220 100644 --- a/extensions/levelcode-ai/media/chat.html +++ b/extensions/levelcode-ai/media/chat.html @@ -1259,18 +1259,17 @@
██╗ ███████╗██╗ ██╗███████╗██╗ -██║ ██╔════╝██║ ██║██╔════╝██║ -██║ █████╗ ██║ ██║█████╗ ██║ -██║ ██╔══╝ ╚██╗ ██╔╝██╔══╝ ██║ -███████╗███████╗ ╚████╔╝ ███████╗███████╗ -╚══════╝╚══════╝ ╚═══╝ ╚══════╝╚══════╝ - ██████╗ ██████╗ ██████╗ ███████╗ - ██╔════╝██╔═══██╗██╔══██╗██╔════╝ - ██║ ██║ ██║██║ ██║█████╗ - ██║ ██║ ██║██║ ██║██╔══╝ - ╚██████╗╚██████╔╝██████╔╝███████╗ - ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
██ ███████ ██ ██ ███████ ██ +██ ██ ██ ██ ██ ██ +██ ██████ ██ ██ ██████ ██ +██ ██ ██ ██ ██ ██ +███████ ███████ ███ ███████ ███████ + + ███████ ███████ ██████ ███████ + ██ ██ ██ ██ ██ ██ + ██ ██ ██ ██ ██ ██████ + ██ ██ ██ ██ ██ ██ + ███████ ███████ ██████ ███████
]*>([\s\S]*?)<\/pre>/.exec(html);
+ assert.ok(m, 'the empty-state wordmark is gone');
+ const art = m[1].replace(/^\n/, '');
+ const glyphs = new Set(art.replace(/[\n ]/g, ''));
+ assert.deepStrictEqual([...glyphs], ['█'],
+ 'the wordmark uses partial blocks: ▀ above ▄ leaves a seam through the stroke in most fonts. '
+ + 'Found: ' + [...glyphs].join(''));
+
+ // It is sized by the container (clamp(5px, 3.6cqi, 13px)) inside #empty, which is capped at 560px.
+ // Past ~44 columns it stops fitting and the pre grows a horizontal scrollbar under the logo.
+ const lines = art.split('\n');
+ const cols = Math.max(...lines.map((l) => l.length));
+ assert.ok(cols <= 44, 'the wordmark is ' + cols + ' columns; wider than ~44 overflows #empty (max 560px)');
+ assert.ok(lines.length <= 14, 'the wordmark is ' + lines.length + ' lines; it has to leave room for the prompt beneath it');
+
+ // The accessible name is the whole reason a picture made of text is not a wall of noise to a
+ // screen reader.
+ assert.match(m[0], /role="img"/, 'the wordmark must be exposed as an image, not read out block by block');
+ assert.match(m[0], /aria-label="[^"]+"/, 'the wordmark has no accessible name');
+});
+
test('CODE: prose blocks get room, and nothing else that uses moves', () => {
// docs/CHAT-TYPOGRAPHY.md D5/T3. `pre` is a GLOBAL selector in this file, and it draws four different
// things: the empty state's ASCII logo, the MCP approval card's command block, the terminal output