diff --git a/src/renderer/src/components/KeyList.vue b/src/renderer/src/components/KeyList.vue index e134b53..8bdac27 100644 --- a/src/renderer/src/components/KeyList.vue +++ b/src/renderer/src/components/KeyList.vue @@ -452,7 +452,27 @@ const treeData = computed(() => { updateCounts(node) } - return root + // Compress: merge folders that have exactly 1 child into a single node + // e.g. a > b > c (single key "a:b:c") becomes one leaf "a:b:c" + function compress(nodes: TreeNode[]): TreeNode[] { + return nodes.map(node => { + if (node.isLeaf) return node + const children = compress(node.children) + if (children.length === 1) { + const child = children[0] + return { + name: node.name + separator + child.name, + fullPath: child.fullPath, + isLeaf: child.isLeaf, + children: child.children, + count: child.count, + } + } + return { ...node, children } + }) + } + + return compress(root) }) function isFolderExpanded(path: string): boolean {