From 40f14a4295eee960356598532d6fd8dcc97fec07 Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Mon, 5 Oct 2026 10:44:31 +0300 Subject: [PATCH] Added support for long choice dialogs (e.g. /model with more than 9 items) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude shows long menus as a scrolling window (rows prefixed with ↑/↓ and a "… +N models" line). The detector now parses such windows, and the new MenuEnumerator walks the menu with Down arrows (cyclically, returning the cursor to its original item) to collect every item. - Items 10 and above are selected with arrows + Enter, since a digit key selects immediately. - ChoiceMenuPanel wraps the options in a scroll pane whose maximum height is the new "Choice menu max height" setting (Tools -> Options -> Claude Code -> General, default 320 px); the scrollbar appears and disappears as the panel is resized. - Model discovery at startup and the model combo cover all models. - Docs and General settings screenshot updated. Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 1 + claude-launch-tests/test_long_choice_menu.py | 98 ++++++++++ docs/screenshots/settings-general.png | Bin 77465 -> 81485 bytes docs/user-manual.md | 3 + pom.xml | 2 +- .../controller/ClaudeSessionController.java | 125 ++++++++++++- .../claudecodegui/model/ChoiceMenuModel.java | 40 ++++- .../claudecodegui/process/MenuEnumerator.java | 169 ++++++++++++++++++ .../process/ModelMenuParser.java | 4 +- .../process/ScreenContentDetector.java | 32 +++- .../settings/ClaudeCodeOptionsPanel.java | 12 ++ .../settings/ClaudeCodePreferences.java | 29 +++ .../claudecodegui/ui/ChoiceMenuPanel.java | 71 +++++++- .../process/MenuEnumeratorTest.java | 126 +++++++++++++ .../process/ScreenContentDetectorTest.java | 6 + .../claudecodegui/ui/ChoiceMenuPanelTest.java | 45 +++++ .../model-scrolled-bottom.expectedRes.json | 28 +++ .../model-scrolled-bottom.src.txt | 15 ++ .../model-scrolled-middle.expectedRes.json | 28 +++ .../model-scrolled-middle.src.txt | 16 ++ .../model-scrolled-top.expectedRes.json | 28 +++ .../model-scrolled-top.src.txt | 16 ++ 22 files changed, 880 insertions(+), 14 deletions(-) create mode 100644 claude-launch-tests/test_long_choice_menu.py create mode 100644 src/main/java/io/github/nbplugins/claudecodegui/process/MenuEnumerator.java create mode 100644 src/test/java/io/github/nbplugins/claudecodegui/process/MenuEnumeratorTest.java create mode 100644 src/test/resources/io/github/nbplugins/claudecodegui/process/screen-content-detector/detect-choice-menu/model-scrolled-bottom.expectedRes.json create mode 100644 src/test/resources/io/github/nbplugins/claudecodegui/process/screen-content-detector/detect-choice-menu/model-scrolled-bottom.src.txt create mode 100644 src/test/resources/io/github/nbplugins/claudecodegui/process/screen-content-detector/detect-choice-menu/model-scrolled-middle.expectedRes.json create mode 100644 src/test/resources/io/github/nbplugins/claudecodegui/process/screen-content-detector/detect-choice-menu/model-scrolled-middle.src.txt create mode 100644 src/test/resources/io/github/nbplugins/claudecodegui/process/screen-content-detector/detect-choice-menu/model-scrolled-top.expectedRes.json create mode 100644 src/test/resources/io/github/nbplugins/claudecodegui/process/screen-content-detector/detect-choice-menu/model-scrolled-top.src.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 65b97bb..071057f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +- Added support for long choice dialogs (e.g. /model with more than 9 items): all items are listed with a scrollbar when the list is taller than the new "Choice menu max height" setting (Tools → Options → Claude Code → General, default 320 px), items 10 and above can be selected, and the model list at startup and the model combo include every model - Fixed the choice dialog (e.g. /model) endlessly flickering and resizing when not all menu items fit on screen # 1.3.20 (2026-10-04) diff --git a/claude-launch-tests/test_long_choice_menu.py b/claude-launch-tests/test_long_choice_menu.py new file mode 100644 index 0000000..536900f --- /dev/null +++ b/claude-launch-tests/test_long_choice_menu.py @@ -0,0 +1,98 @@ +""" +Hypotheses for long (scrolling) choice menus, using /model in a small terminal: + A. Down/Up arrows move the cursor and scroll the window. + B. Down on the last item wraps to the first one (cyclic navigation). + C. (observed manually) a digit key selects its item immediately -> two-digit numbers cannot be typed. + D. Arrow navigation + Enter selects the intended item (checked via cursor number only, Esc to cancel). + +Screens are rendered with pexpect's ANSI emulator and dumped. +""" +import os +import re +import sys +import time + +import pexpect +import pyte + +CLAUDE = os.environ.get('CLAUDE_BIN', '/usr/local/bin/claude') +ROWS, COLS = 16, 120 +DOWN, UP, ESC = '\x1b[B', '\x1b[A', '\x1b' +CURSOR = re.compile(r'❯\s*(\d+)\.') + + +class Term: + def __init__(self): + self.screen = pyte.Screen(COLS, ROWS) + self.stream = pyte.Stream(self.screen) + + +def pump(child, term, secs=0.6): + end = time.time() + secs + while time.time() < end: + try: + term.stream.feed(child.read_nonblocking(65536, timeout=0.1)) + except pexpect.TIMEOUT: + pass + + +def lines(term): + return [l.rstrip() for l in term.screen.display] + + +def cursor_num(screen): + for l in lines(screen): + m = CURSOR.search(l) + if m: + return int(m.group(1)) + return None + + +def dump(title, screen): + print(f'--- {title} ---') + for l in lines(screen): + if l.strip(): + print(l) + + +def main(): + child = pexpect.spawn(CLAUDE, cwd='/tmp', dimensions=(ROWS, COLS), encoding='utf-8', codec_errors='replace', + env=dict(os.environ, TERM='xterm-256color')) + screen = Term() + pump(child, screen, 12) + time.sleep(1.5) + child.send('/model'); pump(child, screen, 0.3) + child.send(ESC); pump(child, screen, 0.3) + child.send('\r'); pump(child, screen, 1.5) + dump('menu opened', screen) + start = cursor_num(screen) + ok = True + + # A: scrolling downward + seen = [start] + for _ in range(14): + child.send(DOWN); pump(child, screen, 0.25) + seen.append(cursor_num(screen)) + dump('after 14 Down', screen) + print('cursor sequence on Down:', seen) + + # B: wrap-around is visible in the sequence (max -> 1) + nums = [n for n in seen if n] + wrapped = any(b < a for a, b in zip(nums, nums[1:])) + print('B wrap-around on Down:', wrapped) + + # D: Up navigation + child.send(UP); pump(child, screen, 0.3) + print('cursor after one Up:', cursor_num(screen)) + + # C (not automated): a digit selects immediately and SAVES the model as default, + # so '10' cannot be typed - observed manually: '1' applied item 1 at once. + + child.send(ESC); pump(child, screen, 0.5) + child.close(force=True) + print('RESULT: scrolling=%s wrap=%s' % (len(set(nums)) > 1, wrapped)) + return 0 if len(set(nums)) > 1 else 1 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/docs/screenshots/settings-general.png b/docs/screenshots/settings-general.png index 3e47a6828b4248e1765f37837a7f9cb442523755..a298f87e73cad2168496008d812a584ffe2e3f06 100644 GIT binary patch literal 81485 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

