@omg-dev/app 0.1.358 → 0.1.360

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,29 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { M as n } from "./embedded-CqHb0ozW.js";
2
+ import { M as n } from "./embedded-DCw_2NEq.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 13, 2026 - The keyboard stops pushing sheets off the screen (v0.1.360)
8
+
9
+ - **The project picker and the Resume sheet now grow into a page when you tap a
10
+ field.** Naming a new project folder, or searching your prompts and sessions,
11
+ used to leave the field pinned under the phone keyboard: the sheet is sized to
12
+ its contents, and iOS simply shoves that off the top of the screen. Both
13
+ sheets now do what the auto agent forms already did and become a full-height
14
+ page, so the field stays visible and the list keeps the space above it.
15
+ - **Nothing you have typed disappears when the keyboard goes away.** Folding
16
+ back down waits, ignores a tap heading for the sheet's own buttons, and stays
17
+ open while any field still holds text.
18
+
19
+ ## August 13, 2026 - Settings cannot take the app down on a bad update check (v0.1.359)
20
+
21
+ - **Opening Settings no longer crashes if the update payload is empty.** The
22
+ last fix refused to store a bad \`/api/install\` answer, but the row still
23
+ read \`info?.install.channel\`. That only guards \`info\`. A missing \`install\`
24
+ still threw, and the router boundary replaced the whole app. The read now
25
+ chains through \`install\` as well, and a throw in that row stays in that row.
26
+
7
27
  ## August 13, 2026 - Settings stops crashing when an update check comes back empty (v0.1.358)
8
28
 
9
29
  - **Opening Settings no longer takes the app down.** The update check assumed the
@@ -3835,9 +3855,9 @@ Container deploys and hosted setup docs are now part of the project workflow.
3835
3855
  - Published bundled-release flow for cloud installs.
3836
3856
  - Documented operational scripts for voice and GPU STT deployments.
3837
3857
  `;
3838
- function s() {
3858
+ function o() {
3839
3859
  return /* @__PURE__ */ e("div", { className: "mx-auto max-w-xl space-y-5 pb-10", children: /* @__PURE__ */ e("article", { className: "markdown rounded-2xl border border-border bg-card/40 px-4 py-4", children: /* @__PURE__ */ e(n, { children: t }) }) });
3840
3860
  }
3841
3861
  export {
3842
- s as default
3862
+ o as default
3843
3863
  };
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as i, 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 I } from "react";
3
3
  import { createPortal as re } from "react-dom";
4
- import { z as oe, E as H, F as se, X as U, H as ie, I as ae, f as y, L as J, J as le, m as de, y as ce, N as L } from "./embedded-CqHb0ozW.js";
4
+ import { E as oe, F as H, H as se, X as U, I as ie, J as ae, f as y, L as J, N as le, m as de, z as ce, O as L } from "./embedded-DCw_2NEq.js";
5
5
  import { c as me } from "./create-BrnHvSDE.js";
6
6
  /**
7
7
  * @license lucide-react v0.577.0 - ISC
@@ -80,7 +80,7 @@ function ke({ tree: n, onNavigate: s }) {
80
80
  );
81
81
  }
82
82
  function we({ sid: n, onClose: s }) {
83
- const [o, c] = m(null), [t, h] = m(null), [k, x] = m(null), [g, j] = m(null), [a, z] = m(null), [R, $] = m(null), [W, P] = m(!1), [u, w] = m(!1), [S, A] = m(""), [p, f] = m({ kind: "idle" }), [V, E] = m("tree"), M = ye(), b = T(null), X = v((r) => {
83
+ const [o, c] = m(null), [t, h] = m(null), [k, x] = m(null), [g, j] = m(null), [a, z] = m(null), [R, $] = m(null), [W, P] = m(!1), [u, w] = m(!1), [S, O] = m(""), [p, f] = m({ kind: "idle" }), [V, E] = m("tree"), A = ye(), b = T(null), X = v((r) => {
84
84
  b.current = r;
85
85
  }, []), F = T(null);
86
86
  C(() => {
@@ -100,14 +100,14 @@ function we({ sid: n, onClose: s }) {
100
100
  }, [s]);
101
101
  const D = v(
102
102
  (r) => {
103
- t && (E("file"), r !== F.current && (F.current = r, j(r), w(!1), f({ kind: "idle" }), A(""), b.current = null, z(null), $(null), P(!0), _(
103
+ t && (E("file"), r !== F.current && (F.current = r, j(r), w(!1), f({ kind: "idle" }), O(""), b.current = null, z(null), $(null), P(!0), _(
104
104
  `/api/sessions/${n}/file?path=${encodeURIComponent(`${t.root}/${r}`)}`
105
105
  ).then((d) => {
106
106
  z(d.file), b.current = d.file.contents;
107
107
  }).catch((d) => $(d instanceof Error ? d.message : String(d))).finally(() => P(!1))));
108
108
  },
109
109
  [n, t]
110
- ), O = v((r) => {
110
+ ), M = v((r) => {
111
111
  c(r), F.current = null, j(null), z(null), w(!1), E("tree");
112
112
  }, []), K = v(() => E("tree"), []), Y = q(
113
113
  () => a ? { ...a, contents: b.current ?? a.contents } : null,
@@ -171,13 +171,13 @@ function we({ sid: n, onClose: s }) {
171
171
  /* @__PURE__ */ e(se, { className: "size-4 shrink-0 text-[var(--primary)]" }),
