Senly
Releases & changelog
Live · v2.90

Wat is er nieuw in Senly

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

519
Updates totaal
279
Releases
v2.90
Laatste release · zaterdag 23 mei 2026
v2.90
zaterdag 23 mei 2026
14:53

Microsoft SSO toegevoegd — "Doorgaan met Microsoft" naast Google

Nieuwe functie

Inloggen met Microsoft (Office 365 / Azure AD / persoonlijke account)

Wat was het probleem

Veel social media bureaus draaien op Office 365 — voor hen voelt Google SSO niet natuurlijk. Met alleen Google sloten we een groot deel van de doelgroep uit.

Hoe het is opgelost

NextAuth Azure AD provider toegevoegd (conditioneel op AZURE_AD_CLIENT_ID + AZURE_AD_CLIENT_SECRET env vars). Accepteert standaard zowel werk-/school-accounts (Office 365) als persoonlijke @outlook.com accounts via tenantId="common". Officiële Microsoft 4-vlak logo-knop verschijnt onder de Google-knop wanneer geconfigureerd. SSO matcht op email — alleen bestaande gebruikers worden toegelaten. Foutmelding "MicrosoftNoAccount" stuurt nieuwe gebruikers naar /signup. Vertaalsleutels login_continue_microsoft + login_microsoft_no_account toegevoegd voor 4 locales.

v2.89
zaterdag 23 mei 2026
14:52

SEO + GEO Batch 9 — Helpcentrum-artikelen krijgen eigen URLs

Nieuwe functie

Elk helpcentrum-artikel nu indexable op /helpcentrum/[slug]

Wat was het probleem

Alle 60+ helpcentrum-artikelen stonden op één pagina (/helpcentrum) — geen long-tail SEO-voordeel per artikel. Was specifiek in de SEO-strategie als "ontbrekende kans" genoemd.

Hoe het is opgelost

Dynamic route /helpcentrum/[slug] toegevoegd met generateStaticParams die voor alle artikelen met answer-content een eigen pagina pre-rendert. Slugs worden deterministisch uit titles gegenereerd. Per artikel: Article schema + FAQPage schema + BreadcrumbList. Hub /helpcentrum toont nu bij elk geopend artikel een "Open dit artikel als losse pagina"-link. Alle 60+ URLs in sitemap.

Nieuwe functie

Helpers in lib/support-articles/index.ts

Wat het nu doet

getArticleSlug(title), findArticleBySlug(locale, slug), getAllArticleSlugs(locale) toegevoegd. Centraal: titel-naar-slug-mapping consistent in zowel hub-links als detail-routes.

v2.88
zaterdag 23 mei 2026
14:42

SEO + GEO Batch 7+8 — Use-case landings + Integratie-pagina's

Nieuwe functie

Use-case landings /voor/[doelgroep] (4 nieuwe pagina's)

Wat was het probleem

Senly had geen doelgroep-specifieke landingspagina's. Zoekverkeer als "social media tool freelancer", "agency software startup" en "social media bureau MKB" werd niet opgevangen.

Hoe het is opgelost

Vier use-case pagina's onder /voor/[doelgroep]: freelance-social-media-manager, marketingbureau, startup-marketing-team, lokale-ondernemer. Per pagina: 3 pijnpunten, 3 oplossingen, scenario-voorbeeld en 4 FAQ-items met FAQPage schema. Hub /voor toont alle 4 als cards. Sitemap priority 0.8.

Nieuwe functie

Individuele integratie-pagina's /integraties/[slug] (10 nieuwe pagina's)

Wat was het probleem

Bestaande /integraties was alleen een overzichtspagina. "Instagram in Senly" of "Metricool agency koppeling" zoekverkeer ging verloren omdat er geen specifieke landingspagina per integratie was.

Hoe het is opgelost

Tien integratie-pagina's opgezet: /integraties/instagram, -linkedin, -tiktok, -facebook, -metricool, -canva, -google-drive, -dropbox, -stripe, -zapier. Elk met use cases, setup-stappen, HowTo schema, FAQ schema en eigen meta-keywords.

v2.87
zaterdag 23 mei 2026
14:36

Demo-modus: alle wijzigingen geblokkeerd (volledig read-only)

Beveiliging

Demo is nu 100% read-only — geen enkele write meer mogelijk

Wat was het probleem

In v2.86 blokkeerden we alleen DELETE en specifieke destructive POSTs. Maar in demo-modus mogen bezoekers überhaupt geen wijzigingen kunnen opslaan — anders raakt demo-data corrupt voor volgende bezoekers.

Hoe het is opgelost

