Skip to content

Meridian v2.1.0

Choose a tag to compare

@oernster oernster released this 02 Jun 13:23
· 27 commits to main since this release

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: FeedListModel roles updated (feedDescription, feedFilter); AppController slot 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)