bloby-bot 0.65.0 → 0.65.2

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/bin/cli.js CHANGED
@@ -278,8 +278,15 @@ const c = {
278
278
  yellow: '\x1b[33m',
279
279
  red: '\x1b[31m',
280
280
  white: '\x1b[97m',
281
- blue: '\x1b[38;2;50;165;247m',
282
- pink: '\x1b[38;2;219;54;163m',
281
+ blue: '\x1b[38;2;0;173;254m',
282
+ pink: '\x1b[38;2;1;88;251m',
283
+ g1: '\x1b[38;2;0;173;254m',
284
+ g2: '\x1b[38;2;0;159;254m',
285
+ g3: '\x1b[38;2;0;145;253m',
286
+ g4: '\x1b[38;2;1;131;253m',
287
+ g5: '\x1b[38;2;1;116;252m',
288
+ g6: '\x1b[38;2;1;102;251m',
289
+ g7: '\x1b[38;2;1;88;251m',
283
290
  };
284
291
 
285
292
  const SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
@@ -287,9 +294,9 @@ const BAR_WIDTH = 30;
287
294
 
288
295
  function gradientChar(i, total) {
289
296
  const t = total > 1 ? i / (total - 1) : 0;
290
- const r = Math.round(50 + t * (219 - 50));
291
- const g = Math.round(165 + t * (54 - 165));
292
- const b = Math.round(247 + t * (163 - 247));
297
+ const r = Math.round(0 + t * (1 - 0));
298
+ const g = Math.round(173 + t * (88 - 173));
299
+ const b = Math.round(254 + t * (251 - 254));
293
300
  return `\x1b[38;2;${r};${g};${b}m`;
294
301
  }
295
302
 
