Senly
Releases & changelog
Live · v1.02

Wat is er nieuw in Senly

Een transparant overzicht van elke verbetering, fix en nieuwe functie. We bouwen Senly elke dag een stukje beter.

171
Updates totaal
92
Releases
v1.02
Laatste release · dinsdag 19 mei 2026
v1.02
dinsdag 19 mei 2026
23:33

Blog, partnerprogramma, sitemap en volledige SEO/GEO-optimalisatie

Nieuwe functie

Blog met 20 Nederlandstalige artikelen voor social media bureaus

Wat was het probleem

senly.io had geen contentpagina's voor organisch verkeer via Google en AI-modellen.

Hoe het is opgelost

Blog-overzichtspagina (/blog) en individuele artikelpagina's (/blog/[slug]) aangemaakt met JSON-LD BlogPosting, OpenGraph, hreflang (nl-NL + nl-BE), automatisch gegenereerde inhoudsopgave en gerelateerde artikelen.

Nieuwe functie

Partnerprogramma-pagina (/affiliate)

Wat het nu doet

Volledige affiliate-pagina met commissieniveaus (20–30% terugkerend), stappenoverzicht, rekenmachine-sectie, FAQ en aanmeld-CTA.

Nieuwe functie

Dynamische sitemap.xml en robots.txt met GEO-regels

Wat het nu doet

sitemap.ts genereert automatisch URLs voor alle publieke pagina's en blogartikelen. robots.ts staat expliciet AI-crawlers toe (GPTBot, PerplexityBot, Claude-Web, Google-Extended etc.) voor maximale GEO-zichtbaarheid.

Nieuwe functie

Verbeterde metadata, hreflang en Organization JSON-LD in root layout

Wat het nu doet

layout.tsx uitgebreid met volledige OpenGraph/Twitter Cards, hreflang nl-NL + nl-BE + x-default, SoftwareApplication JSON-LD schema en verbeterde title-template voor alle pagina's.

v1.01
dinsdag 19 mei 2026
12:20

Landingspagina: support-widget met AI-bot, helpcentrum en medewerker-optie

Nieuwe functie

Support-widget op de landingspagina

Wat was het probleem

De support-chat was alleen zichtbaar na inloggen in het portaal.

Hoe het is opgelost

Zelfstandige widget toegevoegd aan de landingspagina in huisstijlkleur teal. Bevat een AI-assistent (reageert direct), een helpcentrum-tab met zoekfunctie, en een medewerker-optie waarbij de bezoeker zijn e-mailadres achterlaat.

v1.00
dinsdag 19 mei 2026
02:55

Landing: scroll-jacked dashboard-tour sectie verwijderd

Polish

ZoomScene sectie verwijderd van de landingspagina

Wat het nu doet

De scroll-jacked dashboard-tour (ZoomScene + DashboardTour) is volledig verwijderd uit de landing.

v0.99
dinsdag 19 mei 2026
02:42

Landing: dashboard-tour is nu pixel-perfecte 1:1 replica van het echte platform

Polish

Dashboard-tour exact nagebouwd als het echte Senly dashboard

Wat was het probleem

De eerste versie gebruikte een donker dark-mode mockup dat nauwelijks leek op het echte platform.

Hoe het is opgelost

Volledig herbouwd als licht-thema replica met wine/maroon bureau-branding: juiste header met gebruikersprofiel, icon-rail sidebar, KPI-kaarten, omzetgrafiek, activiteitenfeed, klantkaarten, content kalender, taken en CRM-pipeline — allemaal exact zoals in het echte dashboard.

v0.98
dinsdag 19 mei 2026
01:57

Landing: scroll-jacked dashboard-tour — wandel door je bureau-OS

Nieuwe functie

Scroll-in dashboard tour op de landing pagina

Wat was het probleem

Bezoekers zagen het dashboard alleen klein in de hero — geen gevoel hoe het écht voelt om erin te werken.

Hoe het is opgelost

Nieuwe scroll-sectie tussen trust en platform: het dashboard zoomt van klein tablet-formaat naar volledige viewport, daarna scrol je verticaal door de inhoud (interne scroll), en als je onderaan bent gaat de pagina automatisch verder. Met fade-in CTA "Ervaar Senly live" onderaan.

v0.97
maandag 18 mei 2026
23:29

Support chat: AI focust op laatste vraag + handmatig scrollen werkt

Bug fix

AI gaf antwoorden op oude context ipv nieuwe vraag

Wat was het probleem

De assistent kreeg alle 20 voorgaande berichten mee en raakte verward — als er ergens "dankjewel" stond reageerde hij met "graag gedaan" op een nieuwe vraag.

Hoe het is opgelost

Prompt herstructuur: laatste vraag staat apart als "actuele vraag", oude berichten zijn alleen context. Geschiedenis beperkt tot 8 berichten zodat focus op de actuele vraag blijft.

Bug fix

Chat scrolde automatisch terug naar beneden tijdens lezen

Wat was het probleem

Elke 4 seconden polling sleepte je terug naar het einde van de chat — terugscrollen om iets opnieuw te lezen was onmogelijk.

Hoe het is opgelost

Auto-scroll werkt nu alleen als je al onderaan zit (binnen 80px). Scroll je omhoog, dan blijf je waar je bent tot je zelf weer naar beneden gaat.

v0.96
maandag 18 mei 2026
23:13

Support bot: nette opmaak met alinea's en vetgedrukte termen

Polish

Bot-berichten leesbaar opgemaakt

Wat was het probleem

Antwoorden van de assistent kwamen als één muur van tekst met zichtbare asterisken (**term**) in plaats van vetgedrukte woorden.

Hoe het is opgelost

Bot-bubbles renderen nu markdown-stijl opmaak: alinea's krijgen ruimte tussen elkaar en termen tussen **dubbele asterisken** worden vetgedrukt. De AI-prompt is ook bijgewerkt zodat antwoorden altijd in korte alinea's worden geschreven.

v0.95
maandag 18 mei 2026
23:03

AI-support bot gerepareerd: omgeschakeld naar Gemini met werkend prompt-formaat

Bug fix

Support-chatbot reageerde niet op berichten

Wat was het probleem

De AI-assistent was geconfigureerd met de Anthropic SDK, maar de ANTHROPIC_API_KEY was niet ingesteld in de productie-omgeving. Daarna bleek ook het Gemini contents-object formaat niet te werken met de bestaande SDK-versie.

Hoe het is opgelost

Omgeschakeld naar Gemini (dezelfde provider als caption-generator). Prompt wordt opgebouwd als platte tekst-string — identiek aan hoe de caption-generator het doet. Bot reageert nu direct op vragen over het platform.

v0.94
maandag 18 mei 2026
21:45

AI-assistent in de support-chat: directe antwoorden, optionele overdracht naar medewerker

Nieuwe functie

AI-chatbot beantwoordt support-vragen automatisch

Wat was het probleem

Klanten moesten wachten op een handmatig antwoord terwijl de meeste vragen over standaard platformfuncties gaan.

Hoe het is opgelost

De AI-assistent reageert direct op vragen in de support-widget. Hij kent het volledige platform (dashboard, klanten, taken, financieel, tools, meetings en meer) en geeft beknopte, juiste antwoorden in de taal van de gebruiker.

Nieuwe functie

Overdracht naar medewerker op verzoek

Wat het nu doet

Zodra een klant aangeeft een echte medewerker te willen ("verbind met medewerker"-knop of vrij getypte tekst), zet de bot de room in human mode en stuurt een bevestiging. De support-inbox toont het gesprek direct met een oranje "Medewerker gevraagd"-badge.

Polish

Typing-indicator en bot-avatar in de widget

Wat het nu doet

Tijdens het genereren van een antwoord zijn drie bouncende stippen zichtbaar. Bot-berichten hebben een herkenbaar slotpictogram-avatar en worden gelabeld als "Assistent".

v0.93
maandag 18 mei 2026
12:50

Demo-data resetten met één klik vanuit Instellingen

Nieuwe functie

Knop "Demo-data resetten" voor super-admins

Wat was het probleem

De demo-tenant raakte na verloop van tijd leeg (taken weg, klanten weg) en de fake-data kon alleen via Railway-shell terug worden gezet. Onhandig om vóór elke sales-demo te moeten.

Hoe het is opgelost

In Instellingen → Onderhoud staat nu een "Demo-data resetten"-knop (alleen zichtbaar voor super-admin). Eén klik bouwt het demo-bureau opnieuw op: 26 klanten, 55 open taken, designs, financiën, CRM-leads en onboarding-board. Duurt 30-60s, eigen tenants blijven onaangeroerd.

v0.92
maandag 18 mei 2026
11:12

Uitgebreide Launchpad met meer onboarding-stappen

Nieuwe functie

Meer onboarding-taken zodat bureaus het platform volledig kunnen benutten

Wat het nu doet

De Launchpad is uitgebreid met taken voor social accounts koppelen, klantdossiers invullen, content plannen, eerste boeking ontvangen, e-mailcampagnes sturen en designs importeren. Completion wordt automatisch afgeleid uit de werkelijke database-state.

v0.91
maandag 18 mei 2026
11:04

Intro-animatie toont het eigen bureau-logo

Polish

Elk bureau ziet zijn eigen logo in de welkomst-animatie

Wat het nu doet

De intro-animatie op de Launchpad gebruikt nu het logo uit de huisstijl-instellingen van het bureau. Heeft een bureau nog geen logo ingesteld, dan wordt het platform-logo getoond.

v0.90
maandag 18 mei 2026
10:56

Super-admin kan custom rollen nu ook verwijderen en bewerken

Bug fix

"Rol niet gevonden" bij verwijderen opgelost

Wat was het probleem

Super-admin kreeg de melding "Rol niet gevonden" bij het verwijderen of bewerken van een custom rol, omdat de API altijd filterde op tenantId van de ingelogde gebruiker.

Hoe het is opgelost

Super-admin mag nu elke rol opzoeken en beheren, ongeacht welk bureau de rol aangemaakt heeft.

v0.89
maandag 18 mei 2026
10:54

Welkomst-animatie bij eerste bezoek aan Launchpad

Nieuwe functie

Logo-intro bij eerste keer openen van de Launchpad

Wat het nu doet

Bij het allereerste bezoek aan de Launchpad speelt een korte animatie af: het logo verschijnt in het midden van het scherm met een persoonlijke begroeting, waarna het vloeiend wegglijdt. Daarna nooit meer te zien.

v0.88
maandag 18 mei 2026
10:50

Rollen-pagina toont alle custom rollen voor super-admin

Bug fix

Super-admin zag geen rollen op de rollen-pagina

