claudeup 4.39.0 → 4.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claudeup",
|
|
3
|
-
"version": "4.39.
|
|
3
|
+
"version": "4.39.1",
|
|
4
4
|
"description": "TUI tool for managing Claude Code plugins, MCPs, and configuration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/main.tsx",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"typescript": "^5.6.3"
|
|
65
65
|
},
|
|
66
66
|
"optionalDependencies": {
|
|
67
|
-
"claudeup-darwin-arm64": "4.39.
|
|
68
|
-
"claudeup-darwin-x64": "4.39.
|
|
69
|
-
"claudeup-linux-x64": "4.39.
|
|
67
|
+
"claudeup-darwin-arm64": "4.39.1",
|
|
68
|
+
"claudeup-darwin-x64": "4.39.1",
|
|
69
|
+
"claudeup-linux-x64": "4.39.1"
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -29,18 +29,35 @@ export function CategoryHeader({
|
|
|
29
29
|
const countBadge = count !== undefined ? ` (${count})` : "";
|
|
30
30
|
const statusText = status ? ` ${status}` : "";
|
|
31
31
|
|
|
32
|
-
//
|
|
32
|
+
// Flex row instead of one flat <text>: a flat text wraps when the pane is
|
|
33
|
+
// narrower than the row ("by MadAppGang" lost its final character and the wrap
|
|
34
|
+
// shifted every item below by one line). Here the dash filler is the only
|
|
35
|
+
// element allowed to shrink to nothing, so the badge survives at any width
|
|
36
|
+
// and the title clips last.
|
|
33
37
|
return (
|
|
34
|
-
<
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
<box flexDirection="row" width="100%" height={1} overflow="hidden">
|
|
39
|
+
<box flexShrink={1} minWidth={4} overflow="hidden" height={1}>
|
|
40
|
+
<text fg={theme.colors.text}>
|
|
41
|
+
<span fg={theme.colors.muted}>{expandIcon}</span>
|
|
42
|
+
<span fg={theme.colors.text}>
|
|
43
|
+
<strong> {title}</strong>
|
|
44
|
+
</span>
|
|
45
|
+
<span fg={theme.colors.muted}>{versionBadge}</span>
|
|
46
|
+
<span fg={theme.colors.muted}>{countBadge}</span>
|
|
47
|
+
</text>
|
|
48
|
+
</box>
|
|
49
|
+
{/* flexShrink 100: the filler must be the first thing sacrificed. With equal
|
|
50
|
+
shrink factors yoga takes width from the (larger-basis) title first, which
|
|
51
|
+
clipped a character off the title while all four dashes survived. */}
|
|
52
|
+
<box flexShrink={100} minWidth={0} overflow="hidden" height={1}>
|
|
53
|
+
<text fg={theme.colors.border}> ────</text>
|
|
54
|
+
</box>
|
|
55
|
+
{status ? (
|
|
56
|
+
<box flexShrink={0} height={1}>
|
|
57
|
+
<text fg={statusColor}>{statusText}</text>
|
|
58
|
+
</box>
|
|
59
|
+
) : null}
|
|
60
|
+
</box>
|
|
44
61
|
);
|
|
45
62
|
}
|
|
46
63
|
|
|
@@ -70,6 +70,14 @@ export function ScrollableList<T>({
|
|
|
70
70
|
<box
|
|
71
71
|
key={getKey ? getKey(item, originalIndex) : `${originalIndex}`}
|
|
72
72
|
width="100%"
|
|
73
|
+
// height=1 is load-bearing, not cosmetic. overflow="hidden" alone clips
|
|
74
|
+
// CONTENT but lets the box GROW: an over-wide <text> wraps to a second
|
|
75
|
+
// line, the row becomes two lines tall, and every item below shifts —
|
|
76
|
+
// which rendered as a phantom blank line under "Magus Marketing" and
|
|
77
|
+
// the last two plugins composited onto one row. The list's scroll math
|
|
78
|
+
// assumes one line per item; this makes that assumption true.
|
|
79
|
+
height={1}
|
|
80
|
+
flexShrink={0}
|
|
73
81
|
overflow="hidden"
|
|
74
82
|
>
|
|
75
83
|
{renderItem(item, originalIndex, originalIndex === selectedIndex)}
|