diff --git a/README.md b/README.md index 1dbd2a1..20682f1 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@
-
+
@@ -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 (
- <>
+
OpenPylon
- v0.1.0 · Local-first Kanban board + v1.1.0 · Local-first Kanban board
Built with Tauri, React, and TypeScript.