Wat was het probleem

De rollen-pagina filterde op tenantId van de ingelogde gebruiker. Super-admins hebben tenantId=null, waardoor rollen die bij een bureau horen onzichtbaar bleven.

Hoe het is opgelost

Super-admin zonder bureaufilter ziet nu alle custom rollen van alle bureaus op de rollen-pagina.

v0.87
maandag 18 mei 2026
10:44

Persoonlijke voorkeuren in Instellingen

Nieuwe functie

Klantenservice-chat aan/uit zetten in je eigen instellingen

Wat was het probleem

De chat-knop rechtsonder stond altijd aan, ook voor admins die er geen behoefte aan hebben of een schoon scherm willen tijdens een demo.

Hoe het is opgelost

In Instellingen → Voorkeuren staat nu een toggle "Klantenservice-chat tonen". Direct effect — geen reload nodig. De voorkeur wordt per browser onthouden.

Nieuwe functie

Compacte weergave voor wie meer info op één scherm wil

Wat was het probleem

De standaard ruimere weergave is prettig voor grote schermen maar voelt voor power-users en laptops aan als verspilde ruimte.

Hoe het is opgelost

Toggle "Compacte weergave" in Instellingen → Voorkeuren verkleint paddings en regelhoogtes globaal. Direct zichtbaar.

Nieuwe functie

Uitleg-rondleidingen opnieuw bekijken met één klik

Wat was het probleem

Zodra je een page-tour wegklikte was er geen makkelijke manier om hem opnieuw te starten — handig bij nieuwe teamleden of om iets te laten zien tijdens een demo.

Hoe het is opgelost

Knop "Rondleidingen resetten" in Instellingen → Voorkeuren wist alle voltooide tours. De volgende keer dat je een pagina bezoekt verschijnt de tour weer.

Polish

Sectie "Metricool standaarden" weggehaald uit Instellingen

Wat was het probleem

De drie velden over post-tijdstippen zaten verstopt in het algemene instellingen-paneel, terwijl dat eigenlijk een feature-specifieke setting is.

Hoe het is opgelost

Sectie verwijderd uit het paneel. De voorkeuren worden intern nog wel respected, maar staan niet meer als afleiding tussen de algemene voorkeuren.

v0.86
maandag 18 mei 2026
10:43

Rollen-pagina toegevoegd aan beheer-menu

Polish

"Rollen" link in het admin-menu

Wat het nu doet

Via het tandwiel-menu is er nu een directe link naar de rollen-pagina waar je aangepaste rollen kunt bekijken en verwijderen.

v0.85
maandag 18 mei 2026
10:33

Aangepaste rolnaam zichtbaar in gebruikerskaart

Bug fix

Badge toont nu de naam van de aangepaste rol

Wat was het probleem

Gebruikers met een aangepaste rol (bijv. "op") kregen in de gebruikerslijst toch "Manager" te zien als rol-badge.

Hoe het is opgelost

De badge toont nu de naam van de aangepaste rol als die is ingesteld, en valt anders terug op de standaard rolnaam.

v0.84
maandag 18 mei 2026
10:25

Modal-titel hernoemd naar "Gebruiker toevoegen"

Polish

Gebruikers-modal heeft nu een generieke titel

Wat het nu doet

De kop en eyebrow van de gebruiker-toevoegen-modal tonen nu "Nieuwe gebruiker" en "Gebruiker toevoegen" in alle talen, in plaats van de rol-specifieke "Nieuwe manager".

v0.83
maandag 18 mei 2026
10:25

Super-admin ziet alle gebruikers van alle bureaus

Bug fix

Gebruikers van klant-bureaus verschenen niet in het platform-overzicht

Wat was het probleem

Vanuit super-admin niveau bleven nieuw aangemaakte managers/setters onzichtbaar omdat de gebruikerslijst alleen platform-niveau accounts toonde. De gebruiker was wel aangemaakt, maar leek "weg".

Hoe het is opgelost

Super-admins zien nu alle gebruikers uit alle bureaus in één overzicht. Naast naam en rol staat een bureau-tag (of "Platform"), en er is een extra dropdown om snel op een specifiek bureau te filteren. Bureau-admins blijven uiteraard hun eigen tenant zien.

v0.82
maandag 18 mei 2026
10:12

Permissie-editor klapt breder open — alle labels leesbaar

Polish

Modal verbreedt automatisch in stap 2 van rol-aanmaken

Wat was het probleem

Bij het kiezen van permissies voor een nieuwe rol braken de labels (bijv. "Klantenlijst en klantprofielen bekijken") over meerdere regels en werd de tekst afgekapt — moeilijk te zien welke rechten je precies gaf.

Hoe het is opgelost

Zodra je naar stap 2 (permissies kiezen) gaat, klapt de modal soepel uit van 480px naar 920px breed. Alle permissie-labels en beschrijvingen staan nu rustig op één regel.

v0.81
maandag 18 mei 2026
10:10

Polish: lichter modal-kopje + duidelijker optioneel CRM-veld

Polish

Modal-titels in lichter, kleiner lettertype

Wat was het probleem

De kop "Manager toevoegen" (en andere modal-titels) stond in een dik en groot heading-formaat — voelde zwaarder dan de rest van de UI.

Hoe het is opgelost

Modal-titels gebruiken nu een rustigere typografie (18px, weight 500) die beter aansluit op de Senly-stijl en minder visueel domineert.

Polish

Externe CRM-koppeling duidelijker gemarkeerd als optioneel

Wat was het probleem

Het veld voor het koppelen aan een externe CRM-id stond zonder uitleg dat het optioneel is, en de hint verwees naar een externe tool bij naam — kon verwarrend zijn.

Hoe het is opgelost

Label heet nu "Externe CRM-gebruiker (optioneel)" met een neutrale uitleg, en het veld wordt niet meer per ongeluk auto-ingevuld door de browser met een e-mailadres.

v0.80
maandag 18 mei 2026
10:06

Super-admin kan namens een bureau gebruikers aanmaken

Nieuwe functie

Bureau-keuze in het "gebruiker toevoegen"-scherm

Wat was het probleem

Vanuit het platform-niveau gaf het toevoegen van een manager, setter of sales manager een foutmelding ("kunnen niet vanuit super-admin context worden aangemaakt"). Je moest eerst inloggen als bureau-admin om iemand toe te voegen — onhandig wanneer je vanuit het overzicht snel iemand wilde toewijzen.

Hoe het is opgelost

Wanneer je vanuit platform-niveau een gebruiker aanmaakt verschijnt er nu een "Bureau / tenant" dropdown. Kies het bureau en de manager/setter/sales-manager wordt direct in dat bureau geplaatst — met de juiste scope, custom rollen en branding. Voor ADMIN-rollen mag je het bureau leeglaten als je nog een platform super-admin wilt toevoegen.

v0.79
maandag 18 mei 2026
09:58

Dashboard-aanpassen-knop alleen op het dashboard

Polish

"Aanpassen"-icoon in de topbar verschijnt alleen waar het werkt

Wat was het probleem

De knop om widgets te verslepen stond op elke pagina in de topbar, ook waar het geen functie had — visuele ruis op pagina's buiten het dashboard.

Hoe het is opgelost

De knop is nu alleen zichtbaar op het dashboard zelf. Op andere pagina's blijft de topbar opgeruimd.

v0.78
maandag 18 mei 2026
09:53

Aangepaste rol direct vanuit gebruiker-toevoegen flow

Polish

Custom rol maken zit nu in dezelfde flow als nieuwe gebruiker toevoegen

Wat was het probleem

Custom rollen had een eigen menu-item, los van waar je ze daadwerkelijk gebruikt — bij het uitnodigen van een teamlid. Twee schermen, twee stappen, onnodige zoektocht.

Hoe het is opgelost

De aparte Custom rollen-pagina is uit het menu gehaald. In plaats daarvan staat in de gebruiker-toevoegen modal een nieuwe rol-optie "+ Aangepaste rol aanmaken…". Selecteer hem, klik Aanmaken, en de modal springt naar een tweede stap met de permission-tree. Daar configureer je naam + permissies, klik nogmaals op aanmaken en zowel de rol als de gebruiker zijn in één keer aangemaakt en aan elkaar gekoppeld.

Nieuwe functie

Bestaande custom rollen blijven herbruikbaar in dezelfde dropdown

Wat het nu doet

Eenmaal aangemaakte rollen verschijnen automatisch als opties bij het uitnodigen of bewerken van volgende teamleden, zodat je een "Content-medewerker"- of "Junior setter"-rol kunt hergebruiken zonder telkens opnieuw permissies te configureren.

v0.77
maandag 18 mei 2026
09:39

Custom rollen met fijnmazige permissies

Nieuwe functie

Eigen rollen aanmaken naast Admin / Manager / Setter / Sales Manager

Wat was het probleem

De vier system-rollen waren rigide — een teamlid dat wel content moet kunnen aanmaken maar niet bij financieel mag, of een junior setter zonder pipeline-rechten, was niet mogelijk zonder workarounds.

Hoe het is opgelost

Er is een nieuwe pagina **Instellingen → Custom rollen** waar je eigen rollen aanmaakt met een fijnmazige permissie-tree. 14 modules met 70+ losse permissies, elke module heeft een master-toggle en sub-checkboxes. Bij het uitnodigen of bewerken van een gebruiker kun je voortaan zowel een system-rol als een custom rol kiezen.

Nieuwe functie

Permissie-tree volgt module-structuur van het portaal

Wat het nu doet

De catalog dekt Klanten, Taken, Financieel, Meetings, E-mail, Content & designs, CRM, Onboarding, Tools & AI, Rapporten, Team, Instellingen, Affiliate en Audit-log. Per module zijn specifieke acties (bekijken, aanmaken, bewerken, verwijderen, etc.) afzonderlijk in te schakelen.

v0.76
maandag 18 mei 2026
01:57

Helpcentrum verdubbeld — nu 270 artikelen in 4 talen

Nieuwe functie

Honderd extra vragen-met-antwoord toegevoegd in alle modules

Wat was het probleem

Het helpcentrum dekte de basis, maar dagelijkse vragen over advanced features (per-klant beschikbaarheid, drip-campaigns, lead-scoring, custom webhooks, white-label, mobiele PWA, etc.) waren nog niet opgenomen. Bureau-eigenaars moesten support contacteren voor zaken die ook zelf op te zoeken hadden kunnen zijn.

Hoe het is opgelost

