Justflows 0.3.5: widgetgebieden, caching per bericht en statische exports naar S3
Zijbalken die thema's en plugins kunnen vullen, Cache-Control per contenttype of bericht, statische exports vanuit S3 of OVH, een echte /account-pagina en veel nieuws voor pluginontwikkelaars.

Justflows 0.3.5 is uit, en het is een grote release: zijbalken komen eraan, caching krijgt instellingen per bericht, statische exports kunnen in objectopslag staan, elke ingelogde gebruiker krijgt een echte accountpagina en pluginontwikkelaars krijgen een flinke stapel nieuwe API's. Hier zijn de hoogtepunten. De volledige changelog staat op GitHub.
Widgetgebieden: zijbalken die thema's en plugins kunnen vullen
Weergave → Widgets toont nu alle widgetgebieden tegelijk. Sleep widgets uit het palet (Content, Menu, Recente berichten, Zoeken en widgets van plugins) naar een gebied, verander de volgorde en klap er een open om de instellingen te bewerken. Wijzigingen hebben een concept- en publicatiestap, en je kunt per taal vervangers instellen.
- Voeg je eigen gebieden toe of verwijder ze, en kies per contenttype welk gebied zichtbaar is en waar: links, rechts of boven de content.
- Stel de breedte en tussenruimte van de zijbalk in onder Stijlen → Lay-out, voor de hele site of per lay-outdoel, of geef één gebied een eigen breedte.
- De core levert een gebied
sidebar. Thema's declareren er meer injustflows-theme.json(widgetAreas) of plaatsen er een met het templateblokcore.widget-area. Plugins voegen gebieden toe via de filterwidgets.areas. - Ook agents kunnen het beheren, via de beheer-API en de MCP-tools
widget_areas_*enwidget_layout_update.
Cache-Control per contenttype of per bericht
Elk contenttype, en elk afzonderlijk bericht onder Geavanceerd, kan nu de site-instellingen overnemen, caching uitzetten of een eigen, gevalideerde
Cache-Control-header instellen. Instellingen per bericht volgen concepten en revisies. Het beleid geldt voor live pagina's, gedeelde paginacaches en statische exports. Privétypes zoals accountpagina's hebben geen eigen instelling: die worden nooit gecachet.Statische exports direct naar S3 of OVH
Hulpmiddelen → Statische site-export kan nu schrijven naar de objectopslag die je al gekoppeld hebt (
STATIC_EXPORT_STORAGE_DRIVER=s3) in plaats van naar lokale bestanden, zonder te veranderen waar media worden opgeslagen. Elke site krijgt een eigen exportprefix op basis van het vaste site-id, dus als je een domein wijzigt, blijven de geëxporteerde bestanden behouden.- Pagina's kunnen vanuit een privébucket worden geserveerd via je bestaande CDN-origin. De app ondertekent de S3-leesacties en streamt pagina's met het juiste contenttype en de juiste cacheheaders, zodat een CDN zoals Bunny de app als origin blijft gebruiken.
- Admin-, API- en pluginroutes, bezoeken van ingelogde gebruikers en verzoeken met een querystring gaan altijd naar de live app. Ontbreekt een object, dan valt de site terug op live renderen.
- Een nieuwe export gaat pas live als elke upload klaar is. Mislukt een upload, dan blijft de vorige versie staan.
- Exports bevatten nu alleen HTML. Afbeeldingen, stijlen en scripts houden hun bestaande URL's in plaats van naar de bucket te worden gekopieerd.
- Exports draaien op de achtergrond en tonen hun voortgang, zodat een lange crawl niet meer verloopt bij een proxy of CDN.
- Geëxporteerde responses hebben de header
X-Justflows-Render: static-export, zodat je ze kunt onderscheiden van live renders.
Een echte accountpagina op /account
Elke ingelogde gebruiker heeft nu een accountpagina op
/account met het eigen profiel en secties van actieve plugins. Shop voegt bijvoorbeeld klantgegevens, bestellingen en abonnementsacties toe. Je ontwerpt de pagina in de pagebuilder zoals elke andere content, terwijl persoonlijke gegevens per verzoek worden geladen en de pagina buiten caches, zoekresultaten, sitemaps en statische exports blijft. Eigenaren van een workspace zien daar ook hun workspaces, sites en limieten. De oude URL /platform-account verwijst door.Opslag meten en begrenzen
Diagnostiek en Platform → Website tonen nu hoeveel opslag elke site gebruikt (media, privébestanden en statische exports), zowel lokaal als extern. Een nieuwe limiet voor totale opslag (
storage.bytes) begrenst het lokale plus externe gebruik per website. Bestaande bestanden blijven staan als je een limiet verlaagt; nieuwe uploads worden geweigerd zodra de limiet is bereikt.Voor pluginontwikkelaars
- Duurzame events.
ctx.hooks.emit(name, payload, { durable: true })slaat webhookleveringen op voordat listeners draaien, zodat mislukte leveringen opnieuw kunnen worden geprobeerd. - Gestructureerde fouten. Routes kunnen kiezen voor
structuredErrors: trueom CSRF-, ratelimit- en dispatcherfouten terug te geven als{ error: { code, message } }. - Neutrale API-URL's. Declareer een
apiNamespaceen bouw links metctx.http.url()ofpluginApiUrl()uit de SDK om/api/<namespace>/…beschikbaar te maken. - Meer adminpagina's. Een plugin kan nu tot 40 adminroutes registreren in plaats van 20, en
settings/…-routes worden gelinkt vanaf de eigen instellingenpagina. - Platformtools.
ctx.quotaskan limieten instellen voor een andere workspace of site,ctx.users.removeRole()neemt een rol terug die een plugin heeft gegeven, entenancy.workspaceCreatednoemt de eerste beheerder van een nieuwe workspace.
// Persist the delivery before isolated listeners run, so it can be retried
await ctx.hooks.emit("order.paid", payload, { durable: true });
Fixes die het weten waard zijn
- Tijden in PostgreSQL verschuiven niet meer. Op een server die niet in UTC draaide, werden tijden zonder tijdzone verschoven met de afwijking van de server. Ze zijn nu UTC, net als op MySQL en MariaDB. De Docker-images hadden hier geen last van.
- Aparte plugindatabases bewaren tijdstempels nu ook in UTC, zodat Shop-back-ups die tussen databases worden verplaatst hun checksums doorstaan.
- Permalinks voor lijsten, menu's, zoekresultaten, sitemaps en exports worden in batches gemaakt in plaats van met één query per link, net als het modereren van reacties, het opschonen van revisies en de controles van de prullenbak.
- De TXT-challenge van een domein kan worden geverifieerd nadat de nameservers zijn omgezet.
Upgraden
Deze release voegt vier databasemigraties toe (
Lees de volledige changelog0043 tot en met 0046) voor locks op opslagquota, eigenaren van workspaces, accountpagina's en cachebeheer per type. Lees de volledige release notes voordat je upgradet, vooral als je PostgreSQL draait op een server die niet op UTC staat.✌️
Thanks for reading!
Find more posts on the blog or star Justflows on GitHub.