Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
- Fixed an unnumbered choice prompt (e.g. the "trust this folder" dialog) showing every line of the surrounding text as a bogus selectable option instead of just the real choices, and losing the "Yes" option entirely by merging it into the "No" option's description
- Fixed ChatGPT Subscription token refresh hanging indefinitely (freezing the session) when a profile's custom HTTPS/HTTP proxy hostname was slow or unreachable to resolve via DNS
- Fixed a choice-dialog prompt (e.g. a Bash-command permission prompt) flickering and repeatedly resizing when Claude's response text re-wrapped to a slightly different width after the dialog first appeared

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>io.github.nbplugins</groupId>
<artifactId>netbeans-plugin-claude-code-gui</artifactId>
<version>1.3.33-SNAPSHOT</version>
<version>1.3.34-SNAPSHOT</version>
<packaging>nbm</packaging>
<name>Netbeans Plugin Claude Code GUI</name>
<description>NetBeans plugin that provides a GUI for Claude Code CLI — run claude code sessions directly inside the IDE.</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,10 +330,20 @@ Optional<ChoiceMenuModel> detectUnnumberedChoiceMenu(List<String> screenLines) {
int stopRow = -1; // row where we stopped (first non-option line above options)

int i = footerRow - 1;
boolean firstBlock = true;
while (i >= 0) {
// Skip blank lines between blocks
while (i >= 0 && screenLines.get(i).isBlank()) i--;
if (i < 0) break;
if (screenLines.get(i).isBlank()) {
if (!firstBlock) {
// A blank line after at least one option block was already collected marks
// the end of the option list (real menu items are never blank-separated from
// each other) — stop here instead of skipping through unrelated prose above.
stopRow = i;
break;
}
// Allow a single blank gap between the footer and the first (bottom-most) option.
while (i >= 0 && screenLines.get(i).isBlank()) i--;
if (i < 0) break;
}

String raw = screenLines.get(i);
String trimmed = raw.trim();
Expand All @@ -360,12 +370,16 @@ Optional<ChoiceMenuModel> detectUnnumberedChoiceMenu(List<String> screenLines) {
break;
}

// Collect this block: desc = current line, main = line above (if non-blank)
// Collect this block: desc = current line, main = line above (if non-blank).
// Only pair the two lines when the lower one carries the metadata separator "·"
// (e.g. "23 hours ago · bugfix/new-kafka · 1MB") — the shape real 2-line unnumbered
// entries use. Without that marker, treat the line as its own single-line option so
// two genuinely separate options (e.g. "No, exit" / "Yes, I trust this folder") don't
// get fused into one.
String desc = trimmed;
i--;
String main = null;
if (i >= 0 && !screenLines.get(i).isBlank()) {
String raw2 = screenLines.get(i);
if (desc.indexOf('·') >= 0 && i - 1 >= 0 && !screenLines.get(i - 1).isBlank()) {
String raw2 = screenLines.get(i - 1);
String trimmed2 = raw2.trim();
if (!isSeparatorLine(trimmed2) && !OPTION_LINE.matcher(trimmed2).matches()
&& !isBoxDrawingLine(trimmed2) && !trimmed2.contains("\u2315")
Expand All @@ -374,13 +388,15 @@ Optional<ChoiceMenuModel> detectUnnumberedChoiceMenu(List<String> screenLines) {
i--;
}
}
i--;
if (main == null) {
// Single-line block — treat as main with no description
main = desc;
desc = null;
}
blockMainLines.add(0, main);
blockDescLines.add(0, desc);
firstBlock = false;
}

if (blockMainLines.size() < 2) return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"text": "Security guide",
"options": [
{"display": "No, exit", "response": "ARROW:0"},
{"display": "Yes, I trust this folder", "response": "ARROW:1"}
],
"defaultOptionIndex": 0
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
─────────────────────────────────────────────────────────────────────────────────────────────────────────
Accessing workspace:

/home/oleg/git/sigma/SigmaOperationStorage

Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known
open source project, or work from your team). If not, take a moment to review what's in this folder
first.

Claude Code'll be able to read, edit, and execute files here.

⚠ This folder pre-approves 2 tool permissions in .claude/settings.local.json:
mcp__netbeans__show_markdown and mcp__netbeans__show_markdown_file
These will apply without asking. Only proceed if you trust this configuration.

Security guide

❯ No, exit
Yes, I trust this folder

Enter to confirm · Esc to cancel
Loading