Skip to content

Commit ff27f78

Browse files
authored
Merge branch 'main' into integrations-opcua-logo-carousel
2 parents 9248099 + 6a4f2d1 commit ff27f78

5 files changed

Lines changed: 95 additions & 3 deletions

File tree

nuxt/pages/ai/index.vue

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,11 @@ onUnmounted(() => {
192192
wash anchored at the top right, and an opaque hero sits exactly over it. The
193193
connector card below keeps its own white, because that is a card. -->
194194
<section class="w-full relative">
195-
<div class="relative z-10 w-full px-6 pt-12 md:pt-24 pb-12 sm:pb-16">
195+
<!-- pb-0: the recording below is the picker's own result, so the space between
196+
them belongs to that section's pt rather than being split across a section
197+
boundary here. Two paddings meeting in the middle of one thread is what
198+
left 128px of empty gradient under the docs card. -->
199+
<div class="relative z-10 w-full px-6 pt-12 md:pt-24 pb-0">
196200
<div class="sm:max-w-screen-lg mt-6 sm:mt-12 mx-auto">
197201
<div class="container m-auto text-left max-w-screen-lg">
198202
<div class="max-w-3xl mx-auto">
@@ -230,6 +234,64 @@ onUnmounted(() => {
230234
</div>
231235
</section>
232236

237+
<!-- DEMO: the payoff of the picker above. Those three steps say how to connect
238+
an outside agent; this is what it looks like when you do, consent screen
239+
included - the part a reader does not take on faith. It also hands off to
240+
the governance section directly below, which is the same grant stated as a
241+
claim rather than shown.
242+
Autoplaying muted loop, the same treatment the install animation uses. The
243+
controls stay on for one reason: at 57 seconds this runs long enough that
244+
moving content needs a way to stop it, and the play/pause button is it.
245+
Browsers pause an offscreen muted autoplay video by themselves, so there is
246+
no observer here, and no preload hint either - autoplay settles that. The
247+
poster still earns its place as the first paint before playback starts.
248+
WebM only, and no MP4 fallback: full WebM support starts at Safari 16 and
249+
iOS 17.4, which leaves 1.1% of global users out, and an H.264 copy costs
250+
1.9MB to reach them - more than the WebM itself, on a video that now
251+
autoplays for everyone. Those readers get the poster and a play button that
252+
does nothing, which is the trade. Kept as a <source> with a type rather than
253+
src on the video so a browser that cannot play WebM never fetches it.
254+
The recording has no audio track at all, so muted is both the autoplay
255+
precondition and the truth, and playsinline stops iOS taking it fullscreen.
256+
pb-0 for the same reason the hero has it: these three sections are all
257+
transparent, so a boundary between them is space and nothing else, and each
258+
one owning only its top padding keeps that space to a single 64px. Doubling
259+
up here put 128px above the governance card while the card sat 64px above
260+
the capabilities band, which reads as the card floating low in a gap rather
261+
than as a section change. Doubling is for boundaries that also change
262+
background, the way the capabilities band does. -->
263+
<section class="ff-ai-demo w-full px-6 pt-12 sm:pt-16 pb-0">
264+
<div class="md:max-w-screen-lg m-auto">
265+
<h2 class="max-md:text-center">Connect and build <span class="text-indigo-600">faster than ever</span></h2>
266+
<p class="mt-3 text-gray-600 max-w-3xl">
267+
Connect in seconds and start building. Use natural-language to leverage your company-sanctioned AI in a secure and governed way.
268+
</p>
269+
<!-- The frame is the wrapper, not the video, and it clips: Chrome builds its
270+
native control bar in shadow DOM and ignores the video's own
271+
border-radius, so a radius set directly on the video left the bar's
272+
square corners poking out past the rounded border. Same rounded /
273+
bordered / shadowed treatment the product page gives its hero shot.
274+
A plain div rather than a figure now the caption is gone - a figure with
275+
nothing to caption is just a wrapper. -->
276+
<div class="mt-8 overflow-hidden rounded-lg border-2 border-indigo-100 shadow-2xl">
277+
<video
278+
class="block w-full"
279+
poster="/images/ai/demo-external-agents-poster.jpg"
280+
width="1600"
281+
height="1056"
282+
autoplay
283+
loop
284+
muted
285+
playsinline
286+
controls
287+
aria-label="Screen recording: Claude adds FlowFuse as a custom MCP connector, signs in, is granted full access to one team, and then provisions a Node-RED instance from the OEE blueprint."
288+
>
289+
<source src="/images/ai/demo-external-agents.webm" type="video/webm">
290+
</video>
291+
</div>
292+
</div>
293+
</section>
294+
233295
<!-- GOVERNANCE: the control plane every AI action runs through. Path-neutral,
234296
which is what lets it sit above the picker rather than under Expert. -->
235297
<div class="ff-ai-governance w-full px-6 py-12 sm:py-16">
59.7 KB
Loading
1.59 MB
Binary file not shown.

nuxt/server/utils/integrations-enrich.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,19 @@ const GITHUB_HEADERS = {
2424

2525
// Mirrors GitHub's own heading slugger so anchors written against a README's
2626
// GitHub-rendered preview (e.g. `#egm-optional` for "## EGM (optional)") keep resolving here.
27+
// GitHub strips punctuation first and only then turns each remaining space into its own
28+
// hyphen — it does not collapse runs of spaces. A heading like "Bugs / Feature request"
29+
// drops the slash but keeps both spaces around it, so it slugs to "bugs--feature-request"
30+
// (double hyphen), not "bugs-feature-request". Matching \s+ instead of a literal space
31+
// collapsed that run and produced anchors that never matched GitHub's own, breaking any
32+
// in-README link pointing at a heading with adjacent punctuation.
2733
function githubSlugify (heading: string): string {
2834
return encodeURIComponent(
2935
heading
3036
.trim()
3137
.toLowerCase()
32-
.replace(/[^\w-\- ]/g, '')
33-
.replace(/\s+/g, '-')
38+
.replace(/[^\p{L}\p{M}\p{N}\p{Pc}\- ]/gu, '')
39+
.replace(/ /g, '-')
3440
)
3541
}
3642

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: FlowFuse Expert Upgraded to GPT 5.6 Luna
3+
description: FlowFuse Expert now runs on GPT 5.6 Luna, a frontier model that makes it markedly faster, smarter, and more capable at building your flows and taking action for you.
4+
date: 2026-08-31 12:00:00
5+
release: "3.1"
6+
authors: ["andrea-palmieri"]
7+
tags:
8+
- changelog
9+
issues:
10+
---
11+
12+
FlowFuse Expert now runs on GPT 5.6 Luna, one of the most capable AI models available today. It is a large step up: the Expert is noticeably faster, follows longer chains of work more reliably, and is simply smarter about turning what you ask for into the right result across your flows and your FlowFuse teams.
13+
14+
This lifts everything the Expert already does. Building an application on the Node-RED canvas, taking platform actions on your behalf, and staying within the permissions you set: each of these gets sharper reasoning and quicker responses behind it. For you that means reaching the result you are after faster and with less back-and-forth, especially on larger, less-defined requests where the Expert has to plan, ask the right clarifying questions, and carry a task across several steps.
15+
16+
It also builds directly on the work we have done [opening FlowFuse up to third-party AI agents](/docs/user/expert/third-party-agents/). Making the platform's automation and flow-building tools clear and reliable enough for any approved agent to use meant sharpening the tools themselves: better descriptions, cleaner inputs, and a growing, well-defined set of actions. The Expert calls those same tools, so every improvement we made for third-party tooling now lands in your first-class agent as well.
17+
18+
The difference is that with your own agent the experience depends on the agent you bring, since each one has its own strengths. With the Expert we tune the whole experience end to end, model included, so this upgrade reaches everyone the moment it ships.
19+
20+
We chose this model because it sits on the current frontier of what these systems can do: the rare combination of being highly capable, fast, and genuinely smart at the same time, rather than trading one off against the others. For an agent that acts on your platform in real time, that balance matters as much as raw capability.
21+
22+
As the big pieces of AI enablement are now in place, we are moving into a more iterative rhythm: smaller, steady improvements that reach everyone using the Expert, released as we ship them. This model upgrade is the first of those.
23+
24+
The upgrade is live now for all FlowFuse Expert users, on FlowFuse Cloud and Self Hosted, with nothing for you to change.

0 commit comments

Comments
 (0)