$m&&+F2Ji>{-`PEzr(| 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 DaNq@+ diff --git a/docs/user-manual.md b/docs/user-manual.md index 292dcb3..330ba37 100644 --- a/docs/user-manual.md +++ b/docs/user-manual.md @@ -272,6 +272,8 @@ Claude Code sometimes presents interactive prompts (Yes/No or multiple choice). **Other options** appear as radio buttons. Some options may include a text field for additional input. Click the desired option (and optionally fill in the text field), then press **Enter** or click **Send** to submit. Press **Escape** to cancel. +**Long menus.** When Claude shows only part of a long list (e.g. `/model` with more than a handful of models), the plugin scrolls through the whole list once to collect every item, then shows them all. If the list is taller than **Choice menu max height** (see [Settings](#11-settings)), the option list gets a scrollbar. Items numbered 10 and above are selected by moving Claude's cursor with the arrow keys, so every item can be chosen. + After submitting or cancelling, the input area is restored automatically. **Note:** If the choice panel does not appear when Claude asks a question, or appears unexpectedly without a question — click into the terminal area and interact with Claude directly. The panel will disappear automatically once Claude's state changes. @@ -383,6 +385,7 @@ Open **Tools → Options → Claude Code** in NetBeans. | Automatically open Plan Preview tab when Claude writes a plan | On | When enabled, a live Markdown Preview tab opens automatically as soon as the user clicks Allow in a diff panel for a file in a `plans/` directory. | | Markdown preview dock position | Right side | Where the Markdown Preview tab is docked when first opened. Choices: Editor area, Right side, Left side top, Left side bottom, Bottom dock. | | Choice menu focus | Grab focus | Controls whether the choice menu panel grabs keyboard focus when it appears. Choices: Grab focus, Show without grabbing focus, Hide menu. | +| Choice menu max height (px) | 320 | Maximum height of the option list in the choice menu panel (100–2000). Longer lists (e.g. `/model` with many models) get a scrollbar; the scrollbar also appears or disappears by itself when you resize the panel by dragging the divider. | | Terminal font | Auto | Font used in the embedded terminal. Click **Choose…** to open the font picker. The label shows the resolved font name (e.g. `Adwaita Mono, 14 (Auto)` when auto-detection is active, or `Monospaced, 14` when set explicitly). | #### Terminal font picker diff --git a/pom.xml b/pom.xml index 63d2ccb..887e825 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.nbplugins netbeans-plugin-claude-code-gui - 1.3.39-SNAPSHOT + 1.3.42-SNAPSHOT nbm Netbeans Plugin Claude Code GUI NetBeans plugin that provides a GUI for Claude Code CLI — run claude code sessions directly inside the IDE. diff --git a/src/main/java/io/github/nbplugins/claudecodegui/controller/ClaudeSessionController.java b/src/main/java/io/github/nbplugins/claudecodegui/controller/ClaudeSessionController.java index ae40e52..ce072f9 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/controller/ClaudeSessionController.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/controller/ClaudeSessionController.java @@ -11,6 +11,7 @@ import io.github.nbplugins.claudecodegui.model.SessionMode; import io.github.nbplugins.claudecodegui.process.ClaudeProcess; import io.github.nbplugins.claudecodegui.process.ClaudeSessionStore; +import io.github.nbplugins.claudecodegui.process.MenuEnumerator; import io.github.nbplugins.claudecodegui.process.ModelMenuParser; import io.github.nbplugins.claudecodegui.process.PtyTtyConnector; import io.github.nbplugins.claudecodegui.process.ScreenContentDetector; @@ -61,6 +62,10 @@ public class ClaudeSessionController { /** DEL character (0x7F) — acts as BackSpace in xterm-256color terminals. */ private static final byte[] PTY_BACKSPACE = {0x7f}; + private static final byte[] PTY_ARROW_UP = {0x1b, '[', 'A'}; + private static final byte[] PTY_ARROW_DOWN = {0x1b, '[', 'B'}; + /** Pause after an arrow key before the screen is read while enumerating a scrolling menu. */ + private static final long MENU_ENUMERATION_SETTLE_MS = 120; private static final int MAX_MODEL_DISCOVERY_ATTEMPTS = 1; @@ -124,6 +129,8 @@ public class ClaudeSessionController { /** {@code true} while the model-discovery or model-switch background thread is running. */ private volatile boolean modelDiscoveryInProgress = false; + /** True while {@link MenuEnumerator} walks the cursor through a scrolling menu. */ + private volatile boolean menuEnumerationInProgress = false; /** Number of model-discovery attempts made since the last session start. */ private int modelDiscoveryAttempts = 0; @@ -645,6 +652,13 @@ public void writePtyAnswer(String answer) { t.setDaemon(true); t.start(); } + } else if (answer.matches("[0-9]{2,}") && menuCursorNumber(current) > 0) { + // Items 10+ cannot be typed (a digit selects immediately): move the PTY + // cursor onto the item with arrow keys, then Enter. + int delta = Integer.parseInt(answer) - menuCursorNumber(current); + LOG.fine("[PTY write] ARROW-number answer=" + answer + " delta=" + delta); + clearActiveChoiceMenu(); + sendArrowsThenEnter(delta, "pty-arrow-number"); } else { boolean isMenuDigit = answer.matches("[0-9]"); String toWrite = isMenuDigit ? answer : answer + "\r"; @@ -658,6 +672,33 @@ public void writePtyAnswer(String answer) { } } + /** Menu number under the PTY cursor according to {@code menu}, or 0 if unknown. */ + private int menuCursorNumber(ChoiceMenuModel menu) { + if (menu != null && menu.cursorNumber() > 0) return menu.cursorNumber(); + ChoiceMenuModel active = model.getActiveChoiceMenu(); + return active != null ? active.cursorNumber() : 0; + } + + /** Presses Down (delta > 0) or Up (delta < 0) {@code |delta|} times, then Enter, on a daemon thread. */ + private void sendArrowsThenEnter(int delta, String threadName) { + Thread t = new Thread(() -> { + try { + byte[] arrow = delta < 0 ? PTY_ARROW_UP : PTY_ARROW_DOWN; + for (int i = 0; i < Math.abs(delta); i++) { + connector.write(arrow); + Thread.sleep(80); + } + connector.write("\r"); + } catch (IOException ex) { + LOG.warning(threadName + " write failed: " + ex.getMessage()); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } + }, threadName); + t.setDaemon(true); + t.start(); + } + /** * Computes which checkbox option responses must be toggled in the PTY to reach * {@code desired} from the current states in {@code currentOptions}. @@ -910,7 +951,24 @@ public void switchModel(int index) { Thread t = new Thread(() -> { try { openModelMenu(); - connector.write(String.valueOf(index + 1)); + if (index < 9) { + connector.write(String.valueOf(index + 1)); + } else { + // Items 10+ cannot be typed: move the cursor onto the item, then Enter. + int cursor = waitForModelMenuCursor(); + if (cursor > 0) { + int delta = index + 1 - cursor; + byte[] arrow = delta < 0 ? PTY_ARROW_UP : PTY_ARROW_DOWN; + for (int i = 0; i < Math.abs(delta); i++) { + connector.write(arrow); + Thread.sleep(80); + } + connector.write("\r"); + } else { + LOG.warning("model switch: /model menu not visible, cannot select item " + (index + 1)); + connector.write(PTY_ESC); + } + } Thread.sleep(500); } catch (IOException | InterruptedException ex) { LOG.warning("model switch failed: " + ex.getMessage()); @@ -928,6 +986,16 @@ public void switchModel(int index) { // Model discovery // ------------------------------------------------------------------------- + /** Waits (up to ~3 s) for the {@code /model} menu and returns the number under the cursor, or 0. */ + private int waitForModelMenuCursor() throws InterruptedException { + for (int i = 0; i < 20; i++) { + Optional m = screenContentDetector.detectChoiceMenu(screenLines.get()); + if (m.isPresent() && m.get().cursorNumber() > 0) return m.get().cursorNumber(); + Thread.sleep(150); + } + return 0; + } + /** * Opens the {@code /model} selection menu, parses the screen, and populates * the model list in {@link ClaudeSessionModel}. @@ -987,6 +1055,14 @@ void discoverModels() { } } + // A long menu shows only a window of the models: walk the cursor through the + // whole list (and back) so the combo gets every model, not just the visible ones. + if (menuOpt.isPresent() && menuOpt.get().scrollable()) { + ChoiceMenuModel full = newMenuEnumerator().enumerate(menuOpt.get()); + menuOpt = Optional.of(full); + lines = MenuEnumerator.toScreenLines(full); + } + // Scan the rolling PTY line buffer for the /model hint line, which is // shorter and never truncated (e.g. "/model … (currently anthropic/claude-sonnet-4.6)"). String hintCurrentModel = null; @@ -1134,7 +1210,7 @@ void pollScreenState() { // (e.g. thinking spinner keeps PTY active and prevents the 400 ms silence). // Also clear stale menu when it disappears from screen — flushPendingPrompt // may never fire if the spinner continuously restarts promptFlushTimer. - if (!modelDiscoveryInProgress) { + if (!modelDiscoveryInProgress && !menuEnumerationInProgress) { Optional menuOpt = screenContentDetector.detectChoiceMenu(lines); if (menuOpt.isPresent()) { applyDetectedChoiceMenu(menuOpt.get(), "[pollScreenState] "); @@ -1274,7 +1350,7 @@ private void detectAndApplyInitialEditMode(List lines) { */ void flushPendingPrompt() { LOG.fine("[flushPendingPrompt] enter, modelDiscoveryInProgress=" + modelDiscoveryInProgress); - if (modelDiscoveryInProgress) return; + if (modelDiscoveryInProgress || menuEnumerationInProgress) return; Optional req = Optional.empty(); List lines = screenLines.get(); @@ -1335,7 +1411,7 @@ void flushPendingPrompt() { req.ifPresent(r -> { LOG.fine("[screen prompt flush] setting choice menu: \"" + r.text() + "\" | options=" + r.options()); - model.setActiveChoiceMenu(r); + showChoiceMenu(r); }); } @@ -1430,12 +1506,51 @@ private void applyDetectedEditMode(Optional detected) { } } + /** + * Shows {@code menu} in the choice panel. A scrolling menu (only a window of a longer + * list is on screen) is first completed on a daemon thread by {@link MenuEnumerator}, + * which walks the PTY cursor through the whole list and back; the poll timers are + * suppressed meanwhile, and the panel is shown only once the full list is known. + */ + private void showChoiceMenu(ChoiceMenuModel menu) { + if (!menu.scrollable() || connector == null || menuEnumerationInProgress) { + model.setActiveChoiceMenu(menu); + return; + } + menuEnumerationInProgress = true; + Thread t = new Thread(() -> { + ChoiceMenuModel full = menu; + try { + full = newMenuEnumerator().enumerate(menu); + } catch (IOException ex) { + LOG.warning("menu enumeration failed: " + ex.getMessage()); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } finally { + final ChoiceMenuModel result = full; + SwingUtilities.invokeLater(() -> { + menuEnumerationInProgress = false; + if (model.getActiveChoiceMenu() == null) model.setActiveChoiceMenu(result); + }); + } + }, "claude-menu-enumeration"); + t.setDaemon(true); + t.start(); + } + + private MenuEnumerator newMenuEnumerator() { + return new MenuEnumerator(screenContentDetector, screenLines, new MenuEnumerator.Keys() { + @Override public void down() throws IOException { connector.write(PTY_ARROW_DOWN); } + @Override public void up() throws IOException { connector.write(PTY_ARROW_UP); } + }, Thread::sleep, MENU_ENUMERATION_SETTLE_MS); + } + private void applyDetectedChoiceMenu(ChoiceMenuModel newMenu, String logTag) { ChoiceMenuModel current = model.getActiveChoiceMenu(); if (current == null) { pendingChoiceMenuCandidate = null; LOG.fine(logTag + "setting choice menu: \"" + newMenu.text() + "\""); - model.setActiveChoiceMenu(newMenu); + showChoiceMenu(newMenu); return; } if (sameMenu(newMenu, current) || isShrunkViewOf(newMenu, current)) { diff --git a/src/main/java/io/github/nbplugins/claudecodegui/model/ChoiceMenuModel.java b/src/main/java/io/github/nbplugins/claudecodegui/model/ChoiceMenuModel.java index 9351f5c..1ec544c 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/model/ChoiceMenuModel.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/model/ChoiceMenuModel.java @@ -102,6 +102,12 @@ public Option(String display, String response, String description, boolean check private final List

Claude draws only as many items as fit the terminal. The cursor is moved down one item + * at a time (Claude's menus wrap from the last item to the first), each window is merged by + * item number, and the walk stops when the cursor is back on the item it started on — so the + * menu is left exactly as it was found. If the menu does not wrap, the cursor is walked to + * both ends and back instead. + */ +public final class MenuEnumerator { + + private static final Logger LOG = Logger.getLogger(MenuEnumerator.class.getName()); + + /** Upper bound on key presses, so a misbehaving menu can never loop forever. */ + static final int MAX_STEPS = 300; + private static final int READ_RETRIES = 6; + + /** Sends cursor-movement keys to Claude. */ + public interface Keys { + void down() throws IOException, InterruptedException; + void up() throws IOException, InterruptedException; + } + + /** Pause between a key press and reading the screen. */ + public interface Pause { + void sleep(long millis) throws InterruptedException; + } + + private final ScreenContentDetector detector; + private final Supplier> screen; + private final Keys keys; + private final Pause pause; + private final long settleMs; + + /** + * Creates an enumerator. + * + * @param detector detector used to parse each window + * @param screen supplies the current screen lines + * @param keys sends arrow keys + * @param pause sleeps for the given time (injectable for tests) + * @param settleMs time to wait after a key press before reading the screen + */ + public MenuEnumerator(ScreenContentDetector detector, Supplier> screen, + Keys keys, Pause pause, long settleMs) { + this.detector = detector; + this.screen = screen; + this.keys = keys; + this.pause = pause; + this.settleMs = settleMs; + } + + /** + * Returns the complete menu for a scrollable {@code initial} window, with the cursor left on + * the item it was on. A menu that is not scrollable, or whose cursor cannot be tracked, is + * returned unchanged. + * + * @param initial the window currently shown on screen + * @return the merged menu + * @throws IOException if a key cannot be written + * @throws InterruptedException if the thread is interrupted + */ + public ChoiceMenuModel enumerate(ChoiceMenuModel initial) throws IOException, InterruptedException { + int start = initial.cursorNumber(); + if (!initial.scrollable() || start <= 0) return initial; + + TreeMap byNumber = new TreeMap<>(); + merge(byNumber, initial); + + int steps = 0; + int prev = start; + boolean wraps = true; + while (steps++ < MAX_STEPS) { + keys.down(); + ChoiceMenuModel w = readWindow(); + if (w == null) return finish(initial, byNumber, start); + merge(byNumber, w); + int cur = w.cursorNumber(); + if (cur == start) return finish(initial, byNumber, start); + if (cur == prev) { + wraps = false; + break; + } + prev = cur; + } + if (!wraps) { + // No wrap-around: walk to the top, merging, then back down to the start item. + prev = -1; + while (steps++ < MAX_STEPS) { + keys.up(); + ChoiceMenuModel w = readWindow(); + if (w == null) return finish(initial, byNumber, start); + merge(byNumber, w); + if (w.cursorNumber() == prev) break; + prev = w.cursorNumber(); + } + while (steps++ < MAX_STEPS) { + ChoiceMenuModel w = readWindow(); + if (w == null || w.cursorNumber() == start) break; + if (w.cursorNumber() > start) { + keys.up(); + } else { + keys.down(); + } + } + } + return finish(initial, byNumber, start); + } + + /** Reads the window after a key press; {@code null} if no menu with a cursor is visible. */ + private ChoiceMenuModel readWindow() throws InterruptedException { + for (int i = 0; i < READ_RETRIES; i++) { + pause.sleep(settleMs); + Optional m = detector.detectChoiceMenu(screen.get()); + if (m.isPresent() && m.get().cursorNumber() > 0) return m.get(); + } + LOG.fine("[MenuEnumerator] menu not readable, giving up"); + return null; + } + + private static void merge(TreeMap byNumber, ChoiceMenuModel window) { + for (ChoiceMenuModel.Option o : window.options()) { + try { + byNumber.put(Integer.parseInt(o.response()), o); + } catch (NumberFormatException ignored) { + // not a numbered item + } + } + } + + private static ChoiceMenuModel finish(ChoiceMenuModel initial, + TreeMap byNumber, int start) { + List options = new ArrayList<>(byNumber.values()); + int idx = 0; + for (int i = 0; i < options.size(); i++) { + if (options.get(i).response().equals(String.valueOf(start))) idx = i; + } + LOG.fine("[MenuEnumerator] enumerated " + options.size() + " items, cursor=" + start); + return new ChoiceMenuModel(initial.text(), options, idx, true, start); + } + + /** + * Renders a numbered menu as screen lines ({@code ❯ 3. Sonnet 5.5 …}), so line-based + * parsers such as {@link ModelMenuParser} can read the merged list. + * + * @param menu the menu + * @return one line per option + */ + public static List toScreenLines(ChoiceMenuModel menu) { + List lines = new ArrayList<>(); + for (ChoiceMenuModel.Option o : menu.options()) { + boolean cursor = o.response().equals(String.valueOf(menu.cursorNumber())); + lines.add((cursor ? "❯ " : " ") + o.response() + ". " + o.display()); + } + return lines; + } +} diff --git a/src/main/java/io/github/nbplugins/claudecodegui/process/ModelMenuParser.java b/src/main/java/io/github/nbplugins/claudecodegui/process/ModelMenuParser.java index 2eee8cd..5b4204d 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/process/ModelMenuParser.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/process/ModelMenuParser.java @@ -66,9 +66,9 @@ public ModelDiscovery parse(List lines) { int currentIndex = -1; for (String line : lines) { - boolean hasCursor = line.trim().matches("^[❯▶>].*"); + boolean hasCursor = line.trim().matches("^[❯▶>↑↓].*"); boolean hasCheck = line.contains("\u2714"); - String trimmed = line.trim().replaceFirst("^[❯▶>]\\s*", "").trim(); + String trimmed = line.trim().replaceFirst("^[❯▶>↑↓]\\s*", "").trim(); // Numbered format: "N. ..." if (trimmed.matches("^\\d+\\..*")) { diff --git a/src/main/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetector.java b/src/main/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetector.java index 0b078d9..1c95966 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetector.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetector.java @@ -48,7 +48,14 @@ public void setSessionTag(String tag) { * Leading whitespace is allowed (produced by ESC[1C cursor-forward expansion). */ private static final Pattern OPTION_LINE = - Pattern.compile("^\\s*(\u276F|\u25B6|>)?\\s*\\d+\\.\\s*.+"); + Pattern.compile("^\\s*(\u276F|\u25B6|>|\u2191|\u2193)?\\s*\\d+\\.\\s*.+"); + + /** + * Matches the "hidden items" line of a scrolling menu, e.g. {@code … +7 models} + * (also {@code ... +7 models}). + */ + private static final Pattern HIDDEN_ITEMS_LINE = + Pattern.compile("^(\u2026|\\.\\.\\.)\\s*\\+\\d+\\s+\\S.*"); /** Matches an option line that carries the Ink cursor glyph (selected item). */ private static final Pattern CURSOR_LINE = @@ -186,6 +193,7 @@ public Optional detectChoiceMenu(List screenLines) { String line = raw.trim(); if (line.isBlank()) break; if (OPTION_LINE.matcher(line).matches()) break; + if (HIDDEN_ITEMS_LINE.matcher(line).matches()) break; // Skip keyboard-hint lines; "shift+tab to approve" also marks the option // as requiring free-text input (hasTextInput=true). if (isHintLine(line)) { @@ -246,9 +254,11 @@ public Optional detectChoiceMenu(List screenLines) { // currently-selected option. Numbered lists in Claude's own output never have // a cursor, so requiring one eliminates false positives entirely. boolean hasCursor = false; + int cursorNumber = 0; for (int i = firstOptionRow; i <= lastOptionRow; i++) { if (CURSOR_LINE.matcher(screenLines.get(i).trim()).matches()) { hasCursor = true; + cursorNumber = parseOptionNumber(screenLines.get(i).trim()); break; } } @@ -281,7 +291,23 @@ public Optional detectChoiceMenu(List screenLines) { } LOG.fine(tag + "[ScreenContentDetector] detected prompt: \"" + question + "\" options=" + options); - return Optional.of(new ChoiceMenuModel(question, options, 0)); + // Scrolling menu: Claude marks hidden items with a leading ↑ / ↓ on the edge option + // and/or a "… +N models" line below the list. + boolean scrollable = screenLines.get(firstOptionRow).trim().startsWith("\u2191") + || screenLines.get(lastOptionRow).trim().startsWith("\u2193"); + for (int i = lastOptionRow + 1; !scrollable && i < Math.min(lastOptionRow + 4, screenLines.size()); i++) { + if (HIDDEN_ITEMS_LINE.matcher(screenLines.get(i).trim()).matches()) scrollable = true; + } + return Optional.of(new ChoiceMenuModel(question, options, 0, scrollable, cursorNumber)); + } + + /** Returns the menu number of a trimmed option line, or 0 if it cannot be parsed. */ + static int parseOptionNumber(String trimmedOptionLine) { + try { + return Integer.parseInt(extractOption(trimmedOptionLine, 0).response()); + } catch (NumberFormatException e) { + return 0; + } } // ------------------------------------------------------------------------- @@ -750,7 +776,7 @@ static List bottomNonBlankLines(List lines, int n) { static ChoiceMenuModel.Option extractOption(String line, int index) { // Skip cursor glyph if present String working = line; - if (!working.isEmpty() && "\u276F\u25B6>".indexOf(working.charAt(0)) >= 0) { + if (!working.isEmpty() && "\u276F\u25B6>\u2191\u2193".indexOf(working.charAt(0)) >= 0) { working = working.substring(1).stripLeading(); } int dotPos = working.indexOf('.'); diff --git a/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodeOptionsPanel.java b/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodeOptionsPanel.java index 17f123e..02b57a6 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodeOptionsPanel.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodeOptionsPanel.java @@ -85,6 +85,7 @@ public final class ClaudeCodeOptionsPanel extends JPanel { private javax.swing.JCheckBox startNewSessionCheck; /** Spinner for the maximum number of sessions shown in the session list. */ private JSpinner sessionListLimitSpinner; + private JSpinner choiceMenuMaxHeightSpinner; /** Dropdown for the dock position of the Claude Code session tab. */ private javax.swing.JComboBox dockModeCombo; /** Dropdown for the dock position of the Markdown Preview tab. */ @@ -275,6 +276,15 @@ public java.awt.Component getListCellRendererComponent( form.add(choiceMenuFocusCombo, gbc(1, row, false)); row++; + // --- choice menu max height --- + form.add(new JLabel("Choice menu max height (px):"), gbc(0, row, false)); + choiceMenuMaxHeightSpinner = new JSpinner(new SpinnerNumberModel( + ClaudeCodePreferences.DEFAULT_CHOICE_MENU_MAX_HEIGHT, 100, 2000, 20)); + choiceMenuMaxHeightSpinner.setToolTipText( + "Option lists of a choice dialog (e.g. /model) taller than this get a scrollbar"); + form.add(choiceMenuMaxHeightSpinner, gbc(1, row, false)); + row++; + // --- terminal font --- form.add(new JLabel("Terminal font:"), gbc(0, row, false)); terminalFontLabel = new JLabel(); @@ -480,6 +490,7 @@ void load() { ClaudeCodePreferences.getContextMenuSessionMode() == io.github.nbplugins.claudecodegui.model.SessionMode.NEW); sessionListLimitSpinner.setValue(ClaudeCodePreferences.getSessionListLimit()); + choiceMenuMaxHeightSpinner.setValue(ClaudeCodePreferences.getChoiceMenuMaxHeight()); dockModeCombo.setSelectedIndex(ClaudeCodePreferences.getSessionDockMode().ordinal()); mdPreviewDockModeCombo.setSelectedIndex( ClaudeCodePreferences.getMarkdownPreviewDockMode().ordinal()); @@ -528,6 +539,7 @@ void store() { ? io.github.nbplugins.claudecodegui.model.SessionMode.NEW : io.github.nbplugins.claudecodegui.model.SessionMode.CONTINUE_LAST); ClaudeCodePreferences.setSessionListLimit((Integer) sessionListLimitSpinner.getValue()); + ClaudeCodePreferences.setChoiceMenuMaxHeight((Integer) choiceMenuMaxHeightSpinner.getValue()); ClaudeCodePreferences.setSessionDockMode(dockModeFromCombo(dockModeCombo)); ClaudeCodePreferences.setMarkdownPreviewDockMode(dockModeFromCombo(mdPreviewDockModeCombo)); ClaudeCodePreferences.setFileDiffDockMode(dockModeFromCombo(fileDiffDockModeCombo)); diff --git a/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodePreferences.java b/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodePreferences.java index 5ec2004..6736f6b 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodePreferences.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/settings/ClaudeCodePreferences.java @@ -544,6 +544,35 @@ public static void setSessionListLimit(int v) { .putInt(KEY_SESSION_LIST_LIMIT, Math.max(1, Math.min(500, v))); } + // ------------------------------------------------------------------------- + // choiceMenuMaxHeight + // ------------------------------------------------------------------------- + + /** Preference key: maximum height (pixels) of the choice-menu option list before it scrolls. */ + public static final String KEY_CHOICE_MENU_MAX_HEIGHT = "choiceMenuMaxHeight"; + /** Default: 320 pixels. */ + public static final int DEFAULT_CHOICE_MENU_MAX_HEIGHT = 320; + + /** + * Returns the maximum height of the choice-menu option list; a longer list gets a scrollbar. + * + * @return height in pixels (100–2000) + */ + public static int getChoiceMenuMaxHeight() { + return NbPreferences.forModule(ClaudeCodePreferences.class) + .getInt(KEY_CHOICE_MENU_MAX_HEIGHT, DEFAULT_CHOICE_MENU_MAX_HEIGHT); + } + + /** + * Persists the maximum height of the choice-menu option list. + * + * @param v height in pixels; clamped to [100, 2000] + */ + public static void setChoiceMenuMaxHeight(int v) { + NbPreferences.forModule(ClaudeCodePreferences.class) + .putInt(KEY_CHOICE_MENU_MAX_HEIGHT, Math.max(100, Math.min(2000, v))); + } + // ------------------------------------------------------------------------- // hangTimeoutSeconds // ------------------------------------------------------------------------- diff --git a/src/main/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanel.java b/src/main/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanel.java index 1f6af41..2b28eea 100644 --- a/src/main/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanel.java +++ b/src/main/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanel.java @@ -1,10 +1,12 @@ package io.github.nbplugins.claudecodegui.ui; import io.github.nbplugins.claudecodegui.model.ChoiceMenuModel; +import io.github.nbplugins.claudecodegui.settings.ClaudeCodePreferences; import io.github.nbplugins.claudecodegui.ui.common.DecoratedTextField; import io.github.nbplugins.claudecodegui.ui.common.UiUtils; import java.awt.Color; import java.awt.Component; +import java.awt.Dimension; import java.awt.event.KeyEvent; import java.util.List; import java.util.function.Consumer; @@ -21,8 +23,11 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; +import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.KeyStroke; +import javax.swing.ScrollPaneConstants; +import javax.swing.SwingUtilities; /** * A panel that appears when claude asks an interactive question. @@ -400,12 +405,28 @@ public void keyPressed(java.awt.event.KeyEvent e) { JPanel mainRow = new JPanel(); mainRow.setLayout(new BoxLayout(mainRow, BoxLayout.X_AXIS)); mainRow.setAlignmentX(Component.LEFT_ALIGNMENT); - mainRow.add(leftCol); - mainRow.add(Box.createHorizontalGlue()); + mainRow.add(new OptionScrollPane(leftCol, maxOptionsHeight())); mainRow.add(rightCol); add(mainRow); + // Long option lists scroll: keep the selected / focused option in view. + final JComponent initiallySelected = defaultRadioBtn; + if (initiallySelected != null) { + SwingUtilities.invokeLater(() -> leftCol.scrollRectToVisible(initiallySelected.getBounds())); + } + java.awt.event.FocusAdapter keepVisible = new java.awt.event.FocusAdapter() { + @Override public void focusGained(java.awt.event.FocusEvent e) { + leftCol.scrollRectToVisible(((Component) e.getSource()).getBounds()); + } + }; + for (JRadioButton rb : radioButtons) { + if (rb != null) rb.addFocusListener(keepVisible); + } + for (JCheckBox cb : checkBoxes) { + if (cb != null) cb.addFocusListener(keepVisible); + } + // ESC → cancel from anywhere in the panel getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel"); @@ -822,6 +843,52 @@ public void dismiss() { // ------------------------------------------------------------------------- + /** Maximum height of the option list before it scrolls (Tools → Options → General). */ + private static int maxOptionsHeight() { + try { + return ClaudeCodePreferences.getChoiceMenuMaxHeight(); + } catch (RuntimeException | LinkageError e) { + return ClaudeCodePreferences.DEFAULT_CHOICE_MENU_MAX_HEIGHT; + } + } + + /** + * Scroll pane whose preferred height is the content height capped at {@code maxHeight}. + * The scrollbar is shown only while the pane is actually shorter than its content, so it + * appears and disappears by itself when the user resizes the panel. + */ + private static final class OptionScrollPane extends JScrollPane { + private final int maxHeight; + + OptionScrollPane(JComponent view, int maxHeight) { + super(view, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + this.maxHeight = maxHeight; + setBorder(null); + setAlignmentY(Component.TOP_ALIGNMENT); + getVerticalScrollBar().setUnitIncrement(16); + } + + @Override + public Dimension getPreferredSize() { + Dimension v = getViewport().getView().getPreferredSize(); + boolean capped = v.height > maxHeight; + int width = v.width + (capped ? getVerticalScrollBar().getPreferredSize().width : 0); + return new Dimension(width, Math.min(v.height, maxHeight)); + } + + /** Stretches horizontally up to the buttons on the right, so the scrollbar sits next to them. */ + @Override + public Dimension getMaximumSize() { + return new Dimension(Integer.MAX_VALUE, getPreferredSize().height); + } + + @Override + public Dimension getMinimumSize() { + return new Dimension(getPreferredSize().width, Math.min(getPreferredSize().height, 48)); + } + } + private void submitAnswer(String answer) { Consumer cb = callback; LOG.info("[ChoiceMenuPanel] submitAnswer: \"" + answer + "\", cb=" + cb); diff --git a/src/test/java/io/github/nbplugins/claudecodegui/process/MenuEnumeratorTest.java b/src/test/java/io/github/nbplugins/claudecodegui/process/MenuEnumeratorTest.java new file mode 100644 index 0000000..3de9f3d --- /dev/null +++ b/src/test/java/io/github/nbplugins/claudecodegui/process/MenuEnumeratorTest.java @@ -0,0 +1,126 @@ +package io.github.nbplugins.claudecodegui.process; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import io.github.nbplugins.claudecodegui.model.ChoiceMenuModel; +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.Test; + +class MenuEnumeratorTest { + + /** Simulates Claude's scrolling /model menu. */ + static final class FakeMenu { + final int n; + final int window; + final boolean wraps; + int cursor; + int top = 1; + + FakeMenu(int n, int window, boolean wraps, int cursor) { + this.n = n; + this.window = window; + this.wraps = wraps; + this.cursor = cursor; + scroll(); + } + + void down() { + if (cursor < n) cursor++; + else if (wraps) cursor = 1; + scroll(); + } + + void up() { + if (cursor > 1) cursor--; + else if (wraps) cursor = n; + scroll(); + } + + private void scroll() { + if (cursor < top) top = cursor; + if (cursor > top + window - 1) top = cursor - window + 1; + } + + List screen() { + List l = new ArrayList<>(); + l.add("─".repeat(60)); + l.add(" Select model"); + l.add(" Switch between Claude models."); + l.add(""); + int bottom = Math.min(n, top + window - 1); + for (int i = top; i <= bottom; i++) { + String glyph = i == cursor ? "❯" : (i == top && top > 1 ? "↑" : (i == bottom && bottom < n ? "↓" : " ")); + l.add(" " + glyph + " " + i + ". Model " + i + " Description " + i); + } + if (bottom < n) l.add(" … +" + (n - bottom) + " models"); + l.add(""); + l.add(" Enter to set as default · s to use this session only · Esc to cancel"); + return l; + } + } + + private static ChoiceMenuModel enumerate(FakeMenu m, int[] keyCount) throws Exception { + ScreenContentDetector det = new ScreenContentDetector(); + ChoiceMenuModel initial = det.detectChoiceMenu(m.screen()).orElseThrow(); + MenuEnumerator e = new MenuEnumerator(det, m::screen, new MenuEnumerator.Keys() { + public void down() { m.down(); keyCount[0]++; } + public void up() { m.up(); keyCount[0]++; } + }, ms -> { }, 0); + return e.enumerate(initial); + } + + @Test + void wrappingMenuIsEnumeratedAndCursorRestored() throws Exception { + FakeMenu m = new FakeMenu(12, 3, true, 5); + int[] keys = {0}; + ChoiceMenuModel full = enumerate(m, keys); + assertEquals(12, full.options().size()); + assertEquals("1", full.options().get(0).response()); + assertEquals("12", full.options().get(11).response()); + assertEquals(5, m.cursor, "cursor must be back on the starting item"); + assertEquals(12, keys[0], "one full cycle"); + assertEquals(5, full.cursorNumber()); + assertEquals(4, full.defaultOptionIndex()); + assertTrue(full.scrollable()); + } + + @Test + void nonWrappingMenuIsEnumeratedAndCursorRestored() throws Exception { + FakeMenu m = new FakeMenu(12, 3, false, 6); + ChoiceMenuModel full = enumerate(m, new int[]{0}); + assertEquals(12, full.options().size()); + assertEquals(6, m.cursor); + } + + @Test + void cursorAtLastItemWraps() throws Exception { + FakeMenu m = new FakeMenu(12, 4, true, 12); + ChoiceMenuModel full = enumerate(m, new int[]{0}); + assertEquals(12, full.options().size()); + assertEquals(12, m.cursor); + } + + @Test + void shortMenuIsReturnedUnchanged() throws Exception { + FakeMenu m = new FakeMenu(3, 5, true, 2); + ScreenContentDetector det = new ScreenContentDetector(); + ChoiceMenuModel initial = det.detectChoiceMenu(m.screen()).orElseThrow(); + assertFalse(initial.scrollable()); + int[] keys = {0}; + assertEquals(initial.options(), enumerate(m, keys).options()); + assertEquals(0, keys[0]); + } + + @Test + void screenLinesAreParsedByModelMenuParser() { + ChoiceMenuModel menu = new ChoiceMenuModel("t", List.of( + new ChoiceMenuModel.Option("Opus 5.5 For complex work", "9"), + new ChoiceMenuModel.Option("Fable 5.1 For toughest", "10")), 1, true, 10); + List lines = MenuEnumerator.toScreenLines(menu); + assertEquals("❯ 10. Fable 5.1 For toughest", lines.get(1)); + assertEquals(List.of("Opus 5.5", "Fable 5.1"), new ModelMenuParser().parse(lines).models()); + } +} diff --git a/src/test/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetectorTest.java b/src/test/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetectorTest.java index d637ef3..b0e816c 100644 --- a/src/test/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetectorTest.java +++ b/src/test/java/io/github/nbplugins/claudecodegui/process/ScreenContentDetectorTest.java @@ -74,6 +74,12 @@ void detectChoiceMenu(String caseName, Path srcFile, Path expectedFile) throws E "text mismatch for case '" + caseName + "'"); assertEquals(expected.options(), result.get().options(), "options mismatch for case '" + caseName + "'"); + assertEquals(expected.scrollable(), result.get().scrollable(), + "scrollable mismatch for case '" + caseName + "'"); + if (expected.cursorNumber() != 0) { + assertEquals(expected.cursorNumber(), result.get().cursorNumber(), + "cursorNumber mismatch for case '" + caseName + "'"); + } } } diff --git a/src/test/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanelTest.java b/src/test/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanelTest.java index b6cd911..3124162 100644 --- a/src/test/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanelTest.java +++ b/src/test/java/io/github/nbplugins/claudecodegui/ui/ChoiceMenuPanelTest.java @@ -1,6 +1,7 @@ package io.github.nbplugins.claudecodegui.ui; import io.github.nbplugins.claudecodegui.model.ChoiceMenuModel; +import io.github.nbplugins.claudecodegui.settings.ClaudeCodePreferences; import io.github.nbplugins.claudecodegui.model.ChoiceMenuModel.Option; import io.github.nbplugins.claudecodegui.ui.common.UiUtils; import java.awt.BorderLayout; @@ -1034,10 +1035,52 @@ void testTextFieldsHaveUpDownBindings() throws Exception { }); } + // ------------------------------------------------------------------------- + // long menus + // ------------------------------------------------------------------------- + + @Test + void testLongOptionListIsCappedAndScrollable() throws Exception { + SwingUtilities.invokeAndWait(() -> { + ChoiceMenuPanel panel = new ChoiceMenuPanel(() -> null); + List