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 tab title showing "Claude Code" for sessions opened in non-project directories — now shows the directory name
- Added OpenAI-compatible proxy: profiles can now route Claude Code through any OpenAI-compatible API provider (OpenAI, Azure, Groq, DeepSeek, Ollama, local models, etc.)

# 1.1.7 (2026-05-22)
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.2.7-SNAPSHOT</version>
<version>1.2.8-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 @@ -337,7 +337,7 @@ public void preselectForDirectory(File dir) {
* Resolves the tab label for a session directory.
*
* <p>Returns the NetBeans project display name when {@code dir} matches an
* open project, or {@code "Claude Code"} as a fallback. Returns the
* open project, or the directory name as a fallback. Returns the
* localised "New Session" string when {@code dir} is {@code null}.
*
* @param dir working directory, or {@code null} for a new empty session
Expand Down Expand Up @@ -373,8 +373,8 @@ public static String resolveTabLabel(File dir) {
LOG.fine("canonical path comparison failed: " + e.getMessage());
}
}
LOG.warning("resolveTabLabel: no project match for " + dir.getAbsolutePath());
return "Claude Code";
LOG.fine("resolveTabLabel: no project match for " + dir.getAbsolutePath() + ", using dir name");
return dir.getName();
}

// -------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ void testSessionPanelLabelResolutionNoProject() throws IOException {
tmpDir.deleteOnExit();
try {
String label = ClaudeSessionSelectorPanel.resolveTabLabel(tmpDir);
assertEquals("Claude Code", label);
assertEquals(tmpDir.getName(), label);
} finally {
tmpDir.delete();
}
Expand Down Expand Up @@ -72,15 +72,15 @@ void testTabTooltipSetImmediatelyOnStartSession() throws IOException {
void testTabNameRemainsStableWhenProjectsAlreadyLoaded() throws IOException {
// When openProjects() Future is already done (projects fully loaded),
// updateDisplayName must not schedule a background refresh — the name is final.
// Verify this by checking that a tab created for a non-project dir keeps "Claude Code".
// Verify this by checking that a tab created for a non-project dir uses the dir name.
File tmpDir = Files.createTempDirectory("proj-loaded-test").toFile();
tmpDir.deleteOnExit();
try {
ClaudeSessionTab tc = new ClaudeSessionTab();
tc.autoStart(tmpDir, "default");
// openProjects() is done in test env (no real projects) — name must be "Claude Code"
assertEquals("Claude Code", tc.getDisplayName(),
"Tab name for non-project dir must be 'Claude Code'");
// openProjects() is done in test env (no real projects) — name must be the dir basename
assertEquals(tmpDir.getName(), tc.getDisplayName(),
"Tab name for non-project dir must be the directory name");
} finally {
tmpDir.delete();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,9 @@ void resolveTabLabelNonProjectDirReturnsFallback() throws IOException {
tmpDir.deleteOnExit();
try {
String label = ClaudeSessionSelectorPanel.resolveTabLabel(tmpDir);
// No open projects in the headless test environment → fallback "Claude Code"
assertEquals("Claude Code", label,
"resolveTabLabel must fall back to 'Claude Code' for non-project dirs");
// No open projects in the headless test environment → fallback is the directory name
assertEquals(tmpDir.getName(), label,
"resolveTabLabel must fall back to the directory name for non-project dirs");
} finally {
tmpDir.delete();
}
Expand Down
Loading