Middleware blokkeert nu ALLE write-methods (POST, PATCH, PUT, DELETE) op /api/* voor demo-users. Uitzonderingen: /api/auth/* (login/logout), /api/demo/* (start endpoint), /api/me/onboarding (tour kan skippen). Foutmelding: "Wijzigingen worden niet opgeslagen in demo-modus." Demo-banner tekst aangepast naar "interactieve demo — read-only".

v2.86
zaterdag 23 mei 2026
14:33

Demo-modus: alle destructive acties centraal geblokkeerd in middleware

Beveiliging

Demo-bezoekers kunnen geen content meer verwijderen of externe acties triggeren

Wat was het probleem

De assertNotDemo() guard stond alleen op DELETE /api/clients/[id]. Andere DELETE-routes (kalender, notities, evaluaties) en externe POST-acties (Metricool publish, social scrapers) konden door demo-bezoekers worden getriggerd — risico voor demo-data integriteit en echte API-kosten.

Hoe het is opgelost

Centrale guard in middleware.ts: token.isDemo wordt nu in lib/auth.ts gezet wanneer tenant.slug === "demo-bureau". Middleware blokkeert dan ALLE DELETE en specifieke destructive POST-routes (/calendar, /run-inviter, /run-tiktok-growth, /run-linkedin-*) met een 403 + duidelijke melding ("Maak een eigen 14-daagse trial aan"). Read en niet-destructive writes (taken aanvinken, notities toevoegen) blijven werken.

v2.85
zaterdag 23 mei 2026
14:32

SEO + GEO Batch 6 — Concurrent-vergelijkingen uitgebreid (5 → 15)

Nieuwe functie

10 nieuwe concurrent-vergelijkingspagina's onder /vergelijk/[competitor]

Wat was het probleem

Bestaande 5 concurrent-vergelijkingen dekten alleen Hootsuite/Sendible/Planable/Buffer/Loomly — niet de bredere markt (Later, Metricool, Sprout, Agorapulse, SocialPilot, ContentStudio, Sociality, NapoleonCat, eClincher, Crowdfire). Branded zoekverkeer voor die 10 tools werd gemist.

Hoe het is opgelost

Nieuwe vergelijkingen toegevoegd: /vergelijk/senly-vs-later, -metricool, -sprout-social, -agorapulse, -socialpilot, -contentstudio, -sociality, -napoleoncat, -eclincher, -crowdfire. Bestaande dynamische /vergelijk/[competitor] route pakt ze automatisch op via generateStaticParams — geen nieuwe routing-code nodig. Hub /vergelijk toont nu 15 cards. Sitemap genereert automatisch alle 15 URLs.

v2.84
zaterdag 23 mei 2026
14:22

Trust-cijfers: single source of truth in lib/trust-stats.ts

Polish

Eén centrale config voor alle marketing-claims (bureaus, rating, tooling kosten)

Wat was het probleem

Trust-cijfers stonden hardcoded op meerdere plekken (landing 4x, over-ons 2x, security metadata 1x). Een wijziging vereiste handmatig zoeken-en-vervangen en leidde in de platformanalyse al tot inconsistenties (300+/200+/120+ door elkaar).

Hoe het is opgelost

Nieuwe lib/trust-stats.ts met TRUST_STATS constanten + getypeerde formatters per taal (trustAgencies, trustRating, trustHeroPill, trustToolingCost). Alle 7 hardcoded mentions vervangen. Wijzig nu één getal in trust-stats.ts en alle publieke pagina's updaten automatisch.

v2.83
zaterdag 23 mei 2026
14:18

SEO + GEO Batch 5 — Internationale architectuur live (EN/DE/FR)

Nieuwe functie

Engelse, Duitse en Franse publieke routes toegevoegd

Wat was het probleem

Het portaal had alleen Nederlandstalige publieke pagina's. Internationale uitbreiding (fase 2 + 3 van de SEO-strategie) was technisch niet voorbereid — geen routing-structuur, geen vertalingen, geen hreflang voor EN/DE/FR.

Hoe het is opgelost

Volledige internationale routing-architectuur opgezet met native locale-slugs: /en (homepage) + /en/pricing, /de + /de/preise, /fr + /fr/tarifs. Hreflang-tags correct geconfigureerd op alle pagina's (nl-NL, nl-BE, en, de, fr, x-default). Locale-switcher in PublicNav navigeert nu actief naar de equivalente pagina in de gekozen taal — werkt voor home en pricing, fallback naar locale-homepage voor niet-vertaalde routes.

Nieuwe functie

Centrale i18n-architectuur via lib/public-i18n.ts

Wat het nu doet

Eén dictionary-bestand met alle content per taal (nl/en/de/fr) voor homepage en pricing. Schaalbaar: nieuwe pagina toevoegen = entry in ROUTE_MAP + content in DICTIONARIES. ROUTE_MAP ondersteunt native slug-vertalingen (NL: /prijzen, EN: /pricing, DE: /preise, FR: /tarifs) voor optimale SEO. Gedeelde components InternationalLanding en InternationalPricing renderen de juiste content op basis van locale-prop.

Nieuwe functie

Per-pagina hreflang met x-default fallback

Wat het nu doet

Elke publieke pagina (NL + alle locale-varianten) declareert nu metadata.alternates.languages voor zichzelf. Google en AI-crawlers krijgen daarmee de juiste locale-route bij internationale zoekopdrachten. x-default verwijst altijd naar de NL-versie omdat dat de meest complete is.

Nieuwe functie

Volledige JSON-LD schema per locale

Wat het nu doet

Product schema met AggregateOffer en FAQPage schema worden per taal gegenereerd met locale-specifieke beschrijvingen en vragen. AI-systemen (ChatGPT, Perplexity, Google AI Overviews) kunnen direct vanuit een Engelse, Duitse of Franse query naar de juiste schema-data verwijzen.

Polish

Sitemap, middleware en llms.txt uitgebreid

Wat het nu doet

Sitemap.ts bevat nu alle locale-varianten van home + pricing (priority 0.85). Middleware whitelist opent /en, /de, /fr paden. llms.txt benoemt expliciet de internationale URLs zodat AI-crawlers ze direct vinden.

v2.82
zaterdag 23 mei 2026
14:08

SEO + GEO Batch 4 — 10 nieuwe blog-artikelen (topical authority)

Nieuwe functie

10 nieuwe blog-artikelen toegevoegd — blog telt nu 30 artikelen

Wat was het probleem

Bestaande 20 blogartikelen dekten basics maar mistten high-intent long-tail keywords zoals "ChatGPT-prompts social media", "engagement rate berekenen formule", "SLA opstellen social media klant" en "wanneer eerste medewerker aannemen bureau".

Hoe het is opgelost

Tien nieuwe diepgaande artikelen geschreven (700-1200 woorden) verdeeld over 4 pillar-clusters: AI tools (chatgpt-prompts, ai-captions-natuurlijk), Performance & metrics (engagement-rate berekenen, NL-benchmarks 2026), Klant-contracten (SLA opstellen, contract opstellen), en Agency business (verloren klant terugwinnen, acquisitiekanalen, eerste medewerker aannemen, goedkeuringsflow). Elk artikel is geoptimaliseerd voor specifieke long-tail zoekopdrachten met hoog conversie-potentieel. Alle artikelen volgen het bestaande BlogPost-schema en zijn automatisch opgenomen in sitemap (priority 0.7).

Polish

Spreiding publishedAt-datums over 6 weken voor natuurlijke indexing

Wat het nu doet

Artikelen gepubliceerd op data van 2026-04-08 t/m 2026-05-21 zodat Google geen content-spike ziet (kan negatief geïnterpreteerd worden). Natuurlijke spreiding versterkt de "actief publicerend bureau"-signaal.

v2.81
zaterdag 23 mei 2026
14:04

"Verder werken" cross-links bar verwijderd van alle silo-pagina's

Polish

SiloCrossLinks component verwijderd van Tools / Trends / CRM / Onboarding

Wat was het probleem

De "Verder werken" chip-rij voegde meer ruis toe dan waarde — boven elke silo-pagina stond een rijtje shortcuts dat afleidde van de daadwerkelijke pagina-inhoud.

Hoe het is opgelost

Component en alle imports verwijderd. De CSS blijft in globals.css als legacy maar wordt nergens meer gerenderd.

v2.80
zaterdag 23 mei 2026
13:55

SEO + GEO Batch 3 — Woordenboek met 36 termen live (AI-citatie goudmijn)

Nieuwe functie

Nieuw /woordenboek met 36 termen voor social media bureaus

Wat was het probleem

AI-systemen (ChatGPT, Perplexity, Claude) citeren glossaries massaal als bron. Senly had geen centrale woordenboek-pagina — een gigantische GEO-miss.

Hoe het is opgelost

Compleet woordenboek opgezet onder /woordenboek met 36 termen verdeeld over 7 categorieën (Agency, Content, Social, Strategie, Rapportage, Tech, Business). Elke term heeft een eigen URL /woordenboek/[slug] met een korte citeerbare definitie (1-2 zinnen), uitgebreide uitleg, agency-voorbeeld, gerelateerde termen en optionele Senly-context. Termen zoals "social media bureau", "white-label", "brand voice", "engagement rate", "content kalender", "ROAS", "MRR" en "churn" zijn gedekt — allemaal hoge zoek-intentie in NL.

Nieuwe functie

DefinedTerm + DefinedTermSet schema voor maximale AI-citatiekans

Wat het nu doet

De hub-pagina rendert een DefinedTermSet met alle 36 termen als DefinedTerm-entities. Elke detail-pagina rendert een eigen DefinedTerm gekoppeld aan de hub via inDefinedTermSet, plus een FAQPage met "Wat is X?" en "Hoe wordt X gebruikt?" — direct citeerbaar door AI-systemen. Plus BreadcrumbList per pagina.

Polish

Cross-linking tussen termen en categorieën

Wat het nu doet

Elke term linkt naar gerelateerde termen (uit term.related) en toont meer termen uit dezelfde categorie. Versterkt de interne linkstructuur en helpt zowel mensen als crawlers door het woordenboek te navigeren.

Polish

Sitemap + llms.txt + middleware uitgebreid

Wat het nu doet

Hub op priority 0.75, alle 35 term-pagina's op 0.65. Middleware whitelist en llms.txt bijgewerkt zodat AI-crawlers de hub direct vinden.

v2.79
zaterdag 23 mei 2026
13:52

Bugfix: "Bekijk demo" knop redirect naar localhost

Bug fix

Demo-start endpoint redirectte naar interne Railway hostname

Wat was het probleem

/api/demo/start gebruikte req.url als basis voor de redirect. Op Railway resolveert req.url naar de interne container-hostname (localhost:8080), waardoor de browser na de signin een onbereikbare URL kreeg en een error-pagina toonde ipv het dashboard.

Hoe het is opgelost

Redirect URL wordt nu opgebouwd uit de echte Host-header (+ x-forwarded-proto) van het inkomende request. Bezoeker blijft op het domein waar hij vandaan kwam (senly.io of app.senly.io).

v2.78
zaterdag 23 mei 2026
13:41

SEO + GEO Batch 2 — 5 concurrent-vergelijkingspagina's live

Nieuwe functie

5 nieuwe 1-op-1 vergelijkingspagina's onder /vergelijk/[competitor]

Wat was het probleem

Concurrenten zoals Hootsuite, Buffer en Planable hadden geen specifieke "Senly vs ..." pagina. Branded zoekverkeer ("Hootsuite alternatief Nederland") werd niet opgevangen.

Hoe het is opgelost

Nieuwe dynamische route /vergelijk/[competitor] met 5 pagina's: senly-vs-hootsuite, senly-vs-sendible, senly-vs-planable, senly-vs-buffer, senly-vs-loomly. Elke pagina bevat: eerlijke sterke/zwakke punten, feature-matrix met 13-14 functies, prijsvergelijking met scenario (10 klanten / 3-4 teamleden), migratie-uitleg en pagina-specifieke FAQ. JSON-LD per pagina: WebPage met ItemList, FAQPage en BreadcrumbList. Alle pagina's pre-rendered via generateStaticParams en toegevoegd aan sitemap (priority 0.85).

Polish

/vergelijk hub-pagina linkt nu naar alle concurrent-pagina's

Wat het nu doet

Nieuwe "1-op-1 vergelijkingen" sectie op /vergelijk met cards naar elke specifieke vergelijking. Verbetert interne linkstructuur en geeft bezoekers gerichte navigatie per concurrent.

Polish

llms.txt uitgebreid met alle 5 vergelijkingspagina's

Wat het nu doet

AI-crawlers (GPTBot, Perplexity, Claude-Web) kunnen nu direct de juiste vergelijkingspagina vinden op vragen als "wat is het Senly vs Hootsuite verschil".

v2.77
zaterdag 23 mei 2026
13:27

SEO + GEO Batch 1 — /prijzen pagina, schema-uitbreidingen en quick wins

Nieuwe functie

Nieuwe /prijzen pagina met volledige PricingSchema

Wat was het probleem

Prijsinformatie was alleen op de homepage verwerkt. Zoekopdrachten als "Senly prijs" en "kosten social media software bureau" konden niet ranken.

Hoe het is opgelost

Eigen /prijzen pagina toegevoegd met drie tiers (Free trial, Growth €50/klant, Scale €40/klant vanaf 21+), volledige feature-lijst, 12 prijs-FAQ's. JSON-LD bevat Product schema met AggregateOffer (3 offers), FAQPage schema en BreadcrumbList. Toegevoegd aan sitemap.ts met priority 0.95. PublicNav linkt nu naar /prijzen i.p.v. homepage-anker.

Nieuwe functie

sameAs-array voorbereid in Organization schema voor GEO

Wat was het probleem

AI-systemen kruisverifieren entiteiten via externe platforms (LinkedIn, G2, Capterra). De sameAs-array in layout.tsx was leeg — Senly werd niet herkend als geverifieerde entiteit.

Hoe het is opgelost

sameAs-array met placeholder-URLs toegevoegd voor LinkedIn, X/Twitter, G2, Capterra, Trustpilot, Product Hunt en YouTube. Uncomment per platform zodra het profiel live is.

Nieuwe functie

Google Search Console verificatie-plek voorbereid

Wat was het probleem

verification.google was leeg uitgecommentarieerd in layout.tsx zonder duidelijke instructies.

Hoe het is opgelost

Duidelijke instructies toegevoegd voor zowel GSC als Bing Webmaster Tools. Plak alleen de content-code in zodra de tags zijn gegenereerd in respectievelijke webmasterconsoles.

Polish

Meta keywords toegevoegd aan /faq, /over-ons, /helpcentrum en /contact

Wat het nu doet

Pagina-specifieke keyword-arrays voor betere herkenning door zowel klassieke zoekmachines als AI-modellen. /helpcentrum kreeg ook een sterkere titel ("60+ gidsen voor het hele platform").

Polish

llms.txt uitgebreid met /prijzen + Scale-tarief

Wat was het probleem

llms.txt vermeldde alleen "vanaf €50" zonder uitleg over de volumekorting bij 21+ klanten.

Hoe het is opgelost

Volledige uitleg van Growth + Scale tariefstructuur toegevoegd. /prijzen en /helpcentrum links toegevoegd aan de pagina-lijst voor AI-crawlers.

v2.76
zaterdag 23 mei 2026
13:18

Domein-migratie: portaal verhuist naar app.senly.io

Infra

Het portaal draait nu op app.senly.io (was portaal.socialmediatools.nl)

Wat was het probleem

Het marketing-merk (senly.io) en het portaal-domein (portaal.socialmediatools.nl) waren niet op elkaar afgestemd, wat verwarring gaf bij nieuwe gebruikers.

Hoe het is opgelost

Nieuw subdomein app.senly.io toegevoegd in Railway met SSL-certificering. Oude portaal.socialmediatools.nl URL geeft nu een permanente 301-redirect naar app.senly.io zodat bestaande bookmarks/links blijven werken en SEO-juice meegaat. Google OAuth redirect URIs uitgebreid met app.senly.io. baseUrl fallback in /api/review aangepast.

Polish

Login email-placeholder generieker gemaakt

Wat was het probleem

"naam@socialmediatools.nl" als placeholder oogde alsof Senly een interne tool was voor één bedrijf.

Hoe het is opgelost

Vervangen door "naam@bureau.nl" — beter passend bij een multi-tenant SaaS voor social media bureaus.

v2.75
zaterdag 23 mei 2026
12:48

Demo-tenant wordt nu automatisch geseed bij elke deploy

Infra

Idempotente demo-seed in npm start

Wat was het probleem

Voor het werken van de "Bekijk demo" knop moest npm run db:seed-demo handmatig gedraaid worden — een extra handeling die makkelijk vergeten wordt.

Hoe het is opgelost

Nieuwe prisma/ensure-demo.ts draait bij elke deploy en seedt de demo-tenant alleen als die nog niet bestaat (idempotent). Errors zijn niet-fataal — als seed faalt blijft de app gewoon starten. Voor handmatige reseed: npm run db:seed-demo (wist alles + maakt opnieuw).

v2.74
zaterdag 23 mei 2026
02:19

Volledige mobiel & tablet responsiviteit gefixed op alle pagina's

Polish

Header-topbar ≤640px: overtollige iconen verborgen

Wat was het probleem

Op smalle schermen stonden 9 iconen naast elkaar in de fundio2-topbar. Dit leidde tot crowding en onbruikbare aanraakdoelen.

Hoe het is opgelost

Op ≤640px wordt .fundio-center verborgen en in .fundio-right worden alle knoppen behalve cog verborgen. Maximaal 4 iconen op mobiel.

Polish

Dashboard grafiek ≤640px: bar-waarde-labels verborgen

Wat was het probleem

12 kolommen van ~25px elk — €-labels overlapten volledig op mobiel.

Hoe het is opgelost

.dash-chart-bar-value display:none op ≤640px; bar-labels krimpen naar 9px.

Polish

Client-slider ≤640px: breedte naar calc(100vw - 48px)

Wat was het probleem

max-width: 320px was te restrictief — kaarten werden afgekapt op smalle telefoons.

Hoe het is opgelost

Slider kaarten gebruiken calc(100vw - 48px) op ≤640px voor één kaart per scherm.

Polish

Tools-pagina: negatieve marges afgestemd op main-padding per breakpoint

Wat was het probleem

De tools-page negatieve marges (-28px) kwamen niet overeen met de daadwerkelijke padding op mobiel.

Hoe het is opgelost

Op ≤768px margin -16px, op ≤480px margin -12px — exact gespiegeld aan de main-padding.

Polish

Factuurpagina: volledig responsief gemaakt

Wat was het probleem

De factuurpagina gebruikte uitsluitend inline React-styles — niet overschrijfbaar door media queries.

Hoe het is opgelost

CSS media query via <style>-blok; className-attributen op header, sections en footer voor ≤600px aanpassing.

Polish

Signup-formulier: 2-koloms grid valt terug naar 1 kolom op ≤480px

Wat het nu doet

Inline stijl vervangen door .signup-fields-2col klasse met responsieve breakpoint in globals.css.

Polish

Boekingspagina: extra ≤480px polish voor kleine schermen

Wat het nu doet

Padding van bp-left, bp-right en bp-card krimpen op ≤480px voor bruikbaarheid op kleine telefoons.

v2.73
zaterdag 23 mei 2026
02:19

Volledige vertaalkwaliteitsaudit EN / DE / FR afgerond

Polish

Alle auto-vertaalde EN/DE/FR sleutels herschreven naar correcte professionele vertalingen

Wat was het probleem

Grote blokken sleutels in de DE- en FR-secties van translations.ts waren automatisch vertaald met gemengd Engels/Duits en Engels/Frans (bijv. "Nein Posts", "January", "Run sync now", "Agency name *"). Gebruikers in Duitsland en Frankrijk zagen plaatselijk Engelse tekst door het hele portaal.

Hoe het is opgelost

Volledige audit van alle ~14.500 regels. Alle cal_*, calp_*, trello_*, dropbox_*, gdrive_*, canva_*, ns_*, iv_*, fin_*, one_*, of_*, mo_*, aa_*, agt_*, otp_*, saas_* en ap_* sleutels herschreven naar professioneel Duits (formeel, Sie/du consistent) en Frans (formeel, vous). Maanden vertaald naar correcte taalversies. Dutch "Social Media Beheer" gecorrigeerd in EN en DE.

v2.72
zaterdag 23 mei 2026
02:16

Demo-modus + silo cross-links: het portaal als verkooptool

Nieuwe functie

Interactieve demo-modus via "Bekijk demo" knop op de landingpage

Wat was het probleem

De "Bekijk demo" knop in de hero scrollde alleen naar #platform. Bezoekers konden het portaal niet zelf ervaren — wat miljardenproducten als Linear en Vercel wél bieden.

Hoe het is opgelost

Nieuwe /api/demo/start route logt bezoekers automatisch in als de demo-user (Sophie van Digitaal Bureau Demo) met een 1-uur sessie. Demo-tenant heeft 10 mock-klanten, taken, en financiën. Banner bovenaan elke pagina toont "Demo modus — start je eigen 14-daagse trial". Onboarding-tours starten automatisch op alle hoofdpagina's (klantprofiel, dashboard, kalender, tools).

Nieuwe functie

Demo-write-protection: destructive acties geblokkeerd

Wat het nu doet

Nieuwe assertNotDemo() helper geeft 403 voor demo-users op DELETE /api/clients/[id]. Read en non-destructive writes (taken aanvinken, notities toevoegen) blijven werken voor een echte demo-ervaring. Demo-tour-state wordt bij elke /api/demo/start reset zodat elke nieuwe bezoeker de volledige rondleiding krijgt.

Nieuwe functie

Silo cross-links bar op Tools, Trends, CRM en Onboarding pagina's

Wat was het probleem

Tools, Trends, CRM, Onboarding en het Klantprofiel waren geïsoleerde silo's zonder cross-references. Gebruikers moesten via de sidebar springen tussen logische volgende stappen.

Hoe het is opgelost

Nieuwe SiloCrossLinks component bovenaan elke silo-pagina toont 3 contextuele links naar verwante secties (bv. vanaf CRM → Onboarding-bord → Actieve klanten → Financieel). Visueel als teal-accented chip-row met icon + label + hint. Maakt de "lead → onboarding → actieve klant" flow zichtbaar.

Polish

Open: domein-/merkmismatch senly.io vs socialmediatools.nl

Wat was het probleem

De marketing-site draait op senly.io maar het portaal op socialmediatools.nl. Dit creëert merkverwarring bij nieuwe gebruikers.

Hoe het is opgelost

Niet in deze release uitgewerkt — vereist DNS + Railway custom domain wijziging. Gerapporteerd voor latere planning: opties zijn (a) alles naar senly.io migreren of (b) portaal-branding consistent maken naar "Senly Portaal".

v2.71
zaterdag 23 mei 2026
02:05

Trust & onboarding: ISO-claim verwijderd, wachtwoord-sterkte, Google SSO

Beveiliging

Onterechte "ISO 27001"-badge verwijderd van de loginpagina

Wat was het probleem

De loginpagina toonde een ISO 27001-certificering die het bureau (nog) niet bezit. Dit sprak de security-pagina tegen en is een fatale claim voor enterprise-vertrouwen.

Hoe het is opgelost

Badge verwijderd. Alleen feitelijk-correcte trust signals (AVG-proof, 256-bit SSL) blijven staan. Wanneer de ISO-certificering wel behaald is, kan de badge terugkomen met certificaatnummer.

Nieuwe functie

Realtime wachtwoord-sterkte-indicator op signup en wachtwoord-reset

Wat was het probleem

Het signup-formulier en de wachtwoord-reset hadden alleen minLength=8 zonder visuele feedback. Gebruikers wisten niet hoe sterk hun wachtwoord was, en welke verbetering ze konden maken.

Hoe het is opgelost

Nieuwe PasswordStrength component met visuele 4-segments balk (zwak → uitstekend) en checklist hints (8+ tekens, hoofdletter, kleine letter, cijfer, speciaal teken). Updates realtime tijdens typen.

Nieuwe functie

Google SSO — "Doorgaan met Google" op de loginpagina

Wat was het probleem

Inloggen vereiste altijd handmatige email + wachtwoord. Voor terugkerende gebruikers van een SaaS-bureau-tool is dit een onnodige drempel — concurrenten bieden allemaal SSO.

Hoe het is opgelost

NextAuth Google provider toegevoegd (conditioneel op env vars GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET). Officiële Google-merk-knop verschijnt bovenaan het loginformulier wanneer geconfigureerd. SSO matcht op email — alleen bestaande, actieve gebruikers worden toegelaten; signups blijven via de wizard.

v2.70
zaterdag 23 mei 2026
01:51

"Deel review-link" knop nu rechtsboven naast de sectietitel

Polish

Knop staat nu op de juiste plek: rechtsboven, op één lijn met "Content"

Wat was het probleem

De "Deel review-link" knop stond ondergeschikt aan de sectietitel "Content" — links eronder gestapeld in plaats van rechts ernaast. De .cp-section-header-row wrapper had geen CSS-styling, waardoor de flex-layout niet werkte.

Hoe het is opgelost

CSS toegevoegd: header-row is nu een flex-container met justify-content:space-between, en de title verliest zijn margin-bottom omdat de row die nu zelf afhandelt. Op mobile wikkelt het netjes naar nieuwe regel zonder full-width knop.

v2.69
zaterdag 23 mei 2026
01:44

Canva → Metricool modal: positionering en vertalingen gefixed

Bug fix

Modal opent nu altijd in het midden van het scherm

Wat was het probleem

De "Stuur naar Metricool" modal verscheen onder de fold — je moest helemaal naar beneden scrollen om hem te zien. Dit kwam omdat de modal binnen de CollapsibleSection wrapper rendeerde, en die Framer Motion container met overflow:hidden brak de position:fixed van de modal-backdrop.

Hoe het is opgelost

Modal wordt nu via React Portal direct op document.body gerendered, buiten alle parent-containers. Daardoor werkt position:fixed weer correct en verschijnt de modal altijd centraal in de viewport.

Bug fix

Hardcoded Nederlandse en Engelse strings in de modal vertaald

Wat was het probleem

De modal toonde "Posts/week:", "Stories/week:" en "Voorbeelden laden" altijd in dezelfde taal, ongeacht de geselecteerde taalinstelling. Resultaat: mixed-language UI (bv. Franse modal met Nederlandse tekst).

Hoe het is opgelost

Vervangen door tr('canva_posts_per_week'), tr('canva_stories_per_week') en tr('canva_loading_previews') — vertaald in alle 4 talen (NL/EN/DE/FR).

v2.68
zaterdag 23 mei 2026
01:38

Review portaal: volledig premium dark redesign + media-thumbnails

Polish

Review portaal compleet heronworpen naar premium dark design

Wat was het probleem

Het review portaal zag er generiek en goedkoop uit: witte achtergrond, emoji platform-badges, brede groene knoppen en lege thumbnails.

Hoe het is opgelost

Volledig heronworpen naar het Senly design DNA (dark · glassmorphism · teal accenten). Nieuwe elementen: donkere achtergrond met teal radial glow, glass-cards met hover-lift, 2-koloms grid op desktop, grote media-preview bovenaan elke card, gekleurde platform-chips (FB/IG/LI/TT/YT...), geraffineerde teal gradient goedkeuren-knop, ghost afwijzen-knop, verfijnde voortgangsbalk met glow.

Bug fix

Metricool post-afbeeldingen worden nu correct geladen

Wat was het probleem

Media-thumbnails toonden niets vanwege CORS-blokkade op de Metricool CDN.

Hoe het is opgelost

Alle mediaUrl's worden nu gerouteerd via /api/img-proxy (al publiek toegankelijk via middleware). De proxy voegt automatisch de X-Mc-Auth header toe voor Metricool CDN-domeinen.

Polish

Beslissing herzien werkt nu correct

Wat was het probleem

De "Beslissing wijzigen" knop resettte alleen lokale state, zonder de server te informeren.

Hoe het is opgelost

Status wordt nu lokaal teruggedraaid naar "te beoordelen" zodat de knoppen opnieuw verschijnen. De volgende beslissing wordt dan correct via PATCH gepersisteerd.

v2.67
vrijdag 22 mei 2026
12:23

Review portaal: geplande Metricool-posts reviewen en goedkeuren

Nieuwe functie

Review-link toont nu posts rechtstreeks vanuit Metricool

Wat was het probleem

Het review portaal toonde alleen interne ContentPost-records uit de database. De klant kon dus geen posts uit de Metricool-planner beoordelen.

Hoe het is opgelost

Review-sessies hebben nu een bron-instelling: "Metricool kalender" of "Interne posts". Bij Metricool worden posts live opgehaald via de bestaande listScheduledPosts functie met een instelbare datumrange. Beslissingen (goed/afwijzen + feedback) worden opgeslagen in de session als JSON blob.

Nieuwe functie

Multi-platform badges en media thumbnail in de review-kaart

Wat het nu doet

Cross-posts (bijv. Instagram + Facebook + LinkedIn tegelijk) tonen nu alle platforms als kleine emoji-badges naast de primaire platform-chip. Metricool-posts met een afbeelding tonen een thumbnail. De Metricool-status (Concept / Ingepland / Gepubliceerd) is zichtbaar als kleurgecodeerde chip.

Nieuwe functie

Bron-selector en datumrange-picker in de "Deel review-link" modal

Wat het nu doet

Bij het aanmaken van een review-link kies je nu eerst de bron: Metricool of Interne posts. Bij Metricool stel je een van/tot datumperiode in (standaard: vandaag + 60 dagen). Als Metricool niet gekoppeld is aan de klant is de Metricool-optie uitgeschakeld.

Infra

Prisma schema: 3 nieuwe velden op ClientReviewSession

Wat het nu doet

contentSource (internal|metricool), decisions (JSON string met review-beslissingen), dateRange (JSON string met from/to) toegevoegd. Prisma db push draait automatisch bij deploy.

v2.66
vrijdag 22 mei 2026
12:15

Vertalingen: klanttabs, secties en Google Drive volledig vertaald

Bug fix

Klanttabs ("Overzicht", "Taken", "Content", "Klantinfo", "Financieel") vertaald

Wat was het probleem

De tabs op de klant-detailpagina gebruikten hardcoded Nederlandse labels in een server component, waardoor ze nooit meeveranderden met de taalinstelling.

Hoe het is opgelost

Tabs gebruiken nu labelKey in plaats van label. ClientTabs vertaalt ze client-side via useLanguage().

Bug fix

Sectietitels "Content", "Klantinfo" en "Evaluatiegesprekken" vertaald

Wat was het probleem

Drie sectie-headers in ClientPageSections.tsx waren hardcoded in het Nederlands.

Hoe het is opgelost

Vervangen door tr('tab_content'), tr('cp_clientinfo_title') en tr('cp_evaluations_title') / tr('cp_evaluations_count') via de bestaande useLanguage() hook.

Bug fix

Google Drive foutmelding toonde server-gegenereerde Nederlandse tekst

Wat was het probleem

De GDrive sectie toonde {data.message || tr('gdrive_no_folder')} — de server stuurde altijd een Nederlandse foutmelding die de client-side vertaling overschreef.

Hoe het is opgelost

data.message verwijderd uit de render; de component toont nu uitsluitend de vertaalde tr('gdrive_no_folder') key.

v2.65
vrijdag 22 mei 2026
12:08

Vertalingen: Affiliate Admin, Activiteiten, Massa-koppeling en Tools volledig vertaald

Nieuwe functie

~98 hardcoded Nederlandse strings vervangen door tr()-calls in 4 pagina's

Wat was het probleem

De Affiliate Admin, Audit Log, Massa-koppeling (Social Accounts) en Tools-pagina toonden altijd Nederlandse tekst ongeacht de taalinstelling van de gebruiker.

Hoe het is opgelost

Alle strings geëxtraheerd naar nieuwe vertaalsleutels (aff_*, audit_*, sa_*, tools_*) in alle 4 talen (NL/EN/DE/FR). Componenten bijgewerkt met useLanguage() / tr(). De Activiteiten-pagina (server component) heeft een aparte ActivityPageHeader client-component gekregen.

v2.64
vrijdag 22 mei 2026
11:56

Review-portaal header: volledig redesign met bureau-logo en klant-avatar

Polish

Review-header toont nu bureau-logo (of naam-pill) + klant-initiaal avatar

Wat was het probleem

De header gebruikte het client.icon veld als <img> src, maar dat veld bevat een emoji of icon-naam — geen URL. Resultaat: een kapotte afbeelding.

Hoe het is opgelost

Header gesplitst in twee lagen: een smalle witte topbalk met het bureau-logo (Tenant.logoLightUrl / logoUrl) of bureau-naam, en een teal hero-balk met een letter-avatar (eerste letter klant-naam in halftransparante cirkel). Geen afhankelijkheid meer van client.icon als afbeelding.

Nieuwe functie

Agency logo wordt nu meegestuurd vanuit de API

Wat het nu doet

GET /api/review/[token] geeft nu ook agency.logo terug (Tenant.logoLightUrl of logoUrl). Zodra je in de Tenant-instellingen een logo uploadt, verschijnt het automatisch op alle review-pagina's.

v2.63
vrijdag 22 mei 2026
05:22

CSS stats-kpi-grid: conflicterende definities opgelost

Bug fix

KPI-raster stond op desktop-breedte vast op mobiel door !important-conflict

Wat was het probleem

Het CSS-bestand bevatte 4 conflicterende .stats-kpi-grid definities. De laatste (Taskio-stijl, zonder media query) gebruikte !important op grid-template-columns, waardoor de mobiele breakpoints (≤640px en ≤860px) die eerder in het bestand stonden werden overschreven. Op mobiel werden KPI-kaarten dus te smal weergegeven.

Hoe het is opgelost

De Taskio-override gewrapped in @media (min-width: 641px) zodat mobiele breakpoints weer actief zijn. Dubbele identieke definitie (minmax(200px) variant) verwijderd.

v2.62
vrijdag 22 mei 2026
05:21

Mobiel & tablet: touch-targets, scroll-snap, viewport-overflow en labels

Polish

Touch-targets vergroot naar WCAG-minimum (44×44px)

Wat was het probleem

De sluitknoppen van de mobiele navigatie (36px) en het instellingenpaneel (32px) lagen onder het WCAG-minimum van 44×44px, waardoor ze op touchscreens moeilijk te raken waren.

Hoe het is opgelost

Beide knoppen aangepast naar 44×44px.

Polish

CRM kanban: scroll-snap op mobiel/tablet voor soepele swipe

Wat was het probleem

Op telefoon/tablet kon de kanban-board horizontaal scrollen maar zonder snapping, wat leidde tot kolommen die halverwege stopten. De inline padding was ook rechts-eenzijdig (40px rechts, 0 links).

Hoe het is opgelost

CSS scroll-snap-type: x mandatory toegevoegd op ≤1024px. Kolombreedte aangepast naar min(280px, 85vw) zodat de volgende kolom altijd inkijkt ("peek"). Padding gelijkgetrokken aan beide zijden.

Bug fix

CRM detail-pane niet breder dan viewport op telefoon

Wat was het probleem

De klantdetail-pane gebruikte clamp(380px, 42vw, 580px), wat op schermen <380px buiten de viewport stak.

Hoe het is opgelost

Breedte veranderd naar clamp(min(380px, 100vw), 42vw, 580px). Op ≤640px nu 100vw (volledig scherm).

Bug fix

FinanceTabel: data-mobile-label attributen toegevoegd aan alle cellen

Wat was het probleem

De CSS verwachtte data-mobile-label voor de ::before-labels op mobiel, maar alle tabelcellen misten dit attribuut — labels waren dus leeg.

Hoe het is opgelost

Alle finance-bulk-cell elementen (omzet, personeel, abonnementen, commissie, winst, marge) hebben nu data-mobile-label={tr('fin_col_*')} in zowel de rij-items als de totalen-rij.

Polish

WeekGrid kalender: scroll-snap en tablet-breakpoint op 881-1200px

Wat was het probleem

Op tablets (881-1024px) werden 8 kolommen (tijdbalk + 7 dagen) dichtgepakt zonder scrollhint.

Hoe het is opgelost

Nieuw tablet-mediaquery toegevoegd die kolommen smaller maakt (minmax 96px) en scroll-snap inschakelt. Bestaand mobiel breakpoint ook voorzien van scroll-snap.

Bug fix

Kalender filter & datumkiezer popovers overschreden viewport rechts

Wat was het probleem

De filter-popover (right: 0) en de daterange-popover (left: 50%, transform) konden op smalle schermen buiten de rechterkant van de viewport vallen.

Hoe het is opgelost

max-width: min(360px, calc(100vw - 24px)) toegevoegd aan filter-popover. Op ≤640px: daterange-popover anchort nu links (left: 0, transform: none).

Polish

Maandgrafiek financieel: 2 rijen van 6 op telefoon

Wat was het probleem

De maandgrafiek toonde 12 vaste kolommen op elk scherm, waardoor staven op telefoon niet leesbaar smal werden.

Hoe het is opgelost

Op ≤480px: grid-template-columns: repeat(6, 1fr) zodat 12 maanden in 2 rijen van 6 staan.

v2.61
vrijdag 22 mei 2026
05:14

Klant-review portaal: content goedkeuren zonder login

Nieuwe functie

Publiek review-portaal: klanten keuren content goed via unieke link

Wat was het probleem

Contentgoedkeuring verliep via WhatsApp of e-mail — geen gestructureerd feedbackproces, geen overzicht per klant.

Hoe het is opgelost

Nieuw token-gebaseerd review-portaal op /review/[token]. De klant ziet alle draft-posts van zijn account, kan per post goedkeuren of afwijzen (met feedback), en het bureau ziet de beslissingen direct terugkomen in het dashboard. Geen login vereist voor de klant.

Nieuwe functie

"Deel review-link" knop in de klant-Content-sectie

Wat het nu doet

Managers kunnen vanuit het dashboard een review-sessie aanmaken: optionele titel, begeleidend bericht en geldigheidsperiode (7–90 dagen). De gegenereerde link is direct te kopiëren.

Nieuwe functie

Review-UI: voortgangsbalk, filtermenu en status-badges

Wat het nu doet

De review-pagina toont een live voortgangsbalk (x van y beoordeeld), filtermenu (alle / te beoordelen / goedgekeurd / afgewezen), platform-gradiënt-badges, uitklap-caption, hashtag-chips, visuele briefing en een "Kopieer tekst" knop. Op mobiel volledig responsief.

Infra

Prisma-model ClientReviewSession toegevoegd

Wat het nu doet

Nieuw model met uniek token, koppeling aan Client, optionele post-selectie (postIds JSON-array), verloop-datum en aangemaakt-door veld. Relatie toegevoegd aan Client.

v2.60
vrijdag 22 mei 2026
05:04

Talen-audit: 142 ontbrekende vertalingen toegevoegd (DE + FR)

Polish

Duits en Frans compleet: alle 3.182 sleutels nu aanwezig

Wat was het probleem

DE en FR misten 142 sleutels (dashboard widgets, statistieken, social-account koppeling, tools, kalender-filters). Gebruikers in deze talen zagen de sleutelnaam i.p.v. een vertaling.

Hoe het is opgelost

Alle 142 ontbrekende sleutels vertaald en ingevoegd in de DE en FR locale-blokken. Alle 4 talen (NL/EN/DE/FR) zijn nu 100% compleet.

v2.59
vrijdag 22 mei 2026
04:53

Video downloaders: Instagram, YouTube, Snapchat & LinkedIn gerepareerd

Bug fix

Instagram downloader werkt nu via snapinsta.app proxy

Wat was het probleem

Railway's IP-reeksen worden geblokkeerd door Instagram, waardoor yt-dlp altijd faalde.

Hoe het is opgelost

Zelfde VM-sandbox aanpak als de Facebook-downloader (snapsave), nu voor snapinsta.app. Extractie van directe CDN-URLs zonder Railway-IP-blokkade.

Bug fix

YouTube downloader: iOS-client bypass voor yt-dlp

Wat was het probleem

YouTube vereist sinds 2024 een proof-of-origin token (po_token) voor de web-client, waardoor server-side yt-dlp faalt.

Hoe het is opgelost

yt-dlp krijgt nu --extractor-args "youtube:player_client=ios,tv_embedded" mee. De iOS-client bypast de po_token-vereiste.

Bug fix

Snapchat: short-URL resolver + betere user-agent

Wat was het probleem

snapchat.com/t/... short-URLs werden niet omgezet voordat ze naar yt-dlp gingen.

Hoe het is opgelost

Redirect wordt nu gevolgd zodat yt-dlp de volledige Spotlight-URL krijgt. Mobiele user-agent ingesteld voor betere compatibiliteit.

Bug fix

LinkedIn: duidelijke foutmelding bij auth-wall

Wat was het probleem

LinkedIn blokkeert server-IPs met een login-wall. Generieke foutmelding gaf geen richting.

Hoe het is opgelost

Platform-specifieke foutmelding met instructie om de video rechtstreeks vanuit LinkedIn te downloaden.

Bug fix

Proxy-whitelist uitgebreid met nieuwe CDN-domeinen

Wat was het probleem

snapinsta.app, media.licdn.com en snap-video.net ontbraken in de proxy-whitelist.

Hoe het is opgelost

ALLOWED_CDN_HOSTS bijgewerkt zodat nieuwe video-URLs correct geproxied worden.

v2.58
vrijdag 22 mei 2026
04:38

Mobiel/tablet: navigatie-gat gedicht, e-mail inbox bruikbaar + meer

Bug fix

Navigatie ontbrak op tablet (769–1024px)

Wat was het probleem

De sidebar verdween al vanaf 1024px, maar de hamburger/topbar verschenen pas onder 900/768px — daartussen was er geen enkele navigatie.

Hoe het is opgelost

Topbar en hamburger verschijnen nu vanaf 1024px, gelijk met het verdwijnen van de sidebar.

Bug fix

E-mail inbox was onbruikbaar op mobiel

Wat was het probleem

Onder 768px werden de mappen- én threadkolom verborgen, waardoor alleen een leeg leesvenster overbleef.

Hoe het is opgelost

Mappen, threads en lezer worden nu netjes onder elkaar getoond (mappen als scrollbare strip), zodat je op mobiel volledig kunt mailen.

Polish

Tool-detailpagina's ruimer op mobiel

Wat het nu doet

Smallere zijmarges op kleine schermen voor meer content-breedte.

Polish

Brede admin-tabellen scrollbaar op mobiel/tablet

Wat het nu doet

Social-accounts bulk-tabel en affiliate-tabellen kappen niet meer af maar scrollen horizontaal.

v2.57
vrijdag 22 mei 2026
04:21

Tool-audit: trend radar werkend gemaakt + username-checker eerlijker

Nieuwe functie

Trend radar is nu een werkende tool

Wat was het probleem

Trend radar was een lege placeholder ("binnenkort beschikbaar") terwijl hij wel als tool werd getoond.

Hoe het is opgelost

Werkende AI-versie: geef je niche + platform op en krijg 8 opkomende/hete content-formats met momentum, uitleg en een concreet voorbeeld.

Bug fix

Username checker geeft geen valse uitslagen meer

Wat was het probleem

Voor X, Pinterest, Reddit en Facebook gaf de check vaak onterecht "bezet" of "vrij" (JS-shells, bot-walls, login-redirects).

Hoe het is opgelost

Die platforms tonen nu eerlijk "onbekend — open de link om te controleren" i.p.v. een misleidende uitslag. Instagram, TikTok, YouTube en Snapchat blijven betrouwbaar gecheckt. Geldt ook voor de username generator.

Bug fix

Content ideeën kapt niet meer af bij lange AI-calls

Wat het nu doet

maxDuration op 60s gezet zodat de generatie niet vroegtijdig door het platform wordt afgebroken.

v2.56
vrijdag 22 mei 2026
04:12

CRM & Onboarding: horizontale scrollbalk verborgen

Polish

Geen zichtbare horizontale scrollbalk meer op de pipeline-boards

Wat het nu doet

Scrollbalk verborgen op het kanban-board (CRM/Leads én Onboarding/Flows); horizontaal scrollen blijft mogelijk via swipe/trackpad.

v2.55
vrijdag 22 mei 2026
04:10

CRM/Leads: content links uitgelijnd met de scrollbalk

Polish

CRM-content schuift naar links, gelijk aan het linker uiteinde van de horizontale scrollbalk

Wat was het probleem

De header en pipeline-kolommen hadden 40px linker-padding, terwijl de horizontale scrollbalk al op de board-rand begon — dat zag er niet uitgelijnd uit.

Hoe het is opgelost

Linker-padding van header en board verwijderd zodat de content netjes op één verticale lijn met het linker uiteinde van de scrollbalk staat.

v2.54
vrijdag 22 mei 2026
04:05

Aanbevolen-carousel: scrollbalk verborgen

Polish

Geen zichtbare scrollbalk meer onder de aanbevolen-tools

Wat het nu doet

De horizontale scrollbalk is verborgen; scrollen gaat via de ‹ ›-pijltjes of een swipe.

v2.53
vrijdag 22 mei 2026
04:02

Tools-achtergrond loopt nu tot de menubalk

Bug fix

Witte strook tussen de menubalk en de hero-achtergrond weg

Wat was het probleem

De achtergrond-wash zat binnen de 28px horizontale padding van de content-zone, waardoor er een witte rand tegen de menubalk overbleef.

Hoe het is opgelost

De tools-pagina breekt nu uit die padding (margin/padding -28px) zodat de achtergrond tot de menubalk en de rechterrand loopt; de content blijft op z'n plek.

v2.52
vrijdag 22 mei 2026
03:58

Tool-iconen draaien soepel bij hover

Polish

High-end hover-animatie op elk tool-icoon

Wat het nu doet

Bij hover maakt het icoon (carousel én tabel, inclusief de downloader-logo's) een vloeiende 360°-draai met een lichte schaal-pop en kleur-glow. Premium easing met subtiele overshoot; respecteert prefers-reduced-motion.

v2.51
vrijdag 22 mei 2026
03:52

Tools-hero: titel op één regel en dunner lettertype

Polish

Hero-titel "Slimme tools, maximale impact" past nu op één regel

Wat het nu doet

Lettergrootte iets verkleind + nowrap op desktop; op smalle schermen breekt hij netjes af.

Polish

Titel-gewicht gelijk aan de Takenbeheer-titel

Wat het nu doet

font-weight teruggebracht van 600 naar 500 (zelfde dunne uitstraling als de th2-title).

v2.50
vrijdag 22 mei 2026
03:49

Tools-pagina finetuning: carousel, downloader-logo's en hero

Bug fix

Bovenkant van de aanbevolen-kaarten werd afgesneden

Wat was het probleem

De horizontale scroll-container clipte ook verticaal, waardoor de hover-lift en schaduw bovenaan wegvielen.

Hoe het is opgelost

Verticale padding toegevoegd aan de carousel-track zodat de kaarten en hun schaduw volledig zichtbaar blijven.

Polish

Echte platform-logo's voor de downloader-tools

Wat was het probleem

De downloaders (Instagram, Facebook, TikTok, YouTube, LinkedIn, Snapchat) toonden een grijze placeholder.

Hoe het is opgelost

Nu het echte merklogo op de platform-kleur, met een klein download-badge.

Polish

Overbodige meta-regel in de hero weggehaald

Wat het nu doet

"23 tools · 9 platforms · geen registratie" verwijderd voor een rustiger hero.

v2.49
vrijdag 22 mei 2026
03:44

Tools-pagina: rustigere achtergrond zonder zichtbare naad

Polish

Achtergrond van de Tools-hero opgeschoond

Wat was het probleem

De drie losse gekleurde orbs gaven een vlekkerige wash met een zichtbare overgang naar wit halverwege de pagina.

Hoe het is opgelost

Vervangen door één samenhangende, subtiele gradient die via een mask naadloos uitfadet in de pagina-achtergrond.

v2.48
vrijdag 22 mei 2026
03:33

Tools-pagina volledig vernieuwd + tool-aanvragen

Nieuwe functie

Nieuwe Tools-pagina: hero, aanbevolen-carousel, categorie-chips en overzichtstabel

Wat was het probleem

Het oude tools-overzicht was een lange reeks losse grids zonder duidelijk overzicht of zoekflow.

Hoe het is opgelost

Frisse layout met een hero ("Slimme tools, maximale impact"), een "Aanbevolen voor jou"-carousel, klikbare categorie-chips als filter en alle 23 tools in een doorzoekbare tabel met categorie-badges.

Nieuwe functie

Tool aanvragen

Wat het nu doet

Mis je een tool? Via de knop "Tool aanvragen" dien je er een in; aanvragen worden opgeslagen en verschijnen onder het tabblad "Aangevraagde tools" met een status (in behandeling / gepland / toegevoegd / afgewezen).

Infra

ToolRequest-model + API

Wat het nu doet

Nieuw Prisma-model en /api/tools/requests endpoints (aanmaken, lijst, status bijwerken) — tenant-gefilterd zodat elk bureau de eigen aanvragen ziet.

v2.47
vrijdag 22 mei 2026
03:07

Zes nieuwe tools: snelheidstest, storingen, QR, bio, username & hook analyzer

Nieuwe functie

Internet snelheidstest

Wat het nu doet

Meet download, upload, ping en jitter tegen de Senly-server — zo weet je of je vanaf je locatie vlot kunt werken.

Nieuwe functie

Storingen checker voor social platforms

Wat het nu doet

Checkt bereikbaarheid van Instagram, Facebook, WhatsApp, Threads, TikTok, YouTube, X, LinkedIn, Snapchat en Pinterest, met directe link naar de officiële statuspagina.

Nieuwe functie

Gratis, permanente QR-code generator

Wat het nu doet

Genereert QR-codes die de URL direct bevatten (geen redirect, verloopt nooit), met kleur- en formaatopties en PNG/SVG-download.

Nieuwe functie

AI Bio generator

Wat het nu doet

Schrijft vier bio-varianten binnen de tekenlimiet van Instagram, TikTok, LinkedIn, Facebook, X of YouTube, met instelbare toon en emoji.

Nieuwe functie

Username generator met beschikbaarheidscheck

Wat het nu doet

AI bedenkt tien handles op basis van naam, niche en stijl; één klik checkt of ze nog vrij zijn op de grote platforms.

Nieuwe functie

Viral hook analyzer

Wat het nu doet

Scoort je openingszin op scroll-stop, nieuwsgierigheid, duidelijkheid en emotie, met sterke/zwakke punten en drie verbeterde varianten.

Polish

Nieuwe categorie "Handige hulpmiddelen" op de Tools-pagina

Wat het nu doet

Snelheidstest, storingen checker en QR-generator gebundeld; bio + hook analyzer onder Schrijven & ideeën, username generator onder Analyse & onderzoek.

v2.46
vrijdag 22 mei 2026
03:03

Nav mobiel: logo links, inloggen + NL tegen de rechterrand

Polish

Inloggen / Registreren en de taalknop staan nu rechts uitgelijnd, met witruimte tot het logo

Wat was het probleem

Op mobiel bleef de nav een CSS-grid (1fr auto 1fr); met de verborgen menu-links belandde de knoppen-groep in de middelste kolom i.p.v. rechts, en justify-content had geen effect op die grid.

Hoe het is opgelost

Op mobiel de nav op display:flex met justify-content:space-between gezet: logo tegen de linkerrand, knoppen tegen de rechterrand, met de witruimte ertussen.

v2.45
vrijdag 22 mei 2026
02:29

Nav mobiel: logo en knoppen symmetrisch t.o.v. de randen

Polish

Logo + Senly staat nu even ver van de linkerrand als de NL-knop van de rechterrand

Wat was het probleem

De nav-inner had asymmetrische padding (links 24px, rechts 14px) waardoor het logo verder van de rand stond.

Hoe het is opgelost

Op mobiel padding gelijkgetrokken naar 12px 16px voor een symmetrische uitlijning.

v2.44
vrijdag 22 mei 2026
02:21

Login mobiel: witte balk onderin definitief opgelost + card iets lager

Bug fix

Witte balk onder de login-card op mobiel verdwenen

Wat was het probleem

html[data-theme="light"] body stelde een lichte achtergrond in die buiten de login-container zichtbaar was als de body verder reikte dan 100dvh.

Hoe het is opgelost

html:has(.login-screen-v2) body achtergrond geforceerd naar #070a0f op mobiel; padding-top verhoogd naar 80px zodat de card iets lager staat.

v2.43
vrijdag 22 mei 2026
02:10

Login mobiel: card verticaal gecentreerd op het scherm

Polish

Login-card staat nu in het midden van het scherm op mobiel

Wat het nu doet

align-items: center op de container zodat de card verticaal gecentreerd staat, met padding-top voor de Terug-knop.

v2.42
vrijdag 22 mei 2026
02:10

Mobiel: smallere randen zodat content meer scherm vult

Polish

Marges van hero, nav, CTA en metrics-balk teruggebracht van 14px naar 6px op mobiel

Wat was het probleem

De hero en nav hadden 14px marge aan alle kanten waardoor de content er "ingekaderd" uitzag op mobiel.

Hoe het is opgelost

margin: 6px op hero-v2, nav-offset 6px, border-radius iets kleiner — meer schermvullend zoals socialmediatools.nl.

v2.41
vrijdag 22 mei 2026
02:04

Login mobiel: witte ruimte onderaan card en witte balk verwijderd

Bug fix

Card is nu auto-height, achtergrond vult de rest van het scherm

Wat was het probleem

min-height: 100dvh op de card zelf maakte hem veel groter dan de content. Wit onder de card was de body-achtergrond die doorscheen.

Hoe het is opgelost

Shell is height: auto, container is 100dvh met dark gradient — card zit bovenaan, de rest van het scherm toont de donkere achtergrond.

v2.40
vrijdag 22 mei 2026
01:57

Login mobiel: lege ruimte boven formulier verwijderd

Bug fix

Formulier begint direct bovenaan zonder grote lege ruimte

Wat was het probleem

justify-content: center + margin-top: 64px op de form-card creëerde een grote lege witte ruimte boven BEDRIJFSPORTAAL.

Hoe het is opgelost

justify-content: flex-start + margin-top: 16px op mobiel zodat de content direct na de padding begint.

v2.39
vrijdag 22 mei 2026
01:56

Login mobiel: SMT-logo niet meer zichtbaar bij openen

Bug fix

Mobiel-logo (lp-form-mobile-logo) verborgen op mobiel/tablet

Wat was het probleem

Het SMT-logo flikkerde 1 seconde bij het openen van de loginpagina op mobiel, omdat lp-form-mobile-logo in de media query op display: flex stond.

Hoe het is opgelost

display: none gezet op lp-form-mobile-logo in de mobiele breakpoint — het logo is niet nodig nu de linkerkolom ook verborgen is.

v2.38
vrijdag 22 mei 2026
01:51

Login mobiel: witte balk onderaan verwijderd

Bug fix

Login-card vult nu altijd de volledige schermhoogte op mobiel

Wat was het probleem

Zonder de linkerkolom was de card korter dan het scherm, waardoor de witte body-achtergrond zichtbaar was onder de card.

Hoe het is opgelost

min-height: calc(100dvh - 32px) op de lp-shell zodat de card altijd tot de onderkant doorloopt.

v2.37
vrijdag 22 mei 2026
01:43

Inlogpagina mobiel: linkerkolom verborgen, alleen formulier zichtbaar

Polish

Branding-kolom verdwijnt op mobiel en tablet — alleen het inlogformulier getoond

Wat het nu doet

display: none op .lp-brand bij max-width: 980px zodat het formulier de volledige breedte krijgt.

v2.36
vrijdag 22 mei 2026
01:41

Registratie: wachtwoord-toggle gebruikt SVG-icoon i.p.v. emoji

Polish

Oog-icoon in wachtwoordveld is nu een consistente SVG op alle apparaten

Wat was het probleem

De emoji 👁/🙈 rendert per platform anders en oogt onprofessioneel.

Hoe het is opgelost

Vervangen door een getekende SVG (eye / eye-off) die op desktop, tablet en mobiel identiek eruitziet.

v2.35
vrijdag 22 mei 2026
01:39

Stats bijgewerkt: 300+ agencies en 2.500+ gebruikers

Polish

Metrics op homepage aangepast

Wat het nu doet

100+ Agencies → 300+, 1.000+ Gebruikers → 2.500+

v2.34
vrijdag 22 mei 2026
01:35

Support widget helpcentrum: geen zwarte blokken meer bij laden

Bug fix

Skeleton-laadblokjes en artikelen altijd licht gekleurd op de landing page

Wat was het probleem

Gebruikers met een dark-theme cookie zagen zwarte rechthoeken tijdens het laden van het helpcentrum, omdat de skeletons var(--bg-mid) en var(--bg-elev) gebruiken die in dark-mode donker zijn.

Hoe het is opgelost

Expliciete lichte kleuren via html[data-theme="dark"] .support-panel--landing overrides voor skeletons, artikelen, zoekbalk en categorie-labels.

v2.33
vrijdag 22 mei 2026
01:32

Nav mobiel: Inloggen-knop en NL-knop exact even hoog

Polish

Beide nav-knoppen op mobiel krijgen een vaste height: 36px

Wat was het probleem

Font-size en line-height verschilden tussen de twee knoppen waardoor ze nooit exact even hoog waren.

Hoe het is opgelost

Expliciete height: 36px op beide knoppen zodat ze altijd identiek van hoogte zijn, ongeacht font-rendering.

v2.32
vrijdag 22 mei 2026
01:28

CTA-checkmarks verticaal gecentreerd naast de tekst

Bug fix

Checkmarks stonden te laag naast de bullets in de CTA-sectie op mobiel

Wat was het probleem

Oude mobiele overrides (margin-top: 2px + align-items: flex-start) waren bedoeld voor een enkelvoudige lange tekstregel en duwden de checkmarks nu onnodig omlaag.

Hoe het is opgelost

align-items: center hersteld en margin-top: 0 zodat checkmarks perfect verticaal gecentreerd staan naast elke bullet.

v2.31
vrijdag 22 mei 2026
01:27

Support-tooltip: tekst volledig zichtbaar + sluitknop perfect rond

Bug fix

Tekst in support-tooltip niet meer afgekapt door de sluitknop

Wat was het probleem

De absoluut gepositioneerde sluitknop viel over de bodytekst heen, waardoor "Ons supportteam staat voor je klaar" aan het einde werd afgekapt.

Hoe het is opgelost

Tooltip breder (272px) en extra padding-right (36px) zodat de tekst nooit onder de knop verdwijnt.

Bug fix

Sluitknop tooltip is nu een perfect rondje op iOS Safari

Wat was het probleem

iOS Safari renderde de sluitknop als een ovaal/ei-vorm.

Hoe het is opgelost

aspect-ratio: 1/1 + min-width/min-height + -webkit-appearance: none toegevoegd.

v2.30
vrijdag 22 mei 2026
01:20

Hero gradient-tekst altijd leesbaar op donkere achtergrond

Polish

Animerende gradientkleuren van hero-titel vervangen door lichtere tinten

Wat was het probleem

De animatie schoof door naar #2563eb (diepblauw) wat op de donkere navy achtergrond te weinig contrast had en onleesbaar werd.

Hoe het is opgelost

Kleuren vervangen door #5eead4 → #22d3ee → #7dd3fc — lichte teal/cyan tinten die altijd voldoende contrast houden op de donkere hero.

v2.29
vrijdag 22 mei 2026
01:18

CTA-sectie: checkmark-bullets correct uitgelijnd op mobiel

Bug fix

Drie losse bullets onder de CTA-knoppen i.p.v. één lange zin

Wat was het probleem

De lange tekst "Geen creditcard · 14 dagen full access · Opzeggen wanneer je wilt" als inline-flex met één checkmark brak raar af op mobiel.

Hoe het is opgelost

Opgesplitst in 3 afzonderlijke items elk met eigen check-icoon en white-space: nowrap, zodat ze netjes wrappen zonder de checkmark te splitsen van de tekst.

v2.28
vrijdag 22 mei 2026
01:14

Nav mobiel: NL-knop even slank als de CTA-knop

Polish

NL taalknop in de mobiele nav heeft nu dezelfde hoogte als "Inloggen / Registreren"

Wat was het probleem

De NL-knop had een vaste height: 34px en zag er daardoor ronder/ovaler uit dan de CTA-knop.

Hoe het is opgelost

height: auto + zelfde top/bottom padding als de CTA-knop zodat beide knoppen even slank ogen.

v2.27
vrijdag 22 mei 2026
01:07

Privacyverklaring: tabel scrolt correct op mobiel

Bug fix

Tabel op privacybeleid-pagina scrollt horizontaal op mobiel

Wat was het probleem

`display: block; overflow-x: auto` op een <table> werkt niet betrouwbaar in mobile Safari — de pagina scrollde mee in plaats van de tabel.

Hoe het is opgelost

Tabel verpakt in een <div class="sn-table-scroll"> wrapper met overflow-x: auto; de tabel zelf heeft min-width: 480px zodat hij altijd leesbaar blijft.

v2.26
vrijdag 22 mei 2026
01:03

Blog carousel: swipe op mobiel + ronde hoeken zichtbaar

Nieuwe functie

Swipe links/rechts om categorie te wisselen op mobiel

Wat het nu doet

onTouchStart/onTouchEnd handlers toegevoegd aan de stage; swipe >30px schakelt naar volgende of vorige categorie.

Bug fix

Ronde hoeken op carousel-kaarten nu zichtbaar op iOS/mobiel

Wat was het probleem

overflow: hidden op de .sn-bc-stage knipt border-radius van 3D-getransformeerde kaarten weg in Safari.

Hoe het is opgelost

overflow: hidden van stage verwijderd (blijft op section); -webkit-transform: translateZ(0) forceert GPU-compositing voor correcte border-radius.

v2.25
vrijdag 22 mei 2026
00:59

Support chat: witte achtergrond ook bij dark-mode cookie op landing page

Bug fix

Chat-widget blijft wit op landing page ook als dark-theme cookie actief is

Wat was het probleem

De root layout zet data-theme vanuit een cookie. Gebruikers die het dashboard in dark-mode gebruikten, zagen de chat ook donker op de landing page.

Hoe het is opgelost

support-panel--landing klasse toegevoegd met expliciete wit-override voor html[data-theme="dark"], inclusief tabs, berichtbellen en scrollbar.

v2.24
vrijdag 22 mei 2026
00:58

Registratiepagina: tarieven gecorrigeerd naar 2 schijven

Bug fix

Prijstiers gecorrigeerd: EUR €50/€40, USD $60/$50

Wat was het probleem

Er waren ten onrechte 3 EUR-schijven (€70/€50/€40) in plaats van 2.

Hoe het is opgelost

1–20 klanten: €50/klant (of $60/client); 21+ klanten: €40/klant (of $50/client).

v2.23
vrijdag 22 mei 2026
00:57

"Klaar om te schalen?" tekst verticaal gecentreerd in de pill

Polish

CTA-eyebrow tekst staat nu midden in de pill

Wat was het probleem

Zonder expliciete line-height gebruikte de browser ~1.4, waardoor de tekst te hoog in de badge hing.

Hoe het is opgelost

line-height: 1 + asymmetrische padding (7px boven, 6px onder) zodat de tekst optisch gecentreerd staat.

v2.22
vrijdag 22 mei 2026
00:50

"SENLY" kolomkop niet meer afgeknipt op vergelijkpagina mobiel

Bug fix

"SENLY" in tabelkop volledig zichtbaar op smalle schermen

Wat was het probleem

Bij ≤560px/420px kregen de kolomkoppen 18px padding terwijl de kolom maar 70px/58px breed was — "SENLY" viel buiten de kolom en werd door overflow:hidden afgeknipt.

Hoe het is opgelost

Kleinere padding + letter-spacing + font-size voor .sn-vs-row-head span op smalle breakpoints.

v2.21
vrijdag 22 mei 2026
00:46

Support chat wit, close-knop rond, blog overflow en privacy-tabel gefixed

Bug fix

Support chatwidget toont witte achtergrond (niet meer zwart op landing)

Wat was het probleem

Op de landing page (geen dark-theme) viel de widget terug op de donkere standaard (#181b1f).

Hoe het is opgelost

Wit als standaard gesteld; dark-mode override via html[data-theme="dark"]. Tabs, berichtbellen en scrollbar meegenomen.

Bug fix

Sluit-knop support chat is nu een perfecte cirkel

Wat het nu doet

padding: 0 + min-width/min-height + aspect-ratio: 1/1 zodat de knop niet meer ovaal wordt door flex-stretching op iOS Safari.

Bug fix

Blog hero-titel loopt niet meer buiten de pagina

Wat was het probleem

whiteSpace: nowrap op de h1 zorgde dat tekst op mobiel uitliep.

Hoe het is opgelost

whiteSpace: nowrap verwijderd; tekst wrrapt nu normaal.

Bug fix

Blog categorie-carousel overflow op mobiel opgelost

Wat het nu doet

overflow: hidden op .sn-bc-section en .sn-bc-stage; ronde hoeken (16px) op kaartjes hersteld.

Bug fix

Privacy-tabel scrollt horizontaal op mobiel i.p.v. overloop

Wat het nu doet

display: block + overflow-x: auto op .sn-pg-prose table zodat de tabel niet buiten de pagina valt.

v2.20
vrijdag 22 mei 2026
00:39

Registratiepagina: volume-tiers, valuta per regio en "Terug" wit

Nieuwe functie

Drie EUR-tariefschijven zichtbaar op registratiepagina

Wat was het probleem

Alleen het €70-tarief was zichtbaar; €50 (11-20 klanten) en €40 (21+) ontbraken.

Hoe het is opgelost

Tier-kaartjes toegevoegd die actief oplichten op basis van de slider. Berekening aangepast naar drie schijven (€70 / €50 / €40).

Nieuwe functie

USD-prijzen voor Engelstalige bezoekers ($60 / $50)

Wat het nu doet

useLanguage locale gebruikt: EN → USD ($60 basis, $50 bij 21+), overige talen → EUR.

Bug fix

"← Terug" knop nu wit op de donkere achtergrond

Wat was het probleem

Knop had kleur #475569 (donkergrijs) wat onleesbaar was tegen de donkere gradient-achtergrond.

Hoe het is opgelost

Kleur gewijzigd naar rgba(255,255,255,0.85) zodat hij zichtbaar is op de donkere achtergrond.

Polish

"Inloggen / Registreren" terug in nav op mobiel

Wat het nu doet

Knop was verborgen op ≤980px; nu zichtbaar met compactere padding (9px 13px) zodat [S Senly] + [Inloggen] + [NL] naast elkaar passen.

v2.19
vrijdag 22 mei 2026
00:34

CTA-sectie mobiel gefixed: eyebrow centrering, checkmark en bureau-scan popup

Bug fix

"Klaar om te schalen?" nu gecentreerd op mobiel

Wat was het probleem

Eyebrow-badge stond niet gecentreerd en had te veel ruimte erboven op kleine schermen.

Hoe het is opgelost

display: block + margin: auto + width: fit-content op .sn-cta-eyebrow; padding-top van de card teruggebracht van 48px naar 36px.

Bug fix

Checkmark naast "Geen creditcard" niet meer langwerpig of verschoven

Wat was het probleem

Icoon rekte mee met de gewrapte tekst in het flex-item en stond niet op de juiste positie.

Hoe het is opgelost

align-items: flex-start op .sn-cta-foot + flex-shrink: 0 en margin-top: 2px op .sn-cta-check.

Polish

Bureau-scan popup verborgen op mobiel

Wat was het probleem

De bureau-scan popup overlapte de support-chat widget op schermen ≤768px.

Hoe het is opgelost

display: none op .optquiz-wrap via 768px media query.

v2.18
vrijdag 22 mei 2026
00:26

"Senly" terug in nav + NL-knop netjes gecentreerd

Polish

"Senly" tekst zichtbaar naast logo op mobiel

Wat was het probleem

"Senly" was verborgen op mobiel zodat de CTA en NL zouden passen, maar de gebruiker wil het logo-woord zien.

Hoe het is opgelost

CTA "Inloggen / Registreren" verborgen in de nav op mobiel (≤980px) — de loginknop zit al in de hero zelf. Zo past [S Senly] + [NL] netjes gecentreerd.

Polish

"NL" netjes gecentreerd in de taalknop

Wat het nu doet

Asymmetrische padding (0 9px 0 12px) vervangen door symmetrisch (0 10px) + justify-content: center zodat NL + chevron visueel gecentreerd staan.

v2.17
donderdag 21 mei 2026
16:50

Nav-items gecentreerd op mobiel

Polish

Logo + CTA + NL staan nu gecentreerd in de nav op mobiel

Wat was het probleem

Op mobiel stond het logo uiterst links en de twee actie-knoppen uiterst rechts (justify-content: space-between met een lege tussenruimte doordat de nav-links verborgen zijn).

Hoe het is opgelost

Nav-inner omgezet naar justify-content: center op ≤980px. Logo-tekst "Senly" verborgen zodat alleen het S-icoon toont. CTA-knop compacter (13px, kleinere padding). De drie items staan nu als één gecentreerde groep.

v2.16
donderdag 21 mei 2026
16:21

Slider-indicator als streepje + CTA-tekst op één regel

Polish

Actieve slide-indicator is nu een dun gekleurd streepje

Wat was het probleem

De actieve dot was een dik ovaal bolletje (8px hoog, 28px breed) — te opvallend en niet passend bij het design.

Hoe het is opgelost

Alle dots nu 3px hoog zodat het dunne streepjes zijn. Actief streepje is 32px breed met gradient, inactief 20px lichtgrijs.

Bug fix

"Begin met één." breekt niet meer over twee regels op mobiel

Wat het nu doet

white-space: nowrap toegevoegd op de em-tag zodat "Begin met één." altijd op één regel blijft.

v2.15
donderdag 21 mei 2026
16:19

Blauwe hoekrandjes hero-kaart opgelost op iOS Safari

Bug fix

Teal/blauwe glitch in hoeken van hero-sectie op mobiel

Wat was het probleem

iOS Safari clipt overflow:hidden + border-radius niet betrouwbaar voor z-index:-1 elementen. De orb-glows lekten door de afgeronde hoeken van de hero-kaart.

Hoe het is opgelost

-webkit-mask-image toegevoegd op de hero om correcte GPU-compositing te forceren. Tevens bg-inset van -80px naar 0 gezet zodat orbs niet boven de kaartgrens uitsteken.

v2.14
donderdag 21 mei 2026
16:04

Hero-sectie heeft nu witte rand aan alle kanten op mobiel

Polish

Hero-kaart toont nu rondom witruimte op mobiel

Wat was het probleem

De hero-sectie had margin: 14px 14px 0 — geen ondermarge — waardoor de kaart onderaan doorliep tot de rand van het scherm zonder witte rand.

Hoe het is opgelost

Ondermarge toegevoegd (margin: 14px aan alle kanten) en bottom padding verkleind van 90px naar 48px op ≤768px zodat de kaart mooi als een floating card binnen het scherm valt.

v2.13
donderdag 21 mei 2026
15:07

Hero-titel op homepage groter en breed op mobiel

Bug fix

Hero-titel stond op 5+ regels op mobiel — nu exact 2 regels

Wat was het probleem

De SVG-underline binnen de gradient-span had display:block en width:100%, waardoor de inline-block span de volledige containerbreedte innam en "voor" naar een eigen regel werd gedwongen.

Hoe het is opgelost

SVG-underline position:absolute gemaakt op ≤768px; gradient-span krijgt position:relative en padding-bottom:20px zodat de underline in de juiste positie blijft zonder de tekstflow te verstoren.

Polish

Hero-titel font-size vergroot op mobiel (28px)

Wat was het probleem

Op mobiel was de titel (18px) veel te klein ten opzichte van de beschrijvingstekst eronder — de regels vulden maar 60% van de containerbreedte.

Hoe het is opgelost

Font-size verhoogd naar clamp(28px, 7.5vw, 56px) zodat de langste regel nagenoeg rand-tot-rand vult, passend bij de rest van de hero.

v2.12
donderdag 21 mei 2026
14:09

Volledige mobiel- en tablet-optimalisatie voor alle publieke pagina's

Polish

Responsive breakpoints toegevoegd aan alle publieke pagina's

Wat was het probleem

Sub-pagina's zoals integraties, partners, vergelijk, contact, FAQ en helpcentrum hadden weinig of geen tablet-/mobielstijlen.

Hoe het is opgelost

Tablet (768px) en mobiel (480px) breakpoints toegevoegd aan pages.css, partners.css, integraties.css, vergelijk.css, contact.css, faq.css en helpcentrum.css. Grids stapelen correct, padding schaalt mee, CTA-buttons worden vol-breed op klein scherm.

Bug fix

integraties.css had nul media queries — volledig opgelost

Wat het nu doet

Platform-knoppen schalen nu mee op mobiel en gaan op <420px vol-breed.

Polish

Nav en footer verfijnd op klein scherm

Wat het nu doet

Nav-inner krijgt minder marge en padding op <480px. Footer-bottom wordt gecentreerd gestapeld op <480px.

Bug fix

Partners: "featured" tier-card offset verwijderd op mobiel

Wat was het probleem

De translateY(-8px) op de featured commissie-kaart gaf een vreemde layout als de grid naar 1-kolom stapelt.

Hoe het is opgelost

Offset uitgeschakeld op ≤768px, hover-animatie blijft actief.

v2.11
donderdag 21 mei 2026
13:55

Grote SEO- & GEO-verbeterslag voor maximale vindbaarheid

Nieuwe functie

Dynamische, on-brand social-share afbeelding (OG-image)

Wat was het probleem

De gerefereerde og-image.png ontbrak, waardoor previews op LinkedIn, X, WhatsApp en in AI-tools leeg/kapot waren.

Hoe het is opgelost

Een automatisch gegenereerde OG-afbeelding (1200×630) toegevoegd voor de hele site — donker-teal met logo, kop en CTA. Geldt als fallback voor elke pagina; blogartikelen gebruiken hun eigen thumbnail.

Nieuwe functie

Structured data (schema.org) op alle publieke pagina's

Wat het nu doet

BreadcrumbList op elke sub-pagina; Organization + ContactPoint + adres op /contact; AboutPage op /over-ons; CollectionPage + ItemList van alle integraties op /integraties; FAQPage op /helpcentrum en /faq; Blog + BlogPosting op /blog en artikelen (met juiste afbeelding, sectie en woordtelling). Helpt Google-rich-results én AI-engines.

Polish

Metadata compleet gemaakt

Wat het nu doet

Unieke, keyword-rijke titels/descriptions, canonical en OG/twitter op /changelog, /contact en /security toegevoegd; blog-thumbnails als alt-tekst en als OG-afbeelding per artikel.

Bug fix

robots.txt betrouwbaar gemaakt

Wat was het probleem

De dynamische robots-route gaf in bepaalde gevallen een 500-fout.

Hoe het is opgelost

Vervangen door een statische, AI-crawler-bewuste robots.txt met het juiste sitemap-domein (senly.io) — altijd bereikbaar voor zoekmachines en AI-bots.

v2.10
donderdag 21 mei 2026
13:35

Wit vlak achter de CRM-zoekbalk weg

Bug fix

CRM-contactenzoekbalk toonde een wit kader achter de tekst

Wat was het probleem

In het lichte thema kreeg het zoekveld een witte achtergrond en rand van de globale formulier-stijl, waardoor er een wit blokje achter de placeholder-tekst stond binnen de grijze zoekbalk.

Hoe het is opgelost

Het zoekveld is nu transparant zonder rand, zodat het netjes in de grijze pill valt.

v2.09
donderdag 21 mei 2026
13:30

SEO & GEO: beter vindbaar in Google én AI-chats

Bug fix

Crawlers konden robots.txt en sitemap niet lezen

Wat was het probleem

De middleware redirectte /robots.txt, /sitemap.xml, /llms.txt en /og-image.png naar /login, waardoor zoekmachines en AI-bots ze niet konden ophalen.

Hoe het is opgelost

Deze SEO-bestanden uitgesloten van de middleware zodat ze publiek (text/plain en XML) geserveerd worden. Ook de oude statische robots.txt met verkeerd sitemap-domein verwijderd.

Nieuwe functie

llms.txt toegevoegd voor vindbaarheid in AI-chats (GEO)

Wat het nu doet

Gestructureerd /llms.txt-bestand met een feitelijke beschrijving van Senly: wat het is, voor wie, functies, prijzen, reputatie en vergelijking met losse tools/concurrenten — zodat ChatGPT, Perplexity en Claude Senly correct kunnen citeren.

Nieuwe functie

Rijkere structured data (schema.org)

Wat het nu doet

SoftwareApplication verrijkt met aggregateRating (4.9/5, 120 reviews), featureList, prijs-offers en talen. Vergelijkingspagina kreeg BreadcrumbList en een machine-leesbare WebPage met alle genoemde concurrenten.

Polish

Sitemap compleet gemaakt

Wat het nu doet

Alle publieke pagina's toegevoegd aan de sitemap (vergelijk, integraties, over-ons, faq, security, helpcentrum, contact) met passende prioriteiten.

v2.08
donderdag 21 mei 2026
13:24

Eén consistente footer op alle pagina’s

Polish

Volledige footer (Product · Hulpmiddelen · Bedrijf) nu op elke pagina

Wat was het probleem

De homepage had de rijke 3-koloms footer, maar de sub-pagina’s (FAQ, Integraties, Vergelijk, Helpcentrum, Contact, Over ons, Blog, Security en de juridische pagina’s) toonden een simpele, afwijkende footer.

Hoe het is opgelost

Eén gedeelde SiteFooter-component gebouwd en op alle pagina’s toegepast — identieke kolommen, links en bottom-bar, met taalondersteuning en sectie-links die vanaf sub-pagina’s naar de homepage verwijzen.

v2.07
donderdag 21 mei 2026
13:21

Aanbevolen logo-afmetingen bij meetings-branding

Polish

Hint met aanbevolen logo-formaat onder de upload-knop

Wat was het probleem

Bij het uploaden van een logo voor de boekingspagina was niet duidelijk welk formaat het beste werkt.

Hoe het is opgelost

Hint toegevoegd: liggend logo van ca. 280 × 80 px (PNG met transparante achtergrond), wordt getoond op max. 56 px hoog.

v2.06
donderdag 21 mei 2026
13:14

Taalkeuze reist nu mee tussen homepage en sub-pagina’s

Bug fix

Taalvoorkeur werd niet onthouden tussen homepage en sub-pagina’s

Wat was het probleem

De homepage sloeg de taal op onder “senly-lang” en de sub-pagina’s onder “senly_lang” — twee verschillende sleutels, dus de keuze ging verloren bij navigeren.

Hoe het is opgelost

Beide gebruiken nu dezelfde sleutel (senly-lang). Een taalkeuze blijft overal behouden.

v2.05
donderdag 21 mei 2026
13:13

Login: wit kaartje op donkere hero-achtergrond

Polish

Login- en signup-kaartje weer wit, achtergrond blijft donker-teal

Wat was het probleem

Het volledig donkere inlogscherm was te donker; gevraagd werd een wit kaartje met behoud van de donkere achtergrond.

Hoe het is opgelost

Auth-pagina's teruggezet naar het lichte thema (wit kaartje, donkere tekst) terwijl de pagina-achtergrond eromheen via CSS de donkere teal hero-gradient behoudt. Het kaartje is solide wit met een diepe schaduw.

v2.04
donderdag 21 mei 2026
13:10

Taalkiezer op sub-pagina’s is nu ook een uitklapmenu

Polish

Taalkiezer in de publieke nav gelijkgetrokken met de homepage

Wat was het probleem

Op sub-pagina’s stonden NL/EN/DE/FR nog los naast elkaar, terwijl de homepage al een nette dropdown had.

Hoe het is opgelost

Compacte trigger met de huidige taal + chevron; klik klapt het menu uit. Sluit bij keuze, klik-buiten of Escape — identiek aan de homepage.

v2.03
donderdag 21 mei 2026
13:07

Navigatie op sub-pagina’s gelijkgetrokken met de homepage

Polish

Publieke nav (op alle sub-pagina’s) toont nu Platform · Opties · Onboarding · Concurrentie · Prijzen

Wat was het probleem

De gedeelde PublicNav had nog de oude menu-items (Platform met dropdown-pijltje, Blog, Partners) en week af van de bijgewerkte homepage-navigatie.

Hoe het is opgelost

PublicNav gelijkgetrokken met de homepage: dropdown-pijltje weg, Blog en Partners eruit (staan in de footer), en de items linken naar de juiste homepage-secties (#platform, #opties, #onboarding, #vergelijking, #prijzen).

v2.02
donderdag 21 mei 2026
13:03

Drie nieuwe publieke pagina’s: Integraties, Vergelijk en Helpcentrum

Nieuwe functie

Integraties-pagina (/integraties)

Wat het nu doet

Overzicht van alle koppelingen: social platforms (Instagram, TikTok, LinkedIn, Facebook) plus 8 categorieën (Metricool, Canva, Google Drive, Dropbox, GoHighLevel, Stripe, IMAP/SMTP, Gemini) en een binnenkort-lijst. Gegrond op de echte integratie-registry.

Nieuwe functie

Vergelijk-pagina (/vergelijk)

Wat het nu doet

Senly versus de losse-tools-stack: kostenoverzicht (€1.525/mnd → vanaf €500) met besparing, plus een functievergelijking. Conversiegericht en SEO-vriendelijk.

Nieuwe functie

Publiek Helpcentrum (/helpcentrum)

Wat het nu doet

Doorzoekbaar helpcentrum met alle 270 support-artikelen in 20 categorieën, met categorie-overzicht en accordion. Hergebruikt de bestaande in-app artikelen.

Polish

Footer geherstructureerd naar Product · Hulpmiddelen · Bedrijf

Wat het nu doet

De nieuwe pagina’s toegevoegd aan de footer en de publieke route-allowlist in de middleware.

v2.01
donderdag 21 mei 2026
13:02

"Onthoud mij"-optie op de login

Nieuwe functie

Ingelogd blijven via "Onthoud mij"

Wat was het probleem

Er was geen keuze om wel of niet ingelogd te blijven na het inloggen.

Hoe het is opgelost

Checkbox "Onthoud mij" toegevoegd (standaard aan). Aangevinkt blijf je 30 dagen ingelogd; uitgevinkt verloopt de sessie na 1 dag. De keuze stuurt de geldigheidsduur van de JWT via een variabele maxAge. Het wachtwoord zelf wordt nooit opgeslagen — dat regelt de browser-wachtwoordmanager.

v2.00
donderdag 21 mei 2026
04:47

Zwarte rand bovenaan publieke pagina's verholpen

Bug fix

Bovenrand van publieke pagina's nu licht i.p.v. donker

Wat was het probleem

Door margin-collapse ontsnapte de 14px bovenmarge van de hero naar de body, waardoor er een donkere rand boven de hero verscheen terwijl links/rechts licht waren.

Hoe het is opgelost

De 14px verplaatst van de hero-marge naar padding op de paginacontainer (.sn-pg), zodat de lichte achtergrond ook bovenaan doorloopt. Geldt voor alle publieke pagina's (blog, changelog, prijzen, over-ons, etc.).

v1.99
donderdag 21 mei 2026
04:42

FAQ-pagina toegevoegd + footer-links gefixt

Nieuwe functie

Nieuwe FAQ-pagina (/faq) met 18 vragen in 5 categorieën

Wat was het probleem

Bezoekers hadden geen centrale plek voor veelgestelde vragen over prijzen, functies, onboarding en beveiliging.

Hoe het is opgelost

Premium FAQ-pagina met uitklapbare accordion, gegroepeerd per thema, inclusief FAQ-schema (rich results in Google). Toegevoegd aan de footer en de publieke route-allowlist.

Bug fix

Footer-links "Over ons" en "Contact" wezen nergens heen

Wat was het probleem

Beide linkten naar "#" in plaats van de bestaande pagina's.

Hoe het is opgelost

Gekoppeld aan /over-ons en /contact. FAQ-link toegevoegd in de landing- en sub-pagina-footers.

v1.98
donderdag 21 mei 2026
04:38

Login dichter bij de homepage-hero: gradient-kop en grid

Polish

Login-accentkop en achtergrondgrid in homepage-stijl

Wat was het probleem

De login miste de signatuur van de homepage-hero (gradient-kop en zichtbaar grid).

Hoe het is opgelost

De accent-tekst in de login-kop kreeg dezelfde teal→blauw gradient als de hero en het achtergrondgrid is verfijnd zichtbaarder gemaakt (zoals de hero), terwijl het geheel strak en zakelijk blijft.

v1.97
donderdag 21 mei 2026
04:32

Navigatielinks exact gecentreerd in de header

Polish

Menu-items staan nu in het midden van de navbar

Wat was het probleem

Met flex/space-between stonden de links iets links van het midden, afhankelijk van de breedte van logo en knoppen.

Hoe het is opgelost

Navbar omgezet naar een 3-koloms grid (1fr auto 1fr) zodat de links altijd exact gecentreerd staan, ongeacht de breedte van logo en actieknoppen.

v1.96
donderdag 21 mei 2026
04:29

Taalkiezer is nu een uitklapmenu

Polish

NL/EN/DE/FR samengevouwen tot een nette dropdown

Wat was het probleem

Alle vier de talen stonden los naast elkaar in de navbalk, wat ruimte innam en rommelig oogde.

Hoe het is opgelost

Compacte trigger met de huidige taal + chevron; klik klapt een dropdown uit met alle talen. Sluit bij keuze, klik-buiten of Escape, met vloeiende animatie.

v1.95
donderdag 21 mei 2026
04:27

Login-achtergrond opgelicht naar hero-kleur

Polish

Login minder donker, gelijk aan de homepage-hero

Wat was het probleem

De login was bijna zwart (#0a0e14) terwijl de homepage-hero juist door teal-radialen wordt opgelicht.

Hoe het is opgelost

Login-achtergrond vervangen door exact dezelfde teal/violet radiale gradient als de homepage-hero en de panelen lichter en tealer gemaakt (transparant glas met teal-rand), zodat de hero-kleur doorschijnt.

v1.94
donderdag 21 mei 2026
04:23

Login & signup in donkere homepage-stijl

Polish

Inlog- en registratiepagina sluiten visueel aan op de homepage

Wat was het probleem

De auth-pagina's stonden in een licht thema dat botste met de donkere homepage-hero.

Hoe het is opgelost

Login, signup en signup-success forceren nu het donkere thema (navy-teal hero-look met lichte tekst en teal accenten). De inlog-knop kreeg de homepage-gradient teal→cyan→blauw (#14b8a6 → #0891b2 → #2563eb).

v1.93
donderdag 21 mei 2026
04:22

Affiliate-link toegevoegd aan de footer

Polish

Affiliate (partnerprogramma) staat nu in de footer onder Bedrijf

Wat was het probleem

Na het verplaatsen van Partners uit de nav stond de affiliate-link nergens meer; alleen Blog stond al in de footer.

Hoe het is opgelost

Affiliate-link toegevoegd onder de kolom Bedrijf, verwijst naar /partners.

v1.92
donderdag 21 mei 2026
04:18

Navigatie wijst naar pagina-secties

Polish

Nieuwe nav: Platform, Opties, Onboarding, Concurrentie, Prijzen

Wat was het probleem

De nav had een dropdown-pijltje bij Platform en bevatte Blog en Partners, terwijl die in de footer thuishoren.

Hoe het is opgelost

Pijltje verwijderd, Blog en Partners uit de nav (blijven in footer). Elk item scrollt nu vloeiend naar de juiste sectie op de pagina, met offset zodat de navbalk de titel niet bedekt.

v1.91
donderdag 21 mei 2026
04:11

Teaser-ondertitel breekt netjes af

Polish

"werktempo en kwaliteitswinst" blijft samen op de tweede regel

Wat het nu doet

Non-breaking spaces toegevoegd zodat de woordgroep als blok naar de tweede regel zakt in plaats van halverwege af te breken.

v1.90
donderdag 21 mei 2026
04:11

High-end custom cursor in de hero

Polish

Senly-cursor met zachte glow, schaduw en vloeiende follow

Wat was het probleem

De custom cursor gebruikte mix-blend-mode multiply, waardoor het logo dof en nauwelijks zichtbaar werd op de donkere hero.

Hoe het is opgelost

Multiply verwijderd; logo krijgt nu een teal drop-shadow + glow-halo met subtiele pulse, volgt de muis vloeiend (lerp) en groeit met intensere glow boven knoppen en links.

v1.89
donderdag 21 mei 2026
04:06

Teaser-eyebrow dunner voor rustiger label

Polish

Eyebrow "Gratis bureau-scan · 2 min" van bold naar medium

Wat het nu doet

Fontgewicht van het eyebrow-label verlaagd van 700 naar 500 voor een fijnere, minder schreeuwerige uitstraling.

v1.88
donderdag 21 mei 2026
04:04

Teaser-titel iets dunner voor verfijndere look

Polish

Titel optimalisatietest-teaser van bold naar semibold

Wat het nu doet

Fontgewicht van de teaser-titel verlaagd van 700 naar 600 voor een iets fijnere, elegantere uitstraling.

v1.87
donderdag 21 mei 2026
04:02

Optimalisatietest: geloofwaardiger resultaten

Polish

Workflow getoond als snelheids-multiplier in plaats van percentage boven 100%

Wat was het probleem

Een score als "291% workflow optimalisatie" was niet uitlegbaar en kon ongeloofwaardig overkomen.

Hoe het is opgelost

Workflow wordt nu getoond als "tot 2,9× sneller werken" (1,2×–2,9×), wat intuïtiever en verdedigbaar is.

Polish

Kwaliteitsverbetering weer binnen een geloofwaardige 64–95%

Wat was het probleem

Percentages boven 100% voor kwaliteit hadden geen natuurlijke betekenis.

Hoe het is opgelost

Kwaliteitsverbetering loopt nu van 64% tot 95% met hoge ondergrens, zodat het hoog maar realistisch blijft.

Polish

Disclaimer toegevoegd onder de uitkomst

Wat was het probleem

De getallen konden als harde belofte worden gelezen.

Hoe het is opgelost

Toegevoegd: "Indicatieve schatting op basis van je antwoorden." onder de metrics.

v1.86
donderdag 21 mei 2026
04:01

Optimalisatietest-teaser: high-end design en kloppende belofte

Polish

Teaser-popup verfijnd naar premium uitstraling

Wat was het probleem

De teaser was een vlakke witte kaart en de ondertitel beloofde alleen uren besparing, terwijl de test meer toont.

Hoe het is opgelost

Premium herontwerp: subtiele gradient-kaart met teal accentlijn, eyebrow "Gratis bureau-scan · 2 min", solid teal-icoon, gelaagde schaduw en CTA met pijl-animatie. Ondertitel aangepast naar "ontdek je tijdwinst, werktempo en kwaliteitswinst" — passend bij de drie resultaten.

v1.85
donderdag 21 mei 2026
03:51

Cookiebanner blendt sterker met de hero-achtergrond

Polish

Translucentie cookiebanner verhoogd voor betere kleuraansluiting

Wat was het probleem

Het glaspaneel was nog net iets te dicht, waardoor de kleur afweek van de eerste sectie.

Hoe het is opgelost

Achtergrond transparanter (alpha ~0,48) en tealer gemaakt met een sterkere teal-gloed, zodat de hero meer doorschijnt en de banner vrijwel samenvalt met de sectie-achtergrond.

v1.84
donderdag 21 mei 2026
03:48

Optimalisatietest: bespaarde uren nu per klant per maand

Polish

Uitkomst toont uren bespaard per klant per maand

Wat was het probleem

De besparing stond op weekbasis, terwijl maandbasis aansprekender en gangbaarder is.

Hoe het is opgelost

Berekening omgezet naar maandbasis (weekwaarde × 4,33) en label aangepast naar "bespaard per klant / maand" (12–47u).

v1.83
donderdag 21 mei 2026
03:48

Cookiebanner: zwevend glaspaneel dat aansluit op de hero

Polish

Losse, zwevende cookiebanner met translucente teal-tint

Wat was het probleem

De banner zat vast als volle balk onderin en de achtergrondkleur week af van de eerste sectie.

Hoe het is opgelost

Omgezet naar een zwevend, gecentreerd kaartje met marges en afgeronde hoeken. Translucent navy-teal achtergrond met backdrop-blur laat de hero deels doorschijnen, zodat de kleuren vrijwel samenvallen met de sectie-achtergrond.

v1.82
donderdag 21 mei 2026
03:45

Optimalisatietest: scores tot ~300% en besparing per klant

Polish

Workflow-optimalisatie en kwaliteitsverbetering lopen op tot ~300%

Wat was het probleem

De percentages waren gemaximeerd rond 95%, wat de potentiële winst onderschatte.

Hoe het is opgelost

Scoringsgewichten verruimd: beide metrics lopen nu van ~115% tot ~300%, afhankelijk van de antwoorden.

Polish

Bespaarde uren nu duidelijk per klant per week

Wat was het probleem

Het label "bespaard per week" was dubbelzinnig over of het de hele agency of per klant betrof.

Hoe het is opgelost

Berekening en label aangepast naar uren bespaard per klant per week (3–11u), wat concreter en herkenbaarder is.

v1.81
donderdag 21 mei 2026
03:41

Cookiebalk-achtergrond afgestemd op de hero

Polish

Cookiebalk sluit kleurtechnisch aan op de homepage-hero

Wat was het probleem

De balk had eerst een paarsblauwe ondertoon en daarna een te donkere tint vergeleken met het navy-teal van de eerste sectie.

Hoe het is opgelost

Achtergrond afgestemd op de opgelichte onderkant van de hero: navy-teal verloop (#15222a → #0f1a21) met een subtiele teal-gloed linksonder, zodat de balk naadloos aansluit.

v1.79
donderdag 21 mei 2026
03:37

Optimalisatietest: altijd een sterk optimalisatie- en kwaliteitspotentieel

Polish

Workflow-optimalisatie en kwaliteitsverbetering tonen altijd een hoge score

Wat was het probleem

Bezoekers die al efficiënt werkten kregen lage uitkomsten (rond 20%), wat weinig motiveerde om Senly te proberen.

Hoe het is opgelost

Scoringsgewichten herijkt met een hoge ondergrens: de uitkomst ligt nu altijd tussen ~64% en ~95%, met variatie per antwoord zodat het persoonlijk blijft voelen.

v1.78
donderdag 21 mei 2026
03:34

Pulse-ring chat-knop: rustiger ritme met pauze

Polish

Gelijkmatig uitdijende pulse-ring met rustpauze

Wat was het probleem

De ring dijde gelijkmatig uit, maar startte te snel telkens opnieuw.

Hoe het is opgelost

Cyclus verlengd naar 5,8s: ring groeit gelijkmatig van 0 naar 24px in de eerste 62%, gevolgd door een korte rustpauze. Een nieuwe ring verschijnt nu elke 2,9s i.p.v. 2,1s.

v1.77
donderdag 21 mei 2026
03:34

Optimalisatietest: vloeiende teller-animatie op resultaten

Bug fix

Optellende getallen op het resultatenscherm tellen nu vloeiend

Wat was het probleem

De getallen telden schokkerig op via setInterval en flikkerden tussen heel getal en decimaal, wat de animatie liet glitchen.

Hoe het is opgelost

Teller herschreven met requestAnimationFrame en een ease-out cubic curve. Het aantal decimalen wordt vastgezet op basis van het einddoel, zodat de breedte niet meer verspringt.

v1.76
donderdag 21 mei 2026
03:33

Pulse-ring chat-knop groeit vloeiend en gelijkmatig

Polish

Gelijkmatig uitdijende pulse-ring

Wat was het probleem

De ring schoot eerst weg of bleef juist even hangen — geen rustige beweging.

Hoe het is opgelost

Eén lineaire keyframe laat de ring gelijkmatig van 0 naar 24px uitdijen terwijl hij vervaagt, over 4,2s. Geen hold, gewoon een kalm en constant tempo.

v1.75
donderdag 21 mei 2026
03:29

Optimalisatietest: premium design, 10 vragen en animaties

Polish

Quiz volledig herontworpen: fullscreen modal, 10 vragen, framer-motion animaties

Wat was het probleem

De eerste versie had slechts 3 vragen en een basic uiterlijk zonder premium uitstraling.

Hoe het is opgelost

10 vragen in logische volgorde (bureau, tijdsbesteding, tools, organisatie, klantrelatie, beveiliging, uitdaging), fullscreen blurred backdrop, teal category labels, gradient voortgangsbalk met glow-dot, optie-knoppen met radio-dot en hover-animatie, geselecteerde staat met highlight, geanimeerde Counter op resultatenkaarten en gradient CTA-knop.

v1.74
donderdag 21 mei 2026
03:29

Rustigere pulse-animatie rond de chat-knop

Polish

Pulserende ring achter chat-knop beweegt kalmer

Wat was het probleem

De ring pulseerde te snel (elke ~1,2s), wat onrustig oogde.

Hoe het is opgelost

Animatieduur verhoogd naar 4,2s met de tweede ring 2,1s verschoven en een zachtere ease-out. Resultaat: een rustige, vloeiende puls.

v1.73
donderdag 21 mei 2026
03:23

Chat-tooltip redesign: Senly-logo + converterende tekst

Polish

Tooltip boven chat-knop: modern kaartje met logo en supporttekst

Wat was het probleem

De oude tooltip was een platte tekstwolk zonder branding.

Hoe het is opgelost

Nieuw compact kaartje (248px) met Senly-logo, "Heb je een vraag?" als hoofdtitel en "Ons supportteam staat voor je klaar" als subtekst. Sluitknop rechtsboven, verschijnt 3 seconden na cookieconsent.

v1.72
donderdag 21 mei 2026
02:54

Optimalisatietest popup op de homepage

Nieuwe functie

Gratis optimalisatietest linksonderin na 10 seconden

Wat was het probleem

Bezoekers hadden geen directe manier om te zien hoeveel tijd en kwaliteitswinst Senly hen oplevert.

Hoe het is opgelost

Popup verschijnt na 10 seconden linksonder op de homepage. Drie vragen (klanten, rapportage-uren, inplan-uren) berekenen persoonlijke uitkomst: bespaard uren/week, workflow-optimalisatie % en kwaliteitsverbetering %. Eenmalig per sessie zichtbaar.

v1.71
donderdag 21 mei 2026
02:44

Cookiebanner toegevoegd (AVG/GDPR)

Nieuwe functie

Cookie-toestemmingsbanner op alle pagina's

Wat was het probleem

Bezoekers werden niet geïnformeerd over cookies — wettelijk verplicht onder de AVG.

Hoe het is opgelost

Vaste balk onderin met "Accepteren" en "Alleen noodzakelijk". Keuze opgeslagen in localStorage, verschijnt daarna niet meer.

v1.70
donderdag 21 mei 2026
02:43

Partnerpagina FAQ: alle vragen kloppen nu met de werkelijkheid

Polish

Nep melding en nep social proof verwijderd, €50 minimum toegevoegd

Wat was het probleem

FAQ vermeldde een uitbetalingsnotificatie (bestaat niet) en "veel van onze beste partners" (er zijn nog geen partners).

Hoe het is opgelost

€50 minimumdrempel toegevoegd aan uitbetaling-FAQ. Social proof vervangen door eerlijke tekst over eigen ervaring.

v1.69
donderdag 21 mei 2026
02:41

Support-widget: tekstwolkje boven chatknop

Polish

Tooltip "Heb je een vraag?" verschijnt na 3 seconden boven de chat-FAB

Wat het nu doet

Klikken opent het support-venster; wegklikken slaat de keuze op in sessionStorage.

v1.68
donderdag 21 mei 2026
02:40

Partnerpagina FAQ: marketingmaterialen eerlijk herschreven

Polish

FAQ-vraag over marketingmaterialen verwijderd en vervangen door eerlijke verwachting

Wat was het probleem

De FAQ beloofde een bibliotheek met banners en templates die niet bestaat.

Hoe het is opgelost

Vraag herschreven: partners hebben geen materialen nodig — een persoonlijke aanbeveling werkt beter.

v1.67
donderdag 21 mei 2026
02:18

Affiliate-commissie: 30% standaard, automatische upgrade naar 40% bij 10 actieve bureaus

Nieuwe functie

Commissie gecorrigeerd van 20% naar 30%

Wat was het probleem

Code had 20% hardcoded terwijl de partnerpagina 30% belooft.

Hoe het is opgelost

DEFAULT_COMMISSION_RATE aangepast naar 30%. Nieuwe referrals krijgen direct het juiste tarief.

Nieuwe functie

Automatische tier-upgrade naar 40% bij 10+ actieve bureaus

Wat was het probleem

Geen upgrade-logica aanwezig terwijl dit wel beloofd werd op de partnerpagina.

Hoe het is opgelost

Bij elke invoice-betaling wordt het aantal actieve referrals geteld. Zodra een affiliate 10+ actieve bureaus heeft, worden alle actieve referrals automatisch naar 40% opgewaardeerd voor toekomstige betalingen.

v1.66
donderdag 21 mei 2026
02:08

Partnerpagina: affiliate-teksten kloppen nu met hoe het systeem echt werkt

Polish

Onjuiste "90 dagen"-vermelding vervangen door correcte flow

Wat was het probleem

De partnerpagina vermeldde een cookie-venster van 90 dagen en een pijplijn-metafoor die niet overeenkwam met de werkelijkheid.

Hoe het is opgelost

Teksten herschreven: referral wordt direct gekoppeld bij aanmelding, na 2 weken proefperiode wordt het abonnement verlengd en geïncasseerd, uitbetaling volgt op de 1e van de volgende maand. Stat "90d Cookie-duur" vervangen door "14d Proefperiode klant".

v1.65
woensdag 20 mei 2026
23:22

Partnerprogramma: 30% standaard, 40% vanaf 10 actieve bureaus

Nieuwe functie

Nieuwe commissie-structuur: 30% standaard / 40% premium

Wat was het probleem

Oude tiered structuur (20%/25%/30%) was te complex en gaf nieuwe partners weinig urgentie.

Hoe het is opgelost

Vereenvoudigd naar 2 tiers: 30% levenslang vanaf de eerste verwijzing, automatisch 40% zodra je 10+ actieve bureaus hebt aangebracht.

Polish

Rekenmachine vereenvoudigd: alleen "Klanten per maand"

Wat het nu doet

Conversie-input verwijderd; één directe input (default 5) berekent maand-1, na-6-maanden en jaar-1 commissie met automatische tier-overgang.

Polish

/partners hero + stats afgestemd op nieuwe structuur

Wat het nu doet

Hero-tekst, stats-kaarten en tier-kop expliciet over 30%/40% levenslang.

v1.64
woensdag 20 mei 2026
22:52

Hotfix: LandingPage.tsx syntaxfouten opgelost — localhost werkt weer

Bug fix

Franse strings met apostrof in single quotes hersteld

Wat was het probleem

14 Franse vertaalstrings gebruikten single quotes rondom tekst met apostrof (bijv. d'outils), waardoor de SWC-parser crashte.

Hoe het is opgelost

Alle aangetaste strings omgezet naar double quotes. Tevens een ernstig geval op regel 2851 hersteld waarbij een it's de testimonial-string volledig verbrak.

v1.63
woensdag 20 mei 2026
22:45

Vier talen: NL, EN, DE, FR op landing en alle publieke pagina's

Nieuwe functie

Duits en Frans toegevoegd aan de landingspagina

Wat het nu doet

COPY-object uitgebreid met `de` en `fr` blokken; alle inline strings omgezet naar 4-talige lookups.

Nieuwe functie

Taal-toggle toont nu NL | EN | DE | FR

Wat het nu doet

Zowel de LandingPage-nav als de PublicNav (blog, partners, etc.) tonen alle vier talen. Voorkeur wordt opgeslagen in localStorage.

v1.62
woensdag 20 mei 2026
22:38

Blog-carousel CTA: scroll naar artikelen na categorienavigatie

Polish

"Bekijk X artikelen" scrollt automatisch naar de artikelrij

Wat het nu doet

useTransition detecteert wanneer de Next.js routertransitie klaar is, waarna scrollIntoView de gebruiker direct naar #artikelen brengt. router.push({ scroll: false }) voorkomt dat Next.js de scroll-positie reset.

v1.61
woensdag 20 mei 2026
22:24

Blog: categoriefilter werkt nu via carousel en URL

Nieuwe functie

Klikken op een categorie toont alleen de bijbehorende artikelen

Wat was het probleem

Klikken op een categorie in de carousel navigeerde naar ?cat=... maar de artikelen eronder werden niet gefilterd.

Hoe het is opgelost

page.tsx leest nu de ?cat= parameter en filtert BLOG_POSTS. Carousel-tabs navigeren via router.push en pre-selecteren de actieve kaart op basis van de URL.

v1.60
woensdag 20 mei 2026
22:18

Blog-carousel: passende HD-video's per categorie

Polish

Categoriekaarten voorzien van relevante 1080p achtergrondvideo's

Wat was het probleem

De blog-categoriecarousel toonde generieke stockvideo's zonder relatie met social media bureaus.

Hoe het is opgelost

Vijf gerichte Pexels-video's gezocht en gedownload (1920×1080): brainstormsessie (groei), presentatiemeeting (strategie), analytics-werkplek (tools), laptop-typende medewerker (AI) en kantoorteam met telefoons (social media).

v1.59
woensdag 20 mei 2026
22:15

PublicNav: witte tekst + NL/EN taal-toggle op alle publieke pagina's

Polish

Nav-links wit (niet-gescrolled) op alle publieke pagina's

Wat was het probleem

PublicNav gebruikte donkere tekst terwijl de hero-achtergrond donker is, waardoor het contrast slecht was.

Hoe het is opgelost

Witte tekst (rgba 72%) in standaard-staat, automatisch donker in pill-staat (gescrolled) — identiek aan landing.css.

Nieuwe functie

NL/EN taal-toggle in PublicNav

Wat het nu doet

Zelfde toggle als op de homepage, slaat voorkeur op in localStorage zodat het consistent blijft tussen pagina's.

v1.58
woensdag 20 mei 2026
22:11

Blog herontwerp: carousel + thumbnails; partners: rekenmachine + commissie-tiers

Nieuwe functie

3D categorie-carousel op /blog

Wat het nu doet

Vijf categorie-kaarten (groei, strategie, tools, AI, social-media) in een 3D-peek-carousel met video-loop, auto-rotate en tab-navigatie.

Polish

Blog-kaarten met afbeeldingen

Wat het nu doet

Elke blogpost krijgt een unieke stock-thumbnail; emoji-overlay bovenop de afbeelding voor herkenning per categorie.

Nieuwe functie

Commissie-rekenmachine op /partners

Wat het nu doet

Interactieve calculator die op basis van verwijzingen en conversieratio de verwachte maandcommissie berekent (maand 1, 6 maanden, jaar 1).

Polish

/partners pagina volledig herschreven

Wat het nu doet

Hero met statistieken, 3-stappen flow, commissie-tiers (Starter/Pro/Elite), FAQ-accordeons — aligned met landing-palette.

Infra

Middleware: /videos/* uitgesloten van auth-check

Wat het nu doet

Blog-categorie-videos stonden onterecht achter auth; toegevoegd aan de public-path matcher.

v1.57
woensdag 20 mei 2026
19:29

Public pages redesign + 3 nieuwe pagina's (over-ons, security, contact)

Nieuwe functie

Nieuwe /over-ons pagina

Wat het nu doet

Bedrijfsverhaal, missie en 6 productprincipes — premium hero + card-grid in landing-stijl.

Nieuwe functie

Nieuwe /security pagina

Wat het nu doet

6 security-pijlers, standaardenmatrix (AVG/TLS 1.3/AES-256-GCM/bcrypt/HSTS/CSP), Connector-architectuur in detail en disclosure-flow.

Nieuwe functie

Nieuwe /contact pagina + /api/contact endpoint

Wat het nu doet

Twee-koloms layout met sales/security/algemeen/telefoon-kanalen en een geprefetcht formulier. POST naar /api/contact stuurt via Resend met IP rate-limit (5/10min) en valideert email + bericht-lengte.

Polish

Blog, privacy en algemene voorwaarden: premium redesign

Wat was het probleem

Deze pagina's gebruikten eigen plain styling die niet matchte met de landing-look.

Hoe het is opgelost

Nieuwe gedeelde app/pages.css met sn-pg-hero (dark navy + grid + teal eyebrow), sn-pg-section, sn-pg-card en sn-pg-prose typografie. Alle drie pagina's wrappen nu hun content in deze consistente shell.

Infra

Middleware: /over-ons, /security, /contact als public paths

Wat het nu doet

isPublicPath uitgebreid zodat de nieuwe pagina's + de POST /api/contact route toegankelijk zijn zonder login.

v1.56
woensdag 20 mei 2026
18:55

Hero: dashboard-mockup achtergrond verwijderd

Polish

Schoner hero — geen vage dashboard-mockup meer op de achtergrond

Wat was het probleem

De .sn-hero-v2-dash-bg toonde een zwak doorschemerende "Goedemiddag"-dashboardafbeelding achter de hero, wat afleidde van de copy.

Hoe het is opgelost

CSS .sn-hero-v2-dash-bg op display:none gezet. Gradient mesh + grid + orbs blijven; visueel rustiger.

v1.55
woensdag 20 mei 2026
18:50

Landingpagina premium update — luxe testimonial carousel, locale-pricing & polish

Nieuwe functie

Luxe testimonial carousel met 10 reviews

Wat was het probleem

Reviews stonden in een statische 2×2 grid — weinig premium en moeilijk uit te breiden.

Hoe het is opgelost

3D peek-carousel met actieve card in het midden, vorige + volgende half zichtbaar aan de zijkant, auto-rotate elke 6s, pijlen + dot-navigatie, 10 reviews met diverse rollen.

Nieuwe functie

Locale-aware currency en pricing

Wat was het probleem

Alle bezoekers zagen euro’s, ongeacht herkomst.

Hoe het is opgelost

Automatische detectie via browser-timezone (Europe → EUR, America/Pacific/Australia → USD). Tool-chips, vergelijkingscards en pricing tiers (Growth €50/$60, Scale €40/$50) wisselen mee.

Polish

Browser chrome verwijderd uit slider-screenshots

Wat het nu doet

Teal Senly browser-bar uit 8 portal-screenshots (kalender, statistieken, trends, inbox, integraties, huisstijl, klanten, klantdetail) gecropped — clean look matchend met de Tools image.

Polish

KPI-cards: compact, aligned op hero-edges, met overloop-kleur

Wat het nu doet

4 metric cards verkort (113px hoog), exact aligned op hero-randen (14px), achtergrond-gradient die natuurlijk doorloopt vanuit de hero. Verplaatst tussen hero en Growth-calculator.

Polish

Final CTA + Marquee headline tweaks

Wat het nu doet

"Klaar om te schalen?" CTA-card kreeg dark-teal blueprint look, eyebrow optisch gecentreerd. "Krachtige extras." nu op 1 regel (head max-width 1100px). Marquees 4× duplicatie voor brede zoom-out viewports.

Bug fix

Dashboard page.tsx crash voor anonieme bezoekers

Wat was het probleem

(dashboard)/page.tsx gebruikte session! non-null assertion en crashte daardoor voor uitgelogde bezoekers op /; rendert zich naast LandingPage met mixed output.

Hoe het is opgelost

Vroege return bij null-session — layout serveert nu schoon de LandingPage.

Polish

Signup terug-knop gaat naar vorige pagina

Wat was het probleem

Knop op /signup ging altijd naar /login, ook als bezoeker vanaf landing of changelog kwam.

Hoe het is opgelost

router.back() met fallback naar /; tekst "Terug naar inloggen" → "Terug".

v1.54
woensdag 20 mei 2026
16:34

Hotfix: app/page.tsx verwijderd — route-conflict productie

Bug fix

HTTP 500 op productie / opgelost

Wat was het probleem

De nieuwe app/page.tsx conflicteerde met (dashboard)/page.tsx — beide route-resolvers naar /, runtime-crash in productie (build slaagde wel).

Hoe het is opgelost

app/page.tsx verwijderd; (dashboard)/layout.tsx serveert de LandingPage al voor anonieme bezoekers op /.

v1.53
woensdag 20 mei 2026
16:18

Landingpagina als publieke root + env sync-tooling

Nieuwe functie

Root-route / serveert nu expliciet de marketing-landingpage

Wat was het probleem

De / route ging via de (dashboard) route-group; ingelogde gebruikers zagen geen duidelijke dashboard-URL.

Hoe het is opgelost

Nieuwe app/page.tsx wrapper: ingelogde gebruikers worden naar /dashboard geredirect, anonieme bezoekers zien direct de landingpage.

Infra

Env sync-scripts toegevoegd

Wat het nu doet

scripts/sync-env-to-railway.sh en generate-prod-env.mjs voor consistente env-var-deploys naar Railway.

v1.52
woensdag 20 mei 2026
05:13

Calculator inputveld moderner: subtiele inset shadow + teal focus glow

Polish

sn-calc-input: licht grijze achtergrond, inset schaduw, border-radius 14px, teal focus ring

v1.51
woensdag 20 mei 2026
05:12

Metric cards: diepere dropshadow voor meer reliëf

Polish

sn-calc-mc box-shadow verdiept: drie lagen (dichtbij, mid, ver)

Wat het nu doet

0 1px 2px + 0 4px 12px + 0 16px 40px zodat de kaarten duidelijk boven de pagina lijken te zweven.

v1.50
woensdag 20 mei 2026
05:11

Teaser-cijfers: text-shadow verwijderd

Polish

text-shadow en filter van sn-calc-mc-teaser-num verwijderd

v1.49
woensdag 20 mei 2026
05:10

Metric teaser-cijfers groter en met gekleurde schaduw

Polish

sn-calc-mc-teaser-num: 42→58px, font-weight 800→900, text-shadow glow in eigen kleur

Wat het nu doet

text-shadow met currentColor zodat elk cijfer gloeit in zijn eigen accent (paars, teal, amber).

v1.48
woensdag 20 mei 2026
05:09

Metric card iconen exclusiever: groter, schaduw en glossy highlight

Polish

sn-calc-mc-icon: 44→52px, border-radius 12→16px, inset gloss + drop shadow

Wat het nu doet

Glanzende top-highlight (inset 0 1px 0 rgba wit), subtiele bottom-dimming en diepe drop shadow geven een premium iOS-icon gevoel.

v1.47
woensdag 20 mei 2026
05:00

Eyebrow pill voller wit en helderder

Polish

Eyebrow tekst puur wit, achtergrond en rand iets meer zichtbaar

Wat het nu doet

color #ffffff, background rgba(255,255,255,0.14), border rgba(255,255,255,0.28), dot glow sterker.

v1.46
woensdag 20 mei 2026
04:59

Hero bottom padding 90px, NL-taalknop wit op donkere nav

Polish

Hero padding-bottom ingesteld op 90px na fine-tuning

Polish

NL/EN taalknop wit gekleurd wanneer nav transparant op dark hero staat

Wat was het probleem

Actieve taaloptie (NL) was donker en niet zichtbaar op donkere hero achtergrond.

Hoe het is opgelost

Nav zonder .sn-nav-pill klasse krijgt witte tekst voor de taalknop.

v1.45
woensdag 20 mei 2026
04:56

Hero card langer gemaakt: bottom padding 48→100px

Polish

Hero padding-bottom clamp(48px,6vh,80px) → clamp(100px,13vh,160px)

Wat was het probleem

Onderkant van de hero card voelde te abrupt — weinig ruimte binnen de card onderaan waardoor de witruimte daaronder relatief groot leek.

Hoe het is opgelost

Bottom padding meer dan verdubbeld zodat de card visueel langer is en de proporties kloppen.

v1.44
woensdag 20 mei 2026
04:54

Hero primaire knop: wit met donkere tekst (high-end SaaS stijl)

Polish

Hero CTA van solid teal naar witte knop met donkere tekst

Wat was het probleem

Solid teal knop zag er goedkoop uit op de donkere hero achtergrond.

Hoe het is opgelost

Witte knop (#ffffff) met donkere tekst (#0a1a17) — stijl die premium SaaS-sites op donkere achtergronden gebruiken.

v1.43
woensdag 20 mei 2026
04:53

Hero eyebrow pill helderder + buttons passend bij donkere achtergrond

Polish

Eyebrow pill: witte tint in plaats van donker teal

Wat het nu doet

color rgba(255,255,255,0.88), background rgba(255,255,255,0.08), border rgba(255,255,255,0.18).

Polish

Hero CTA-buttons overschreven voor dark context

Wat het nu doet

Primaire knop: solid teal gradient. Secundaire knop: transparant/glass met witte rand en witte tekst.

v1.42
woensdag 20 mei 2026
04:52

Hero card bottom-margin verwijderd, .sn-calc terug op 64px

Polish

Hero margin: 14px → 14px 14px 0, .sn-calc margin-top 24px → 64px

Wat het nu doet

Bottom-margin van de hero card op 0 gezet zodat alleen de 64px sectie-ruimte van .sn-calc de overgang bepaalt.

v1.41
woensdag 20 mei 2026
04:50

Witruimte onder hero card verkleind

Polish

.sn-calc margin-top van 64px naar 24px

Wat was het probleem

GrowthCalculator had 64px bovenmarge waardoor er te veel witruimte zat tussen de hero card en de eerste sectie.

Hoe het is opgelost

margin-top: 64px → 24px.

v1.40
woensdag 20 mei 2026
04:48

Hero card witruimte gelijkgetrokken op alle vier kanten

Polish

Hero margin: 14px 14px 0 → margin: 14px (ook onderkant)

Wat was het probleem

Onderkant van de hero card had geen marge, waardoor de witruimte onderaan groter leek dan links/rechts/boven.

Hoe het is opgelost

margin: 14px op alle vier zijden zodat de ruimte rondom gelijk is.

v1.39
woensdag 20 mei 2026
04:46

Pagina-achtergrond volledig wit, ambient orbs verwijderd

Polish

bg-base naar #ffffff, sn-root ambient orbs uitgeschakeld

Wat was het probleem

Lichte blauwtint zichtbaar tussen hero-card en volgende sectie door de ambient gradient-orbs op .sn-root.

Hoe het is opgelost

--bg-base: #ffffff, .sn-root::before en ::after display:none gezet.

v1.38
woensdag 20 mei 2026
04:45

Hero als inset-kaart met ronde hoeken, gradient-bridge verwijderd

Polish

Hero sectie omgebouwd naar inset card-stijl (margin + border-radius)

Wat was het probleem

De hero was full-bleed en had een donker→wit gradient nodig als overgang naar de rest van de pagina.

Hoe het is opgelost

Hero krijgt margin: 14px en border-radius: 20px — zit nu als een afgeronde kaart op de lichte pagina-achtergrond. De gradient-bridge (sn-hero-bridge) is verwijderd, overgang is nu gewoon wit.

v1.37
woensdag 20 mei 2026
04:40

Homepage één versie verder terug (commit 8c0864b)

Infra

LandingPage.tsx en landing.css gereset naar commit 8c0864b

Wat het nu doet

Eén stap verder terug in de git-history, vóór de navy-hero aanpassing van dd61ca1.

v1.36
woensdag 20 mei 2026
04:34

Homepage gereset naar versie vóór groene header

Infra

LandingPage.tsx en landing.css terug naar navy-hero staat (commit dd61ca1)

Wat was het probleem

Na de reset naar 255d1ea had de hero nog een teal/groene achtergrond (#050d0b). Gebruiker wilde terug naar de versie vóór de groene tint, met de originele donker-navy hero (#050816).

Hoe het is opgelost

Beide bestanden hard gereset naar commit dd61ca1 — "Hero: donker navy achtergrond met één teal accent". Hero achtergrond is weer #050816 (navy) in plaats van #050d0b (groen-tint).

v1.35
woensdag 20 mei 2026
04:28

Homepage terug naar pre-vandaag staat — matchen met senly.io live versie

Infra

app/LandingPage.tsx en app/landing.css gereset naar commit 255d1ea

Wat was het probleem

Vandaag waren er meerdere visuele rondes geweest (light cream body, hero ook cream, pricing dividers, etc.) die de homepage steeds verder lieten afdrijven van wat live op senly.io stond. User wilde terug naar die referentie-versie

Hoe het is opgelost

Beide bestanden hard gereset naar de staat vlak voor "Light cream body" (commit 255d1ea — Maximale Framer Motion upgrade). 968 regels override-CSS verwijderd, 84 regels LandingPage.tsx-wijzigingen ongedaan. Hero heeft weer de dashboard-ghost + spotlight + custom cursor + grid + dark canvas. Body is weer dark/white ipv cream.

v1.34
woensdag 20 mei 2026
04:23

Pricing cards: horizontale dividers tussen secties (senly.io match)

Polish

Horizontale lijntjes tussen prijs/desc/features in alle pricing-cards

Wat was het probleem

Senly.io heeft subtiele horizontale divider-lijntjes die de secties binnen een card scheiden. Localhost miste die

Hoe het is opgelost

border-top met padding/margin op .sn-price-desc geeft de eerste divider (prijs → omschrijving). Op de featured Growth-card komt ook een tweede border-top op .sn-price-features voor extra ritme (omschrijving → features)

v1.33
woensdag 20 mei 2026
03:54

Scroll definitief gerepareerd — overflow:hidden → overflow:clip

Bug fix

Pagina was niet meer scrollbaar door browser-quirk

Wat was het probleem

overflow-x: hidden op body en .sn-root triggerde een browser-quirk: de browser verandert overflow-y automatisch van visible naar auto wanneer overflow-x op hidden staat. Daardoor werd .sn-root zelf een scroll-container terwijl zijn scrollHeight bijna gelijk was aan zijn clientHeight (geen scroll-ruimte) — viewport-scroll werd opgeslokt en de pagina kon niet meer bewegen. Op andere pagina's viel het niet op omdat ze minder content hebben

Hoe het is opgelost

overflow-x: hidden vervangen door overflow-x: clip op zowel body (globals.css) als .sn-root (landing.css). clip knipt overflow zonder het element tot scroll-container te maken — exact wat we hier nodig hebben. Gevalideerd via Chrome MCP: window.scrollY beweegt nu correct van 0 tot 1700+ tijdens scroll

v1.32
woensdag 20 mei 2026
03:42

Restervan scroll-jank: blur(80px) orbs, noise overlay, marquee isolatie

Snelheid

Hero orbs blur(80px) → filter:none

Wat was het probleem

Vier ambient orbs met filter: blur(80px) op de hero — enorme paint-cost per scroll-frame

Hoe het is opgelost

Filter volledig weg, opacity 0.35. Visueel nog zacht maar veel goedkoper.

Snelheid

Globale noise-overlay verborgen

Wat was het probleem

body::before in globals.css zat als fixed SVG-textuur op z-index 9999 over de hele viewport. Browser moest hem elke frame herevalueren tijdens scroll, ook al was hij visueel marginaal

Hoe het is opgelost

display:none — landing voelt schoner en cheaper.

Snelheid

Marquee tracks geïsoleerd met contain: layout paint

Wat het nu doet

Marquee-animaties draaien nu in eigen compositor layer en kunnen niet meer indirecte repaints triggeren in de rest van de pagina

Snelheid

Permanente will-change weggehaald van featured pricing + image glows

Wat het nu doet

Was overbodig — kostte continu GPU-memory zonder hoorbaar voordeel

v1.31
woensdag 20 mei 2026
03:26

Nav leesbaar op cream + scroll-jank definitief opgelost

Bug fix

Logo "Senly" + menu-items waren onzichtbaar in de hero

Wat was het probleem

Nav had nog rgba(255,255,255,0.72) tekstkleuren — wit op cream = onzichtbaar

Hoe het is opgelost

Logo #0a0e1a, menu-links #475569, inloggen-pill blijft dark, taal-toggle krijgt witte achtergrond met dark border

Snelheid

Scroll-jank bij 2x naar beneden scrollen — meerdere bronnen aangepakt

Wat was het probleem

(1) onScroll handler vuurde elke wheel-event en kon scrolled-state rapid togglen rondom drempel 40px; (2) HeroV2 had useScroll + useTransform parallax op orbs die elke scroll-frame herrekend werd; (3) HeroV2 mousemove handler bleef CSS-vars updaten ook al was spotlight uit; (4) permanente will-change op nav-inner met 5 properties; (5) backdrop-filter blur(24px) op nav-pill

Hoe het is opgelost

onScroll nu rAF-throttled + hysteresis (pill aan bij >80px, uit bij <40px), useScroll/useTransform parallax weg uit HeroV2, mousemove handler verwijderd, custom cursor + dashboard-bg + spotlight + grid-bg + noise-overlay JSX elementen weggehaald, nav backdrop-filter terug naar 10px, marquee tracks krijgen eigen GPU layer via translateZ(0)

Snelheid

overscroll-behavior: none op body

Wat het nu doet

Voorkomt rubber-band scrolling op macOS dat soms hapering veroorzaakte

v1.30
woensdag 20 mei 2026
03:20

Hero ook op cream — geen dark canvas meer, één doorlopende achtergrond

Polish

Hero achtergrond volledig licht

Wat was het probleem

Hero had nog dark teal radial-mesh achtergrond — knipte hard met cream body eronder

Hoe het is opgelost

Hero nu cream #f6f5f1 met zachte teal accent-orbs (opacity 0.5, blur 80px) als ambient hint

Polish

Hero-elementen aangepast voor lichte bg

Wat het nu doet

Title #0a0e1a zonder text-shadow, sub #475569, bullets #64748b, badge teal-on-light, secondary button white-outline ipv glass

Polish

Float cards aan zijkant: light glass

Wat het nu doet

rgba(255,255,255,0.92) bg + zachte border + soft shadow ipv dark glass — leesbaar op cream

Polish

Custom cursor + dashboard-bg + noise overlay + grid-bg verwijderd

Wat het nu doet

Allemaal dark-only effects die niet meer bij lichte hero passen

Polish

Hero-bridge fade weggehaald

Wat het nu doet

Niet meer nodig want hero is al cream — geen overgang meer tussen secties

v1.29
woensdag 20 mei 2026
03:18

Scroll-performance — geen gehapper meer tijdens omhoog/omlaag scrollen

Snelheid

scroll-behavior: smooth verwijderd van html

Wat was het probleem

CSS smooth-scroll forceerde elke wheel-event door browser-animatieloop, waardoor scrollen schokkerig voelde op trackpad/muiswiel

Hoe het is opgelost

Native scroll teruggezet — instant en zonder hapering

Snelheid

backdrop-filter blur verwijderd van alle cards

Wat was het probleem

backdrop-filter is de duurste CSS-operatie tijdens scroll — moet voor elke kaart de achtergrond opnieuw blurren bij elke scroll-frame. Op meerdere kaarten tegelijk = paint-jank

Hoe het is opgelost

Alle cards (calc, marquee, trust, vs, price, testi, clock, bento, fc-tab) hebben nu solide rgba(255,255,255,0.92-0.96) bg met border + shadow voor diepte. Visueel net zo premium, performance 10× beter

Snelheid

Ambient orbs: position fixed → absolute

Wat was het probleem

Twee 1400×1400 radial-gradient pseudo-elements op position:fixed forceerden permanent paint van de hele viewport bij elke scroll

Hoe het is opgelost

Orbs nu absolute met begrensde 900×900 footprint — paint één keer en scrollen mee uit beeld. Compositor-werk geëlimineerd

Snelheid

will-change weggehaald van permanent-promoted elements

Wat het nu doet

Permanente will-change op orbs en nav-pill kostte continu GPU-memory zonder voordeel. Alleen tijdelijke translateZ(0) op nav-inner gehouden voor de pill-morph

v1.28
woensdag 20 mei 2026
03:16

Pricing cards — leesbare slider, gelijke kaarten, sterker featured

Bug fix

Slider labels "Klanten" en huidige waarde waren onleesbaar

Wat was het probleem

Slider-labels stonden nog op rgba(255,255,255,0.52) — wit op cream = onzichtbaar

Hoe het is opgelost

Labels nu #475569, strong-waarde teal #0d9488, ticks #94a3b8

Polish

Pricing kaarten beter gepresenteerd

Wat was het probleem

Cards hadden verschillende hoogtes door verschillende content, CTA-knoppen niet uitgelijnd

Hoe het is opgelost

Features-lijst krijgt flex:1, CTA-button margin-top:auto → kleeft altijd aan onderkant. Padding ruimer, gap groter (20px). Gelijke kaart-hoogtes en strakke uitlijning

Polish

Featured Growth-kaart sterker geaccentueerd

Wat het nu doet

Subtiele teal-fade gradient bovenin, dikkere teal border (1.5px), prominentere shadow met dual glow. POPULAIRST badge groter (8x20px), stevigere shadow

Polish

Slider track + thumb premium voelend

Wat het nu doet

Track op rgba dark-tint ipv glas, thumb met white core + teal ring + soft glow

v1.27
woensdag 20 mei 2026
03:11

Light theme fixes — onleesbare cijfers, afgesneden badge, schokkerig scrollen

Bug fix

GrowthCalculator teaser-cijfers (2.5×, +1.5%, 80+) waren onzichtbaar

Wat was het probleem

Bestaande regel had wit→grijs gradient-clip die op cream achtergrond letterlijk wit op wit werd

Hoe het is opgelost

Background-clip uitgezet zodat de inline color (paars/teal/oranje) doorkomt

Bug fix

VS-vergelijking tool-chips: alleen prijs zichtbaar, naam ontbrak

Wat was het probleem

rgba(255,255,255,0.65) tekstkleur op wit → onzichtbaar

Hoe het is opgelost

Chip-naam expliciet #0a0e1a + chip bg iets dieper voor contrast

Bug fix

Pricing featured kaart: €50 amount nauwelijks leesbaar + POPULAIRST badge afgesneden

Wat was het probleem

Featured amount had wit→mint gradient op witte bg + card had overflow:hidden

Hoe het is opgelost

Amount-gradient nu teal→deep-teal (zichtbaar), overflow:visible op card, badge weer volledig zichtbaar

Snelheid

Scrollen voelde schokkerig, nav-pill inklap was niet smooth

Wat was het probleem

Fixed ambient orbs + veel backdrop-filter blur(20px) op cards = dure repaints elke scroll-frame

Hoe het is opgelost

will-change + translateZ(0) op nav en orbs, blur teruggebracht naar 8px op marquee/trust/vs chips, contain:layout op zware sections

v1.26
woensdag 20 mei 2026
03:05

Light cream body — alleen header dark, naadloze overgangen

Polish

Volledige body switch naar warm cream (#f6f5f1)

Wat was het probleem

Alle secties hadden eigen dark bg (#060e0d / #0a1c1b) waardoor visuele knipperingen tussen secties; voelde als losse blokken

Hoe het is opgelost

Hero blijft dark, alles eronder is één doorlopend cream canvas met zachte teal ambient hint

Polish

Hero-bridge: zachte fade van dark naar cream

Wat het nu doet

220px gradient die door 5 tussenstadia (#060e0d → muted greys → cream) loopt voor luxe overgang

Polish

Alle glass cards naar light variant

Wat het nu doet

rgba(255,255,255,0.7-0.85) bg + blur + zachte dark borders + soft shadows ipv dark glass

Polish

CTA card blijft dark gradient — accent eiland op cream

Wat het nu doet

Dark CTA card valt nu op tegen cream achtergrond voor dramatische focus

Polish

Nav-pill, footer, alle section heads, clock face en text colors aangepast

v1.25
woensdag 20 mei 2026
02:51

Maximale Framer Motion upgrade — élke sectie cinematisch

Polish

ClockSection volledig nieuw met Framer Motion

Wat was het probleem

De "Hoe het werkt" sectie had geen enkele animatie — enige sectie op de pagina zonder Framer Motion

Hoe het is opgelost

Stagger section head, scale+fade clock entrance, AnimatePresence timebadge wisseling, stagger step cards van rechts

Polish

Gedeelde secHead/secHeadItem/scaleIn/slideLeft varianten toegevoegd

Wat het nu doet

Alle section heads gebruiken nu één consistent stagger-parent patroon met 0.1s tussenpoos per child

Polish

TestimonialCard — tilt + whileHover spring effect

Wat het nu doet

Dezelfde useTilt als pricing/bento cards, plus whileHover y:-4 lift en stagger voor sterren en auteur

Polish

CTA sectie — gesequenced stagger voor dramatische climax

Wat het nu doet

Eyebrow → h2 → body → actions → foot verschijnen elk 100ms na elkaar voor maximale impact

Polish

Platform, Extras, Vergelijking, Prijzen, Reviews heads — stagger varianten

Wat het nu doet

Alle section heads vervangen door motion.div variants={secHead} met children die secHeadItem gebruiken

Polish

Footer fade-in entrance toegevoegd

v1.24
woensdag 20 mei 2026
02:40

Frontend Design Skill toegevoegd — consistent design system voor elke sessie

Infra

Design Skill gecodificeerd in .claude/skills/frontend-design/SKILL.md

Wat was het probleem

Design DNA (dark teal, glassmorphism, glow, eyebrow pills) zat alleen impliciet in code — niet herbruikbaar voor nieuwe sessies

Hoe het is opgelost

15-sectie design skill met color tokens, typografieschaal, spacing systeem, glass card patronen, Framer Motion varianten, verboden patronen en kwaliteitscheck per sectie

v1.23
woensdag 20 mei 2026
02:37

Hele site naar dark premium — geen wit gat meer tussen secties

Polish

Globale page-achtergrond donker (#060e0d) ipv lichtblauw

Wat was het probleem

Tussen alle premium dark secties zaten witte gaten die het luxe gevoel braken

Hoe het is opgelost

Root nu permanent donker met diepere teal ambient glows die over de hele pagina lopen

Polish

Zoom-scène + clock-sectie volledig dark glassmorphism

Wat het nu doet

Donkere base met meervoudige teal radial glows, glow-effecten op clock hands en active steps, capsule eyebrow-pills

Polish

Flow-visualisatie en insights cards naar dark glass

Wat het nu doet

Glass nodes met blur, gloeiende teal icon backgrounds, premium hover liften

v1.22
woensdag 20 mei 2026
02:33

Feature carousel + marquee secties dark premium

Polish

Platform-section (feature carousel) dark premium achtergrond

Wat het nu doet

Donkere base met dubbele teal radial glows + subtiele grid, glass pill-tabs met teal active glow, gloeiende dots-indicator

Polish

Marquee-sectie dark glass cards

Wat het nu doet

Glass marquee cards met blur, donkere fade-mask aan beide kanten, icon shadows

v1.21
woensdag 20 mei 2026
02:31

Ultra high-end SaaS redesign — pricing, testimonials, calculator en trust volledig premium

Polish

Calculator-sectie volledig dark glassmorphism

Wat was het probleem

Calc-widget was flat wit en voelde niet als hetzelfde premium product als de hero

Hoe het is opgelost

Dark glass cards met blur+saturate, teal gloeiende metric-nummers, premium dark tabs en input field, teal CTA button met dubbele glow

Polish

Pricing-sectie omgezet naar dark premium SaaS look

Wat was het probleem

Pricing cards waren wit op licht — geen wow-effect tussen de andere donkere secties

Hoe het is opgelost

Donkere base met grid + teal radial glows, glassmorphism cards met inner highlight, featured-tier met dubbele teal glow, premium slider met gloeiende thumb

Polish

Testimonials premium dark cards met cinematic accenten

Wat het nu doet

Glassmorphism cards op donkere base, gloeiende quote-icoon, dunne teal top-accent gradient, hover lift met teal aura

Polish

Trust-stats glassmorphism + gloeiende cijfers

Wat het nu doet

Dark glass cards met teal radial spotlight achter de calc, witte logos met juiste invert filter

Polish

Premium section-eyebrow pills (capsule met teal border + blur)

Wat het nu doet

Eyebrows op donkere secties krijgen nu een echte capsule-pill stijl ipv vlakke tekst — voelt als Linear/Stripe

v1.20
woensdag 20 mei 2026
02:16

Hero: vignette-achtergrond, krachtige spotlight en betere cards

Polish

Donkere vignette-structuur op hero — midden springt er dramatisch uit

Wat het nu doet

Vier donkere hoek-gradienten over lichtere kern — geeft echte diepte en focus op de content

Polish

Spotlight orb-6 feller en lager — exact achter de heading

Wat het nu doet

Opacity tot 0.36, blur 45px, positie iets omlaag zodat hij de heading verlicht

Polish

Heading teal glow verdubbeld in intensiteit

Wat het nu doet

text-shadow van 0.25 naar 0.55 opacity — heading gloeit nu zichtbaar

Polish

Floating cards: witter glas, sterkere schaduw, hogere leesbaarheid

Wat het nu doet

Border van 0.20 naar 0.28, shadow 0.60 zwart, subtekst van 0.62 naar 0.72

v1.19
woensdag 20 mei 2026
02:05

Hero hero-kwaliteit verhoogd: spotlight, cards en badge opgepolijst

Polish

Spotlight orb-6 veel sterker — zichtbaar lichtpunt boven de heading

Wat het nu doet

Opacity verhoogd, blur verminderd van 70px naar 55px voor scherpere lichtspot

Polish

Heading tekst-glow toegevoegd

Wat het nu doet

Subtiele text-shadow zodat de witte titel loskоmt van de achtergrond

Polish

Floating cards zichtbaarder: meer glaseffect en glow

Wat het nu doet

Achtergrond van 0.06 naar 0.10, border van 0.12 naar 0.20, teal glow shadow toegevoegd

Polish

Badge helderder: teal kleur, sterkere border en glow

Wat het nu doet

Kleur van donker teal-vivid naar helder #5eead4, border opacity omhoog, box-shadow glow

v1.18
woensdag 20 mei 2026
01:58

Hero achtergrond: dynamische gradient met lichte en donkere vlakken

Polish

Hero heeft nu zichtbare gradient-variatie in de achtergrond

Wat was het probleem

Achtergrond was overal even donker — geen diepte of contrast

Hoe het is opgelost

Meervoudige radiale gradienten als basis, orb-1 en orb-4 helderder, nieuw lichtpunt bovenaan midden (orb-6 met bijna-wit teal), grid-masker vergroot voor meer zichtbaarheid

v1.17
woensdag 20 mei 2026
01:56

Valuta-detectie: € voor Europese bezoekers, $ voor Amerikaanse

Nieuwe functie

Automatische valuta op basis van regio

Wat was het probleem

Alle bezoekers zagen dollartekens, ook Europese bezoekers voor wie euro relevanter is

Hoe het is opgelost

Tijdzone-detectie (Europe/* → €, overig → $) zonder API-call. Alle prijzen op de landingspagina — chips, vergelijkingskaarten, pricing, voetteksten — schakelen mee

v1.16
woensdag 20 mei 2026
01:49

VS-kaart: tekst en checkmarks zichtbaar op donkere achtergrond

Bug fix

Lijst-items in VS-vergelijkingskaart waren grijs en onleesbaar

Wat was het probleem

Na omzetten naar donkere achtergrond bleef de tekstkleur #475569 (grijs) — onzichtbaar op donker

Hoe het is opgelost

Tekst overridden naar rgba(255,255,255,0.82), checkmark-kleur naar #5eead4, sub-tekst en spaarbalk aangepast

v1.15
woensdag 20 mei 2026
01:47

Hero DNA doorgetrokken naar volledige pagina

Polish

VS-sectie omgezet naar donkere teal achtergrond

Wat was het probleem

Vergelijkingssectie viel uit toon met de hero

Hoe het is opgelost

Donkere #0a1c1b achtergrond + grid-patroon + teal glow orb, tekst en kaarten aangepast

Polish

CTA-blok omgezet naar donkere teal stijl

Wat was het probleem

CTA-sectie had lichtblauwe achtergrond die niet aansloot bij het merkgevoel

Hoe het is opgelost

Zelfde hero DNA: #0a1c1b + grid + teal glow; tekst wit, knoppen teal solid en glazen outline

Polish

Finale CTA-kaart aligned op teal kleurpalet

Wat was het probleem

Achtergrond was navy, em-gradient bevatte hemelsblauw buiten het merkpalet

Hoe het is opgelost

Achtergrond gewijzigd naar #0a1c1b teal-donker, em-gradient puur teal #5eead4 → #0d9488

Polish

Ambient orbs subtiel versterkt

Wat het nu doet

Vaste orbs in achtergrond iets meer zichtbaar gemaakt voor doorgaande teal sfeer door lichte secties

v1.14
woensdag 20 mei 2026
01:39

Hero-buttons opnieuw ontworpen: solid teal + glazen outline

Polish

Primaire button: solid teal merkkleur; secundaire button: glazen outline

Wat was het probleem

De donkere primary button loste op in de hero-achtergrond, en de witte secondary button stak te hard af.

Hoe het is opgelost

Hero-context CSS-overrides toegevoegd. Primary: solid teal gradient (#17c4b0→#0d9488) met glow — merkkleur als CTA. Secondary: transparante glazen outline met witte tekst en backdrop-blur. Play-icoon ook aangepast naar glass-stijl.

v1.13
woensdag 20 mei 2026
01:36

Hero-achtergrond exact op merkkleur hue gezet (#0a1c1b)

Polish

Achtergrond is nu een donkere versie van de exacte letterkleur

Wat het nu doet

Hero achtergrond: #0a1c1b — dit is dezelfde hue (174°) als de teal-accentkleur #14b8a6, maar verdonkerd naar 11% lightness. Alle diepte-orbs en de bridge-gradient gebruiken nu dezelfde RGB-verhouding (G≈B, H≈174°).

v1.12
woensdag 20 mei 2026
01:34

Overgangszone loopt via de merkkleur teal

Polish

Bridge-gradient verrijkt met logo-teal doorheen de overgang

Wat was het probleem

De brug tussen hero en pagina liep via neutraal grijs, zonder merkkleur.

Hoe het is opgelost

Bridge-gradient aangepast: donker teal-zwart → midtones in de exacte logo-teal (#0d9488 / #14b8a6) → lichte pagina-achtergrond. De merkkleur vormt nu het visuele bindmiddel van de overgang.

v1.11
woensdag 20 mei 2026
01:32

Hero-achtergrond afgestemd op exacte hue van het merklogo

Polish

Achtergrondkleur gecorrigeerd naar ware teal van het logo

Wat was het probleem

Eerdere #050d0b achtergrond had een groen-zwaar tint (G>B) die niet overeenkomt met de balanced teal van het Senly-logo.

Hoe het is opgelost

Achtergrond gewijzigd naar #061011 (G=B, ware teal-hue). Alle diepte-orbs aangepast naar rgba met gelijke groen- en blauwwaarden zodat de donkere tonen in dezelfde kleurenfamilie vallen als het logo.

v1.10
woensdag 20 mei 2026
01:30

Hero-gloed teruggebracht: subtiel en niet te fel

Polish

Teal-intensiteit verlaagd voor rustigere, premium uitstraling

Wat het nu doet

Orb-1 opacity verlaagd van 0.42 naar 0.22, orb-4 van 0.10 naar 0.05. Teal is nu een zachte atmosferische hint op de donkere achtergrond — merkkleur aanwezig zonder opdringerig te zijn.

v1.09
woensdag 20 mei 2026
01:28

Alle blauw- en indigo-accenten vervangen door merkkleur teal

Polish

Hero en paginakleur volledig afgestemd op Senly-merkkleur

Wat was het probleem

De hero-achtergrond (#050816) en gradient-accenten hadden een blauw/indigo tint die afweek van het teal-groene merklogo.

Hoe het is opgelost

Achtergrondkleur aangepast naar #050d0b (donker teal-zwart). Hero diepte-orbs omgezet naar donker forestteal. --accent-grad, hero-tekstgradient, SVG-onderlijning en alle #0891b2-accenten door de hele pagina vervangen door teal-varianten (#5eead4 → #14b8a6 → #0d9488).

v1.08
woensdag 20 mei 2026
01:25

Hero-achtergrond: donker navy met één teal accent, geen groene waas

Polish

Hero-orbs opnieuw gebalanceerd: navy + één teal lichtpunt

Wat was het probleem

Vijf teal/groene orbs tegelijk gaven een overweldigende groene waas die niet premium oogt.

Hoe het is opgelost

Orb-1 blijft het enige sterke teal-accent (links, merkkleur). Orb-2 werd omgezet naar diep oceaanblauw voor diepte en contrast. Orbs 3 en 5 worden donker navy voor volume. Orb-4 is nauwelijks zichtbare teal-hint centraal. Ambient page-orbs teruggebracht tot vrijwel nul. Resultaat: donker navy met één herkenbaar teal-lichtpunt.

v1.07
woensdag 20 mei 2026
01:22

Kleurpalet teruggebracht naar merkidentiteit (teal)

Polish

Alle niet-brand kleuren vervangen door teal-varianten

Wat was het probleem

Hero-mesh en sectie-achtergronden bevatten indigo, violet en roze accenten die niet passen bij de teal merkidentiteit van Senly.

Hoe het is opgelost

Alle orbs (indigo orb-2, violet orb-3, roze orb-5) en ambient orbs omgezet naar teal-varianten (diep teal, cyaan-teal, donker teal). Pricing- en testimonials-secties eveneens gecorrigeerd. Palet is nu consequent teal + cyaan — 100% in lijn met de branding.

v1.06
woensdag 20 mei 2026
01:19

Premium overgang van donkere hero naar lichte pagina

Polish

Naadloze dark-to-light transitie tussen hero en content

Wat was het probleem

De harde grens tussen de donkere hero (#050816) en de lichte pagina zag er slordig uit — eerdere pogingen met een overlay of donkere gradient in de trust-sectie maakten tekst onleesbaar of creëerden een vage grijze wolk.

Hoe het is opgelost

Aparte bridge-div toegevoegd tussen hero en trust-sectie. Bridge heeft de lichte pagina-achtergrond als basis met een donkere ::before-overlay die van boven naar transparant fadeout, plus een subtiel teal-glow-accent midden in de overgang. Trust-sectie teruggezet naar schone lichte achtergrond zodat alle tekst volledig leesbaar blijft.

v1.05
woensdag 20 mei 2026
01:09

Pagina-achtergrond verlevendigd met gradient-mesh door alle secties

Polish

Subtiele kleurgradiënten door de hele pagina

Wat was het probleem

Pagina onder de hero was puur wit en saai.

Hoe het is opgelost

Paginabasis gewijzigd naar licht blauw-grijs (#f7f9fc). Ambient-orbs versterkt (teal links, indigo rechts). Pricing, testimonials, clock en trust-secties kregen elk eigen gradient-accenten in teal, blauw en violet.

v1.04
woensdag 20 mei 2026
00:59

Homepage hero: donkere gradient-mesh achtergrond met vivide kleuren

Polish

Hero-sectie volledig vernieuwd met animerend gradient-mesh

Wat was het probleem

De hero-achtergrond zag er vlak en weinig indrukwekkend uit op een wit canvas.

Hoe het is opgelost

Donkere achtergrond (#050816) met 5 grote geanimeerde gradient-orbs (teal, indigo, violet, cyaan, roze). Grid-patroon, noise-textuur en witte tekst. Nav-links worden wit op de donkere hero en schakelen naar donker zodra de pill-toestand actief wordt bij scrollen.

v1.03
woensdag 20 mei 2026
00:49

Gedeelde navigatiebalk op alle publieke pagina's

Polish

Navigatie op blog en partnerspagina identiek aan homepage

Wat was het probleem

Blog, blogartikelen en partnerspagina hadden een andere, eenvoudigere menubalk dan de homepage.

Hoe het is opgelost

PublicNav component volledig vernieuwd: zelfde fixed pill-nav als de homepage, met Platform, Blog, Prijzen en Partners. Morph-animatie naar pill bij scrollen, active-state per pagina en verbeterd mobiel menu.

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.