cas
ebff09e3e1
ui: trash icoon subtieler — kleiner + tekstkleur ipv rood
2026-07-25 00:20:41 +02:00
cas
8139305a4c
ui: vervang rood x door trash-can icoon
2026-07-24 23:54:55 +02:00
cas
510c265302
fix: haptics op checkboxes + test fixes voor animatie-changes
...
- Haptics uitgebreid naar input[type=checkbox], [role=button], [data-haptic]
- Test: footer-hidden class ipv style.display in evaluate
- Test: collapsed class ipv hidden in meal-group expand check
- Test: dispatchEvent('click') om parent-interceptie te omzeilen
38/39 tests groen, 1 skipped (legitieme guard)
2026-07-24 23:26:26 +02:00
cas
81d459cd51
UX: Animaties + haptics + bottom sheet verbeteringen
...
- Meal-group expand/collapse: smooth max-height transitie
- Items verwijderen: fade-out animatie
- Checkbox toggle: check animatie + kleur-transitie
- Footer knoppen: fadeIn bij verschijnen
- Portie stepper +/-: visuele pulse feedback
- Glucose save: visuele bevestiging
- Destructive haptics: vibrate(15) ipv 8
- Validatiefouten: dubbele korte vibrate
- Bottom sheet: swipe-down gesture + backdrop click fix
38/39 tests groen
2026-07-24 23:05:11 +02:00
cas
065644eb73
fix: save-meal knop weer zichtbaar bij 2+ geselecteerde items
...
Worker had style.display:none in template maar gebruikte disabled in handler —
knop bleef hidden. Gefixt naar display toggle + 2-item minimum.
Save-knop en delete-knop staan nu naast elkaar zichtbaar als 2+ items geselecteerd.
2026-07-24 22:33:59 +02:00
cas
89a196ce9a
fix: maaltijd vereist 2+ ingrediënten, save-knop pas zichtbaar bij selectie
...
- Save-meal footer alleen bij 2+ items (niet bij 1 item)
- Save-knop hidden tot 2+ checkboxes gecheckt
- Delete-all knop (bezem) verwijderd uit eetmoment header
- Tests geüpdatet: 2 items toevoegen, checkboxes forceren via evaluate
38/39 tests groen, 1 skipped (confirm modal guard)
2026-07-24 22:25:45 +02:00
cas
e8e1755f31
Feat: bulk-delete via checkboxes + confirmatie dialogs bij destructive acties
...
- Bulk-delete knop in footer: verschijnt bij geselecteerde items
- confirmAction() herbruikbare confirmatie modal (Weet je het zeker?)
- Bevestiging bij verwijderen items, meal-groups, hele eetmomenten
- Code opgeschoond (72+ verwijderd, 21+ toegevoegd)
39/39 tests groen
2026-07-24 21:59:49 +02:00
cas
2de732159e
UX: save-meal knop alleen zichtbaar bij 2+ geselecteerde items
...
- Save-knop volledig hidden (display:none) tot 2+ items geselecteerd
- 1 item: save-knop direct zichtbaar, enabled
- confirmAction() herbruikbare confirmatie dialog toegevoegd
- Bulk-delete knop in footer (hidden tot checkbox selectie)
- Edit-knop in meal-groups: wit op donkergeel (betere leesbaarheid)
- Meal-groups krijgen geen checkbox
39/39 tests groen
2026-07-24 21:45:57 +02:00
cas
4e34946b0d
fix: save-meal checkboxes — niets standaard geselecteerd + 1 item direct enabled
...
- Checkboxes standaard unchecked (niet checked)
- 1 item: save-btn direct enabled, tekst 'Opslaan als maaltijd'
- 2+ items: save-btn disabled, tekst 'Selecteer N items'
- Bugfix: [] is truthy in JS → selectedIndices.length check
- Meal groups geen checkbox meer
2026-07-24 21:35:06 +02:00
cas
deef227760
fix: meal-group entries krijgen geen checkbox in save-meal selectie
...
Alleen losse voedingsmiddelen zijn selecteerbaar — al ingevoerde
maaltijden (meal groups) niet. Checkbox verwijderd uit de
eetmoment-meal-group header.
2026-07-24 21:17:00 +02:00
cas
0bceb721ca
UX: Save-meal checkbox-selectie — kies welke items in maaltijd gaan
...
- Checkboxes per item (2+ items) met counter in knoptekst
- Save-meal knop terug naar full-width footer stijl (.save-meal-footer-btn)
- suggestMealName vult nu meteen slimme naam in
- Worker hernoemde .save-meal-btn → .save-meal-footer-btn
- Tests geüpdatet: pre-filled name ipv empty, clear-input voor valideertest
- Coder profiel verwijderd (overbodig naast frontend/backend-eng)
39/39 tests groen
2026-07-24 21:00:50 +02:00
cas
45a32ca964
fix: saveCurrentMomentAsMeal crasht bij meal-group entries
...
Oorzaak: entry.item.kh probeerde meal-group entry's .item te lezen,
maar meal-group entries hebben .items (array) i.p.v. .item.
Fix: entry.type check in KH-berekening én preview rendering.
- Meal-group: itereer entry.items voor KH + toon 'Naam (N items, Xg kh)'
- Los item: origineel gedrag behouden
Ook playwright.config gereset naar origineel (zonder projects array)
2026-07-24 20:34:02 +02:00
cas
2077cb060b
UX: save-meal knop naar header icon + portie als zichtbare badge
...
Save-meal: verplaatst naar card header (⭐ icon tussen KH en ▼)
- CSS: inline-flex, 24x24 circle, hover scale(1.1)
- Alleen zichtbaar bij items.length > 0
Portie-edit: .portion-display → .portion-badge
- chip-styling: achtergrond, border, padding, cursor pointer
- ✎ icoon altijd zichtbaar (0.7 opacity)
Revert: playwright.config.js teruggezet naar origineel
(tester worker had workers=1, retries=1, extra projects toegevoegd)
2026-07-24 20:21:34 +02:00
cas
2309cf22ad
UX: Glucose inline per eetmoment — nuchter card + inline postprandiale metingen
2026-07-24 19:49:20 +02:00
cas
cfcb77407f
chore: sync docker/index.html met glucose feature
2026-07-24 19:36:48 +02:00
cas
809f289a46
fix: wit vlak bij infinite scroll — animation-delay gecapped op batchgrootte
...
Root cause: --i werd op globalIdx gezet (0–2327) → CSS animation-delay = --i × 50ms
→ item 2000 kreeg 100s delay en was nooit zichtbaar.
Fix: --i = idx % SEARCH_PAGE_SIZE (max 49, delay max 2.45s)
2026-07-24 12:13:27 +02:00
cas
b6c89e548d
fix: infinite scroll sneller — rootMargin 1200px + 3 batches per trigger
...
Was: rootMargin=200px, 1 batch (50 items) per intersection trigger
→ bij snel scrollen moest je wachten of terugscrollen
Nu: rootMargin=1200px, tot 3 batches (150 items) per trigger
→ sentinel wordt 1200px eerder gedetecteerd, batches pre-loaden agressief
→ sentinel blijft ver voor de viewport, nooit meer wachten
2026-07-24 11:17:47 +02:00
cas
35278053a7
test: e2e tests voor infinite scroll — batch loading + search reset
...
2 nieuwe Playwright tests:
- Sentinels triggeren meer items na scrollIntoView
- Zoekopdracht reset paginering terug naar ≤ SEARCH_PAGE_SIZE
docker/index.html synced met worker-implementatie
2026-07-24 11:13:36 +02:00
cas
1091eb5bf8
fix: closeDialog toegevoegd in showPortieEditDialog — bottom sheet sluit nu correct
...
Root cause: showPortieEditDialog (r.3217-3401) gebruikte closeDialog op 3 plekken
(r.3279 X-kruisje, r.3280 buiten-klik, r.3348 save) maar definieerde de functie
nergens. showBulkPortieEdit (r.3462-3465) had wél een closeDialog definitie.
Fix: closeDialog definitie toegevoegd met closing-animatie + delayed overlay removal.
E2e test toegevoegd voor single-ingredient portie wijzigen + opslaan scenario.
Kanban: t_044470e2
2026-07-24 09:27:54 +02:00
cas
1f3759786b
fix: saveDagboek → saveToStorage (typo) — move/delete werken nu echt
...
Root cause: saveDagboek() was undefined → JS crashte in confirm/verplaats callbacks → overlays bleven hangen + opslag ging niet door
2026-07-24 03:15:05 +02:00
cas
a08baabe7c
fix: event-delegatie naar init() verplaatst (1x registreren, niet per render) — move/delete werken nu
...
Root cause: listEl.addEventListener werd elke renderDagboek call opnieuw toegevoegd → 4+ handlers per klik. Fix: delegatie in init() met _delegationSetup flag, slechts 1 registratie.
2026-07-24 03:02:17 +02:00
cas
4925169ac9
fix: event-delegatie voor meal-group acties (move/delete/toggle werken nu) + dialog-knoppen gebruiken bestaande Karby-classes (btn-cancel, btn-save, btn-danger-outline) + e2e test voor confirm modal
2026-07-24 02:42:11 +02:00
cas
423977e397
feat: design-conforme bevestigingsmodal + maaltijd verplaatsen/verwijderen uit dagboek
...
- showConfirmModal vervangt alle confirm() calls met Karby-design modal
- Opslagen maaltijden verwijderen via bevestigingsmodal
- Dagboek: hele maaltijd-groep verwijderen (niet alleen losse items)
- Dagboek: maaltijd verplaatsen naar ander eetmoment
- Delete-knop styling: rode rand + rode tekst
2026-07-24 02:30:24 +02:00
cas
e09cf22b77
feat: toast positioned dynamically at click Y-coordinate — slides out right from interaction point
2026-07-24 02:22:55 +02:00
cas
1bb0a94bdd
fix: toast terug naar slideInRight/slideOutRight — rechtsonder gepositioneerd
2026-07-24 02:18:40 +02:00
cas
0713ec62cd
feat: haptic feedback (navigator.vibrate) + toast fix + 7 nieuwe e2e tests
...
- Haptic feedback: 8ms vibrate op elke button press (Android Vibration API)
- Toast fix: slideUp/Down animatie ipv slideInRight (die de pagina verschoof)
- 7 nieuwe e2e tests: steppers, modal-close animatie, tab-switching, date-nav, stagger-indices, button-transitions
- Tests groen: 15/16 passed, 1 skipped
2026-07-24 02:13:35 +02:00
cas
9c3a07bbce
feat: animatiesysteem voor alle interacties (knoppen, modals, tabs, toasts, lijsten)
...
- 9 @keyframes: fadeIn/Out, slideUp/Down, slideInRight/OutRight, scaleIn, pulse, shimmer
- Button press: scale(0.96) op :active met 0.12s transition
- Modals: slideUp open (0.3s cubic-bezier), slideDown close (0.25s)
- Toast: slideInRight open, slideOutRight dismiss na 2s
- Tabs: crossfade switching met .switching class
- List items: staggered fadeIn via --i CSS variable (50ms per item)
- Stepper: pulse animatie op +/− tap
- Chips/pills: scale feedback op :active
- Diary entries: fadeIn + slideUp op nieuwe entries
2026-07-24 01:57:06 +02:00
cas
c2b9074ef9
feat: initiële commit — Karby PWA koolhydratenteller met NEVO database, maaltijden, dagboek, e2e tests
...
- NEVO dataset (2328 voedingsmiddelen) met zoekfunctie
- Dagboek met eetmomenten, koolhydratenlimiet en progress bar
- Maaltijden opslaan + nesten in dagboek + eenmalig/permanent bewerken
- Portie-systeem met steppers per NEVO-categorie
- Vorteq amber/goud branding met Karby logo
- Voedingscentrum links per product
- 8 Playwright e2e tests (100% groen)
- PWA met offline support
Kanban board: koolhydraat-app
2026-07-24 01:44:19 +02:00