Het helpcentrum bevat nu 270 artikelen, verdeeld over 20 categorieën. Nieuwe secties Mobile/PWA, Best practices en Launchpad zijn toegevoegd; bestaande secties (Klanten, Taken, Financieel, Tools, CRM, Meetings, E-mail) zijn fors uitgebreid. Bestaande artikelen zijn gecontroleerd op recente platform-updates.

Nieuwe functie

Volledige vertaling naar Engels, Duits en Frans

Wat het nu doet

Niet alleen Nederlands — alle 270 artikelen zijn beschikbaar in EN (natural professional), DE (Sie-vorm, B2B), en FR (vouvoiement). Talen wisselen in het profielmenu en het helpcentrum schakelt automatisch mee.

v0.75
maandag 18 mei 2026
01:15

Launchpad-titel fontdikte gelijk aan Takenbeheer

Polish

Launchpad-titel gebruikt nu font-weight 500 (zelfde als Takenbeheer)

Wat was het probleem

De Launchpad-titel had font-weight 700 (vet), terwijl Takenbeheer font-weight 500 gebruikt — visueel inconsistent.

Hoe het is opgelost

font-weight van .lp-hero h1 verlaagd naar 500.

v0.74
maandag 18 mei 2026
01:05

Launchpad-titel formaat gelijk aan Takenbeheer

Polish

Hero-tekst is nu compacter en heeft dezelfde dikte als andere overzichtpagina's

Wat het nu doet

De vorige versie gebruikte een groter font, waardoor de letters zwaarder oogden dan op Takenbeheer of Statistieken. Launchpad gebruikt nu exact dezelfde formaat-clamp (30-40px) als die pagina's.

v0.73
maandag 18 mei 2026
01:00

Launchpad-titel matcht nu de andere hero-titels

Polish

Titel "Launchpad" krijgt dezelfde dikte als "Goedenavond" en andere hero-titels

Wat het nu doet

De display-font Ciutadella rendert zonder expliciete font-weight en tight letter-spacing iets dunner. Launchpad gebruikt nu dezelfde styling (font-weight 700, letter-spacing -0.04em, line-height 1.05) als de andere koppen, dus 1 visuele lijn door het hele portaal.

v0.72
maandag 18 mei 2026
00:53

Launchpad — onboarding-checklist bovenaan de zijbalk

Nieuwe functie

Persoonlijke startlijst leidt nieuwe gebruikers door alle setup-stappen

Wat was het probleem

Nieuwe gebruikers wisten niet welke instellingen ze moesten doen om het portaal volledig te benutten — huisstijl, eerste klant, e-mail-koppeling, agenda-integratie, 2FA, AI-sleutel, etc. Allemaal nuttig maar verspreid over verschillende pagina's.

Hoe het is opgelost

Bovenaan de zijbalk verschijnt nu een Launchpad-knop met een gepersonaliseerde checklist. Per categorie (Basisinstellingen, Klanten, Meetings, E-mail, Tools) zie je wat er nog open staat met directe knoppen naar de juiste pagina. Voortgang wordt automatisch herkend op basis van de echte instellingen — zodra je bv. een profielfoto uploadt, vinkt die taak zichzelf af.

Nieuwe functie

Eigen Launchpad per rol — setters zien geen huisstijl-taken

Wat het nu doet

Admins krijgen alle 14 taken inclusief huisstijl, team-uitnodigen en integraties. Managers zien 9 taken zonder admin-only zaken. Appointment Setters krijgen 6 sales-gerichte taken (profiel, e-mail-koppeling, kalender, eerste lead). Sales Managers krijgen daar ook de pipeline-configuratie bij.

Nieuwe functie

Knop verdwijnt automatisch als alles klaar of overgeslagen is

Wat het nu doet

Een taak die irrelevant voor jou is kun je per stuk overslaan. Zodra alle taken óf voldaan óf overgeslagen zijn, verdwijnt de Launchpad-menuknop uit de zijbalk en kun je hem later altijd nog rechtstreeks bezoeken via /launchpad om een taak weer aan te zetten.

v0.71
maandag 18 mei 2026
00:42

Helpcentrum uitgebreid met 27 nieuwe artikelen

Nieuwe functie

Nieuwe secties Meetings, E-mail en Affiliate in het helpcentrum

Wat was het probleem

Recent toegevoegde modules zoals Meetings (boekingen), de gekoppelde e-mailaccounts en het affiliate-programma stonden nog niet in het helpcentrum. Bureau-eigenaren moesten een supportticket aanmaken voor vragen die in een artikel beantwoord hadden kunnen worden.

Hoe het is opgelost

27 nieuwe artikelen toegevoegd: 13 voor Meetings (calendars aanmaken, boekingslink delen, beschikbaarheid, agenda-koppelingen, branding, notificaties, test-mail, verzender-keuze, annuleren/verplaatsen), 5 voor E-mail (Gmail/Outlook/IMAP koppelen, inbox, campagnes, handtekening, token-issues), 4 voor Affiliate (programma-uitleg, verwijslink, commissies, percentages), plus extra vragen over Cmd+K snelzoeken, widget-aanpassing, profielfoto en tijdzone-instellingen.

v0.70
maandag 18 mei 2026
00:35

Zoek-paneel (Cmd+K) toont alle pagina's, scope volgt jouw rol

Nieuwe functie

Volledige sidebar-navigatie nu in het Cmd+K zoek-paneel

Wat was het probleem

Het zoek-paneel (Cmd+K) toonde slechts 4 pagina's en miste de meeste recent toegevoegde modules zoals Meetings, CRM, Contentkalender, Onboarding, Affiliate, Updates en alle admin-secties.

Hoe het is opgelost

Het paneel toont nu de volle navigatie — werkruimte-pagina's, persoonlijke pagina's en beheer-secties. Titels volgen direct de bestaande vertalingen (NL/EN/DE/FR), subtitles zijn voorzien van een korte beschrijving zodat je sneller herkent waar je heen wil.

Beveiliging

Zoek-resultaten respecteren rollen en permissies

Wat was het probleem

Een setter of sales-manager zou via het zoek-paneel pagina's kunnen vinden die buiten zijn werkscope vallen (bv. Statistieken, Takenbeheer, Financieel).

Hoe het is opgelost

Resultaten worden nu hetzelfde gefilterd als de sidebar: hideForSales-pagina's vallen voor sales-rollen weg, admin-only pagina's alleen voor admins, en Financieel volgt de viewFinance-permissie van de gebruiker.

v0.69
maandag 18 mei 2026
00:21

Eigen icoon voor Onboarding in de zijbalk

Polish

Onboarding-tab krijgt een raket-icoon

Wat was het probleem

Het icoon van Onboarding was identiek aan dat van Takenbeheer (allebei een vinkje-in-een-vakje) — verwarrend bij hover.

Hoe het is opgelost

Onboarding heeft nu een raket-icoon, passend bij het "nieuwe klant aan boord brengen"-thema. De twee tabs zijn weer visueel te onderscheiden.

v0.68
maandag 18 mei 2026
00:11

Changelog-pagina styling vanaf eerste pixel

Bug fix

Geen onge-stylede flits meer bij Cmd+R op de updates-pagina

Wat was het probleem

Bij het openen of refreshen van de Updates-pagina zag je een halve seconde de ruwe inhoud zonder opmaak voordat de styling werd toegepast.

Hoe het is opgelost

De ~440 regels CSS van deze pagina staan nu in een echt stylesheet-bestand dat Next.js vóór de eerste paint laadt. Pagina komt direct strak op het scherm.

v0.67
maandag 18 mei 2026
00:04

Meetings-pagina styling vanaf eerste pixel

Bug fix

Geen onge-stylede flits meer bij Cmd+R op de Meetings-pagina

Wat was het probleem

Bij een harde refresh zag je een halve seconde de Meetings-pagina zonder opmaak: blote knoppen, geen kalender-raster, geen kleuren. De pagina-styling werd pas na hydration ingeladen via een React-component.

Hoe het is opgelost

De ~400 regels CSS staan nu in een echt stylesheet-bestand dat Next.js voor de eerste paint laadt. De pagina komt direct in de juiste vorm op het scherm.

v0.66
zondag 17 mei 2026
23:58

Tijdzone-dropdown in profiel netjes gestyled

Polish

Selects in Profiel volgen nu de huisstijl-styling

Wat was het probleem

De tijdzone-dropdown gebruikte het standaard browser-uiterlijk en stak af tussen de strakke input-velden.

Hoe het is opgelost

Selects in de profiel-pagina hebben nu dezelfde hoogte, padding, rand en focus-kleur als de inputvelden, plus een custom chevron-pijl voor consistente weergave in alle browsers en zowel dark als light mode.

v0.65
zondag 17 mei 2026
23:55

Engelse tab-labels in Meetings vertaald

Polish

Meetings-pagina toont nu "Kalender" en "Instellingen" in plaats van Calendar / Settings

Wat het nu doet

De tabbladen bovenaan de Meetings-pagina waren nog in het Engels — dat past niet bij de rest van de Nederlandse UI. Tekst is aangepast naar Kalender en Instellingen.

v0.64
zondag 17 mei 2026
23:53

Sidebar-tab "Kalender" omgedoopt naar "Contentkalender"

Polish

Duidelijker label voor de contentplanning-pagina

Wat het nu doet

De zijbalk-tab heet voortaan Contentkalender in plaats van Kalender, zodat het verschil met Meetings (afspraken) direct duidelijk is. Ook vertaald in EN/DE/FR.

v0.63
zondag 17 mei 2026
23:43

Mail-preview, test-knop en verzender-keuze in Meetings

Nieuwe functie

Live preview van booking-mails terwijl je ze bewerkt

Wat was het probleem

Bij het bewerken van een notificatie-mail (Afspraak geboekt, Herinnering, Annulering, etc.) moest je gokken hoe het eruit zou komen. De enige manier om het echt te zien was een echte boeking maken.

Hoe het is opgelost

In de bewerk-dialog zie je nu rechts een live preview van de daadwerkelijke mail met dummy-data ingevuld. Werkt mee terwijl je typt.

Nieuwe functie

Test-mail-knop verstuurt direct naar je eigen adres

Wat het nu doet

Onder elke notificatie-bewerk-dialog staat een "Test verzenden"-knop. Eén klik en de mail (met je huidige conceptwijzigingen, mét [TEST]-prefix in het onderwerp) komt op je eigen mailbox aan. Geen echte boeking meer nodig om te checken.

Nieuwe functie

Verzender-keuze per calendar bij meerdere gekoppelde e-mailaccounts

Wat was het probleem

Wie meerdere mailaccounts gekoppeld had, kon niet kiezen vanaf welk adres boekingsmails verstuurd werden — automatisch werd het eerst-gekoppelde adres gebruikt.

