v0.27.0
feder-cr/AIHawkv0.27.0Sep 9, 2026by github-actions[bot]
AI Summary
This release focuses on accessibility compliance with WCAG 2.2, adjusting color contrast ratios and minimum touch target sizes. It also refines layout logic to adapt dynamically to the actual number of running screens and centers images correctly within their containers.
Key Highlights
- Adjusted color contrast ratios for text and borders to meet WCAG 2.2 accessibility standards.
- Increased minimum touch target sizes for buttons, tabs, and icons to comply with 24px requirements.
- Fixed layout spacing issues in the conversation header and improved the logic for screen rendering.
- Implemented dynamic layout and pacing that adapts to the actual number of screens currently running.
New Features
- Dynamic layout and pacing that adjusts to actual screen counts.
- Centered image rendering within screens to handle varying window shapes.
- Improved empty state messaging for the stage.
- Redundant text removal in Live/Frozen tabs.
Full Release Notes
An expert read of the interface, and the seven things it found. Four of them are arithmetic with a threshold, so they are gates now rather than opinions. Contrast. `--fg-4` is annotated `decorative only` in the palette that declares it, and eleven rules used it as a text colour: the count beside a conversation, the address printed under a link, the timing on a step, a list marker, the dim halves of the URL, the placeholder inside a preview. Measured on the running page they read between 2.2 and 2.7 to one where AA asks 4.5. The worst was the address, which exists to be read - it is printed beside a link precisely so an injected one is legible, and it was the hardest text in the product to read. Every word moves to `--fg-3` at 4.8, and the two borders that say which screen you are watching move to `--fg-2`, because a graphic that carries meaning wants 3:1 and 2.4 was making you ask the question twice. Checking the palette against itself turned up three of the four inks annotated with a ratio they no longer had, so the numbers in the comments are the measured ones now. Target size. WCAG 2.2 puts the floor at 24px. The Live/Frozen tabs were 21, the Clear button 23, the layout icons 24 by 30 only after this pass, and the cross that deletes a conversation was 18 - close enough to look deliberate, short enough to fail, and the last of them is where a near miss costs the most. The top edge. The conversation header was 50px and the browser chrome beside it 38, so the product broke along its main seam by twelve pixels. One token, both of them, and the session column too. The stage. A layout is a ceiling on how many screens you watch at once, not a promise that there are that many: two running browsers in a four-up layout were laid on a 2x2 whose second row was empty, so each drew at half the height for nothing. The template follows the screens that exist, three of them included. The pace follows them too - it was reading the button, so two browsers were rationed as though they were four - and it is a function of that number now rather than a table of three entries, which is also how three screens got a rate at all. And a picture is centred in its screen. Every browser here has a window of a different shape because the fingerprint gives it one, so on a 2x2 the pictures genuinely come out different heights: three cells drew 304px of image and one drew 237px. Anchored to the top that one read as a smaller screen with a hole under it, 29% of the cell empty against 8% for its neighbours. The same leftover split above and below reads as a frame. Two smaller things. The word beside the Live/Frozen tabs said `live` while Live was selected - one fact printed twice, the second time where the eye goes for news - so it now says nothing unless it has something to add. And the empty stage said nothing was running; there is no button that opens a browser, on purpose, so it is the one place that has to say they are opened by asking. This also carries the three small things in the frame from 0.26.2, which was never published.