@omg-dev/app 0.6.38 → 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.
@@ -1,9 +1,26 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { z as n } from "./embedded-CblBLBh9.js";
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
+
7
24
  ## September 3, 2026 - Board in the desktop workspace (v0.6.38)
8
25
 
9
26
  - **The Board sits in the desktop workspace.** On a wide screen the session
@@ -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, 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-CblBLBh9.js";
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, 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-CblBLBh9.js";
4
- import { K as ZA } from "./keyboard-BI3LBFBT.js";
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
  *
@@ -1,6 +1,6 @@
1
- import { jsx as i, jsxs as c } from "react/jsx-runtime";
1
+ import { jsx as i, jsxs as l } from "react/jsx-runtime";
2
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-CblBLBh9.js";
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
4
  import { cn as g } from "cnfast";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
@@ -56,7 +56,7 @@ function M(t) {
56
56
  for (const e of t.sessions) {
57
57
  const n = e.sessionId;
58
58
  if (!n || e.botId) continue;
59
- const f = o.get(n), l = {
59
+ const f = o.get(n), c = {
60
60
  key: `session:${n}`,
61
61
  sessionId: n,
62
62
  title: B(e),
@@ -66,7 +66,7 @@ function M(t) {
66
66
  project: e.project,
67
67
  at: e.lastActivityAt ?? e.startedAt ?? 0
68
68
  };
69
- f ? (l.note = p(f.question), d.push(l)) : e.status === "blocked" ? (l.note = C(e), d.push(l)) : e.busy ? (e.last?.text && (l.note = p(e.last.text)), a.push(l)) : (e.last?.text && (l.note = p(e.last.text)), s.push(l));
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
70
  }
71
71
  const r = t.posts.map((e) => ({
72
72
  key: `post:${e.id}`,
@@ -115,14 +115,14 @@ function S({
115
115
  card: t,
116
116
  onOpen: o
117
117
  }) {
118
- return /* @__PURE__ */ c(
118
+ return /* @__PURE__ */ l(
119
119
  "button",
120
120
  {
121
121
  type: "button",
122
122
  onClick: o,
123
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
124
  children: [
125
- /* @__PURE__ */ c("div", { className: "flex items-start gap-2", children: [
125
+ /* @__PURE__ */ l("div", { className: "flex items-start gap-2", children: [
126
126
  /* @__PURE__ */ i(
127
127
  A,
128
128
  {
@@ -134,7 +134,7 @@ function S({
134
134
  /* @__PURE__ */ i("span", { className: "line-clamp-2 min-w-0 flex-1 text-sm font-medium leading-snug", children: t.title })
135
135
  ] }),
136
136
  t.note ? /* @__PURE__ */ i("p", { className: "line-clamp-2 text-xs leading-snug text-muted-foreground", children: t.note }) : null,
137
- /* @__PURE__ */ c("div", { className: "flex items-center gap-2 text-[11px] text-muted-foreground/80", children: [
137
+ /* @__PURE__ */ l("div", { className: "flex items-center gap-2 text-[11px] text-muted-foreground/80", children: [
138
138
  t.project ? /* @__PURE__ */ i("span", { className: "truncate", children: t.project }) : null,
139
139
  /* @__PURE__ */ i("span", { className: "ml-auto shrink-0", children: _(t.at || null) })
140
140
  ] })
@@ -148,25 +148,25 @@ function O({
148
148
  onOpenShipped: d
149
149
  }) {
150
150
  const a = t.reduce((s, r) => s + r.cards.length, 0);
151
- return /* @__PURE__ */ c("div", { className: "flex h-full min-h-0 flex-col gap-3 px-3 pb-4 md:px-4", children: [
152
- /* @__PURE__ */ c("div", { className: "flex items-baseline justify-between gap-3", children: [
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
153
  /* @__PURE__ */ i("h1", { className: "text-base font-semibold tracking-tight", children: "Board" }),
154
- /* @__PURE__ */ c("span", { className: "text-xs text-muted-foreground", children: [
154
+ /* @__PURE__ */ l("span", { className: "text-xs text-muted-foreground", children: [
155
155
  a,
156
156
  " ",
157
157
  a === 1 ? "card" : "cards",
158
158
  " · read only"
159
159
  ] })
160
160
  ] }),
161
- /* @__PURE__ */ i("div", { className: "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto pb-2 md:flex-row md:overflow-x-auto md:overflow-y-hidden", children: t.map((s) => {
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
162
  const r = q[s.id], e = r.icon;
163
- return /* @__PURE__ */ c(
163
+ return /* @__PURE__ */ l(
164
164
  "section",
165
165
  {
166
166
  "aria-label": s.label,
167
- className: "flex w-full shrink-0 flex-col rounded-2xl bg-muted/40 ring-1 ring-inset ring-border/60 md:w-72 md:min-h-0",
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
168
  children: [
169
- /* @__PURE__ */ c("header", { className: "flex items-center gap-2 px-3 pt-3 pb-2", children: [
169
+ /* @__PURE__ */ l("header", { className: "flex items-center gap-2 px-3 pt-3 pb-2", children: [
170
170
  /* @__PURE__ */ i(
171
171
  e,
172
172
  {
@@ -189,7 +189,7 @@ function O({
189
189
  }
190
190
  )
191
191
  ] }),
192
- /* @__PURE__ */ i("div", { className: "flex flex-col gap-2 px-2 pb-2 md:min-h-0 md:flex-1 md:overflow-y-auto", 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(
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
193
  S,
194
194
  {
195
195
  card: n,
@@ -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 { ae as uo } from "./embedded-CblBLBh9.js";
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-CblBLBh9.js";
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, a4 as Ai, ac as Mn, B as Ge, R as Tn, X as Qn, L as Xi, af as Ln } from "./embedded-CblBLBh9.js";
4
- import { K as Rn } from "./keyboard-BI3LBFBT.js";
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
  *