Hoe het is opgelost

Bij het instellen van een calendar is er nu een "Versturen via"-dropdown waarin je per calendar het juiste mailaccount kiest. Alle bevestigingen, herinneringen, annuleringen en vervolgmails van die calendar vertrekken vanaf het gekozen adres.

v0.62
zondag 17 mei 2026
22:47

Emojis in Meetings-instellingen vervangen door lijn-iconen

Polish

Strakkere settings-zijbalk met getekende symbolen

Wat het nu doet

De emojis bij Calendars, Beschikbaarheid, Integraties en Branding zijn vervangen door minimalistische line-icons in dezelfde stijl als de hoofdnavigatie. De icoon-kleur volgt de tab-tekst zodat de actieve tab vanzelf in de huisstijl staat.

v0.61
zondag 17 mei 2026
22:42

Checkbox-kleur in de kalender volgt jouw huisstijl

Polish

Vinkjes naast kalender-types nemen je primary-color over

Wat het nu doet

De checkboxes in de Calendars-zijbalk gebruikten de standaard browser-blauw. Ze volgen nu de accent-kleur die in je huisstijl is ingesteld.

v0.60
zondag 17 mei 2026
22:35

Dark/light flits weg bij Cmd+R

Bug fix

Light-mode wordt vanaf de eerste pixel toegepast

Wat was het probleem

Wie het portaal in light-mode gebruikte zag bij een harde refresh kort een donkere versie verschijnen voordat het thema correct werd toegepast. De thema-keuze stond alleen in browser-opslag en de server kon dus niet weten welke variant te renderen.

Hoe het is opgelost

Je thema-keuze wordt nu ook als cookie bewaard. De server kan die direct lezen en de juiste donker/licht-modus al in de eerste HTML-respons zetten. Geen donker-naar-licht sprong meer.

v0.59
zondag 17 mei 2026
22:20

Logo flits ook weg bij refresh

Bug fix

Tenant-logo verschijnt direct in de sidebar, niet meer na een halve seconde

Wat was het probleem

De huisstijl-kleuren werden al server-side gezet, maar het logo en de portaal-naam in de sidebar werden nog client-side opgehaald. Bij Cmd+R zag je daarom kort het standaard Senly-logo voordat jouw eigen logo verscheen.

Hoe het is opgelost

Logo, portaal-naam en bedrijfsnaam worden nu mee-gerenderd in de eerste HTML-respons. De sidebar toont vanaf de eerste pixel direct jouw eigen branding.

v0.58
zondag 17 mei 2026
22:10

Huisstijl-flits ook weg in light-mode

Bug fix

Branding-kleuren werken nu in beide thema's vanaf de eerste paint

Wat was het probleem

De vorige fix dekte alleen dark-mode af. Wie het portaal in light-mode gebruikte zag tóch nog de Senly-teal flits omdat de light-mode CSS-regels de tenant-overrides overrulen.

Hoe het is opgelost

De server zet nu de tenant-kleur in zowel de dark- als light-mode varianten klaar, zodat ongeacht je theme-keuze de juiste kleuren al vóór de eerste paint actief zijn.

v0.57
zondag 17 mei 2026
21:59

Geen kleur-flits meer bij Cmd+R

Bug fix

Tenant-huisstijl wordt vanaf de eerste paint correct getoond

Wat was het probleem

Bij een harde refresh zag je eerst kort de standaard Senly-kleuren voordat jouw eigen huisstijl ingeladen werd. Dat kwam omdat de kleuren pas na hydration via JavaScript werden gezet.

Hoe het is opgelost

De primary-color van je tenant wordt nu server-side opgehaald en in een inline <style>-tag mee-geleverd in de HTML. Browser kent de juiste kleuren al voordat de eerste pixel wordt geschilderd — geen "teal-flash" meer naar bordeauxrood, paars of welke kleur jouw bureau dan ook heeft.

v0.56
zondag 17 mei 2026
21:47

Dashboard rendert direct correct — geen layout-flits meer

Bug fix

Cmd+R toont voortaan meteen je gepersonaliseerde dashboard

Wat was het probleem

Bij een hard refresh zag je eerst kort de default-layout (en lege activiteiten-feed), daarna sprong het naar jouw gepersonaliseerde versie. De widget-volgorde, breedtes en hoogtes stonden alleen in de browser-opslag, dus de server kon ze niet rendereen.

Hoe het is opgelost

Dashboard-configuratie wordt nu in jouw account opgeslagen en server-side direct meegestuurd. De recente activiteiten worden ook al vooraf geladen, en de groet ("Goedenavond" etc.) volgt jouw profiel-tijdzone in plaats van de server-tijdzone. Bestaande layout uit je browser wordt eenmalig overgezet.

v0.55
zondag 17 mei 2026
21:28

Volledige boekingslink + kopieer-knop per calendar

Nieuwe functie

Direct kopieerbare URL bij elke calendar-kaart

Wat was het probleem

Op Meetings → Settings → Calendars zag je alleen een ingekort pad zoals /boek/.../slug. Om de echte link te delen moest je telkens een booking openen of de URL handmatig samenstellen.

Hoe het is opgelost

Iedere kaart toont nu de volledige boekings-URL met een Kopieer-knop ernaast. Eén klik en de link staat op je klembord — handig om snel naar een klant te sturen.

v0.54
zondag 17 mei 2026
21:24

Meetings tonen ook tijden in jouw eigen tijdzone

Nieuwe functie

Booking-detail, dag- en maand-kalender en sync-tijden gebruiken jouw profiel-tijdzone

Wat was het probleem

Tijden in de meetings-module volgden alleen de browser-tijdzone. Een gebruiker die in zijn profiel een andere tijdzone instelde, zag op de meeting-detailpagina nog steeds de browser-tijd — verwarrend als je in een andere zone werkt dan je laptop.

Hoe het is opgelost

De "Wanneer"-regel van een booking, de tijd-chips in de maand- en dagkalender en de "Laatste sync"-melding bij integraties gebruiken nu allemaal de tijdzone die je in Mijn profiel hebt gekozen.

v0.53
zondag 17 mei 2026
21:11

Eigen tijdzone per gebruiker in je profiel

Nieuwe functie

Stel je tijdzone in via Mijn profiel

Wat was het probleem

Iedereen kreeg Nederlandse tijden te zien — onlogisch voor collega's die in een andere tijdzone werken.

Hoe het is opgelost

In je profiel zit nu een tijdzone-picker (Amsterdam, Istanbul, New York, etc.). Alle datums en tijden in het portaal worden in jóuw tijdzone weergegeven. Bekijk je de activiteiten van een collega die in een andere zone werkt, dan zie je nog steeds jouw eigen tijd — geen mentale rekensommen meer.

v0.52
zondag 17 mei 2026
17:32

Tijden weergeven in Amsterdam-tijdzone + opruiming logging

Bug fix

Changelog en activiteiten-feed tonen tijd in Amsterdam-tijdzone

Wat was het probleem

Bij eerste page-load flikkerden tijden van UTC naar lokaal omdat server en browser verschillende tijdzones gebruikten.

Hoe het is opgelost

Datum- en tijdformatters renderen nu altijd in Europe/Amsterdam, zowel server-side als in de browser.

Infra

Disk-write logging in LinkedIn-connector verwijderd

Wat was het probleem

Elke aanroep schreef een regel naar /tmp/li-connector-debug.log — kon de schijf op de productie-server vol laten lopen.

Hoe het is opgelost

Logging gaat nu alleen nog naar de standaard server-log, geen losse bestanden meer.

v0.51
zondag 17 mei 2026
17:29

Video-downloader en hashtag-tool werken weer in productie

Bug fix

yt-dlp wordt nu correct gevonden op de productie-server

Wat was het probleem

Twee tools verwezen naar een hardgecodeerd lokaal Mac-pad, waardoor ze op de Railway-server stil faalden.

Hoe het is opgelost

Binary wordt nu via PATH opgelost en yt-dlp is toegevoegd aan de Railway build-config, zodat beide tools voortaan werken op de live-omgeving.

v0.50
zondag 17 mei 2026
16:39

Changelog-verplichting permanent vastgelegd

Infra

Élke deploy verschijnt voortaan automatisch in de changelog

Wat het nu doet

Interne projectregel zorgt ervoor dat geen update meer onopgemerkt blijft. Tijden komen direct uit het deploy-moment in plaats van handmatig.

v0.49
zondag 17 mei 2026
16:23

In-app notificaties voor meetings

Nieuwe functie

Bell-icoon toont nu meeting-events

Wat het nu doet

Nieuw AppNotification model + helper. Booking-created/cancelled/rescheduled triggeren een melding bij de host. Volgt de channels.inApp toggle per meeting-type. Nieuwe POST /api/notifications endpoint voor mark-all-as-read.

v0.48
zondag 17 mei 2026
16:19

Outlook send, reschedule-mail, SMS/WhatsApp weg

Nieuwe functie

Outlook mail-send module via Microsoft Graph

Wat het nu doet

lib/email/outlook.ts met sendEmail() via /me/sendMail + auto refresh-token rotation. sendFromHostAccount routeert nu naar Gmail, Outlook of IMAP afhankelijk van de gekoppelde EmailAccount.

Nieuwe functie

Reschedule + cancellation mails bij booking PATCH/DELETE

Wat het nu doet

PATCH detecteert scheduledAt-wijziging en vuurt sendMeetingReschedule. PATCH+DELETE vuren sendMeetingCancellation bij status=cancelled.

Polish

SMS en WhatsApp channels uit de UI

Wat het nu doet

Channels teruggebracht naar { email, inApp }. Voorkomt verwarrende toggles voor channels die nog niet aangesloten waren.

v0.47
zondag 17 mei 2026
15:34

Snellere slot-berekening

Snelheid

Externe busy-slots parallel ophalen + 30s cache

Wat het nu doet

collectBusySlots() loopt nu via Promise.allSettled door alle providers parallel. Resultaten gecached per {userId,from,to} met 30s TTL + cache-covering zodat per-dag slots-calls binnen het eerder opgehaalde 60d-venster geen externe API-calls meer triggeren.

v0.46
zondag 17 mei 2026
15:19

Boekingspagina opent direct met slots

Nieuwe functie

Eerste beschikbare dag + tijdsloten in één call

Wat het nu doet

Nieuw GET /api/meetings/availability/first-available scant tot 60 dagen vooruit, vindt eerste dag met slots, en retourneert beide in 1 respons. BookingPage gebruikt dit zodat de pagina direct met data verschijnt — geen wachtende kalender meer.

v0.45
zondag 17 mei 2026
15:10

