lazyclaw 5.0.2 → 5.0.3
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/cli.mjs +22 -25
- package/package.json +1 -1
- package/tui/banner.generated.mjs +23 -12
package/cli.mjs
CHANGED
|
@@ -1634,31 +1634,28 @@ function _renderBanner(version) {
|
|
|
1634
1634
|
];
|
|
1635
1635
|
}
|
|
1636
1636
|
|
|
1637
|
-
// v5
|
|
1638
|
-
//
|
|
1639
|
-
//
|
|
1640
|
-
//
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1637
|
+
// v5 wordmark banner — ANSI Shadow style "LAZYCLAW" rendered in box-drawing
|
|
1638
|
+
// + half-block glyphs at 67 cols x 6 rows. Wider than the chat splash gutter
|
|
1639
|
+
// because the no-arg launcher has the full terminal width to work with.
|
|
1640
|
+
// Single-tone orange. Opt out with LAZYCLAW_LEGACY_MENU=1 to fall back to
|
|
1641
|
+
// the boxed figlet variant above.
|
|
1642
|
+
const _V5_WORDMARK = [
|
|
1643
|
+
" ██╗ █████╗ ███████╗██╗ ██╗ ██████╗██╗ █████╗ ██╗ ██╗",
|
|
1644
|
+
" ██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██╔════╝██║ ██╔══██╗██║ ██║",
|
|
1645
|
+
" ██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║ ███████║██║ █╗ ██║",
|
|
1646
|
+
" ██║ ██╔══██║ ███╔╝ ╚██╔╝ ██║ ██║ ██╔══██║██║███╗██║",
|
|
1647
|
+
" ███████╗██║ ██║███████╗ ██║ ╚██████╗███████╗██║ ██║╚███╔███╔╝",
|
|
1648
|
+
" ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ ",
|
|
1649
|
+
];
|
|
1650
|
+
|
|
1651
|
+
function _renderV5Banner(version) {
|
|
1652
1652
|
const v = String(version || '?.?.?');
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
}
|
|
1660
|
-
return _orange(row);
|
|
1661
|
-
});
|
|
1653
|
+
const wmCols = 69; // width of _V5_WORDMARK rows including leading " "
|
|
1654
|
+
const versionLine = ` v${v}`;
|
|
1655
|
+
return [
|
|
1656
|
+
..._V5_WORDMARK.map(_orange),
|
|
1657
|
+
_orange(versionLine.padEnd(wmCols)),
|
|
1658
|
+
];
|
|
1662
1659
|
}
|
|
1663
1660
|
|
|
1664
1661
|
function _printChatBanner(activeProvName, activeModel, version) {
|
|
@@ -6749,7 +6746,7 @@ async function cmdLauncher() {
|
|
|
6749
6746
|
const useLegacyBanner = !!process.env.LAZYCLAW_LEGACY_MENU;
|
|
6750
6747
|
const bannerRowsCached = useLegacyBanner
|
|
6751
6748
|
? _renderBanner(readVersionFromRepo())
|
|
6752
|
-
:
|
|
6749
|
+
: _renderV5Banner(readVersionFromRepo());
|
|
6753
6750
|
const draw = () => {
|
|
6754
6751
|
process.stdout.write('\x1b[?25l\x1b[2J\x1b[H'); // hide cursor + clear
|
|
6755
6752
|
bannerRowsCached.forEach((l) => process.stdout.write(l + '\n'));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazyclaw",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "Lazy, elegant terminal CLI for chatting with Claude / OpenAI / Gemini / Ollama, orchestrating multi-step LLM workflows, and running multi-agent Slack teams with cross-task memory. Banner-on-launch, slash-command ghost autocomplete, persistent sessions, local HTTP gateway.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
package/tui/banner.generated.mjs
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Hand-crafted 24x12 sleepy sloth icon — replaces the chafa-generated
|
|
2
|
+
// placeholder. Source image (docs/assets/sleepy-sloth-source.png) is a
|
|
3
|
+
// circle silhouette with no internal detail, so chafa --symbols=braille
|
|
4
|
+
// renders an oval-of-dots at this resolution. A hand drawing reads as
|
|
5
|
+
// a creature; the rasterised conversion did not.
|
|
6
|
+
//
|
|
7
|
+
// All rows are exactly 24 East-Asian-Width cells. Render width matches
|
|
8
|
+
// the splash gutter (GUTTER_WIDTH = 24 in tui/splash.mjs). Don't change
|
|
9
|
+
// row widths without updating tests/phaseC-build-splash.test.mjs (width
|
|
10
|
+
// strict-equals 24, height <= 12).
|
|
2
11
|
export const banner = {
|
|
3
12
|
rows: [
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
13
|
+
" ╭──╮ ╭──╮ ",
|
|
14
|
+
" ╭╯ ╰────╯ ╰╮ ",
|
|
15
|
+
" │ ─ ─ │ ",
|
|
16
|
+
" │ │ ",
|
|
17
|
+
" │ ‿‿‿ │ ",
|
|
18
|
+
" ╰╮ ╭╯ ",
|
|
19
|
+
" ╰─┬─────┬─╯ ",
|
|
20
|
+
" │ │ ",
|
|
21
|
+
" ╱│ z │╲ ",
|
|
22
|
+
" ╱ │ z │ ╲ ",
|
|
23
|
+
" ✦ ╰─────╯ ✦ ",
|
|
24
|
+
" lazyclaw "
|
|
14
25
|
],
|
|
15
26
|
width: 24,
|
|
16
|
-
height:
|
|
27
|
+
height: 12,
|
|
17
28
|
fg: "#FFB347"
|
|
18
29
|
};
|