AprilNEA / AprilNEA/OpenLogi

macOS: ax_navigate_browser has no callers — and AXPress is the layout-proof BrowserBack

Open
#1,352 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
21k
Forks
675
Avg merge
2d 5h
Merged PRs (30d)
172

Description

### What

`openlogi_inject::ax_navigate_browser` (added in #363 for Safari) is never called anywhere in the workspace. The comments in `inject/macos.rs` ("Safari is handled upstream via ax_navigate_browser() with the PID captured at press time") and around the BrowserBack dispatch in `runtime.rs` still describe that upstream AX path, so the wiring looks orphaned by the plan-driven capture refactor (#419).

### Why it matters beyond dead code

`BrowserBack`/`BrowserForward` post a fixed US-ANSI chord (`kVK_ANSI_LeftBracket`). On layouts where the localized menu equivalent differs, the chord does nothing — confirmed on Spanish ISO in #1263's comments, where Safari's *History → Back* is ⌘Ñ. `AXPress` on the app's actual menu item — what this function was built to do — is layout-independent.

### Proposal

Either wire it back in as the primary macOS path for `BrowserBack`/`BrowserForward` (chord as fallback when AX fails), or delete the function and its comments. `.claude/rules/objc-ffi.md` already earmarks this code for `objc2-application-services` when touched.

Refs #363, #419, #1263

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing BrowserBack and BrowserForward in runtime.rs and the related comments and ax_navigate_browser implementation in inject/macos.rs; read .claude/rules/objc-ffi.md before changing the macOS FFI. The work is complete when the AXPress path is wired with the chord as fallback, or the orphaned function and comments are removed, and layout-dependent browser navigation is addressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, rust
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.