bloby-bot 0.51.2 → 0.51.4

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.
Files changed (40) hide show
  1. package/dist-bloby/assets/{bloby-DX6-xoTY.js → bloby-vi0Xitb-.js} +13 -13
  2. package/dist-bloby/assets/{highlighted-body-OFNGDK62-Bace_Nul.js → highlighted-body-OFNGDK62-DMeCY5Rc.js} +1 -1
  3. package/dist-bloby/assets/mermaid-GHXKKRXX-BOqNyL14.js +1 -0
  4. package/dist-bloby/bloby.html +1 -1
  5. package/package.json +1 -1
  6. package/supervisor/chat/OnboardWizard.tsx +1 -1
  7. package/supervisor/chat/bloby-main.tsx +2 -14
  8. package/supervisor/chat/src/components/Chat/HeadphonesAnimation.tsx +17 -1
  9. package/supervisor/index.ts +9 -9
  10. package/supervisor/public/manifest.json +2 -2
  11. package/supervisor/public/morphy-badge.png +0 -0
  12. package/supervisor/public/morphy-favicon.png +0 -0
  13. package/supervisor/public/morphy-icon-192.png +0 -0
  14. package/supervisor/public/morphy-icon-512.png +0 -0
  15. package/supervisor/public/morphy.png +0 -0
  16. package/supervisor/public/morphy_frame1.png +0 -0
  17. package/workspace/client/index.html +3 -3
  18. package/workspace/client/public/manifest.json +2 -2
  19. package/workspace/client/public/morphy-badge.png +0 -0
  20. package/workspace/client/public/morphy-favicon.png +0 -0
  21. package/workspace/client/public/morphy-icon-192.png +0 -0
  22. package/workspace/client/public/morphy-icon-512.png +0 -0
  23. package/workspace/client/public/morphy.png +0 -0
  24. package/workspace/client/public/morphy_frame1.png +0 -0
  25. package/workspace/client/public/sw.js +2 -2
  26. package/workspace/client/src/components/Layout/DashboardLayout.tsx +1 -1
  27. package/workspace/client/src/components/Layout/Sidebar.tsx +1 -1
  28. package/dist-bloby/assets/mermaid-GHXKKRXX-CYB8h2y4.js +0 -1
  29. package/supervisor/public/bloby-badge.png +0 -0
  30. package/supervisor/public/bloby-favicon.png +0 -0
  31. package/supervisor/public/bloby-icon-192.png +0 -0
  32. package/supervisor/public/bloby-icon-512.png +0 -0
  33. package/supervisor/public/bloby.png +0 -0
  34. package/supervisor/public/bloby_frame1.png +0 -0
  35. package/workspace/client/public/bloby-badge.png +0 -0
  36. package/workspace/client/public/bloby-favicon.png +0 -0
  37. package/workspace/client/public/bloby-icon-192.png +0 -0
  38. package/workspace/client/public/bloby-icon-512.png +0 -0
  39. package/workspace/client/public/bloby.png +0 -0
  40. package/workspace/client/public/bloby_frame1.png +0 -0
