Skip to content

feat: add channel history buffer system#28

Merged
ctoth merged 3 commits into
MongooseMoo:masterfrom
distantorigin:output-buffers
Feb 22, 2026
Merged

feat: add channel history buffer system#28
ctoth merged 3 commits into
MongooseMoo:masterfrom
distantorigin:output-buffers

Conversation

@distantorigin

Copy link
Copy Markdown
Contributor

Summary

  • Add useChannelHistory hook that maintains per-channel message buffers in a Map<string, Buffer>, persisted to localStorage. Listens for GMCP Comm.Channel text events and general messages, auto-creating buffers for new channels.
  • Alt+Arrow and Alt+letter navigation for switching buffers and scrolling through messages. Alt+1-0 reads the Nth most recent message with relative timestamps. Alt+Space repeats, Alt+Shift+Space copies to clipboard.
  • Add NavigationKeyScheme type and KeyboardPreferences to PreferencesStore with a new Keyboard tab in the preferences dialog. Configurable schemes include Alt+JKLI, Alt+WASD, and Dvorak variants. Uses e.code fallback for macOS where Option+letter produces special characters.

Add NavigationKeyScheme type with JKLI, WASD, and Dvorak options.
Add Keyboard tab to preferences dialog with scheme selector dropdown.
Arrow keys always work in addition to the selected scheme.
Add useChannelHistory hook for managing per-channel message buffers
with Alt+Arrow/letter navigation, Alt+1-0 message reading, timestamps,
and clipboard support. Buffers persist to localStorage.
Prevent browser default actions for Alt+Arrow, Alt+letter (navigation
scheme keys), and Alt+Space in the input component so the channel
history keybindings work correctly. Uses e.code fallback for macOS
where Option+letter produces special characters.
@ctoth ctoth merged commit 48d85ad into MongooseMoo:master Feb 22, 2026
1 check passed
github-actions Bot pushed a commit that referenced this pull request Feb 22, 2026
Resolved conflicts in PreferencesStore.tsx (added SetKeyboard action
alongside existing SetHaptics) and preferences.tsx (added KeyboardTab
alongside existing HapticsTab). 48d85ad
ctoth added a commit that referenced this pull request Feb 22, 2026
Resolved conflicts in PreferencesStore.tsx (added SetKeyboard action
alongside existing SetHaptics) and preferences.tsx (added KeyboardTab
alongside existing HapticsTab).
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