@orderful/droid 0.27.3 → 0.27.5
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/AGENTS.md
CHANGED
|
@@ -71,6 +71,7 @@ Don't consolidate them. Using Ink for simple prompts would be overkill.
|
|
|
71
71
|
## Code Style
|
|
72
72
|
|
|
73
73
|
- TypeScript strict mode
|
|
74
|
+
- **Use single quotes** for strings (enforced by ESLint)
|
|
74
75
|
- Prefer `const` over `let`
|
|
75
76
|
- Use Canadian/British spelling (behaviour, colour, favourite)
|
|
76
77
|
- Use "allow list/deny list" not "whitelist/blacklist"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @orderful/droid
|
|
2
2
|
|
|
3
|
+
## 0.27.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`dd0e5f1`](https://github.com/Orderful/droid/commit/dd0e5f114f11ab2ff34c6e329265ea84117792e9) Thanks [@frytyler](https://github.com/frytyler)! - Fix TUI displaying commands as `/[object Object]` instead of actual command names. Commands are now displayed correctly (e.g., `/brain, /scratchpad`) after handling both string and object formats in TOOL.yaml.
|
|
8
|
+
|
|
9
|
+
## 0.27.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`c5bd82e`](https://github.com/Orderful/droid/commit/c5bd82e96202bd13fa71e57e45b5b2039ad95e6b) Thanks [@frytyler](https://github.com/frytyler)! - Add filesystem sync migration to fix untracked installations
|
|
14
|
+
|
|
15
|
+
**New migration (v0.27.4):**
|
|
16
|
+
|
|
17
|
+
Scans installed skills on the filesystem and adds any that aren't tracked in config. This is a one-time cleanup to fix inconsistencies from the v0.27.x migration series.
|
|
18
|
+
|
|
19
|
+
**What it does:**
|
|
20
|
+
- Scans `~/.claude/skills/` and `~/.config/opencode/skills/`
|
|
21
|
+
- Identifies installed skills missing from config
|
|
22
|
+
- Adds them with correct versions from bundled tool manifests
|
|
23
|
+
- Only processes known droid tool skills (ignores custom directories)
|
|
24
|
+
|
|
25
|
+
**Impact:**
|
|
26
|
+
|
|
27
|
+
Tools that were physically installed but not tracked (like `brain` and `comments`) will now show as properly installed with checkmarks in the TUI.
|
|
28
|
+
|
|
3
29
|
## 0.27.3
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/dist/bin/droid.js
CHANGED
|
@@ -1923,7 +1923,13 @@ function ToolDetails({
|
|
|
1923
1923
|
const isSystemTool = tool.system === true;
|
|
1924
1924
|
const actions = installed ? [
|
|
1925
1925
|
{ id: "explore", label: "Explore", variant: "default" },
|
|
1926
|
-
...updateStatus.hasUpdate ? [
|
|
1926
|
+
...updateStatus.hasUpdate ? [
|
|
1927
|
+
{
|
|
1928
|
+
id: "update",
|
|
1929
|
+
label: `Update (${updateStatus.bundledVersion})`,
|
|
1930
|
+
variant: "primary"
|
|
1931
|
+
}
|
|
1932
|
+
] : [],
|
|
1927
1933
|
{ id: "configure", label: "Configure", variant: "default" },
|
|
1928
1934
|
// System tools can't be uninstalled
|
|
1929
1935
|
...!isSystemTool ? [{ id: "uninstall", label: "Uninstall", variant: "danger" }] : []
|
|
@@ -1939,7 +1945,8 @@ function ToolDetails({
|
|
|
1939
1945
|
tool.status && ` \xB7 ${tool.status}`,
|
|
1940
1946
|
installed && /* @__PURE__ */ jsx4(Text4, { color: colors.success, children: " \xB7 installed" }),
|
|
1941
1947
|
updateStatus.hasUpdate && /* @__PURE__ */ jsxs4(Text4, { color: colors.primary, children: [
|
|
1942
|
-
"
|
|
1948
|
+
" ",
|
|
1949
|
+
"\xB7 update (",
|
|
1943
1950
|
installedVersion,
|
|
1944
1951
|
" \u2192 ",
|
|
1945
1952
|
updateStatus.bundledVersion,
|
|
@@ -1957,7 +1964,7 @@ function ToolDetails({
|
|
|
1957
1964
|
] }),
|
|
1958
1965
|
tool.includes.commands.length > 0 && /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
1959
1966
|
/* @__PURE__ */ jsx4(Text4, { color: colors.command, children: "Commands: " }),
|
|
1960
|
-
/* @__PURE__ */ jsx4(Text4, { color: colors.textMuted, children: tool.includes.commands.map((c) => `/${c}`).join(", ") })
|
|
1967
|
+
/* @__PURE__ */ jsx4(Text4, { color: colors.textMuted, children: tool.includes.commands.map((c) => typeof c === "string" ? `/${c}` : `/${c.name}`).join(", ") })
|
|
1961
1968
|
] }),
|
|
1962
1969
|
tool.includes.agents.length > 0 && /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
1963
1970
|
/* @__PURE__ */ jsx4(Text4, { color: colors.agent, children: "Agents: " }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolDetails.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/components/ToolDetails.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolDetails.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/components/ToolDetails.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,cAAc,GACf,EAAE,gBAAgB,2CA2HlB"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { Box, Text } from 'ink';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
isToolInstalled,
|
|
4
|
+
getInstalledToolVersion,
|
|
5
|
+
getToolUpdateStatus,
|
|
6
|
+
} from '../../../lib/tools';
|
|
3
7
|
import type { ToolManifest } from '../../../lib/types';
|
|
4
8
|
import { colors } from '../constants';
|
|
5
9
|
import { ComponentBadges } from './Badge';
|
|
@@ -26,17 +30,26 @@ export function ToolDetails({
|
|
|
26
30
|
const installed = isToolInstalled(tool.name);
|
|
27
31
|
const installedVersion = getInstalledToolVersion(tool.name);
|
|
28
32
|
const updateStatus = getToolUpdateStatus(tool.name);
|
|
29
|
-
const isSystemTool =
|
|
33
|
+
const isSystemTool =
|
|
34
|
+
(tool as ToolManifest & { system?: boolean }).system === true;
|
|
30
35
|
|
|
31
36
|
const actions = installed
|
|
32
37
|
? [
|
|
33
38
|
{ id: 'explore', label: 'Explore', variant: 'default' },
|
|
34
39
|
...(updateStatus.hasUpdate
|
|
35
|
-
? [
|
|
40
|
+
? [
|
|
41
|
+
{
|
|
42
|
+
id: 'update',
|
|
43
|
+
label: `Update (${updateStatus.bundledVersion})`,
|
|
44
|
+
variant: 'primary',
|
|
45
|
+
},
|
|
46
|
+
]
|
|
36
47
|
: []),
|
|
37
48
|
{ id: 'configure', label: 'Configure', variant: 'default' },
|
|
38
49
|
// System tools can't be uninstalled
|
|
39
|
-
...(!isSystemTool
|
|
50
|
+
...(!isSystemTool
|
|
51
|
+
? [{ id: 'uninstall', label: 'Uninstall', variant: 'danger' }]
|
|
52
|
+
: []),
|
|
40
53
|
]
|
|
41
54
|
: [
|
|
42
55
|
{ id: 'explore', label: 'Explore', variant: 'default' },
|
|
@@ -46,7 +59,9 @@ export function ToolDetails({
|
|
|
46
59
|
|
|
47
60
|
return (
|
|
48
61
|
<Box flexDirection="column" paddingLeft={2} flexGrow={1}>
|
|
49
|
-
<Text color={colors.text} bold>
|
|
62
|
+
<Text color={colors.text} bold>
|
|
63
|
+
{tool.name}
|
|
64
|
+
</Text>
|
|
50
65
|
|
|
51
66
|
<Box marginTop={1}>
|
|
52
67
|
<Text color={colors.textDim}>
|
|
@@ -54,7 +69,10 @@ export function ToolDetails({
|
|
|
54
69
|
{tool.status && ` · ${tool.status}`}
|
|
55
70
|
{installed && <Text color={colors.success}> · installed</Text>}
|
|
56
71
|
{updateStatus.hasUpdate && (
|
|
57
|
-
<Text color={colors.primary}>
|
|
72
|
+
<Text color={colors.primary}>
|
|
73
|
+
{' '}
|
|
74
|
+
· update ({installedVersion} → {updateStatus.bundledVersion})
|
|
75
|
+
</Text>
|
|
58
76
|
)}
|
|
59
77
|
</Text>
|
|
60
78
|
</Box>
|
|
@@ -74,19 +92,27 @@ export function ToolDetails({
|
|
|
74
92
|
{tool.includes.skills.length > 0 && (
|
|
75
93
|
<Text>
|
|
76
94
|
<Text color={colors.skill}>Skills: </Text>
|
|
77
|
-
<Text color={colors.textMuted}>
|
|
95
|
+
<Text color={colors.textMuted}>
|
|
96
|
+
{tool.includes.skills.map((s) => s.name).join(', ')}
|
|
97
|
+
</Text>
|
|
78
98
|
</Text>
|
|
79
99
|
)}
|
|
80
100
|
{tool.includes.commands.length > 0 && (
|
|
81
101
|
<Text>
|
|
82
102
|
<Text color={colors.command}>Commands: </Text>
|
|
83
|
-
<Text color={colors.textMuted}>
|
|
103
|
+
<Text color={colors.textMuted}>
|
|
104
|
+
{tool.includes.commands
|
|
105
|
+
.map((c) => (typeof c === 'string' ? `/${c}` : `/${c.name}`))
|
|
106
|
+
.join(', ')}
|
|
107
|
+
</Text>
|
|
84
108
|
</Text>
|
|
85
109
|
)}
|
|
86
110
|
{tool.includes.agents.length > 0 && (
|
|
87
111
|
<Text>
|
|
88
112
|
<Text color={colors.agent}>Agents: </Text>
|
|
89
|
-
<Text color={colors.textMuted}>
|
|
113
|
+
<Text color={colors.textMuted}>
|
|
114
|
+
{tool.includes.agents.join(', ')}
|
|
115
|
+
</Text>
|
|
90
116
|
</Text>
|
|
91
117
|
)}
|
|
92
118
|
</Box>
|
|
@@ -107,7 +133,8 @@ export function ToolDetails({
|
|
|
107
133
|
color={selectedAction === index ? '#ffffff' : colors.textMuted}
|
|
108
134
|
bold={selectedAction === index}
|
|
109
135
|
>
|
|
110
|
-
{' '}
|
|
136
|
+
{' '}
|
|
137
|
+
{action.label}{' '}
|
|
111
138
|
</Text>
|
|
112
139
|
))}
|
|
113
140
|
</Box>
|