@omg-dev/app 0.1.313 → 0.1.314

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,8 +1,8 @@
1
1
  import { jsxs as a, jsx as s } from "react/jsx-runtime";
2
2
  import { useRef as _, useState as f, useCallback as o, useLayoutEffect as me, useEffect as W } from "react";
3
- import { c as E, Z, ad as y, B as m, R as he, L as U, X as pe, k as J, ae as fe, af as Y, ag as ge, T as ye, H as be } from "./embedded-DkJNPkNV.js";
4
- import { B as xe } from "./badge-Ccc9P_y7.js";
5
- import { C as ve } from "./clipboard-paste-C58tGtpE.js";
3
+ import { c as E, Z, ad as y, B as m, R as he, L as U, X as pe, k as J, ae as fe, af as Y, ag as ge, T as ye, H as be } from "./embedded-XhhE9jRo.js";
4
+ import { B as xe } from "./badge-SW0JjvGR.js";
5
+ import { C as ve } from "./clipboard-paste-CwkeLxnB.js";
6
6
  /**
7
7
  * @license lucide-react v0.577.0 - ISC
8
8
  *
@@ -1,9 +1,49 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { M as n } from "./embedded-DkJNPkNV.js";
2
+ import { M as n } from "./embedded-XhhE9jRo.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 8, 2026 - The folder picker works on a fresh install (v0.1.314)
8
+
9
+ - **"Choose a project" no longer opens stuck on "Opening…".** On a brand new
10
+ install, before anyone touched a setting, the picker showed an empty listing
11
+ and "folder does not exist". \`.env\` is copied from \`.env.example\`, which
12
+ ships \`OMG_REPOS_ROOT=\` as documentation, and that empty value was read as a
13
+ deliberate answer rather than an unfilled placeholder — so the server had no
14
+ repos root and answered its own default-directory request with a 400.
15
+ - The picker's fallback, added in v0.1.305 so a missing folder could not strand
16
+ the drawer, landed on the same error: it falls back *to* the repos root, and
17
+ the repos root was the thing that was empty.
18
+ - Existing installs are repaired by updating — no \`.env\` edit needed. Re-running
19
+ \`omg setup\` also fills the placeholder in place.
20
+
21
+ ## August 8, 2026 - The worktree sweeper stays in its lane (v0.1.314)
22
+
23
+ - **The folder picker works on a brand-new install.** It could open on
24
+ "Opening…" with an empty listing and "folder does not exist", before anyone
25
+ had touched a setting: \`.env\` ships \`OMG_REPOS_ROOT=\` as documentation, and
26
+ an empty value was being read as a deliberate answer rather than a
27
+ placeholder. Empty and whitespace now count as unset — which repairs existing
28
+ installs with no \`.env\` edit — and setup fills the placeholder in place
29
+ instead of appending a second, conflicting assignment.
30
+
31
+ - **The sweeper no longer deletes worktrees it didn't create.** \`~/lfg-worktrees\`
32
+ is a shared directory, and the background cleanup treated everything in it as
33
+ its own — so a hand-made worktree, release checkout or clone parked there was
34
+ removed within minutes, dirty or not. It now only reclaims worktrees it
35
+ provisioned itself and leaves everything else alone permanently.
36
+ - **Uncommitted work is never deleted.** Even for its own worktrees, the sweeper
37
+ now checks for uncommitted changes before removing one and holds it back if
38
+ there are any. The liveness checks it used before were heuristics; this is a
39
+ fact about the contents. Ignored files don't count, so a clean-but-built
40
+ worktree is still cleaned up.
41
+ - **Cleanup no longer piles onto server restarts.** The first sweep ran 30
42
+ seconds after startup — before session recovery had re-adopted running
43
+ sessions, when the most worktrees look abandoned. Every multi-worktree
44
+ deletion we observed happened within 40 seconds of a restart. It now waits
45
+ five minutes.
46
+
7
47
  ## August 8, 2026 - omg.local, with no password prompt (v0.1.313)
8
48
 
9
49
  - **The web UI answers on \`http://omg.local:8766\` on macOS.** No sudo, no
@@ -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 { c as oe, H, I as se, X as U, J as ie, K as ae, g as y, L as J, N as le, C as de, y as ce, O as L } from "./embedded-DkJNPkNV.js";
4
+ import { c as oe, H, I as se, X as U, J as ie, K as ae, g as y, L as J, N as le, C as de, y as ce, O as L } from "./embedded-XhhE9jRo.js";
5
5
  import { c as me } from "./create-BrnHvSDE.js";
6
6
  /**
7
7
  * @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 S, useEffect as x, useCallback as Y } from "react";
3
- import { c as yA, S as wQ, X as DA, a9 as sQ, C as tQ, aa as eQ, ab as aQ, H as MQ, ac as hQ, R as NQ, y as cQ } from "./embedded-DkJNPkNV.js";
4
- import { C as jA } from "./clipboard-paste-C58tGtpE.js";
3
+ import { c as yA, S as wQ, X as DA, a9 as sQ, C as tQ, aa as eQ, ab as aQ, H as MQ, ac as hQ, R as NQ, y as cQ } from "./embedded-XhhE9jRo.js";
4
+ import { C as jA } from "./clipboard-paste-CwkeLxnB.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *
@@ -1,4 +1,4 @@
1
- import { z as a, E as n, g as d, F as o } from "./embedded-DkJNPkNV.js";
1
+ import { z as a, E as n, g as d, F as o } from "./embedded-XhhE9jRo.js";
2
2
  function s(e) {
3
3
  return a(e.defaultTagName ?? "div", e, e);
4
4
  }
@@ -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 { ah as uo } from "./embedded-DkJNPkNV.js";
4
+ import { ah as uo } from "./embedded-XhhE9jRo.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,4 +1,4 @@
1
- import { c as e } from "./embedded-DkJNPkNV.js";
1
+ import { c as e } from "./embedded-XhhE9jRo.js";
2
2
  /**
3
3
  * @license lucide-react v0.577.0 - ISC
4
4
  *
@@ -1,6 +1,6 @@
1
1
  import { jsxs as i, jsx as s } from "react/jsx-runtime";
2
- import { R as L, g as B, S as h, C as x, X as p, B as l, L as b, P as N, h as T, i as v, j as $, k as y, T as O, l as d, m as g } from "./embedded-DkJNPkNV.js";
3
- import { B as n } from "./badge-Ccc9P_y7.js";
2
+ import { R as L, g as B, S as h, C as x, X as p, B as l, L as b, P as N, h as T, i as v, j as $, k as y, T as O, l as d, m as g } from "./embedded-XhhE9jRo.js";
3
+ import { B as n } from "./badge-SW0JjvGR.js";
4
4
  import { useState as G } from "react";
5
5
  function q({
6
6
  setupChecks: c,
@@ -20323,7 +20323,7 @@ function ML({
20323
20323
  }
20324
20324
  const IL = So(
20325
20325
  "session-files-panel",
20326
- () => import("./SessionFilesPanel-evtTCSo8.js")
20326
+ () => import("./SessionFilesPanel-BQhTe3bf.js")
20327
20327
  ), _L = Tl(
20328
20328
  () => import("./index-DhYD46ms.js").then((e) => ({ default: e.PatchDiff }))
20329
20329
  );
@@ -26206,7 +26206,7 @@ async function XB() {
26206
26206
  }
26207
26207
  }
26208
26208
  const q$ = Tl(
26209
- () => import("./streamdown-response-BmWUvRSr.js").then((e) => e.a).then((e) => ({ default: e.StreamdownResponse }))
26209
+ () => import("./streamdown-response-C02erRqP.js").then((e) => e.a).then((e) => ({ default: e.StreamdownResponse }))
26210
26210
  );
26211
26211
  function Ri({ className: e, from: t, ...n }) {
26212
26212
  return /* @__PURE__ */ c(
@@ -28633,26 +28633,26 @@ function lz({ className: e, isStreaming: t, children: n, ...r }) {
28633
28633
  function uz({ className: e, children: t, ...n }) {
28634
28634
  return /* @__PURE__ */ c(iz, { className: te("mt-2 text-sm", e), ...n, children: /* @__PURE__ */ c(gu, { className: "ai-live-text max-w-full opacity-90", children: t }) });
28635
28635
  }
28636
- const dz = Tl(() => import("./chat-engine-qWEP8dP9.js"));
28636
+ const dz = Tl(() => import("./chat-engine-DAiB8WCG.js"));
28637
28637
  function fz() {
28638
- const e = () => void import("./chat-engine-qWEP8dP9.js"), t = globalThis.requestIdleCallback;
28638
+ const e = () => void import("./chat-engine-DAiB8WCG.js"), t = globalThis.requestIdleCallback;
28639
28639
  typeof t == "function" ? t(e, { timeout: 3e3 }) : setTimeout(e, 1500);
28640
28640
  }
28641
28641
  const Kk = So(
28642
28642
  "TermView",
28643
- () => import("./TermView-BLrojlpG.js").then((e) => ({ default: e.TermView }))
28644
- ), mz = So("BrowserProfiles", () => import("./BrowserProfiles-Crs8iOWi.js")), Wy = So("ShippedPage", () => import("./shipped-page-p3Rp58sd.js")), pz = So(
28643
+ () => import("./TermView-BTUwyV4g.js").then((e) => ({ default: e.TermView }))
28644
+ ), mz = So("BrowserProfiles", () => import("./BrowserProfiles-CxyA28MT.js")), Wy = So("ShippedPage", () => import("./shipped-page-3x93oT38.js")), pz = So(
28645
28645
  "SessionTokenUsageDialog",
28646
- () => import("./session-token-usage-JZELdGNz.js")
28646
+ () => import("./session-token-usage-BAJoaUM1.js")
28647
28647
  ), hz = So(
28648
28648
  "CodingAgentsPage",
28649
- () => import("./coding-agents-page-b_R-Xvh_.js")
28649
+ () => import("./coding-agents-page-DMQS-oRB.js")
28650
28650
  ), Gy = So(
28651
28651
  "ResumeSessionSheet",
28652
- () => import("./resume-session-sheet-D1sam0RD.js")
28652
+ () => import("./resume-session-sheet-A5i1S1Ha.js")
28653
28653
  ), gz = So(
28654
28654
  "ChangelogPage",
28655
- () => import("./ChangelogPage-Ca_8TgTL.js")
28655
+ () => import("./ChangelogPage-C5Vjl3CL.js")
28656
28656
  ), yu = br("configured"), bz = {
28657
28657
  claude: "Claude",
28658
28658
  codex: "Codex",
@@ -1,4 +1,4 @@
1
- import { R as c, L as f, A as d } from "./streamdown-response-BmWUvRSr.js";
1
+ import { R as c, L as f, A as d } from "./streamdown-response-C02erRqP.js";
2
2
  import { useContext as p, useState as L, useEffect as N } from "react";
3
3
  import { jsx as x } from "react/jsx-runtime";
4
4
  var A = ({ code: s, language: e, raw: a, className: o, startLine: m, lineNumbers: u, ...g }) => {
@@ -1,4 +1,4 @@
1
- import { w as T, s as U, h as X, c as Y, v as G, S as J, o as k, l as Q, f as M, m as y } from "./streamdown-response-BmWUvRSr.js";
1
+ import { w as T, s as U, h as X, c as Y, v as G, S as J, o as k, l as Q, f as M, m as y } from "./streamdown-response-C02erRqP.js";
2
2
  import v from "./katex-jHfnQmlp.js";
3
3
  function Z(t, e) {
4
4
  return B(t, {}) || { type: "root", children: [] };
package/dist-lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import { aj as p, ak as m, al as o } from "./embedded-DkJNPkNV.js";
3
+ import { aj as p, ak as m, al as o } from "./embedded-XhhE9jRo.js";
4
4
  export {
5
5
  p as OmgAppSurface,
6
6
  m as OmgSettingsSurface,
@@ -0,0 +1,4 @@
1
+ import { p } from "./streamdown-response-C02erRqP.js";
2
+ export {
3
+ p as Mermaid
4
+ };
@@ -1,5 +1,5 @@
1
1
  import { jsx as t, jsxs as s, Fragment as N } from "react/jsx-runtime";
2
- import { r as H, n as Q, a as le, o as re, p as oe, q as ie, X, A, g as u, R as B, s as ce, u as de, v as J, T as ue, w as me, x as he, y as pe, L as fe } from "./embedded-DkJNPkNV.js";
2
+ import { r as H, n as Q, a as le, o as re, p as oe, q as ie, X, A, g as u, R as B, s as ce, u as de, v as J, T as ue, w as me, x as he, y as pe, L as fe } from "./embedded-XhhE9jRo.js";
3
3
  import { useState as a, useRef as L, useEffect as v, useCallback as ge } from "react";
4
4
  function we({
5
5
  initial: m,
@@ -1,5 +1,5 @@
1
1
  import { jsx as s, jsxs as n, Fragment as $ } from "react/jsx-runtime";
2
- import { a as C, D as T, b as M, d as D, e as S, G as F, f as L, t as R, L as j, g as z } from "./embedded-DkJNPkNV.js";
2
+ import { a as C, D as T, b as M, d as D, e as S, G as F, f as L, t as R, L as j, g as z } from "./embedded-XhhE9jRo.js";
3
3
  import { useState as g, useCallback as P, useEffect as U } from "react";
4
4
  function u({
5
5
  title: r,
@@ -1,6 +1,6 @@
1
1
  import { jsxs as l, jsx as r, Fragment as me } from "react/jsx-runtime";
2
2
  import { useState as f, useEffect as w, useRef as fe, useContext as $e, useMemo as Te } from "react";
3
- import { c as ve, Q as he, U as ze, V as S, W as ge, Y as Se, Z as Pe, _ as je, B as Fe, L as pe, v as J, y as Ye, R as Ge, g as P, T as Be, $ as Ke, h as be, i as Ue, a0 as He, a as L, a1 as k, a2 as R, m as _, a3 as W, a4 as Ve, a5 as qe, a6 as Qe, a7 as Xe, P as Je, a8 as We } from "./embedded-DkJNPkNV.js";
3
+ import { c as ve, Q as he, U as ze, V as S, W as ge, Y as Se, Z as Pe, _ as je, B as Fe, L as pe, v as J, y as Ye, R as Ge, g as P, T as Be, $ as Ke, h as be, i as Ue, a0 as He, a as L, a1 as k, a2 as R, m as _, a3 as W, a4 as Ve, a5 as qe, a6 as Qe, a7 as Xe, P as Je, a8 as We } from "./embedded-XhhE9jRo.js";
4
4
  /**
5
5
  * @license lucide-react v0.577.0 - ISC
6
6
  *
@@ -3,7 +3,7 @@ var Od = (e, t, n) => t in e ? Rd(e, t, { enumerable: !0, configurable: !0, writ
3
3
  var le = (e, t, n) => Od(e, typeof t != "symbol" ? t + "" : t, n);
4
4
  import { jsx as y, jsxs as J, Fragment as _t } from "react/jsx-runtime";
5
5
  import { memo as he, useId as Dd, useTransition as Pd, useMemo as Ee, useRef as Re, useEffect as De, useState as ge, createElement as Xa, isValidElement as Vt, cloneElement as Md, useContext as Pe, createContext as Jt, useCallback as ze, Suspense as wi, lazy as Zu } from "react";
6
- import { ai as Ju, g as eo, a9 as vd, C as Bd, aa as Fd } from "./embedded-DkJNPkNV.js";
6
+ import { ai as Ju, g as eo, a9 as vd, C as Bd, aa as Fd } from "./embedded-XhhE9jRo.js";
7
7
  import { createPortal as to } from "react-dom";
8
8
  import { f as Ur, p as Ka, e as Za, g as Ja, h as Jn, s as Mt, z as no, i as ro, j as io, k as Hd, l as es, w as Ud, b as zd, c as $d, m as jd, d as qd } from "./engine-compile-BeZvvx0I.js";
9
9
  import { g as ao } from "./_commonjsHelpers-C6fGbg64.js";
@@ -18959,7 +18959,7 @@ var yc = Jt(!1), kk = () => Pe(yc), Ua = (...e) => nc(Ju(e)), xk = (e, t) => {
18959
18959
  for (; t > 0 && e[t - 1] === `
18960
18960
  `; ) t--;
18961
18961
  return e.slice(0, t);
18962
- }, wk = Zu(() => import("./highlighted-body-OFNGDK62-DbU5aODl.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), Lk = ({ code: e, language: t, className: n, children: r, isIncomplete: i = !1, startLine: a, lineNumbers: s, ...u }) => {
18962
+ }, wk = Zu(() => import("./highlighted-body-OFNGDK62-2u9puCxI.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), Lk = ({ code: e, language: t, className: n, children: r, isIncomplete: i = !1, startLine: a, lineNumbers: s, ...u }) => {
18963
18963
  let o = ee(), l = Ee(() => Sk(e), [e]), d = Ee(() => ({ bg: "transparent", fg: "inherit", tokens: l.split(`
18964
18964
  `).map((f) => [{ content: f, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [l]);
18965
18965
  return y(Cc.Provider, { value: { code: e }, children: J(Ik, { isIncomplete: i, language: t, children: [y(Nk, { language: t }), r ? y("div", { className: o("pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end"), children: y("div", { className: o("pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur"), "data-streamdown": "code-block-actions", children: r }) }) : null, y(wi, { fallback: y(Ck, { className: n, language: t, lineNumbers: s, result: d, startLine: a, ...u }), children: y(wk, { className: n, code: l, language: t, lineNumbers: s, raw: d, startLine: a, ...u }) })] }) });
@@ -19301,7 +19301,7 @@ var yc = Jt(!1), kk = () => Pe(yc), Ua = (...e) => nc(Ju(e)), xk = (e, t) => {
19301
19301
  }, Zk = ({ children: e, className: t, showControls: n, showCopy: r = !0, showDownload: i = !0, showFullscreen: a = !0, ...s }) => {
19302
19302
  let u = ee(), o = n && r, l = n && i, d = n && a, f = o || l || d;
19303
19303
  return J("div", { className: u("my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2"), "data-streamdown": "table-wrapper", children: [f ? J("div", { className: u("flex items-center justify-end gap-1"), children: [o ? y(Rc, {}) : null, l ? y(Oc, {}) : null, d ? y(Kk, { showCopy: o, showDownload: l, children: e }) : null] }) : null, y("div", { className: u("border-collapse overflow-x-auto overflow-y-auto rounded-md border border-border bg-background"), children: y("table", { className: u("w-full divide-y divide-border", t), "data-streamdown": "table", ...s, children: e }) })] });
19304
- }, Jk = /startLine=(\d+)/, ex = /\bnoLineNumbers\b/, tx = Zu(() => import("./mermaid-GHXKKRXX-D3ipvS5b.js").then((e) => ({ default: e.Mermaid }))), nx = /language-([^\s]+)/;
19304
+ }, Jk = /startLine=(\d+)/, ex = /\bnoLineNumbers\b/, tx = Zu(() => import("./mermaid-GHXKKRXX-DEXmF8eP.js").then((e) => ({ default: e.Mermaid }))), nx = /language-([^\s]+)/;
19305
19305
  function Jr(e, t) {
19306
19306
  if (!(e != null && e.position || t != null && t.position)) return !0;
19307
19307
  if (!(e != null && e.position && t != null && t.position)) return !1;
@@ -20814,7 +20814,7 @@ function S6(e) {
20814
20814
  }
20815
20815
  function w6() {
20816
20816
  return Tr || (Tr = Promise.all([
20817
- import("./index-B1tL17K-.js"),
20817
+ import("./index-B1bbp4P_.js"),
20818
20818
  import("./index-JkCQXUYs.js").then((e) => e.bp)
20819
20819
  ]).then(([e, t]) => {
20820
20820
  Hn = { math: e.math, mermaid: t.mermaid };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omg-dev/app",
3
- "version": "0.1.313",
3
+ "version": "0.1.314",
4
4
  "description": "The full OMG application surface for React hosts.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://omg.dev",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "type": "module",
26
26
  "dependencies": {
27
- "@omg-dev/client": "0.1.313",
27
+ "@omg-dev/client": "0.1.314",
28
28
  "@ai-sdk/react": "^4.0.19",
29
29
  "@base-ui/react": "^1.3.0",
30
30
  "@number-flow/react": "^0.6.2",
@@ -1,4 +0,0 @@
1
- import { p } from "./streamdown-response-BmWUvRSr.js";
2
- export {
3
- p as Mermaid
4
- };