checkpoint: document keyboard accessibility hardening
This commit is contained in:
parent
e9022b36b9
commit
a47ce8b9ef
1 changed files with 32 additions and 12 deletions
|
|
@ -1,11 +1,11 @@
|
|||
# Checkpoint — Profile import over IPC (2026-09-01)
|
||||
# Checkpoint — HomeScreen keyboard accessibility (2026-09-01)
|
||||
|
||||
## Where things are
|
||||
- Project: `/home/avi/Projects/Keynctr`
|
||||
- Git repo: `master` @ `3083a44` ("chore: fix two clippy warnings").
|
||||
- Working tree: clean except four untracked items (`.directory`, `.opencode/`,
|
||||
`COSMIC_THEME.md`, `KeynectrAppIconPossibility02.jpeg`) — none are part of this
|
||||
feature and none have been committed.
|
||||
- Git repo: `master` @ `f1236e7` ("checkpoint: document clippy warning cleanup").
|
||||
- Working tree: **3 modified files uncommitted** (the harden changes below) plus
|
||||
the usual untracked items (`.directory`, `.opencode/`, `.impeccable/`,
|
||||
`COSMIC_THEME.md`, `KeynectrAppIconPossibility02.jpeg`).
|
||||
|
||||
## What was completed
|
||||
1. **Clippy is now warning-free.** Removed the two pre-existing warnings: the
|
||||
|
|
@ -29,21 +29,37 @@
|
|||
5. **Prettier** applied to `ImportProfileModal.tsx`, `ProfilesScreen.tsx`,
|
||||
`AppProvider.tsx` (and the test file), clearing the three existing
|
||||
`format:check` warnings — `npm run format:check` is now fully clean.
|
||||
6. **HomeScreen keyboard accessibility (this session).** Profile list rows
|
||||
(`<li>` elements) are now keyboard-focusable and operable:
|
||||
- Added `role="listbox"` on the `<ul>` and `role="option"` + `aria-selected`
|
||||
on each non-active `<li>`.
|
||||
- Added `tabIndex={0}` so non-active rows receive keyboard focus.
|
||||
- Added `onKeyDown` handler (Enter/Space to select) matching the existing
|
||||
`onClick` behavior (skips if target is a button/a/input).
|
||||
- Added descriptive `aria-label` including profile name and active state.
|
||||
- Added `.home-profile-row:not(.is-active):focus-visible` CSS rule for the
|
||||
standard 2px solid var(--focus) + 2px offset ring.
|
||||
- Updated the test from `findByRole('list')` to `findByRole('listbox')`.
|
||||
|
||||
## Commits added in this session (newest first)
|
||||
- `f1236e7` checkpoint: document clippy warning cleanup
|
||||
- `3083a44` chore: fix two clippy warnings
|
||||
- `0207636` feat: expose profile import over IPC
|
||||
- `2604cf9` checkpoint: document release packages
|
||||
|
||||
**Uncommitted (this session):**
|
||||
- `frontend/src/screens/HomeScreen.tsx` — keyboard accessibility for profile list
|
||||
- `frontend/src/styles.css` — focus-visible styling for profile rows
|
||||
- `frontend/src/test/HomeScreen.test.tsx` — updated test role to listbox
|
||||
|
||||
## Verification commands run
|
||||
All green in this session, run after the changes:
|
||||
|
||||
- Rust: `cargo fmt --check` clean; `cargo test` — 116 passed;
|
||||
`cargo clippy --all-targets` — clean, zero warnings; `cargo build --release` — success.
|
||||
- Frontend: `npm test` — 15 files / 99 passed (the 2 previously failing HomeScreen
|
||||
tests now pass); `npm run typecheck` clean; `npm run lint` clean (only the
|
||||
harmless ES-module reparsing warning); `npm run format:check` — all files clean;
|
||||
`npm run electron:build` — success; `npm run build` — success (Vite bundle built).
|
||||
- Frontend: `npm test` — 15 files / 99 passed; `npm run typecheck` clean; `npm run lint`
|
||||
clean (only the harmless ES-module reparsing warning); `npm run build` — success
|
||||
(Vite bundle built).
|
||||
- Packaging (previous session, still valid artifacts):
|
||||
`npx electron-builder --linux AppImage deb` produced
|
||||
`frontend/release/Keynctr-0.1.0.AppImage` and
|
||||
|
|
@ -72,10 +88,14 @@ All green in this session, run after the changes:
|
|||
## Outstanding / next-step items
|
||||
- **Undo restores with empty `secret_key`** (stores `ProfileSummary`); needs
|
||||
`StoredProfile` in `undo_history` for full secret recovery.
|
||||
- `.opencode/`, `COSMIC_THEME.md`, `KeynctrAppIconPossibility02.jpeg` remain
|
||||
untracked (`.directory` is a file-manager artifact); no commit was created for
|
||||
them in this session.
|
||||
- `.opencode/`, `.impeccable/critique/`, `COSMIC_THEME.md`,
|
||||
`KeynectrAppIconPossibility02.jpeg` remain untracked (`.directory` is a
|
||||
file-manager artifact); no commit was created for them in this session.
|
||||
- Installer artifacts are local build outputs under `frontend/release/` and are
|
||||
not committed.
|
||||
- README is stale (title, dependency versions, test counts, Forgejo references) —
|
||||
worth a docs pass before 0.2.
|
||||
- **HomeScreen critique follow-up** (from `/impeccable critique`): 27/40 score.
|
||||
Remaining P1: identity card gradient breaks flat-by-default rule. P2: flat
|
||||
first-run guide, off-system 8px border-radius, publication empty state as
|
||||
sentence. See `.impeccable/critique/2026-09-01T15-55-28Z__...` for full report.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue