Attyre v2026.05.11
Attyre v2026.05.11
Release date: May 11, 2026
What's new
Accessibility overhaul
This release is a big one for keyboard and screen reader users. Item cards are now proper <button> elements, which means screen readers announce them correctly and keyboard users get Enter/Space activation for free. The calendar grid has been rebuilt with full ARIA semantics (role="grid", role="gridcell", aria-selected), and day cells respond to keyboard navigation.
A hidden aria-live region now announces page titles on every navigation, filter result counts in the wardrobe, and calendar date selections, so screen reader users always know what changed without hunting around.
Other additions:
- Skip-to-content link visible on Tab from any page
- Global
:focus-visiblering on all interactive elements, with a thicker blue variant in accessibility mode aria-pressedstate on outfit selector cards so selection state is readable without relying on coloraria-describedbywiring on name and category form inputs to their inline error messagesprefers-reduced-motionsupport: all CSS transitions and animations are suppressed when the OS setting is on
Accessibility mode itself also got expanded. Beyond the color swap, it now bumps the base font size to 16px, strengthens border contrast, and thickens nav icon strokes.
Bug fixes
Mobile app shell invisible on older phones
.app-shell used height: 100dvh with no fallback. The dvh unit is unsupported on iOS older than 16 and Chrome older than 108, which caused the shell to collapse to zero height and render nothing. A height: 100vh fallback has been added immediately before the dvh line.
Initial page never renders on slow mobile connections
app.js registered a DOMContentLoaded listener unconditionally. Because ES modules are fetched asynchronously, the event can fire before the module finishes loading on real phones, leaving #app permanently empty. The router now guards with a document.readyState check so renderPage() always runs.
PWA start_url mismatch on iOS
manifest.json had "start_url": "/" while the app uses hash routing. Launching from the iOS home screen landed on a bare static file instead of the app. Changed to "/index.html#/".
Known bugs
- Mobile version appears static, working on fix
Upgrading
No migration needed. Data stored in localStorage is fully compatible with this release. If you have the app installed as a PWA, it will update automatically on next launch.
Full changelog
See CHANGELOG.md for the complete history of changes across all releases.