@@ -617,15 +624,13 @@ class Stepper {
617
624
 
618
625
  function banner() {
619
626
  console.log(`
620
- ${c.blue}${c.bold} ${c.reset}
621
- ${c.blue}${c.bold} ▄▄▄ ▄▄ ${c.reset}
622
- ${c.blue}${c.bold} ██▀▀█▄ ██ █▄ ${c.reset}
623
- ${c.blue}${c.bold} ██ ▄█▀ ██ ██ ${c.reset}
624
- ${c.blue}${c.bold} ██▀▀█▄ ██ ▄███▄ ████▄ ██ ██${c.reset}
625
- ${c.pink}${c.bold}██ ▄█ ██ ██ ██ ██ ██ ██▄██${c.reset}
626
- ${c.pink}${c.bold} ▀██████▀▄██▄▀███▀▄████▀▄▄▀██▀${c.reset}
627
- ${c.pink}${c.bold} ██ ${c.reset}
628
- ${c.pink}${c.bold} ▀▀▀ ${c.reset}
627
+ ${c.g1}${c.bold} █▄ ${c.reset}
628
+ ${c.g2}${c.bold} ▄ ▄ ██ ${c.reset}
629
+ ${c.g3}${c.bold} ███▄███▄ ▄███▄ ████▄████▄ ████▄ ██ ██${c.reset}
630
+ ${c.g4}${c.bold} ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄██${c.reset}
631
+ ${c.g5}${c.bold} ▄██ ██ ▀█▄▀███▀▄█▀ ▄████▀▄██ ██▄▄▀██▀${c.reset}
632
+ ${c.g6}${c.bold} ██ ██ ${c.reset}
633
+ ${c.g7}${c.bold} ▀ ▀▀▀ ${c.reset}
629
634
  ${c.dim}v${pkg.version} · Self-hosted AI agent${c.reset}`);
630
635
  }
631
636
 
package/cli/utils/ui.ts CHANGED
@@ -1,24 +1,38 @@
1
1
  import pc from 'picocolors';
2
2
  import { pkg } from '../core/config.js';
3
3
 
4
- export function banner() {
5
- const b1 = (s: string) => pc.bold(pc.blue(s));
6
- const b2 = (s: string) => pc.bold(pc.magenta(s));
7
- const dim = pc.dim;
4
+ // 24-bit truecolor wrapper (picocolors only ships the 16-color set). Respects
5
+ // picocolors' own support detection so NO_COLOR / piped output stays clean.
6
+ const tc = (r: number, g: number, b: number) => (s: string) =>
7
+ pc.isColorSupported ? `\x1b[38;2;${r};${g};${b}m${s}\x1b[39m` : s;
8
+
9
+ // Morphy logo gradient: #00ADFE (top) -> #0158FB (bottom)
10
+ const grad = [
11
+ tc(0, 173, 254),
12
+ tc(0, 159, 254),
13
+ tc(0, 145, 253),
14
+ tc(1, 131, 253),
15
+ tc(1, 116, 252),
16
+ tc(1, 102, 251),
17
+ tc(1, 88, 251),
18
+ ];
8
19
 
9
- console.log([
10
- ``,
11
- b1(` _______ _ `),
12
- b1(` (_______) | `),
13
- b1(` _____ | |_ _ _ _ _ _ `),
14
- b1(` | ___) | | | | ( \\ / ) | | | `),
15
- b2(` | | | | |_| |) X (| |_| | `),
16
- b2(` |_| |_|\\____(_/ \\_)\\__ | `),
17
- b2(` (____/ `),
18
- dim(`v${pkg.version || '1.0.0'} · Self-hosted AI agent `),
19
- ].join('\n'));
20
+ const logo = [
21
+ ' █▄ ',
22
+ ' ▄ ▄ ██ ',
23
+ ' ███▄███▄ ▄███▄ ████▄████▄ ████▄ ██ ██',
24
+ ' ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄██',
25
+ ' ▄██ ██ ▀█▄▀███▀▄█▀ ▄████▀▄██ ██▄▄▀██▀',
26
+ ' ██ ██ ',
27
+ ' ▀ ▀▀▀ ',
28
+ ];
29
+
30
+ export function banner() {
31
+ console.log('');
32
+ logo.forEach((row, i) => console.log(grad[i](pc.bold(row))));
33
+ console.log(pc.dim(`v${pkg.version || '1.0.0'} · Self-hosted AI agent`));
20
34
  }
21
35
 
22
36
  export function commandExample(name: string, cmd: string) {
23
- return ` ${pc.dim(name)} ${pc.magenta(cmd)}`;
37
+ return ` ${pc.dim(name)} ${tc(0, 173, 254)(cmd)}`;
24
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bloby-bot",
3
- "version": "0.65.0",
3
+ "version": "0.65.2",
4
4
  "releaseNotes": [
5
5
  "1. Fix: image (and audio) attachments now render in chat again — /api/files is fetched with the auth token instead of a raw <img> src that 401'd after the endpoint hardening",
6
6
  "2. Affects chat thumbnails, the image lightbox, voice-note playback, and agent image cards",
package/scripts/install CHANGED
@@ -15,9 +15,17 @@ NODE_DIR="$TOOLS_DIR/node"
15
15
  BIN_DIR="$BLOBY_HOME/bin"
16
16
  USE_SYSTEM_NODE=false
17
17
 
18
- # Brand colors: #32A5F7 (blue) and #DB36A3 (pink) via 256-color approximation
19
- BLUE='\033[38;2;50;165;247m'
20
- PINK='\033[38;2;219;54;163m'
18
+ # Brand colors: #00ADFE (light) and #0158FB (deep) -- Morphy palette, 24-bit truecolor
19
+ BLUE='\033[38;2;0;173;254m'
20
+ PINK='\033[38;2;1;88;251m'
21
+ # Logo gradient: #00ADFE (top) -> #0158FB (bottom)
22
+ G1='\033[38;2;0;173;254m'
23
+ G2='\033[38;2;0;159;254m'
24
+ G3='\033[38;2;0;145;253m'
25
+ G4='\033[38;2;1;131;253m'
26
+ G5='\033[38;2;1;116;252m'
27
+ G6='\033[38;2;1;102;251m'
28
+ G7='\033[38;2;1;88;251m'
21
29
  YELLOW='\033[33m'
22
30
  RED='\033[31m'
23
31
  DIM='\033[2m'
@@ -25,13 +33,13 @@ BOLD='\033[1m'
25
33
  RESET='\033[0m'
26
34
 
27
35
  printf "\n"
28
- printf "${BLUE}${BOLD} _______ _ ${RESET}\n"
29
- printf "${BLUE}${BOLD} (_______) | ${RESET}\n"
30
- printf "${BLUE}${BOLD} _____ | |_ _ _ _ _ _ ${RESET}\n"
31
- printf "${BLUE}${BOLD} | ___) | | | | ( \\ / ) | | | ${RESET}\n"
32
- printf "${PINK}${BOLD} | | | | |_| |) X (| |_| | ${RESET}\n"
33
- printf "${PINK}${BOLD} |_| |_|\\____(_/ \\_)\\__ | ${RESET}\n"
34
- printf "${PINK}${BOLD} (____/ ${RESET}\n"
36
+ printf "${G1}${BOLD} █▄ ${RESET}\n"
37
+ printf "${G2}${BOLD} ▄ ▄ ██ ${RESET}\n"
38
+ printf "${G3}${BOLD} ███▄███▄ ▄███▄ ████▄████▄ ████▄ ██ ██${RESET}\n"
39
+ printf "${G4}${BOLD} ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄██${RESET}\n"
40
+ printf "${G5}${BOLD} ▄██ ██ ▀█▄▀███▀▄█▀ ▄████▀▄██ ██▄▄▀██▀${RESET}\n"
41
+ printf "${G6}${BOLD} ██ ██ ${RESET}\n"
42
+ printf "${G7}${BOLD} ▀ ▀▀▀ ${RESET}\n"
35
43
  printf "\n"
36
44
  printf "${DIM} Self-hosted, self-evolving AI agent with its own dashboard.${RESET}\n"
37
45
  printf "${DIM} ─────────────────────────────${RESET}\n\n"
@@ -17,9 +17,17 @@ $USE_SYSTEM_NODE = $false
17
17
  # Ensure UTF-8 output for proper rendering
18
18
  [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
19
19
 
20
- # Brand colors via ANSI escape sequences: #32A5F7 (blue) and #DB36A3 (pink)
21
- $BLUE = "`e[38;2;50;165;247m"
22
- $PINK = "`e[38;2;219;54;163m"
20
+ # Brand colors: #00ADFE (light) and #0158FB (deep) -- Morphy palette
21
+ $BLUE = "`e[38;2;0;173;254m"
22
+ $PINK = "`e[38;2;1;88;251m"
23
+ # Logo gradient: #00ADFE (top) -> #0158FB (bottom)
24
+ $G1 = "`e[38;2;0;173;254m"
25
+ $G2 = "`e[38;2;0;159;254m"
26
+ $G3 = "`e[38;2;0;145;253m"
27
+ $G4 = "`e[38;2;1;131;253m"
28
+ $G5 = "`e[38;2;1;116;252m"
29
+ $G6 = "`e[38;2;1;102;251m"
30
+ $G7 = "`e[38;2;1;88;251m"
23
31
  $BOLD = "`e[1m"
24
32
  $RSET = "`e[0m"
25
33
 
@@ -38,21 +46,21 @@ function Write-Down($text) {
38
46
 
39
47
  Write-Host ""
40
48
  if ($vtSupported) {
41
- Write-Host "${BLUE}${BOLD} _______ _ ${RSET}"
42
- Write-Host "${BLUE}${BOLD} (_______) | ${RSET}"
43
- Write-Host "${BLUE}${BOLD} _____ | |_ _ _ _ _ _ ${RSET}"
44
- Write-Host "${BLUE}${BOLD} | ___) | | | | ( \ / ) | | | ${RSET}"
45
- Write-Host "${PINK}${BOLD} | | | | |_| |) X (| |_| | ${RSET}"
46
- Write-Host "${PINK}${BOLD} |_| |_|\____(_/ \_)\__ | ${RSET}"
47
- Write-Host "${PINK}${BOLD} (____/ ${RSET}"
49
+ Write-Host "${G1}${BOLD} █▄ ${RSET}"
50
+ Write-Host "${G2}${BOLD} ▄ ▄ ██ ${RSET}"
51
+ Write-Host "${G3}${BOLD} ███▄███▄ ▄███▄ ████▄████▄ ████▄ ██ ██${RSET}"
52
+ Write-Host "${G4}${BOLD} ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄██${RSET}"
53
+ Write-Host "${G5}${BOLD} ▄██ ██ ▀█▄▀███▀▄█▀ ▄████▀▄██ ██▄▄▀██▀${RSET}"
54
+ Write-Host "${G6}${BOLD} ██ ██ ${RSET}"
55
+ Write-Host "${G7}${BOLD} ▀ ▀▀▀ ${RSET}"
48
56
  } else {
49
- Write-Host " _______ _ " -ForegroundColor Cyan
50
- Write-Host " (_______) | " -ForegroundColor Cyan
51
- Write-Host " _____ | |_ _ _ _ _ _ " -ForegroundColor Cyan
52
- Write-Host " | ___) | | | | ( \ / ) | | | " -ForegroundColor Cyan
53
- Write-Host " | | | | |_| |) X (| |_| | " -ForegroundColor Magenta
54
- Write-Host " |_| |_|\____(_/ \_)\__ | " -ForegroundColor Magenta
55
- Write-Host " (____/ " -ForegroundColor Magenta
57
+ Write-Host " █▄ " -ForegroundColor Cyan
58
+ Write-Host " ▄ ▄ ██ " -ForegroundColor Cyan
59
+ Write-Host " ███▄███▄ ▄███▄ ████▄████▄ ████▄ ██ ██" -ForegroundColor Cyan
60
+ Write-Host " ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄██" -ForegroundColor Blue
61
+ Write-Host " ▄██ ██ ▀█▄▀███▀▄█▀ ▄████▀▄██ ██▄▄▀██▀" -ForegroundColor Blue
62
+ Write-Host " ██ ██ " -ForegroundColor Blue
63
+ Write-Host " ▀ ▀▀▀ " -ForegroundColor Blue
56
64
  }
57
65
  Write-Host ""
58
66
  Write-Host " Self-hosted, self-evolving AI agent with its own dashboard." -ForegroundColor DarkGray
@@ -15,9 +15,17 @@ NODE_DIR="$TOOLS_DIR/node"
15
15
  BIN_DIR="$BLOBY_HOME/bin"
16
16
  USE_SYSTEM_NODE=false
17
17
 
18
- # Brand colors: #32A5F7 (blue) and #DB36A3 (pink) via 256-color approximation
19
- BLUE='\033[38;2;50;165;247m'
20
- PINK='\033[38;2;219;54;163m'
18
+ # Brand colors: #00ADFE (light) and #0158FB (deep) -- Morphy palette, 24-bit truecolor
19
+ BLUE='\033[38;2;0;173;254m'
20
+ PINK='\033[38;2;1;88;251m'
21
+ # Logo gradient: #00ADFE (top) -> #0158FB (bottom)
22
+ G1='\033[38;2;0;173;254m'
23
+ G2='\033[38;2;0;159;254m'
24
+ G3='\033[38;2;0;145;253m'
25
+ G4='\033[38;2;1;131;253m'
26
+ G5='\033[38;2;1;116;252m'
27
+ G6='\033[38;2;1;102;251m'
28
+ G7='\033[38;2;1;88;251m'
21
29
  YELLOW='\033[33m'
22
30
  RED='\033[31m'
23
31
  DIM='\033[2m'
@@ -25,13 +33,13 @@ BOLD='\033[1m'
25
33
  RESET='\033[0m'
26
34
 
27
35
  printf "\n"
28
- printf "${BLUE}${BOLD} _______ _ ${RESET}\n"
29
- printf "${BLUE}${BOLD} (_______) | ${RESET}\n"
30
- printf "${BLUE}${BOLD} _____ | |_ _ _ _ _ _ ${RESET}\n"
31
- printf "${BLUE}${BOLD} | ___) | | | | ( \\ / ) | | | ${RESET}\n"
32
- printf "${PINK}${BOLD} | | | | |_| |) X (| |_| | ${RESET}\n"
33
- printf "${PINK}${BOLD} |_| |_|\\____(_/ \\_)\\__ | ${RESET}\n"
34
- printf "${PINK}${BOLD} (____/ ${RESET}\n"
36
+ printf "${G1}${BOLD} █▄ ${RESET}\n"
37
+ printf "${G2}${BOLD} ▄ ▄ ██ ${RESET}\n"
38
+ printf "${G3}${BOLD} ███▄███▄ ▄███▄ ████▄████▄ ████▄ ██ ██${RESET}\n"
39
+ printf "${G4}${BOLD} ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄██${RESET}\n"
40
+ printf "${G5}${BOLD} ▄██ ██ ▀█▄▀███▀▄█▀ ▄████▀▄██ ██▄▄▀██▀${RESET}\n"
41
+ printf "${G6}${BOLD} ██ ██ ${RESET}\n"
42
+ printf "${G7}${BOLD} ▀ ▀▀▀ ${RESET}\n"
35
43
  printf "\n"
36
44
  printf "${DIM} Self-hosted, self-evolving AI agent with its own dashboard.${RESET}\n"
37
45
  printf "${DIM} ─────────────────────────────${RESET}\n\n"