172
172
  /* @__PURE__ */ i("div", { className: "min-w-0 flex-1", children: [
173
173
  /* @__PURE__ */ e("div", { className: "text-sm font-semibold text-foreground", children: "Files" }),
174
- t ? /* @__PURE__ */ e(ke, { tree: t, onNavigate: O }) : null
174
+ t ? /* @__PURE__ */ e(ke, { tree: t, onNavigate: M }) : null
175
175
  ] }),
176
176
  t != null && t.parent ? /* @__PURE__ */ i(
177
177
  "button",
178
178
  {
179
179
  type: "button",
180
- onClick: () => O(t.parent),
180
+ onClick: () => M(t.parent),
181
181
  className: "flex min-h-9 shrink-0 items-center gap-1.5 rounded-lg border border-border px-2.5 text-[12px] text-muted-foreground transition-colors hover:bg-muted hover:text-foreground md:min-h-0 md:px-2 md:py-1 md:text-[11px]",
182
182
  children: [
183
183
  /* @__PURE__ */ e(pe, { className: "size-3.5 md:size-3" }),
@@ -272,7 +272,7 @@ function we({ sid: n, onClose: s }) {
272
272
  R ? /* @__PURE__ */ i("div", { className: "px-3 py-2 text-[12px] text-[var(--destructive)]", children: [
273
273
  "Could not open: ",
274
274
  R
275
- ] }) : W || !a ? /* @__PURE__ */ e(N, { label: "Opening…" }) : a.binary ? /* @__PURE__ */ e("div", { className: "px-3 py-3 text-[12px] text-muted-foreground", children: "Binary file — not shown." }) : /* @__PURE__ */ e(I, { fallback: /* @__PURE__ */ e(N, { label: u ? "Loading editor…" : "Rendering…" }), children: u ? /* @__PURE__ */ e(ve, { file: Y ?? a, themeType: M, onChange: X }) : /* @__PURE__ */ e(be, { file: a, themeType: M }) }),
275
+ ] }) : W || !a ? /* @__PURE__ */ e(N, { label: "Opening…" }) : a.binary ? /* @__PURE__ */ e("div", { className: "px-3 py-3 text-[12px] text-muted-foreground", children: "Binary file — not shown." }) : /* @__PURE__ */ e(I, { fallback: /* @__PURE__ */ e(N, { label: u ? "Loading editor…" : "Rendering…" }), children: u ? /* @__PURE__ */ e(ve, { file: Y ?? a, themeType: A, onChange: X }) : /* @__PURE__ */ e(be, { file: a, themeType: A }) }),
276
276
  a != null && a.truncated ? /* @__PURE__ */ e("div", { className: "px-3 py-1.5 text-[11px] text-[var(--warning)]", children: "File truncated — only the first megabyte is shown." }) : null
277
277
  ]
278
278
  }
@@ -289,7 +289,7 @@ function we({ sid: n, onClose: s }) {
289
289
  "textarea",
290
290
  {
291
291
  value: S,
292
- onChange: (r) => A(r.target.value),
292
+ onChange: (r) => O(r.target.value),
293
293
  rows: 2,
294
294
  placeholder: "Optional: anything else the agent should do alongside this edit",
295
295
  className: "w-full resize-none rounded-lg border border-border bg-card px-2.5 py-2 text-[12px] text-foreground outline-none placeholder:text-muted-foreground focus:border-[var(--primary)]/50"
@@ -1,6 +1,6 @@
1
1
  import { jsxs as r, jsx as k, Fragment as ZA } from "react/jsx-runtime";
2
2
  import { useState as L, useRef as S, useEffect as x, useCallback as Y } from "react";
3
- import { z as cA, S as wQ, X as DA, a8 as sQ, m as tQ, a9 as eQ, aa as aQ, E as MQ, ab as hQ, R as NQ, y as cQ } from "./embedded-CqHb0ozW.js";
3
+ import { E as cA, S as wQ, X as DA, a9 as sQ, m as tQ, aa as eQ, ab as aQ, F as MQ, ac as hQ, R as NQ, z as cQ } from "./embedded-DCw_2NEq.js";
4
4
  /**
5
5
  * @license lucide-react v0.577.0 - ISC
6
6
  *
@@ -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 { ac as uo } from "./embedded-CqHb0ozW.js";
4
+ import { ad as uo } from "./embedded-DCw_2NEq.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 G } from "react/jsx-runtime";
2
- import { R as K, f as L, B as d, L as C, P as z, S as w, g as R, h as p, T, i as m, j as F, k as M, l as $, C as _, m as q, X as H, K as U } from "./embedded-CqHb0ozW.js";
2
+ import { R as K, f as L, B as d, L as C, P as z, S as w, g as R, h as p, T, i as m, j as F, k as M, l as $, C as _, m as q, X as H, K as U } from "./embedded-DCw_2NEq.js";
3
3
  import { useState as S } from "react";
4
4
  function j(l) {
5
5
  const i = l.filter((r) => !r.ok);