feat: add line-by-line scrolling controls for messages

- Add "Line up" and "Line down" actions to session menu
- Add keybind configurations for messages_line_up and messages_line_down
- Enable precise one-line scrolling navigation in message view
This commit is contained in:
Nicholas Quezada 2025-12-12 18:37:30 -07:00
parent 7cb5a77ba6
commit 99b2bee027
2 changed files with 24 additions and 0 deletions

View file

@ -534,6 +534,28 @@ export function Session() {
dialog.clear()
},
},
{
title: "Line up",
value: "session.line.up",
keybind: "messages_line_up",
category: "Session",
disabled: true,
onSelect: (dialog) => {
scroll.scrollBy(-1)
dialog.clear()
},
},
{
title: "Line down",
value: "session.line.down",
keybind: "messages_line_down",
category: "Session",
disabled: true,
onSelect: (dialog) => {
scroll.scrollBy(1)
dialog.clear()
},
},
{
title: "First message",
value: "session.first",

View file

@ -448,6 +448,8 @@ export namespace Config {
messages_first: z.string().optional().default("ctrl+g,home").describe("Navigate to first message"),
messages_last: z.string().optional().default("ctrl+alt+g,end").describe("Navigate to last message"),
messages_last_user: z.string().optional().default("none").describe("Navigate to last user message"),
messages_line_up: z.string().optional().describe("Scroll messages up by one line"),
messages_line_down: z.string().optional().describe("Scroll messages down by one line"),
messages_copy: z.string().optional().default("<leader>y").describe("Copy message"),
messages_undo: z.string().optional().default("<leader>u").describe("Undo message"),
messages_redo: z.string().optional().default("<leader>r").describe("Redo message"),