Per-host booking branding

Nieuwe functie

Branding-tab in Meetings: logo, kleur, bedrijfsnaam

Wat het nu doet

User-velden bookingLogoUrl/Color/Name. Nieuwe tab in /meetings settings met logo-upload, color picker en live preview. /boek/[user] gebruikt deze branding met fallback naar Tenant.

v0.44
zondag 17 mei 2026
14:45

Boekingspagina premium two-pane layout

Polish

Volledige redesign /boek/[user]/[slug]

Wat het nu doet

Two-pane layout: links pane met logo/info, rechts pane in huisstijlkleur met tijdzone-pill, kalender + tijdsloten 50/50. Tenant-logo als favicon op de tab. Responsive: stack op mobiel.

v0.43
zondag 17 mei 2026
14:19

Notification edit-dialog met channel-tabs

Nieuwe functie

Klikken op edit-icoon opent modal met channel-tabs

Wat het nu doet

Modal met E-mail/In-app tabs, "Ingeschakeld" toggle, recipients-sectie (Contact / Toegewezen gebruiker / Aanvullende e-mails). Bewerken per channel ipv inline uitklappen.

v0.42
zondag 17 mei 2026
14:02

Auto-accept boekingen + 5 notifications

Nieuwe functie

5 notification-types per meeting (Afspraak geboekt, Annulering, Verplaatst, Herinnering, Vervolg)

Wat het nu doet

Lijst met channel-chips (E-mail / In-app) per notification. Klik edit-icoon voor subject + body + recipients per kanaal. requireApproval toggle verwijderd — alles wordt nu automatisch confirmed.

v0.41
zondag 17 mei 2026
13:57

Per-calendar mail-instellingen

Nieuwe functie

Custom onderwerp + bericht per meeting-type

Wat het nu doet

MeetingType.emailConfig (JSON) met bevestiging/herinnering/annulering. Tokens: {{attendeeName}}, {{hostName}}, {{meetingTypeName}}, {{date}}, {{durationMinutes}}, {{meetingUrl}}. Cron-reminder respecteert nu per-type hoursBefore.

v0.40
zondag 17 mei 2026
13:15

Booking-mails vanaf gekoppeld mail-account host

Nieuwe functie

Bevestigingen, herinneringen en annuleringen via Gmail / IMAP

Wat het nu doet

sendFromHostAccount-helper: gebruikt EmailAccount van de host (Gmail OAuth of IMAP/SMTP) om mails te versturen. Fallback op Resend noreply zonder gekoppeld account.

v0.39
zondag 17 mei 2026
13:04

Rebrand: Sylo → Senly

Polish

Volledige tekst-replace door codebase (93 bestanden)

Wat het nu doet

Brand-namen, CSS-class prefixes, cookie-namen (senly_ref), DOM-events, Chrome-extensie protocol, email-templates en alle user-zichtbare teksten.

v0.38
zondag 17 mei 2026
12:55

Kies schrijf-agenda per kalender-koppeling

Nieuwe functie

Onder welke agenda komen nieuwe boekingen?

Wat het nu doet

Per kalender-integratie (Google/Outlook/Apple) selecteer je welke sub-agenda boekingen ontvangt. createOutlookEvent gebruikt nu writeCalendarId (Google + Apple deden dit al).

v0.37
zondag 17 mei 2026
12:51

Sub-agenda selectie voor busy-detection

Nieuwe functie

Selecteer welke sub-agenda's meetellen voor beschikbaarheid

Wat het nu doet

listGoogleCalendars/listOutlookCalendars/listAppleCalendars + checkboxes-modal. Alleen aangevinkte agenda's tellen mee voor busy-slots. Standaard: alles.

v0.36
zondag 17 mei 2026
12:39

Uitgebreide beschikbaarheid + calendar instellingen

Nieuwe functie

Tijdzone-selector, checkboxes per dag, datum-specifieke uren

Wat het nu doet

AvailabilityPanel volledig herontworpen. Per dag aanvinken (was: handmatig slots toevoegen), tijdzone-dropdown, en datum-overrides voor vakantie/feestdag.

Nieuwe functie

Calendar-form uitgebreid met buffer + boekingsregels

Wat het nu doet

Buffer voor/na, min. aanmeldtijd, max. vooruit boeken in het edit-formulier.

v0.35
zondag 17 mei 2026
00:48

Zoom koppeling volledig werkend

Nieuwe functie

Zoom OAuth end-to-end werkend in productie

Wat was het probleem

ZOOM_CLIENT_SECRET had een extra teken (33i.p.v. 32 chars) in Railway, waardoor Zoom invalid_client teruggaf bij de token exchange.

Hoe het is opgelost

Secret gecorrigeerd in Railway. Debug logs en tijdelijk /api/debug/zoom-config endpoint verwijderd.

v0.34
zaterdag 16 mei 2026
23:58

Zoom OAuth callback redirect gecorrigeerd

Bug fix

Zoom koppelen stuurde gebruiker naar localhost i.p.v. productie-URL

Wat was het probleem

req.url in de Zoom callback-route bevatte Railway's interne localhost:8080 adres, waardoor de redirect na de OAuth flow naar de lokale dev-server ging.

Hoe het is opgelost

redirectWithToast gebruikt nu NEXTAUTH_URL als base-URL i.p.v. req.url.

v0.33
zaterdag 16 mei 2026
23:38

E-mail toegankelijk voor setters en sales managers

Nieuwe functie

E-mail pagina zichtbaar voor appointment setter en sales manager rollen

Wat het nu doet

hideForSales flag verwijderd van e-mail nav-item en isSalesRole redirect op /email/page.tsx verwijderd.

v0.32
zaterdag 16 mei 2026
23:37

Bugfixes: Zoom redirect, affiliate toegang, CRM zoekbalk

Bug fix

Zoom OAuth redirect naar localhost in productie opgelost

Wat was het probleem

ZOOM_REDIRECT_URI was ingesteld op een localhost-URL in Railway, waardoor Zoom-koppeling in productie naar localhost:8080 redirectte.

Hoe het is opgelost

getRedirectUri() negeert nu ZOOM_REDIRECT_URI als het een localhost-URL is maar NEXTAUTH_URL naar productie wijst.

Bug fix

Affiliate pagina werkt nu voor alle rollen

Wat was het probleem

Gebruikers zonder bureau-koppeling (tenantId null) kregen een lege foutpagina op /affiliate.

Hoe het is opgelost

Zulke gebruikers zien nu het super-admin overzicht als fallback i.p.v. een API-fout.

Polish

CRM contacten-zoekbalk: rand verwijderd

Wat het nu doet

Zoekbalk gebruikt nu een subtiele achtergrond-tint zonder zichtbare border.

v0.31
zaterdag 16 mei 2026
23:30

Setter dashboard: hero-header met live KPI-chips

Polish

Setter dashboard header herontworpen in admin-stijl

Wat het nu doet

Grote greeting met geaccentueerde naam, 4 live KPI-chips (open deals, meetings, calls, maandtarget) in de taskio-hero layout met fade-in animatie. Widget-tints versterkt van 4% naar 8% voor meer visuele diepte.

v0.30
zaterdag 16 mei 2026
22:38

Hotfix: Prisma deploy crash (ChatRoom updatedAt)

Bug fix

Railway deploy crash door NOT NULL updatedAt op ChatRoom

Wat was het probleem

De nieuwe updatedAt kolom op ChatRoom was verplicht (NOT NULL) maar kon niet worden ingevuld voor de 8 bestaande rijen in productie. Prisma db push brak hierdoor en de service crashte.

Hoe het is opgelost

updatedAt optioneel gemaakt (DateTime? @updatedAt). Bestaande rijen krijgen null, nieuwe en geüpdatete rijen krijgen automatisch een timestamp.

v0.29
zaterdag 16 mei 2026
19:35

Team chat: meerdere groepen met members + auto-include rol

Nieuwe functie

Custom chat-groepen met eigen ledenlijst

Wat was het probleem

Team chat had één vaste "Iedereen"-groep. Geen manier om bv. een aparte sales-team chat of een managers-only kanaal te maken.

Hoe het is opgelost

Iedere user kan via "+ Groep" knop in de team chat een nieuwe groep aanmaken: naam + beschrijving + handmatige ledenlijst. Bestaande "Iedereen"-groep blijft als system-groep met auto-membership voor alle tenant-users. Pill-tabs bovenaan voor snelle wissel met ongelezen-badge per groep.

Nieuwe functie

Auto-include op rol (admin-only)

Wat het nu doet

Admin kan bij groep-creation een "auto-include rol" kiezen (alle setters / managers / sales managers). Users met die rol worden automatisch toegevoegd. Handig voor "Sales team" of "Management" groepen die altijd up-to-date moeten zijn.

Infra

Nieuwe Prisma-modellen: ChatRoom uitgebreid + ChatRoomMember

Wat het nu doet

ChatRoom krijgt: description, color, createdBy, isSystem (true voor "Iedereen"), autoIncludeRole. Nieuwe ChatRoomMember many-to-many tabel met lastReadAt per-user-per-room voor ongelezen-tracking.

Infra

Chat API uitgebreid met groups-endpoints

Wat het nu doet

/api/chat/groups (list + create), /api/chat/groups/[id] (read/update/delete), /[id]/members (add/remove), /[id]/messages (post), /[id]/poll (live updates per actieve room). Cross-tenant guards op alle endpoints via room.tenantId membership-check.

v0.28
zaterdag 16 mei 2026
19:25

Polish: chat input fix + super-admin user-create guard + Zoom-diagnose

Bug fix

Grijze focus-border om Chat zoek-klant input weg

Wat het nu doet

WebKit appearance + box-shadow explicit op none + padding/margin 0 — kill alle browser-default focus-ring styling op autofocus input.

Bug fix

Super-admin kan geen sales-rollen meer aanmaken zonder tenant

Wat was het probleem

Setters/managers aangemaakt vanuit super-admin context (Dylan = tenantId=null) kregen ook tenantId=null, waardoor affiliate-page weigerde met "Niet beschikbaar". Stilzwijgend broken.

Hoe het is opgelost

API /api/users POST blokkeert nu expliciet wanneer super-admin een non-ADMIN rol probeert te maken. Heldere error met instructie om in te loggen als bureau-admin. AffiliateDashboard krijgt ook extra tip voor reeds-foutief-aangemaakte users.

Infra

Zoom OAuth-diagnose: Local Test mode requires Zoom-side install

Wat het nu doet

