@omg-dev/app 0.6.15 → 0.6.16

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,9 +1,44 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { z as n } from "./embedded-Ck10Okym.js";
2
+ import { z as n } from "./embedded-B6IaTsrk.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 27, 2026 - The native iOS client, native push, and a matched dark theme (v0.6.16)
8
+
9
+ - **The native omg.dev client for iOS now lives in this repository.** The
10
+ \`mobile/\` directory held a todo prototype while the real client was developed
11
+ on a branch. The real client is now on \`main\`: sign-in, sessions, transcript
12
+ and composer, dictation, the Bots roster and bot chat, shared Computers, and
13
+ the plan screen. It ships through TestFlight and EAS Update, not through this
14
+ release bundle.
15
+ - **The dark theme is softer, and an installed app's status bar now matches
16
+ it.** The background moved from pure black to #141414, and body text moved
17
+ from pure white to a warm off-white. The chrome of an installed app kept its
18
+ own copies of the old colour, so an iPhone home-screen app painted a black
19
+ status bar above a lighter page. The theme colour, the splash, the safe-area
20
+ strips, the boot-failure page, and the web manifest now all use the same
21
+ value.
22
+ - **The server can send push notifications to the native app.** Delivery goes
23
+ through Expo and APNs, and it is fanned out from the same path as every other
24
+ notification, so existing callers inherit it with the same user scoping. The
25
+ payload is deliberately redacted: it carries a per-kind title and a project
26
+ name, and never the question text. Delivery needs a native build and an APNs
27
+ key.
28
+ - **The usage summary now arrives in one request.** \`/api/usage/summary\` groups
29
+ sources by kind, averages clamped windows by label, keeps the soonest reset,
30
+ and excludes accounts that did not report. A remote client no longer pays one
31
+ round trip per account. The per-account routes remain available.
32
+ - **Batch dictation now picks a provider that can perform it.** The fallback
33
+ matched any provider that defined a transcribe function, which included the
34
+ hosted relay. That relay is realtime-only and always answers 503, so a
35
+ workspace with a working ElevenLabs or OpenAI key still failed. Batch-capable
36
+ providers are now marked, and only they are selected.
37
+ - **A session row falls back to the local placeholder when an avatar cannot
38
+ load.** The fallback chain ended at Gravatar, which always returns a URL. On a
39
+ box that cannot reach gravatar.com, every row rendered a broken image. The
40
+ configured identity now stays visible without a network.
41
+
7
42
  ## August 27, 2026 - Session sharing, pinned chats sync, and env-token Claude accounts (v0.6.15)
8
43
 
9
44
  - **A Claude login held in \`CLAUDE_CODE_OAUTH_TOKEN\` now counts as a connected
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as s, Fragment as te } from "react/jsx-runtime";
2
2
  import { memo as ne, useState as m, useRef as T, useCallback as v, useEffect as C, useMemo as q, Suspense as U } from "react";
3
3
  import { createPortal as re } from "react-dom";
4
4
  import { cn as y } from "cnfast";
5
- import { f as oe, a3 as W, a4 as se, X as I, a5 as ie, a6 as ae, L as H, a7 as le, y as de, C as ce, a8 as L } from "./embedded-Ck10Okym.js";
5
+ import { f as oe, a3 as W, a4 as se, X as I, a5 as ie, a6 as ae, L as H, a7 as le, y as de, C as ce, a8 as L } from "./embedded-B6IaTsrk.js";
6
6
  import { c as me } from "./create-CBk9uwJH.js";
7
7
  /**
8
8
  * @license lucide-react v0.577.0 - ISC
@@ -1,7 +1,7 @@
1
1
  import { jsxs as r, jsx as k, Fragment as vA } from "react/jsx-runtime";
2
2
  import { useState as L, useRef as R, useEffect as p, useCallback as q } from "react";
3
- import { f as UA, o as iQ, X as CA, a9 as wQ, y as sQ, aa as tQ, ab as eQ, a3 as aQ, ac as MQ, R as hQ, C as NQ } from "./embedded-Ck10Okym.js";
4
- import { K as ZA } from "./keyboard-B8vaZRTC.js";
3
+ import { f as UA, o as iQ, X as CA, a9 as wQ, y as sQ, aa as tQ, ab as eQ, a3 as aQ, ac as MQ, R as hQ, C as NQ } from "./embedded-B6IaTsrk.js";
4
+ import { K as ZA } from "./keyboard-DCTxfrP6.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *
@@ -1,7 +1,7 @@
1
1
  import { jsx as ao } from "react/jsx-runtime";
2
2
  import { useRef as Dt, useCallback as Lt, useSyncExternalStore as ut, useEffect as so } from "react";
3
3
  import { g as io } from "./_commonjsHelpers-C6fGbg64.js";
4
- import { ad as uo } from "./embedded-Ck10Okym.js";
4
+ import { ad as uo } from "./embedded-B6IaTsrk.js";
5
5
  var Ar = "vercel.ai.error", co = Symbol.for(Ar), Ut, Ft, se = class Nr extends (Ft = Error, Ut = co, Ft) {
6
6
  /**
7
7
  * Creates an AI SDK Error.
@@ -1,5 +1,5 @@
1
1
  import { jsxs as t, jsx as e, Fragment as O } from "react/jsx-runtime";
2
- import { R, B as d, L as $, n as A, o as S, M as G, p as j, q as E, s as h, T as P, u as D, v as W, w as T, x as X, y as J, X as Q, K as V } from "./embedded-Ck10Okym.js";
2
+ import { R, B as d, L as $, n as A, o as S, M as G, p as j, q as E, s as h, T as P, u as D, v as W, w as T, x as X, y as J, X as Q, K as V } from "./embedded-B6IaTsrk.js";
3
3
  import { cn as U } from "cnfast";
4
4
  import { useState as I } from "react";
5
5
  function B(s) {
@@ -1,7 +1,7 @@
1
1
  import { jsxs as pe, jsx as J, Fragment as zt } from "react/jsx-runtime";
2
2
  import { useState as Ve, useRef as Qe, useCallback as ve, useEffect as Le } from "react";
3
- import { f as Fn, a3 as Ai, ab as Mn, B as Ge, R as Tn, X as Qn, L as Xi, ae as Ln } from "./embedded-Ck10Okym.js";
4
- import { K as Rn } from "./keyboard-B8vaZRTC.js";
3
+ import { f as Fn, a3 as Ai, ab as Mn, B as Ge, R as Tn, X as Qn, L as Xi, ae as Ln } from "./embedded-B6IaTsrk.js";
4
+ import { K as Rn } from "./keyboard-DCTxfrP6.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *
@@ -2322,7 +2322,7 @@ function Zc(e) {
2322
2322
  return !t || t.toLowerCase() === "unknown" ? null : t;
2323
2323
  }
2324
2324
  function vv() {
2325
- return Zc("0.6.15");
2325
+ return Zc("0.6.16");
2326
2326
  }
2327
2327
  const ju = vv();
2328
2328
  function wv(e) {
@@ -4968,25 +4968,26 @@ function cp({
4968
4968
  size: n = "sm",
4969
4969
  className: r
4970
4970
  }) {
4971
- const o = e.assignedUser?.trim();
4972
- if (!o) return null;
4973
- const i = t.find((u) => u.email === o), l = `Assigned to ${i?.name?.trim() || b2(o)}`, c = n === "xs" ? "size-4" : "size-5";
4974
- return i?.avatar ? /* @__PURE__ */ s(
4971
+ const [o, i] = N(null), a = e.assignedUser?.trim();
4972
+ if (!a) return null;
4973
+ const l = t.find((h) => h.email === a), u = `Assigned to ${l?.name?.trim() || b2(a)}`, d = n === "xs" ? "size-4" : "size-5", f = l?.avatar;
4974
+ return f && o !== f ? /* @__PURE__ */ s(
4975
4975
  "img",
4976
4976
  {
4977
- src: i.avatar,
4978
- alt: l,
4979
- title: l,
4980
- className: B(c, "shrink-0 rounded-full object-cover", r)
4977
+ src: f,
4978
+ alt: u,
4979
+ title: u,
4980
+ onError: () => i(f),
4981
+ className: B(d, "shrink-0 rounded-full object-cover", r)
4981
4982
  }
4982
4983
  ) : /* @__PURE__ */ s(
4983
4984
  "span",
4984
4985
  {
4985
4986
  role: "img",
4986
- "aria-label": l,
4987
- title: l,
4987
+ "aria-label": u,
4988
+ title: u,
4988
4989
  className: B(
4989
- c,
4990
+ d,
4990
4991
  "flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground",
4991
4992
  r
4992
4993
  ),
@@ -5855,7 +5856,7 @@ function j2() {
5855
5856
  }
5856
5857
  function U2(e) {
5857
5858
  const t = j2(), n = e ?? (t ? t === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches);
5858
- return document.documentElement.classList.toggle("dark", n), document.documentElement.classList.toggle("light", !n), document.documentElement.style.colorScheme = n ? "dark" : "light", document.querySelector('meta[name="theme-color"]')?.setAttribute("content", n ? "#000000" : "#f2f2f7"), n;
5859
+ return document.documentElement.classList.toggle("dark", n), document.documentElement.classList.toggle("light", !n), document.documentElement.style.colorScheme = n ? "dark" : "light", document.querySelector('meta[name="theme-color"]')?.setAttribute("content", n ? "#141414" : "#f2f2f7"), n;
5859
5860
  }
5860
5861
  function W2(e) {
5861
5862
  try {
@@ -13824,7 +13825,7 @@ const xM = dr(function({
13824
13825
  ] }) : null;
13825
13826
  }), bM = $r(
13826
13827
  "session-files-panel",
13827
- () => import("./SessionFilesPanel-DCg5ulH3.js")
13828
+ () => import("./SessionFilesPanel-CdUoE6sb.js")
13828
13829
  );
13829
13830
  function _d({ className: e, ...t }) {
13830
13831
  return /* @__PURE__ */ s(
@@ -14358,7 +14359,7 @@ async function GI() {
14358
14359
  }
14359
14360
  }
14360
14361
  const PM = Sa(
14361
- () => import("./streamdown-response-Bs0Fo015.js").then((e) => ({ default: e.StreamdownResponse }))
14362
+ () => import("./streamdown-response-CNl2guA0.js").then((e) => ({ default: e.StreamdownResponse }))
14362
14363
  );
14363
14364
  function Ms({ className: e, from: t, ...n }) {
14364
14365
  return /* @__PURE__ */ s(
@@ -16638,26 +16639,26 @@ function t4({ className: e, isStreaming: t, children: n, ...r }) {
16638
16639
  function n4({ className: e, children: t, ...n }) {
16639
16640
  return /* @__PURE__ */ s(Va, { className: B("mt-2 text-sm", e), ...n, children: /* @__PURE__ */ s(ei, { className: "ai-live-text max-w-full opacity-90", children: t }) });
16640
16641
  }
16641
- const r4 = Sa(() => import("./chat-engine-CPhnHoov.js"));
16642
+ const r4 = Sa(() => import("./chat-engine-BVrUwjDq.js"));
16642
16643
  function s4() {
16643
- const e = () => void import("./chat-engine-CPhnHoov.js"), t = globalThis.requestIdleCallback;
16644
+ const e = () => void import("./chat-engine-BVrUwjDq.js"), t = globalThis.requestIdleCallback;
16644
16645
  typeof t == "function" ? t(e, { timeout: 3e3 }) : setTimeout(e, 1500);
16645
16646
  }
16646
16647
  const Yg = $r(
16647
16648
  "TermView",
16648
- () => import("./TermView-eLm0mVur.js").then((e) => ({ default: e.TermView }))
16649
- ), Im = $r("ShippedPage", () => import("./shipped-page-CZAYNqrV.js")), o4 = $r(
16649
+ () => import("./TermView-CsbmiLaC.js").then((e) => ({ default: e.TermView }))
16650
+ ), Im = $r("ShippedPage", () => import("./shipped-page-Cx8J7mTL.js")), o4 = $r(
16650
16651
  "SessionTokenUsageDialog",
16651
- () => import("./session-token-usage-DqiLcSLf.js")
16652
+ () => import("./session-token-usage-DvEZR6Lw.js")
16652
16653
  ), i4 = $r(
16653
16654
  "CodingAgentsPage",
16654
- () => import("./coding-agents-page-DGLXTdXg.js")
16655
- ), a4 = $r("ComputerPage", () => import("./computer-page-CZx8ccpI.js")), _m = $r(
16655
+ () => import("./coding-agents-page-CpLkCbr4.js")
16656
+ ), a4 = $r("ComputerPage", () => import("./computer-page-beiShGv9.js")), _m = $r(
16656
16657
  "ResumeSessionSheet",
16657
- () => import("./resume-session-sheet-BnY0VdOw.js")
16658
+ () => import("./resume-session-sheet-DrNeskPy.js")
16658
16659
  ), l4 = $r(
16659
16660
  "ChangelogPage",
16660
- () => import("./ChangelogPage-DUGRtjic.js")
16661
+ () => import("./ChangelogPage-BKCiI0t4.js")
16661
16662
  ), ni = Qt("configured"), c4 = {
16662
16663
  claude: "Claude",
16663
16664
  codex: "Codex",
package/dist-lib/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
3
  import "@tanstack/react-router";
4
- import { af as m, ag as o, ah as s } from "./embedded-Ck10Okym.js";
4
+ import { af as m, ag as o, ah as s } from "./embedded-B6IaTsrk.js";
5
5
  export {
6
6
  m as OmgAppSurface,
7
7
  o as OmgSettingsSurface,
@@ -1,4 +1,4 @@
1
- import { f as h } from "./embedded-Ck10Okym.js";
1
+ import { f as h } from "./embedded-B6IaTsrk.js";
2
2
  /**
3
3
  * @license lucide-react v0.577.0 - ISC
4
4
  *
@@ -8,8 +8,8 @@
8
8
  "display": "standalone",
9
9
  "display_override": ["standalone", "minimal-ui"],
10
10
  "orientation": "portrait",
11
- "background_color": "#000000",
12
- "theme_color": "#000000",
11
+ "background_color": "#141414",
12
+ "theme_color": "#141414",
13
13
  "icons": [
14
14
  { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
15
15
  { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" },
@@ -1,5 +1,5 @@
1
1
  import { jsx as t, jsxs as s, Fragment as R } from "react/jsx-runtime";
2
- import { r as X, P as J, a as le, g as oe, h as ie, i as ce, X as K, A as P, R as Y, j as de, S as ue, k as Z, T as me, l as he, m as pe, C as fe, L as ge } from "./embedded-Ck10Okym.js";
2
+ import { r as X, P as J, a as le, g as oe, h as ie, i as ce, X as K, A as P, R as Y, j as de, S as ue, k as Z, T as me, l as he, m as pe, C as fe, L as ge } from "./embedded-B6IaTsrk.js";
3
3
  import { cn as x } from "cnfast";
4
4
  import { useState as a, useRef as E, useEffect as C, useCallback as xe } from "react";
5
5
  function be(r) {
@@ -1,5 +1,5 @@
1
1
  import { jsx as s, jsxs as a, Fragment as w } from "react/jsx-runtime";
2
- import { a as $, D as C, b as T, c as M, d as D, G as S, e as F, t as L, L as R } from "./embedded-Ck10Okym.js";
2
+ import { a as $, D as C, b as T, c as M, d as D, G as S, e as F, t as L, L as R } from "./embedded-B6IaTsrk.js";
3
3
  import { useState as g, useCallback as j, useEffect as z } from "react";
4
4
  import "@base-ui/react/collapsible";
5
5
  import { cn as P } from "cnfast";
@@ -1,6 +1,6 @@
1
1
  import { jsxs as o, jsx as r, Fragment as ce } from "react/jsx-runtime";
2
2
  import { useState as f, useEffect as v, useRef as ue, useContext as _e, useMemo as $e } from "react";
3
- import { f as Se, E as me, F as Te, H as _, I as fe, J as ze, N as Pe, O as Fe, B as Ge, L as he, Q as je, k as J, C as Ye, R as Be, T as Ke, U as Ue, v as pe, q as He, V as Ve, a as C, W as N, Y as D, w as R, Z as Q, _ as qe, $ as Je, a0 as Qe, a1 as Xe, n as Oe, a2 as We } from "./embedded-Ck10Okym.js";
3
+ import { f as Se, E as me, F as Te, H as _, I as fe, J as ze, N as Pe, O as Fe, B as Ge, L as he, Q as je, k as J, C as Ye, R as Be, T as Ke, U as Ue, v as pe, q as He, V as Ve, a as C, W as N, Y as D, w as R, Z as Q, _ as qe, $ as Je, a0 as Qe, a1 as Xe, n as Oe, a2 as We } from "./embedded-B6IaTsrk.js";
4
4
  import { cn as $ } from "cnfast";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
@@ -3,7 +3,7 @@ import { useMemo as We, useState as Ce, useEffect as xe, useRef as Ve } from "re
3
3
  import { r as He, t as T, o as Ue, u as be, y as L, A as Je, a as Qe } from "./chunk-YOKDWASO-B5AA2F8u.js";
4
4
  import { b as Xe, c as Ye, a as Ze, d as Ke } from "./engine-compile-D_stzVMa.js";
5
5
  import { cn as je } from "cnfast";
6
- import { a9 as et, y as tt, aa as nt } from "./embedded-Ck10Okym.js";
6
+ import { a9 as et, y as tt, aa as nt } from "./embedded-B6IaTsrk.js";
7
7
  const d = (
8
8
  /** @type {const} */
9
9
  {