fluxy-bot 0.5.49 → 0.5.50
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-fluxy/assets/{fluxy-DbZm7HVX.js → fluxy-Dc1OmA8X.js} +1 -1
- package/dist-fluxy/assets/{globals-BHyeC8Bo.css → globals-DkRInmdq.css} +1 -1
- package/dist-fluxy/assets/{globals-B1nERNzb.js → globals-USEW-jnB.js} +6 -6
- package/dist-fluxy/assets/{onboard-bonnEh6v.js → onboard-EbXfpdmz.js} +1 -1
- package/dist-fluxy/fluxy.html +4 -4
- package/dist-fluxy/onboard.html +4 -4
- package/package.json +2 -2
- package/supervisor/chat/OnboardWizard.tsx +19 -2
- package/supervisor/chat/fluxy.html +1 -1
- package/supervisor/chat/onboard.html +1 -1
- package/supervisor/chat/src/styles/globals.css +6 -0
- package/supervisor/widget.js +22 -10
- package/workspace/client/index.html +2 -2
- package/workspace/client/src/styles/globals.css +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as o,j as e,R as n,O as r}from"./globals-
|
|
1
|
+
import{b as o,j as e,R as n,O as r}from"./globals-USEW-jnB.js";function a(){const t=()=>{window.parent?.postMessage({type:"fluxy:onboard-complete"},"*")};return e.jsx(r,{onComplete:t,isInitialSetup:!0})}o.createRoot(document.getElementById("root")).render(e.jsx(n.StrictMode,{children:e.jsx(a,{})}));
|
package/dist-fluxy/fluxy.html
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content" />
|
|
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>Fluxy Chat</title>
|
|
7
|
-
<script type="module" crossorigin src="/fluxy/assets/fluxy-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/fluxy/assets/globals-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/fluxy/assets/globals-
|
|
7
|
+
<script type="module" crossorigin src="/fluxy/assets/fluxy-Dc1OmA8X.js"></script>
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/fluxy/assets/globals-USEW-jnB.js">
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/fluxy/assets/globals-DkRInmdq.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body class="bg-background text-foreground">
|
|
12
12
|
<div id="root"></div>
|
package/dist-fluxy/onboard.html
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content" />
|
|
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>Fluxy Setup</title>
|
|
7
|
-
<script type="module" crossorigin src="/fluxy/assets/onboard-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/fluxy/assets/globals-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/fluxy/assets/globals-
|
|
7
|
+
<script type="module" crossorigin src="/fluxy/assets/onboard-EbXfpdmz.js"></script>
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/fluxy/assets/globals-USEW-jnB.js">
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/fluxy/assets/globals-DkRInmdq.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body class="bg-background text-foreground">
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -344,13 +344,30 @@ export default function OnboardWizard({ onComplete, isInitialSetup = false, onSa
|
|
|
344
344
|
|
|
345
345
|
/* ── Auth handlers: Anthropic/Claude ── */
|
|
346
346
|
|
|
347
|
+
const openExternal = (url: string) => {
|
|
348
|
+
const isStandalone = window.matchMedia('(display-mode: standalone)').matches
|
|
349
|
+
|| (navigator as any).standalone === true;
|
|
350
|
+
if (isStandalone) {
|
|
351
|
+
// iOS PWA standalone mode blocks window.open — use a temp anchor with target _blank
|
|
352
|
+
const a = document.createElement('a');
|
|
353
|
+
a.href = url;
|
|
354
|
+
a.target = '_blank';
|
|
355
|
+
a.rel = 'noopener noreferrer';
|
|
356
|
+
document.body.appendChild(a);
|
|
357
|
+
a.click();
|
|
358
|
+
document.body.removeChild(a);
|
|
359
|
+
} else {
|
|
360
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
|
|
347
364
|
const handleAnthropicAuth = async () => {
|
|
348
365
|
setAnthropicError(undefined);
|
|
349
366
|
try {
|
|
350
367
|
const res = await fetch('/api/auth/claude/start', { method: 'POST' });
|
|
351
368
|
const data = await res.json();
|
|
352
369
|
if (data.success && data.authUrl) {
|
|
353
|
-
|
|
370
|
+
openExternal(data.authUrl);
|
|
354
371
|
setOauthStarted(true);
|
|
355
372
|
} else {
|
|
356
373
|
setAnthropicError(data.error || 'Failed to start authentication');
|
|
@@ -415,7 +432,7 @@ export default function OnboardWizard({ onComplete, isInitialSetup = false, onSa
|
|
|
415
432
|
const res = await fetch('/api/auth/codex/start', { method: 'POST' });
|
|
416
433
|
const data = await res.json();
|
|
417
434
|
if (data.success && data.authUrl) {
|
|
418
|
-
|
|
435
|
+
openExternal(data.authUrl);
|
|
419
436
|
} else {
|
|
420
437
|
setOpenaiWaiting(false);
|
|
421
438
|
setOpenaiError(data.error || 'Failed to start authentication');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content" />
|
|
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>Fluxy Chat</title>
|
|
7
7
|
</head>
|
|
8
8
|
<body class="bg-background text-foreground">
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content" />
|
|
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>Fluxy Setup</title>
|
|
7
7
|
</head>
|
|
8
8
|
<body class="bg-background text-foreground">
|
|
@@ -38,11 +38,17 @@
|
|
|
38
38
|
--radius: 0.75rem;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
html {
|
|
42
|
+
touch-action: manipulation;
|
|
43
|
+
-ms-touch-action: manipulation;
|
|
44
|
+
}
|
|
45
|
+
|
|
41
46
|
body {
|
|
42
47
|
background-color: var(--color-background);
|
|
43
48
|
color: var(--color-foreground);
|
|
44
49
|
-webkit-font-smoothing: antialiased;
|
|
45
50
|
-moz-osx-font-smoothing: grayscale;
|
|
51
|
+
overscroll-behavior: none;
|
|
46
52
|
}
|
|
47
53
|
|
|
48
54
|
::selection {
|
package/supervisor/widget.js
CHANGED
|
@@ -40,16 +40,28 @@
|
|
|
40
40
|
bubble.setAttribute('role', 'button');
|
|
41
41
|
bubble.setAttribute('aria-label', 'Open Fluxy chat');
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
43
|
+
// Safari doesn't support WebM alpha — fall back to poster image
|
|
44
|
+
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)
|
|
45
|
+
|| (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);
|
|
46
|
+
|
|
47
|
+
if (isSafari) {
|
|
48
|
+
var img = document.createElement('img');
|
|
49
|
+
img.src = '/fluxy_frame1.png';
|
|
50
|
+
img.alt = 'Fluxy';
|
|
51
|
+
img.draggable = false;
|
|
52
|
+
bubble.appendChild(img);
|
|
53
|
+
} else {
|
|
54
|
+
var video = document.createElement('video');
|
|
55
|
+
video.src = '/fluxy_tilts.webm';
|
|
56
|
+
video.poster = '/fluxy_frame1.png';
|
|
57
|
+
video.autoplay = true;
|
|
58
|
+
video.loop = true;
|
|
59
|
+
video.muted = true;
|
|
60
|
+
video.playsInline = true;
|
|
61
|
+
video.setAttribute('playsinline', '');
|
|
62
|
+
video.draggable = false;
|
|
63
|
+
bubble.appendChild(video);
|
|
64
|
+
}
|
|
53
65
|
|
|
54
66
|
// Mark widget present
|
|
55
67
|
bubble.dataset.fluxyWidget = '1';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content" />
|
|
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
|
<meta name="theme-color" content="#212121" />
|
|
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" />
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
if (root && root.children.length === 0) {
|
|
23
23
|
root.innerHTML =
|
|
24
24
|
'<div style="background:#222122;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">' +
|
|
25
|
-
'<
|
|
25
|
+
'<img src="/fluxy_frame1.png" style="height:120px;width:120px;border-radius:50%;object-fit:cover;margin-bottom:32px" alt="Fluxy" />' +
|
|
26
26
|
'<h1 style="font-size:20px;font-weight:600;margin-bottom:8px">Your app crashed</h1>' +
|
|
27
27
|
'<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>' +
|
|
28
28
|
'</div>';
|
|
@@ -38,11 +38,17 @@
|
|
|
38
38
|
--radius: 0.75rem;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
html {
|
|
42
|
+
touch-action: manipulation;
|
|
43
|
+
-ms-touch-action: manipulation;
|
|
44
|
+
}
|
|
45
|
+
|
|
41
46
|
body {
|
|
42
47
|
background-color: var(--color-background);
|
|
43
48
|
color: var(--color-foreground);
|
|
44
49
|
-webkit-font-smoothing: antialiased;
|
|
45
50
|
-moz-osx-font-smoothing: grayscale;
|
|
51
|
+
overscroll-behavior: none;
|
|
46
52
|
}
|
|
47
53
|
|
|
48
54
|
::selection {
|