@omg-dev/app 0.3.0 → 0.5.0

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.
Files changed (27) hide show
  1. package/dist-lib/{ChangelogPage-tITBP5A1.js → ChangelogPage-8lbvM9Pz.js} +109 -1
  2. package/dist-lib/{File-BszRWhXA.js → File-B-qYa2zY.js} +1 -1
  3. package/dist-lib/{FileEditor-ByMnm-sa.js → FileEditor-BIz0qCyW.js} +2 -2
  4. package/dist-lib/{FileViewer-DgjR_OJp.js → FileViewer-Clmf04v1.js} +1 -1
  5. package/dist-lib/{SessionFilesPanel-T3CkIp2a.js → SessionFilesPanel-BKcTU57t.js} +2 -2
  6. package/dist-lib/{TermView-BJiSY2oC.js → TermView-gazV6UMU.js} +1 -1
  7. package/dist-lib/{chat-engine-ChrOJLdY.js → chat-engine-83mwx0z2.js} +1 -1
  8. package/dist-lib/{streamdown-response-Bt7VM-cZ.js → chunk-BO2N2NFS-kYiI5SD9.js} +5006 -6023
  9. package/dist-lib/{coding-agents-page-Bsy-dsUo.js → coding-agents-page-8Nf-IuE2.js} +80 -80
  10. package/dist-lib/embedded-BmrQsEvQ.js +32771 -0
  11. package/dist-lib/engine-compile-BeDRSL6Y.js +9199 -0
  12. package/dist-lib/{highlighted-body-OFNGDK62-bfel3kiX.js → highlighted-body-OFNGDK62-C2DGVKV8.js} +4 -4
  13. package/dist-lib/index-BXzud6tj.js +1247 -0
  14. package/dist-lib/{index-BNac_jIC.js → index-DWkBvb-9.js} +27 -27
  15. package/dist-lib/{index-Bw4EY_Nm.js → index-DcwavxA1.js} +3 -3
  16. package/dist-lib/index-Dtkd4mEk.js +29 -0
  17. package/dist-lib/index.js +1 -1
  18. package/dist-lib/mermaid-GHXKKRXX-Ox_2d3uB.js +4 -0
  19. package/dist-lib/{resume-session-sheet-CsBKi_wb.js → resume-session-sheet-Dr_81Gfm.js} +1 -1
  20. package/dist-lib/{session-token-usage-CTQR54Yk.js → session-token-usage-CGhHZ3lT.js} +1 -1
  21. package/dist-lib/{shipped-page-B46DR9zS.js → shipped-page-p3oulUiM.js} +1 -1
  22. package/dist-lib/streamdown-response-Dbn0PKUH.js +1051 -0
  23. package/dist-lib/styles.css +1 -1
  24. package/package.json +4 -2
  25. package/dist-lib/embedded-cpSkU0tg.js +0 -28023
  26. package/dist-lib/engine-compile-BeZvvx0I.js +0 -10442
  27. package/dist-lib/mermaid-GHXKKRXX-CTlo5kzO.js +0 -4
