@omg-dev/app 0.6.37 → 0.6.39
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.
- package/dist-lib/{ChangelogPage-o5jOjpq1.js → ChangelogPage-Cw7SixAz.js} +36 -1
- package/dist-lib/{SessionFilesPanel-gc6OlhAb.js → SessionFilesPanel-hjPtShAt.js} +1 -1
- package/dist-lib/{TermView-B4pT1GLA.js → TermView-Bc0haP5i.js} +2 -2
- package/dist-lib/board-page-By1kRbgQ.js +230 -0
- package/dist-lib/{chat-engine-CLclwviQ.js → chat-engine-Cf2JPtp2.js} +1 -1
- package/dist-lib/{coding-agents-page-CqRvsypB.js → coding-agents-page-BNk32Wyw.js} +1 -1
- package/dist-lib/{computer-page-CdsyEoC5.js → computer-page-DagCSMck.js} +2 -2
- package/dist-lib/{embedded-DnMfJsXy.js → embedded-7v2RQwAy.js} +14471 -13283
- package/dist-lib/index.js +2 -2
- package/dist-lib/{keyboard-Ge7rlYAL.js → keyboard-CnQhbyYy.js} +1 -1
- package/dist-lib/{resume-session-sheet-BWCIOQLq.js → resume-session-sheet-B_JC5R7U.js} +1 -1
- package/dist-lib/{session-token-usage-ClNDJj36.js → session-token-usage-gFCp_A33.js} +1 -1
- package/dist-lib/{shipped-page-Ah-e6gVP.js → shipped-page-MuQOZWnY.js} +1 -1
- package/dist-lib/{streamdown-response-CU_-ka-J.js → streamdown-response-CE5P_PxD.js} +1 -1
- package/dist-lib/styles.css +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { z as n } from "./embedded-
|
|
2
|
+
import { z as n } from "./embedded-7v2RQwAy.js";
|
|
3
3
|
const t = `# Changelog
|
|
4
4
|
|
|
5
5
|
Recent product updates and deployment notes.
|
|
6
6
|
|
|
7
|
+
## September 4, 2026 - Native integrations and per-role tool access (v0.6.39)
|
|
8
|
+
|
|
9
|
+
- **Connect integrations natively.** The Integrations panel lists your
|
|
10
|
+
connectors with their logos. It uses the integrations.sh catalog. The old
|
|
11
|
+
embedded iframe is gone.
|
|
12
|
+
- **OAuth connect for a connector.** You authorize a connector in a popup. omg
|
|
13
|
+
owns the callback and stores the tokens encrypted on the box. The flow
|
|
14
|
+
completes over remote access.
|
|
15
|
+
- **Add a custom MCP or OpenAPI source.** The custom source form is collapsed
|
|
16
|
+
behind a button so the panel stays clean.
|
|
17
|
+
- **Per-member and per-role tool access.** Each member gets connectors scoped to
|
|
18
|
+
the member. A role controls which tools a session can use.
|
|
19
|
+
- **Approve connector calls from chat.** A restricted role must get approval in
|
|
20
|
+
the chat before a connector tool runs.
|
|
21
|
+
- **Sandbox for restricted roles.** A restricted-role session runs with a
|
|
22
|
+
bubblewrap filesystem sandbox and a per-role network egress allowlist.
|
|
23
|
+
|
|
24
|
+
## September 3, 2026 - Board in the desktop workspace (v0.6.38)
|
|
25
|
+
|
|
26
|
+
- **The Board sits in the desktop workspace.** On a wide screen the session
|
|
27
|
+
rail stays on the left with its project selector. The four columns fill the
|
|
28
|
+
stage. The old header pill is gone from this page.
|
|
29
|
+
- **A card opens its session beside the Board.** Click a card and the session
|
|
30
|
+
opens as a column next to the columns. Close it to return to the Board alone.
|
|
31
|
+
Narrow screens still open the session page.
|
|
32
|
+
- **Sidebar faces follow the agent icon switch.** Turn off "Agent icons in the
|
|
33
|
+
sidebar" and the assignee face on each session row is hidden too.
|
|
34
|
+
- **New setting: "Worktree diff badge in chat".** Turn it off to hide the
|
|
35
|
+
floating changes bar above the composer.
|
|
36
|
+
- **Also in this release.** The read-only Board page (every task as a kanban,
|
|
37
|
+
at \`/board\`), box defaults for agent and model with View switches in
|
|
38
|
+
Settings, an agent picker switch that can force the default agent, the agent
|
|
39
|
+
and model switches on the mobile inline composer, and Sign in with Apple and
|
|
40
|
+
Google in the mobile app.
|
|
41
|
+
|
|
7
42
|
## September 3, 2026 - Fold a session group shut (v0.6.37)
|
|
8
43
|
|
|
9
44
|
- **Session rail groups fold.** Every group header carries a chevron: Pinned,
|
|
@@ -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,
|
|
5
|
+
import { f as oe, a4 as W, a5 as se, X as I, a6 as ie, a7 as ae, L as H, a8 as le, y as de, C as ce, a9 as L } from "./embedded-7v2RQwAy.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,
|
|
4
|
-
import { K as ZA } from "./keyboard-
|
|
3
|
+
import { f as UA, o as iQ, X as CA, aa as wQ, y as sQ, ab as tQ, ac as eQ, a4 as aQ, ad as MQ, R as hQ, C as NQ } from "./embedded-7v2RQwAy.js";
|
|
4
|
+
import { K as ZA } from "./keyboard-CnQhbyYy.js";
|
|
5
5
|
/**
|
|
6
6
|
* @license lucide-react v0.577.0 - ISC
|
|
7
7
|
*
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { jsx as i, jsxs as l } from "react/jsx-runtime";
|
|
2
|
+
import { useState as x, useEffect as h, useMemo as b } from "react";
|
|
3
|
+
import { f as y, F as N, O as k, Q as w, a3 as v, L as I, m as A, k as _ } from "./embedded-7v2RQwAy.js";
|
|
4
|
+
import { cn as g } from "cnfast";
|
|
5
|
+
/**
|
|
6
|
+
* @license lucide-react v0.577.0 - ISC
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the ISC license.
|
|
9
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/
|
|
11
|
+
const j = [
|
|
12
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
13
|
+
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
14
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
15
|
+
], L = y("circle-question-mark", j), u = {
|
|
16
|
+
"needs-you": "Needs you",
|
|
17
|
+
working: "Working",
|
|
18
|
+
idle: "Idle",
|
|
19
|
+
shipped: "Shipped"
|
|
20
|
+
};
|
|
21
|
+
function B(t) {
|
|
22
|
+
return t.title || t.lastUserText || t.tmuxName || t.project || t.sessionId?.slice(0, 8) || "session";
|
|
23
|
+
}
|
|
24
|
+
function C(t) {
|
|
25
|
+
if (t.statusDetail) return t.statusDetail;
|
|
26
|
+
switch (t.statusReason) {
|
|
27
|
+
case "out_of_credits":
|
|
28
|
+
return "Out of credits";
|
|
29
|
+
case "provider_auth":
|
|
30
|
+
return "Provider needs sign-in";
|
|
31
|
+
case "model_unavailable":
|
|
32
|
+
return "Model unavailable";
|
|
33
|
+
case "provider_error":
|
|
34
|
+
return "Provider error";
|
|
35
|
+
case "restart_recovered":
|
|
36
|
+
return "Recovered after restart";
|
|
37
|
+
default:
|
|
38
|
+
return "Blocked";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function p(t) {
|
|
42
|
+
const o = t.replace(/\s+/g, " ").trim();
|
|
43
|
+
return o.length > 140 ? `${o.slice(0, 139)}…` : o;
|
|
44
|
+
}
|
|
45
|
+
function m(t, o) {
|
|
46
|
+
return o.at - t.at || t.key.localeCompare(o.key);
|
|
47
|
+
}
|
|
48
|
+
function M(t) {
|
|
49
|
+
const o = /* @__PURE__ */ new Map();
|
|
50
|
+
for (const e of t.questions) {
|
|
51
|
+
if (!e.sessionId) continue;
|
|
52
|
+
const n = o.get(e.sessionId);
|
|
53
|
+
(!n || e.createdAt < n.createdAt) && o.set(e.sessionId, e);
|
|
54
|
+
}
|
|
55
|
+
const d = [], a = [], s = [];
|
|
56
|
+
for (const e of t.sessions) {
|
|
57
|
+
const n = e.sessionId;
|
|
58
|
+
if (!n || e.botId) continue;
|
|
59
|
+
const f = o.get(n), c = {
|
|
60
|
+
key: `session:${n}`,
|
|
61
|
+
sessionId: n,
|
|
62
|
+
title: B(e),
|
|
63
|
+
agent: e.agent,
|
|
64
|
+
agentLabel: e.agentLabel,
|
|
65
|
+
claudeAccountId: e.claudeAccountId,
|
|
66
|
+
project: e.project,
|
|
67
|
+
at: e.lastActivityAt ?? e.startedAt ?? 0
|
|
68
|
+
};
|
|
69
|
+
f ? (c.note = p(f.question), d.push(c)) : e.status === "blocked" ? (c.note = C(e), d.push(c)) : e.busy ? (e.last?.text && (c.note = p(e.last.text)), a.push(c)) : (e.last?.text && (c.note = p(e.last.text)), s.push(c));
|
|
70
|
+
}
|
|
71
|
+
const r = t.posts.map((e) => ({
|
|
72
|
+
key: `post:${e.id}`,
|
|
73
|
+
sessionId: e.sessionId ?? null,
|
|
74
|
+
title: e.title || e.sessionTitle || "Shipped",
|
|
75
|
+
agent: e.agent,
|
|
76
|
+
project: e.project,
|
|
77
|
+
at: e.ts,
|
|
78
|
+
note: e.summary ? p(e.summary) : void 0,
|
|
79
|
+
post: e
|
|
80
|
+
}));
|
|
81
|
+
return [
|
|
82
|
+
{ id: "needs-you", label: u["needs-you"], cards: d.sort(m) },
|
|
83
|
+
{ id: "working", label: u.working, cards: a.sort(m) },
|
|
84
|
+
{ id: "idle", label: u.idle, cards: s.sort(m) },
|
|
85
|
+
{ id: "shipped", label: u.shipped, cards: r.sort(m) }
|
|
86
|
+
];
|
|
87
|
+
}
|
|
88
|
+
const q = {
|
|
89
|
+
"needs-you": {
|
|
90
|
+
icon: L,
|
|
91
|
+
accent: "text-warning",
|
|
92
|
+
count: "bg-warning/15 text-warning",
|
|
93
|
+
empty: "Nothing is waiting on you."
|
|
94
|
+
},
|
|
95
|
+
working: {
|
|
96
|
+
icon: I,
|
|
97
|
+
accent: "text-primary",
|
|
98
|
+
count: "bg-primary/10 text-primary",
|
|
99
|
+
empty: "No agent is working right now."
|
|
100
|
+
},
|
|
101
|
+
idle: {
|
|
102
|
+
icon: v,
|
|
103
|
+
accent: "text-muted-foreground",
|
|
104
|
+
count: "bg-muted text-muted-foreground",
|
|
105
|
+
empty: "No idle sessions."
|
|
106
|
+
},
|
|
107
|
+
shipped: {
|
|
108
|
+
icon: w,
|
|
109
|
+
accent: "text-success",
|
|
110
|
+
count: "bg-success/15 text-success",
|
|
111
|
+
empty: "Nothing shipped yet."
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
function S({
|
|
115
|
+
card: t,
|
|
116
|
+
onOpen: o
|
|
117
|
+
}) {
|
|
118
|
+
return /* @__PURE__ */ l(
|
|
119
|
+
"button",
|
|
120
|
+
{
|
|
121
|
+
type: "button",
|
|
122
|
+
onClick: o,
|
|
123
|
+
className: "flex w-full flex-col gap-1.5 rounded-xl border border-border bg-card px-3 py-2.5 text-left shadow-xs transition-colors hover:bg-foreground/[0.03] active:bg-foreground/[0.06]",
|
|
124
|
+
children: [
|
|
125
|
+
/* @__PURE__ */ l("div", { className: "flex items-start gap-2", children: [
|
|
126
|
+
/* @__PURE__ */ i(
|
|
127
|
+
A,
|
|
128
|
+
{
|
|
129
|
+
session: t,
|
|
130
|
+
className: "mt-0.5 size-4 shrink-0",
|
|
131
|
+
showAccountNumber: !1
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ i("span", { className: "line-clamp-2 min-w-0 flex-1 text-sm font-medium leading-snug", children: t.title })
|
|
135
|
+
] }),
|
|
136
|
+
t.note ? /* @__PURE__ */ i("p", { className: "line-clamp-2 text-xs leading-snug text-muted-foreground", children: t.note }) : null,
|
|
137
|
+
/* @__PURE__ */ l("div", { className: "flex items-center gap-2 text-[11px] text-muted-foreground/80", children: [
|
|
138
|
+
t.project ? /* @__PURE__ */ i("span", { className: "truncate", children: t.project }) : null,
|
|
139
|
+
/* @__PURE__ */ i("span", { className: "ml-auto shrink-0", children: _(t.at || null) })
|
|
140
|
+
] })
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
function O({
|
|
146
|
+
columns: t,
|
|
147
|
+
onOpenSession: o,
|
|
148
|
+
onOpenShipped: d
|
|
149
|
+
}) {
|
|
150
|
+
const a = t.reduce((s, r) => s + r.cards.length, 0);
|
|
151
|
+
return /* @__PURE__ */ l("div", { className: "flex h-full min-h-0 flex-col gap-3 px-3 pb-4 md:px-4", children: [
|
|
152
|
+
/* @__PURE__ */ l("div", { className: "flex items-baseline justify-between gap-3", children: [
|
|
153
|
+
/* @__PURE__ */ i("h1", { className: "text-base font-semibold tracking-tight", children: "Board" }),
|
|
154
|
+
/* @__PURE__ */ l("span", { className: "text-xs text-muted-foreground", children: [
|
|
155
|
+
a,
|
|
156
|
+
" ",
|
|
157
|
+
a === 1 ? "card" : "cards",
|
|
158
|
+
" · read only"
|
|
159
|
+
] })
|
|
160
|
+
] }),
|
|
161
|
+
/* @__PURE__ */ i("div", { className: "flex min-h-0 flex-1 flex-row snap-x snap-mandatory gap-3 overflow-x-auto overflow-y-hidden pb-2 md:snap-none", children: t.map((s) => {
|
|
162
|
+
const r = q[s.id], e = r.icon;
|
|
163
|
+
return /* @__PURE__ */ l(
|
|
164
|
+
"section",
|
|
165
|
+
{
|
|
166
|
+
"aria-label": s.label,
|
|
167
|
+
className: "flex min-h-0 w-[82vw] max-w-72 shrink-0 snap-start flex-col rounded-2xl bg-muted/40 ring-1 ring-inset ring-border/60 md:w-72",
|
|
168
|
+
children: [
|
|
169
|
+
/* @__PURE__ */ l("header", { className: "flex items-center gap-2 px-3 pt-3 pb-2", children: [
|
|
170
|
+
/* @__PURE__ */ i(
|
|
171
|
+
e,
|
|
172
|
+
{
|
|
173
|
+
className: g(
|
|
174
|
+
"size-4 shrink-0",
|
|
175
|
+
r.accent,
|
|
176
|
+
s.id === "working" && s.cards.length ? "animate-spin" : null
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
),
|
|
180
|
+
/* @__PURE__ */ i("h2", { className: "text-sm font-semibold", children: s.label }),
|
|
181
|
+
/* @__PURE__ */ i(
|
|
182
|
+
"span",
|
|
183
|
+
{
|
|
184
|
+
className: g(
|
|
185
|
+
"ml-auto rounded-full px-2 py-0.5 text-[11px] font-medium tabular-nums",
|
|
186
|
+
r.count
|
|
187
|
+
),
|
|
188
|
+
children: s.cards.length
|
|
189
|
+
}
|
|
190
|
+
)
|
|
191
|
+
] }),
|
|
192
|
+
/* @__PURE__ */ i("div", { className: "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto px-2 pb-2", children: s.cards.length === 0 ? /* @__PURE__ */ i("p", { className: "px-1 py-6 text-center text-xs text-muted-foreground", children: r.empty }) : s.cards.map((n) => /* @__PURE__ */ i(
|
|
193
|
+
S,
|
|
194
|
+
{
|
|
195
|
+
card: n,
|
|
196
|
+
onOpen: () => {
|
|
197
|
+
n.post ? d(n.post) : n.sessionId && o(n.sessionId);
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
n.key
|
|
201
|
+
)) })
|
|
202
|
+
]
|
|
203
|
+
},
|
|
204
|
+
s.id
|
|
205
|
+
);
|
|
206
|
+
}) })
|
|
207
|
+
] });
|
|
208
|
+
}
|
|
209
|
+
function R({
|
|
210
|
+
sessions: t,
|
|
211
|
+
onOpenSession: o,
|
|
212
|
+
onOpenShipped: d
|
|
213
|
+
}) {
|
|
214
|
+
const { questions: a } = N(), [s, r] = x([]);
|
|
215
|
+
h(
|
|
216
|
+
() => k((n) => {
|
|
217
|
+
n.ok && r(n.posts);
|
|
218
|
+
}),
|
|
219
|
+
[]
|
|
220
|
+
);
|
|
221
|
+
const e = b(
|
|
222
|
+
() => M({ sessions: t, questions: a, posts: s }),
|
|
223
|
+
[t, a, s]
|
|
224
|
+
);
|
|
225
|
+
return /* @__PURE__ */ i(O, { columns: e, onOpenSession: o, onOpenShipped: d });
|
|
226
|
+
}
|
|
227
|
+
export {
|
|
228
|
+
O as BoardView,
|
|
229
|
+
R as default
|
|
230
|
+
};
|
|
@@ -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 {
|
|
4
|
+
import { ae as uo } from "./embedded-7v2RQwAy.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 s, jsx as e, Fragment as O } from "react/jsx-runtime";
|
|
2
|
-
import { R, B as u, L as $, n as A, o as S, M as G, p as j, q as E, s as f, 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-
|
|
2
|
+
import { R, B as u, L as $, n as A, o as S, M as G, p as j, q as E, s as f, 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-7v2RQwAy.js";
|
|
3
3
|
import { cn as U } from "cnfast";
|
|
4
4
|
import { useState as I } from "react";
|
|
5
5
|
function B(l) {
|
|
@@ -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,
|
|
4
|
-
import { K as Rn } from "./keyboard-
|
|
3
|
+
import { f as Fn, a4 as Ai, ac as Mn, B as Ge, R as Tn, X as Qn, L as Xi, af as Ln } from "./embedded-7v2RQwAy.js";
|
|
4
|
+
import { K as Rn } from "./keyboard-CnQhbyYy.js";
|
|
5
5
|
/**
|
|
6
6
|
* @license lucide-react v0.577.0 - ISC
|
|
7
7
|
*
|