@@ -1 +1 @@
1
- import{c as e,r as t,t as n}from"./jsx-runtime-C0W9Wf2W.js";import{n as r,r as i,t as a}from"./bloby-DX6-xoTY.js";var o=e(t(),1),s=n(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(i),p=r(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(a,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
1
+ import{c as e,r as t,t as n}from"./jsx-runtime-C0W9Wf2W.js";import{n as r,r as i,t as a}from"./bloby-vi0Xitb-.js";var o=e(t(),1),s=n(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(i),p=r(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(a,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
@@ -0,0 +1 @@
1
+ import{i as e}from"./bloby-vi0Xitb-.js";export{e as Mermaid};
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content" />
6
6
  <title>Bloby Chat</title>
7
- <script type="module" crossorigin src="/bloby/assets/bloby-DX6-xoTY.js"></script>
7
+ <script type="module" crossorigin src="/bloby/assets/bloby-vi0Xitb-.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/bloby/assets/jsx-runtime-C0W9Wf2W.js">
9
9
  <link rel="modulepreload" crossorigin href="/bloby/assets/globals-DNO3ilRx.js">
10
10
  <link rel="stylesheet" crossorigin href="/bloby/assets/globals-D60b-8LY.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bloby-bot",
3
- "version": "0.51.2",
3
+ "version": "0.51.4",
4
4
  "releaseNotes": [
5
5
  "1. New Morphy animation system: config-driven sprites loaded from /morphy/*.json",
6
6
  "2. Swapped teleporting (splash) and headphones (bubble + chat) to the new format",
@@ -51,7 +51,7 @@ const ACCESS_LABELS: Record<AccessMethod, string> = {
51
51
  // visual weight. Default base is 30px; pass undefined to inherit it.
52
52
  const BASE_ICON_HEIGHT = 30;
53
53
  const PROVIDERS = [
54
- { id: 'bloby', name: 'Bloby', subtitle: 'Coming Soon..', icon: '/bloby.png', comingSoon: true, iconHeight: 30 },
54
+ { id: 'bloby', name: 'Bloby', subtitle: 'Coming Soon..', icon: '/morphy.png', comingSoon: true, iconHeight: 30 },
55
55
  { id: 'anthropic', name: 'Claude', subtitle: 'By\nAnthropic', icon: '/icons/claude.png', comingSoon: false, iconHeight: 30 },
56
56
  { id: 'openai', name: 'Codex', subtitle: 'By\nOpenAI', icon: '/codex.svg', comingSoon: false, iconHeight: 34 },
57
57
  { id: 'pi', name: 'Pi', subtitle: 'Bring your\nown model', icon: '/pi-logo.svg', comingSoon: false, iconHeight: 33 },
@@ -32,7 +32,6 @@ function BlobyApp() {
32
32
 
33
33
  // Recording state (for header animation)
34
34
  const [chatRecording, setChatRecording] = useState(false);
35
- const [showHpAnim, setShowHpAnim] = useState(false);
36
35
 
37
36
  // Push notifications
38
37
  const [pushState, setPushState] = useState<'loading' | 'unsupported' | 'denied' | 'subscribed' | 'unsubscribed'>('loading');
@@ -361,15 +360,7 @@ function BlobyApp() {
361
360
 
362
361
  {/* Mascot / headphones animation */}
363
362
  <div className="relative ml-1.5 shrink-0">
364
- {showHpAnim ? (
365
- <HeadphonesAnimation
366
- recording={chatRecording}
367
- height={36}
368
- onDone={() => setShowHpAnim(false)}
369
- />
370
- ) : (
371
- <img src="/bloby.png" alt={botName} className="h-9 w-auto" />
372
- )}
363
+ <HeadphonesAnimation recording={chatRecording} height={36} />
373
364
  </div>
374
365
 
375
366
  {/* Name + status line */}
@@ -529,10 +520,7 @@ function BlobyApp() {
529
520
  });
530
521
  }}
531
522
  onAudioReady={addPendingAudio}
532
- onRecordingChange={(r) => {
533
- setChatRecording(r);
534
- if (r) setShowHpAnim(true);
535
- }}
523
+ onRecordingChange={setChatRecording}
536
524
  />
537
525
  </div>
538
526
 
@@ -102,12 +102,28 @@ export default function HeadphonesAnimation({ recording, height = 36, onDone }:
102
102
  const ctx = canvas.getContext('2d')!;
103
103
  const state = stateRef.current;
104
104
 
105
- if (state === 'idle' || !sprite || !cfg) {
105
+ if (!sprite || !cfg) {
106
106
  ctx.clearRect(0, 0, displayW, displayH);
107
107
  rafRef.current = requestAnimationFrame(tick);
108
108
  return;
109
109
  }
110
110
 
111
+ if (state === 'idle') {
112
+ // Hold the configured idle frame so the chat header shows a real visual at rest.
113
+ const cols = cfg.grid.cols;
114
+ const fw = cfg.frame.w;
115
+ const fh = cfg.frame.h;
116
+ const idleFrame = cfg.clips.idle.from;
117
+ const col = idleFrame % cols;
118
+ const row = Math.floor(idleFrame / cols);
119
+ ctx.clearRect(0, 0, displayW, displayH);
120
+ ctx.imageSmoothingEnabled = true;
121
+ ctx.imageSmoothingQuality = 'high';
122
+ ctx.drawImage(sprite, col * fw, row * fh, fw, fh, 0, 0, displayW, displayH);
123
+ rafRef.current = requestAnimationFrame(tick);
124
+ return;
125
+ }
126
+
111
127
  const baseFps = cfg.fps;
112
128
  const fps =
113
129
  state === 'activating' || state === 'activating_then_deactivate'
@@ -35,12 +35,12 @@ const SUPERVISOR_PUBLIC = path.join(PKG_DIR, 'supervisor', 'public');
35
35
  const PLATFORM_ASSETS = new Set([
36
36
  '/spritesheet.webp',
37
37
  '/headphones_spritesheet.webp',
38
- '/bloby-icon-192.png',
39
- '/bloby-icon-512.png',
40
- '/bloby-badge.png',
41
- '/bloby-favicon.png',
42
- '/bloby_frame1.png',
43
- '/bloby.png',
38
+ '/morphy-icon-192.png',
39
+ '/morphy-icon-512.png',
40
+ '/morphy-badge.png',
41
+ '/morphy-favicon.png',
42
+ '/morphy_frame1.png',
43
+ '/morphy.png',
44
44
  '/pi-logo.svg',
45
45
  '/codex.svg',
46
46
  '/manifest.json',
@@ -193,8 +193,8 @@ self.addEventListener('push', function(event) {
193
193
  event.waitUntil(
194
194
  self.registration.showNotification(data.title || 'Bloby', {
195
195
  body: data.body || '',
196
- icon: '/bloby-icon-192.png',
197
- badge: '/bloby-badge.png',
196
+ icon: '/morphy-icon-192.png',
197
+ badge: '/morphy-badge.png',
198
198
  vibrate: [100, 50, 100],
199
199
  tag: data.tag || 'bloby-default',
200
200
  data: { url: data.url || '/' },
@@ -220,7 +220,7 @@ self.addEventListener('notificationclick', function(event) {
220
220
  const RECOVERING_HTML = `<!DOCTYPE html><html style="background:#222122"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Bloby</title>
221
221
  <style>@keyframes _fs{to{transform:rotate(360deg)}}body{background:#222122;margin:0}</style></head>
222
222
  <body><div style="background:#222122;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100dvh;width:100vw;font-family:system-ui,-apple-system,sans-serif">
223
- <img src="/bloby-icon-192.png" width="56" height="56" style="border-radius:14px;margin-bottom:20px" alt="" />
223
+ <img src="/morphy-icon-192.png" width="56" height="56" style="border-radius:14px;margin-bottom:20px" alt="" />
224
224
  <div style="width:18px;height:18px;border:2px solid rgba(255,255,255,0.12);border-top-color:rgba(255,255,255,0.7);border-radius:50%;animation:_fs .6s linear infinite"></div>
225
225
  </div><script>setTimeout(function(){location.reload()},3000)</script>
226
226
  <script src="/bloby/widget.js"></script></body></html>`;
@@ -8,13 +8,13 @@
8
8
  "theme_color": "#212121",
9
9
  "icons": [
10
10
  {
11
- "src": "/bloby-icon-192.png",
11
+ "src": "/morphy-icon-192.png",
12
12
  "sizes": "192x192",
13
13
  "type": "image/png",
14
14
  "purpose": "any maskable"
15
15
  },
16
16
  {
17
- "src": "/bloby-icon-512.png",
17
+ "src": "/morphy-icon-512.png",
18
18
  "sizes": "512x512",
19
19
  "type": "image/png",
20
20
  "purpose": "any maskable"
Binary file
@@ -7,8 +7,8 @@
7
7
  <meta name="apple-mobile-web-app-capable" content="yes" />
8
8
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
9
9
  <meta name="apple-mobile-web-app-title" content="Bloby" />
10
- <link rel="icon" type="image/png" href="/bloby-favicon.png" />
11
- <link rel="apple-touch-icon" href="/bloby-icon-192.png" />
10
+ <link rel="icon" type="image/png" href="/morphy-favicon.png" />
11
+ <link rel="apple-touch-icon" href="/morphy-icon-192.png" />
12
12
  <link rel="manifest" href="/manifest.json" />
13
13
  <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
14
14
  <title>Bloby - AI agent with its own workspace</title>
@@ -30,7 +30,7 @@
30
30
  if (root && root.children.length === 0) {
31
31
  root.innerHTML =
32
32
  '<div style="background:#0A0A0A;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100dvh;width:100vw;position:fixed;inset:0;z-index:50;font-family:system-ui,-apple-system,sans-serif;text-align:center;padding:24px">' +
33
- '<img src="/bloby_frame1.png" style="height:120px;width:120px;border-radius:50%;object-fit:cover;margin-bottom:32px" alt="Bloby" />' +
33
+ '<img src="/morphy_frame1.png" style="height:120px;width:120px;border-radius:50%;object-fit:cover;margin-bottom:32px" alt="Bloby" />' +
34
34
  '<h1 style="font-size:20px;font-weight:600;margin-bottom:8px">Your app crashed</h1>' +
35
35
  '<p style="font-size:14px;color:rgba(255,255,255,0.5);max-width:320px;line-height:1.5">Ask the agent to fix it using the chat.</p>' +
36
36
  '</div>';
@@ -8,13 +8,13 @@
8
8
  "theme_color": "#212121",
9
9
  "icons": [
10
10
  {
11
- "src": "/bloby-icon-192.png",
11
+ "src": "/morphy-icon-192.png",
12
12
  "sizes": "192x192",
13
13
  "type": "image/png",
14
14
  "purpose": "any maskable"
15
15
  },
16
16
  {
17
- "src": "/bloby-icon-512.png",
17
+ "src": "/morphy-icon-512.png",
18
18
  "sizes": "512x512",
19
19
  "type": "image/png",
20
20
  "purpose": "any maskable"
@@ -111,8 +111,8 @@ self.addEventListener('push', (event) => {
111
111
  event.waitUntil(
112
112
  self.registration.showNotification(data.title || 'Bloby', {
113
113
  body: data.body || '',
114
- icon: '/bloby-icon-192.png',
115
- badge: '/bloby-badge.png',
114
+ icon: '/morphy-icon-192.png',
115
+ badge: '/morphy-badge.png',
116
116
  vibrate: [100, 50, 100],
117
117
  tag: data.tag || 'bloby-default',
118
118
  data: { url: data.url || '/' },
@@ -36,7 +36,7 @@ export default function DashboardLayout({ children, userName, botName = 'Bloby'
36
36
  <header className="flex items-center justify-between px-4 py-3 md:hidden">
37
37
  <MobileNav userName={userName} botName={botName} backendStatus={status} />
38
38
  <div className="flex items-center gap-2">
39
- <img src="/bloby.png" alt={botName} className="h-6 w-auto" />
39
+ <img src="/morphy.png" alt={botName} className="h-6 w-auto" />
40
40
  <span className="font-semibold text-base">{botName}</span>
41
41
  </div>
42
42
  <div className="w-10" />
@@ -27,7 +27,7 @@ export default function Sidebar({ userName, botName = 'Bloby', backendStatus = '
27
27
  <aside className="flex flex-col h-full w-64 bg-transparent p-5 pt-8">
28
28
  {/* Logo */}
29
29
  <div className="flex items-center gap-2.5 mb-8">
30
- <img src="/bloby.png" alt={botName} className="h-7 w-auto" />
30
+ <img src="/morphy.png" alt={botName} className="h-7 w-auto" />
31
31
  <span className="font-bold text-lg" style={{ fontFamily: "'Space Grotesk', sans-serif" }}>{botName}</span>
32
32
  </div>
33
33
 
@@ -1 +0,0 @@
1
- import{i as e}from"./bloby-DX6-xoTY.js";export{e as Mermaid};
Binary file
Binary file
Binary file
Binary file
Binary file