@@ -1,9 +1,117 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { M as n } from "./embedded-cpSkU0tg.js";
2
+ import { M as n } from "./embedded-BmrQsEvQ.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 24, 2026 - A transcript that stays fast, and can be searched (v0.5.0)
8
+
9
+ - **Tool-heavy sessions are readable again.** The transcript asked the server for
10
+ 80 raw messages, but the screen shows collapsed rows, and one run of tool calls
11
+ collapses into a single pill. A session that was mostly tool work therefore
12
+ arrived as three rows on an otherwise empty screen, and it could not page back,
13
+ because the page did not overflow and the backfill only ran when it did.
14
+ Paging is now measured in rows, so a page always carries enough to read. The
15
+ row rule has one definition that the server and the browser share.
16
+ - **A find bar for the transcript.** Virtualization keeps only the rows near the
17
+ viewport in the page, so the browser find command can only see those. Search
18
+ now runs on the server, over the whole session, and jumps to the row that
19
+ matched. It reports how many matches exist, walks forward and backward, and
20
+ keeps loading older pages while it hunts for a match that is not loaded yet.
21
+ It does not take over Control+F, because that would be a hostile default.
22
+ - **Sending a message during a reply no longer doubles the reply.** The chat
23
+ library appends a new copy of a message when the incoming update does not
24
+ match the end of the list. Sending mid-reply moved the reply away from the
25
+ end, so a second copy appeared, and the two drew on top of each other. The
26
+ live turn is now kept at the end, and an older copy of it is dropped.
27
+ - **Images no longer reload when you scroll back to them.** Off-screen rows are
28
+ removed from the page, so returning to an image used to download it again and
29
+ show the loading pulse again. Images and video now load in the element itself,
30
+ so the browser cache serves them. Video also seeks properly now, instead of
31
+ downloading the whole file first. The hosted surface keeps the previous path,
32
+ because it authenticates with a header.
33
+
34
+ ## August 23, 2026 - A quieter composer, and Manage sessions is gone (v0.4.0)
35
+
36
+ - **New: one-shot commands over the API.** \`POST /api/exec\` runs a single
37
+ shell command in a configured repo and returns its output, exit code and
38
+ timing. It exists for a caller reaching this box from somewhere else — an
39
+ agent on another machine had no way to read a file short of starting a whole
40
+ coding-agent session. Capped deliberately: 60s by default and 120s at most,
41
+ 64KB per stream keeping both the start and the end of the output, and the
42
+ working directory must resolve to a repo this computer already knows.
43
+ Anything longer belongs in a session.
44
+ - **Requests are size-limited.** A body over 32MB is now rejected with a 413
45
+ instead of being read into memory. Uploads that legitimately pass through
46
+ this server, like session artifact images and videos, are well under it.
47
+ - **The chat composer is rebuilt.** The bar gives the text more room without
48
+ growing its buttons, which stay at a full 40px touch target. Send is an arrow
49
+ that only appears once there is something to send. Attach is a plus that moved
50
+ inside the bar. The mic is a real circle, and send sits beside it.
51
+ Hold-to-queue and Cmd/Ctrl+Enter still queue. Voice lives entirely on the mic
52
+ button now: tap to dictate, hold to talk, drag to cancel.
53
+ - **Removed: the "/" button in the composer.** Typing "/" still opens the skill
54
+ suggestions, but nothing on screen advertises them any more. That is what the
55
+ composer rework costs, and it is recorded here rather than glossed over.
56
+ - **Removed: "Manage sessions".** The submenu is gone, along with the five
57
+ agent-driven templates behind it, the path that launched an agent from one,
58
+ and the clear-idle action. \`POST /api/sessions/close-all\` went with it,
59
+ because that action was its only caller. Closing a single session is
60
+ untouched, and so is reclaiming an idle one under memory pressure.
61
+ - **The transcript glides instead of jumping.** Staying stuck to the bottom used
62
+ to set the scroll position instantly on every change, which raced the entrance
63
+ animations and produced a jump under a still-arriving message. Appends, the
64
+ typing indicator, and re-engaging stick now animate. A message streaming in
65
+ place still snaps, because a smooth scroll cannot keep up with 30ms token
66
+ gaps. A reader who has scrolled up is still left alone.
67
+ - **Sending a message no longer stutters the scroll.** Three separate triggers
68
+ fired on send, and each one restarted the eased scroll from zero, so the
69
+ transcript hitched instead of settling. The glide is now started once and
70
+ left to finish. A wheel, a touch, or a pointer press cancels it immediately,
71
+ so the view can no longer pull away from a reader who is scrolling up.
72
+ - **The transcript re-renders less while a message streams.** Every arriving
73
+ token re-rendered every message and every tool group in the session. Those
74
+ are now compared before they redraw. On a long streaming session this took
75
+ dropped frames from 81 to 32, and layout recalculations from 1733 to 520.
76
+ - **A reclaimed worktree is captured before it is removed.** Session worktrees
77
+ used to be deleted outright. The contents are now committed under
78
+ \`refs/wip/<session-id>\` first, and the removal is abandoned if that capture
79
+ fails. A worktree is never reclaimed while its tmux pane is alive, while a
80
+ process is running inside it, or while it is still registered, whatever its
81
+ age. The retention window is seven days.
82
+ - **Archiving a session stops the dev servers it started.** They used to keep
83
+ running after the session was gone, which is how this machine collected
84
+ orphaned Vite processes. Closing a session now reaps them. A registry row is
85
+ also checked for a live pane before it is deleted, so a resume can no longer
86
+ orphan a session that is still running.
87
+ - **The session tree connector is drawn at one weight.** The elbow joining a
88
+ child to its parent used a corner radius scaled off the app's \`--radius\`, so
89
+ on a 20px connector it ended well short of where the T-junction reached, and
90
+ read lighter because a border-and-radius elbow and a filled spine are drawn by
91
+ two different rasterizers. The connector is a single stroke now, and holds
92
+ even weight on standard and retina displays.
93
+ - **A row's preview fades when it changes.** A streaming session rewrites the
94
+ line under its title, and a dozen rows snapping to new words at once made the
95
+ list twitch. The new text now fades in over 220ms without moving, because a
96
+ row that shifts looks like it changed position in the list. Off entirely under
97
+ \`prefers-reduced-motion\`.
98
+ - **"Copy session reference" no longer writes LFG on your clipboard.** It put
99
+ \`LFG session reference: <id>\` there, which is the most public of the
100
+ leftover names, because that string gets pasted into other tools and into
101
+ conversations. The \`lfg mcp\` command and the \`lfg-mcp\` settings key are
102
+ deliberately unchanged: one is what agents are already configured to run, and
103
+ the other is where setup state is stored, so renaming them is a migration
104
+ rather than a label fix.
105
+ - **Setup names the cause when the command is missing afterwards.** It used to
106
+ report that \`lfg\` was not on PATH, to someone who had just typed
107
+ \`omg computer setup\`. It now names the actual fix: open a new shell, or add
108
+ \`~/.local/bin\` to PATH, then run \`omg computer status\`.
109
+ - **The README says whether the install can run unattended.** It can. Setup has
110
+ no prompts of its own, and every optional feature stays off until you set its
111
+ variable. What it does need is documented now: it refuses to run as root, and
112
+ on Linux it always calls sudo, for \`apt-get\` and for \`loginctl enable-linger\`.
113
+ There is also a copy-paste prompt for handing the install to a coding agent.
114
+
7
115
  ## August 22, 2026 - One session list, and sessions get their own page (v0.3.0)
8
116
 
9
117
  - **Mobile and desktop now render the same session list.** Mobile used to show
@@ -2,7 +2,7 @@ var an = Object.defineProperty;
2
2
  var on = (e, t, n) => t in e ? an(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var m = (e, t, n) => on(e, typeof t != "symbol" ? t + "" : t, n);
4
4
  import { jsx as N, jsxs as Ae, Fragment as ge } from "react/jsx-runtime";
5
- import { b as Ye, n as sn, c as ln, a as dn, d as cn, t as _ } from "./engine-compile-BeZvvx0I.js";
5
+ import { b as Ye, n as sn, c as ln, e as dn, d as cn, t as _ } from "./engine-compile-BeDRSL6Y.js";
6
6
  import { useRef as De, useInsertionEffect as hn, useCallback as Ct, useContext as Oe, createContext as _e, useEffect as fn, useLayoutEffect as un } from "react";
7
7
  function wt(e) {
8
8
  const t = De(e);
@@ -15,8 +15,8 @@ var fe = (t, e, n, i) => ({
15
15
  });
16
16
  import { jsx as Gs } from "react/jsx-runtime";
17
17
  import { memo as mc, useRef as vo, useEffect as mo, useCallback as Cc, useMemo as Lc } from "react";
18
- import { i as xc, s as bc, r as Sc, p as wc, a as yc, h as kc, d as Tc, c as Ec, b as Ac, e as ia, f as Mc, g as Ds, j as Rc, D as Co, k as Lo, l as js, q as ss, m as xo, n as bo, E as Oc, F as Ic } from "./File-BszRWhXA.js";
19
- import { I as cn, E as So } from "./engine-compile-BeZvvx0I.js";
18
+ import { i as xc, s as bc, r as Sc, p as wc, a as yc, h as kc, d as Tc, c as Ec, b as Ac, e as ia, f as Mc, g as Ds, j as Rc, D as Co, k as Lo, l as js, q as ss, m as xo, n as bo, E as Oc, F as Ic } from "./File-B-qYa2zY.js";
19
+ import { I as cn, E as So } from "./engine-compile-BeDRSL6Y.js";
20
20
  import { p as Pc } from "./shadow-text-size-CBCTdbYU.js";
21
21
  import { P as Nc } from "./types-BSXdE6DF.js";
22
22
  const Bc = {
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { memo as t } from "react";
3
- import { F as i } from "./File-BszRWhXA.js";
3
+ import { F as i } from "./File-B-qYa2zY.js";
4
4
  import { P as m } from "./types-BSXdE6DF.js";
5
5
  function n({ file: e, themeType: o }) {
6
6
  return /* @__PURE__ */ r(
@@ -2,7 +2,7 @@ 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 U } from "react";
3
3
  import { createPortal as re } from "react-dom";
4
4
  import { cn as y } from "cnfast";
5
- import { y as oe, a2 as W, a3 as se, X as I, a4 as ie, a5 as ae, L as H, a6 as le, x as de, C as ce, a7 as L } from "./embedded-cpSkU0tg.js";
5
+ import { y as oe, a2 as W, a3 as se, X as I, a4 as ie, a5 as ae, L as H, a6 as le, x as de, C as ce, a7 as L } from "./embedded-BmrQsEvQ.js";
6
6
  import { c as me } from "./create-BrnHvSDE.js";
7
7
  /**
8
8
  * @license lucide-react v0.577.0 - ISC
@@ -31,7 +31,7 @@ function xe(n, s, o) {
31
31
  return c && t.push("", c), t.join(`
