@omg-dev/app 0.1.359 → 0.1.361

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,39 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { M as n } from "./embedded-BIqLzQAm.js";
2
+ import { M as n } from "./embedded-BPTnKZoe.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 13, 2026 - The dashboard stops asking your CLIs if they are logged in on every load (v0.1.361)
8
+
9
+ - **Opening the dashboard was costing a second and a half of pure waiting.**
10
+ Every page load asked each coding agent whether it was signed in, and it
11
+ asked by actually running them: \`cursor-agent status\` starts a whole Node
12
+ runtime, \`jcode auth status\` runs a shell wrapper. That is 26 processes
13
+ spawned per load, measured at 1542ms, to re-answer a question that only
14
+ changes when you log in or out of something.
15
+ - **It was also holding up everything else on the box.** That probe ran
16
+ synchronously, so while it worked, nothing else the server was doing could
17
+ make progress. It is why small requests landed at two seconds during a cold
18
+ open: a config endpoint that does 1ms of work was measured at 1918ms, and
19
+ the same endpoint took 307ms when nothing else was competing with it.
20
+ - **The answer is cached for a minute now, and dropped the moment it can
21
+ change.** Connecting an account, running setup, adding a key or logging in
22
+ through the terminal all clear it, so what you see is still current. Hitting
23
+ Refresh in Settings still forces the full check.
24
+
25
+ ## August 13, 2026 - The keyboard stops pushing sheets off the screen (v0.1.360)
26
+
27
+ - **The project picker and the Resume sheet now grow into a page when you tap a
28
+ field.** Naming a new project folder, or searching your prompts and sessions,
29
+ used to leave the field pinned under the phone keyboard: the sheet is sized to
30
+ its contents, and iOS simply shoves that off the top of the screen. Both
31
+ sheets now do what the auto agent forms already did and become a full-height
32
+ page, so the field stays visible and the list keeps the space above it.
33
+ - **Nothing you have typed disappears when the keyboard goes away.** Folding
34
+ back down waits, ignores a tap heading for the sheet's own buttons, and stays
35
+ open while any field still holds text.
36
+
7
37
  ## August 13, 2026 - Settings cannot take the app down on a bad update check (v0.1.359)
8
38
 
9
39
  - **Opening Settings no longer crashes if the update payload is empty.** The
@@ -3843,9 +3873,9 @@ Container deploys and hosted setup docs are now part of the project workflow.
3843
3873
  - Published bundled-release flow for cloud installs.
3844
3874
  - Documented operational scripts for voice and GPU STT deployments.
3845
3875
  `;
3846
- function s() {
3876
+ function o() {
3847
3877
  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 }) }) });
3848
3878
  }
3849
3879
  export {
3850
- s as default
3880
+ o as default
3851
3881
  };
@@ -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-BIqLzQAm.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-BPTnKZoe.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-BIqLzQAm.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-BPTnKZoe.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-BIqLzQAm.js";
4
+ import { ad as uo } from "./embedded-BPTnKZoe.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-BIqLzQAm.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-BPTnKZoe.js";
3
3
  import { useState as S } from "react";
4
4
  function j(l) {
5
5
  const i = l.filter((r) => !r.ok);