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.
- package/dist-bloby/assets/{bloby-DX6-xoTY.js → bloby-vi0Xitb-.js} +13 -13
- package/dist-bloby/assets/{highlighted-body-OFNGDK62-Bace_Nul.js → highlighted-body-OFNGDK62-DMeCY5Rc.js} +1 -1
- package/dist-bloby/assets/mermaid-GHXKKRXX-BOqNyL14.js +1 -0
- package/dist-bloby/bloby.html +1 -1
- package/package.json +1 -1
- package/supervisor/chat/OnboardWizard.tsx +1 -1
- package/supervisor/chat/bloby-main.tsx +2 -14
- package/supervisor/chat/src/components/Chat/HeadphonesAnimation.tsx +17 -1
- package/supervisor/index.ts +9 -9
- package/supervisor/public/manifest.json +2 -2
- package/supervisor/public/morphy-badge.png +0 -0
- package/supervisor/public/morphy-favicon.png +0 -0
- package/supervisor/public/morphy-icon-192.png +0 -0
- package/supervisor/public/morphy-icon-512.png +0 -0
- package/supervisor/public/morphy.png +0 -0
- package/supervisor/public/morphy_frame1.png +0 -0
- package/workspace/client/index.html +3 -3
- package/workspace/client/public/manifest.json +2 -2
- package/workspace/client/public/morphy-badge.png +0 -0
- package/workspace/client/public/morphy-favicon.png +0 -0
- package/workspace/client/public/morphy-icon-192.png +0 -0
- package/workspace/client/public/morphy-icon-512.png +0 -0
- package/workspace/client/public/morphy.png +0 -0
- package/workspace/client/public/morphy_frame1.png +0 -0
- package/workspace/client/public/sw.js +2 -2
- package/workspace/client/src/components/Layout/DashboardLayout.tsx +1 -1
- package/workspace/client/src/components/Layout/Sidebar.tsx +1 -1
- package/dist-bloby/assets/mermaid-GHXKKRXX-CYB8h2y4.js +0 -1
- package/supervisor/public/bloby-badge.png +0 -0
- package/supervisor/public/bloby-favicon.png +0 -0
- package/supervisor/public/bloby-icon-192.png +0 -0
- package/supervisor/public/bloby-icon-512.png +0 -0
- package/supervisor/public/bloby.png +0 -0
- package/supervisor/public/bloby_frame1.png +0 -0
- package/workspace/client/public/bloby-badge.png +0 -0
- package/workspace/client/public/bloby-favicon.png +0 -0
- package/workspace/client/public/bloby-icon-192.png +0 -0
- package/workspace/client/public/bloby-icon-512.png +0 -0
- package/workspace/client/public/bloby.png +0 -0
- 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-
|
|
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};
|
package/dist-bloby/bloby.html
CHANGED
|
@@ -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-
|
|
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
|
@@ -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: '/
|
|
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
|
-
{
|
|
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={
|
|
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 (
|
|
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'
|
package/supervisor/index.ts
CHANGED
|
@@ -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
|
-
'/
|
|
39
|
-
'/
|
|
40
|
-
'/
|
|
41
|
-
'/
|
|
42
|
-
'/
|
|
43
|
-
'/
|
|
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: '/
|
|
197
|
-
badge: '/
|
|
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="/
|
|
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": "/
|
|
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": "/
|
|
17
|
+
"src": "/morphy-icon-512.png",
|
|
18
18
|
"sizes": "512x512",
|
|
19
19
|
"type": "image/png",
|
|
20
20
|
"purpose": "any maskable"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
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="/
|
|
11
|
-
<link rel="apple-touch-icon" href="/
|
|
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="/
|
|
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": "/
|
|
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": "/
|
|
17
|
+
"src": "/morphy-icon-512.png",
|
|
18
18
|
"sizes": "512x512",
|
|
19
19
|
"type": "image/png",
|
|
20
20
|
"purpose": "any maskable"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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: '/
|
|
115
|
-
badge: '/
|
|
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="/
|
|
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="/
|
|
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
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|