32
32
  `);
33
33
  }
34
- const ge = L("session-file-tree", () => import("./FileTreePane-BG2k7gTc.js")), be = L("session-file-viewer", () => import("./FileViewer-DgjR_OJp.js")), ve = L("session-file-editor", () => import("./FileEditor-ByMnm-sa.js"));
34
+ const ge = L("session-file-tree", () => import("./FileTreePane-BG2k7gTc.js")), be = L("session-file-viewer", () => import("./FileViewer-Clmf04v1.js")), ve = L("session-file-editor", () => import("./FileEditor-BIz0qCyW.js"));
35
35
  async function _(n) {
36
36
  const s = await W(n), o = await s.json().catch(() => ({}));
37
37
  if (!s.ok) throw new Error((o == null ? void 0 : o.error) || `${s.status}`);
@@ -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 { y as cA, n as wQ, X as DA, a8 as sQ, x as tQ, a9 as eQ, aa as aQ, a2 as MQ, ab as hQ, R as NQ, C as cQ } from "./embedded-cpSkU0tg.js";
3
+ import { y as cA, n as wQ, X as DA, a8 as sQ, x as tQ, a9 as eQ, aa as aQ, a2 as MQ, ab as hQ, R as NQ, C as cQ } from "./embedded-BmrQsEvQ.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-cpSkU0tg.js";
4
+ import { ac as uo } from "./embedded-BmrQsEvQ.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.