Onderzoek: een Zoom General App in "Local Test" mode accepteert OAuth alleen via de door Zoom gegenereerde Authorization URL (marketplace.zoom.us/...test). Reguliere custom OAuth-flow werkt pas na Marketplace publicatie. Voor nu: app-owner installeert eenmalig via Zoom's "Add app now" knop. Voor andere users moet de app worden gepubliceerd (Zoom-review, dagen).

v0.27
zaterdag 16 mei 2026
19:18

Polish: drag-drop widgets + affiliate voor sales + bug fixes

Nieuwe functie

Drag-and-drop reorder voor sales-dashboard widgets

Wat het nu doet

Klik "Bewerken" rechtsboven → dashed accent-outline + drag-grip per widget → sleep om volgorde aan te passen → klik "Klaar". Volgorde blijft per-user in localStorage staan. Zelfde patroon als het bureau-dashboard.

Nieuwe functie

Affiliate-programma nu beschikbaar voor sales-rollen

Wat was het probleem

Setters en sales managers konden geen eigen referral-link genereren — alleen ADMIN-rol mocht. Daardoor konden zij geen klanten verwijzen naar Senly en commissie verdienen.

Hoe het is opgelost

lib/affiliate.ts: ADMIN-check verwijderd. Iedere tenant-user kan nu via /affiliate een eigen ref-link aanmaken, Stripe Connect koppelen en verwijzingen tracken.

Polish

Content-kalender verbergen voor sales-rollen

Wat het nu doet

/kalender (Metricool content-feature) verschijnt niet meer in de sidebar voor setters/sales managers + page-guard redirect naar /. Was per ongeluk nog zichtbaar.

Bug fix

Doorzichtige slide-over panes (Widgets + CRM Contacten)

Wat was het probleem

Vier CSS-regels verwezen naar var(--bg-base) wat geen gedefinieerde CSS-variabele is, waardoor de Widgets-beheren modal en de Contacten detail-pane volledig doorzichtig waren.

Hoe het is opgelost

