Changelog
Versiegeschiedenis van Drawmit. Alle wijzigingen, features en fixes.
v5.273.02026-05-12
cad-v2 PDF rendering: titelblok + noordpijl + schaalbalk + automatische bematingen
- scripts/cad-v2-baldershof-pdf.mts uitgebreid: per pagina blocks (titelblok + noordpijl + schaalbalk) en automatische maatkettingen via generateAutoDimensions. Drawing number TEK-101/201..204/301 per view.
- Plattegrond bematingen: 13063mm × 10332mm pand-hoofdmaat, plus kettingmaat 640/1002/737/727/5293/1101/5052/890mm uit ortho-snapped polygon vertices.
- PDF gegroeid van 52KB naar 79KB door volledige NEN-style content: titelblok rechtsonder met PROJECT/OPDRACHTGEVER/DATUM/TEKENING/SCHAAL/FORMAAT/STATUS/ADRES/TEK.NR./REV./TEKENAAR + DRAWMIT v5.273.0 stempel rechtsboven + schaal 1:100 + noordpijl N.
- Opgeslagen voor inspectie: ~/Bureaublad/Opruimen Prive/Baldershof-vergunning/cad-v2-baldershof-v6.0-eerste-output.pdf
- Volgende v6.3: materiaal-hatches in muur-cut-faces, multi-verdieping, Uitbouw/Bijgebouw/Binnenmuur in scene-bridge, doorsnede-B-B, axonometrie.
v5.272.02026-05-12
cad-v2 VerticalSection — Layer 3 projecties compleet (plattegrond + 4 gevels + doorsnede)
- src/lib/cad-v2/vertical-section.ts — buildVerticalSection(building, {axis, cutCoord, viewSide}): axis-aligned half-space cut, drawProjection vanaf kijkende richting, visible+hidden line layers.
- Baldershof live doorsnede A-A: 63 entities (visible+dashed), 11.16×5.4m bbox in 108ms.
- Layer 3 compleet — Baldershof eindcijfer: 9 plattegrond-entities + 4×60 gevel-entities + 63 doorsnede-entities = ~315 entities, ~750ms total na bundle-fetch.
- Volgende v6.2: A3-PDF render via bestaande pdf-plotter (titelblok + schaalbalk + noordpijl). Side-by-side met v5-output voor visuele vergelijking.
v5.271.02026-05-12
cad-v2 FacadeProjection — 4 gevels Baldershof in 117ms
- src/lib/cad-v2/facade-projection.ts — buildFacadeProjection + buildAllFacadeProjections; wrapper rond bestaande replicad-bridge::projectShapeToEntities; gevel-noord/oost/zuid/west via drawProjection + hidden-line.
- Baldershof live: 4 gevels in 117ms → noord 63 entities (13.36×5.4m), oost 59 (11.16×5.4m), zuid 62, west 59. Echte BAG-polygon en zadeldak via één compound.
- src/lib/cad-v2/kernel.ts — fix: kernel.ensureKernelReady delegeert nu naar replicad-bridge.ensureOcInitialized zodat cad-v2 en v5 dezelfde OCC-instance delen (twee aparte inits gaven cross-context TopoDS_Shape error).
- Volgende v6.1: VerticalSection (doorsnede via snijlijn) + side-by-side Baldershof PDF voor visuele vergelijking met v5-output.
v5.270.02026-05-12
cad-v2 HorizontalSection — eerste echte plattegrond-section uit BRep
- src/lib/cad-v2/horizontal-section.ts — buildHorizontalSection(building, opts): per-element Z-slice op cutHeight (default 1000mm), drawProjection top, SVG-paths parsen naar PolylineEntity[]. Per-element approach (i.p.v. Compound-cut) levert separate polylines per wall.
- Baldershof live test: 8-vertex BAG-polygon → Building → 9 polylines (8 wall cross-sections + slab outline) in 536ms. Wall-thickness 300mm correct in output, oriëntatie volgt θ=85° dominant angle.
- scripts/cad-v2-section-smoke.mts — SVG-export voor visuele check op /tmp/cad-v2-section.svg.
- Volgende v6.1: ParallelProjection (gevel-aanzicht) + VerticalSection (doorsnede).
v5.269.02026-05-12
cad-v2 scene-bridge — echte BAG-polygon Baldershof rendert in 244ms
- src/lib/cad-v2/scene-bridge.ts — buildBuildingFromBundle(bundle, scene): pand-polygon (WGS84) → RD → building-local mm, polygon-orthogonalize, perimeter walls + slab + roof. Bbox-baseert nokRichting op langste polygon-zijde.
- Baldershof live test: 8-vertex BAG-polygon (niet rechthoek), θ=85° gedetecteerd, alle 8 segments ge-snapped naar ortho, 7 vertices verschoven. Building: 8 walls + 1 slab + 1 roof, BRep-compound in 242ms, bbox 13.36×11.16×5.4m.
- scripts/cad-v2-baldershof-smoke.mts — fetch echte PDOK-bundle → bridge → Building → STL. End-to-end ~720ms, groen.
- Volgende v6.1: Layer 3 projecties (HorizontalSection voor plattegrond per verdieping, VerticalSection voor doorsnede, ParallelProjection voor gevel-aanzicht).
v5.268.02026-05-12
cad-v2 Slab + Roof + Building aggregator (Layer 2 topology compleet)
- src/lib/cad-v2/slab.ts — Slab.fromPolygon(polygon, thickness).withOpening(rect) → Shape3D. Extrude van XY-polygon, boolean cut van trapgat/lichtkoker/schoorsteen-doorvoer.
- src/lib/cad-v2/roof.ts — Roof.flat() voor plat dak, Roof.gable() voor zadeldak met goot/nok/richting (NS|EW) en overstek-parameters. dakhellingDegrees getter. XZ/YZ-plane sketch met Plane.yDir = zDir×xDir convention.
- src/lib/cad-v2/building.ts — Building aggregator: meta + elements[]; addWall/addSlab/addRoof immutable builder; toShapesByElement() voor per-element render; toCompound() voor export/projectie.
- scripts/cad-v2-wall-smoke.mts — Baldershof mini-pand (4 muren + vloer + zadeldak) bouwt in ~5ms tot Compound met bbox [-300,-125,-200]..[6300,8125,5200], STL groen.
- Layer 2 topology compleet — volgende: scene → Building bridge + Layer 3 projecties (HorizontalSection/VerticalSection/ParallelProjection).
v5.267.02026-05-12
cad-v2 foundation: BRep-kernel + Wall class (v6.0 architectuur-rewrite start)
- Strategie 'tekenaar 100% vervangen' vastgelegd in docs/strategie-tekenaar-vervangen-2026-05-12.md: 4-laags architectuur (Kernel/Topologie/Projectie/Render), v5-pipeline blijft parallel draaien tot v6.6 acceptance.
- src/lib/cad-v2/kernel.ts — Replicad/OpenCASCADE init wrapper, gedeelde singleton met lib/cad/replicad-bridge. Helpers: Pt2/Pt3, distance/angle/perp/midpoint utilities.
- src/lib/cad-v2/wall.ts — Wall.fromAxis(start, end, thickness, height).withOpening(rect, sillHeight) → Replicad Shape3D. Boolean cut van openingen, rotate naar muur-hoek, translate naar wereld-positie. Immutable builder.
- scripts/cad-v2-wall-smoke.mts — smoke-test bouwt Baldershof-voorgevel (6m × 250mm × 2.7m, deur + 2 ramen), exporteert STL 16.8KB in ~100ms, verifieert bbox + rotated wall. Groen.
- Geen wijzigingen aan v5-pipeline. cad-v2 is parallel pad zonder runtime-impact.
v5.213.02026-05-10
v5.200→v5.213: 4 nieuwe endpoints + monitor + iCal + sample-library
- 4 nieuwe API-endpoints sinds v5.200: /api/intake/probe (PDOK round-trip ~250ms), /api/intake/monitor (uptime aggregate van 3 subsystems ~2.3s), /api/intake/kosten (snelle kosten-raming JSON), /api/intake/merge (combineer 2-10 Scene-fragments), /api/intake/ical (aanvraag-deadlines als iCalendar voor Google/Apple/Outlook agenda).
- Pakket: disclaimer-pagina als 1e (juridische scope-uitleg), executive-summary 4-card dashboard (compleetheid/Bbl/risico/vergunningvrij), gemeente-contact-page met loket-URL en tips. PDF response heeft nu Digest sha-256 header voor download-integriteit.
- UI: /intake/voorbeelden sample-library (3 testbare panden: Baldershof/Dam/Coolsingel), CSV-upload in BatchForm, recent-list met 'wissen'-knop, welstand-availability indicator, 429-friendly errors, /admin/intake auto-refresh elke 30s.
- Tests: 46 production smoke (was 36, +10 voor monitoring + samples + admin + security.txt + ical), uitgebreide test:intake:full prod-pipeline.
- OpenAPI 3.1: alle 18 intake-endpoints volledig gedocumenteerd in /api/docs. /api/version centrale discovery wijst naar 5 submodules.
v5.200.02026-05-10
Pipeline volledig — 14 endpoints + 26-page pakket + admin dashboard
- Pakket-output uitgebreid met disclaimer-page (eerste pagina, scope-uitleg + 'wat wel/niet'), summary-page (4-card dashboard met scores), gemeente-contact-page (loket-URL + tips), gemeente-leges in kosten-raming (10 hand-encoded gemeenten), Stadsarchief Amsterdam bouwdossiers (Amsterdam-only), CityJSON 2.0 export in bundle, CSV-exports (intake-checks, NEN 2580 GBO), markdown intake-report.
- Veiligheid: SHA-256 INTEGRITY manifest in bundle ZIP (verifieerbaar met sha256sum -c), RFC 9116 .well-known/security.txt, ISO 19005-2 PDF metadata, rate-limit per IP op alle POST endpoints (preview/pakket/bundle/batch/email/scene/render/echo).
- API uitgebreid van 5 → 14 intake-endpoints: preview/pakket/bundle/batch/email/scene/render/echo/sample/health/version/stats/probe/cache. Plus /api/version centrale discovery + /admin/intake monitoring-dashboard. Volledig OpenAPI 3.1 gedocumenteerd.
- Performance: in-memory cache 24h TTL voor RCE/WKPB/risico API-calls (~5s besparing per repeat-call), parallel I/O voor monument+WKPB+cultuurhistorie+6 risico-checks+Claude-AI-narrative (10 lookups parallel, ~10s besparing).
- UI: 5-card input-types grid, 18-bullet output-overzicht, sample-banner + /intake/voorbeelden library, /intake/batch UI met CSV-upload, recent-list (localStorage), preview/PDF/ZIP knoppen, 429-friendly errors, OG images per pagina, sitemap + SEO metadata.
- Tests: 44 production smoke + 12 intake-unit + 4 prod-integration scripts (preview/bundle/batch/perf-baseline). Smoke dekt nu /admin, /voorbeelden, /security.txt, /probe, /stats.
v5.171.02026-05-10
Risico-checks + handover-formaten + gemeente-contact
- RCE Cultuurhistorie + UNESCO-werelderfgoed + beschermd-stadsgezicht overlay (v5.154); 4-in-1 risico-pagina (archeologie + overstroming + funderingsrisico + Natura 2000) (v5.155); externe veiligheid + luchthaven-geluidzone toegevoegd (v5.158)
- Vergunningvrij-check pagina via Bbl Bijl. II wanneer scene wijzigingen heeft (v5.149); kosten-raming uit Bouwwerken-prijzenboek 2025 met archetype-multiplier (v5.156); gemeente-leges-tabel hand-encoded voor 10 gemeenten (v5.163); Stadsarchief Amsterdam bouwdossiers voor pre-2003 panden (v5.157); welstand-criteria per gemeente uit DWC-rulesets (v5.145).
- Drie nieuwe API-endpoints: POST /api/intake/preview (snelle JSON ~600ms, v5.144), POST /api/intake/bundle (ZIP met PDF+IFC+DXF+CityJSON+JSON+CSV+MD+SHA256, v5.138-5.167), POST /api/intake/batch (max 10 adressen sequentieel, v5.160), POST /api/intake/email (pakket per Resend, v5.170).
- augment-pakket helper voor consistente PDF tussen /pakket en /bundle (v5.143); parallel I/O voor RCE/WKPB/Claude lookups (v5.152); in-memory cache 24h TTL per externe call (v5.161); Turbopack /ROOT/node_modules WASM-pad fix in Docker (v5.140).
- UI: ZIP-bundle download-knop in IntakeForm (v5.164); recent-geprobeerd lijst via localStorage (v5.165); SEO metadata + OG-tags op /intake (v5.166); 5-card grid voor input-types op landing (v5.150).
- Output: 22 → 26+ pagina's met monument/WKPB/cultuurhistorie/risico/welstand/vergunningvrij/kosten/contact pagina's. Pakket-PDF heeft ISO 19005-2 metadata (v5.135); SHA-256 INTEGRITY manifest in bundle (v5.167).
v5.149.02026-05-10
Intake-pipeline complete — 5 input-types → 26+ pagina pakket
- Pijler 4 (vision-extract) end-to-end: gebruiker uploadt foto's, oude bouwtekeningen, plattegrond-scans, brochure of RoomPlan-USDZ → orchestrator → Scene → producePakket. v5.114 wired gevel-foto extractor; v5.116 brochure (unpdf.extractImages embedded plattegronden) + RoomPlan; alle 5 IntakeInputType's nu functioneel.
- Scene-aware tekeningen: plattegrond met binnenmuren als 100mm-strips, kamers met naam+m²+functie-hatch (badkamer=tegels, garage=beton, draagmuur=metselwerk), trappen, sanitair. Doorsnede A-A en B-B met binnenmuren-cuts, kamer-vloer-labels, vloeropbouw uit DNT archetype, dakopbouw, trap-treden. NEN 2574 snijlijnen op plattegrond met pijlpunten en letterlabels. Multi-verdieping plattegronden BG/1V/2V/kelder.
- Maatvoering: kamer-binnenmaten via auto-dim explicitXStops/YStops met binnenmuur-endpoints; verticale gevel-hoogte-keten peil/goot/nok; per-opening B/H/borstwering labels op alle 4 gevels; materiaal-codes M1-M4 altijd zichtbaar (welstand-conventie).
- 3 nieuwe pakket-pagina's via producePakket: dakplattegrond (Bbl 2.3) inline met scene-bijgebouwen + dakkapellen footprint; axonometrie 3D-impressie via replicad ProjectionCamera; dakrand-detail (D11) naast kozijn (D09) en fundering (D10).
- Augment-pijplijn (lib/intake/augment-pakket.ts) voegt 8 extra pagina's toe na producePakket: rijksmonument-warning (RCE Erfgoedwet), WKPB-beperkingen (Kadaster), gemeente-specifieke welstandscriteria (10 hand-encoded rulesets), vergunningvrij-check (Bbl Bijl. II), completeness-rapport (0-100 score), Bbl-conformiteit-review, AI-narrated projectbeschrijving (Claude Sonnet 4.6), aanvraag-checklist (Mor 2.4-2.7), foto-bijlagen met EXIF-orientation. ISO 19005-2 PDF metadata.
- 3 nieuwe API-endpoints: POST /api/intake/preview (snelle JSON in ~600ms), POST /api/intake/pakket (PDF in ~20s), POST /api/intake/bundle (ZIP met PDF + DXF + IFC + JSON + markdown rapport in ~28s, voor handover bouwkundige).
- Productie-fix: Turbopack bakte /ROOT/node_modules paden in chunks; Docker-symlink /ROOT → /app maakt replicad WASM resolveerbaar runtime.
- Tests: 47 unit + smoke tests groen (8 floorplanToScene + sceneMerger + conformance + completeness + bbl-review). Smoke-render-script test 26-page producePakket end-to-end met synthetic scene in ~7s.
v5.82.02026-05-06
NEN 2580 GBO-overzichtspagina toegevoegd aan pakket
- buildGboPage() (oppervlakte-overzicht conform NEN 2580) bestond al sinds eerdere sprints maar was nooit aan het tekeningenpakket toegevoegd. Nu gewired in producePakket() direct na het voorblad — gemeente/welstand ziet de oppervlakte-onderbouwing dus meteen na het overzicht.
- Pagina toont per verdieping de gedetecteerde ruimtes met m², het BAG VBO-totaal als referentie, en het pand-footprint. Bij scenes zonder Kamer-objecten valt het terug op de detectSpaces()-uitvoer (één 'Verblijfsruimte (woonfunctie)' eintrag).
- Best-effort: bij een fout in de page-build sluit de pakket niet vast — het wordt overgeslagen met console.warn. De rest van het pakket blijft dus altijd bruikbaar.
- Ontdekking tijdens audit: NEN 47 hatching (AR-CONC voor beton, AR-BRSTD voor metselwerk, EARTH voor grond), EN-ISO 7200 titelblok en NLCS DXF-layers zijn al volledig geïmplementeerd. Resterende gap: real DXF DIMENSION-entities (i.p.v. polylines+text-paren) zodat tekenaars in AutoCAD/Revit dimensies editable krijgen — apart sprint vanwege de scope.
v5.81.02026-05-05
NEN-conformity stap 1: dynamic version + conform-stempel
- Voor elke pagina van het tekeningenpakket (titelblok rechtsonder + voorblad-disclaimer) werd de Drawmit-versie hardcoded als '5.74.0' getoond — niet meer kloppend met de werkelijke build. Nu importeert produce-pakket.ts DRAWMIT_VERSION uit version.ts; alle 8 plekken zijn dynamisch.
- NEN-conform-stempel toegevoegd rechtsonder op het voorblad: 'Conform: NEN 2580 (oppervlakte) · NEN 47 (hatching) · EN-ISO 7200 (titelblok) · EN-ISO 5457 (papierformaat)'. Trust signal voor gemeente en welstand zodat ze direct zien dat het pakket de juiste tekenstandaarden volgt.
- Eerste stap richting volledige NEN-conform strict mode (uit het output-rapport pad #3). Volgende stappen: real DXF DIMENSION-entities (i.p.v. polylines+text), expliciete DXF lineType per layer, NEN 2580 GBO-overzicht-pagina wired in pakket, NEN 47 hatching uit reeds aanwezige .pat-files in dak/wand-doorsneden.
v5.80.02026-05-05
GevelPhotoBanner + daktype-label klopt nu voor schilddaken
- Gevelfoto-pipeline (browser-side SAM2 + Depth Anything V2) is nu prominent als banner bovenaan canvas zodra je adres geladen is en je nog geen ramen/deuren hebt. Klik = sidebar opent + scrollt naar de facade-vision sectie. Banner verschijnt na de FloorplanBanner-fase zodat ze niet stapelen.
- Tekst maakt expliciet wat de pipeline doet: 'Klik elementen aan op een gevelfoto — onze AI meet ze op en plaatst ze met de juiste afmetingen. Vervangt de geschatte ramen/deuren in je gevel-PDFs.' Tegen de auto-fenestration die anders met dashed lines + disclaimer in de export staat.
- Daktype-label op de dakplattegrond gebruikt nu de geometrische classifier (analyseert RoofSurface face-normalen). 3DBAG's coarse 'slanted'-attribuut werd voorheen altijd vertaald naar 'Zadeldak' — fout voor schilddaken (4 vlakken), lessenaars (1 vlak) en mansardedaken. Nu zegt het label echt wat het is, met fallback naar 'Hellend dak' bij lage classifier-confidence.
- Banner-systeem op de canvas: PWA-install-banner (mobile, top), FloorplanBanner (top, alle viewports), GevelPhotoBanner (top, na floorplan-fase), HeroOverlay (centered). Sequencen via localStorage-flags zodat ze niet tegelijk staan te schreeuwen.
v5.79.02026-05-05
FloorplanBanner — vision-pipeline prominent zichtbaar
- Bestaande plattegrond-upload was verstopt in een dichtgeklapte Collapsible diep in de sidebar. Nu prominent als banner bovenaan de canvas zodra je een adres laadt en er nog geen binnenmuren of kamers in scene staan.
- Banner zegt expliciet wat de pipeline doet: 'Upload een PDF of foto. Onze vision-AI plaatst binnenmuren, ramen, deuren en kamerlabels automatisch op deze tekening — zo krijg je een complete plattegrond i.p.v. een lege buitencontour.'
- Klik op 'Upload plattegrond' opent de sidebar (ook op mobile waar hij default dicht is), expandeert de bouwtekening-Collapsible, en scrollt de upload-dropzone in beeld. Verbergt zichzelf zodra de eerste binnenmuur of kamer in de scene zit.
- 'Niet nu' of X-knop dismist de banner persistent (localStorage drawmit:floorplan-banner-dismissed). Banner respecteert env(safe-area-inset-top) zodat hij niet onder een notch zit.
- Achtergrond: de plattegrond-renderer leverde alleen een buitencontour omdat BAG geen interieur-data publiceert. Foto-upload is dé manier om een echte plattegrond met kamers/sanitair/deuren te krijgen — die UX-stap was onbereikbaar verstopt, vandaar deze banner.
v5.78.02026-05-05
Mobile topbar slim + '+ Voeg toe' FAB
- Mobile topbar verbergt nu de 3D-knop, Preview-knop, AI-Chat-knop en Perceel-scan-link op smartphone (md:hidden). De AI-Chat heeft al een floating-action-button rechtsonder; 3D en Preview komen later in een mobile-menu. Resultaat: ~40% minder vertical clutter in de topbar op mobile.
- '+ Voeg toe' floating-action-button verschijnt linksonder op mobile zodra de scene minimaal 1 object heeft. Klik heropent de HeroOverlay-picker zodat je een 2e/3e bijgebouw, uitbouw etc. kunt kiezen. Bij lege scene ongewijzigd: HeroOverlay opent automatisch.
- HeroOverlay heeft nu een sluit-knop (X rechtsboven) wanneer hij handmatig (via FAB) is geopend. Bij auto-show op lege scene blijft hij persistent — daar zou sluiten verwarrend zijn (lege canvas zonder hint).
- Architectuur: tiny pub/sub heroOverlayStore singleton naast selectionStore. open()/close()-methods, useSyncExternalStore-hook. FAB en overlay synchroon zonder lift naar de page.tsx-monoliet.
v5.77.12026-05-05
Fix: auto-reload op chunk-load error na deploy
- Globale error-listener vangt 'Loading chunk N' / 'Failed to load chunk' / ChunkLoadError en triggert window.location.reload() — eenmalig per pageload via sessionStorage-flag, geen reload-loops. Lost het probleem op dat na elke deploy gebruikers met de pagina al open een 'Failed to load chunk'-error kregen.
v5.77.02026-05-05
Mobile editor + visuele rotatie-handle + snap-feedback
- PropertiesPanel werkt nu op mobile als bottom-sheet die slide-up komt zodra je een object selecteert. Backdrop dim, drag-handle bovenin, X-knop sluit, swipe of tap-buiten dismist. Alle tap-targets ≥44px (Apple HIG). Op desktop blijft hij als rechter-rail.
- Visuele rotatie-handle op de canvas: voor elk geselecteerd vrij-positioneerbaar object (bijgebouw, trap, sanitair, meubel, kolom) verschijnt een brick-red bolletje boven het object met een gestippelde lijn naar het midden. Sleep om te draaien — werkt op touch én muis. Shift-houden snapt naar 15° increments.
- Snap-toast 'Uitgelijnd op ander object' verschijnt 1.2s onderaan de canvas wanneer een drag eindigt op een magnetische snap-positie. Geeft directe feedback wat er is gebeurd.
- HeroOverlay 'Wat wil je bouwen?' is mobile-first: 1-kolom layout op kleine schermen, tap-targets ≥68px, grotere icoon-tegels, korte titel zichtbaar zonder description (dat krijg je op tablet+).
- PWA install-banner: op mobile verschijnt een dismissible banner 'Drawmit als app gebruiken?' met een Toevoegen-knop (Chrome/Edge) of een iOS-specifieke instructie ('Tap Delen → Voeg toe aan beginscherm'). Persistert dismiss in localStorage.
- Safe-area handling: hero-overlay, bottom-sheet en PWA-banner respecteren nu env(safe-area-inset-*) voor iPhone notch en Android gesture-bar. viewport-fit=cover stond al.
- Niet in deze release (v5.78 follow-up): mobile bottom action-bar (Undo/Redo/Add) en topbar-slim op mobile. Beide raken de 8000-regel page.tsx diep en zijn separately valideerbaar.
v5.76.02026-05-05
Editor-redesign: properties-paneel, hero-overlay, accent-rode bijgebouwen
- Selecteer een object op de tekening → een paneel rechts toont alle eigenschappen. Geen verstopte modals, geen keyboard-only rotatie meer. Velden: breedte, diepte, hoogte, rotatie (slider + 8 snap-presets 0/45/90/.../315°), offset langs gevel, X/Y in RD, delete-knop.
- Hero-overlay 'Wat wil je bouwen?' verschijnt op een lege canvas met vier opties: Uitbouw, Bijgebouw, Dakkapel, Erfafscheiding. Klik plaatst het object met sane defaults op een logische positie en selecteert het direct — properties-paneel opent automatisch.
- Visuele hiërarchie: bijgebouwen krijgen nu een brick-red accent-stroke (was muted wall-stroke), zodat ze direct onderscheidbaar zijn van het bestaande BAG-pand. Selectie verhoogt strokeWidth naar 3.
- Tool-laag opgeschoond: rotatie via wijzigAfmeting werkt nu ook voor bijgebouw en kolom (was eerst alleen trap/sanitair/meubel). Rotatie wordt genormaliseerd naar [0, 360). Geen aparte roteerObject-tool nodig.
- Tiny pub/sub selection-store (selection.ts) houdt PlattegrondCanvas en PropertiesPanel synchroon zonder de 8000-regel page.tsx aan te raken. PlattegrondCanvas spiegelt zijn selectedObjectId naar de store via één useEffect.
- Niet in deze release (volgende sprint v5.77): visuele rotatie-handle direct op canvas (sleep-bolletje boven selectie) en snap-toast 'Vastgeklikt op perceelgrens'. Vereist diepere touch in de canvas-monolith.
v5.75.02026-05-05
Landing-page sprint: probleem-first hero, 4-stap upsell, echte voorbeelden
- Hero herschreven naar Stripe/Linear-patroon: één sterk H1 ('Een tekenaar kost €2.000. Drawmit kost €4,95.') met de pijn-prijs vergelijking als motor. Geen feature-bullets, geen badges. Tagline 'Voor je begint te bouwen' positioneert Drawmit als eerste stap, niet als tekenvervanger voor de hele bouw.
- RouteTiles uitgebreid van 3-tile prijs-grid naar 4-stap upsell-ladder (Bekijken gratis · Check €4,95 · Bouwplan €49,95 · Projecten €99,95/mnd). Bouwplan blijft de hoofd-CTA (dubbele kolom, accent-tint, glow). Prijzen in mono/subtle in plaats van display-size — uitkomst krijgt de hiërarchie.
- ExportShowcase laat nu 3 ÉCHTE pagina's zien uit een live producePakket() voor Baldershof 1: situatietekening op luchtfoto/BGT (A3 1:500), 4 gevels met baksteen-textuur en hoogtes (A3 1:100), doorsnede A-A met verdiepingen en kapconstructie (A3 1:100). Vorige PNGs waren convex-hull-blobs uit een oudere pipeline.
- Nieuwe Vergelijking-sectie: Drawmit vs traditionele tekenaar als 7-rij tabel (kosten, doorlooptijd, aanpak, Bbl-toets, bestemmingsplan-check, welstand, bouwkundige expertise). Eerlijk over wat Drawmit NIET doet — bouwkundige fase blijft bij een professional, je levert IFC4X3 aan.
- Camera/foto-upload knop verwijderd uit de hero — hoorde niet thuis als landing-CTA, verplaatst naar /bouwplan-flow.
- Geolocation-knop gefixt: gebruikt nu LookupResult.id (altijd aanwezig) i.p.v. nummeraanduiding_id (optioneel), timeout van 5s naar 12s, specifieke foutmeldingen per geolocation-error-code (geweigerd / niet-bepaald / time-out).
- Service worker dev-error opgelost: in development wordt de SW niet meer geregistreerd en eventuele oude SW-registraties worden bij page-load actief verwijderd. Voorkomt 'sw.js installation error' in console.
- Nav-config gecentraliseerd in `lib/nav-config.ts`: PRIMARY_NAV met Check / Bouwplan / Projecten / Databronnen. Footer en SiteHeader trekken hieruit.
- Build-fix: root `package.json` + `pnpm-lock.yaml` (tijdelijke install voor cad-verify-dxf script) verwijderd zodat turbopack de monorepo-root correct op `web/` zet — voorkwam `Can't resolve 'tailwindcss'` in dev.
v5.74.02026-05-03
Vergunningvrij: afstand+nokhoogte uitleg gekoppeld i.p.v. losse regels
- Probleem: bij schuin dak met nok > 3 m kreeg je twee aparte regels — '≥ 1 m perceelgrens' en 'max nokhoogte X m via formule' — alsof je moest kiezen welke wint, en alsof buren een rol speelden. Verwarrend, want beide gelden tegelijk en zijn aan elkaar gekoppeld.
- Bijgebouw afstand-regel uitleg-tekst is nu expliciet: '1 m is wettelijk minimum (Bbl). Maar door afschuiningsformule heb je voor jouw nokhoogte van X m minstens Y m nodig — die strengere eis wint. Buren spelen geen rol.' Geen losse buren-overweging, geen keuze tussen regels.
- Bij schuin dak + nok > 3 m heet de aspect-naam nu 'min afstand zijdelingse perceelgrens (gekoppeld aan nokhoogte)' om visueel duidelijk te maken dat dit één samenhangend ding is.
- 'Zo los je dit op'-tip bij nokhoogte: als de geadviseerde afstand ≥ 1 m is, voegt nu '— dit voldoet automatisch aan het wettelijk minimum van 1 m' toe. Geen verwarring meer of de tip wel beide regels afdekt.
- Eerste tip ('Verlaag nokhoogte naar formuleMax') vermeldt nu expliciet bij welke afstand het past: 'dan voldoet jouw 1 m afstand'.
v5.73.02026-05-03
Vergunningvrij: race-condition fix + perceelgrens-toets gebruikt nu nokhoogte
- Bug: oudere full-fetch van edit N-1 kon de fast-fetch van edit N overschrijven — UI toonde dan gegevens uit een eerdere staat (bv. nokhoogte 4 m ingevuld, output zegt nok 3 m). Fix: AbortController per debounce-ronde, zowel fast als full krijgen abort-signal mee, beide checken `signal.aborted` na await voordat ze setVvResult aanroepen. useEffect cleanup aborted ook.
- Bug: schuin dak met nok > 3 m maar goothoogte ≤ 3 m kreeg ten onrechte 'mag op de perceelgrens'. De afstand-toets gebruikte alleen de goothoogte. Fix: voor schuin dak telt de NOKHOOGTE als bouwwerk-hoogte voor de afstand-eis (Bbl/bruidsschat). Plat dak blijft op bouwhoogte.
- PlanForm hint bij 'Afstand perceelgrens' toont nu het juiste criterium per daktype: schuin = nok > 3 m → ≥1 m; plat = bouwhoogte > 3 m → ≥1 m.
- Builder uitleg-tekst is nu specifiek: 'bij schuin dak (nokhoogte telt) hoogte X m > 3 m: minimaal 1 m van perceelgrens' — geen verwarring meer over wat er gemeten wordt.
v5.72.02026-05-03
Vergunningvrij: per overschrijding concrete oplossingen ('zo los je het op')
- Probleem: gebruiker zag 'jouw plan: 5 m × over met 1,53 m' bij nokhoogte, maar wist niet of breder maken, verder van perceelgrens of nokhoogte verlagen de oplossing was. Bij ervaringen met overschrijdingen ontbrak een actiegerichte routekaart.
- Per oordeel='over' kernregel rendert de UI nu een groene 'Zo los je dit op'-blok onder de regel met 1-3 concrete acties.
- Builder-suggesties (deterministisch berekend uit plan-state):
- • Nokhoogte schuin dak over: 'Verlaag nokhoogte naar X m' OF 'Verschuif Y m van perceelgrens (formule: (nok-3)÷0,47)'. Boven 5 m: expliciet 'altijd vergunning'.
- • Plat dak te hoog: 'Verlaag naar 3 m (plat)' OF 'Kies schuin dak — afstand Y m nodig voor jouw nok'.
- • Oppervlak over: 3 alternatieven (proportioneel kleiner, smaller bij behoud diepte, ondieper bij behoud breedte) met exacte breedte×diepte combo's.
- • Afstand perceelgrens te klein: 'Verschuif 1 m' OF 'Verlaag hoogte naar 3 m, dan mag op grens'.
- • Diepte aanbouw > 4 m: 'Verklein naar 4 m' OF 'Schuin dak met dakvoet ≤ 3 m'.
- Schema: ObjectKernregel.hoeOplossen?: string[] toegevoegd + Zod-validatie. Sonnet-output mag dit veld ook leveren — zit nu in deterministic builder, LLM-pad sluit aan.
v5.71.02026-05-03
Vergunningvrij wizard: subtypes per object + dakType voor bijgebouw + UI polish
- Subtypes per object-type: bijgebouw splitst nu in berging / garage / tuinhuis / werkplaats / atelier / dierenverblijf. Uitbouw: aanbouw / serre / erker / luifel / berging-aanbouw. Overkapping: carport / veranda / pergola / vrijstaand. Dakkapel: standaard / vlak-vullend / hoek. Erfafscheiding: schutting / muur / hekwerk / heg.
- DakType voor bijgebouw — radio plat/schuin met juiste hoogte-grenzen: plat dak max 3 m, schuin dak nokhoogte tot 5 m via afschuiningsformule (afstand × 0,47 + 3, max 5). Belangrijke fix: een vrijstaand bijgebouw 5 m hoog met PLAT dak is NIET vergunningvrij — alleen schuin dak haalt 5 m. Builder geeft een specifieke uitleg-tekst zodra deze fout-keuze wordt gemaakt.
- Atelier/werkplaats triggert een gebruiks-aandachtspunt (beroep-aan-huis vs. bedrijfsmatig gebruik) als extra kernregel.
- UI polish: SubtypePills component (compacte rounded-full buttons met uitleg-tekst), DakTypeRadio met SVG-icoon voor schuin dak, type-selector grotere kaarten met emoji-icoon en ring-shadow op selectie. PlanForm-card met gradient van surface naar surface/70 + shadow.
- Schema: `subtype` veld toegevoegd aan UitbouwSpec/BijgebouwSpec/OverkappingSpec/DakkapelSpec/ErfafscheidingSpec. BijgebouwSpec krijgt `dakType` + `nokhoogteM`. API-route parsers + bouwplan-logging extended met subtype + dakType. `vergunningvrij.ts` checkVergunningvrij vervangt simpele 5-m-bouwhoogte-check door dakType-aware logica met aparte goothoogte- en nokhoogte-checks bij schuin dak.
v5.66.02026-05-03
Vergunningvrij UX-redesign: van rapport-dump naar advies-card per object
- Probleem: 5-pagina rapport-dump met alle aanduidingen + alle archeologie-niveaus + alle afwijkingsregels + 8 voorbeelden + perceeldossier + welstand. Cognitive overload — gebruiker moet zelf samenrijgen wat voor zijn ene bouwsel relevant is.
- NIEUW: `lib/vergunningvrij/object-advies.ts` — Sonnet 4.6 krijgt alle Drawmit-data (compliance, aanduidingen op perceel, archeologie-triggers, welstand, afwijkingsregels) + ingevoerde objecten, en levert per object een ObjectAdvies met: verdict (vergunningvrij/voorwaarden/vergunning), kernregels (max-oppervlak/min-erfgrens/max-hoogte/dakvorm met getal+eenheid+bron), welstand-eisen, concrete actie + indieningsdocumenten, kort advies
- Kernregels-shape: `{aspect, regel: 'minimaal'|'maximaal'|'tussen'|'exact', getal, eenheid, uitleg, bron}` — UI rendert ze als `≥ 1 m`, `≤ 36 m²` chips met bron-attributie
- Voorbeeld voor uitbouw 4×4 m op Baldershof: max-oppervlak chip '≤ 36 m²' (uitleg: aanduiding bijgebouwen 100 m² minus bestaand 64 m²), min-erfgrens '≥ 1 m' bij hoogte > 3 m, max-hoogte '≤ 3 m' plat dak, plus welstand-eisen 'baksteen aardetint, schuin pannendak'
- Wired parallel met aiAdvies + escape-routes in route.ts (geen extra latency). Cache 24h op (sourceHash, objects-hash).
- UI: ObjectAdviesPanel als HOOFDSECTIE bovenaan rapport — kleur-gecodeerde card per object, kernregels met monospace-chips, welstand-eisen, 'Wat te doen'-blok met indieningsdocumenten-collapse.
- DECONGESTIE: bestaande secties (Toets-resultaat, PlanJuridisch, Perceeldossier, BestemmingsplanRegels, LokaleRegels, Welstand, Voorbeelden) verstopt onder collapsible '▾ Meer weten — alle perceeldata, plan-regels, welstand & bronnen'. Hoofdpagina toont nu alleen wat de aanvrager moet weten voor zijn ENE bouwsel.
- Open: nieuwe object-typen (buitentrap, dakterras, keerwand, functiewijziging) — sprint #32. Per-type input-form vervangt de generieke uitbouw/bijgebouw fields — sprint #30 vervolg.
v5.65.02026-05-03
Vergunningvrij paid-grade fase 9: GML deterministic detectie wint van LLM-gok
- Wired in `app/api/vergunningvrij/route.ts`: `findAanduidingenAtRdPoint(imroId, [rd_x, rd_y])` wordt aangeroepen NA het ophalen van het bestemmingsplan-extract. Als er een GML-seed in de repo is voor dit IMRO-plan, leveren ze hits — die worden absoluut geprefereerd boven LLM-perceelfilter.
- Detectie-keten: GML deterministic > LLM-perceelfilter > geen filter (alle aanduidingen). Voor BVOs zonder GML-seed (zoals Brakel) blijft LLM-perceelfilter ongewijzigd werken.
- Response payload: nieuwe `bestemmingsplanLokaal.geomDetectie: { haveSeed, hits[] }` met de exacte aanduidingen die het RD-punt bevatten plus hun typePlanobject + label + bestemmingsvlak-referentie.
- UI-badge in `BestemmingsplanRegelsPanel`: groene 'GML deterministic' tag bij plans met seed, of techgrijze 'AI-perceelfilter' tag voor LLM-fallback. Maakt voor de gebruiker direct zichtbaar of detectie betrouwbaar (geometric) of best-guess (LLM) is.
- Compliance-checks gebruiken automatisch de GML-namen-set wanneer beschikbaar — overschrijdings-blokkades worden alleen tegen daadwerkelijk-aanwezige aanduidingen gegenereerd.
- Voor Brakel (BVO, geen GML-seed): geen verandering — alles via AI-perceelfilter zoals voorheen. Voor toekomstige BP-gemeenten (Tiel ready om toe te voegen, 528-feature seed reeds gecommit): instant deterministic detectie zodra registry-entry + regels-extract-seed worden toegevoegd.
v5.64.02026-05-03
Vergunningvrij paid-grade fase 8: GML point-in-polygon — deterministische aanduiding-detectie
- NIEUW: `lib/bestemmingsplan/gml-parser.ts` — lichtgewicht IMRO-GML 2012 parser (regex-based, geen externe XML-library) die per feature naam + polygons in EPSG:28992 RD New extract. Ondersteunt Functieaanduiding/Bouwaanduiding/Gebiedsaanduiding/Bouwvlak/Maatvoering/Enkelbestemming/Dubbelbestemming, met MultiSurface/MultiPolygon support
- NIEUW: `lib/bestemmingsplan/aanduiding-geom.ts` — point-in-polygon lookup via ray-casting op RD-RD. `findAanduidingenAtRdPoint(imroId, [rdX, rdY])` returnt array van aanduidingen die het perceel-punt bevatten
- NIEUW: `lib/bestemmingsplan/seeds-aanduidingen.ts` met statische JSON-imports per IMRO-plan. Productie leest direct (planviewer.nl blokkeert hosting-IP, dus seed-flow zoals voor regels-extract)
- NIEUW: `scripts/seed-gml-aanduidingen.mts` — one-off downloader die op laptop het IMRO-GML van planviewer.nl ophaalt, parser draait, statistieken toont en compact JSON-seed schrijft. Ondersteunt elke gemeente met een echt bestemmingsplan
- Eerste seed: Tiel Binnenstad (`NL.IMRO.0281.BP00001-oh01`) — 528 features (143 enkelbestemmingen, 92 functieaanduidingen, 116 bouwvlakken, 156 maatvoeringen). 693 KB JSON in repo
- Geverifieerd op real address: Westluidensestraat 1 Tiel valt binnen bouwvlak + enkelbestemming 'Centrum-2'. Detectie is deterministic, geen LLM-gegok
- Belangrijke ontdekking: BVO's (beheersverordeningen, zoals Brakel) hebben GEEN aanduidings-VLAKKEN in hun GML — alleen plangebied-grenzen. Aanduidingen worden tekstueel gerefereerd ('ter plaatse van de aanduiding bijgebouwen'). Voor BVOs blijft LLM-perceelfilter de aangewezen oplossing; voor echte BPs werkt point-in-polygon
- Infrastructuur-only release — wiring in route.ts (perceelfilter automatisch upgraden naar point-in-polygon zodra GeoJSON-seed beschikbaar) volgt zodra een productie-test-perceel in Tiel-binnenstad beschikbaar is. Voor nu blijft Brakel via LLM-perceelfilter werken
v5.63.02026-05-02
Vergunningvrij paid-grade fase 7: escape-routes engine — blokkade ≠ einde
- Probleem fase 6: compliance-check zegt 'blokkade — vergunning vereist (eventueel via kruimelafwijking)' maar koppelt NIET welke artikel/voorwaarden/extra-m² die kruimelafwijking biedt. ODR2604049 noemt expliciet 'art. 30 kruimelafwijking' — Drawmit moet dat ook geven.
- NIEUW: `lib/bestemmingsplan/compliance.ts` returnt naast checks ook gestructureerde `blokkades: ComplianceBlokkade[]` met (aanduidingNaam, type, grens, eenheid, bestaand, gepland, totaal, overschrijding, artikel) — input voor escape-routes engine.
- NIEUW: `lib/bestemmingsplan/escape-routes.ts` — Sonnet 4.6 krijgt blokkades + plan-afwijkingsregels + bouwplan-context, returnt per blokkade ranked routes met (naam, artikel, bron [plan/bbl-kruimel/ow-buitenplans/ow-hardheid], extra-m², dekking [volledig/deels/onbekend], haalbaarheid [hoog/medium/laag], uitleg, concrete actie, voorwaarden).
- Generieke routes: Bbl bijlage II kruimelgevallen, Ow art 5.30 buitenplanse afwijking, Ow art 5.6 hardheidsclausule — altijd genoemd als vangnet.
- Sortering: routes met dekking='volledig' eerst, dan 'deels', dan 'onbekend'. Binnen elke bucket: hoog → medium → laag haalbaarheid.
- Cache: in-memory 24h op (imroId, blokkades-hash). Repeat-aanvragen op zelfde adres+plan zijn gratis.
- Wired in route.ts: alleen aangeroepen als compliance.blokkades.length > 0. Best-effort: faalt → null. Voorbeeld voor Baldershof 4×15=124m² blokkade: route 'Algemene 10%-afwijking maatvoering Art 28' → +10 m² → dekking='deels' (124−10=114 nog over), haalbaarheid='hoog'.
- UI: nieuwe `EscapeRoutesBlock` component bovenaan BestemmingsplanRegelsPanel met emerald gradient-border. Per blokkade-key een lijst route-cards met dekking-tone (groen=volledig, amber=deels), haalbaarheid-chip, +N m² extra-chip, 'Wat te doen' actie-blok, voorwaarden-collapsible, plus generieke routes onder een aparte divider.
- Disclaimer: 'Gebruik als gespreksstof voor de gemeente — niet als juridisch advies'.
v5.62.02026-05-02
Vergunningvrij paid-grade fase 6: numerieke compliance-toets (ODR-match)
- NIEUW: `lib/bestemmingsplan/compliance.ts` — pure functie die per aanduiding met numerieke waarde (parseert 'max 100 m²', 'max 50%', 'max 5 m') de bestaande+geplande bebouwing TOETST en een verdict ok/waarschuwing/blokkade geeft. Dit is dé ODR-logica: bij 106 m² > 100 m² grens → vergunningplichtig.
- Bucket-classificatie: `oppervlakte_bijgebouwen` (matcht naam+beperking met 'bijgebouw|aanbouw' + 'm²'), `bebouwingspercentage`, `bouwhoogte`, `goothoogte`, `wooneenheden`. Onbekende types worden geskipt zonder zwabberen.
- Drempels: <=90% van grens → ok, 90-100% → waarschuwing (dichtbij), >grens → blokkade met expliciete overschrijdings-m²
- Wired in route.ts: alleen aanduidingen die door perceelfilter als 'vermoedelijk van toepassing' zijn gemarkeerd worden getoetst. Geplande nieuwe m² = som van uitbouwen+bijgebouwen+overkappingen. Indicatie-escalation: blokkade hier escaleert ook naar 'waarschijnlijk_vergunningplichtig'.
- Voor Baldershof (bestaand 64 m² bijgebouwen, aanduiding bijgebouwen 100 m²): plan 4×4=16 → 80 m² OK, plan 6×6=36 → 100 m² grens-waarschuwing, plan 7×7=49 → 113 m² BLOKKADE met overschrijdingsboodschap (zoals ODR2604049 zegt over 106 m²)
- Aanvullende info-check voor 'max 50%' in dezelfde aanduiding: gemarkeerd als waarschuwing met 'vereist plankaart-vector om aanduiding-vlak te kennen' — kandidaat voor sprint 6 (GML point-in-polygon).
v5.61.02026-05-02
Vergunningvrij paid-grade fase 5: perceelfilter + plankaart deep-link
- Probleem fase 4: BestemmingsplanRegelsPanel toonde ALLE 33 aanduidingen uit Brakel BVO; gebruiker moest zelf bepalen welke op zijn perceel liggen — overweldigend
- Onderzoek: PDOK Wro WMS heeft `besluitsubvlak_a` layer maar GetFeatureInfo levert geen attributen voor BVO-vlakken (alleen geometry); `afnemers.ruimtelijkeplannen.nl` resolvet niet meer; gemeente-IMRO-GML staat op een hosting-IP-geblokkeerd subdomein. Conclusie: point-in-polygon op publieke API-data niet trivial.
- Tussentijdse fix (`lib/bestemmingsplan/perceelfilter.ts`): Sonnet 4.6 reasoneert per aanduiding of die VERMOEDELIJK op het perceel ligt, op basis van BAG-pand gebruiksdoel + bouwjaar + GBO-m² + woonplaats + monument-status. Output: subset met vermoedelijkVanToepassing + redenering per aanduiding. Vuistregels in system prompt: bedrijfswoning alleen bij bedrijfspand, monument-aanduiding alleen als rijksmonument=true, plankaart-specifieke maatvoeringen ALTIJD relevant, A2-zone/dijk-zone niet zonder plankaart, Waarde-Archeologie 1 als conservatieve aanname.
- Wired in route.ts: filtert checks-array zodat irrelevante aanduidingen niet meer in result.checks komen — bouwt af van 33 → ~10 voor woonperceel Baldershof.
- UI: BestemmingsplanRegelsPanel splitst in 'Aanduidingen op jouw perceel' (default open, gefilterd door perceelfilter, met groene redenering-zin) en 'Andere aanduidingen in het plan' (collapsible details, met redenering waarom NIET).
- NIEUW: deep-link 'Open plankaart op jouw perceel' naar ruimtelijkeplannen.nl/viewer met IMRO-id + RD-coordinaat — 1 klik om visueel te verifiëren dat de aanduiding klopt. Naast de bestaande regels-link en toelichting-link.
- Cache: in-memory 24h op (imroId, weergavenaam, gebruiksdoelen). Re-runs hetzelfde adres = geen LLM-call.
- Volgende stap (sprint 6): point-in-polygon via gemeente-GML download + lokale parse — dat geeft 100% accuracy ipv LLM-inference. Voor nu: pragmatic 80% oplossing die de UI bruikbaar maakt.
v5.60.02026-05-02
Vergunningvrij paid-grade fase 4: lokale plan-regels via PDF/HTML-extract
- ROOT-CAUSE fix voor de ODR-mismatch: gemeente-eigen aanduidingen ('aanduiding bijgebouwen — max 100 m²') + archeologie-triggers ('art. 20.3.1: ophogen >30m² of >30cm vergunningplichtig') zaten NIET in DSO Presenteren v8 voor Zaltbommel — die zaten in de Wro-beheersverordening die de gemeente nog niet via DSO heeft ontsloten. Diagnose via nieuwe `/api/admin/dso-dump` debug-endpoint
- NIEUW: `lib/bestemmingsplan/` met registry (Zaltbommel-Brakel als eerste seed: BVO Brakel-Gameren-Zaltbommel-Kerkwijk, IMRO NL.IMRO.0297.BKLBVO20150012-VS01), fetcher (HTML van planviewer.nl/imro/files + PDF via unpdf), en Sonnet 4.6 extractor met strict Zod-output
- Output-schema: aanduidingen (numerieke beperkingen op plankaart), archeologieTriggers (oppervlakte+diepte-drempels per Waarde-Archeologie), afwijkingsregels (kruimels/hardheidsclausules), relevanteArtikelen (bouwhoogte/gebruik/etc.)
- Wired in `/api/vergunningvrij/route.ts`: registry-lookup op gemeentenaam, fetch+extract parallel met DSO-rules-extractor in Promise.all, checks gegenereerd uit aanduidingen (waarschuwing als strenger dan bruidsschat), archeologie-triggers (waarschuwing met drempel), afwijkingsregels (ok-status — meer ruimte mogelijk)
- Source-factory `bestemmingsplanLokaalSource()` met IMRO-id + plan-vastgesteld-datum + content-hash zodat evidence-ledger de exacte plan-versie vasthoudt
- Indicatie-escalation: blokkade in bestemmingsplan-checks escaleert ook naar `waarschijnlijk_vergunningplichtig`
- Nieuwe `BestemmingsplanRegelsPanel` UI tussen PerceeldossierPanel en LokaleRegelsPanel — prominent gradient-paneel met rode tag voor strengere regels, amber voor archeologie-triggers met drempel-chip, emerald voor kruimelafwijkingen, collapsible voor overige artikelen + bron-links
- Ook: docker-compose.yml — DEV_ADMIN_TOKEN doorgegeven aan drawmit-container voor admin-routes
- Voor Baldershof Brakel zou de extractor nu de aanduiding-100m² + Waarde-Archeologie 30m²/30cm-drempel + Artikel 30 overgangsrecht + Artikel 28 kruimelafwijking moeten vinden — getoetst tegen ODR2604049 brief van Omgevingsdienst Rivierenland als gold-standard
v5.59.02026-05-02
Vergunningvrij paid-grade fase 3: AI-correlatie advies (Sonnet 4.6)
- NIEUW: `lib/vergunningvrij/ai-advies.ts` stuurt alle gegenereerde checks + perceeldata + bouwplan naar Claude Sonnet 4.6 met strict JSON-schema-prompt voor een TOP-5 risico-rangschikking
- Risico-output: rang 1-5 + ernst-tag (kritiek/hoog/medium/laag) + concrete actie-tekst + bron-attributie ('WKPB + bestemmingsplan-archeologie'). Geen herhaling van checks — synthese over bronnen heen
- Compactering: `compactBron()` reduceert ~50KB ruwe JSON naar ~3KB feitenlijst per perceel zodat de prompt onder 5K input-tokens blijft (~$0.015 per call)
- In-memory cache (24h TTL) op `sourceHash + bouwplan-hash` — dezelfde combinatie genereert geen tweede LLM-call. Cost-tracking via bestaande `logAiCall`
- Best-effort: faalt → null. Bij ANTHROPIC_API_KEY ontbreken / credit-cap / parse-error returnt route gewoon zonder AI-paneel — geen 502, geen kapotte pagina
- Nieuw `AiAdviesPanel` UI: prominent gradient-paneel bovenaan rapport (boven GemeenteRegelsPanel), met samenvatting + genummerde risico-cards, ernst-chip, 'wat te doen'-blok per risico, en bron-footer + AI-disclaimer
- Smoke-getest: route return aiAdvies-key in payload, graceful null bij credit-cap (verified — productie hervat zodra balance is aangevuld)
- Bekend: ANTHROPIC_API_KEY credit balance was tijdens deploy laag — productie-monitoring via `credit-alert.ts` blijft actief, AI-advies activeert zodra credits aangevuld zijn
v5.58.02026-05-02
Vergunningvrij paid-grade fase 2: brede perceeldossier-dekking (15 bronnen)
- NIEUW: `lib/vergunningvrij/perceeldossier.ts` orchestreert 15 datasource-modules in één Promise.all met graceful catch=null per call — geen enkele bron breekt de hoofdtoets
- Erfgoed-uitbreiding: `rce-cultuurhistorie` voor werelderfgoed (BLOKKADE) + cultuurhistorisch beschermd gebied buiten rijksmonument/stadsgezicht
- Natuur: `natura2000` triggert effectenscreening-waarschuwing (art. 5.11 Ow), `nationale-parken` triggert beheerautoriteit-warning
- Water-cluster: `waterschappen-zoneringen` (waterkering / beschermingszone), `waterschappen-beheergebieden` (peilgebied), `bodemloket` (grondwaterbeschermingsgebied + PFAS-locatie nabij)
- Bodem & fundering: `funderingsrisico` (% pre-1970 panden + bodemgesteldheid), `bro-grondwater` (gemiddeld maaiveld in NAP), `bodemkaart` (slappe-bodem detectie via klei/veen/leem regex)
- Milieu: `rivm-geluidkaart` (Lden ≥ 60 dB → waarschuwing), `rivm-leefomgeving` (NO₂ + PM2.5 + buurtnaam, info), `geluidzones-luchthavens`, `rivm-hoogspanning` (magneetveldzone)
- Infra: `prorail-spoorwegen` (spoor nabij + aantal sporen)
- Bestuur: `bestuurlijke-gebieden` koppelt gemeente + provincie (informatieve ribbon, hook voor fase 3 provinciale omgevingsverordening)
- 6 nieuwe `SourceProvenance` factories + 6 catalog-entries met haystack-classifiers (`natura 2000`, `waterkering`, `funderings`, `geluidsbelasting`, etc.) — evidence-ledger bevat nu alle bronnen
- Indicatie-escalation uitgebreid: ook een blokkade uit perceeldossier (UNESCO werelderfgoed) escaleert naar `waarschijnlijk_vergunningplichtig`
- Nieuwe `PerceeldossierPanel` UI: 6 cluster-secties met tone-tiles (ok/info/warn/fail), bestuur-ribbon onderaan; geclusterd boven LokaleRegelsPanel
- Smoke-getest: Baldershof Brakel (waterkering + fundering 100% pre-1970, +2.5m NAP, gem. Zaltbommel), Dam Amsterdam (fundering + Lden 67 dB, +1.37m NAP), Coolsingel Rotterdam (fundering + Lden 64 dB + spoor nabij)
v5.57.02026-05-02
Vergunningvrij paid-grade fase 1: bestemmingsplan + WKPB + archeologie
- NIEUW: `/api/vergunningvrij` haalt parallel het Wro-bestemmingsplan (PDOK Ruimtelijke Plannen WMS), publiekrechtelijke beperkingen (PDOK Kadaster WKPB) en archeologische verwachting (RCE IKAW3) op naast de bestaande BAG/BRK/3DBAG/RCE/DSO-bronnen
- Nieuwe pure helper `lib/vergunningvrij/perceelcontext.ts`: vertaalt ruwe brondata + bouwplan-hoogtes naar `VergunningvrijCheck`-entries die direct in de bestaande checks-lijst gepushed worden — engine zelf blijft puur Bbl/bruidsschat
- Bestemmingsplan-checks: enkelbestemming + bouwvlak ja/nee, max-bouwhoogte vergeleken met jouw bouwplan (BLOKKADE bij overschrijding), max-goothoogte/bebouwingspercentage als waarschuwing, dubbelbestemming geclassificeerd op archeologie/cultuurhistorie/water/leiding/natuur met passende uitleg
- WKPB-checks: per beperking een entry; gemeentelijk monument escaleert automatisch naar BLOKKADE met indicatie-override naar 'waarschijnlijk_vergunningplichtig' — ook als de bruidsschat-toets zelf 'onbekend' of 'mogelijk_vrij' opleverde
- Archeologie: IKAW palette-index → status (hoog/middelhoog = waarschuwing met onderzoeks-trigger, laag/zeer laag = ok, niet gekarteerd = onbekend) met disclaimer dat IKAW landelijk en niet bijgewerkt sinds 2008 is
- Drie nieuwe `SourceProvenance` factories (`bestemmingsplanSource`, `wkpbSource`, `archeologieSource`) + drie catalog-entries in `rule-catalog.ts` met haystack-classifiers — evidence-ledger en sourceHash bevatten nu de drie bronnen
- Nieuwe UI-sectie 'Plan & juridische beperkingen' op `/vergunningvrij` met cards voor bestemmingsplan (incl. maatvoering + dubbelbestemming-warning), WKPB (gemeentelijk monument apart rood gemarkeerd) en archeologie (verwachtings-tag met tone)
- Smoke-getest: Baldershof Brakel (geen Wro-plan / geen beperkingen / niet gekarteerd), Dam Amsterdam (Centrum-1 + Waarde-Archeologie 8 + 2 WKPB waarvan gemeentelijk monument → blokkade + indicatie-escalation), Coolsingel Rotterdam (centrum + monument → escalation werkt)
v5.41.02026-04-30
Output-kwaliteit sprint: auto-fenestration + gevel-patroon + opt-in flow
- FIX `node:crypto` in edge-bundle: `instrumentation.ts` splitst nu naar `instrumentation-node.ts` zodat Turbopack drizzle/postgres niet voor edge-runtime probeert te bundelen — lokaal dev werkt weer (was elke request HTTP 500)
- FIX RD projection drift in auto-fenestration: gebruikte eigen Bessel-polynomial wgs84ToRd die ~40m off was — vervangen door canonical proj4 versie uit `lib/rd.ts`. Walls landden voorheen op verkeerd pand
- Polygon-clip voor walls + filter voor kamers/sanitair/meubels die in cut-out van L-vormige panden vielen — Baldershof toont nu Woonkamer/Keuken/Berging/Toilet ipv lege doos
- Nieuwe `drawGevelMaterialPattern()` op gevels: baksteen (mortelvoegen + halfsteens verticalen) of horizontale rabatdelen, geclipt op silhouet via `hatchLineIntersectPoly`. Output van ~86KB → ~410KB met zichtbaar metselwerk
- Raamroeden voor draaiend (3-pane top + 2-pane bottom op wide+tall) en voor vast (≥0.9×0.9m → 2×2 of 3×2 grid) ipv simpele bar/X — match NL traditional kozijnen
- Density cap voor mega-gebouwen: max 10/floor/side voor woningen, 14 voor kantoor/winkel; bigger 2.4×1.5m windows bij wallLen>25m. Coolsingel: 1624 → 513 ramen
- PandZ.gevelMateriaalId: scene-native materiaal-override per pand (niet meer alleen body-param). voegPandToe tool accepteert het
- OPT-IN: `autoFenestration` default = false op `/api/export/scene`. Anonymous/LLM krijgt silhouet. Editor banner ('Lege scene') is enige UX-trigger om auto-fen te materialiseren in scene
- Auto-gemarkeerde elementen: dashed lines + titelblok-disclaimer ('Indeling, ramen, deuren en inrichting geschat...')
- Smoke gate dichtgespijkerd: tier-routes assereren 401 in prod (geen 200/401 fallback meer). Nieuwe content-tests voor scene-export beide paden (default silhouet + opt-in auto-fen)
- Editor: prominente dashed banner met 'Vul automatisch in (geschat)' knop bovenaan sidebar bij lege scene — runAutoFenestrate() callback gedeeld tussen banner en components-tab
v5.40.02026-04-24
Kleur-fundament herzien + echte glassmorphism + volledig nieuwe visuele uitstraling
- ROOT-CAUSE fix: surface-tokens lagen op 0.05 lightness-stappen (bg 0.13 → surface 0.18 → …) — ALLES onzichtbaar. Nu: bg 0.12, surface 0.20, surface-2 0.27, surface-3 0.35, border 0.42, border-strong 0.58 (zichtbare stappen)
- Glass was DONKERDER dan bg (gebroken glassmorphism). Nu glass 0.32/0.45 — LICHTER, echt frosted effect met backdrop-blur(28px) + saturate(1.8)
- Nieuwe tokens: --color-surface-3, --color-brand-ring, --color-tech-ring, --shadow-xl, typografie-schaal (--text-micro/caption/body/heading/title/display)
- Utility classes: .glass, .panel-elevated, .ring-brand, .ring-tech, .spinner (branded loader)
- Card component: nieuwe 'elevated' variant (surface-2 + shadow-lg + rounded), 'glass' gebruikt echte .glass utility, 'default' krijgt shadow-md
- Button: sterkere shadows op primary/secondary, ring op active-states, vergrote padding (sm: px-3 py-1.5, md: px-4 py-2)
- Badge: opacity 20% → 25%, border-opacity 25% → 50% (leesbaar)
- Collapsible: header krijgt bg-surface-2/60 bij open + brand-kleur chevron
- NIEUW: SegmentedControl met motion layoutId spring-animatie (gebruikt voor Regulier/Professional toggle)
- NIEUW: Input component met icon prefix, error states, focus ring
- NIEUW: Select component met chevron, error states
- NIEUW: Spinner component (conic-gradient brand kleur, vervangt animate-spin)
- SiteHeader: actieve nav-item krijgt motion layoutId bubble (brand/20 + border), mobile hamburger 36px → 44px
- Wordmark: motion.span met whileHover scale 1.03 spring-animatie, sterkere drop-shadow
- Editor sidebar: gebruikt nieuwe .glass utility (echt transparant frosted), SegmentedControl voor mode-toggle, project-items met brand/15 bij selected
- Landing hero: 2x glow-lagen (warm+tech) voor diepte, blueprint opacity 70% → 55%
- Landing CTA: echte glass container + glow-brand (was border-gradient + noise)
- Landing ValueStrip: bg-surface-2 met gap-px via bg-border = zichtbare cellen
- Pricing: highlighted tier → variant='elevated' + glow-brand, bundel-10 zelfde
- Check page: header bar → variant='elevated', DataCards krijgen hover-lift
- Status page: StatCards → variant='elevated' met grotere typografie
- Docs: EndpointRow nu op bg-surface-2 (zichtbaar)
- 404 / offline / error pages volledig herdesigned met glass panels + blueprint bg + brand glow
- Login: gebruik nieuwe Input + Card elevated + CTA button variant
- PWA manifest: theme_color #1c1a17 → #b8443a (brand)
- Custom scrollbars: 6px → 8px, rounded met padding-box border, hover states
- Version bump v5.36 → v5.40
v5.35.02026-04-24
Visuele polish: glow-effecten, gradient borders, scrollbar styling, Card/Badge overal
- Nieuwe CSS utilities: glow-brand, glow-tech, glow-brand-hover (box-shadow glows voor cards/elementen)
- Gradient border utility (border-gradient) — warm→tech gradient border via background-clip trick
- Noise texture overlay (.noise) — subtiele ruis voor depth op panels
- Animated gradient background (.bg-gradient-animated) — slow-shift hero achtergrond
- Section dividers: gradient lijn (brand→tech) i.p.v. plain border
- Glass panel utility (.glass-panel) — sterkere backdrop-blur variant met saturatie
- Custom scrollbar styling — 6px, rounded, donkere thumb, transparante track
- CTA section: gradient border + noise texture overlay
- Hero diagram: glow-brand-hover hover-effect
- Status pagina: Card/Badge componenten toegepast
- Docs pagina: Card/Badge/Button componenten toegepast
- Vergelijk pagina: Card/Badge/Button componenten toegepast
v5.34.02026-04-24
Visuele redesign: glasmorphism sidebar, Regulier/Professional modus, Card/Button overal
- Editor sidebar: glasmorphism achtergrond (backdrop-blur-xl) met frosted-glass effect
- Regulier/Professional toggle: bouwdetails, IFC/DXF/CityJSON-export en geo-data alleen zichtbaar in Professional modus
- 7 sidebar-secties omgebouwd naar Collapsible component met geanimeerde chevron + smooth height-transitie
- Landing page: Feature cards → Card variant='glass', workflow cards → Card, section dividers, Badge voor hero-label
- Pricing cards: Card variant='glass' voor highlighted tier, hover-lift + shadow-effecten
- AudienceCard: Card variant='glass'/'outlined', CTA-knoppen met shadow + hover-lift
- Check pagina: Card/Badge/Button componenten toegepast
- Pricing pagina: Card/Badge componenten toegepast
- Sectie-dividers tussen alle landing page blokken (gradient lijn)
- Footer links: hover-translate animatie
v5.33.02026-04-24
UI/UX redesign: Lucide iconen, typografie-vloer, contrast-fix, UI-componenten
- Alle emoji/unicode symbolen vervangen door Lucide iconen — ✕→X, ▾▸→ChevronDown/Right, ⫷⫸⊤⊥⇔⇕→alignment icons, 📄→FileText, 🛋→Armchair/Sofa, etc.
- Typografie-vloer: alle text-[7px]/[8px]/[9px]/[10px] opgehoogd naar text-[11px] (minimum leesbare maat) — 469 voorkomens in 20 bestanden
- Kleurcontrast: --color-subtle 0.52→0.58 (dark), --color-muted 0.45→0.40 (light) — WCAG 4.5:1+
- Opacity-hacks verwijderd: text-subtle/70, text-muted/50, etc. → directe token-waarden
- Nieuwe design tokens: --color-success/warning/error/info, --shadow-sm/md/lg, --color-glass, --radius-xs/sm/md/lg
- Nieuwe UI-componenten: Button (5 variants), IconButton, Card (4 variants), Badge (6 variants), Collapsible (geanimeerd)
- ChatPanel: motion-animaties op berichten, tool-calls met iconen, typing indicator, pinned input
- DossierChecklist: motion progress bar, Lucide iconen, semantische kleuren
- PhotoCoach: Lucide iconen per fototype
- PlattegrondCanvas toolbar: alignment icons i.p.v. unicode symbolen, alle close-knoppen → X icoon
- Wordmark: logo vergroot (compact h-10, default h-14), uniforme drop-shadow
v5.32.02026-04-24
Vergunningvrij 100% correct: dakkapel, diepe uitbouw, schuin-dak-formule
- Dakkapel: volledige bruidsschat art. 22.27/22.28 toets — max 1,75 m hoogte, 0,5–1 m boven dakvoet, ≥ 0,5 m onder nok, ≥ 0,5 m van dakrand
- Dakkapel: voordakvlak waarschuwt voor gemeente-uitsluiting (art. 22.28), beschermd gezicht → blokkade
- Dakkapel: automatische nok-afstand berekening uit 3DBAG gebouwhoogtes wanneer afstandNokM niet opgegeven
- Diepe uitbouw: bij diepte > 4 m en hoogte > 3 m is schuin dak vereist — nokhoogte-formule (afstand perceelgrens × 0,47 + 3, max 5 m) wordt nu getoetst
- Uitbouw dakType en nokhoogteM velden toegevoegd aan de API
- Bronverwijzingen gecorrigeerd: art. 22.36 → art. 22.27 voor dieptezones
- Bestaande bijgebouwen (garage, schuur) automatisch gedetecteerd uit BAG — tellen nu mee in achtererf-staffel
- Bebouwingspercentage telt nu alle panden op het perceel (niet alleen het hoofdgebouw)
- Scene-bijgebouwen en BAG-bijgebouwen worden opgeteld (niet meer of/of)
v5.31.02026-04-24
Kamerlabels, dimensie-rotatie, vergunningvrij art. 22.36 sub 2+3
- Auto-inrichting genereert nu kamerlabels (Woonkamer, Keuken, Slaapkamer, etc.) die op canvas en PDF verschijnen
- Dimensie-labels roteren mee met de maatlijn — altijd leesbaar vanuit onderkant of rechterkant (NEN 2574)
- Dubbele maten opgelost: wallRuler-labels verwijderd, BAG-polygon collinear segments samengevoegd
- Perceelgrens-afstanden loodrecht op gevelmuur (niet meer cardinaal/schuin)
- Bbl setback-lijn verwijderd (verwarrend), buur-percelen verwijderd (visueel schoner)
- Vergunningvrij art. 22.36 sub 2: bedrijfsmatig bebouwingspercentage (uit DSO functie-aanwijzing)
- Vergunningvrij art. 22.36 sub 3: gemengd perceel — split woon/bedrijf staffelberekening
- DSO parsing uitgebreid: detecteert bedrijfsmatige functies en gemengd gebruik uit gebiedsaanwijzingen
v5.30.02026-04-21
Perceelgrens fix: correct perceel, ray-cast afstanden, buur-percelen verwijderd
- Primair perceel: selecteert nu het kleinste perceel dat de pand-centroïde bevat — pakt N-996 (waar het huis staat) in plaats van N-995 (voortuin)
- Perceelgrens-afstanden: ray-casting loodrecht op elke gevelmuur i.p.v. dichtste punt — geen rare schuine afstanden meer
- Buur-percelen: lichtere rode stippellijnen van alle 56 kadastrale percelen verwijderd — alleen je eigen perceel is zichtbaar
- Geen overlappende maatvoering meer: pand-afmetingen en perceelgrens-afstanden staan nu altijd in verschillende richtingen
v5.29.02026-04-23
UX verbeteringen: gevel side-picker, auto-inrichting feedback, perceelgrens fix
- Gevel-tab: side-picker (N/O/Z/W) bovenaan de tab — kies de gevel waar je ramen/deuren op wilt plaatsen
- Auto-inrichting: resultaat verschijnt nu als groene/rode banner i.p.v. browser alert()
- Onboarding wizard: brochure-selectie opent nu de brochure-upload sectie
- Primair perceel fix: gebruikt nu percelen[0] van de BRK API (het adres-perceel) i.p.v. point-in-polygon heuristiek
- Bundle slaat primaryPerceelId op — alle renderers (editor, situatie-PDF, plattegrond-PDF) gebruiken consistent hetzelfde perceel
- Buurpand-afmetingen verwijderd van de editor-kaart — alleen eigen pand + perceelgrens-afstanden
v5.27.02026-04-21
Maatvoering: totale pandafmetingen + centreringslijnen verwijderd
- Totale pandafmetingen: breedte en diepte van het gebouw worden nu als maatlijn langs de buitenrand getoond (vet, doorgetrokken lijn)
- L-vormige en niet-rechthoekige panden tonen nu per wandsegment een eigen maatlijn naast de totale afmeting
- Pand-naar-perceelgrens afstanden lopen nu buiten het gebouw (niet meer dwars erdoorheen als centreringslijnen)
- Centroid-kruislijn verwijderd uit het midden van het gebouw — alleen een subtiele stip blijft als referentiepunt
- Pand-dimensies zijn visueel prominent (vet, groter lettertype), perceelgrens-afstanden zijn subtieler (gestreept, lichter)
v5.26.02026-04-21
Defensieve robuustheid: UUID fallback, PDF centroid, object duplicatie
- Scene tools: 13 crypto.randomUUID() calls vervangen door uuid() helper met fallback — voorkomt crashes in omgevingen zonder Web Crypto API
- Object dupliceren: coördinaat-offset controleert nu per veld (x1, y1, x2, y2) i.p.v. alleen x1 — voorkomt NaN bij objecten met onvolledige coördinaten
- PDF situatietekening: centroid-berekening voor straatzijde-label crasht niet meer bij leeg coördinaten-array
- Tekeningenpakket PDF: individuele pagina-laadfouten worden nu als waarschuwing gemeld i.p.v. crash van het hele pakket
- PlattegrondCanvas: centroid() geeft [0,0] terug bij lege ring i.p.v. [NaN,NaN] — voorkomt cascading NaN in kaartberekeningen
- PlattegrondCanvas: detectVoorgevelEdge() geeft null terug bij degenerate edge (lengte < 0.01mm)
v5.25.02026-04-20
Robustheid: SSE stream-flush, tool-validatie, circuit-breaker fixes
- SSE chat stream: TextDecoder wordt nu correct geflusht bij stream-einde — laatste chunk ging soms verloren op trage verbindingen
- Streaming tool JSON-parsefouten worden nu als tool_error gemeld in plaats van stille uitvoering met leeg input-object
- Non-streaming chat: finalText wordt alleen overschreven als Claude daadwerkelijk tekst retourneert (voorkomt leeg antwoord na tool-calls)
- Coördinaat-validatie op scene tools: binnenmuren, erfafscheidingen, maatlijnen, verplaatsingen en afmetingswijzigingen accepteren geen NaN/Infinity meer (Zod .finite())
v5.24.02026-04-20
Toegankelijkheid + non-streaming circuit-breaker
- ARIA-labels op alle icon-only knoppen: zijbalk toggle, 3D massing, PDF preview, chat FAB, command palette FAB, export preview
- Non-streaming chat route krijgt dezelfde circuit-breaker als streaming: 2 opeenvolgende volledig mislukte turns → leesbare foutmelding
v5.23.02026-04-20
Mobile UX overhaul + circuit-breaker + grid-snap
- Mobiel chat-paneel: dvh viewport-eenheid + scrollIntoView bij focus — virtueel toetsenbord verbergt de chatinvoer niet meer
- Zijbalk smaller op kleine telefoons: w-64 (256px) i.p.v. w-72 (288px) op schermen <640px — meer canvas-ruimte op iPhone SE etc.
- Command palette mobiel-proof: max-width past zich aan schermgrootte aan. Nieuw zoekknop-FAB op mobiel naast de chat-knop
- Grid-snapping voor alle draggable objecten: bijgebouwen, trappen, sanitair, meubels en annotaties snappen naar actief grid. Object-to-object snap heeft prioriteit
- Circuit-breaker in AI tool-use loop (streaming + non-streaming): 2 opeenvolgende mislukte turns → stopt met leesbaar bericht. JSON-parsefouten worden nu als tool_error gemeld
- SEO metadata: demo/situatie, login en profiel pagina's hebben eigen title/description. Login in sitemap
v5.21.02026-04-20
Chat route sync + haptic feedback op alles
- Constraint tools (voegAfstandConstraintToe, voegPeilConstraintToe, verwijderConstraint) toegevoegd aan non-streaming chat route — was alleen in streaming route
- compactScene gesynchroniseerd: non-streaming route toont nu erfafscheiding-coördinaten, overkapping daktype, verdieping bij trap/sanitair/meubel, en maatlijn tekstOverride
- compactContext gesynchroniseerd: streaming route toont nu volledige GBO/hoogte labels, energielabel, monument/stadsgezicht waarschuwingen, en alle 7 dossierstatus-velden (was 4)
- Haptic feedback via useScene: elke dispatch, undo en redo geeft nu subtiel tikje op mobiel — 27+ drag-handles, chat tool-calls, command palette acties allemaal gedekt via één centraal punt
- Haptic op UI-toggles: zijbalk, 3D massing, live PDF preview, chat open/close, verdiepingsselector
- Haptic op acties: clipboard-kopiëren (scene JSON + deellink), export-download voltooiing
- Dubbele haptic-calls verwijderd uit undo/redo knoppen (gingen al via useScene)
v5.20.02026-04-20
Chat UX overhaul: stop-knop, markdown, suggesties, multi-line
- Chat stop-knop: klik 'Stop' of druk Escape om Claude halverwege een antwoord te onderbreken. AbortController annuleert de SSE-stream direct
- Chat markdown rendering: vet, cursief, code, koppen en lijsten worden nu correct weergegeven in plaats van ruwe markdown-tekst
- Suggestie-chips onder chatberichten: context-afhankelijke snelacties ('Uitbouw 4×3m', 'Materialen kiezen', 'Vergunningvrij?') op basis van dossierstatus
- Chat invoer is nu een multi-line textarea: Shift+Enter voor nieuwe regel, auto-resize tot max 5 regels. Ideaal voor complexe bouwplanbeschrijvingen
- Foto's versturen zonder tekst: voeg een foto bij en druk Enter — Claude analyseert automatisch
- Toegankelijkheid: ARIA-labels op chatpaneel (role=log, aria-live=polite), canvas (role=application), en invoervelden
- Scene import/export: download je tekening als JSON-backup, of importeer een eerder gedownloade scene. Ook beschikbaar via Ctrl+K command palette
- Wis chat knop: herstart het gesprek wanneer de context te lang wordt
- Foto's zonder tekst verzenden: voeg bestanden bij en druk Enter — Claude analyseert automatisch
- Beforeunload waarschuwing: voorkomt per ongeluk sluiten van de tab terwijl een save bezig is
- JSON-LD structured data: prijzen gecorrigeerd naar €69/project en €149/maand (was verouderd)
- Footer-statistieken bijgewerkt: 78 API routes (was 63)
v5.19.02026-04-20
Validatie, geo-exports, maatlijnen in plattegrond, rapport-link
- Scene-validatiepaneel boven export-sectie: waarschuwt bij bebouwingspercentage >50%, uitbouw-diepte >4m, erfafscheiding-hoogte boven Bbl-grenzen, ontbrekende materialen, en lege scene
- Geo-exportknoppen in editor: CityJSON 2.0, GeoJSON, SVG en CSV downloads direct vanuit de zijbalk
- Quick-scan rapport (PDF) nu direct downloadbaar vanuit de editor — 30+ databronnen in een printbaar A4 rapport
- Maatlijnen renderen nu ook in plattegrond-PDF en tekeningenpakket (was alleen situatietekening). Verdieping-aware filtering
- Command palette (Ctrl+K) uitgebreid met Navigatie-sectie: perceel-scan, rapport, homepage, prijzen, changelog
- Statusbalk op canvas toont nu leesbare objectnamen ('3 raam, 2 deur, 1 muur') in plaats van cryptische afkortingen
v5.18.02026-04-20
PDF papierbenutting +20%, keyboard shortcut maatlijn
- PDF papierbenutting drastisch verbeterd: marges verlaagd van 10mm naar 7mm, titelblok versmald van 60mm naar 50mm (A3), en tekenvak-marge van 10% naar 5%. Totaal ~82% papierbenutting (was ~68%). Percelen die eerst op 1:500 pasten, passen nu vaak op 1:200 — significant meer detail
- Keyboard shortcut Q voor maatlijn-plaatsing — consistent met M (meten), W (muur), R (raam), D (deur), L (label), A (oppervlakte)
- Maatlijn tekenmode reset correct bij Escape en bij activeren van andere modi
v5.17.02026-04-20
AI-chat drastisch verbeterd, maatlijn-tekenmode, system prompt sync
- compactScene toont nu alle 16 objecttypes met volledige details aan Claude (was: alleen pand, uitbouw, bijgebouw). Claude kan nu elke raam-breedte, deur-type, binnenmuur-dikte, kamer-functie etc. zien en wijzigen
- maxTokens verhoogd van 1500 naar 4096 — voorheen werden complexe multi-tool responses afgekapt halverwege JSON, wat parseerfouten veroorzaakte
- Non-streaming route upgrade van Haiku 4.5 naar Sonnet 4.6 als default model — consistent met streaming route
- System prompts gesynchroniseerd: streaming route heeft nu dezelfde rijke instructies als non-streaming (DSO-badge info, erfafscheiding voortuin-regels, spiegelen/kopiëren/dupliceren hints, dossier-coach felicitatie)
- Maatlijn-tekenmode op canvas: klik 'Maat' in het radiale menu, klik twee punten op de tekening, en er verschijnt een permanente dimensielijn met automatisch berekende lengte. Escape annuleert, startpunt wordt getoond als gele stip
v5.16.02026-04-20
Maatlijnen, project-hernoemen, scene-query tool
- Nieuw scene-objecttype: maatlijn. Gebruiker-geplaatste dimensielijnen tussen twee RD-punten. Automatische lengteberekening, NEN 2574-stijl rendering met pijlpunten en verlenglijnen. Via chat: 'voeg een maatlijn toe van punt A naar punt B'
- Nieuw tool: wijzigProject — hernoem je project via de AI-chat
- Nieuw tool: bevraagScene — Claude kan nu vragen beantwoorden over je tekening: tel objecten, bereken oppervlaktes, meet afstanden tussen objecten, lijst materialen. Voorheen moest Claude schatten op basis van de compacte scene-beschrijving
- Maatlijn rendering op canvas: extension lines, pijlpunten, tick marks, geroteerde labels. Selecteerbaar, verdieping-aware
- Tool-registry uitgebreid van 29 naar 33 tools (voegMaatlijnToe, wijzigProject, bevraagScene + bestaande)
v5.15.02026-04-20
Streaming AI-chat, Claude Sonnet 4.6, voorbeeld-adressen fix
- AI-chat is nu streaming: tekst verschijnt woord-voor-woord terwijl Claude schrijft, in plaats van wachten tot het hele antwoord klaar is. Tool-calls worden real-time getoond terwijl ze uitgevoerd worden
- AI-model upgrade: chat gebruikt nu Claude Sonnet 4.6 (was Haiku 4.5) voor betere kwaliteit adviezen en nauwkeurigere tool-calls. Streaming compenseert de langere denktijd
- Nieuw SSE endpoint /api/chat/scene/stream: multi-turn tool-use loop met per-token streaming. Events: text, tool_start, tool_done, tool_error, done
- Voorbeeld-adres Markt 1 Delft gecorrigeerd (was verkeerde nummeraanduiding-ID)
v5.14.02026-04-20
Canvas centrering definitief opgelost, auto-fenestration standaard aan
- Canvas centrering definitief opgelost: initiële transform wordt nu berekend bij component-initialisatie (useState initializer) in plaats van via een useEffect. Component krijgt een key-prop gekoppeld aan het pand-ID — bij nieuw adres wordt de hele canvas opnieuw gemount met correcte centering
- Auto-fenestration is nu standaard ingeschakeld op alle 5 PDF-exports (plattegrond, gevels, doorsnede, impressie, pakket). Uitschakelen via ?auto_fenestration=false. Geschatte ramen en deuren worden getekend met stippellijnen en disclaimer
- 3D viewer verbeterd: ramen/deuren op muuroppervlak (niet meer 5cm ervoor), multi-verdieping support voor binnenmuren/ramen/deuren, wandhoogte 2.5m per verdieping
v5.13.02026-04-20
Canvas centrering herschreven, zoekbalk opgeschoond, 3D multi-floor
- Canvas centrering volledig herschreven: simpele ref-based aanpak vervangt complex sig-tracking systeem. Centreert exact één keer per pand op pandcentroïde met 80×60m minimum zichtbaarheid. Race condition met ResizeObserver opgelost door canvas pas te renderen na meting
- Zoekbalk wordt leeg na laden van een adres. Geladen adres verschijnt als grijze placeholder. Persoonlijke voorbeeldadressen verwijderd, recente adressen sectie verwijderd
- 3D viewer: ramen en deuren worden nu op het muuroppervlak geplaatst (niet meer 5cm ervoor zwevend). Multi-verdieping support: binnenmuren, ramen en deuren respecteren het verdieping-veld en worden op de juiste hoogte gerenderd
- 3D binnenmuren: wandhoogte is nu 2.5m per verdieping in plaats van gecapped op 3m. Correcte berekening per verdiepingsvloer
v5.11.02026-04-20
Canvas centrering fix, print area auto-oriëntatie
- Canvas centrering gerepareerd: bij het openen van een adres centreert de view nu betrouwbaar op het perceel+pand. Voorheen kon de initiële centering mislukken bij een viewport-resize direct na laden, waardoor je moest scrollen
- Grote viewport-wisseling (>100px) herberekent nu schaal+positie volledig in plaats van alleen de offset te verschuiven. Sidebar openen/sluiten of venster resizen houdt het perceel correct in beeld
- Print area auto-oriëntatie: het afdrukgebied kiest nu automatisch liggend of staand op basis van welke oriëntatie de kleinste schaal (= meeste detail) geeft voor jouw perceel
- computeFitTransform geëxtraheerd als herbruikbare functie — initiële fit, fitToView en viewport-resize gebruiken nu dezelfde logica
- Maximale initiële schaal: de view zoomt nooit verder in dan ~1:60 (60m zichtbaar). Hierdoor is het A3 afdrukgebied (40m bij 1:100) altijd zichtbaar met context eromheen — van grote publieke gebouwen tot compacte rijwoningen
v5.10.02026-04-20
Print preview auto-fit perceelgrens, A4-export
- Afdrukgebied centreert nu op perceel+pand bbox in plaats van alleen pandcentroïde — het hele perceel past maximaal in het vel
- Auto-schaal: afdrukgebied kiest automatisch de kleinste standaardschaal (1:50/100/200/500/1000) die het perceel met 10% marge laat passen. Handmatige schaaloverschrijving werkt nog steeds
- A4-export: papierformaat A4 was al ondersteund in de backend maar nu ook correct getoond in het afdrukgebied-preview op het canvas. Wissel papierformaat in de sidebar onder Exporteren → Instellingen → Papier
v5.9.02026-04-20
Snap labels, DXF doorsnede kolommen, align/distribute
- Snap distance labels: bij het slepen van objecten toont de snap-guide nu de afstand tot het uitgelijnde object in meters
- Edge-to-edge snapping: objecten snappen nu ook op elkaars randen (links-links, rechts-rechts, boven-boven, onder-onder), niet alleen center-to-center
- Kolommen in DXF doorsnede: structurele kolommen die de snijlijn kruisen worden nu als gevulde rechthoeken (vierkant) of cirkels (rond) geëxporteerd op B-ARC-KOLOM-B layer met 45° arcering
- Align/distribute knoppen: bij multi-selectie (≥2 objecten) verschijnen uitlijn-knoppen (links/rechts/boven/onder) in de toolbar. Bij ≥3 objecten ook horizontaal en verticaal verdelen
- Room inference polygon clipping: inferRooms knipt kamers nu naar de werkelijke pandgeometrie via Sutherland-Hodgman in plaats van de axis-aligned bounding box. Niet-rechthoekige panden krijgen nu correcte kamervormen
- Binnenmuur T-junction cleanup: end-cap lijnen worden onderdrukt waar binnenmuren aansluiten op buitenmuren of andere binnenmuren. Resultaat: schonere plattegronden zonder dubbele strepen op aansluitpunten
- Multi-object copy/paste: Ctrl+C kopieert nu alle geselecteerde objecten (niet alleen het eerste). Ctrl+V plakt ze allemaal met offset. Kolommen worden nu ook ondersteund bij copy/paste
- Kolom properties volledig bewerkbaar: profiel (rond/vierkant) en materiaal (staal/beton/hout) nu wijzigbaar in de sidebar. wijzigAfmeting tool uitgebreid met doorsnede, profiel en kolomMateriaal velden
- Context menu voor bijgebouwen en kolommen: rechtermuisklik op bijgebouwen en kolommen opent nu hetzelfde contextmenu (verwijderen, dupliceren, kopiëren) als bij andere objecten
v5.8.02026-04-19
Polygon-edge ramen, spiegelen, verdieping-kopie, cascade delete
- Ramen/deuren placement op werkelijke pandgeometrie: sideEdge() vervangen van bbox-benadering naar polygon-edge lookup met outward-normal scoring. Niet-rechthoekige panden krijgen nu correcte raam/deur-posities
- spiegelObject tool: spiegel elk object langs een horizontale (x) of verticale (y) as op een opgegeven RD-coördinaat. Rotatie wordt automatisch omgekeerd
- kopieerNaarVerdieping tool: kopieer alle binnenmuren, kolommen of andere objecttypes van de ene verdieping naar de andere in één keer. Copy-knop (⧉) in de verdiepingskiezer
- Cascade delete: verwijderen van een pand verwijdert nu automatisch alle kinderen (ramen, deuren, muren, kolommen, etc.) die eraan gekoppeld zijn
- IFC kolommen wired: structurele kolommen worden nu meegeëxporteerd in het IFC-bestand via de scene route
- DXF plattegrond kolommen: CIRCLE/LWPOLYLINE voor ronde/vierkante kolommen op B-ARC-KOLOM-B layer
- DXF plattegrond kamer-polygonen: scene-kamers als gesloten polylijnen met naam-label op A-ANN-RUIM-B layer
- Kolommen in doorsnede: structurele kolommen worden als gevulde rechthoeken in de doorsnede-PDF gerenderd wanneer ze de snijlijn kruisen
- AI system prompt uitgebreid: Claude kent nu alle 31 tools inclusief kolommen, kamers, spiegelen, kopiëren en dupliceren
- Ctrl+A selecteert alleen objecten op de actieve verdieping (was: alle objecten op alle verdiepingen)
- 31 tools totaal: spiegelObject + kopieerNaarVerdieping bij de bestaande 29
v5.6.02026-04-19
Kamer-objecten + room inference + interieur-naar-scene
- Kamer als first-class scene-object: persistent polygoon met naam, functie (woonkamer/keuken/slaapkamer/...), hoogte, verdieping en materialen. NEN 2580 GBO-oppervlakte automatisch berekend uit polygoon
- voegKamerToe + wijzigKamer tools: Claude kan nu kamers aanmaken en wijzigen via dezelfde tool-registry als de UI. 26 tools totaal in het systeem
- Room inference engine: detecteert kamers automatisch uit buitenmuren + binnenmuren via grid-subdivide + union-find. Labelt op basis van grootte, verdieping en aanwezige sanitair-objecten
- Interieur-naar-scene converter: interieurfotos analyse-resultaten worden nu omgezet in voegKamerToe + voegBinnenmuurToe + voegSanitairToe tool-calls in plaats van simpele annotaties
- Canvas kamer-rendering: persistent kamers als gekleurde polygonen (per functie) met naam + oppervlakte-label op de interactieve editor-canvas
- PDF plattegrond rendering: kamer-polygonen met lichte fills + labels in de PDF-export naast de bestaande auto-detectie
- Anthropic fallback fix: credit-balance fouten werden door Anthropic als HTTP 400 (niet 402) verzonden — classificatie gefixt zodat fallback naar OpenAI correct werkt met credit-alert
- 'Kamers detecteren uit muren' knop in editor sidebar — one-click room inference uit bestaande binnenmuren
v5.7.02026-04-19
Kolommen, GBO in pakket, plattegrond kwaliteit
- Kolom als nieuw scene-object: staal/beton/hout kolommen met rond of vierkant profiel. NEN 2574-symbolen op canvas en PDF. voegKolomToe tool (28 tools totaal)
- GBO overzicht in scene-based pakket: persistent kamer-polygonen worden nu meegenomen in het tekeningenpakket PDF (NEN 2580 oppervlaktetabel)
- Scene kamers in pakket plattegrond: kamer-polygonen met fills + labels ook in het pakket-export, niet alleen in losse plattegrond-export
- Kolommen in pakket plattegrond: structurele kolommen worden nu meegerenderd in het pakket
- dupliceerObject tool: Claude kan nu elk object dupliceren met offset — copy/paste via AI
- wijzigAfmeting ondersteunt verdieping: objecten verplaatsen tussen verdiepingen zonder verwijderen+opnieuw aanmaken
- Binnenmuur deuropening fix: binnendeuren knippen nu correct door de binnenmuur-dubbellijn op basis van werkelijke wanddikte
- Kamer-polygoon PDF fill: exact polygoon-fill (was: bbox-rechthoek benadering) — L-vormige en onregelmatige kamers correct ingevuld
- Plafondhoogte op PDF: h=X.XXm label onder het kamerlabel op de plattegrond
- KamerFunctie uitgebreid: studeerkamer, logeerkamer, bijkeuken, stookruimte, eetkamer toegevoegd
- Kolom presets in editor: 4 standaard kolom-typen (stalen kolom, betonkolom, houten paal, stalen buis) in de 'Buiten' tab
- Kamer tekenmode (R-toets): klik hoekpunten om een kamer-polygoon te definiëren. Klik op het eerste punt of druk Enter om te sluiten. Visuele preview tijdens tekenen
- Kamer vertex editing: sleep individuele hoekpunten van geselecteerde kamers om de vorm aan te passen. Grid-snap bij slepen
- DakType uitgebreid: mansarde, tent, schilddak toegevoegd naast plat/lessenaar/zadel — gangbare Nederlandse daktypes
- Kolommen draggable: kolommen zijn nu versleepbaar op de canvas met automatische scene-update
- 29 tools totaal: voegKolomToe + dupliceerObject bij de bestaande 27
v5.5.02026-04-19
Vision pipeline fix + verdiepingskiezer + interieur-analyse
- Vision model-ID gefixt: alle vision pipelines (trace, floorplan, brochure, chat, reconstruct) gebruiken nu claude-sonnet-4-6 — was ongeldige model-ID waardoor alles naar OpenAI viel
- Verdiepingskiezer: floating floor-selector op canvas voor gebouwen met meerdere bouwlagen (BG/1e/2e). Schakelt currentFloor voor plattegrond-rendering en object-plaatsing
- Interieur-analyse API: nieuw /api/vision/interieur endpoint — upload kamerfoto's, Claude Vision schat afmetingen, sanitair, vloer/wand/plafond per kamer
- Mobiel: sidebar start nu dicht op schermen < 768px breed — voorkomt dat canvas onzichtbaar is op telefoon
- End-to-end getest: facade trace + floorplan analyse met realistische bronfoto's — beide pipelines produceren bruikbare tool-calls
v5.4.02026-04-19
Plattegrond kwaliteitsverbetering: dimensies, labels, declutter
- Kamer-annotatie deduplicatie: annotaties met 'Naam\nX.X m²' patroon worden als kamerlabels gerenderd, niet dubbel als annotatie + label
- Interieur-dimensies herwerkt: benoemde kamers tonen compact 'b × d' onder het label, onbenoemde kamers alleen bij ≥4 m² en geen benoemde kamers
- Wanddikte-annotatie verplaatst van inline (overlappend met raam/deur-maten) naar legenda '(14 cm)'
- Raam/deur-breedtelabels verplaatst naar midden wandband — geen overlap meer met wanddikte
- Dubbele wanddikte-label ('14cm' + '140') opgelost — nu alleen in legenda
- Debug console.log statements verwijderd uit plattegrond renderer
v5.3.02026-04-19
Interne deuren + exterior-only filtering voor gevel-renderers
- Scene schema: DeurZ accepteert nu zijde 'intern' met optionele x/y coördinaten voor absolute positionering
- voegDeurToe tool: ondersteunt intern + x/y voor binnendeuren uit floorplan-analyse
- Floorplan pipeline: interne deuren worden nu geconverteerd naar voegDeurToe met RD-coördinaten (was: overgeslagen)
- Plattegrond renderer: binnendeuren gerenderd op dichtstbijzijnde binnenmuur met correcte opening+blad+boog
- Exterior-only filtering: gevels, doorsnede, impressie, DXF gevels/doorsnede ontvangen alleen buitendeuren — voorkomt type-errors en render-fouten
- IFC export: intern-deuren overgeslagen (wallFacePosition ondersteunt geen absolute posities)
v5.2.02026-04-19
Auto-fenestration opt-in + vision trace parser fix + Anthropic key
- Auto-fenestration is nu opt-in: geen verzonnen ramen/deuren tenzij ?auto_fenestration=true. Alle 5 export routes (gevels, doorsnede, plattegrond, impressie, pakket GET) aangepast.
- Vision trace parser: robuuste field-mapping — type→raamType/deurType, borstwering→borstweringHoogteM, element/materiaal→naam/locatie, side ingevuld vanuit visibleSide parameter
- Vision trace system prompt: exact JSON-schema voorgeschreven met juiste veldnamen, voorkomt provider-afhankelijke variatie
- Anthropic API key toegevoegd aan drawmit .env op zelfplus (was alleen in marketingplatform/taklo)
v5.1.02026-04-19
PDF rendering fixes: straatnamen, boomtekens, plattegrond schaal
- Situatie: BGT straatnaam-rotatie gefixt — hoek was in graden behandeld maar BGT levert gon (400 gon = 360°), nu correcte conversie × 0.9
- Situatie: boomkroon-symbolen uitgeschakeld bij schalen ≥ 1:250 — voorkomt visuele ruis op overzichtstekeningen
- Situatie: panddimensie-lijnen (AABB) opgeruimd — compactere code, zelfde correcte waarden
- Plattegrond: perceelgrens meegenomen in schaalberekening — voorkomt lege ruimte bij grote percelen (735 m² perceel vs 112 m² pand)
- Dev bypass in tier.ts verwijderd
v5.0.02026-04-19
PWA service worker + touch-support canvas + compliance v2
- PWA: Serwist 9.5.7 service worker met precaching, runtime caching en offline fallback pagina
- PWA: next.config.ts gewrapped met withSerwistInit + aparte tsconfig.sw.json voor SW TypeScript
- PWA: InstallBanner component — Android native install + iOS 'Zet op beginscherm' instructie
- Touch: pinch-zoom op canvas met correcte RD-coördinaat projectie
- Touch: eén-vinger pan + long-press radial menu, touch-action: none voorkomt browser scroll conflict
- Compliance: fetchComplianceEnrichment() geëxtraheerd — DSO gemeente-overrides + monumentstatus in alle export routes
- Compliance: achtererfM2 berekend uit perceelM2 - pandFootprintM2 (was null)
- Compliance: 9 violatie-typen (was 6): dakkapel, overkapping en bijgebouw blokkades
- Schema: isVoortuin op erfafscheiding — correcte Bbl-check 1m voortuin vs 2m achtererf
- Schema: onderBijgebouw op overkapping — voorkomt dubbeltelling in achtererf-staffel
- AI: system prompt uitgebreid met alle objecttypen, DSO gemeente-limieten, erfafscheiding/overkapping velden
v4.94.02026-04-19
Bbl-dashboard v2: server-side checks met DSO gemeente-limieten
- Bbl-dashboard in editor is volledig herschreven: toont nu alle server-side checks inclusief DSO gemeente-specifieke regels
- DSO-badge: blauw 'DSO' label wanneer gemeente-specifieke max bouwhoogte/goothoogte/bebouwingspercentage beschikbaar zijn
- Elke check toont naam + toelichting (niet meer alleen progress bar) — gebruiker begrijpt wat er aan de hand is
- Dakkapellen worden meegestuurd naar de vergunningvrij API: breedte, hoogte en zijde worden nu getoetst
- Checks tonen vier statussen: ok (groen), waarschuwing (geel), blokkade (rood), onbekend (grijs)
- Gemeente-specifieke regels worden onderaan het dashboard getoond met exacte waarden uit het omgevingsplan
v4.93.02026-04-19
Vergunningvrij-engine v2: DSO-koppeling + dakkapellen, zonnepanelen, kozijnen
- DSO Presenteren v8 gekoppeld aan vergunningvrij-check: gemeente-specifieke max bouwhoogte, goothoogte en bebouwingspercentage worden live opgehaald uit het omgevingsplan
- Gebiedsaanwijzingen (bouwaanduidingen) worden automatisch geparsed: 'maximum bouwhoogte 10 m' → maxBouwhoogteM = 10
- Wanneer gemeente afwijkende regels heeft, worden die meegewogen in elke check (niet alleen bruidsschat-defaults)
- Dakkapel-check: breedte (voorgevel max 1/3, achter max 1/2 dakbreedte), hoogte vs nok, terugligging dakvoet ≥ 0,5m, afstand dakrand, beschermd gezicht waarschuwing
- Zonnepanelen-check: hoogte boven plat dak (max 0,5m), voorzijde + beschermd gezicht waarschuwing, rijksmonument blokkade
- Kozijnwijzigingen-check: vervanging (vergunningvrij tenzij monument), vergroting (voorgevel waarschuwing), nieuw (gemeente-afhankelijk)
- Bijgebouw + overkapping: perceelgrens-afstand check toegevoegd (min 1m bij hoogte > 3m) — was ontbrekend
- Overkapping onder bijgebouw wordt niet meer dubbel geteld in staffelberekening (onderBijgebouw flag)
- Dakbreedte automatisch berekend uit 3DBAG footprint voor dakkapel-check
- Bebouwingspercentage drempel nu dynamisch: gemeente-waarde uit DSO, fallback naar 50% (bruidsschat)
- Negatief achtererf-oppervlak afgevangen (guard in staffelberekening)
- API route /api/vergunningvrij accepteert nu 7 objecttypen in POST body (was 4)
- Volledige API-audit: alle 9 externe APIs gevalideerd en werkend
v4.92.02026-04-19
Regel-gebaseerde begroeting + AI-fallback
- Begroeting is nu 100% client-side: geen API-call meer bij het openen van een adres — bespaart kosten
- Begroeting toont perceeldata + vergunningvrij-indicatie + volgende stap, alles op basis van dossierstatus
- AI-fallback: bij API-fout of netwerk-storing krijgt de gebruiker een bruikbare tip i.p.v. alleen een foutmelding
- Fallback-tips zijn contextafhankelijk: verwijzen naar specifieke ontbrekende stappen (foto's, plattegrond, materialen)
- Website blijft volledig functioneel zonder AI: alle knoppen, uploads en exports werken onafhankelijk
v4.91.02026-04-19
AI dossier-coach: proactieve begeleiding door alle stappen
- System prompt herschreven: AI is nu dossier-coach die proactief adviseert op basis van wat ontbreekt
- Dossierstatus wordt meegezonden naar Claude: gevelfoto's (0-4 zijden), plattegrond, interieur, brochure, bouwplan, materialen, vergunningvrij-check
- Auto-begroeting verwijst nu naar ontbrekende stappen ('Je hebt nog geen gevelfoto's — gebruik de Foto tracen knop')
- AI geeft per antwoord maximaal 1 suggestie voor volgende stap, met verwijzing naar exacte UI-sectie
- Wanneer dossier bijna compleet: AI stelt voor om tekeningen te exporteren
v4.90.02026-04-18
Animated counters, blur-in entrances, feature card glow
- CountUp component: geanimeerde tellers die optellen bij scrollen (€2.000+, 10 minuten, 7 tekeningen)
- Blur-in entrances: hero heading, subtekst en adresformulier verschijnen met blur-to-focus effect
- FadeIn uitgebreid: blur prop + index-based stagger (0.08s per item) voor vloeiende grid-onthulling
- Feature cards: hover-glow (tech-cyaan shadow), icon achtergrond licht op, subtle lift (-0.5px)
- Workflow stappen: staggered blur-in per stap
- Audience cards: blur-in met stagger
v4.89.02026-04-18
View Transitions + haptic feedback
- View Transitions API: pagina-navigatie krijgt crossfade-animatie (Next.js 16 experimental)
- SiteHeader blijft stabiel tijdens paginatransities (viewTransitionName: site-header)
- View transition CSS: crossfade met blur, anchored header, reduced-motion override
- Haptic feedback: trilsignaal op undo/redo en chat-knop op mobiel (navigator.vibrate)
v4.88.02026-04-18
Chat bottom sheet + UI-componenten
- Chat panel op mobiel: swipe-to-dismiss met touch-gesture, slideUp animatie, backdrop
- BottomSheet component: herbruikbaar met drag-handle, swipe-omlaag-sluiten, Escape-toets
- Tooltip component: hover-tooltip voor icon-only knoppen (400ms delay, fadeIn)
- slideUp keyframe in globals.css voor bottom sheet animaties
v4.87.02026-04-18
Loading skeletons + mobile touch targets
- Skeletoncomponent: herbruikbaar laad-skelet voor cards, tekst en grids
- Adres zoeken: skeleton van eigendomskaart tijdens laden, spinner in zoekbalk, input disabled
- Export-knoppen: grotere aanraakgebieden (py-2.5 + bredere preview-knop) — voldoet aan WCAG 44px richtlijn
- Export-opties: schaal-knoppen wrappen op smalle schermen (flex-wrap), alle knoppen py-1 i.p.v. py-0.5
- PDF preview overlay: fade-in animatie (150ms) voor vloeiende weergave
- fadeIn keyframe in globals.css — herbruikbaar voor alle overlays
v4.86.02026-04-18
Mobile UX polish: camera, spinners, toegankelijkheid
- Camera-knop (capture="environment") op alle foto-inputs in editor — opent achtercamera op telefoon
- HEIC/HEIF accept op alle upload-inputs (gevelfoto, interieur, 3D scan, chat, facade vision)
- Chat-FAB: tekst vervangen door chat-icoon (SVG), active:scale-95 touch feedback
- Spinners op alle analyse-knoppen (gevel, plattegrond, interieur, brochure) tijdens verwerking
- prefers-reduced-motion: alle animaties worden uitgeschakeld voor gebruikers die dat instellen
v4.85.02026-04-18
PWA + Dossier-coach + Onboarding Wizard
- Service worker via Serwist 9.5 — offline shell, asset caching, kaart-tiles cache
- PWA installeerbaar als app op Android (install-prompt) en iOS (beginscherm-instructie)
- Apple PWA meta tags: standalone mode, status bar, touch icon
- Manifest uitgebreid: shortcuts, share_target, screenshots
- Dossier-checklist in sidebar: 8 stappen van adres tot vergunningvrij-check met voortgangsbalk
- Onboarding wizard bij eerste bezoek: wat wil je doen + wat heb je beschikbaar → juiste upload-sectie
- Foto-coach: tips per uploadtype (gevelfoto, interieur, bouwtekening, brochure) — 'sta recht voor de gevel, hele hoogte in beeld'
- Interieurfotos uploaden: per kamer, analyse via AI → binnenmuren, ramen, deuren detectie
- Brochure/specificatie upload: keuken/kozijn/dakraam PDF → afmetingen en materialen automatisch herkend
- HEIC-conversie: iPhone-foto's worden automatisch omgezet naar JPEG
- Screen Wake Lock: scherm blijft aan tijdens foto-flow
- Offline pagina: nette fallback wanneer geen verbinding
v4.84.02026-04-18
Logo groter, heldere hero, gevelfoto-knop
- Logo en naam flink groter op alle pagina's (compact: 32px logo + 24px tekst, hero: 40px logo + 30px tekst)
- Hero herschreven: 'Foto's maken. Tekeningen krijgen.' — direct duidelijk wat Drawmit doet
- 'Maak een gevelfoto' knop op de homepage: opent camera op telefoon, file picker op desktop
- Gevelfoto-flow: foto wordt doorgestuurd naar de editor en opent automatisch de tracen-sectie
- Workflow-stappen herschreven vanuit gebruikersperspectief (geen jargon)
- ValueStrip en Features vereenvoudigd: geen technische afkortingen meer
v4.83.02026-04-18
Brand refresh: warm+tech hybride, animaties, consistente header
- Nieuw kleurenpalet: tech-accent (cyaan) naast bestaande baksteenrood voor AI/tech uitstraling
- CTA-knoppen met warm→tech gradient, glow-shadow en hover-animatie (.btn-cta)
- Homepage: scroll-animaties via motion v12 op alle secties (hero, stats, workflow, features, pricing, FAQ, CTA)
- Pricing: glassmorphism op highlighted tier, shimmer-badge, hover-lift animatie
- Gedeelde SiteHeader component: alle 9 pagina's gebruiken nu dezelfde header met Wordmark, nav en ThemeToggle
- Editor nav-link bug: adressen geladen via URL worden nu als project opgeslagen in plaats van terug te vallen op een oud voorbeeldadres
- Feature icons gebruiken nu tech-cyaan accent i.p.v. oker
v4.82.02026-04-18
Fix: voorbeeldadressen op homepage openen nu correct adres
- Editor: URL-params (?adres=, ?nummeraanduiding=) hebben nu voorrang op localStorage-herstel
- Klikken op een voorbeeld op de homepage opent nu altijd het juiste adres (was: altijd eigen huis door localStorage race condition)
v4.81.02026-04-18
Situatietekening: auto-rotatie, perceel-centrering, strakkere schaal
- Situatietekening centreert nu op perceel+pand middelpunt (was: pand-centroïde) — hele perceel valt symmetrisch in beeld
- Auto-rotatie: oriëntatie (landscape/portrait) wordt automatisch gekozen op basis van welke het perceel op de grootste schaal laat zien
- Schaal-marge verlaagd van 15% naar 10% — perceel vult meer van het papier
- Handmatige override via ?orientation= blijft werken
v4.80.02026-04-18
AI chat context: correcte check-status weergave
- Chat context: blokkade-status correct weergegeven als [X] (was: [?] door typo 'fail' i.p.v. 'blokkade')
- Chat context: waarschuwing-status weergegeven als [!] (was: [?])
- AI krijgt nu correcte vergunningvrij-check iconen in de perceelcontext
v4.79.02026-04-18
Vergunningvrij dashboard: alle objecttypen + overkapping m²
- Bbl-dashboard toont nu checks voor alle objecttypen (uitbouwen, bijgebouwen, erfafscheidingen, overkappingen)
- Overkapping m² meegeteld in bebouwingspercentage achtererf
- Erfafscheiding hoogte-check in client-side dashboard (max 2m)
- Dashboard verschijnt nu ook als er alleen bijgebouwen, erfafscheidingen of overkappingen zijn (was: alleen bij uitbouwen)
v4.78.02026-04-18
Vergunningvrij-check: erfafscheidingen, overkappingen en bijgebouw-hoogte
- Vergunningvrij-check: erfafscheiding hoogte-toets (max 1m voortuin / 2m achtererf, bruidsschat art. 22.27)
- Vergunningvrij-check: bijgebouw individuele hoogte-toets (max 5m, Bbl art. 2.25)
- Vergunningvrij-check: overkapping hoogte-toets + m² mee in achtererf-staffel
- Achtererf-staffel telt nu alle bijbehorende bouwwerken: bijgebouwen + uitbouwen + overkappingen
- API: POST /api/vergunningvrij accepteert nu erfafscheidingen en overkappingen arrays
- Editor: vergunningvrij-check herberekent automatisch bij wijziging erfafscheiding of overkapping
- Compliance overlay: alle nieuwe checks doorgeleid naar PDF-export
v4.77.02026-04-18
Compliance overlay + pakket: bijgebouwen doorrekenen
- Compliance overlay: bestaandeBijgebouwenM2 wordt nu doorgegeven bij PDF-export (was altijd null)
- Pakket route: scene-based variant berekent bijgebouwen-oppervlakte voor vergunningvrij-check in zowel toetsing als compliance overlay
v4.76.02026-04-18
Vergunningvrij-check: bijgebouwen meerekenen + AI-kwaliteit
- Vergunningvrij-check: bijgebouwen (garage, schuur, kapschuur) worden nu meegeteld in de achtererf-staffel berekening
- API: POST /api/vergunningvrij accepteert nu bijgebouwen array naast uitbouwen
- Editor: vergunningvrij-check herberekent automatisch bij toevoegen/wijzigen bijgebouw
- AI system prompt: geen emoji's, geen eigen berekeningen, verwijst naar Drawmit's check-resultaten
- AI system prompt: verplichte disclaimer bij elk antwoord over regels/vergunningen
- AI auto-greeting: noemt 'indicatief', sluit af met disclaimer
- ChatPanel: vaste disclaimer-banner boven input-veld (altijd zichtbaar)
- Mobile: floating 'Chat' knop rechtsonder als chat-paneel gesloten is
v4.75.02026-04-18
Editor: erfafscheiding + overkapping sidebar controls + overkapping drag handles
- Erfafscheiding sidebar: per-object controls met hoogte, type (schutting/hek/tuinmuur), lengte indicator
- Overkapping sidebar: per-object controls met breedte, diepte, hoogte, zijde en offset
- Overkapping canvas: 3 drag handles (diepte/breedte/offset) met live preview, axis-locking en hover feedback
- Overkapping label toont live dimensies tijdens drag
v4.74.02026-04-18
DXF gevels + doorsnede: bijgebouw, erfafscheiding en overkapping
- DXF gevels: bijgebouwen als geprojecteerde silhouetten per cardinale richting (8-vertex box projectie + convex hull)
- DXF gevels: erfafscheidingen als dunne paneel-silhouetten (tuinmuur 20cm, schutting/hek 5cm)
- DXF gevels: overkappingen als rechthoek-silhouetten op de bijbehorende gevel
- DXF doorsnede: bijgebouwen als geprojecteerde rechthoeken op het snijvlak
- DXF doorsnede: erfafscheidingen als dunne verticale secties waar ze het snijvlak kruisen
- DXF doorsnede: overkappingen met dakplaat + staanders (15cm) + labels
- Nieuwe NLCS layers: B-ARC-BIJG-B, B-ARC-ERFA-B, B-ARC-OVER-B voor alle nieuwe objecttypen
- Scene route wiring: alle nieuwe objecttypen doorgeleid naar DXF gevels + doorsnede exporters
v4.73.02026-04-18
CityJSON: bijgebouw, erfafscheiding en overkapping als BuildingParts
- CityJSON v2.0: bijgebouwen als separate BuildingPart met geroteerde box-geometrie en drawmit:label/dakType attributen
- CityJSON v2.0: erfafscheidingen als dunne wand-BuildingParts (tuinmuur 20cm, schutting/hek 5cm) met type en lengte attributen
- CityJSON v2.0: overkappingen als BuildingPart met wall-snapped footprint en drawmit:zijde/breedte/diepte/hoogte attributen
- CityJSON v2.0: multi-uitbouw support (meerdere uitbouwen als aparte BuildingParts)
- CityJSON exporter: gedeelde buildBoxFaces() helper voor alle box-objecttypen
v4.72.02026-04-18
Gevels: erfafscheiding + overkapping silhouettes · Doorsnede: overkapping sectie
- Gevels PDF: erfafscheidingen als warm bruin gevulde silhouettes per cardinale richting (tuinmuur 20cm, schutting/hek 5cm dikte)
- Gevels PDF: overkappingen als licht gevulde silhouettes met dash-dot contour per cardinale richting
- Doorsnede PDF: overkappingen als dunne dakplaat (15cm) + kolom-palen (15×15cm) wanneer footprint het snijvlak kruist
- Scene POST route: erfafscheiding + overkapping data doorgeleid naar gevels en doorsnede exporters
v4.71.02026-04-18
Erfafscheiding rendering in impressie + doorsnede
- Impressie PDF: erfafscheidingen als 3D-panelen (schutting/hek 5cm, tuinmuur 20cm dikte) met warm bruin hout-toon en Lambertian shading
- Impressie PDF: erfafscheidingen uitgesloten van dak-arcering en met dunnere lijn voor lichtere uitstraling
- Doorsnede PDF: erfafscheidingen als gevulde verticale secties waar ze het snijvlak kruisen, met type- en hoogtelabel
- Scene POST route: erfafscheiding-data doorgeleid naar zowel impressie als doorsnede exporters
v4.70.02026-04-18
Doorsnede: trappen, sanitair en meubels in sectie
- Doorsnede PDF: trappen als staircase-profiel (trede-oploop) met richtingpijl en label wanneer trap het snijvlak kruist
- Doorsnede PDF: sanitair en meubels als dunne contouren met type-label wanneer ze het snijvlak kruisen
- Doorsnede PDF: fixture-hoogte per type (bad 15cm, aanrecht 90cm, kledingkast 2.1m, etc.)
- GET /api/export/doorsnede: binnenmuren, trappen, sanitair en meubels uit auto-fenestration doorgeleid
- Scene POST route: trappen, sanitair en meubels doorgeleid naar doorsnede exporter
v4.69.02026-04-18
Impressie: overkapping 3D-rendering
- Impressie PDF: overkappingen als dun dakvlak (15cm) op opgegeven hoogte met kolom-palen (15×15cm) op elke hoek
- Overkapping rendering: lichtere kleur en dunnere lijn voor open-sided uitstraling
- Scene POST route: overkapping-data doorgeleid naar impressie renderer via applyUitbouwToPand geometrie
v4.68.02026-04-18
Auto-inrichting + DXF doorsnede ramen/deuren/binnenmuren
- Nieuw: 'Inrichting voorstellen' knop op Interieur-tab — vult pand automatisch met ramen, deuren, binnenmuren, trappen, sanitair en meubels op basis van 3DBAG + BAG data
- Nieuw: POST /api/scene/auto-fenestrate endpoint — auto-fenestration resultaten als scene tool-calls
- DXF doorsnede: ramen als rechthoeken met glazing-cross op snijvlak-wanden, deuren als vloer-openingen, binnenmuren als gearceerde secties
- DXF doorsnede GET route: haalt nu auto-fenestration op (ramen, deuren, binnenmuren) via 3DBAG
- DXF doorsnede renderer: accepteert pre-fetched pand3d om dubbele 3DBAG-fetch te vermijden
- Scene POST route: ramen, deuren en binnenmuren doorgeleid naar DXF doorsnede exporter
v4.67.02026-04-18
DXF plattegrond volledig + DXF gevels auto-fenestration
- DXF plattegrond: trappen met trede-lijnen, sanitair en meubels als gelabelde rechthoeken met rotatie
- DXF plattegrond: 3 nieuwe NLCS-layers (trap, sanitair, meubel) met ACI-kleuren
- DXF GET route: gevels ontvangen nu auto-fenestration ramen + deuren (voorheen leeg silhouet)
- DXF GET route: plattegrond ontvangt nu trappen, sanitair en meubels naast ramen/deuren/binnenmuren
- Scene POST route: trappen, sanitair en meubels doorgeleid naar DXF plattegrond exporter
v4.66.02026-04-18
IFC + DXF export: bijgebouwen, erfafscheidingen, overkappingen
- IFC 4.3: bijgebouwen als IFCWALL met geroteerde rechthoek-extrusie en materiaal-associatie
- IFC 4.3: erfafscheidingen als IFCWALL (tuinmuur 20cm, schutting/hek 5cm wanddikte)
- IFC 4.3: overkappingen als IFCROOF dakplaat (15cm) + IFCCOLUMN palen op hoekpunten (15×15cm)
- DXF plattegrond: erfafscheiding als lijn met type + hoogte + lengte label
- DXF plattegrond: overkapping als outline met kolom-kruisen op hoekpunten
- Scene POST route: alle nieuwe objecttypen doorgeleid naar IFC en DXF exporters
v4.65.02026-04-18
Erfafscheiding + Overkapping op plattegrond PDF + pakket doorleiding
- Plattegrond PDF: erfafscheiding als lijn-segment met type-specifieke stijl (schutting cross-ticks, hek/tuinmuur lijnen) + label
- Plattegrond PDF: overkapping als gestippelde omtrek met kolom-palen op hoeken, hergebruikt wall-snap van uitbouw
- Pakket POST route: erfafscheidingen en overkappingen doorgeleid naar situatie- en plattegrond-pagina's
- Scene POST route: erfafscheidingen en overkappingen doorgeleid naar plattegrond artefact
v4.64.02026-04-18
Erfafscheiding + Overkapping: canvas + PDF rendering
- PlattegrondCanvas: erfafscheiding rendering met per-type visuele stijlen (schutting cross-hatch, hek verticale staven, tuinmuur 45° arcering + vulling)
- PlattegrondCanvas: overkapping rendering met gestippelde omtrek, diagonale dakarcering, kolom-palen op hoeken
- PlattegrondCanvas: drag-endpoints voor erfafscheiding met perceelgrens-snap, keyboard nudge support
- Situatietekening PDF: erfafscheiding als Layer 6c met type-specifieke lijnstijlen, overkapping als Layer 6d met gestippelde omtrek + kolom-dots
- Legenda uitgebreid met erfafscheiding- en overkapping-symbolen
- wijzigAfmeting tool ondersteunt nu x1/y1/x2/y2 en erfafscheidingType voor endpoint-sleepbewerkingen
- Scene export route doorgeleid voor erfafscheiding + overkapping in situatie-artefact
v4.63.02026-04-18
Erfafscheiding + Overkapping + GBO Overzicht
- Nieuw scene-object: erfafscheiding (schutting/hek/tuinmuur) — lijn-segment met hoogte en type, tool voegErfafscheidingToe voor AI-chat
- Nieuw scene-object: overkapping (veranda/pergola/carport) — wall-bound open-air dakconstructie zonder wanden, tool voegOverkappingToe
- GBO Overzicht pagina in tekeningenpakket: oppervlakte-tabel per verdieping met kamernamen, m², subtotalen en vergelijking met BAG-registratie
- Editor componentenbibliotheek: tuin-tab uitgebreid met secties Bijgebouwen, Overkappingen en Erfafscheidingen met presets
- Scene schema uitgebreid naar 13 objecttypen (was 11): erfafscheiding + overkapping in discriminated union
- Tool registry: 24 tools (was 22) — verplaatsObject en wijzigAfmeting ondersteunen de nieuwe typen
v4.62.02026-04-18
Volledige multi-verdieping: 2e/3e verdieping + zolder
- Auto-fenestration genereert nu alle verdiepingen: BG, 1e, 2e/3e verdieping en zolder met schuine kap (knieschot-inzet 0.8m)
- Zolder-indeling: overloop + slaapkamer bij voldoende oppervlakte, anders open zolderruimte met optioneel bed en kledingkast
- Tekeningenpakket GET-mode genereert nu automatisch aparte plattegrond-pagina's per verdieping (was eerder alleen scene POST-mode)
- Zolder-detectie: als de bovenste verdieping een kamer 'Zolder' bevat, wordt het paginalabel automatisch 'Zolder'
- Plattegrond route: nieuw ?verdieping= query-parameter voor individuele verdieping-export
- BinnenmuurRenderer uitgebreid met verdieping-veld voor scene POST-mode floor-filtering
v4.61.02026-04-18
Multi-verdieping plattegrond: automatische 1e verdieping
- Auto-fenestration genereert nu een 1e verdieping voor woningen met 2+ bouwlagen: overloop, 2 slaapkamers en badkamer
- Binnenmuren en kamers hebben nu een verdieping-veld — plattegrond-renderer filtert per verdieping
- Tekeningenpakket genereert automatisch aparte plattegrond-pagina's per verdieping (begane grond + 1e verdieping)
- Overloop op 1e verdieping krijgt automatisch een trap (looprichting omlaag) die correspondeert met de trap op BG
- Slaapkamers op 1e verdieping krijgen automatisch bedden en kledingkasten, badkamer krijgt douche/wastafel/toilet
v4.60.02026-04-18
Auto-interieur: trap, sanitair en meubels op plattegrond
- Auto-fenestration genereert nu trappen, sanitair (toilet, wastafel, douche, bad, aanrecht, kookplaat) en meubels (bed, bank, tafel, kledingkast) op basis van kamerindeling
- Heuristische plaatsing: trap in hal (bij meerdere bouwlagen), toilet+wastafel in toilet, douche+wastafel+toilet in badkamer, aanrecht+kookplaat in keuken, bank+salontafel in woonkamer, bed+kledingkast in slaapkamer
- GET /api/export/plattegrond geeft auto-gegenereerde trappen/sanitair/meubels door aan de renderer — plattegrond PDF toont nu complete inrichting
- Tekeningenpakket (GET /api/export/pakket) geeft auto-interieur door aan alle plattegrond-pagina's
- Disclaimer tekst bijgewerkt: vermeldt nu ook inrichting naast ramen/deuren/binnenmuren
v4.59.02026-04-18
3D Viewer: perceelgrens, buurpanden, kompas, screenshot
- Perceelgrens zichtbaar als oker gestippelde lijn op het grondvlak met semi-transparante vulling
- Buurpanden als doorzichtige grijze volumes (7m hoogte-benadering) voor context
- Kompasroos met noordpijl (rood driehoek + N-label) en kardinale richtinglijnen op het grondvlak
- Screenshot-knop: sla de huidige 3D-weergave op als PNG
- Trappen in 3D: traptreden gerenderd als gestapelde blokken met berekende tredehoogte
- Sanitair in 3D: toilet, wastafel, bad, douche, aanrecht als witte porseleinen volumes op juiste hoogte
- Meubels in 3D: bedden, tafels, bank, kledingkast als houten blokken met realistische afmetingen
- Maaiveld NAP-hoogte wordt nu doorgegeven vanuit /api/check data voor preciezere grondniveau-bepaling
- Legenda uitgebreid met perceelgrens en buurpand-symbolen
v4.58.02026-04-18
DXF scene-objecten op alle 4 exporters
- DXF gevels: ramen (blauw, kruis-symbool), deuren (oranje), uitbouwen en dakkapellen nu zichtbaar op elke gevelrichting
- DXF doorsnede: uitbouwen als aanbouw-profiel op de snede, dakkapellen als dakkapel-profiel op het dak
- DXF situatie: uitbouwen als rode polylines op het pand, bijgebouwen als geroteerde rechthoeken, annotaties als tekst
- Scene POST-route stuurt alle scene-objecten door naar alle 4 DXF-exporters (ramen/deuren/uitbouwen/dakkapellen/bijgebouwen/annotaties)
- Type-fixes: hoogteM defaults voor uitbouwen (3m) en dakkapellen (1.5m) bij ontbrekende hoogte
v4.57.02026-04-18
DXF scene-objecten + scene-route
- DXF plattegrond-exporter ondersteunt nu uitbouwen, dakkapellen, bijgebouwen en annotaties uit de scene-state
- Scene POST-route (/api/export/scene) ondersteunt nu 4 DXF-artefacten: dxf-situatie, dxf-plattegrond, dxf-gevels, dxf-doorsnede
- DXF plattegrond: uitbouwen als gesloten polylines (rode layer), dakkapellen als individuele lijnen (magenta), bijgebouwen als geroteerde rechthoeken, annotaties als vrije tekst
- Editor DXF-knoppen gebruiken nu de scene POST-route i.p.v. de GET-route — scene-objecten (ramen, deuren, binnenmuren, uitbouwen, dakkapellen, bijgebouwen) worden nu meegenomen in DXF-exports
- IFC-exportknop in editor ook omgezet naar scene POST-route voor consistente scene-object doorvoer
- SceneExportButton component ondersteunt nu configureerbare bestandsextensie (fileExt prop) voor DXF/IFC-downloads
v4.56.02026-04-18
Multi-dakkapel PDF rendering
- Alle 7 renderers (gevels, doorsnede, impressie, dakplattegrond, plattegrond, IFC) ondersteunen nu meerdere dakkapellen tegelijk
- Elke dakkapel krijgt eigen indexnummer ("dakkapel 1", "dakkapel 2") wanneer er meerdere zijn
- Gevels: meerdere dakkapelprofielen per gevelrichting
- Doorsnede: meerdere dakkapelprofielen op de doorsnede-lijn
- Impressie: meerdere 3D-dakkapelblokken met depth-sorted rendering
- Dakplattegrond: meerdere footprint-rechthoeken op het dakvlak
- Plattegrond: meerdere dashed roof-projecties (NEN 2574 conventie)
- IFC: meerdere IFCROOF-entiteiten met geïndexeerde labels
- Scene POST-routes (scene + pakket) sturen alle dakkapellen door via pickAllDakkapellen()
v4.55.02026-04-18
Multi-uitbouw PDF rendering
- Alle 7 renderers (situatie, plattegrond, gevels, doorsnede, impressie, dakplattegrond, IFC) ondersteunen nu meerdere uitbouwen tegelijk. Eerder werd alleen de eerste uitbouw gerenderd
- Elke uitbouw krijgt eigen afmetingen, area-label en indexnummer ("UITBOUW 1", "UITBOUW 2") wanneer er meerdere zijn
- Scene POST-routes (scene + pakket) sturen alle uitbouwen door naar alle renderers via pickAllUitbouwen()
- Vergunningvrij-toetsing en compliance-context houden rekening met alle uitbouwen gezamenlijk
- Backward-compatibel: GET-routes met enkele uitbouw via query-params werken ongewijzigd
v4.54.02026-04-18
Bijgebouwen op alle 6 PDF-artefacten
- Bijgebouwen nu ook zichtbaar op gevels (achtergrond-silhouet per cardinale richting), doorsnede (geprojecteerd op het snijvlak) en dakplattegrond (footprint-rechthoek met label)
- Completeer de bijgebouw-pipeline: alle 6 PDF-artefacten (situatie, plattegrond, gevels, doorsnede, impressie, dakplattegrond) tonen nu bijgebouwen
- Tekeningenpakket (POST) stuurt bijgebouwen door naar alle 6 pagina-typen
v4.53.02026-04-18
Bijgebouwen in PDF-exports
- Bijgebouwen (schuur, carport, tuinhuis) verschijnen nu op situatietekening, plattegrond en 3D-impressie PDF-exports. Eerder alleen zichtbaar op het canvas
- Tekeningenpakket (POST) stuurt bijgebouwen door naar alle relevante pagina's: situatie bestaand/nieuw, plattegrond per verdieping, en impressie bestaand/nieuw
- Situatietekening: bijgebouw als gevuld rechthoek met baksteen-arcering en label
- Plattegrond: bijgebouw met wandarcering, afmetingen (breedte × diepte) en hoogtelabel
- Impressie: bijgebouw als 3D-blok met Lambertian shading, geïntegreerd in painter's algorithm depth sort
v4.52.02026-04-18
Bouwdetails — wandopbouw, isolatie, fundering
- Bouwdetails sidebar-sectie: stel wandconstructie (spouwmuur/steensmuur/houtskelet), isolatielocatie (geen/spouw/binnenzijde/ETICS), funderingtype (strook/paal/plaat) en vloertype (kruipruimte/plaat-op-staal/balkenvloer) in. Keuzes worden opgeslagen in localStorage
- Canvas wandopbouw-visualisatie: spouwmuur toont spouwlijn (dashed) in de wandband. Bij spouwisolatie verschijnen gele zigzag-markeringen in de spouw. Houtskelet toont verticale stijl-markeringen op 600mm h.o.h. ETICS toont gele dashed band om de buitengevel
- Wandopbouw doorsnede-diagram: mini cross-section in de sidebar toont schematisch de wandopbouw (buiten → binnen) met labels per laag, afhankelijk van de gekozen constructie en isolatie
v4.51.02026-04-18
Kamernamen, klikbare labels
- Kamernamen: klik op een auto-gedetecteerd kamer-label op het canvas of in de kamer-overview sidebar om het een naam te geven. Kies uit 10 presets (Woonkamer, Keuken, Slaapkamer, Badkamer, Hal, Toilet, Berging, Studeerkamer, Wasruimte, Serre) of typ een eigen naam. Namen verschijnen boven het oppervlakte-label
- Kamer-overview sidebar: sidebar-paneel toont nu user-assigned namen (vet) met fallback naar auto-gegenereerde labels (cursief). Klik op een rij om het naam-editor popup te openen
v4.50.02026-04-18
Multi-floor view, voorgevelrooilijn, muren kopiëren
- Multi-floor view: visuele verdiepingstabs (K/BG/1e/2e/Z) linksboven de zoom presets. Actieve verdieping gemarkeerd, badge toont aantal objecten per verdieping. Muren op andere verdiepingen verschijnen als faint ghost outlines voor context
- Voorgevelrooilijn visualisatie: wanneer het Bbl-dashboard open is, wordt de voorgevelrooilijn getekend als rode dash-dot lijn over het perceel. Het achtererfgebied wordt groen gearceerd met percentage-label
- Kopieer muren naar andere verdieping: rechtermuisklik op een binnenmuur → 'Kopieer alle muren naar' BG/1e/2e/Z. Dupliceert alle muren van de huidige verdieping, met dedup-check om dubbelen te voorkomen. Essential voor dragende wanden
v4.49.02026-04-18
Achtererf-percentage, wall draw segment snap, sneltoets B
- Achtererf-percentage in Bbl-dashboard: automatische berekening van het bebouwde achtererf op basis van BGT-straatzijde-detectie en Sutherland-Hodgman polygon-clipping. Voorgevelrooilijn (1m setback) splitst het perceel in voor- en achtererf. Stoplicht groen/amber/rood op 50% Bbl-grens
- Muur-tekenmodus segment-snap: in wall-draw mode (W) snappen klikpunten nu naar het dichtstbijzijnde punt op bestaande binnenmuur-segmenten en pand-muren, niet alleen naar endpoints en midpoints. Maakt T-aansluitingen op willekeurige posities mogelijk
- Sneltoets B: druk op B om het Bbl-compliance dashboard te openen/sluiten. Toegevoegd aan het sneltoetsen-overzicht (?)
v4.48.02026-04-18
Bbl-compliance dashboard, wall snap feedback
- Live Bbl-compliance dashboard: klik op de groene/rode 'Bbl'-badge rechtsonder op het canvas om een uitklapbaar paneel te openen met real-time bebouwingspercentage, uitbouw-diepte, perceelgrens-afstand en hoogte. Elke metric heeft een stoplicht-indicator (groen/amber/rood) op basis van Bbl-grenzen
- Wall snap visuele feedback: bij het slepen van binnenmuur-eindpunten verschijnt nu een gekleurde indicator op het snap-punt. Groen = L-hoek (endpoint-snap), blauw = T-aansluiting (segment-snap), geel = buitenmuur-snap. Inclusief label bij het snap-punt
v4.47.02026-04-18
Undo/redo timeline, wall auto-join
- Undo/redo geschiedenis: klik op het klok-icoontje naast undo/redo om een visuele tijdlijn te openen. Toont alle stappen met tool-namen en tijdstempels. Klik op een stap om direct naar dat punt te springen
- Binnenmuur auto-join: bij het slepen van muur-eindpunten snappen ze nu automatisch naar eindpunten en segmenten van andere binnenmuren (15cm tolerantie). Prioriteit: muur-eindpunt > muur-segment > buitenmuur. Maakt T- en L-aansluitingen eenvoudig
v4.46.02026-04-18
Kompasroos, zoom presets, radiaal menu, RD kopiëren
- Kompasroos: de noord-pijl is nu een volledige kompasroos met N/Z/O/W labels en een rode noord-naald. Semi-transparante achtergrond past bij het actieve thema
- Zoom presets: knoppen 1:50, 1:100, 1:200, 1:500 en Passend linksboven naast de statusbalk. Actieve schaal wordt gemarkeerd. Klik om direct naar die schaal te zoomen, gecentreerd op het huidige beeld
- Radiaal snelmenu: houd de muis 500ms ingedrukt op het canvas (long press) voor een cirkelvormig menu met snelle acties: Raam, Deur, Muur, Meet, Label, Oppervlakte. Sluit automatisch bij muisverlating of Escape
- RD-coördinaten kopiëren: klik op de RD-coördinaten in de statusbalk om ze naar het klembord te kopiëren (3 decimalen precisie). Toast-melding bevestigt het kopiëren
- Pand centroid-markering: een subtiel kruisje met stippellijnen markeert het middelpunt van het pand op het grid. Zichtbaar wanneer het grid actief is
v4.45.02026-04-18
Kleurgecodeerde minimap, opslag-indicator, sneltoets-preview
- Kleurgecodeerde minimap: objecten op de minimap worden nu per type gekleurd — uitbouwen rood, ramen blauw, deuren oranje, binnenmuren grijs, bijgebouwen groen, trappen paars, sanitair cyaan, meubels geel. Binnenmuren als dunne staafjes i.p.v. cirkels
- Opslag-indicator: de statusbalk toont nu 'opslaan…' en 'opgeslagen' tijdens auto-save, zodat je altijd weet of je wijzigingen bewaard zijn
- Sneltoets-preview: bij het indrukken van Ctrl, Shift of Alt verschijnt een compacte overlay met de beschikbare acties. Ctrl toont Z/D/A/L/F, Shift toont multi-select en fijn-modus, Alt toont grof-modus
v4.44.02026-04-18
Visuele feedback, selectie-info, muurhoek
- Toast-meldingen: undo/redo en verwijder-acties tonen nu korte bevestigingsmelding op het canvas (1,2s fade-out)
- Cursor-afstand tot muur: in crosshair-modus toont een oranje stippellijn de loodrechte afstand tot de dichtstbijzijnde muur (pand + binnenmuren). Helpt bij nauwkeurig plaatsen
- Object-hover in zoeklijst: bij het bewegen over objecten in de zoeklijst (Ctrl+F) licht het object op het canvas op met een gele stippelrand
- Selectie bounding box: bij meerdere geselecteerde objecten verschijnt een geel kader met breedte en hoogte afmetingen
- Muurhoek bij tekenen: bij het tekenen van binnenmuren toont het preview-label nu ook de hoek in graden naast de lengte (bijv. 3,50 m · 90°)
v4.43.02026-04-18
Muurmodi, maatvoering-stijlen, snap & thema
- Muur weergave modi: kies tussen Arcering (NEN 2574 45° diagonalen), Gevuld (solid) of Lijn (alleen contouren) via het lagenpaneel. Instelling wordt opgeslagen
- Maatvoering stijlen: NEN (professioneel met extensielijnen + 45°-ticks), Compact (stippellijn + ticks) of Minimaal (alleen labels). Instelling wordt opgeslagen
- Object-snap voor bijgebouwen en annotaties: bij slepen snappen objecten nu naar de centra van andere objecten, conform de bestaande snap-logica voor trap/sanitair/meubels
- Afstand bij 2 selecties: wanneer precies 2 objecten geselecteerd zijn, toont een gele stippellijn de onderlinge afstand in meters
- Vergrendel-icoon: vergrendelde objecten tonen nu een slot-icoon op het canvas zodat je direct ziet welke objecten geblokkeerd zijn
- Thema-wissel in werkbalk: zon/maan-knop naast de zoeknop om snel te wisselen tussen licht en donker thema, zonder het lagenpaneel te openen
v4.42.02026-04-18
NL maatnotatie, zoom-naar-selectie, object info panel
- Nederlandse maatnotatie: alle dimensielabels op het canvas gebruiken nu komma als decimaalscheider (3,50 m i.p.v. 3.50 m). Conform NL bouwtekening-conventie
- Zoom naar selectie (F): zoom vloeiend naar het geselecteerde object of groep. Zonder selectie zoom naar alle objecten
- Object info panel (I): toggle een gedetailleerd eigenschappenvenster met alle objecteigenschappen: type, positie, afmetingen, verdieping, materiaal, vergrendelstatus
v4.41.02026-04-18
Inline editing, precisie-tools, multi-select verbetering
- Inline annotatie bewerken: dubbelklik op een label om direct de tekst te bewerken, zonder pop-up dialoog. Enter/Escape/blur om op te slaan of annuleren
- Hulplijn-afstanden: wanneer een object geselecteerd is, tonen hulplijnen automatisch de afstand in meters tot dat object
- Coördinaten-invoer (P): open een dialoog om het geselecteerde object naar exacte RD-coördinaten te verplaatsen
- Verdiepingswisseling (Alt+1..5): snel schakelen tussen kelder, begane grond, 1e, 2e verdieping en zolder via sneltoetsen
- Multi-select nudge: arrow keys verplaatsen nu alle geselecteerde objecten tegelijk. Ctrl+A selecteert alles
- Object verbergen (E): toggle de zichtbaarheid van het geselecteerde object. Verborgen objecten zijn uitgefilterd maar niet verwijderd
- Grid-snap bij plaatsen: nieuwe objecten, muurpunten en annotaties snappen nu naar het actieve grid
- Verdiepingsindicator in statusbalk: toont de huidige verdieping (K/BG/1e/2e/Z) naast de schaal en coördinaten
v4.40.02026-04-18
Hulplijnen, object zoeken, array copy, rotatie
- Hulplijnen: sleep vanuit de linialen om horizontale/verticale hulplijnen te plaatsen. Cyaanblauwe stippellijnen met RD-coördinaat labels. Wis via het lagenpaneel
- Object zoeken (Ctrl+F of /): command palette-stijl zoekbalk om snel objecten te vinden, filteren en ernaar te navigeren. Toont type, afmetingen, zijde en verdieping
- Array copy (Ctrl+Shift+D): dupliceer een geselecteerd raam of deur 2x langs dezelfde muur met automatische tussenruimte
- Object rotatie ([ en ]): roteer geselecteerde objecten (trap/sanitair/meubel/bijgebouw) met 15-graden stappen. Shift+[ ] voor 90 graden
- Undo/redo knoppen met SVG-icoontjes en diepte-teller in de werkbalk
- Object-count badge en zoekknop in de werkbalk
v4.39.02026-04-18
Smooth zoom, tooltips, context menu shortcuts
- Smooth zoom-animatie: fit-to-view, zoom presets en +/- toetsen animeren nu vloeiend met ease-out cubic (300ms). Geen abrupte sprongen meer
- Verbeterde tooltips: ramen tonen nu borstwering en draairichting, deuren tonen draairichting in de hover-tooltip
- Context menu sneltoetsen: het rechtermuisklik-menu toont nu keyboard shortcuts (Klik, Ctrl+D, Del, Ctrl+L) bij elke actie
- Selectie-samenvatting verbeterd: multi-select bar toont nu het aantal objecten per type (bijv. '5 obj · 2× raam, 1× deur, 2× muur')
v4.38.02026-04-18
Afdrukgebied, muurarcering, Bbl-guides, smart snap
- Afdrukgebied-preview: toont de papiergrenzen (A4/A3/A2/A1) op het canvas als blauwe stippellijn-rechthoek op de geselecteerde schaal. Togglebaar via lagenmanager
- Muurarcering (NEN 2574): 45° diagonale hatch-lijnen in de muurdikte-band van het pand. Professionele bouwtekening-stijl
- Bbl 1m setback-lijn: rode stippellijn 1 meter binnen de perceelgrens toont de minimale afstand voor bijgebouwen/uitbouwen (Bbl art. 22.27)
- Smart wall snap: bij het tekenen van binnenmuren snapt de cursor naar eindpunten, middelpunten van bestaande muren, pandhoeken en uitbouwhoeken. Groene indicatorcirkel bij snap
v4.37.02026-04-18
Auto-maatvoering tussen openingen
- Automatische afstandsmaten tussen aangrenzende openingen (ramen/deuren) op dezelfde muur. Toont tussenafstand in meters met stippellijn als er meerdere openingen op één wand staan
v4.36.02026-04-18
Coördinaat-linialen, AutoCAD-stijl canvas
- Coördinaat-linialen: RD-meter linialen langs de boven- en linkerzijde van het canvas. Tick marks op grid-intervallen met labels op elke 5e tick. Automatisch schaalbaar bij zoom
v4.35.02026-04-18
Lagenmanager, materiaal-kleuren, selectie-chip, status bar
- Lagenmanager uitgebreid: snap guides, annotaties en kamers als togglebare lagen. Persistent measurements ook schakelbaar via layer panel
- Materiaal-kleuren op canvas: ramen, deuren en uitbouwen tonen nu een semi-transparante kleur op basis van hun materiaal-categorie (metselwerk, hout, glas, etc.)
- Grid keyboard shortcut: G cyclet door grid-afstanden (uit/0.5m/1m/5m), Shift+G wisselt tussen lijn- en puntjes-grid
- Selectie-info chip: bij selectie van een object verschijnt een compacte chip boven het canvas met type, afmetingen, zijde en materiaal
- Status bar verbeterd: toont nu ook zoom-percentage en grid-stijl indicator. Altijd zichtbaar, niet alleen bij cursor op canvas
v4.34.02026-04-18
Kamer-herkenning, dot grid, zoekbalk, tellers
- Kamer-herkenning: automatische detectie van ruimtes gevormd door binnenmuren. Toont oppervlakte per kamer (m²) met categorie-label (gang/hal, kamer, slaapkamer, woonkamer) in een compact overlay linksonder
- Dot grid patroon: naast lijn-grid nu ook een puntjes-grid optie. Toggle via de grid-balk in de sidebar (━ / ·). Punten op elke grid-intersectie, grotere punten op 5m-intervallen
- Object-zoekbalk in navigator: bij 6+ objecten verschijnt een zoekfilter. Filtert op label, detail en type
- Undo/redo teller: de toolbar-knoppen tonen nu het aantal stappen (bijv. Undo(3), Redo(2))
- Object-tellingen per type: Raam, Deur en Muur knoppen tonen het aantal geplaatste objecten als badge
v4.33.02026-04-18
Object-beheer, snap guides, quick-add toolbar
- Object snapping: bij het slepen van interieur-objecten verschijnen groene stippellijnen wanneer het object uitgelijnd is met andere objecten (center-to-center, 15cm threshold). Snap guides verdwijnen automatisch bij loslaten
- Drag-and-drop reorder in object navigator: versleep objecten in de navigator-lijst om de volgorde aan te passen. Drag-handle (⠇) links van elk item
- Object visibility toggle: oog-icoon per object in de navigator. Verborgen objecten worden niet gerenderd maar blijven in de scene. Ook beschikbaar via rechtermuisknop-contextmenu
- Ctrl+D dupliceer: sneltoets om geselecteerd object (of multi-selectie) te dupliceren met 0.5m offset. Werkt voor alle objecttypen
- Quick-add toolbar: + knop in de canvas toolbar met dropdown voor snel plaatsen van interieur-objecten (trap, toilet, wastafel, douche, bad, aanrecht, eettafel, bank, bed, kast)
- Minimap object-indicatoren: objectposities als groene stippen op de minimap. Geselecteerd object als gele stip
- Context menu centreren: nieuwe optie om de camera te centreren op een object
- Crosshair verbeterd: X/Y RD-coördinaten labels op de assen
v4.32.02026-04-18
Smart dimensions, properties panel, kamer-presets
- Smart dimensions: wanneer een interieur-object geselecteerd is, verschijnen automatisch afstandslijnen (amber) naar de dichtstbijzijnde muren in alle 4 richtingen. Raycasting vanuit het object-center naar pand-edges en binnenmuren
- Properties panel: klik op een trap, sanitair, meubel of bijgebouw en een bewerkbaar panel verschijnt linksonder met X, Y, Breedte, Diepte/Lengte en Rotatie velden. Direct nummer-invoer voor precieze positionering
- Kamer-presets: 4 one-click kamer-templates in het interieur-tabblad — Slaapkamer (bed+kast), Badkamer (toilet+wastafel+douche), Keuken (aanrecht+kookplaat), Woonkamer (bank+salontafel). Plaatst meerdere objecten in één keer op de pand-centroide
v4.31.02026-04-18
Selectiekader, grid-snap, spiegelen, zoom-controls
- Rubber band selectie (Shift+sleep): sleep een selectiekader over het canvas om meerdere objecten tegelijk te selecteren. Links-naar-rechts = alleen volledig ingesloten objecten (blauw kader), rechts-naar-links = ook deels overlappende (groen gestreept)
- Grid-snap bij slepen: interieur-objecten (trap, sanitair, meubel) snappen automatisch naar een 10cm raster wanneer ze niet tegen een muur worden gesnapt. Zorgt voor nauwkeurige positionering
- Spiegel/flip (H/V toets): spiegel geselecteerde interieur-objecten horizontaal of verticaal. Ook beschikbaar in het rechtermuisknop-contextmenu
- Zoom-controls: +/− toetsen voor zoom in/uit, Ctrl+0 voor passend in beeld, en een nieuwe ‘Zoom sel.’ knop die inzoomt op geselecteerde objecten
v4.30.02026-04-18
Align/distribute, NEN 2574 meetlint, verbeteringen
- Uitlijn-tools in multi-select: selecteer meerdere objecten en gebruik de nieuwe uitlijn-knoppen (links/midden/rechts, boven/midden/onder) om objecten op één lijn te brengen. Bij 3+ objecten verschijnen ook verdeel-knoppen (horizontaal/verticaal gelijk verdelen)
- NEN 2574 meetlint-stijl: de persistent meetlijn (M-toets) is geupgraded naar professionele maatvoering met extensielijnen en 45° ticks conform bouwtekening-normen, in plaats van simpele stippellijn met cirkels
v4.29.02026-04-18
Copy-paste, context menu, multi-select batch
- Copy-paste alle objecttypen (Ctrl+C/V): kopieer en plak nu ook trappen, sanitair, meubels, binnenmuren en bijgebouwen. Geplakte objecten komen op de actieve verdieping
- Context menu uitgebreid: rechts-klik op elk object toont dupliceren, kopieer afmetingen, vergrendelen. Interieur-objecten tonen ook een verdieping-switcher (K/BG/1e/2e). Trap/sanitair/meubel/binnenmuur/bijgebouw volledig ondersteund
- Multi-select action bar: selecteer meerdere objecten (Shift+klik) en een floating toolbar verschijnt met batch-acties: verwijderen, dupliceren, en verplaats naar verdieping
v4.28.02026-04-18
Click-to-place, ghost preview, muur-snap
- Click-to-place modus: klik op een preset in het interieur-tabblad, dan klik op het canvas om het object te plaatsen op precies de gewenste positie. Actieve presets krijgen een gekleurde ring-highlight
- Ghost preview: wanneer click-to-place actief is, verschijnt een semi-transparante contouren van het object bij de muiscursor als visuele feedback. Kleur per objecttype (groen/blauw/amber)
- Muur-snap: sleep een interieur-object (trap, sanitair, meubel) dicht bij een buiten- of binnenmuur (< 30cm) en het object snapt automatisch tegen de muur met de juiste rotatie
v4.27.02026-04-18
Rotatie-handles, verdieping-filter PDF, multi-verdieping pakket
- Rotatie-handles op interieur-objecten: trap, sanitair en meubel objecten hebben nu een visuele rotatie-handle (rood cirkeltje boven het object). Sleep om vrij te roteren met live preview
- Verdieping-filter in plattegrond PDF: de plattegrond-export filtert nu objecten op verdieping. Alleen trappen, sanitair en meubels van de actieve verdieping worden gerenderd
- Multi-verdieping tekeningenpakket: het tekeningenpakket genereert automatisch een aparte plattegrond-pagina per verdieping waarop objecten geplaatst zijn (BG, 1e, 2e, etc.)
v4.26.02026-04-18
Meubel-symbolen, plattegrond PDF interieur-export
- Meubel-symbolen library: 6 meubeltypen — eenpersoonsbed, tweepersoonsbed, eettafel, salontafel, bank en kledingkast. Elk met type-specifiek symbool (kussen+deken, bankleuning, kasthendels). Sleepbaar en roteerbaar op het canvas
- Plattegrond PDF interieur-export: alle interieur-elementen (trappen, sanitair/keuken, meubels) worden nu mee-geëxporteerd naar de plattegrond-PDF en het tekeningenpakket. NEN 2574 symbolen inclusief treden/looppijl, toilet/bad/douche/aanrecht/kookplaat en bed/tafel/bank/kast
v4.25.02026-04-18
Verdiepingen, trap-symbool, sanitair/keuken, kamerdetectie
- Verdiepingen-selector (K/BG/1e/2e/Z): schakel tussen bouwlagen in de editor. Ramen, deuren, binnenmuren en interieur-elementen worden per verdieping gefilterd. Nieuwe objecten worden op de actieve verdieping geplaatst
- Trap-symbool tool (NEN 2574): voeg rechte, kwartslag- of halfslagtrappen toe aan de plattegrond. Treden, looprichtings-pijl en breeklijn volgens tekennormen. 4 presets in het interieur-tabblad
- Sanitair/keuken symbolen: 6 NEN 2574 symbolen — toilet, wastafel, bad, douche, aanrecht en kookplaat. Elk met type-specifiek symbool (pot+stortbak, wasbak+kraan, 4-pits branders). Sleepbaar en roteerbaar op het canvas
- Automatische kamerdetectie: wanneer binnenmuren het pand onderverdelen, detecteert Drawmit kamers via grid-based flood fill (20cm resolutie) en toont de oppervlakte (m²) als label in het midden van elke kamer
v4.24.02026-04-18
Muur-tekenmodus, laag-toggles, PNG-export, vergrendeling, T-aansluitingen
- Continu muur-tekenmodus (toets W): klik om hoekpunten te plaatsen, elke klik creëert een binnenmuur-segment. Snap naar bestaande muur-endpoints (20cm) en pand-hoeken. 45° hoeksnapping. Enter om af te sluiten, Escape om te annuleren. Groene preview-lijn met lengte-label
- Laag-toggles (oog-icoontje in toolbar): schakel individuele lagen aan/uit — grid, dimensies, perceelgrens, BGT context, buurpanden, mini-map, metingen. Voorkeur blijft bewaard in localStorage
- Canvas export als PNG: nieuwe PNG-knop in toolbar. Exporteert het huidige canvas-beeld op 2× resolutie (retina) als PNG-download
- Object vergrendeling: Ctrl+L vergrendelt het geselecteerde object. Vergrendelde objecten kunnen niet verwijderd of per ongeluk verplaatst worden. Visueel: slotje in contextmenu. Statusbar toont aantal vergrendelde objecten
- Binnenmuur T-aansluiting en hoekdetectie: automatische detectie van T-aansluitingen (blauw) en L-hoeken (paars) waar binnenmuren op elkaar of op buitenmuren aansluiten. Visuele indicatoren op het snijpunt (10cm tolerantie)
v4.23.02026-04-18
Oppervlaktemeting, bebouwingspercentage, drag-tooltips
- Oppervlaktemeting (toets A): teken een polygoon op het canvas door punten te klikken. Na 3+ punten wordt de omsloten oppervlakte live berekend in m². Sluit de polygoon door bij het eerste punt te klikken of druk Escape. Paarse weergave, persistent op canvas
- Bebouwingspercentage live indicator: progress bar in de sidebar die het actuele bebouwingspercentage toont (pand + uitbouwen + bijgebouwen / perceeloppervlakte). Kleur: groen (<50%), geel (50-60%), rood (>60%)
- Live drag dimensie-labels: tijdens het slepen van handles verschijnt een tooltip bij de cursor met de huidige afmeting (diepte/breedte/offset in meters)
- Keyboard shortcut hints: bij hover over een drag handle verschijnt een compacte tooltip met sneltoetsen (Shift=1cm, Alt=1m, pijltjes=nudge)
- Perceelvulling subtiel groen (tuingebied) in plaats van roze voor betere leesbaarheid
v4.22.02026-04-18
Zondiagram, materiaal-swatches, snap-labels, mini-map
- Pand-oriëntatie widget met SVG zondiagram: toont de gevelsoriëntatie per windrichting en bezonning-score. Amber = veel zon (Z/ZW/ZO), grijs = weinig zon (N/NW/NO). Percentage gevel op zon in de sidebar
- Materiaal-select met kleurswatches: alle materiaal-dropdowns (gevelmateriaal, dakmateriaal, kozijnmateriaal) zijn vervangen door een custom dropdown met kleurswatches naast de materiaalnaam. Geselecteerd materiaal toont ook de swatch
- Snap-labels bij drag: wanneer een uitbouw snapt naar de perceelgrens verschijnt 'snap perceelgrens' in groen. Bij Bbl max diepte (4m) verschijnt 'Bbl max 4m' in amber. Ramen/deuren tonen 'gecentreerd' bij midden-positie
- Context-menu verrijkt: Dupliceren (kopie met offset +0.5), Kopieer afmetingen (naar clipboard), Verplaats naar N/O/Z/W snelknoppen
- Command palette (Ctrl+K) uitgebreid: zijbalk toggle, grid-opties, scene wissen
- Afstandslabels bij selectie: geselecteerd raam/deur toont afstanden tot muurhoeken (goud) en naar aangrenzende openingen (cyaan). Rood als afstand < 15cm
- Mini-map navigatie: klein overzichtskaartje rechtsonder in het canvas met perceel-outline, pand-shape en viewport-rectangle. Klik om te navigeren
v4.21.02026-04-18
Objectpaneel, crosshair, hoekmeting, voor/na preview
- Objectnavigator: compact keyboard-navigeerbaar paneel in de sidebar dat alle scene-objecten toont (uitbouwen, dakkapellen, ramen, deuren, binnenmuren, bijgebouwen). Klik om naar het detail-paneel te scrollen, gebruik pijltjestoetsen voor navigatie, Delete om te verwijderen
- Canvas crosshair: druk X om een crosshair-overlay te activeren met RD-coördinaten die de cursor volgen. Ideaal voor nauwkeurig positioneren
- Hoekmeting: in meetmodus (M) kun je nu 3 punten klikken voor hoekmeting. Na het 2e punt klik je een 3e punt — de hoek bij het middenpunt wordt berekend en als goudkleurige boog getoond
- Export preview voor/na vergelijking: wanneer de scene uitbouwen of dakkapellen bevat, toont de preview-modal automatisch een side-by-side vergelijking van de bestaande en nieuwe situatie
v4.20.02026-04-18
GBO labels, raam/deur afmetingen, cumulatieve metingen
- GBO-label op canvas: de pand-footprint oppervlakte (m²) wordt nu getoond in het midden van het pand, inclusief uitbouw-oppervlakte wanneer aanwezig
- Raam- en deurlabels tonen nu zowel breedte als hoogte (bijv. 1.20×1.50m) in plaats van alleen de breedte
- Cumulatieve metingen: meetresultaten blijven nu zichtbaar op het canvas na voltooiing. Klik opnieuw om een nieuwe meting te starten — alle vorige metingen blijven staan als semi-transparante annotaties
- Clear-knop in de statusbar: verwijder alle opgeslagen metingen in één klik
v4.19.02026-04-18
Snap guides, multi-select, scene statistieken
- Snap guides: visuele uitlijnlijnen verschijnen tijdens het slepen van objecten — blauw-turquoise stippellijnen tonen de huidige positie van uitbouw-randen, raam/deur-centra en binnenmuur-eindpunten
- Binnenmuur wall-snap: eindpunten snappen nu naar pandmuren (< 15cm) en grid-lijnen wanneer het grid actief is
- Multi-select: houd Shift ingedrukt en klik op meerdere ramen, deuren of binnenmuren om ze tegelijk te selecteren. Delete verwijdert alle geselecteerde objecten in één keer
- Scene statistieken in statusbar: compacte objecttelling (bijv. ‘2U 3R 1D 2W’) en undo-diepte in de linkeronderhoek van het canvas
v4.18.02026-04-17
Zoom-presets, kopieer/plak, muurliniaal, object-tooltip
- Zoom-presets: druk 1–5 op het toetsenbord om direct te schakelen naar schaal 1:50, 1:100, 1:200, 1:500 of 1:1000. De view centreert automatisch op het pand
- Kopieer/plak: Ctrl+C kopieert het geselecteerde object (raam, deur, uitbouw, dakkapel), Ctrl+V plakt een kopie met een lichte verschuiving. Snel meerdere identieke ramen plaatsen
- Muurliniaal: bij voldoende inzoom (≥1:200) verschijnen linialen langs de gevelmuren met totale wandlengte. Raam- en deuropeningen worden aangeduid met positie en breedte-labels
- Object-tooltip: beweeg de muis over een uitbouw, raam, deur, dakkapel, binnenmuur of bijgebouw om direct afmetingen, zijde en type te zien in een compact tooltip-venster
v4.17.02026-04-17
3D ramen/deuren, minimap, zonnestudie, responsive editor
- Ramen en deuren verschijnen nu in de 3D-viewer als semi-transparante glaspanelen (ramen, lichtblauw) en houtkleurige deurpanelen met kozijnlijnen, kruisverdelers en deurklink-indicatoren
- Binnenmuren zichtbaar als 3D-wanden met juiste dikte en verdiepingshoogte in het massing model
- Interactieve minimap in de rechterbovenhoek van het 2D-canvas: toont perceel, pand en buurpanden in miniatuur met een viewport-rechthoek. Klik op de minimap om direct te navigeren
- Zonnestudie in de 3D-viewer: klik op het zon-icoon om uur-slider en maand-selector te activeren. Berekent de werkelijke zonpositie voor Nederland (52°N, 5°E) met het Spencer-algoritme. Schaduwen volgen de zon realtime — perfect om bezonningseffecten van uitbouwen te beoordelen
- Perceelgrens-afstandslabels nu zichtbaar op alle uitbouwen (niet alleen de geselecteerde). Afstandslijnen kleuren rood bij < 1m Bbl-grens
- Editor responsive: sidebar smaller op mobiel (w-72), adres zichtbaar in header op kleine schermen, sidebar sluit automatisch na adresselectie op mobiel, chatpanel als bottom-sheet op mobiel met drag-handle
v4.16.02026-04-17
Scene-aware export — je ontwerp in elke PDF
- Command palette exports (Ctrl+K → Export) sturen nu je volledige scene (uitbouwen, dakkapellen, ramen, deuren, bijgebouwen) mee naar de PDF-generator via POST /api/export/scene
- Eerder gebruikten command palette exports een eenvoudige GET-call die alleen het kale gebouw renderde. Nu zie je je ontwerp terug in elke gedownloade PDF, identiek aan de sidebar-exportknoppen
- Graceful fallback: als de scene-export mislukt (bijv. bij server-fout), valt de export automatisch terug op de GET-route met alleen het gebouw
v4.15.02026-04-17
Vergunningvrij dashboard — realtime Bbl-check in de sidebar
- Nieuw vergunningvrij-dashboard verschijnt automatisch zodra je een uitbouw plaatst. Toont 4 Bbl-criteria (max diepte 4m, max hoogte 5m, max bebouwing 50%, geen monument) met live waarden, limieten en artikelverwijzingen
- Visuele voortgangsbalken per criterium: groen bij veilige marge, geel boven 85%, rood bij overschrijding. Overall status ‘Vergunningvrij’ (groen) of ‘Vergunning nodig’ (rood) bovenaan
- Client-side berekening: geen API-call nodig, reageert direct op elke wijziging in de scene. Bebouwingspercentage wordt berekend uit perceeloppervlakte + pand-footprint + alle uitbouwen en bijgebouwen
- Rijksmonument-detectie: als het pand een rijksmonument is (via /api/check data), wordt de monument-check automatisch rood. Server-side vergunningvrij-resultaat (indien beschikbaar) wordt compact weergegeven als aanvulling
v4.14.02026-04-17
Command palette — Ctrl+K voor snelle toegang tot alle acties
- Druk Ctrl+K (of ⌘K op Mac) om het command palette te openen. Typ om te zoeken in alle beschikbare acties: objecten toevoegen, weergave wisselen, PDF exporteren
- Drie groepen: Toevoegen (uitbouw, dakkapel, raam, deur, bijgebouw met verstandige defaults), Weergave (3D model, PDF preview, AI chat, undo/redo), Exporteren (alle 7 tekeningen + tekeningenpakket als directe download)
- Fuzzy search: typ ‘schui’ om ‘schuifpui’ te vinden, ‘dak’ voor dakkapel én dakplattegrond. Toetsenbordnavigatie met pijltjes + Enter
- Gebouwd met cmdk (dezelfde engine als Vercel, Linear en Raycast). Nul extra bundlegrootte voor pagina’s die het palette niet gebruiken
v4.13.02026-04-17
3D massing model — realtime 3D-weergave naast je plattegrond
- Nieuwe ‘3D’-knop in de header opent een interactieve 3D-weergave naast het 2D-canvas. Je bestaande pand wordt geladen uit 3DBAG (LoD 2.2) met correcte muren, dak en grondvlak
- Scene-objecten live in 3D: uitbouwen (baksteenrood), dakkapellen (warm bruin) en bijgebouwen (beige) verschijnen direct als 3D-volumes wanneer je ze toevoegt of wijzigt in de 2D-editor
- Fysiek correcte verlichting: ambient + directioneel licht met zachte schaduwen, terracotta dak- en zandsteen muurkleuren. Orbit controls met damping voor vloeiend navigeren (draaien, pannen, zoomen)
- Three.js geladen via dynamic import — geen extra bundlegrootte tot je de 3D-view opent. Automatische bounding-box camera-framing, fullscreen-modus, legenda met kleurcodes per objecttype
v4.12.02026-04-17
Bbl constraint-hints — slimme snap en waarschuwingen op het canvas
- Magnetische snap naar 4m diepte: wanneer je een uitbouw sleept naar 3,97–4,03m diepte, snapt hij automatisch naar exact 4,00m — de maximale vergunningvrije diepte volgens het Bbl (art. 22.36 bruidsschat)
- Visuele 4m gidslijn: een rode stippellijn verschijnt op het canvas zodra je uitbouw dicht bij de 4m grens komt. Bij overschrijding wordt de lijn dikker en rood met ‘max 4m (Bbl)’ label
- Dimensie-label kleurt mee: groen bij exact 4m snap (✓ 4m Bbl), rood bij overschrijding (⚠ >4m Bbl). Perceelgrens-indicator wordt rood wanneer de afstand < 1m is (art. 22.27 bruidsschat bij hoogte > 3m)
- Alle Bbl-grenzen zijn visueel, niet blokkerend: je kunt altijd verder ontwerpen, maar ziet direct of een omgevingsvergunning nodig wordt
v4.11.02026-04-17
Kosteninschatting — direct een idee van de prijs
- Nieuw kosteninschatting-paneel in de sidebar: zodra je een uitbouw, dakkapel of bijgebouw toevoegt, verschijnt automatisch een kostenraming met laag/hoog range per component en een totaalschatting
- Prijzen gebaseerd op NL gemiddelden 2025-2026 (BouwKosten.nl): uitbouw €1.400-€2.200/m², dakkapel €4.500-€8.500 per stuk, bijgebouw €600-€1.200/m². Inclusief fundering, ruwbouw, kozijnen en afwerking
- Duidelijke ‘indicatief’ badge en disclaimer: dit is geen offerte maar een richtprijs. Exclusief leges, architect en onvoorzien
v4.10.02026-04-17
Visuele geschiedenistijdlijn — klik om terug te springen
- Undo/redo-knoppen in de header uitgebreid met een klikbare geschiedenistijdlijn. Klik op het ▾-pijltje tussen undo en redo om alle acties te zien (uitbouw toegevoegd, raam verplaatst, afmeting gewijzigd, etc.)
- Elke actie toont een leesbaar label en relatieve tijd (nu, 5s, 2m). Klik op een actie om direct naar dat punt in de geschiedenis te springen — alle stappen worden in één keer uitgevoerd zonder tussenstappen
- Toekomstige acties (redo-pad) worden grijs weergegeven, uitgevoerde acties in kleur. De huidige positie is duidelijk gemarkeerd met een gekleurde indicator
- Scene store uitgebreid met getHistory() en jumpTo() methodes. jumpTo() past meerdere patches in één batch toe zonder tussentijdse re-renders
v4.9.02026-04-17
Live PDF preview — zie je tekening automatisch bijwerken
- Nieuwe ‘Preview’-knop in de header opent een live split-view naast het canvas. Kies een artefact (situatietekening, plattegrond, gevels, doorsnede of impressie) en de PDF wordt automatisch opnieuw gegenereerd na elke wijziging
- Debounced updates (1.2s na laatste wijziging) met abort-on-change zorgt voor soepele interactie zonder onnodige server-belasting. Loading overlay toont ‘Bijwerken...’ terwijl een nieuwe versie rendert
- Artefact-selector dropdown in de preview-header voor snel wisselen tussen tekeningen. Download-link voor de huidige preview-PDF direct beschikbaar
- Split-view layout: canvas links (halve breedte), PDF preview rechts. Sluit de preview om terug te keren naar full-width canvas
v4.8.02026-04-17
Componenten bibliotheek — prefabs voor uitbouwen, dakkapellen, bijgebouwen en gevelopeningen
- Nieuwe tabbed componentenbibliotheek in de editor-sidebar vervangt de losse preset-knoppen. 4 categorieën: Uitbouw (tuinkamer, serre, aanbouw, erker, keukenuitbouw, brede uitbouw), Dak (standaard, slaapkamer, badkamer, breed plat, dakopbouw, dubbel), Tuin (tuinhuis, schuur, carport, veranda, berging, hobbyruimte), Gevel (schuifpui, draairaam, frans balkon, kiepraam, voordeur, schuifdeur, dubbele deur, binnendeur)
- Elke prefab-card toont naam, afmetingen en korte omschrijving. Één klik plaatst het component met verstandige standaardwaarden (automatische gevelkeuze, passend daktype, correcte maten)
- Dubbele dakkapel preset plaatst twee smalle dakkapellen naast elkaar op dezelfde gevel met automatische offset
- Gevel-tab bundelt ramen én deuren: schuifpui (2.4×2.1m), frans balkon (1.8×2.3m), voordeur (1.0×2.3m), dubbele openslaande deuren (1.6×2.1m) en meer
v4.7.02026-04-17
Compliance flagging, materialen, DXF+ en auto-layout plattegrond
- Vergunningvrij-toets live op PDF: wanneer je een uitbouw plaatst die de Bbl-grenzen overschrijdt (diepte >4m, hoogte >5m, perceelgrens <1m), worden de betreffende maatlijnen rood getekend op situatie- en geveltekeningen. Titelblok toont compliance-badge (groen/amber/rood)
- Auto-layout plattegrond: binnenmuren en kamerlabels (woonkamer, keuken, slaapkamer) worden nu automatisch gegenereerd op basis van de BAG footprint. 4 indelingsstrategieën (studio, klein, standaard O/W, standaard N/Z) kiezen op basis van oppervlakte en pandoriëntatie
- Materiaalbibliotheek: bouwjaar-gebaseerde materiaalkeuze (rode baksteen pre-1940, geel 1940-70, bruin 1970-2000, grijs 2000+). Gevelkleuren en dakmaterialen zijn zichtbaar op gevels (lichte tint wallvulling) en 3D impressie (face-kleuren). Labels tonen materiaalnaam i.p.v. generiek 'metselwerk'
- DXF plattegrond verrijkt: binnenmuren, ramen, deuren en kamerlabels worden nu meegeëxporteerd naar DXF met NLCS 6.0 laagnamen (B-ARC-KOZI-B, B-ARC-DEUR-B). Auto-fenestration data doorgeleid naar de DXF route
v4.6.02026-04-17
Vision pipeline — bouwtekening-upload, SAM2, Gaussian Splat, 3D-reconstructie, RoomPlan
- Bouwtekening-upload: upload een plattegrond (scan/foto/PDF) en Claude Vision analyseert muren, ramen, deuren en kamers. Resultaat wordt omgezet naar scene tool-calls die je met één klik toepast op je tekening
- Browser AI gevelanalyse (SAM2 + Depth Anything V2): klik op ramen en deuren in een gevelfoto — het model segmenteert ze direct in je browser via WebGPU. Geen server nodig, volledig privaat. Schat diepte per element voor 2.5D reconstructie
- Gaussian Splat 3D viewer: upload een .ply/.splat/.ksplat bestand (bijv. van Polycam, Luma AI of Nerfstudio) en bekijk je gebouw als fotorealistische 3D-puntenwolk met orbit-controls, progressieve loading en fullscreen
- Multi-foto 3D-reconstructie: upload 3-30 foto’s van je gebouw voor automatische 3D point cloud generatie. Backend-keten: Replicate DUSt3R → Claude Vision → stub. Resultaat direct zichtbaar in de Gaussian Splat viewer
- Apple RoomPlan import: upload een iPhone LiDAR-scan (.usdz) of RoomPlan JSON-export. Muren, deuren, ramen en meubels worden automatisch geïmporteerd en op de scene geplaatst
v4.5.02026-04-17
Bijgebouwen en bestanden in chat — tuinhuis plaatsen, foto's meesturen
- Nieuw scene-objecttype: bijgebouw (tuinhuis, schuur, carport, overkapping). Vrij plaatsbaar op het perceel met drag, nudge (pijltjestoetsen) en sidebar-controls voor breedte, diepte, hoogte. Zichtbaar op het canvas als rechthoek met label en afmetingen
- Chat met bijlagen: de AI-assistent accepteert nu foto’s (JPEG, PNG, WebP, GIF) en PDF’s als context bij je bericht. Claude analyseert de bijlage en kan advies geven op basis van een gevelfoto, bouwtekening of brochure. Maximaal 4 bestanden van elk 10 MB
- Quick-add ‘+ Tuinhuis’ knop in de onboarding-banner en sidebar. Plaatst een standaard tuinhuis (3×4m plat dak) op 10m van het pand-middelpunt
- verplaatsObject tool uitgebreid met x/y-ondersteuning voor bijgebouwen en annotaties. wijzigAfmeting accepteert nu ook bijgebouwen
v4.4.02026-04-17
Proactieve AI-adviseur — Claude denkt mee over je ontwerp
- De AI-assistent in de editor ontvangt nu volledige perceelcontext: oppervlaktes, bebouwingspercentage, hoogte-data, vergunningvrij-status en beperkingen (monument, stadsgezicht). Claude kan nu proactief adviseren over Bbl-grenzen en concrete alternatieven voorstellen
- Proactieve begroeting: bij het openen van een adres begroet Claude je automatisch met een samenvatting van het pand en advies of vergunningvrij bouwen een optie is
- Chat panel opent automatisch wanneer je via de homepage een adres kiest. Bestaande projecten worden niet gestoord
- Tool-call display verbeterd: acties van Claude tonen nu leesbare labels (‘Uitbouw toegevoegd: 4×3m aan de zuidgevel’) in plaats van ruwe JSON
- Onboarding banner in de sidebar wanneer je scene nog leeg is: quick-add knoppen voor uitbouw, dakkapel, of start de AI-chat
- System prompt herschreven als bouwkundig adviseur: Claude waarschuwt bij overschrijding van Bbl-regels (max 4m diepte, 50% achtererf, 5m hoogte) maar blokkeert niet — het is advies, geen verbod
v4.3.02026-04-17
Productie-klaar — API keys, PDF-upload, tier gating, cloud projecten
- Docker container ontvangt nu alle AI API-keys (Anthropic, OpenAI, Gemini) en DSO-key via docker-compose environment. Vision pipeline, regels-uitleg en credit-alerts werken nu in productie
- PDF-upload: de vision pipeline accepteert nu naast gevelfoto’s ook bouwtekeningen in PDF-formaat. Claude, GPT-4o en Gemini analyseren de PDF direct — geen server-side rendering nodig. Maximum 20 MB voor PDFs
- Tier gating: PDF-exports (behalve situatietekening), vision/foto tracen, en AI-assistent vereisen nu een login. Situatietekening en perceeldata blijven gratis als teaser. IFC/DXF-export vereist bureau-abonnement
- Cloud-opslag voor projecten: ingelogde gebruikers krijgen automatisch cloud-save naast de bestaande localStorage. Projecten worden gesynchroniseerd via /api/projects. Bij eerste login worden localStorage-projecten gemigreerd naar de cloud
- Vision upload koppelt nu aan de ingelogde gebruiker (was: anonymous). Credit-alert e-mails worden verzonden wanneer een AI-provider faalt
v4.2.02026-04-17
Eerlijk over schattingen — disclaimers, stippellijnen en guidance
- Elke PDF met auto-gegenereerde ramen/deuren toont nu een disclaimer in het titelblok: ‘Ramen en deuren geschat op basis van gebouwhoogte en functie. Controleer met opmetingen of bestaande tekeningen.’
- Geschatte ramen en deuren worden op geveltekeningen en plattegronden getekend met een stippellijn (NL-conventie voor ‘voorgesteld/geschat’). Handmatig geplaatste elementen uit de editor blijven doorgetrokken
- Amber waarschuwingsbanner op de demo-pagina boven de export-knoppen, met link naar de editor
- Editor: de ‘Foto tracen’ sectie legt nu uit waarom je een gevelfoto zou uploaden — om geschatte ramen te vervangen door werkelijke posities
- Landing page stap 2 noemt nu het uploaden van gevelfoto’s voor exacte ramen en deuren
v4.1.02026-04-17
Ramen, deuren en binnenmuren — alle tekeningen tonen nu een realistisch pand
- Auto-fenestration: alle PDF-tekeningen (gevels, impressie, doorsnede, plattegrond) tonen nu automatisch geschatte ramen, deuren en binnenmuren op basis van 3DBAG-geometrie en BAG-gebruiksdoel. Geen handmatige invoer nodig — een woonfunctie krijgt ramen op 25% van de voorgevel, een kantoor 35%, een winkel een grote etalage. Blinde gevels (< 0,5 m van de perceelgrens) worden automatisch overgeslagen
- Situatietekening opgeschoond: op schaal 1:500 en kleiner worden maatkettingen, bijgebouw-dimensies, perceelgrens-randlengtes, BGT scheiding-labels en terrein-labels nu automatisch weggelaten. Perceelnummers worden gefilterd op aangrenzende percelen (max 8, gedeelde grens > 2 m). Buurpand-adressen beperkt tot de 6 dichtstbijzijnde. Resultaat: leesbare tekening i.p.v. overlappende tekst
- Plattegrond beter gevuld: de tekening gebruikt nu 86% van het papier (was 78%), en toont binnenmuren met kamerindeling plus ramen en deuren in NEN 2574-symbolen (draairichting, kozijn, glaslijn)
- Uit te schakelen met ?auto_fenestration=false op elke export-URL voor vergelijking met de kale variant
v4.0.02026-04-17
Regel-laag live — DSO omgevingsplan + LVBB SRU + versie-stempel in elke PDF
- De DSO Presenteren v8 API is nu live aangesloten. Als je een adres opzoekt toont Drawmit de échte omgevingsplan-regelingen, activiteiten en gebiedsaanwijzingen voor dat perceel — geen demo-data meer. Publieke testadressen tonen meerdere regelingen en activiteiten uit het omgevingsplan
- Elke regelingen-opvraging krijgt een versie-hash (SHA-256 van de regelingen-state + timestamp). Deze hash wordt automatisch meegegeven aan de PDF-export zodat het titelblok de exacte omgevingsplan-versie toont. Juridisch reproduceerbaar: met de hash kun je altijd terughalen welke regels golden op het moment van de tekening
- LVBB SRU-client voor het doorzoeken van de Landelijke Voorziening Bekendmaken en Beschikbaarstellen (KOOP). Zoekt regelingen en welstandsnota’s per gemeente-code. Publieke endpoint, geen API-key nodig. Springplank voor de toekomstige welstand-indexering van alle 342 gemeenten
- DSO-bugfixes: RD-coördinaten worden nu afgerond op 3 decimalen (mm-precisie, DSO v8 wijst meer af) en AKN-identifiers in URL-paden gebruiken underscore-substitutie (_akn_nl_act_ i.p.v. /akn/nl/act/) conform DSO HAL-links
- De /demo/situatie-pagina toont nu versie-hash en ophaaldatum in het regels-paneel. Alle PDF-exports nemen de hash automatisch over in het titelblok wanneer regels beschikbaar zijn
v3.16.02026-04-17
Vision — analyseer een gevelfoto en detecteer ramen, deuren en materialen
- Nieuw in de editor-sidebar: ‘Foto tracen’. Upload een foto van een gevel (drag-drop of file-picker), kies de gevelzijde en klik ‘Analyseer gevel’. Claude Vision analyseert de foto en detecteert ramen, deuren en materialen met geschatte afmetingen
- De gedetecteerde elementen kun je met één klik toepassen op je scene — ramen worden als scene-ramen geplaatst op de juiste gevelzijde, deuren als scene-deuren. Afmetingen komen van de AI-analyse, eventueel gecalibreerd met bekende gevelhoogte uit 3DBAG
- Onder de motorkap: nieuwe /api/vision/upload route voor foto-opslag (SHA-256 content-addressed blob store) en /api/vision/trace route die Claude Sonnet 4.5 aanstuurt met een bouwkundig-specifiek Nederlands prompt. TraceResult bevat ramen, deuren, materialen, gevelhoogte, goothoogte, bouwlagen en een confidence-score
- De Anthropic HTTP-client (lib/llm/anthropic.ts) ondersteunt nu image content blocks naast tekst — nodig voor alle toekomstige vision-features
- Geblokkeerd door Anthropic credits: de analyse werkt pas zodra het account is bijgevuld. Upload + opslag + UI werken onafhankelijk daarvan
v3.15.02026-04-17
IFC 4.3 met ramen, deuren en materialen — plus scene-aware CityJSON
- De IFC-exporter is flink uitgebreid: ramen uit je scene worden nu als IfcWindow op de juiste gevelzijde geplaatst, deuren als IfcDoor, en binnenmuren als IfcWall met correcte dikte. Elk element krijgt automatisch een materiaal-associatie (metselwerk, dakpannen, beton, kozijn, deurkozijn) via IfcRelAssociatesMaterial
- Twee nieuwe property-sets in elk IFC-bestand: ‘Drawmit_BAG_Metadata’ met BAG pand-ID, bouwjaar, gebruiksfunctie, gevel/goothoogte, bouwlagen, maaiveld NAP en adres; en ‘Drawmit_Export_Info’ met Drawmit-versie, exportdatum en variant. Daarmee is elk IFC-bestand traceerbaar naar de exacte BAG-bron en Drawmit-versie
- De scene-export route (/api/export/scene) ondersteunt nu ook ‘ifc’ als artefacttype — je kunt vanuit de editor een IFC genereren met alle scene-objecten (uitbouw, dakkapel, ramen, deuren, binnenmuren, materialen) in één keer
- CityJSON-export is van pure 3DBAG-proxy naar volwaardige generatie gegaan: de route produceert nu een CityJSON v2.0 document met EPSG:7415, Drawmit-metadata, BAG-attributen en — bij variant nieuw — de uitbouw als apart BuildingPart met eigen Solid-geometrie en drawmit:-attributen
- Matrix 18/18 + 3/3 IFC-exports + 3/3 CityJSON-exports groen (incl. uitbouw-variant). Situatie + pakket opnieuw PDF/A-2b gecertificeerd
v3.14.02026-04-17
Parametrische constraints — ‘blijf 3 meter van de perceelgrens’ werkt nu echt
- De scene is nu v2: je kunt afstand- en peilhoogte-constraints toevoegen tussen objecten en referenties. Bijvoorbeeld: ‘de achtergevel van de uitbouw moet minstens 3,00 m van de achterperceelgrens blijven’ of ‘raam B staat op 1,20 m boven de vloer’. Wanneer je later de uitbouw of het pand verplaatst, lost de solver dat automatisch op zodat de constraint waar blijft
- Onder de motorkap: een compacte propagatie-solver (geen Newton, geen PlaneGCS) die tot 20 iteraties doorloopt met 1 cm convergentie-tolerantie. Wat niet oplosbaar is komt terug als Nederlandse violation-melding (‘Afstand is 2,18 m, moet ≥ 3,00 m zijn’) met een rode stippellijn-tip voor de UI
- Drie nieuwe scene-tools — voegAfstandConstraintToe, voegPeilConstraintToe, verwijderConstraint — beschikbaar voor zowel de chat-assistent als de toolbar in de editor. De MCP-server krijgt ze automatisch mee. Totaal nu 18 scene-tools
- Backward-compat: bestaande v1-scenes uit localStorage, de database of een MCP-client worden bij inlezen automatisch naar v2 gemigreerd — constraints + constraintOrder worden als lege objecten toegevoegd zodat er geen data verloren gaat. Alle drie scene-API-endpoints (/api/export/scene, /api/export/pakket POST, /api/chat/scene) accepteren nu beide versies transparant
- Parallel + loodrecht constraints staan in het schema maar de solver daarvoor komt in v2.1 — die vragen rotatie-logica die we eerst goed willen uitdenken voordat we er achteraan lopen
- Matrix 18/18 groen, 34/34 smoke-test assertions groen (incl. solver-convergentie 3,00 m ± 1 cm), situatie + pakket opnieuw PDF/A-2b gecertificeerd
v3.13.02026-04-17
Eigen account, cloud-projecten en versie-historie — fundering voor multi-device
- Je kunt nu inloggen via een magische link (geen wachtwoorden) op /login. Er is een /profiel-pagina met al je projecten in de cloud en een ‘Mijn projecten’ knop in de editor-topbar
- Projecten worden voortaan in een eigen PostgreSQL-database bewaard op onze NL-server (zelfde machine als drawmit.com, geen derde partij). Het schema staat klaar voor PostGIS geometrie en pgvector embeddings — die worden gebruikt door de regel-laag (Fase T) en de vision-pipeline (Fase S) die nog komen
- De eerste keer dat je inlogt, worden alle projecten die lokaal in je browser stonden automatisch veilig overgezet naar je account — je ziet dan een groen banner ‘N projecten overgezet’ op /profiel. Daarna kun je op elk apparaat verder werken
- Elke opslag maakt automatisch een nieuwe versie (v1, v2, v3…). De versie-historie is de basis voor undo-op-account-niveau, delen-per-link en straks Inverse-patch replay voor de chat-assistent
- Onder de motorkap: Drizzle ORM + Better-auth + Resend email, alle met Drizzle-migraties die de database bij elke boot zelf opschonen. Instellen vereist op de server alleen DATABASE_URL + BETTER_AUTH_SECRET + RESEND_API_KEY; zonder die env-vars blijft Drawmit gewoon anoniem werken
- Geen regressie in de 7 PDF-artefacten: matrix 18/18 groen (3 adressen × 6 tekeningen), situatie + pakket opnieuw PDF/A-2b gecertificeerd
v3.12.12026-04-16
Homepage opgeschoond: simpelere voorbeelden, scherpere propositie, rijkere hero-tekening
- Persoonlijke en te complexe voorbeeldadressen zijn weggehaald uit de homepage. Nieuwe voorbeelden zijn rustiger en publiek bruikbaar, zodat bezoekers kunnen testen zonder privé-adressen als voorbeeld te gebruiken
- De pill-badge boven de hero-titel zei ‘Nieuw · gebouwd op Omgevingswet & Bbl’ — dat is meta-informatie die niet vertelt wat Drawmit voor jou doet. Vervangen door ‘Adres in → welstand-PDF uit’, de letterlijke value proposition
- De trust-strip onderaan de hero toonde 15 data-bronnen (PDOK, Kadaster, 3D BAG, AHN5…) met de kop ‘Gebouwd op open Nederlandse data’. Vervangen door een 4-cijferige waarde-strook: €2.000+ bespaard per fase, 10 minuten van adres tot welstand-PDF, 7 tekeningen in één klik, 342/342 gemeenten gedekt. De data-bronnen zelf zijn bijzaak — het verhaal gaat over wat we oplossen
- De illustratie rechts van de hero zag er volgens gebruiker-feedback uit als ‘een werkje in paint’. Volledig herbouwd tot een architectuur-stijl situatietekening: baksteen-arcering (NEN 47) in het bestaande pand, rode arcering in de uitbouw, straat met asfalt-textuur en trottoir-band, twee buurpercelen als context, kadastraal label ‘B 1.247 / 492 m²’ in de tuin, voorgevelrooilijn (dashed ocker), entree-pijl, vijf verschillende NEN 2574 bematingen (pand-breedte+diepte, uitbouw→achterperceelgrens, pand→voorgevelrooilijn, pand→west-perceelgrens), ornate noordpijl met W/O/Z-hulplijnen, 4-segments schaalbalk op 1:200, en een legenda-chipje linksboven
- De footer-label in de hero-tekening is meegewisseld naar ‘Markt 1 · Gouda · sectie B 1.247’ om te matchen met de nieuwe eerste voorbeeldknop, en er staat nu een versie-stempel ‘DRAWMIT · v3.12’ rechtsonder zoals op een echt titelblok
v3.12.02026-04-16
Output-opschoning: weg met verzonnen content in PDF's
- Gebruikersfeedback: ‘als ik de pdf’s bekijk, vooral de impressie en zo, dat klopt werkelijk voor geen meter’. Daarop alle zeven PDF-renderers doorgelopen en gesjabloneerde/hallucinerende content verwijderd
- Plattegrond: placeholders voor interne wanden zijn weg — die werden procedureel gegenereerd (niet uit echte BAG-data). Als er geen scene-data is tekenen we nu alleen de buitencontour
- Gevels: de automatisch gegenereerde ‘raampjes’ die per verdieping werden verdeeld over de gevel zijn weg. Die waren puur decoratief en gaven een verkeerd beeld. Alleen ramen/deuren die in de scene-data staan worden nu getekend
- Impressie: de verzonnen ramen, deuren en decoraties op de 3D-massa zijn weg. Het 3D BAG LoD 2.2 oppervlak wordt nu zuiver als massing-studie getoond, zonder fake openings
- Doorsnede: fictieve binnenwanden, trappen en dubbele peilhoogte-labels verwijderd. Peil staat nog één keer correct ingevoerd
- Dakplattegrond: dubbele legenda weggehaald. Er was een situatie waar de legenda twee keer werd getekend omdat twee render-paden dezelfde helper aanriepen
- PDF-export: dubbele schaalaanduiding verwijderd en BGT 3×3 grid-deduplicatie toegevoegd
- /api/regels/uitleg geeft nu per Anthropic-foutsoort de juiste HTTP-status: 402 voor credit_balance (account-niveau), 429 voor rate_limit, 503 voor overloaded, 502 voor auth/invalid_request/other — zodat de UI correct ‘soft’ vs ‘hard’ fouten kan onderscheiden
v3.11.02026-04-16
Artefact-consistentie, vriendelijkere AI-foutmelding en betere voorbeelden
- Noordpijl heeft nu overal dezelfde maat (14 mm diameter, 12 mm offset) — voorheen was de doorsnede kleiner (12 mm) en zat de impressie-pijl 2 mm dichter bij de hoek. Plattegrond, dakplattegrond en situatie waren al goed; deze fix maakt dat alle zeven artefacten in het tekeningenpakket er visueel hetzelfde uitzien
- De knop ‘Leg uit wat dit voor mij betekent’ gaf bij een AI-quota-tekort of rate-limit een rode foutmelding alsof er iets kapot was. Nu verschijnt in die gevallen een neutraal amber info-blokje met de uitleg dat de AI-uitleg momenteel niet beschikbaar is — de rode meldingen zijn gereserveerd voor echte fouten
- De homepage gebruikt voortaan alleen niet-persoonlijke voorbeeldadressen en geanonimiseerde previewbeelden
v3.10.72026-04-16
Merk harmonisatie: één wordmark, één kleur overal
- Je had gelijk — het logo en de accentkleur zaten op minstens vier verschillende manieren in de site. Landing had een volle wordmark met logo, /check en /changelog hadden platte tekst, /docs en /status gebruikten een ocker-accent i.p.v. baksteenrood, en de editor had een hardgecodeerde oranje kleur (#c4855a) die los stond van het theme-systeem
- Nieuwe shared component src/components/brand/Wordmark.tsx met drie varianten (default/compact/inline) en één bron van waarheid voor typografie + kleur. Alle pagina-headers (/, /check, /editor, /docs, /status, /changelog, /vergelijk, /pricing, /demo/situatie) gebruiken nu dezelfde compact-variant met logo-icoontje + draw (fg) + mit. (brand-soft)
- De hardgecodeerde #c4855a-kleur in /editor (23 plekken) en ChatPanel (2 plekken) is vervangen door de theme-aware brand-soft token. De editor krijgt nu automatisch de juiste baksteenrood in dark-mode en de iets donkerdere variant in light-mode
- PDF-titelblok heeft nu ‘drawmit.com’ als subtitel i.p.v. ‘omgevingsvergunning tekenen’. Het tekeningenpakket cover-pagina toont ‘bouwkundige tekeningen · drawmit.com’
v3.10.62026-04-16
Uitbouw en dakkapel vallen nu netjes tegen de muur
- Als je een uitbouw plaatste tegen een L-vormig of schuin geëlement pand, hing die zichtbaar los in de ruimte in plaats van aan te sluiten op de muur — omdat de canvas preview de axis-aligned bounding box van het pand gebruikte i.p.v. de echte muren
- De canvas gebruikt nu hetzelfde outward-normal edge-selection algoritme als de PDF-export (lib/tekening/uitbouw.ts): per cardinale richting wordt de daadwerkelijke muur met de beste oriëntatie gekozen, en de uitbouw wordt daar strak tegenaan geplaatst
- Dit betekent ook dat een uitbouw automatisch mee-roteert met een schuin pand — precies hoe het ook in de PDF-output verschijnt
- Dakkapel plaatsing volgt dezelfde logica maar projecteert inwaarts de dakvlakken in
- Offset is nu consistent ‘gecentreerd op de gevel’ (offset=0) i.p.v. tegen een bbox-hoek — canvas preview en PDF-output zijn eindelijk 1-op-1 identiek
- Binnenwand-inset van uitbouwen (140mm) gebruikt nu tangent/normal offsets i.p.v. axis-aligned shifts, zodat de inzet ook klopt op schuine muren
v3.10.52026-04-16
Editor focust nu op je eigen perceel
- Bij het openen van een adres in /editor startte de view soms met het perceel in de rechterbenedenhoek en een grotendeels lege canvas — dat kwam doordat auto-fit op de volledige bundle-extent zoomde, inclusief alle 40-60 buurpercelen die sinds v3.10.2 mee worden opgehaald voor context
- Auto-fit kijkt nu alleen naar het primaire pand + het perceel waar dat pand in ligt (via ray-casting), zodat je bij het openen direct ingezoomd bent op je eigen perceel met nette marges
- Buurpercelen blijven zichtbaar zodra je uitzoomt — ze staan er nog steeds, maar bepalen niet langer de initiële zoom
- De “fit to view”-knop (sneltoets F) gebruikt dezelfde logica: focus op eigen perceel + pand + uitbouwen, niet op de volle bundle
- Grid-overlay blijft wel de volle bundel omvatten zodat het grid blijft doorlopen als je naar de buren pant
v3.10.42026-04-16
Canvas zelf ook in light-mode
- De tekencanvas in /editor reageert nu ook op het thema — in light-mode krijg je een warm papier-achtige achtergrond (blueprint-stijl) met donkere muren, i.p.v. de donkere CAD-viewport die voorheen altijd zwart bleef
- Kleurpalet omgeschakeld: licht-thema gebruikt ivoire bg (#f7f3ea), donkere muren (#4a4238) met near-black outline, donkerder ocker voor perceelgrenzen zodat alles leesbaar is op papier
- BGT context-lagen (wegen, water, groen) krijgen in light-mode hogere opacity en donkerder strokes zodat ze zichtbaar blijven
- Drag-handles voor ramen/deuren/uitbouwen krijgen een donkere border in light-mode i.p.v. wit (anders onzichtbaar op de lichte bg)
- Toolbar-overlay, sneltoetsen-popup en status-bar op de canvas volgen nu ook het thema
v3.10.32026-04-16
Editor light-mode refactor
- Volledige refactor van de editor-chrome: de 168 hardcoded donkere Tailwind-classes in /editor plus de 10 in het AI chat-paneel zijn vervangen door theme-aware tokens (bg-surface, text-fg, border-border, text-muted, text-subtle…) zodat light-mode nu ook daadwerkelijk licht is i.p.v. alleen de buitenste wrapper
- De CAD-canvas zelf blijft bewust altijd donker (ongeacht thema) — dat is de professionele conventie voor tekenoppervlakken in CAD/design-tools zoals Figma en Rhino
- De overlays op de canvas (toolbar, sneltoetsen-popup, status-bar) blijven ook donker omdat ze visueel ON TOP van het donkere tekenoppervlak drijven
- Met deze refactor is de “niet-gefixte” scope uit v3.10.1 afgerond
v3.10.22026-04-16
Day/night toggle overal + achterburen zichtbaar
- Day/night/auto toggle zit nu op elke pagina (homepage, /check, /vergelijk, /docs, /pricing, /status, /changelog, /demo/situatie en /editor) — voorheen alleen op de homepage
- Op /editor is de toggle terug: de CAD-canvas blijft altijd donker (professionele conventie), maar de chrome (header) respecteert nu het thema zodat je licht/donker kunt kiezen
- Achterburen (back-neighbour percelen) zichtbaar op de kaart: de BRK perceel-fetch doet nu een tweede ronde met een 40 m bredere bbox rond het bundle zodat percelen die achter of naast jouw perceel liggen niet meer buiten de fetch-bbox vallen
v3.10.12026-04-16
Editor fix: perceel blijft staan + jouw perceel eruit gelicht
- Perceel springt niet meer weg bij window-resize, sidebar-toggle of chat-toggle — auto-fit draait nu alleen bij een nieuw adres, daarna blijft je zoom en pan staan
- Jouw perceel heeft nu een duidelijke brick-red rand met lichtroze vulling (zelfde conventie als op de situatietekening-PDF); buur-percelen zijn zachter ockergeel zodat het meteen duidelijk is welk perceel van jou is
- Sectie+perceelnummer label verschijnt op jouw perceel (bijv. “N 996” in brick-red)
- Day/night/auto toggle weggehaald uit de editor-header: de CAD-viewport is met opzet altijd donker (v3.8.0 besluit, professionele conventie) en het toggelen gaf de indruk dat het kapot was — de voorkeur is nu alleen in te stellen vanaf de overige pagina’s
v3.10.02026-04-16
Editor polish: toetsenbord-nudge, hover-feedback en overlap-bescherming
- Pijltoetsen verplaatsen het geselecteerde object (raam, deur, uitbouw, dakkapel, binnenmuur): ←↑↓→ = 10 cm, Shift = 1 cm, Alt = 1 m
- Hover-feedback op alle sleepgrepen: gele gloed + iets grotere handle bij mouseover zodat duidelijk is wat sleepbaar is
- Overlap-bescherming: ramen/deuren die tijdens het slepen over een ander element vallen worden niet opgeslagen — het element springt terug
- Live overlap-detectie tijdens slepen: rood gemarkeerde openingen volgen nu de dragPreview i.p.v. de opgeslagen scene
- Sneltoetsen-overlay (druk ? in editor) toont nu ook de nudge-toetsen
v3.9.02026-04-16
Editor drag UX: vloeiend slepen met live preview
- Live preview tijdens slepen: alle handles (uitbouw, dakkapel, raam, deur, binnenmuur) tonen nu direct de wijziging zonder vertraging
- Axis-lock op elke handle: horizontale zijden sleepen alleen horizontaal, verticale zijden alleen verticaal — geen drift meer
- Eén undo-stap per drag-sessie: voorheen kon je 60 keer Ctrl+Z drukken voor één sleepactie, nu is het één stap
- Dynamische cursors (ew-resize / ns-resize / move) geven directe visuele feedback welke beweging mogelijk is
- Interne refactor: dragPreview-state met eff* memos overriden de scene-objects tijdens drag, dispatch alleen op release
v3.7.22026-04-15
SEO, toegankelijkheid en UX-polish
- Paginatitels voor SEO: /check, /vergelijk, /editor, /status, /docs, /pricing, /changelog krijgen nu browser tab-titels en OpenGraph metadata
- Keyboard navigatie op adres-autocomplete: pijltoetsen + Enter + Escape op /check en /vergelijk
- Empty state op /vergelijk: illustratie en CTA wanneer er nog geen adressen zijn toegevoegd
- Gelabelde loading skeletons op /vergelijk (Adres, Oppervlaktes, Hoogte, Energielabel, Beperkingen)
- Escape-toets sluit mobiel navigatiemenu op landing page
- Suggestion interface gededupliceerd: /vergelijk importeert nu uit gedeelde types i.p.v. eigen definitie
- ARIA-attributen: role=combobox, role=listbox, aria-expanded, aria-activedescendant op zoekbalken
v3.7.12026-04-15
Quick-scan verbeteringen: kaartfilter en export presets
- Zoekfilter op /check pagina: typ bijv. “energie”, “monument” of “bodem” om relevante kaarten te filteren
- Export presets in editor: Gemeente, Welstand en Concept — één klik voor de juiste instellingen
v3.7.02026-04-15
Multi-project management: meerdere ontwerpen opslaan en wisselen
- Projecten-paneel in editor sidebar: opslaan, laden, hernoemen en verwijderen van meerdere ontwerpen
- Automatische projectaanmaak bij nieuw adres selecteren — elke sessie wordt bewaard
- Auto-save met debounce (1s) schrijft wijzigingen naar het actieve project
- Migratie van legacy editor-state (enkelvoudige localStorage key) naar projectsysteem
- Gedeelde restoreSceneFromSnapshot() helper vervangt 3x gedupliceerde scene-replay logica
- Actief project-titel zichtbaar in editor header
- project-storage.ts uitgebreid: volledige scene + bundle + query opgeslagen per project
v3.6.02026-04-15
Prestaties & robuustheid: parallelle API calls, smoke tests, bugfixes
- Gecentraliseerde versie-string (DRAWMIT_VERSION) vervangt 8 hardcoded versienummers in API-routes
- JSON export 3x sneller: 30+ API-calls nu volledig parallel (was: deels sequentieel, 30s+ timeout)
- CSV export geparalleliseerd: 33 API-calls in één Promise.all voor consistente responstijden
- Smoke test suite uitgebreid van 18 naar 33 tests: alle PDF-exports, DXF, SVG, GeoJSON + 7 data-API’s
- localStorage crash fix: private browsing modus veroorzaakte geen foutmeldingen meer
- NaN-veiligheid in editor: ongeldige URL-parameters (uitbouw/dakkapel) worden nu gevalideerd
- Toegankelijkheid: logo alt-tekst + aria-label op navigatie
- Docker healthcheck verbeterd: controleert nu /api/health in plaats van homepage
- Arceringen bbox-guard fix: alle 4 hoeken worden nu gevalideerd (was: alleen minX)
v3.5.02026-04-14
Code-kwaliteit: type safety, abort signals, deprecated field cleanup
- Abort signal propagatie: alle 63 API-routes geven request.signal door aan buildParcelBundle voor correcte request-annulering
- Gedeelde ERROR_MISSING_QUERY constante vervangt 30+ hardcoded foutmeldingen
- Verwijderd: deprecated scalar uitbouw-velden uit VergunningvrijInput (uitbouwDiepteM/breedteM/hoogteM) — uitbouwen[] array is nu de enige API
- Type safety: 11 onnodige ‘as ParcelQuery’ casts verwijderd, 8 onveilige ‘(err as Error).message’ in pakket-route vervangen door instanceof check
- NaN-bescherming in export-params: safeFloat() helper vangt ongeldige query-strings op
- Gebroken /login link verwijderd van landingspagina (auth nog niet geïmplementeerd)
v3.4.02026-04-14
Ramen, deuren & binnenmuren: volledige plattegrond-editor
- Ramen (windows): scene-object met type (draaiend/vast/schuif/kiepraam), borstwering, draairichting — Konva canvas + PDF rendering met kozijn-frame + dubbel glas
- Deuren (doors): scene-object met type (buiten/binnen/schuif/dubbel), draairichting — canvas + PDF rendering met deurblad + kwartronde draai-arc
- Binnenmuren (internal walls): vrij plaatsbare wandsegmenten met dikte — sleepbare eindpunten op canvas, 45° hatch-vulling op PDF
- Volledige sidebar controls: raamType/deurType dropdowns, draairichting selector, borstwering FieldControl, binnenmuur dikte + lengte-display
- Scene export route: alle objecttypen (ramen/deuren/binnenmuren) doorgesluisd naar plattegrond PDF renderer
- Cyrus–Beck line-clipping algoritme voor binnenmuur hatch-patronen in PDF
v3.3.02026-04-14
Credits-model, PVGIS zonnepotentie, 15 API health checks
- Nieuw pricing model: credits per project (€69), volumebundels 5/10/25-pack (tot 42% korting), Bureau jaarabonnement
- PVGIS zonnepotentie (EU JRC): kWh/kWp/jaar, instraling kWh/m²/jaar, maandelijks overzicht — gratis, zonder API key
- 15 live API health checks op /status met response times (was: 3)
- Zonnepotentie in quick-scan rapport PDF
- 8 FAQ’s bijgewerkt voor credits-model + bundels + Bureau-abonnement
v3.2.02026-04-14
Gratis energielabel via RIVM, gemeente-code fix, data-kwaliteit
- RIVM WFS energielabel fallback: echte energielabels zonder API key via data.rivm.nl (~3,4M panden)
- Smart energielabel lookup: EP-Online (rijke data, als API key) → RIVM WFS (gratis, basisdata) → demo-stub
- Gemeente-code fix: /api/regels en /api/regels/uitleg resolven nu de echte TOOI-code (gm0297 i.p.v. gm0000) via Bestuurlijke Gebieden API
- Energielabel source tracking: response bevat nu ‘source’ veld (ep-online / rivm-wfs / demo)
v3.1.02026-04-14
RAL materiaalbibliotheek, interactieve API docs, PDF-laagcontrole
- RAL Classic kleurenbibliotheek: 50 NL-bouw-relevante kleuren (kozijn, gevel, dak, metaal) met hex-waarden en swatches
- 24 materiaal-presets met kleur-swatches: rode/gele/bruine/grijze baksteen, stucwerk, hout, zink, kozijnen (RAL 7016/9010/9005/9001/6009/5014), dakpannen, bitumen, EPDM, sedum
- Interactieve API docs: live 'Uitvoeren' knop met inline response preview, Python code tab, response headers + timing
- PDF laag-toggles: titelblok, noordpijl, schaalbalk, maatvoering en legenda individueel in/uitschakelen
- API timeout/cache: 8s timeout + 5min in-memory cache op /api/check
- Mobiele editor: responsieve sidebar met hamburger-toggle, swipe overlay
v3.0.02026-04-14
Output Quality Sprint: JetBrains Mono, NEN 47 hatching, spouwmuur, chain dimensions
- JetBrains Mono font in alle 6 PDF-exporters (vervangt Geist Sans, closest open-source match to ISOCPEUR)
- NEN 47 materiaalarcering: 4 patronen (lines, crosshatch, dots, zigzag) voor baksteen/staal/beton/isolatie
- Spouwmuur opbouw: 3-zone rendering (buitenblad baksteen + isolatie zigzag + binnenblad) bij schalen ≤1:200
- NEN 2574 maatketting (chain dimensioning) met extension lines + 45° ticks
- Perceelhoek RD-coördinaten op situatietekening (2 decimalen, NL komma-notatie)
- Pand buitenmaten + totale perceelketting (marge-W + pandbreedte + marge-O = perceelbreedte)
- BAG pand-ID in titelblok van alle 6 exporters
- Scene export route uitgebreid naar alle 6 artefacttypen + dakkapel-support
- Konva 2D editor: volledig uitgebouwd met drag handles, auto-dimensions, snap, grid, meetlint, annotaties, chat
v2.9.02026-04-14
Landing page, pricing, risk scoring, multi-dakkapel, materialen
- Landingspagina: FAQ-sectie (6 vragen, accordion), prijzensectie (3 tiers), JSON-LD structured data
- Dedicated /pricing pagina met tier-vergelijking, feature matrix (18 functies), prijzen-FAQ
- Risk scoring op /check: kleur-gecodeerde risico-badges (critical/high/medium/low), totaalscore
- Multi-dakkapel support in editor (max 4), preset templates (Slaapkamer/Badkamer/Standaard/Breed)
- Materialen-picker in editor zijbalk: gevel (baksteen/kunststof/hout/stucwerk) en dak (dakpannen/bitumen/EPDM/zink/sedum)
- Vergelijk-grafieken, hoogte-waarschuwing, uitbouw-oppervlakte, deel-link op /check
v2.8.02026-04-14
Editor UX: export opties, recente adressen, snap feedback
- Export-instellingen paneel: papierformaat (A4/A3/A2/A1), oriëntatie (liggend/staand), schaal (auto/1:50-1:1000), grid, luchtfoto toggle
- Recente adressen (5) opgeslagen in localStorage, getoond als snelkeuze-chips in zijbalk
- Magnetische 0,5m snap op drag (3cm tolerantie), groene maatlabels bij ronde halve meters
- Keyboard shortcuts: M (meetmodus), L (labelmodus), ? (sneltoetsen help), Escape sluit overlay
- CSV-export op /vergelijk pagina (24 kolommen, BOM voor Excel UTF-8)
- API documentatie: klikbare code-voorbeelden (curl + fetch) per endpoint met kopieerknop
- Afdrukken-knop + print-optimized CSS op /check pagina (page-break-inside:avoid)
- Custom 404 pagina + error boundary
v2.7.02026-04-14
Konva editor: annotaties, scene exports, presets, PDF preview
- Canvas annotaties: labelmodus (klik om tekst te plaatsen), drag om te verplaatsen, dubbelklik om te bewerken
- Scene-gebaseerde PDF exports via POST /api/export/scene (vervangt GET-routes met query params)
- PDF preview overlay in editor (iframe, klik op ▷ naast export)
- Uitbouw preset templates: Serre 3×3, Aanbouw 4×3, Uitbouw 5×2.5, Erker 2×1.2
- Undo/redo knoppen in header + scene-gebaseerd tekeningenpakket
- Scene JSON opslaan/laden/kopiëren + URL-sharing met query params
- Wis tekening knop met bevestigingsdialoog
- Annotaties in PDF plattegrond/situatie export via scene bridge
v2.5.02026-04-13
51 APIs: bestemmingsplan zoning, geluidkaart export integratie
- PDOK Ruimtelijke Plannen WMS: enkelbestemming, dubbelbestemming, bouwvlak, maatvoering per coördinaat
- Nieuwe standalone route /api/bestemmingsplan met 4 WMS GetFeatureInfo calls parallel
- RIVM Geluidkaart + NDVI nu ook in CSV export en PDF rapport (was alleen in /api/check)
- Bestemmingsplan geïntegreerd in /api/check (43 calls), check page UI, CSV export, PDF rapport
- v2.5.0: 51 APIs, 74 routes, 16 export formaten
v2.6.02026-04-13
52 APIs: RIVM Groenkaart, RCE Monument v9 upgrade
- RIVM Groenkaart WMS: vegetatie classificatie (0-100% groenbedekking per 10m cel)
- RCE Rijksmonumenten upgraded van N-Triples naar v9 JSON-LD API met BAG pand-ID matching
- Monument detail (naam, omschrijving, oorspronkelijke functie, registratiedatum, URL) in check, rapport, CSV
- Geïntegreerd in /api/check (44 parallelle calls), check page UI, CSV export, PDF rapport
- v2.6.0: 52 APIs, 74 routes, 16 export formaten
v2.4.02026-04-13
47 APIs: RIVM geluidkaart per bron, NDVI vegetatie-index
- RIVM Geluidkaart WMS: geluid Lden per bron (wegverkeer, treinverkeer, industrie, windturbines, vliegverkeer) als rasterkaart
- RIVM NDVI Sentinel-2: vegetatie-index (groenpotentie) — lage NDVI = stenig/verhard, hoge NDVI = veel groen
- Nieuwe standalone route /api/geluidkaart met 7 WMS GetFeatureInfo calls parallel
- Geïntegreerd in /api/check (39 parallelle calls), check page UI met 'Geluid per bron' card
- Klimaat/warmtepotentie/topografie nu ook in CSV export en PDF rapport (ontbrekend in v2.3.0)
- v2.4.0: 47 APIs, 72 routes, 16 export formaten
v2.3.02026-04-13
40 APIs: klimaateffectatlas, WKO/geothermie, BRT topografie
- Klimaateffectatlas WMS: hitte-eilandeffect (°C), warme nachten per jaar, sociale kwetsbaarheid hitte per buurt
- RVO Potentiekaart Omgevingswarmte: open/gesloten WKO potentie, diepe geothermie (5500m/7500m), energieverbruik per buurt
- BRT TOP10NL OGC API: gebouwtypes, hoogteklassen, landgebruik in de omgeving (~200m radius)
- 3 nieuwe standalone routes: /api/klimaat, /api/warmtepotentie, /api/topografie
- Geïntegreerd in /api/check (32 parallelle calls), /api/beperkingen (25 bronnen), JSON export
- CBS Vierkant 100m card + klimaat/WKO/topografie cards in quick-scan UI
- v2.3.0: 40 APIs, 71 routes, 16 export formaten
v2.2.02026-04-13
37 APIs: CBS 100m vierkant + adres-zoek bugfix
- CBS Vierkantstatistieken 100m API: hyper-lokale data (inwoners, woningen, WOZ, gas, elektra, inkomen, 18 voorzieningen-afstanden) per 100×100m gridcel
- Nieuwe standalone route /api/vierkant100m met fallback van 2024 naar 2023
- Geïntegreerd in /api/check (29 parallelle calls), /api/beperkingen (22 bronnen), CSV/rapport/JSON exports
- Bugfix: adres-zoek op /check pagina stuurde PDOK suggestion-ID i.p.v. BAG nummeraanduiding — nu correct via lookup-stap
- v2.2.0: 37 APIs, 68 routes, 16 export formaten
v2.1.02026-04-13
36 APIs: nationale parken, bodemkaart, NWB wegen
- Nationale Parken API (RVO): nabijheidscheck op Nationaal Park gebieden
- BRO Bodemkaart API (WMS): bodemtype, bodemcode, grondsoort per locatie
- NWB Wegen API (RWS): straatnamen en wegtypen nabij een punt (~100m)
- Alle 3 geïntegreerd in /api/check (28 parallelle calls), /api/beperkingen (21 bronnen), CSV/rapport/JSON exports
- Nieuwe standalone routes: /api/nationale-parken, /api/bodemkaart, /api/wegen
- Waarschuwing voor locaties in of nabij Nationaal Park
- v2.1.0: 36 APIs, 67 routes, 16 export formaten
v2.0.02026-04-13
33 APIs: waterschappen, riolering, omgevingslawaai + v2.0 milestone
- Waterschappen Zoneringen IMWA: beschermingszones en waterkeringen per locatie
- Waterschappen Waterbeheergebieden: peilgebieden met zomer/winterpeil
- Stedelijk Water GWSW (RIONED): rioolaansluitpunten, leidingen, putten nabijheid
- Omgevingslawaai (IenW): EU-geluidbronnen hoofdwegen + hoofdspoorwegen
- Geïntegreerd in /api/check (25 parallelle calls), /api/beperkingen (18 bronnen), CSV/rapport exports
- 4 nieuwe standalone routes: /api/waterschappen, /api/waterbeheer, /api/riolering, /api/omgevingslawaai
- v2.0.0 milestone: 33 APIs, 64 routes, 16 export formaten
v1.9.02026-04-13
3 nieuwe PDOK APIs: drone no-fly zones, spoorwegen, cultuurhistorie
- LVNL Drone no-fly zones API: verboden en beperkt-toegestane zones per locatie
- ProRail Spoorwegen API: spoorwegproximiteit (<500m) met lijnnaam en track-count
- RCE Cultuurhistorie API: UNESCO werelderfgoed, beschermde stads-/dorpsgezichten, rijksmonumenten
- Alle 3 geïntegreerd in /api/check (21 parallelle calls), /api/beperkingen, JSON/CSV/rapport exports
- Nieuwe standalone routes: /api/drone, /api/spoorwegen, /api/cultuurhistorie
- Waarschuwingen voor drone-zones, spoorweg-trillingen, werelderfgoed in alle check-endpoints
v1.8.02026-04-13
Export verrijking + voorzieningen/energie/links in alle exports
- JSON export: voorzieningen, energie, omgevingsloket-links, funderingsrisico, ical-URL
- CSV export: voorzieningen-afstanden, energieverbruik, funderingsrisico, omgevingsloket-links
- Rapport PDF: voorzieningen-sectie, energie-sectie, omgevingsloket-links (18 API-calls)
- TrustStrip landing page uitgebreid naar 10 databronnen (CBS, RCE, RIVM, RVO)
- Navigatie-consistentie: status + changelog links op docs/status pagina's
- Docs pagina check-beschrijving bijgewerkt naar 18 API-calls
v1.7.02026-04-13
Changelog, bestuurlijk in UI, print CSS, ICS export
- Changelog pagina met volledige versiegeschiedenis
- Bestuurlijk gebiedsinfo (gemeente + provincie code) zichtbaar in quick-scan UI
- Print-geoptimaliseerde check pagina (@media print)
- ICS kalender-export voor vergunning deadline reminder
- Buitenmuuroppervlakte in hoogte-card (berekend uit 3DBAG)
- Check API versie bijgewerkt naar 1.7.0
- OpenAPI spec bijgewerkt naar 1.7.0
v1.6.02026-04-13
Bestuurlijke Gebieden API + API docs + status pagina
- Bestuurlijke Gebieden API (gemeente + provincie per punt)
- /docs interactieve API documentatie pagina
- /api/docs OpenAPI 3.1 specificatie
- /status live health dashboard met auto-refresh
- Bestuurlijk data in /api/check, /api/export/json, /api/export/csv, /api/export/rapport
- Navigatie-links tussen pagina's (check, vergelijk, docs)
- Vergelijk-link en kopieer-link in check export sectie
v1.5.02026-04-13
SEO + batch-check + standalone API routes
- robots.txt en sitemap.xml voor Google indexering
- /api/batch-check POST endpoint (max 10 adressen parallel)
- /api/rijksmonumenten standalone route
- /api/natura2000 standalone route
- /api/stadsgezichten standalone route
- 50 routes totaal
v1.4.02026-04-12
Vergelijk-tool + health endpoint
- /vergelijk pagina: twee adressen naast elkaar vergelijken
- /api/health endpoint met connectivity checks
- Footer met versienummer en route/API counts
v1.3.02026-04-12
Quick-scan rapport + 15 export formaten
- Quick-scan rapport (A4 PDF) met alle check-data
- DXF export (AutoCAD-compatibel situatietekening)
- SVG export (vectortekening)
- GeoJSON export met percelen + panden + beperkingen
- CSV spreadsheet-export (80+ datapunten)
- CityJSON 2.0 export (3D gebouwmodel)
- JSON data-export (volledige dataset)
- PDF tekeningenpakket (alle tekeningen in 1 PDF)
v1.2.02026-04-12
16 API-bronnen + uitgebreide beperkingen-check
- Externe veiligheid (REV) check
- Overstromingsrisico (EU Richtlijn) check
- WKPB publiekrechtelijke beperkingen check
- Archeologische verwachting (RCE IKAW) check
- Geluidzones luchthavens check
- Funderingsrisico (RVO) per postcode
- Beschermd stads-/dorpsgezicht (RCE) check
- RIVM hoogspanningslijnen nabijheid
- /api/beperkingen gebundeld endpoint
v1.1.02026-04-12
Quick-scan met 10 API-bronnen
- /check quick-scan pagina met adres-zoeker
- Oppervlaktes (perceel, pand, GBO NEN 2580, bebouwingspercentage)
- 3DBAG hoogte (nok, goot, bouwlagen, daktype)
- CBS buurt-statistieken (inwoners, WOZ, stedelijkheid)
- Energielabel (EP-Online of demo)
- Rijksmonumenten check (RCE)
- Natura 2000 check (RVO)
- BRO grondwater meetpunten
- Bodemkwaliteit + PFAS (Bodemloket)
- RIVM leefomgeving (geluid, NO₂, PM₂.₅, hitte)
- Warnings + aanbevelingen engine
v1.0.02026-04-12
Uitbouw nieuw variant + combinatie-PDF
- Uitbouw 'nieuw' variant voor alle 6 tekeningen (gevels, doorsnede, impressie)
- Combinatie-PDF (/api/export/pakket) met cover + inhoudsopgave
- Gevels: muurvulling, dakarcering, uitbouw rood, materiaal-annotaties
- Impressie: perceelgrondvlak, buurpand-footprints, drop shadow
- Doorsnede: bouwlaag-labels, section-cut hatch, goothoogte-maat
- Plattegrond: section line A—A, wanddikte annotatie
- Dakplattegrond: 3DBAG LoD 2.2 RoofSurface view
v0.9.02026-04-12
Professionalisering + straatnaam-labels
- Perceelgrens in baksteenrood (NL-conventie)
- Straatnaam-label langs straatzijde
- Perceeldimensies langs alle randen
- Oppervlaktelabel in tuin
- Legenda-box op situatietekening
- Plattegrond MBR rotatie (langste wand horizontaal)
- Secundaire panden (garage, berging) als context
- BGT wegen zichtbaar op situatietekening
- Bijgebouw-dimensies
v0.8.02026-04-12
Fix-sprints + polish
- Peilhoogten in titelblok
- Buurpand huisnummers op situatietekening
- Voorgevellijn op situatietekening
- Auto oppervlaktes in titelblok (6 velden)
- Plattegrond grid-overlay (50cm/1m/5m)
- Perceel-omtrek in titelblok
v0.7.02026-04-11
LLM-laag + scene graph + MCP
- Canonieke Zod scene graph (schema v1)
- 8 Nederlandse tool-signatures (maakProject, voegPandToe, voegUitbouwToe, etc.)
- Immer-patch undo/redo
- Scene store + React hook (useSyncExternalStore)
- MCP stdio JSON-RPC 2.0 server
- Claude tool-use variant (/api/chat/scene)
- Scene→renderer bridge (to-renderer.ts)
v0.6.02026-04-11
Regel-laag (DSO) + LLM uitleg
- DSO Presenteren v8 client (Omgevingswet)
- /api/regels route met graceful demo-fallback
- Claude Haiku 4.5 regel-uitleg (/api/regels/uitleg)
- Legacy welstandsnota-crawler skeleton
v0.5.02026-04-11
3D impressie + doorsnede + gevels
- 3D isometrische impressie (painter's algorithm, Lambertian shading)
- Doorsnede met AHN4 terreinprofiel + 3DBAG silhouette
- 4 gevels op 2×2 A3 grid (3DBAG LoD 2.2 convex-hull)
- AHN PDOK WCS parser volledig herschreven (deflate + predictor + NODATA fix)
v0.4.02026-04-11
Plattegrond bestaand + nieuw
- Plattegrond bestaand (BAG contour + buitenmuur-arcering + NEN 2580 GBO)
- Plattegrond nieuw (uitbouw overlay met binnenwan-offset)
- Uitbouw parametric extension (zijde, diepte, breedte, offset, hoogte)
- Edge-selection per cardinale richting
v0.3.02026-04-11
Situatietekening nieuw
- Situatietekening nieuw met uitbouw-overlay
- Hatch + pandNieuw outline
- Auto-bemating uitbouw→perceelgrens
- RD-rechthoek met 5cm hoek-clamping
v0.2.02026-04-11
Maatvoering + kadaster-labels
- Cardinale pand→perceelgrens dimensies
- NEN 2574 hairline + 45°-ticks + geroteerd label
- Perceelnummer centroid-label
- PDF/A-2b compliance (ICC + XMP + veraPDF validatie)
v0.1.02026-04-10
Spike 1: Situatietekening bestaand
- Adres → PDOK Locatieserver → BAG pand + VBO → BRK perceel → PDF
- MapLibre GL JS v5 kaart in demo UI
- PDF-export met titelblok, noordpijl, schaalbalk
- NEN 2574 lijndiktes en kleuren
- NLCS layer-structuur
- Luchtfoto-overlay (PDOK WMTS/WMS)
- BGT OGC v1 voor wegcontouren
Drawmit is actief in ontwikkeling. Vragen of feedback?
contact@drawmit.com