diff --git a/ROADMAP.md b/ROADMAP.md index 86a91b6..f4c13b8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -225,6 +225,18 @@ Each release's notes say what it brought, and the decisions above say why. The c | [0.2: Safe, searchable and shareable](https://github.com/hazeliscoding/prompuff/releases/tag/v0.2.0) | 2026-10-07 | Backups, Recently deleted, FTS5 search, remembered values and `.zip` sharing | | [0.1: MVP](https://github.com/hazeliscoding/prompuff/releases/tag/v0.1.0) | 2026-10-07 | The library, `{{variables}}`, versions, Markdown import and export, and updates | +## v1.1.1: Accessibility fixes + +An audit on 2026-10-10 went through the UI tests' screenshots, the themes and the views. These are what it found. + +- [x] Screen readers and the keyboard: the rating takes the keyboard and reads out as "Usefulness, Solid", toasts and Quick save's error are announced, a heart says whether its prompt is a favorite, Show details says when it's open, and the workflow's Previous and Next buttons point left and right like its step strip. +- [ ] Contrast and focus: danger buttons on hover, the focused list row against a picked one, the picked option in segmented controls, control edges and empty rating pips at 3:1, counts on the active sidebar row and tags on their tinted fill, and focus outlines that follow each control's corners. `ThemeTests` holds every theme to the new pairs. +- [ ] Layout: long dialog titles wrap, the library and Settings fit the 960-pixel minimum width with a screenshot test at that size, toasts stay clear of the buttons beneath them, the Render tab scrolls once, the data folder's path shows in full on hover, and Settings sections share one spacing. +- [ ] Copy and polish: Quick save's button says Save, the list view shows the rating's word, and small icon buttons use one icon size. +- [ ] Publish v1.1.1. + +**Done when:** a screen reader reads a prompt's rating and favorite and announces a toast, the library and Settings fit a 960 × 600 window, and `ThemeTests` holds all thirteen themes to the new pairs. + ## Getting found These need no release. Each lands as its own pull request whenever it's ready, alongside the milestones below. diff --git a/docs/user-guide.md b/docs/user-guide.md index 5f345a1..cfcb7f9 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -74,7 +74,7 @@ A prompt lives in one collection, or none, and can have any number of tags. A prompt has a **title**, a one-line **description**, the **prompt** itself (Markdown), and **Why this worked**, notes to your future self. -**Saving:** changes to those four fields wait for **Save** (Ctrl+S), and each save makes a new version. Prompuff also saves when you leave the prompt or close the window. The favorite heart (Ctrl+D), the usefulness rating (Meh, Okay, Solid, Great, Cooked), the collection and the tags save as soon as you change them, and don't make versions. +**Saving:** changes to those four fields wait for **Save** (Ctrl+S), and each save makes a new version. Prompuff also saves when you leave the prompt or close the window. The favorite heart (Ctrl+D), the usefulness rating (Meh, Okay, Solid, Great, Cooked; Tab to it and use the arrow keys or 0 to 5), the collection and the tags save as soon as you change them, and don't make versions. **Copying:** **Copy** copies the prompt with your variable values filled in. The **…** menu has **Copy template with variables** (Ctrl+Shift+C), which copies it as written. diff --git a/scripts/generate-icons.py b/scripts/generate-icons.py index 283e315..58102fb 100644 --- a/scripts/generate-icons.py +++ b/scripts/generate-icons.py @@ -89,6 +89,7 @@ ("ArrowUp", "arrow-up"), ("ArrowDown", "arrow-down"), ("ArrowRight", "arrow-right"), + ("ArrowLeft", "arrow-left"), ("CircleCheck", "circle-check"), ("Plug", "plug"), ("Terminal", "terminal"), diff --git a/src/Prompuff.App/Controls/AccessibleNames.cs b/src/Prompuff.App/Controls/AccessibleNames.cs index b896cd6..792bb4e 100644 --- a/src/Prompuff.App/Controls/AccessibleNames.cs +++ b/src/Prompuff.App/Controls/AccessibleNames.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Automation; +using Avalonia.Automation.Peers; using Avalonia.Controls; using Avalonia.Data; using Avalonia.LogicalTree; @@ -25,6 +26,15 @@ public static void Install() Control.UnloadedEvent.AddClassHandler