Skip to content

Commit 1ee7741

Browse files
ithiria894claude
andcommitted
fix: tree view expand shows categories; auto-collapse on tree toggle (v0.14.4)
- Remove isTreeCollapsed — use _dragCollapsed for both modes - Enter tree view: auto-collapse (folder-only), sync collapse button icon - Click expand: categories appear in tree view - Leave tree view: auto-expand back to flat with categories Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 4f50b5b commit 1ee7741

3 files changed

Lines changed: 14 additions & 9 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mcpware/claude-code-organizer",
3-
"version": "0.14.3",
3+
"version": "0.14.4",
44
"description": "Organize all your Claude Code memories, skills, MCP servers, commands, agents, rules, and hooks — see what loads globally vs per-project, then move items between scopes",
55
"type": "module",
66
"files": [

src/ui/app.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,13 @@ function setupCollapseAll() {
466466
if (treeBtn) {
467467
treeBtn.addEventListener("click", () => {
468468
treeView = !treeView;
469+
// Enter tree view → auto-collapse to folder-only; leave → expand
470+
uiState._dragCollapsed = treeView;
471+
const collapseBtn = document.getElementById("collapseAllBtn");
472+
if (collapseBtn) {
473+
collapseBtn.textContent = treeView ? "▦" : "▤";
474+
collapseBtn.title = treeView ? "Expand all" : "Collapse all";
475+
}
469476
treeBtn.textContent = treeView ? "☰" : "🌲";
470477
treeBtn.title = treeView ? "Switch to flat view" : "Switch to tree view (filesystem structure)";
471478
treeBtn.classList.toggle("active", treeView);
@@ -637,26 +644,24 @@ function renderSidebarScope(scope, overrideChildHtml) {
637644
.join("");
638645

639646
const isDragMode = uiState._dragCollapsed;
640-
// Tree view: show folder structure only (children visible, categories hidden)
641-
const isTreeCollapsed = treeView && overrideChildHtml !== "";
642647
const hasNestedContent = Boolean(categoryRows || childHtml);
643648
const hasChildren = Boolean(childHtml);
644649
const isExpanded = hasNestedContent && (searchQuery ? true : uiState.expandedScopes.has(scope.id));
645-
// In drag mode or tree view: always show children, hide categories
646-
const showBody = (isDragMode || isTreeCollapsed) ? hasChildren : (isExpanded && hasNestedContent);
650+
// In drag/collapse mode: always show children (scope names), hide categories
651+
const showBody = isDragMode ? hasChildren : (isExpanded && hasNestedContent);
647652
const icon = SCOPE_ICONS[scope.type] || "📂";
648653

649654
return `
650655
<div class="s-scope scope-block" data-scope-id="${esc(scope.id)}">
651656
<div class="s-scope-hdr${scope.id === selectedScopeId ? " active" : ""}" data-scope-id="${esc(scope.id)}">
652-
<span class="s-tog${hasNestedContent ? (isExpanded || isDragMode || isTreeCollapsed ? "" : " collapsed") : " empty"}">▾</span>
657+
<span class="s-tog${hasNestedContent ? (isExpanded || isDragMode ? "" : " collapsed") : " empty"}">▾</span>
653658
<span class="s-ico">${icon}</span>
654659
<span class="s-nm">${esc(scope.name)}</span>
655660
<span class="s-cnt">${getRecursiveScopeCount(scope.id)}</span>
656661
</div>
657662
${showBody ? `
658663
<div class="s-scope-body">
659-
${(!isDragMode && !isTreeCollapsed && categoryRows) ? `<div>${categoryRows}</div>` : ""}
664+
${(!isDragMode && categoryRows) ? `<div>${categoryRows}</div>` : ""}
660665
${childHtml ? `<div class="s-children">${childHtml}</div>` : ""}
661666
</div>` : (hasNestedContent && !showBody ? `
662667
<div class="s-scope-body collapsed">

0 commit comments

Comments
 (0)