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.
@@ -1 +1 @@
1
- import{b as o,j as e,R as n,O as r}from"./globals-B1nERNzb.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,{})}));
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,{})}));
@@ -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-DbZm7HVX.js"></script>
8
- <link rel="modulepreload" crossorigin href="/fluxy/assets/globals-B1nERNzb.js">
9
- <link rel="stylesheet" crossorigin href="/fluxy/assets/globals-BHyeC8Bo.css">
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>
@@ -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-bonnEh6v.js"></script>
8
- <link rel="modulepreload" crossorigin href="/fluxy/assets/globals-B1nERNzb.js">
9
- <link rel="stylesheet" crossorigin href="/fluxy/assets/globals-BHyeC8Bo.css">
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
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "fluxy-bot",
3
- "version": "0.5.49",
3
+ "version": "0.5.50",
4
4
  "releaseNotes": [
5
- "1. ",
5
+ "Fixed some bugs to iOs ",
6
6
  "2. ",
7
7
  "3. ",
8
8
  "4. "
@@ -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
- window.open(data.authUrl, '_blank');
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
- window.open(data.authUrl, '_blank');
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 {
@@ -40,16 +40,28 @@
40
40
  bubble.setAttribute('role', 'button');
41
41
  bubble.setAttribute('aria-label', 'Open Fluxy chat');
42
42
 
43
- var video = document.createElement('video');
44
- video.src = '/fluxy_tilts.webm';
45
- video.poster = '/fluxy_frame1.png';
46
- video.autoplay = true;
47
- video.loop = true;
48
- video.muted = true;
49
- video.playsInline = true;
50
- video.setAttribute('playsinline', '');
51
- video.draggable = false;
52
- bubble.appendChild(video);
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
- '<video src="/fluxy_say_hi.webm" autoplay loop muted playsinline style="height:120px;width:120px;border-radius:50%;object-fit:cover;margin-bottom:32px"></video>' +
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 {