Accessibility Conformance Report: Hushbird Halo
VPAT 2.5 Rev, Section 508 edition. Report date 30 September 2026.
Hushbird Halo is itself assistive technology: it works on top of other applications, through the same macOS Accessibility API that VoiceOver uses. That makes one criterion matter more than any other here, Section 508's 502.2.2, which asks that software not disrupt the accessibility features of the platform. It has its own table below, and it says plainly which of those features Halo has been tested alongside and which it has not.
Criteria were tested rather than inferred from the source. Screen reader behavior was confirmed by listening with VoiceOver, keyboard operation by crossing every surface one key at a time with the focus recorded after each key, and color contrast by measurement, using a script that reads the colors out of Halo's own source so the figures cannot drift from what the software draws.
That testing found real defects, and they were fixed rather than documented around: 26 of the 194 color pairs first measured fell below WCAG AA, among them the destructive "Remove Hushbird Halo" row at 3.57:1 and the keyboard instructions under every Settings pane at 2.82:1. All 26 are fixed. The re-run on 30 September measured 224 pairs, with none failing.
Nothing is marked Supports on the strength of reading the code. Where the source appears to meet a criterion but no test has confirmed it yet, the criterion is marked Not Evaluated and the remark says what the source does and what remains to be checked. Of the 50 criteria in WCAG 2.1 Levels A and AA, 21 are marked Supports, 6 Partially Supports, 8 Not Evaluated and 15 Not Applicable. None is marked Does Not Support.
Product information
The product is Hushbird Halo. The vendor is PSYT LLC. An institution registers, contracts and pays the company, not the product, so anyone holding a PSYT LLC record in a procurement system is looking at the supplier of this software. Hushbird Halo is a separate product from Hushbird, the dictation and reading application, which has its own report.
| Product | Hushbird Halo |
| Version | 0.1.0 (build 1), as declared in the application bundle (CFBundleShortVersionString and CFBundleVersion). The builds tested on 28 and 30 September 2026 all carry this number. |
| Description | A menu-bar utility for macOS 14 or later. Press ⌥ Space in any application: the front window dims and its important actions are numbered, each operable with a single key. Ads, upsells and surveys are veiled, never removed, and one key shows them again. Halo reads other applications through the macOS Accessibility API and suggests what to highlight with its own small model, which runs on the Mac. The person chooses; nothing is hidden for good. |
| Vendor, legal entity | PSYT LLC, Boston, Massachusetts |
| Relationship | Hushbird Halo is a product of PSYT LLC. Purchase orders, contracts and vendor registrations are in the name of PSYT LLC. |
| Accessibility contact | access@hushbird.app |
| Report date | 30 September 2026 |
| Report author | Steven Peguero, Founder, PSYT LLC |
| Test platform | macOS 26.6.2 (build 25G83), Mac mini (2024) with Apple M4 Pro. Halo is built for Apple silicon and Intel; it has been tested on Apple silicon only. |
| Evaluation methods |
VoiceOver, by listening, 28 September 2026, by Steven Peguero, following a written script of 24 steps in five parts (coexistence, the overlay and sidebar, find and scroll, Settings, the menu bar and first run) on a notarized build with Accessibility access granted. No step failed. Keyboard, without a mouse, 28 September 2026, run by Claude, Anthropic's coding agent, working in Halo's repository for PSYT LLC, through Halo's own test switches: every surface opened and one key pressed at a time, 0.9 seconds apart, through Halo's real key handling, with the focus printed after each key. Run twice, once as a Mac with Accessibility access sees Halo and once as a Mac without it. The logs are kept. Contrast, by measurement, 28 and 30 September 2026, with scripts/contrast-audit.py, which reads colors from the source and composites translucent ones onto the surface behind them.Daily use by a person, 30 September 2026: Steven Peguero used the current build with the keyboard, the trackpad and VoiceOver and reported no failures. This is an account of use, not a scripted pass, and it is cited only where it adds to the scripted ones. Neither Xcode's Accessibility Inspector nor an automated accessibility audit has been run. |
Applicable standards
- Revised Section 508, 36 CFR Part 1194, Appendix A, C: WCAG 2.1 Level A and AA as applied to software by E207.2, and Chapter 5 criteria 502 to 504
- WCAG 2.1 Level A and AA
- Section 508 Chapter 3 (functional performance criteria) and Chapter 6 (support documentation and services) are not tabulated in this report
- EN 301 549 is not claimed in this report and needs separate assessment
Section 508 exempts software that is assistive technology and supports the platform's accessibility services from E207.2 and Chapter 5. Halo does not rely on that exception: its settings, dialogs and instructions are ordinary software to the person using them, and they are assessed here as such.
Conformance terms used
| Term | Meaning |
|---|---|
| Supports | Meets the criterion without exception, confirmed by a test named in the remark |
| Partially Supports | Meets it in the parts tested, with a stated exception or a stated part not yet tested |
| Does Not Support | Does not meet it |
| Not Applicable | The criterion does not apply to this product |
| Not Evaluated | No test has confirmed it yet. The VPAT template reserves this term for Level AAA; it is used here for Level A and AA criteria rather than claim Supports without a test, and each will move to another term once tested |
Table 1: WCAG 2.1 Level A
| Criterion | Level | Conformance | Remarks |
|---|---|---|---|
| 1.1.1 Non-text Content | A | Supports | Verified by VoiceOver. The menu-bar icon is announced as "Hushbird Halo", not as an image name (step E1), and every sidebar row and Settings row is read by name (B1, D2). The pictures on the Instructions cards, added after the scripted pass, carry spoken descriptions and their decorative icons are hidden from assistive technology; they have not yet been covered by a scripted step. |
| 1.2.1 Audio-only and Video-only | A | Not Applicable | No prerecorded audio or video. Speech Halo produces, such as Read aloud on the Instructions cards, is generated from text shown on screen. |
| 1.2.2 Captions | A | Not Applicable | No prerecorded audio content. |
| 1.2.3 Audio Description | A | Not Applicable | No prerecorded video content. |
| 1.3.1 Info and Relationships | A | Supports | Verified by VoiceOver. The sidebar's group headings are announced as headings as the cursor passes them (B1), and each Settings row is read with its value, on or off or the option chosen (D2). |
| 1.3.2 Meaningful Sequence | A | Supports | Verified by VoiceOver and by the keyboard pass. The sidebar is read in its visual order, top to bottom (B1), and the keyboard pass recorded the overlay's items in page order and every Settings pane's rows top to bottom. |
| 1.3.3 Sensory Characteristics | A | Supports | The text of all nine Instructions cards was reviewed on 30 September 2026. Every instruction names a key or an item by its words ("Press S to switch between the list and halos on the page", "choose More below"); none depends on shape, color, position or sound alone. |
| 1.4.1 Use of Color | A | Partially Supports | Measured in Settings: a switch's state is also written beside it as On or Off, and the chosen section is also set in semibold, so neither depends on its color (contrast audit, 28 September). In the overlay, veiled items carry a text label and every halo a number. The selected halo differs from the others by an inverted badge, a filled circle instead of an outlined one; that is from the source and has not been checked by eye in grayscale. |
| 1.4.2 Audio Control | A | Supports | Nothing plays by itself. Halo's own spoken feedback is off unless turned on, and it stays silent while VoiceOver is running; with both, VoiceOver step A7 found that speech never overlapped. Read aloud on the Instructions cards speaks only when pressed, and the same button reads Stop while it speaks; moving to another card or closing the window also stops it. Stop has not been covered by a scripted step. |
| 2.1.1 Keyboard | A | Supports | Verified by the keyboard pass on every surface: the overlay, Sidebar Streamline, find, scrolling, all eight Settings panes, the credits and uninstall dialogs, and the menu-bar panel. Halo's windows handle the keyboard themselves, so Tab reaches every control whether or not the Mac's Keyboard navigation setting is on. The global shortcut was pressed on a real keyboard in the VoiceOver pass (A2). Reaching the menu-bar icon itself is done by macOS (Control-F8 with Keyboard navigation on, or VoiceOver's VO-M), which the VoiceOver pass used (E1). One pointer target has no keyboard equivalent of its own; see Documented exceptions. |
| 2.1.2 No Keyboard Trap | A | Supports | Verified by the keyboard pass: on every surface the keyboard alone both entered and left. Esc closes the overlay (a first Esc leaves find, a second closes), the menu-bar panel and Settings; in the credits and uninstall dialogs Esc answers Cancel and Settings has the keyboard back. VoiceOver step A5 confirmed VoiceOver carries on from where it was after Halo closes. |
| 2.1.4 Character Key Shortcuts | A | Supports | Halo's two global shortcuts carry modifiers: ⌥ Space by default, chosen in Settings from five, and ⌘⇧/ for find. The F13 choice has no modifier, but F13 is a function key, not a character key. Inside the overlay, single keys act: A, S, W or ?, P, D, F, J, K and the digits 1 to 9. These cannot be remapped or turned off, so this rests on the criterion's exception for shortcuts active only on focus: they are handled only by the overlay's own panel while it holds the keyboard, which it takes when the person opens it and gives up on Esc. The keyboard pass recorded that panel as the key window from opening to closing, and in find every letter went into the field rather than acting ("S goes to the field", find test). The source has no system-wide key monitor. Speech input users are who this criterion protects, and Voice Control has not yet been tested alongside Halo. |
| 2.2.1 Timing Adjustable | A | Not Evaluated | The source has no time limit on any action: nothing closes the overlay or a window by itself. Auto-scan, which moves the selection for switch users, is off unless turned on, its speed is set from every 0.5 to every 10 seconds, it stops after three passes, and it imposes no deadline, since the selection can be pressed at any time. Neither an idle overlay nor auto-scan has been tested. |
| 2.2.2 Pause, Stop, Hide | A | Not Evaluated | By default nothing moves that the person did not start. Two things can repeat, both off unless turned on: the gentle pulse on the selected halo, an opacity change only, which never runs with Reduce Motion on, and auto-scan, which any key stops. Neither has been tested. |
| 2.3.1 Three Flashes | A | Not Evaluated | The source contains no flashing content. The only repeating animation is the optional pulse, which fades between full and 55% opacity over 1.6 seconds each way. Not measured. |
| 2.4.1 Bypass Blocks | A | Not Applicable | Section 508 E207.2 does not require non-web software to conform to this criterion. |
| 2.4.2 Page Titled | A | Supports | Verified by VoiceOver: each Settings pane's name is announced (D1) and the credits dialog is read (D5). Halo's windows carry titles, and its overlay and menu-bar panel carry the names "Hushbird Halo overlay" and "Hushbird Halo menu". |
| 2.4.3 Focus Order | A | Supports | Verified by the keyboard pass, which recorded the order at every stop. Tab and the arrows move through the overlay's items in page order and wrap at both ends; Settings rows run top to bottom; the Instructions feature list is one stop whose arrows and digits choose the card, followed by Read aloud; the uninstall dialog puts Cancel first and the credits dialog Close. |
| 2.4.4 Link Purpose (In Context) | A | Supports | Rows that open a web page or System Settings say so in their title or the line beneath ("Opens the checkout in your browser", "Open Accessibility settings"). Every menu-bar item and Settings row was read by VoiceOver (E2, D2). |
| 2.5.1 Pointer Gestures | A | Supports | Everything is operated with a single click or tap; nothing needs a path or more than one finger. Confirmed in the daily use by trackpad on 30 September. |
| 2.5.2 Pointer Cancellation | A | Not Evaluated | Halo's rows and buttons are its own controls rather than Apple's, so the platform's behavior cannot be assumed. Whether each acts on release, and whether moving off before release cancels, has not been tested. |
| 2.5.3 Label in Name | A | Partially Supports | In the VoiceOver pass every Settings row was read by its visible title (D2) and the find field by its label (C1). The names have not been compared to the visible labels one by one, and Voice Control, which depends on this criterion, has not yet been tested alongside Halo. |
| 2.5.4 Motion Actuation | A | Not Applicable | No motion input. |
| 3.1.1 Language of Page | A | Supports | Checked in the built application: the bundle declares CFBundleDevelopmentRegion as en and lists en and es in CFBundleLocalizations, so macOS presents English or Spanish by the person's own language order and tells assistive technology which. The Spanish interface is complete (514 strings, none missing, checked by scripts/check-localization.py) and was reviewed by a native speaker on 30 September 2026. It has not yet been heard with VoiceOver set to Spanish. |
| 3.2.1 On Focus | A | Supports | Verified by the keyboard pass: moving the selection with Tab, the arrows or a digit only selects, and nothing is pressed until Return. A pointer resting on a row does not take the selection unless the pointer actually moves, pinned by testHoverOnlyMovesFocusWhenThePointerActuallyMoves. |
| 3.2.2 On Input | A | Supports | Changing a setting applies that setting and nothing else, and VoiceOver announced the new value (D3). Typing in find narrows the list and changes nothing else (keyboard pass and find test). |
| 3.3.1 Error Identification | A | Not Evaluated | The source describes errors in text, for example "Paste the license key from your email." and "Could not reach hushbird.app. Check your connection and try again.", and the error text was measured for contrast. The trial-ended pane was checked against a local license server on 28 September; the error messages themselves have not been triggered in a recorded test. |
| 3.3.2 Labels or Instructions | A | Partially Supports | The find field is announced as a search field with its label (C1), and each Settings pane carries its keyboard instructions beneath it. The license key field passed step D4 on 28 September, but the example of the key's format was then moved out of the field's placeholder, where it failed contrast, into text Halo draws; step D4 has not been heard again since. |
| 4.1.1 Parsing | A | Not Applicable | Applies to content written in a markup language. Halo's interface is built with AppKit and SwiftUI. |
| 4.1.2 Name, Role, Value | A | Partially Supports | Verified by VoiceOver on Halo's own controls, which are not Apple's standard ones: every Settings row announced its name and its value (D2), changes of value were announced (D3), the menu-bar icon and its items were named (E1, E2), and the overlay's items were read by name and type (A3). Two parts are outstanding: step D4, the license key field, after the change described under 3.3.2; and an Accessibility Inspector pass, which has not been run. |
Table 2: WCAG 2.1 Level AA
| Criterion | Level | Conformance | Remarks |
|---|---|---|---|
| 1.2.4 Captions, Live | AA | Not Applicable | No live audio content. |
| 1.2.5 Audio Description | AA | Not Applicable | No prerecorded video. |
| 1.3.4 Orientation | AA | Not Applicable | Desktop application. |
| 1.3.5 Identify Input Purpose | AA | Not Applicable | Halo has two text fields, find and the license key. Neither collects information about the person, so neither falls under the criterion's list of input purposes. |
| 1.4.3 Contrast, Minimum | AA | Supports | Measured, in both appearances, across Settings, the dialogs, the welcome guide, the Instructions pane, the overlay, Sidebar Streamline, find, the menu-bar panel and the Halo button. The re-run of 30 September measured 224 pairs: 216 pass, none fail, and 8 are exempt because the same information is carried by text that passes. Body captions are 4.91:1 on paper and 7.02:1 on slate; the small section headings, the last failure at 2.82:1 and 3.79:1, were redrawn on 30 September and are 4.91:1 and 7.02:1. Halo's labels over the dimmed screen sit on opaque surfaces, measured against a white page, the worst case: a veil's label is 7.95:1. What the dim does to the other application's text is by design and is set out under Documented exceptions. Reproducible with python3 scripts/contrast-audit.py. |
| 1.4.4 Resize Text | AA | Partially Supports | Halo has its own Text size setting, Large, Larger and Largest, which draws the overlay, the sidebar and the menu-bar panel at 1, 1.5 and 2 times; the Settings window follows it only up to 1.3 times. That is from the source and has not been tested at each size. Halo does not follow the text size set in the Mac's own Accessibility settings. As Hushbird's report sets out, macOS offers third-party applications no Dynamic Type mechanism; the platform's route to larger text is Display scaling and Zoom, and Zoom has not yet been tested alongside Halo. |
| 1.4.5 Images of Text | AA | Not Evaluated | The source draws all text as text, including the words inside the Instructions pictures. Not yet confirmed surface by surface. |
| 1.4.10 Reflow | AA | Not Evaluated | Halo's windows open at 90% of the screen and never smaller than 820 by 600 points, pinned by testWindowsOpenJustBelowFullScreen, and each Settings pane scrolls. The Settings window can be resized smaller, and how the panes behave at the equivalent of 320 CSS pixels has not been tested. |
| 1.4.11 Non-text Contrast | AA | Supports | Measured. Settings' focus ring is 3.26:1 to 6.55:1 on every surface it sits on; every halo color's ring and number against its black band is 7.30:1 (magenta) to 19.23:1 (white); the selected sidebar row's outline is 5.80:1 to 15.28:1; the Halo button's ring is 18.52:1. Eight items below 3:1 are recorded as exempt with their figures published rather than omitted, each because text that passes carries the same information: a switch's off track (1.28:1, the On or Off label says the state), a row card's edge (1.28:1), the chevron on an action row (2.85:1 in light) and the chosen section's edge (1.77:1 light, 2.45:1 dark, the section also set in semibold). Not measured: the Increase Contrast setting, under which Halo thickens its rings, and accent colors other than blue. |
| 1.4.12 Text Spacing | AA | Not Applicable | The criterion applies where a user can override line, paragraph, letter and word spacing, which on the web is done with a user style sheet. macOS provides no equivalent mechanism for a native application. |
| 1.4.13 Content on Hover or Focus | AA | Not Applicable | Halo shows no additional content on hover or focus of its own. The Halo button's tooltip is the system's, which is exempt as user-agent content. The explanation of an item appears on a key press (W) and hides on a second one. The one line Sidebar Streamline draws, from the selected row to its control, marks the selection rather than adding content. |
| 2.4.5 Multiple Ways | AA | Not Applicable | Section 508 E207.2 does not require non-web software to conform to this criterion. |
| 2.4.6 Headings and Labels | AA | Supports | Verified by VoiceOver: headings announced as headings and describing their groups (B1), and every row read by a descriptive name (D2). |
| 2.4.7 Focus Visible | AA | Supports | Halo draws its own focus indicators and they were measured: Settings' ring at 3.26:1 to 6.55:1, the selected halo's ring and badge at 7.30:1 or more, the selected sidebar row's outline at 5.80:1 or more. The keyboard pass recorded where the focus was at every stop, and the daily use of 30 September by keyboard is a person seeing it. The dim layer is cut away around every halo, so the selected halo is never dimmed, and the control panel at the top moves out of the way of any halo under it, pinned by testControlIslandNeverCoversAHalo and testIslandMovesOutOfTheWayOfHalos. While the overlay is open the keyboard is in Halo, and the application underneath has its own focus back as soon as Halo closes. In Sidebar Streamline the column covers the leading edge of the window; a control underneath it is represented by its row, which carries the focus. Focus Not Obscured (2.4.11) is a WCAG 2.2 criterion and is not claimed here. |
| 3.1.2 Language of Parts | AA | Partially Supports | Halo's interface is in English or Spanish and each is internally consistent. The names Halo reads from other applications and lists in its sidebar may be in any language and are not marked with their language, so a screen reader reads them in the interface's language. Spoken feedback uses a voice for the interface language. |
| 3.2.3 Consistent Navigation | AA | Not Applicable | Section 508 E207.2 does not require non-web software to conform to this criterion. For the record, Settings keeps one list of eight sections in a fixed order, each on ⌘1 to ⌘8. |
| 3.2.4 Consistent Identification | AA | Not Applicable | Section 508 E207.2 does not require non-web software to conform to this criterion. For the record, the overlay's keys are defined once and the Instructions cards are tested against that same definition, testEveryTaughtKeyDoesWhatItsCardSays. |
| 3.3.3 Error Suggestion | AA | Not Evaluated | The source's error messages say what to do next, as quoted under 3.3.1. Not yet triggered in a recorded test. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Supports | Removing Halo and everything it downloaded asks first, in Halo's own dialog, with Cancel focused first and Esc answering Cancel (keyboard pass, run with a removal that removes nothing). When a person presses a pay, send or delete control in another application through Halo, Halo asks again before pressing it: in the find test, Return on "Place order" armed the press rather than making it. Which controls count is pinned by testConfirmationForConsequentialActions. The second ask can be turned off in Settings. |
| 4.1.3 Status Messages | AA | Supports | Verified by VoiceOver. Opening Halo announces it and the first item without doubling VoiceOver's speech (A2); switching between halos and the sidebar is announced (B2), as is showing veiled items (B3); find announces the number of matches after a pause (C2); changing a setting announces the new value (D3). Status messages are posted as announcements and never move the focus. Not covered by a scripted step: the Read aloud button turning to Stop, added on 30 September. |
Table 3: Revised Section 508, Chapter 5, Software
| Criterion | Conformance | Remarks |
|---|---|---|
| 502.2.1 User Control of Accessibility Features | Not Applicable | Applies to platform software. |
| 502.2.2 No Disruption of Accessibility Features | Partially Supports | VoiceOver: tested, passed. On 28 September 2026 the first part of the VoiceOver script tested exactly this: VoiceOver reading a web page in Safari, then ⌥ Space, a number, Return, VO and the arrows again, ⌥ Space and Esc, and Halo's own voice on and off. Halo never stopped VoiceOver, spoke over it or trapped it, and VoiceOver carried on from where it was after Halo closed (A1 to A7). Daily use with VoiceOver on 30 September found no disruption either. Not yet evaluated: Voice Control, Zoom, Full Keyboard Access, Switch Control and Sticky Keys alongside Halo. Until each is tested this criterion stays at Partially Supports. From the source, and not tested: Halo turns off the pulse and the panel's animation under Reduce Motion, thickens its rings under Increase Contrast, and with Reduce Transparency on draws its dim at 95% whatever the Darkness setting. |
| 502.3.1 to 502.3.14 Accessibility Services | Partially Supports | Name, role, state, value and focus of Halo's own controls were verified by listening with VoiceOver, as under WCAG 4.1.2 and 4.1.3. The remaining services, such as text attributes and the full set of event notifications, have not been inspected, because no Accessibility Inspector pass has been run. |
| 502.4 Platform Accessibility Features | Not Applicable | Applies to platform software. |
| 503.2 User Preferences | Partially Supports | Halo's windows follow the Mac's light or dark appearance, and both appearances were measured for contrast. It does not follow the Mac's system text size, as set out under 1.4.4. Its handling of Reduce Motion, Reduce Transparency and Increase Contrast is from the source and has not been tested. |
| 503.3 Alternative User Interfaces | Supports | Halo is an alternative interface to other applications and works only through the platform's accessibility service, the macOS Accessibility API. It does not inject code into other applications or modify them. Pressing a control in another application through Halo was tested in the VoiceOver pass (A4), and find and scroll through the same service in the find and scroll tests. |
| 503.4 User Controls for Captions and Audio Description | Not Applicable | No video. |
| 504 Authoring Tools | Not Applicable | Halo is not an authoring tool. |
Not yet tested
These are stated here so that nobody has to find them:
- Voice Control, Zoom, Full Keyboard Access and Switch Control alongside Halo. None has been evaluated. This is the open half of 502.2.2, and it bears on 1.4.4 (Zoom is the platform's route to larger text) and 2.1.4 and 2.5.3 (Voice Control).
- A person repeating the keyboard pass step by step. The scripted pass was run through Halo's own key handling by a coding agent; the person's use on 30 September was not scripted.
- VoiceOver in Spanish, and the VoiceOver script on the Instructions pane, which was added after the scripted pass.
- Step D4 again, the license key field, after its format example moved out of the placeholder.
- An Accessibility Inspector pass.
- Intel Macs. Halo is built for them; every test here ran on Apple silicon.
Documented exceptions
The dim layer lowers the contrast of the other application's content. When Halo opens, everything in the front window outside the highlighted items is darkened: that is the product's purpose, not an accident of drawing. Measured on a white page, black text outside the halos is 1.79:1 at the default Darkness of 78%, and 1.08:1 at the most Darkness allows, 95%. The person controls this: Darkness can be turned down in Settings, and ordinary page text keeps 4.5:1 at a Darkness of 54% or less; A reveals every veiled item; Esc removes the dim entirely. One qualification from the source: with the Mac's Reduce Transparency setting on, Halo dims at 95% whatever Darkness is set to. Halo's own text over the dim sits on opaque surfaces and is measured under 1.4.3.
The Halo button on screen. An optional button at the edge of the screen, off unless turned on, which opens Halo with one click. It is a pointer target for people who prefer one, and its keyboard equivalent is Halo's global shortcut, which does the same thing.
Single letters inside the overlay cannot be remapped. They act only while the overlay holds the keyboard, which is the basis on which 2.1.4 is marked Supports. They stay the same in Spanish, because they are what Halo listens for.
Keeping this true
This report describes Hushbird Halo 0.1.0 (build 1) as built on 30 September 2026. It is re-checked when a release changes an interactive control, and the measurements behind it are reproducible rather than remembered:
python3 scripts/contrast-audit.py measures every color pair Halo draws. On 30 September 2026: 216 pass, 0 fail, 8 exempt, of 224 measured.
swift test runs Halo's test suite. On 30 September 2026: 114 tests, none failing. Five of them, in ContrastTests.swift, exist because of the contrast failures found for this report, each named for the failure it prevents, and they fail if a color falls back below AA. Twelve, in InstructionsTests.swift, press every key the Instructions teach through the same code the overlay uses, and fail if a key's meaning and its instructions part ways.
.build/debug/HushbirdHalo --keyboard-test --trace-keys --no-dashboard repeats the keyboard pass on a development build, and --pretend-untrusted repeats it as a Mac without Accessibility access sees Halo. python3 scripts/check-localization.py confirms the Spanish interface is complete before it is declared.
If any part of Hushbird Halo is difficult or impossible for you to use, write to access@hushbird.app.