Skip to content

Add Codex parity pass for shortcuts, thread find, and focus guards#63

Open
friuns2 wants to merge 3 commits intomainfrom
codex/parity-shortcuts-thread-find
Open

Add Codex parity pass for shortcuts, thread find, and focus guards#63
friuns2 wants to merge 3 commits intomainfrom
codex/parity-shortcuts-thread-find

Conversation

@friuns2
Copy link
Copy Markdown
Owner

@friuns2 friuns2 commented Apr 22, 2026

Why

This PR completes a broad Codex desktop parity pass for keyboard-first workflows in the web app. The main objective is to make global shortcuts predictable, route-safe, and focus-safe while adding thread-scoped find behavior that matches expected desktop ergonomics.

What Changed

1) Thread-Scoped Find UX (new)

Implemented a dedicated Find in thread control set in the thread header actions area:

  • text input (Find in thread)
  • live match counter (current/total)
  • previous/next navigation buttons
  • clear button

Behavior added:

  • query is matched against current thread messages
  • active match is tracked and surfaced to conversation view
  • Enter and Shift+Enter step through matches
  • state resets appropriately on thread changes

Implementation wiring:

  • App-level find state + computed match IDs/count
  • active highlight target passed into conversation component

2) Global Shortcut Parity Expansion

Extended and normalized shortcut handling in app shell to align with Codex-style desktop flows, including fallback mappings where this fork lacks exact panel equivalents.

Covered areas include:

  • navigation/history/thread-cycle shortcuts
  • settings/skills/command-surface shortcuts
  • new-thread/new-window/open-folder flows
  • thread actions (review/pin/archive/rename)
  • copy/deeplink/context-related shortcuts

3) Focus-Safety Guards (major hardening)

Added consistent safety guards so global shortcuts do not fire when user focus is in:

  • editable controls (input, textarea, contenteditable, select-like/combobox/search/spinbutton surfaces)
  • terminal-like focus hosts ([data-codex-terminal] and related probes)

Result:

  • prevents accidental route jumps, panel toggles, and destructive thread actions while typing
  • avoids hijacking terminal-style keyboard workflows

4) Composer Keyboard/Escape Parity

Refined composer key handling paths for parity and consistency:

  • send/model/plan-mode-related shortcut behavior adjustments
  • mention/attach menu escape semantics
  • focus-preserving escape flows

5) Sidebar Thread Tree Integration

Added integration points for keyboard-driven thread actions from shell-level shortcuts:

  • ref-based connection from app shell to thread tree actions
  • improved rename/pin action invocation consistency

6) Account/Label/Formatting Parity Polish

Small but user-visible parity improvements:

  • workspace ID label/title treatment
  • compact weekly reset date formatting is locale-aware
  • detached-branch display fallback normalization

7) Parity Knowledge Base Updates

Updated .agents/skills/codex-app-parity/SKILL.md with concrete findings from this implementation cycle:

  • route/focus guard guidance
  • shortcut fallback conventions
  • terminal-focus verification hygiene

8) Manual Verification Coverage Expansion

tests.md now includes extensive feature-by-feature manual test sections with:

  • prerequisites/setup
  • exact interaction steps
  • expected results
  • rollback notes

Changed Files

  • .agents/skills/codex-app-parity/SKILL.md
  • .gitignore
  • src/App.vue
  • src/components/content/ThreadComposer.vue
  • src/components/content/ThreadConversation.vue
  • src/components/sidebar/SidebarThreadTree.vue
  • src/composables/useDesktopState.ts
  • tests.md

Verification Performed

  • Iterative targeted Playwright parity assertion runs during implementation.
  • Repeated shortcut smoke/report executions while expanding coverage.
  • Manual/logic validation of focus-guard and route-scope conditions.

Notes:

  • Some parity scripts are environment/seed-state sensitive (port/session/thread availability), so full-suite determinism may require clean server/session setup.

Risk Assessment

  • Scope risk: Moderate (large keyboard surface touched).
  • Primary mitigations:
    • strict route/thread gating for thread actions
    • comprehensive editable/terminal focus guards
    • expanded manual test matrix in tests.md

Backward Compatibility

  • Existing UI architecture and dependency set preserved.
  • No new runtime dependencies introduced.
  • Behavior changes are focused on shortcut handling and find UX, with conservative fallbacks where exact desktop surfaces do not exist in this fork.

Follow-up Candidates (optional)

  • Stabilize flaky parity scripts by standardizing test seed/setup helpers.
  • Split parity smoke into deterministic tiers (core vs environment-dependent).
  • Add lightweight unit coverage around shared shortcut guard predicates.

friuns added 3 commits April 21, 2026 07:51
This bundles parity-focused UX and shortcut behavior updates across app shell,
composer, and thread surfaces, plus expanded manual validation docs.
The goal is consistent desktop-like keybinding behavior, safer focus guards,
and discoverable in-thread search ergonomics.

Constraint: Keep existing UI architecture and avoid adding new dependencies
Rejected: Introduce a dedicated command palette modal | out of scope for parity patch
Rejected: Split into many tiny commits | requested as one PR-ready feature bundle
Confidence: medium
Scope-risk: moderate
Reversibility: clean
Directive: Keep shortcut guards aligned across editable and terminal-focus checks before adding new accelerators
Tested: Targeted Playwright shortcut assertions and parity report runs during implementation
Not-tested: Full deterministic end-to-end pass across all parity scripts in a clean, single-server session
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants