From 95695fcd559a96164a42dcd5afd698448d9d28e7 Mon Sep 17 00:00:00 2001 From: Roman Korvatskyi Date: Fri, 17 Jul 2026 19:16:18 +0200 Subject: [PATCH 1/3] feat(app): standardized overlay page scrollbar (GlobalOverlayScrollbars) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Requires openframe-frontend-core release with OverlayScrollArea rollout (branch hotfix/overlayscrollbars-poc) — bump the dependency on merge. Co-Authored-By: Claude Fable 5 --- src/app/layout.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index da2d9c0..857084c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -7,7 +7,7 @@ import { DevTicketObserver } from '@/app/(auth)/auth/components/dev-ticket-obser import { azeretMono, dmSans } from '@/lib/fonts'; import { NatsAppProvider } from '@/lib/nats/nats-app-provider'; import { sidebarWidthFoucScript } from '@/lib/navigation-sidebar-state'; -import { Toaster } from '@/lib/openframe-core-ui'; +import { GlobalOverlayScrollbars, Toaster } from '@/lib/openframe-core-ui'; import { FeatureFlagsGate } from '../components/feature-flags-gate'; import { RouteGuard } from '../components/route-guard'; import { isAuthEnabled } from '../lib/app-mode'; @@ -138,6 +138,8 @@ export default function RootLayout({ children }: { children: React.ReactNode }) + {/* Standardized overlay scrollbar for the page scroller (desktop only) */} + ); From f017ed1233bc15e9776808ba0196e4a681656859 Mon Sep 17 00:00:00 2001 From: Roman Korvatskyi Date: Mon, 20 Jul 2026 14:05:31 +0200 Subject: [PATCH 2/3] chore(deps): bump openframe-frontend-core to 0.0.457 The GlobalOverlayScrollbars mount in this branch needs the release that ships it. Co-Authored-By: Claude Fable 5 --- package-lock.json | 26 ++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31ede4e..b9de8a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "openframe-frontend", "version": "0.1.0", "dependencies": { - "@flamingo-stack/openframe-frontend-core": "^0.0.448", + "@flamingo-stack/openframe-frontend-core": "^0.0.457", "@hookform/resolvers": "^5.2.2", "@monaco-editor/react": "^4.7.0", "@tanstack/react-query": "^5.90.16", @@ -498,9 +498,9 @@ } }, "node_modules/@flamingo-stack/openframe-frontend-core": { - "version": "0.0.448", - "resolved": "https://registry.npmjs.org/@flamingo-stack/openframe-frontend-core/-/openframe-frontend-core-0.0.448.tgz", - "integrity": "sha512-QFCbnJIh9NB/HeTsOLwlDVxgYF2CuZRQlBCuHKsT3QUEFLsILrUERFazct0Gh1Seau9G97+AzW0oZe3F3W1Nkg==", + "version": "0.0.457", + "resolved": "https://registry.npmjs.org/@flamingo-stack/openframe-frontend-core/-/openframe-frontend-core-0.0.457.tgz", + "integrity": "sha512-kHwcShUUbxX/hl00Kbc3MKVL95vZXa22H1oUMfGVV0cf/bB2tsFe8UXmBA8K/oilcxHDGiPKSWdNaX5+seGP6w==", "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", @@ -552,6 +552,8 @@ "mermaid": "^11.14.0", "nats.ws": "^1.30.3", "next-themes": "^0.2.1", + "overlayscrollbars": "^2.16.0", + "overlayscrollbars-react": "^0.5.6", "react-aria-components": "^1.11.0", "react-colorful": "^5.7.0", "react-datepicker": "^8.7.0", @@ -9090,6 +9092,22 @@ "node": ">= 0.8.0" } }, + "node_modules/overlayscrollbars": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-2.16.0.tgz", + "integrity": "sha512-N03oje/q7j93D0aLZtoCdsDSYLmhheSsv8H7oSLE7HhdV9P/bmCURtLV/KbPye7P/bpfyt/obSfDpGUYoJ0OWg==", + "license": "MIT" + }, + "node_modules/overlayscrollbars-react": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/overlayscrollbars-react/-/overlayscrollbars-react-0.5.6.tgz", + "integrity": "sha512-E5To04bL5brn9GVCZ36SnfGanxa2I2MDkWoa4Cjo5wol7l+diAgi4DBc983V7l2nOk/OLJ6Feg4kySspQEGDBw==", + "license": "MIT", + "peerDependencies": { + "overlayscrollbars": "^2.0.0", + "react": ">=16.8.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "dev": true, diff --git a/package.json b/package.json index dedac64..ed38936 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "core:unlink": "yalc remove @flamingo-stack/openframe-frontend-core" }, "dependencies": { - "@flamingo-stack/openframe-frontend-core": "^0.0.448", + "@flamingo-stack/openframe-frontend-core": "^0.0.457", "@hookform/resolvers": "^5.2.2", "@monaco-editor/react": "^4.7.0", "@tanstack/react-query": "^5.90.16", From 82a305e10f6347b1dac51eaef7f85003192254f8 Mon Sep 17 00:00:00 2001 From: Roman Korvatskyi Date: Mon, 20 Jul 2026 14:43:03 +0200 Subject: [PATCH 3/3] refactor(onboarding): migrate Mingo quick actions to QuickActionWall lib #1500 unified quick actions and deleted the legacy ChatQuickActionRow path, so the 0.0.457 bump broke the Turbopack build. Move the onboarding Mingo step to QuickActionWall with the same config the lib's welcome screens use; chip construction and icon-accent resolution are unchanged. Co-Authored-By: Claude Fable 5 --- .../(app)/onboarding/components/mingo-step.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/(app)/onboarding/components/mingo-step.tsx b/src/app/(app)/onboarding/components/mingo-step.tsx index f53fbb5..91ab212 100644 --- a/src/app/(app)/onboarding/components/mingo-step.tsx +++ b/src/app/(app)/onboarding/components/mingo-step.tsx @@ -2,9 +2,9 @@ import { accentFromIdentityIcon, - ChatQuickActionRow, getAgentAccent, type QuickActionChip, + QuickActionWall, useEmptyStateConfig, } from '@flamingo-stack/openframe-frontend-core/components/chat'; import { Video } from '@flamingo-stack/openframe-frontend-core/components/features'; @@ -31,7 +31,7 @@ const DEMO_VIDEO_ID = 'i4H_XqrI3RA'; * keyed by `source = agent-mingo` — the "application type" we actually want. We select * it through the runtime's standard `aiAgentConfigUrl(slug)` seam (same `/content` * proxy, same flat wire shape), fetch it with the shared `useEmptyStateConfig`, and - * render the first four through the SAME `ChatQuickActionRow` the chat empty state + * render the first four through the SAME `QuickActionWall` the chat empty state * (`GuideWelcome`) uses — with the identical icon-accent resolution, so the glyphs come * out turquoise (mingo → `cyan`) exactly like in the chat. * @@ -104,7 +104,17 @@ export function MingoStep({ {chips.length > 0 && (

Try this quick actions:

- +
)}