aboutsummaryrefslogtreecommitdiff
path: root/src/routes
Commit message (Collapse)AuthorAge
* fix: type page state arrays (svelte-check 0 errors)Martin Kagamino Lehoux2026-08-21
|
* feat: fuzzy autocomplete for add-item inputMartin Kagamino Lehoux2026-08-21
| | | | | | | | Replace the native <datalist> with a custom fuzzysort-driven component (FuzzyAutocomplete) with keyboard nav and highlighted matches, preserving exact-match auto-add. Extract a unit-tested fuzzy-search helper, and gitignore .juggler/. Fix the dev DB boot failure caused by a sibling project's ambient DATABASE_URL leaking in by overriding it (file:./data.db) in mise.toml.
* feat(auth): add persistent family loginMartin Kagamino Lehoux2026-08-13
|
* fix(groceries): prevent premature auto-submit on quick-add inputMartin Kagamino Lehoux2026-08-01
| | | | | | | | Typing 'sel régénérant' would auto-submit 'sel' because oninput fired on every keystroke, and trim() collapsed the partial input to a catalog match. Moved auto-submit to oninput with insertReplacementText guard (datalist selection) plus onchange (blur/Enter), so regular typing is never interrupted.
* feat(catalog): add in-memory case-insensitive search filterMartin Kagamino Lehoux2026-07-31
| | | | | | Adds a search input to the Catalog page that filters items by name using a simple case-insensitive substring match. Empty categories are hidden when filtering.
* fix: put Non catégorisé first in Catalogue tooMartin Kagamino Lehoux2026-07-29
|
* fix: eliminate Svelte state_referenced_locally build warningsMartin Kagamino Lehoux2026-07-29
|
* feat: single-line category add form with + buttonMartin Kagamino Lehoux2026-07-29
|
* fix: hide empty categories in the list viewMartin Kagamino Lehoux2026-07-29
|
* fix: use category order when grouping items in list and catalogMartin Kagamino Lehoux2026-07-29
|
* feat: drag-to-reorder categories with persistent orderMartin Kagamino Lehoux2026-07-29
|
* feat: multi-select and bulk-update category from catalogMartin Kagamino Lehoux2026-07-29
|
* fix: prevent layout shift when save confirmation appearsMartin Kagamino Lehoux2026-07-29
|
* feat: auto-save item name/category on blur, remove explicit save buttonMartin Kagamino Lehoux2026-07-28
|
* feat: autocomplete search with datalist to prevent duplicate itemsMartin Kagamino Lehoux2026-07-28
|
* fix: adding a ref no longer triggers the Enregistré timeoutMartin Kagamino Lehoux2026-07-28
|
* fix: sticky form and navbar layout with consistent nav-heightMartin Kagamino Lehoux2026-07-28
|
* fix: redirect to origin page after deleting an itemMartin Kagamino Lehoux2026-07-28
|
* fix: redirect to previous page after deleting an itemMartin Kagamino Lehoux2026-07-28
|
* feat: keep keyboard open on mobile when adding items to listMartin Kagamino Lehoux2026-07-28
|
* feat: oklch color palette and PWA install supportMartin Kagamino Lehoux2026-07-28
|
* fix: prevent form reset after update and show feedbackMartin Kagamino Lehoux2026-07-28
|
* feat: editable name and category in grocery detail pageMartin Kagamino Lehoux2026-07-28
|
* refactor: services layer, valibot validation, shared CSS utilities, aria ↵Martin Kagamino Lehoux2026-07-28
| | | | | | | | | | | | | | labels, and drizzle migrate - Extract groceries/categories/references services with db injection - Add valibot for form validation and safe numeric id parsing - Fix category delete FK behavior with onDelete: set null + migration - Replace custom migrate.js with drizzle-orm/libsql/migrator - Add shared CSS utility classes in app.css (forms, lists, buttons) - Add aria-pressed and aria-label on interactive elements - Remove redundant app.css imports and unused /stores import - Add integration tests for all services using drizzle migrate helper - Remove smoke test; add db:migrate and db:studio scripts
* feat: warm redesign, full French localization, compact sticky form, fixed ↵Martin Kagamino Lehoux2026-07-28
| | | | row heights, and show quality score in list
* refactor: rename brand to reference everywhereMartin Kagamino Lehoux2026-07-27
|
* feat: compact sticky add form with Add + Edit buttonsMartin Kagamino Lehoux2026-07-27
| | | | | | | - Sticky navbar + sticky add bar on list page - Add button: quick add to list - Edit button: add + redirect to detail page for references - Removed layout top padding for seamless sticky behavior
* feat: navbar + split list/catalog into separate pagesMartin Kagamino Lehoux2026-07-27
| | | | | | | | - Navbar component with List, Catalog, Categories tabs - / = shopping list (unchecked items with add form) - /catalog = full catalog with toggle - /categories = category management - Removed page titles (navbar indicates context)
* feat: show best reference (by quality score) on each item in list viewMartin Kagamino Lehoux2026-07-27
|
* feat: product references + grocery detail pageMartin Kagamino Lehoux2026-07-27
| | | | | | | | - references table (brand, price, unit, quality_score) with FK to groceries - /grocery/[id] page for managing references per item - Unit dropdown (€/kg, €/L, €/u) defaulting to €/kg - → link on all items navigates to detail page - Delete item moved from catalog to detail page
* feat: separate categories table + /categories management pageMartin Kagamino Lehoux2026-07-27
| | | | | | | | - Categories table (id, name unique) with FK from groceries.category_id - /categories page for add/delete categories - Main page uses native <select> dropdown for category - Categories grouped by name in list/catalog views - Regenerated drizzle migrations from scratch
* feat: delete items from catalogMartin Kagamino Lehoux2026-07-27
| | | | | | - Delete action removes item from grocery list permanently - Delete button (x) on catalog items, positioned inline with name - Unified button heights (2rem) across list and catalog sections
* feat: catalog section + deduplicate items by nameMartin Kagamino Lehoux2026-07-27
| | | | | | | | - Show all items split into List (unchecked) and Catalog (checked) sections - Tapping a catalog item unchecks it (returns to list) - Add action now upserts: unchecks existing item instead of creating duplicate - UNIQUE constraint on groceries.name as defense-in-depth - Tests for dedup behavior (insert, re-add from catalog, no-op on list)
* chore: add TypeScript ESLint parser for .svelte filesMartin Kagamino Lehoux2026-07-27
|
* feat: minimal grocery list — add items, check them offMartin Kagamino Lehoux2026-07-27
| | | | | | | | - Groceries DB schema (id, name, checked, created_at) with Drizzle + libsql - /+page.server.ts: load (unchecked items, newest first), add & toggle actions - /+page.svelte: text input + Add button, item list with toggle buttons - Mobile-first styling with scoped CSS classes - AGENTS.md: project-specific rules including UI validation
* bootstrap: SvelteKit + adapter-node + plain CSS + VitestMartin Kagamino Lehoux2026-07-27
@libsql/client + Drizzle ORM for SQLite, Prettier + ESLint flat config. Multi-stage Dockerfile (node:26-slim) for Caddy-backed deployment.