Vervangen door var(--bg-elev) (solid #161a21 dark / #ffffff light) voor pane-backgrounds en var(--bg-deep) voor nested sub-elementen.

Bug fix

Zoom OAuth-redirect debug-instrumentatie

Wat het nu doet

ZOOM_REDIRECT_URI op Railway gezet + tijdelijke /api/debug/zoom-config endpoint + console.logs in /zoom/start om te zien waarom de OAuth-flow nog steeds op localhost:8080 uitkwam. Onderzoek loopt.

v0.26
zaterdag 16 mei 2026
19:10

Sales-dashboard + 4-rol permissions + meetings caching + externe agenda

Nieuwe functie

Configureerbaar sales-dashboard met 19 widgets in 5 categorieën

Wat het nu doet

Setters en sales managers krijgen een eigen dashboard (vervangt TaskioDashboard voor hun rol). Registry-pattern met KPI tiles (7), Pipeline & deals (5), Activity & follow-up (3), Meetings (2), Team & performance (2). Picker-modal rechts opent slide-over met categorie-groepering en checkbox per widget. Persistence in localStorage per user.

Nieuwe functie

PermissionsExplainer toont nu 4 rollen

Wat het nu doet

Admin / Manager / Setter / Sales Manager kolommen naast elkaar. Sales-rollen krijgen "Eigen" scope-badges waar ze gefilterd zijn op assignedTo. Nieuwe rijen voor CRM pipeline, Contacten, Activiteitenlog, Sales-rapportages, Meetings, Tools, Affiliate. Title: "Bevoegdheden per rol".

Nieuwe functie

Externe agenda-events tonen in /meetings

Wat het nu doet

getAppleEvents / getGoogleEvents / getOutlookEvents helpers + nieuwe /api/meetings/calendar-events endpoint. Maand/Week/Dag view tonen iCloud/Google/Outlook events als dimmed grijs-gestreepte achtergrond-blokken naast Senly-bookings. Toggle "Externe events" in sidebar.

Snelheid

Stale-while-revalidate caching op /meetings

Wat was het probleem

Telkens als je naar /meetings ging zag je 2-3s "Laden…" voor de calendar geladen werd, ook bij snelle terugkeer.

Hoe het is opgelost

Nieuwe lib/client-cache.ts (2-laags Map + localStorage). Calendar rendert instant uit cache, verse data in background. Subtiele pulsing accent-dot bij datum-label tijdens revalidate. TTLs: types 5min, bookings 30s, externe events 2min.

Polish

"Nieuwe manager" → "Nieuwe gebruiker" (4 talen)

Wat het nu doet

Per rol counts blijven (admin/manager/setter/sales_manager) maar generieke labels zijn nu rol-neutraal: gebruiker / user / Benutzer / utilisateur.

v0.25
zaterdag 16 mei 2026
19:05

Bureau-OS uitbreiding: sales-rollen + complete CRM

Nieuwe functie

Twee nieuwe rollen: Appointment Setter + Sales Manager

Wat het nu doet

User.role uitgebreid (geen DB-migratie nodig, is een string). lib/permissions.ts: nieuwe predicates + permissions matrix + crmScopeWhere() helper voor own-scope filtering + page-gates. Sidebar verbergt bureau-pagina's (Onboarding/Email/Statistieken/Trends/Takenbeheer) voor sales-rollen. Sales-rollen krijgen eigen dashboard via rol-branched home-page (skipt onnodige bureau-data fetching).

Nieuwe functie

CRM omgebouwd naar 4-tab layout

Wat het nu doet

Pipeline (bestaande kanban) / Contacten (nieuwe view) / Activiteit / Rapportages. Tab in URL-hash zodat refresh + deeplinks werken.

Nieuwe functie

Aparte Contacten-tabel (1 bedrijf, meerdere deals)

Wat het nu doet

Nieuw CrmContact model + CrmLead.contactId FK. API: /api/crm/contacts CRUD met sales-scope. UI: grid van contact-cards + zoek + "+Nieuw contact" + slide-over detail-paneel met edit-mode + social links + gekoppelde deals lijst.

Nieuwe functie

CRM Activiteitenlog met auto-logging

Wat het nu doet

Nieuw CrmActivity model + lib/crm-activity.ts write-only logger. Auto-events op alle mutaties: lead_created/moved/status_changed/assigned/note/value/deleted, contact_created/updated/deleted, touchpoint. Tijdlijn-UI per dag gegroepeerd met type-iconen + natural-language sentences. Type-filter + zoek. Sales-scope auto-filter.

Nieuwe functie

CRM Rapportages-tab

Wat het nu doet

6 KPI-tiles (pipeline-waarde, gewonnen omzet, conversie, gem. dealwaarde, meetings, verloren), pipeline funnel met per-stage kleur, performance-tabel top 20, trend-charts (won/created per maand). Period-filter 7d/30d/90d/YTD/All.

Nieuwe functie

Touchpoint quick-action overal

Wat het nu doet

Nieuw TouchpointQuickAction component met kind-selector (call/whatsapp/email/meeting/note) + summary. Ingebed in CrmBoard lead-modal én CrmContactsView. Schiet POST /api/crm/activities → updaten lastContactAt op lead + contact automatisch.

Nieuwe functie

Last-contact badge in lead-cards

Wat het nu doet

Pill per lead-card: warm (≤3d, groen) / mid (4-14d, amber) / cold (>14d, grijs). Visuele cue welke deals aandacht nodig hebben.

Nieuwe functie

Maandtarget per sales-user

Wat het nu doet

User.salesTargetMonthly veld. UserModal toont input alleen bij sales-rollen. Progress-ring op sales-dashboard met kleur-shift good/mid/low.

Infra

Backfill-script voor bestaande CRM-leads

Wat het nu doet

scripts/backfill-crm-contacts.ts — clustert leads op tenant + companyName/email naar nieuwe Contact-records. Dry-run default, --apply om door te voeren. Idempotent.

v0.24
zaterdag 16 mei 2026
18:30

Senly Connector productie-ready: privacy-disclosure + cron live + promo tile

Beveiliging

Privacyverklaring uitgebreid met Senly Connector cookie-disclosure

Wat het nu doet

Sectie 2 (Welke gegevens verwerken wij?) krijgt nieuwe rij over social media sessie-cookies + uitgebreide subsectie 2.1 die uitlegt hoe de Senly Connector werkt: cookie-capture alleen na expliciete gebruikersactie, AES-256-GCM versleuteling, per-tenant scoping, geen wachtwoorden, ontkoppel-flow. Vereist voor Chrome Web Store approval (privacy policy URL).

Infra

GitHub Actions workflow voor dagelijkse cookie-expiry check live

Wat het nu doet

.github/workflows/cron-cookie-expiry.yml triggert elke dag 09:00 UTC POST /api/cron/cookie-expiry-check. Stuurt 1 mail per admin met overzicht van koppelingen die binnen 3 dagen verlopen + al verlopen koppelingen. Gebruikt bestaande PORTAL_URL + CRON_SECRET secrets.

Polish

Premium promo tile (440×280) voor Chrome Web Store

Wat het nu doet

chrome-extension/store-assets/promo-tile-440x280.png — accent gradient achtergrond met witte Senly "S"-mark in box. Klaar om in de Web Store listing te uploaden voor betere featured-visibility.

v0.23
zaterdag 16 mei 2026
17:00

Cookie-expiry notifs + smart account-detectie + Web Store ready

Nieuwe functie

Dagelijkse e-mail notificatie bij bijna-verlopen social koppelingen

Wat was het probleem

Cookies van Instagram/Facebook/LinkedIn/TikTok verlopen na 1-3 maanden. Zonder waarschuwing kwam je er pas achter als de automation stopte met werken — soms na dagen aan gemiste activiteit.

Hoe het is opgelost

Nieuwe cron POST /api/cron/cookie-expiry-check draait dagelijks om 09:00 UTC. Scant alle ClientSocialAccount records, groepeert per tenant, stuurt 1 mooie e-mail per admin met tabel van koppelingen die binnen 3 dagen verlopen of al verlopen zijn. GitHub workflow .github/workflows/cron-cookie-expiry.yml triggert het.

Nieuwe functie

Smart account-detectie: extensie pakt nu de echte gebruikersnaam

Wat was het probleem

Na koppeling stond er "Facebook account" of "LinkedIn account" — niet duidelijk welk specifiek account gekoppeld was. Verwarrend bij 20+ klanten.

Hoe het is opgelost

Per platform leest het content-script de echte naam/handle van de pagina: Instagram (@username), TikTok (@username), LinkedIn ("Marleen van X"), Facebook (account-naam uit avatar/aria-label). Wordt als displayHint meegestuurd naar Senly en getoond als capturedAccountHint. Klantprofiel toont nu "✓ @cafedehoek" ipv "✓ Facebook account".

Polish

Premium branded icons voor de extensie

Wat het nu doet

Vervangen van solide cirkel placeholder met rounded square + Senly-teal gradient (#2a8a83→#1c5e58) + witte 3-balks "S"-mark. 16/48/128 px varianten — schaalt mooi in Chrome toolbar én Web Store listing.

Infra

Chrome Web Store submission gids

Wat het nu doet

WEB-STORE-SUBMISSION.md met stap-voor-stap publicatieproces: ZIP commando, listing-content (NL+EN), permission justifications voor review, screenshot-richtlijnen, post-publicatie URL-update instructies. Klaar om in te dienen.

v0.22
zaterdag 16 mei 2026
15:00

Status-badges + bulk-koppel pagina voor 20+ klanten in één scherm

Nieuwe functie

Live connection-status per platform op klantprofiel

Wat was het probleem

Na koppelen wist je niet of cookies nog geldig waren — pas bij de eerstvolgende automation-run kwam je erachter dat de sessie was verlopen.

Hoe het is opgelost

SocialAccountConnector haalt nu live status op via /api/clients/[id]/social-accounts/connection-status: groene "✓ Gekoppeld" badge, oranje "⚠ verloopt over 5d", rood "🔄 Heraankoppelen" of grijs "Nog niet gekoppeld". De badge wordt automatisch geverversd na een succesvolle koppeling.

Nieuwe functie

Bulk-koppel pagina: alle klanten × platforms in één overzicht

Wat was het probleem

Voor bureaus met 20+ klanten was per-klant navigeren tijdrovend. Onboarding voor een nieuw bureau betekende 80+ kliks door 4 platforms × 20 klanten.

Hoe het is opgelost

Nieuwe /admin/social-accounts pagina (admin/manager) toont een grid met alle klanten in rijen en 4 platforms in kolommen. Per cel: live status-badge + "Verbind"/"Heraankoppelen"/"Vernieuwen" knop. Filters (alle/gekoppeld/verlopen/niet gekoppeld) + zoekbalk + status-stats bovenaan. Eén scherm voor 80+ koppelingen.

Nieuwe functie

Cookie-status helper detecteert verlopen sessies proactief

Wat het nu doet

lib/cookie-status.ts kijkt naar de expirationDate van key-cookies per platform (li_at voor LinkedIn, c_user+xs voor FB, sessionid voor TikTok/IG). State = connected/expiring (≤7d)/expired/never_connected. Geen HTTP-calls naar het platform nodig — 100% gratis en snel.

Polish

Sidebar: nieuwe "Social accounts" link voor admin/manager

Wat het nu doet

Tussen Activiteiten en Affiliate verschijnt nu een Social accounts icoon (ketting-symbool) dat naar de bulk-koppel pagina linkt. NL/EN translations toegevoegd.

v0.21
zaterdag 16 mei 2026
13:30

Senly Connector — social media accounts veilig koppelen zonder wachtwoorden

Nieuwe functie

Chrome-extensie "Senly Connector" voor account-koppeling

Wat was het probleem

Bureau-eigenaren moesten Instagram/Facebook/LinkedIn/TikTok accounts van hun klanten koppelen door op de server een Chrome-venster te laten openen (Puppeteer headless: false). Dat werkte alleen lokaal op een Mac met Chrome geïnstalleerd — niet op Railway, en niet voor team-leden vanaf hun eigen laptop.

Hoe het is opgelost

Aparte Chrome-extensie (chrome-extension/) die op de computer van de bureau-eigenaar draait. Bij "Verbind" in een klantprofiel opent de extensie een tab naar het social platform, wacht tot er een geldige login is, leest de cookies via chrome.cookies API (inclusief HttpOnly), en stuurt die HMAC-getekend naar Senly. Server slaat ze versleuteld op (AES-256-GCM met per-tenant AAD-scoping). Daarna kunnen alle team-leden de automation aanzetten zonder de cookies zelf te bezitten — alles draait server-side op Railway.

Nieuwe functie

Batch-koppel: per klantprofiel "Verbind" knop met automatische klant-binding

Wat was het probleem

Bij 20 klanten × 4 platforms = 80 koppelingen moesten in de oude flow allemaal handmatig met user/password worden gedaan — error-prone en risicovol vanwege 2FA, CAPTCHAs en datacenter-IP bans.

Hoe het is opgelost

In elk klantprofiel staat nu een SocialAccountConnector-blok dat detecteert of de Senly Connector geïnstalleerd is. Zo niet → "Voeg toe aan Chrome" CTA. Zo wel → één klik per platform per klant. URL bevat een gesigned token zodat de koppeling gegarandeerd bij de juiste klant terechtkomt (geen mismatch mogelijk).

Infra

Puppeteer naar headless mode + cross-platform Chrome-detectie

Wat was het probleem

De 4 grote Puppeteer features (Facebook inviter, LinkedIn inviter, LinkedIn connector, TikTok groeitool) draaiden met headless: false en hardcoded macOS Chrome-paden. Onbruikbaar op Railway.

Hoe het is opgelost

Gecentraliseerde launchPuppeteer() helper met headless: "new" op cloud, cross-platform Chrome-finder (Mac/Linux/Windows + PUPPETEER_EXECUTABLE_PATH env override), nixpacks.toml die Chromium + fonts installeert op Railway. Lokaal debuggen kan nog steeds met DEBUG_PUPPETEER=1 voor zichtbare browser.

Beveiliging

Cookie-vault met AES-256-GCM + tenant-scoping

Wat was het probleem

Eerder werden cookies als JSON-bestanden op disk opgeslagen (cookieFile). Op Railway (ephemeral filesystem) overleefden ze geen deploy, en zonder encryptie waren ze gevoelig voor data-breach.

Hoe het is opgelost

Nieuwe lib/cookie-vault.ts: cookies versleuteld in DB-veld ClientSocialAccount.encryptedCookies (format "v1:iv:tag:ciphertext"). Per-tenant AAD-scoping voorkomt dat cookies van tenant A gedecrypteerd kunnen worden als ze per ongeluk aan tenant B gekoppeld worden. HMAC-signed connect-tokens (30 min TTL) voor anti-CSRF tussen portaal en extensie.

v0.20
zaterdag 16 mei 2026
11:00

Klantprofiel premium polish + CRM/Onboarding Scholarly bento

Polish

Platform automation cards op klantprofiel maximaal premium

Wat het nu doet

Card 24px radius, 5-laagse shadow met inset white highlight, 4px brand-accent strip bovenaan met 30px blur-glow (Instagram tri-color, TikTok cyan/rood, etc.), 44px icons met glow, premium CTA buttons met accent gradient + lift on hover. 200px min-height voor visueel ritme.

Nieuwe functie

CRM + Onboarding: Scholarly bento-stijl kanban met gekleurde cards

Wat het nu doet

Gekleurde card-achtergronden per kolom-tone (rotating pink/lavender/yellow/mint/gray pastels), colored dots, subject-pill bovenaan elke card, "+ Toevoegen" knop verhuisd naar bovenaan met dashed border. Cleaner column headers met 02-style count badges.

Polish

8 pagina edge-distance uniform aan Financieel (max-width 100%)

Wat het nu doet

Tools, Takenbeheer, Statistieken, CRM, Onboarding, Eigenaar overzicht, Activiteiten en Affiliate gebruiken nu allen max-width: 100% voor consistente brede content-area zoals Financieel, ipv de standaard 1320px container.

Polish

Header profile-chip 24% compacter

Wat het nu doet

Avatar 42→32px, naam 15→13px, role 11.5→10.5px, badges 15→12px. Verified-badge en account-dot proportioneel kleiner met dunnere border.

v0.19
zaterdag 16 mei 2026
09:00

Statistieken bento-herindeling + tools iconen wit + featured card fix

Nieuwe functie

Statistieken: 4-sectie bento layout (Health/Klanten/Team/Systeem)

Wat het nu doet

4 logische groepen op urgentie/doel met 6-koloms bento-grid en variabele card-groottes (span-2/3/4/6). Featured "Op tijd geleverd" card met accent gradient + meter-visualisatie. Activiteit-sectie weggehaald (er is een aparte /activiteiten pagina). 3 nieuwe inzichten: klant-groei trend (12 mnd), klanten met achterstand, inactiviteits-risico met gekleurde border-lefts per stilte-niveau.

Bug fix

Tools-pagina platform-iconen: outline én filled werken correct in wit

Wat was het probleem

Instagram outline-camera werd een wit blok omdat een eerdere fix fill: currentColor !important op ALLE SVG-elementen forceerde, waardoor de rect-outline gevuld werd ipv geöutline.

Hoe het is opgelost

Verwijder fill/stroke overrides — alleen color: white op de parent. PlatformLogo flat-mode SVGs gebruiken al currentColor via stroke (Instagram) of fill (Facebook/YouTube/LinkedIn). Plus: TikTok krijgt tri-color brand-logo (cyan/rood/wit) en Snapchat zwart spookje voor brand-authenticiteit.

Bug fix

Featured card op statistieken: inner-rectangle artifact opgelost

Wat was het probleem

Bestaande .stats-card::before regel rendert een 1px inset border in elke stats-card. Op witte cards onzichtbaar maar op de groene gradient van de "Op tijd geleverd" featured card als donkere inner rectangle zichtbaar.

Hoe het is opgelost

Disable pseudo-element specifiek voor .stats-card--feature met matching specificity + !important. Solide accent kleur ipv gradient om eventuele color-mix rendering artifacts te voorkomen.

Bug fix

Trends pagina dark mode parity

Wat was het probleem

Title was 32px in dark mode (oude default) en 28px in light mode (nieuwe Taskio styling). Structurele typografie-regels stonden alleen onder html[data-theme="light"].

Hoe het is opgelost

Structurele regels (font-size, weight, padding, layout) van .trends-hero-title, .trends-stats, .trends-platform-pill, .trend-card etc. theme-agnostic gemaakt. Alleen kleur/border per theme gescoped.

Nieuwe functie

E-mail pagina: stale-while-revalidate cache + refresh-knop

Wat het nu doet

Module-cache + localStorage zorgt dat bij terugkomst op /email de laatste threads direct getoond worden, terwijl op de achtergrond geverifieerd wordt. Refresh-knop rechts naast map-titel met spin-animatie. Polling + post-actie refreshes zijn nu silent (geen skeleton flash meer).

v0.18
donderdag 14 mei 2026
22:07

Externe images in mails laden nu altijd

Bug fix

Broken-image-icoon bij Cloudinary, Stripe en andere CDNs opgelost

Wat was het probleem

Iframe srcDoc heeft een opaque origin — de browser stuurt geen Referer-header, en veel CDNs (Cloudinary, Stripe-images) blokkeren image-requests zonder Referer als anti-hotlinking maatregel. Resultaat: complete=true, naturalWidth=0 en een broken-icoon zichtbaar.

Hoe het is opgelost

referrerpolicy="no-referrer" toegevoegd aan elke <img> tag + document-level meta-referrer. Dit is hetzelfde gedrag als Gmail/Outlook gebruiken voor email-images. Alle 15+ image URLs in geteste mails laden nu correct (Railway logo, Stripe receipts, etc.).

v0.17
donderdag 14 mei 2026
21:48

Mail 4-5× sneller + skeleton state tijdens laden

Snelheid

IMAP connection pool — mail-opens van 2.5s naar 500ms

Wat was het probleem

Bij elke mail-klik werd een nieuwe IMAP-verbinding opgezet (TLS-handshake + LOGIN, ~1-1.5s overhead). Daarbovenop werden 12 mail-folders sequentieel doorzocht voor een thread, ook als de mail geen reply-chain had.

Hoe het is opgelost

Per email-account 1 actieve connection cachen tussen requests met automatische cleanup na 5 min idle of 30 min total age. Plus skip thread-collection voor single mails en parallelle searches via Promise.all bij echte threads. Mail-opens (warm cache): ~500ms, was 2.5-15s.

Polish

Skeleton-state tijdens image preload

Wat was het probleem

Bij het openen van een mail met externe images zag je 500ms-1s broken-image-icons voordat ze vanuit het netwerk binnenkwamen.

Hoe het is opgelost

Externe image URLs worden nu gepreload via new Image() vóór de iframe rendert. Tot alle images klaar zijn (max 1500ms): "Bericht wordt geladen…" placeholder. Geen broken icons meer zichtbaar.

v0.16
donderdag 14 mei 2026
20:54

Calendar integraties: Google, Outlook, Apple iCloud, Zoom

Nieuwe functie

Apple iCloud koppelen via CalDAV

Wat het nu doet

Direct werkbaar zonder server-side OAuth setup. Klanten geven hun iCloud-email + app-specific password (versleuteld opgeslagen via EMAIL_ENCRYPTION_KEY). Boekingen verschijnen automatisch in hun iCloud-kalender, en bestaande events blokkeren beschikbaarheid.

Nieuwe functie

Google Calendar OAuth flow

Wat het nu doet

Volledige OAuth 2.0 met auto Google Meet-link generatie bij elke booking. Wacht op GOOGLE_CLIENT_ID/SECRET in Railway env-vars (kan delen met Gmail OAuth).

Nieuwe functie

Outlook / Microsoft 365 via Microsoft Graph

Wat het nu doet

OAuth flow + auto Teams-meeting links. Wacht op MICROSOFT_CLIENT_ID/SECRET in Azure App registration.

Nieuwe functie

Zoom OAuth + auto-meeting generatie

Wat het nu doet

Bij elke booking wordt automatisch een Zoom-meeting aangemaakt en de join-URL wordt aan attendee + host doorgegeven via mail én calendar-events. Wacht op ZOOM_CLIENT_ID/SECRET via zoom.us/marketplace.

Nieuwe functie

Booking-flow integreert met alle gekoppelde kalenders

Wat het nu doet

Bij elke nieuwe boeking: Zoom-URL eerst, dan event in alle gekoppelde calendars met die URL ingesloten. Bij beschikbaarheids-checks worden externe events ook als busy meegenomen — geen dubbele bookings meer.

v0.15
donderdag 14 mei 2026
20:40

Platform-tab + kalender visuele fixes

Polish

Compacte rood/groene aan/uit-switches

Wat was het probleem

De Onderhoudsmodus en Aankondigingsbanner toggles waren 466px brede grijze balken — ze namen .platform-toggle styling over die voor periode-selectors bedoeld was.

Hoe het is opgelost

Eigen .platform-switch class: 36×20px pillvormig, rood (uit) ↔ groen (aan), met soepele thumb-animatie. Geen visuele ruis meer.

Bug fix

Kalender gridlijnen weer zichtbaar in light mode

Wat was het probleem

De gridlijnen tussen uren en dagen in de week-view waren verdwenen omdat de --border CSS-variabele in light mode te licht was (alpha 0.09). Visueel oplosbaar tegen witte cellen.

Hoe het is opgelost

Light mode override naar rgba(12,36,34,0.16) — duidelijke grijze gridlijnen, identiek aan de oude weergave.

v0.14
donderdag 14 mei 2026
18:53

Resend mails + cron scheduler + diagnostics

Nieuwe functie

Resend integratie volledig actief

Wat het nu doet

Welkomstmails, password reset, meeting confirmations, factuurmails — allemaal werken nu via Resend met geverifieerd domein socialmediatools.nl. Test bevestigd via /api/admin/test-email.

Nieuwe functie

Interne cron scheduler via node-cron

Wat was het probleem

Geen externe cron-service nodig (Railway Cron, cron-job.org).

Hoe het is opgelost

In instrumentation.ts: bij elke app-start gaat scheduler aan voor meeting reminders (elke 30 min) en sweep (dagelijks 03:00). Veiligheid: alleen actief in productie met CRON_SECRET en NEXTAUTH_URL gezet.

Nieuwe functie

Foutmonitor — server- en gebruikersfouten kanaal

Wat het nu doet

Realtime error-monitoring via /admin/saas → Foutmonitor. Server-errors (500-codes met stack trace) en user-errors (4xx validatie) apart filterbaar. Mark-as-resolved en delete werken.

Nieuwe functie

/admin/env-check diagnostic dashboard

Wat het nu doet

Visueel overzicht van alle 17 integraties met status (volledig/gedeeltelijk/ontbreekt). Bovenaan een rode actie-lijst met verplichte env-vars die nog ontbreken op productie.

v0.13
donderdag 14 mei 2026
17:48

Light mode polish + chat avatar centering

Polish

Cyan undertone op KPI/dash cards verwijderd

Wat was het probleem

In light mode had de card-achtergrond een mint-tint (#fafdfc) en schaduw bevatte rgba(12,36,34,0.04..0.07) — beide gaven een onbedoelde cyan undertone die als "blauw randje" werd waargenomen, zelfs voor brand-kleuren als pink.

Hoe het is opgelost

Background naar puur #ffffff. Schaduwen naar neutraal rgba(0,0,0,...). Brand-glow blijft via --teal-glow/--teal-soft die door BrandingApplier reactief op de tenant-kleur wordt gezet.

Bug fix

Meldingen-bolletje rechts naast bedrijfsnaam

Wat was het probleem

De .notif-item grid had 2 kolommen [icon | body] maar 3 children (icon + body + unread-dot). Resultaat: de dot viel naar rij 2 / kolom 1, recht onder het icoon.

Hoe het is opgelost

Grid uitgebreid naar 3 kolommen [icon | body | dot]. Dot staat nu correct rechts naast de bedrijfsnaam.

Polish

Support chat + team chat avatar gecentreerd met naam

Wat was het probleem

Avatar (24-32px) stond top-aligned naast een korte naam-regel (~14px), waardoor de avatar visueel veel lager doorliep dan de naam.

Hoe het is opgelost

Naam-regel krijgt min-height: 32px + flex align-items: center. Het midden van de naam-tekst valt nu exact op het midden van de avatar — schoon uitgelijnd.

Bug fix

Team chat bubble zichtbaar in light mode

Wat was het probleem

Bubble background was rgba(255,255,255,0.07) — werkt op donkere achtergrond, maar op witte light-mode achtergrond onzichtbaar.

Hoe het is opgelost

CSS-classes .cp-bubble--mine en .cp-bubble--other met theme-aware kleuren. Eigen berichten in brand-kleur, andere in lichtgrijs (#f0f2f4).

v0.12
donderdag 14 mei 2026
17:01

IMAP koppeling + chart fixes + dashboard polish

Bug fix

IMAP koppelen mag ook als SMTP timeout

Wat was het probleem

Als SMTP onbereikbaar was (Railway trial blokkeerde outbound 25/465/587), kon de hele IMAP-koppeling niet worden opgeslagen.

Hoe het is opgelost

Bij SMTP timeout/connection-refused: koppeling wordt wel gemaakt voor IMAP-only gebruik. Gebruiker krijgt waarschuwing dat versturen via klant-SMTP nog niet werkt tot Pro upgrade. Op Railway Pro inmiddels alle poorten open.

Bug fix

Maandwinst chart bar-hoogte matcht het label

Wat was het probleem

Bar-hoogte werd berekend uit Math.max(0,rec) + Math.max(0,one), waardoor negatieve eenmalige kosten genegeerd werden en bars dus hoger leken dan het label aangaf.

Hoe het is opgelost

Bar = totale winst (clamp naar 0 voor negatieve maanden). Visueel splitsen in recurring + eenmalig zodat eenmalige kosten het paarse segment verkleinen, niet het groene. Bar-hoogte matcht nu exact het label.

Infra

IPv4-first DNS resolutie tegen ENETUNREACH

Wat was het probleem

Railway container had geen IPv6 outbound, maar DNS resolveerde soms eerst AAAA-records van de mailserver. Resultaat: ENETUNREACH errors bij IMAP/SMTP.

Hoe het is opgelost

In instrumentation.ts: dns.setDefaultResultOrder("ipv4first") forceert IPv4 lookups eerst. Geen verbindings-fouten meer naar mail.socialmediatools.nl.

v0.11
donderdag 14 mei 2026
16:39

Team chat & support chat fixes

Bug fix

Team chat overlapt sidebar niet meer

Wat was het probleem

Het chat-paneel werd gerenderd binnen een `aside` element met position:sticky — daardoor zat het visueel verstopt achter de sidebar in light mode.

Hoe het is opgelost

Render via React Portal naar document.body. Het chat-paneel ontsnapt nu de stacking context en staat altijd boven andere elementen, naast de sidebar.

Bug fix

Group chat toont nu groepsberichten ipv support chat

Wat was het probleem

De backend nam de eerste room van de tenant — vaak de __support__ 1-op-1 room ipv de "Iedereen" groepschat.

Hoe het is opgelost

Expliciet filter op name="Iedereen" — group chat toont altijd de juiste room.

Bug fix

Modal "Stuur naar Metricool" zichtbaar over topbar

Wat was het probleem

Topbar had hogere z-index dan modals, waardoor het bovenstuk van modals achter de topbar verdween.

Hoe het is opgelost

z-index op main element verwijderd zodat modal-backdrop boven alles komt.