u-foo 3.0.9 → 3.0.10
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 +2 -2
- package/src/app/chat/commands.js +7 -1
- package/src/ui/ink/ChatApp.js +16 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "u-foo",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.10",
|
|
4
4
|
"description": "Multi-Agent Workspace Protocol. Just add u. claude → uclaude, codex → ucodex.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://ufoo.dev",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@anthropic-ai/claude-agent-sdk": "^0.2.138",
|
|
48
|
-
"@openai/codex-sdk": "^0.
|
|
48
|
+
"@openai/codex-sdk": "^0.145.0",
|
|
49
49
|
"@xterm/addon-serialize": "^0.14.0",
|
|
50
50
|
"@xterm/headless": "^6.0.0",
|
|
51
51
|
"chalk": "^4.1.2",
|
package/src/app/chat/commands.js
CHANGED
|
@@ -190,7 +190,13 @@ function buildCommandRegistry(tree) {
|
|
|
190
190
|
.sort(sortCommands)
|
|
191
191
|
.map((cmd) => {
|
|
192
192
|
const node = tree[cmd] || {};
|
|
193
|
-
|
|
193
|
+
const entry = { cmd, ...mapNode(node) };
|
|
194
|
+
// Stamp priority so buildCompletions keeps launch → group → bus → ctx
|
|
195
|
+
// at the top of the `/` popup instead of falling back to A–Z.
|
|
196
|
+
if (COMMAND_ORDER_MAP.has(cmd)) {
|
|
197
|
+
entry.order = COMMAND_ORDER_MAP.get(cmd);
|
|
198
|
+
}
|
|
199
|
+
return entry;
|
|
194
200
|
});
|
|
195
201
|
}
|
|
196
202
|
|
package/src/ui/ink/ChatApp.js
CHANGED
|
@@ -3852,13 +3852,24 @@ function createChatApp({ React, ink, props, interactive = true }) {
|
|
|
3852
3852
|
const start = Math.min(completionWindowStart, Math.max(0, completions.length - POPUP_PAGE_SIZE));
|
|
3853
3853
|
const end = Math.min(completions.length, start + POPUP_PAGE_SIZE);
|
|
3854
3854
|
const visible = completions.slice(start, end);
|
|
3855
|
-
|
|
3856
|
-
|
|
3855
|
+
const cols = Math.max(8, size.cols || 80);
|
|
3856
|
+
return h(Box, { flexDirection: "column", width: "100%" },
|
|
3857
|
+
h(Text, { color: "gray" }, "─".repeat(cols)),
|
|
3857
3858
|
...visible.map((s, idxInWindow) => {
|
|
3858
3859
|
const idx = start + idxInWindow;
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3860
|
+
const selected = idx === completionIndex;
|
|
3861
|
+
// Keep label+description in one Text with wrap:"truncate".
|
|
3862
|
+
// Sibling Text nodes let Yoga shrink the label mid-command
|
|
3863
|
+
// (e.g. "/group run" / "build-lane" on two lines).
|
|
3864
|
+
const line = s.description
|
|
3865
|
+
? `${s.label} ${s.description}`
|
|
3866
|
+
: String(s.label || "");
|
|
3867
|
+
return h(Box, { key: `cmp-${idx}`, width: "100%" },
|
|
3868
|
+
h(Text, {
|
|
3869
|
+
color: selected ? "cyan" : "gray",
|
|
3870
|
+
inverse: selected,
|
|
3871
|
+
wrap: "truncate",
|
|
3872
|
+
}, line),
|
|
3862
3873
|
);
|
|
3863
3874
|
}),
|
|
3864
3875
|
);
|