Meridian v2.1.0
Release Notes
Keyboard Navigation
Full keyboard navigation implemented across the entire application. Every interactive element is reachable and operable without a mouse. This involved a substantial number of deliberate, fine-grained UX decisions - the kind that are glaringly absent when missing but become completely invisible once in place, because the experience simply feels natural. When done well, keyboard navigation of this depth is indistinguishable from magic: no dead ends, no skipped controls, no jarring jumps, no phantom Tab presses to nowhere.
Tab chain order
File menu → Help menu → Search → Manage → Theme toggle → Feed select-all checkbox → Feed sort buttons (non-active only) → Feed list → Item sort buttons (non-active only) → Mark all read → Item list → Open in Browser → wraps to File menu
Behaviour
- Tab / Right cursor: advance to next item
- Shift+Tab / Left cursor: return to previous item
- Down/Up cursor: navigate within a list (feeds or items); open a menu dropdown from the menu bar; navigate autocomplete suggestions in Search
- Enter/Space: activate focused item or select a highlighted autocomplete suggestion
- Escape: close dialogs, cancel search, dismiss autocomplete
- Active sort buttons are excluded from the keyboard chain; only selectable (non-active) sort options are reachable
- Inside an open menu dropdown, Tab/Right moves to the next top-level menu rather than cycling submenu items; Up/Down navigates within the submenu
- The Remove button (bulk feed delete) enters the tab chain only when feeds are selected
- The Search button in the Search pane is skipped in the tab chain when the query field is empty
- Manage Subscriptions pane auto-focuses the URL field on open
Focus ring
All focusable controls display an amber (orange) border when keyboard-focused, consistent with the existing hover style.
Dialogs
- About: keyboard focus lands on Close button on open; Enter/Escape closes
- Licence: keyboard focus lands on licence text on open so Up/Down scrolls immediately; Tab moves to Close button which shows amber focus ring; Backtab returns to text; Enter/Escape closes
Manage Subscriptions - Extended Keyboard Navigation
Full keyboard nav inside the Manage Subscriptions pane and all its dialogs.
Tab chain (within the pane)
URL field → Subscribe button (when URL valid) → Select-all checkbox → Remove Selected button (when feeds selected) → Feed list → per row: row checkbox → Filter → Edit → Remove → wraps to URL field
Behaviour
- Enter/Space: activate any focused control (buttons, checkboxes, list items)
- Left/Right cursor: navigate between buttons within a row (Filter ↔ Edit ↔ Remove), or between dialog footer buttons (Cancel ↔ OK)
- Filter button: Enter opens filter dialog
- Edit button: Enter opens edit URL dialog; Enter inside the URL field (when non-empty) accepts
- Remove button: Enter opens remove confirmation dialog
Filter dialog
- Opens pre-populated with existing filter terms shown as tabbable, toggleable rows
- Existing terms default to active (ticked); Space or Enter toggles each term on/off
- Right cursor navigates to next term or the text field; Left cursor to previous term
- New terms typed in the text field are appended to active terms on accept
- Enter inside the text field accepts the dialog (saves combined filter)
- Deactivating all terms and leaving text field empty clears the filter
Documentation
- README.md: features list updated to reflect keyboard navigation and filter dialog improvements
- ARCHITECTURE.md:
FeedListModelroles updated (feedDescription, feedFilter);AppControllerslot list updated; QML file descriptions updated for SubscriptionManager filter dialog, FeedDiscovery, AboutDialog, LicenceDialog; keyboard navigation design decision added (Button/Enter quirk, Tab-chain approach, Left/Right footer nav)