From 3d7dc4f8754e15bfa73b956e30df52b8e7165865 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 19 Feb 2026 20:15:01 +0200 Subject: [PATCH] bump to v1.1.0: accessibility, filter bar fix, updated README --- README.md | 49 +++++++++++++++++++++- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- src/components/board/BoardView.tsx | 6 +-- src/components/settings/SettingsDialog.tsx | 2 +- 7 files changed, 56 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 1dbd2a1..20682f1 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

License: CC0 1.0 - Version 0.1.0 + Version 1.1.0 Windows Portable Built with Tauri v2 @@ -95,6 +95,53 @@ Full keyboard-driven workflow. Vim-style or arrow keys -- your choice. - **Custom scrollbars** -- themed scrollbars throughout, with auto-hide behavior - **Smooth animations** -- staggered entrances, layout transitions, and micro-interactions powered by Framer Motion, with full `prefers-reduced-motion` support +### ♿ Accessibility (WCAG 2.2 AAA) + +OpenPylon targets WCAG 2.2 AAA conformance -- because productivity tools should work for everyone, not just people with perfect vision and a mouse. + +**Color and Contrast** + +- **7:1 enhanced contrast** on all text and interactive elements, in both light and dark themes +- **3:1 non-text contrast** on borders, scrollbar thumbs, and focus indicators +- **High-contrast mode** support -- `prefers-contrast: more` boosts all tokens further +- **Color is never the sole indicator** -- priority levels, due date status, and labels all include text or shape cues alongside color + +**Focus and Keyboard** + +- **3px dual-ring focus indicators** visible on every interactive element, against any background +- **Skip-to-content link** as the first focusable element on the page +- **Full keyboard navigation** -- vim keys, arrow keys, tab order, Escape to dismiss +- **Shift+F10 context menus** -- right-click menus are also reachable via keyboard +- **Focus trapping** in all modals and dialogs with focus restore on close +- **Hidden interactive elements** (menu buttons, action buttons) become visible on `focus-visible`, not just hover + +**Screen Readers and ARIA** + +- **ARIA live regions** announce card/column creation, deletion, moves, filter changes, and drag-and-drop operations +- **Proper dialog semantics** -- `role="dialog"`, `aria-modal`, `aria-labelledby` on all modals +- **Tab/tabpanel pattern** in settings with `role="tablist"`, `role="tab"`, `aria-selected` +- **Calendar grid** with `role="grid"`, `aria-selected` on date cells, labeled navigation +- **`aria-label`** on every icon-only button, color swatch, status indicator, and unlabeled input +- **`aria-pressed`** on all toggle buttons (theme, density, motion, label chips, priority) +- **Screen-reader-only labels** for search inputs, select dropdowns, and range sliders + +**Toasts and Notifications** + +- **8-second auto-dismiss** with pause-on-hover and pause-on-focus +- **Visible dismiss button** on every toast +- **`aria-live="polite"`** region so screen readers announce toast content without interrupting + +**Motion** + +- **`prefers-reduced-motion`** fully respected -- both via CSS media query and an in-app toggle +- **No essential information** conveyed through animation alone + +**Page Structure** + +- **Dynamic page titles** -- updates to reflect the current board name +- **Landmark regions** and semantic HTML throughout +- **Minimum touch targets** -- 44px interactive area on small buttons via extended hit zones + ### 🛡️ Data Safety Your work is protected by multiple layers of redundancy -- because tools that lose your data don't deserve your trust. diff --git a/package.json b/package.json index e005ffb..2aaf281 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openpylon", "private": true, - "version": "1.0.1", + "version": "1.1.0", "type": "module", "scripts": { "dev": "vite", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 77e6572..0a679a3 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2360,7 +2360,7 @@ dependencies = [ [[package]] name = "openpylon" -version = "1.0.1" +version = "1.1.0" dependencies = [ "serde", "serde_json", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 30c6d12..0ab46aa 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "openpylon" -version = "1.0.1" +version = "1.1.0" description = "A Tauri App" authors = ["you"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index b93885f..1d5d89d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "openpylon", - "version": "1.0.1", + "version": "1.1.0", "identifier": "com.openpylon.app", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/components/board/BoardView.tsx b/src/components/board/BoardView.tsx index ea247f4..41a4798 100644 --- a/src/components/board/BoardView.tsx +++ b/src/components/board/BoardView.tsx @@ -388,7 +388,7 @@ export function BoardView() { const columnIds = board.columns.map((c) => c.id); return ( - <> +

{/* Visually hidden live region for drag-and-drop announcements */}
@@ -511,6 +511,6 @@ export function BoardView() { cardId={selectedCardId} onClose={() => { setSelectedCardId(null); }} /> - +
); } diff --git a/src/components/settings/SettingsDialog.tsx b/src/components/settings/SettingsDialog.tsx index fc34286..d095ce6 100644 --- a/src/components/settings/SettingsDialog.tsx +++ b/src/components/settings/SettingsDialog.tsx @@ -343,7 +343,7 @@ export function SettingsDialog({ open, onOpenChange }: SettingsDialogProps) {

OpenPylon

- v0.1.0 · Local-first Kanban board + v1.1.0 · Local-first Kanban board

Built with Tauri, React, and TypeScript.