This script enhances the OpenRouter chat interface with advanced navigation features including hotkeys, and message highlighting. It aims to address limitations of the default web chat experience on openrouter.ai/chat through improvements of the user interaction experience by making navigation more intuitive and efficient.
The script enhances navigation in the OpenRouter chat interface with features like:
- Highlighting messages
- Scrolling to the top or bottom of messages
- Expanding/collapsing message content
- Displaying a floating speaker indicator and a control panel
Features:
- Hotkey Navigation:
- Supports customizable modifier keys (`Alt`, `Ctrl`, or `None`) for navigation actions.
- Key bindings like `j`/`k` for moving to the next/previous message, `h`/`l` for expanding/collapsing messages, and `Home`/`End` for scrolling to the top/bottom of a message.
- The modifier key can be configured via a menu command.
- Message Highlighting:
- Highlights the currently active message with a visible outline and glow effect.
- Automatically updates the highlight based on scroll position (with anti-hysteresis to prevent flickering).
- Floating Speaker Indicator:
- Displays a floating panel at the top center showing the speaker's name and avatar when a message is highlighted.
- Enhances visibility of who is speaking without needing to scroll back to the message header.
- Floating Control Panel:
- Adds a fixed panel at the bottom-right with buttons for navigation (previous/next message, top/bottom scroll, expand/collapse).
- Can be toggled on/off via a menu command.
- Responsive design adjusts for smaller screens.
- Scroll Protections:
- Prevents unintended scrolling away from a message during editing or input actions (e.g., paste, cut).
- Locks scroll position to the active message for a short duration after edits.
- Expand/Collapse Handling:
- Robust handling of message expansion/collapse with scroll position restoration to maintain visual context.
- Prevents jarring jumps when toggling message visibility.
- Edit Scroll Lock:
- Ensures the scroll stays on the message being edited, preventing accidental navigation away during input.
- Persistent Settings:
- Uses `GM_setValue` and `GM_getValue` to save user preferences for modifier key and panel visibility.
- Menu Commands:
- Provides tampermonkey menu options to configure the modifier key and toggle the navigation panel.