aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server
Commit message (Collapse)AuthorAge
* Project health chart on LayerChartMartin Kagamino Lehoux2026-09-08
| | | | | | | Project page gets a Sante chart: daily mean of per-routine health via computeProjectHealthSeries, ending at the current health score. Both charts share a HealthChart component built on LayerChart's AreaChart (time x-axis, fixed 0-100 y-axis, completion dots).
* Share grocery row component and list-page form actionsMartin Kagamino Lehoux2026-09-08
| | | | | | | | - GroceryRow.svelte renders the toggle row (checkbox, name, best ref, arrow link) for both the list and catalog pages - grocery-actions.ts grows full form actions: addCategoryAction, addGroceryAction, addGroceryAndEditAction, deleteByIdAction; the categories/groceries route servers become thin wrappers
* Consolidate duplicated page CSS into app.css, share TestDb typeMartin Kagamino Lehoux2026-09-08
| | | | | | | | | | | | | - Move .page-header/.back-link/.input-invalid/.save-status/.btn-done (plus hover/variant rules) into app.css as shared route scaffolding; delete per-page scoped copies - Unify drifted values: page-header padding 1rem -> 1.25rem (routine page), empty-state spacing 0.75/1.5rem -> 1/2rem (grocery detail), save-status margin -0.25rem applied on both pages, back-link margin 1.5rem -> 1rem (grocery detail); routine page's large Fait button is kept via a .btn-done-lg modifier - Export TestDb from test-helper and use it in the five db/service test files to shrink duplicated fixture scaffolding
* Deduplicate routine actions and badges across project routesMartin Kagamino Lehoux2026-09-08
| | | | | | | | | - Share edit/complete/archive form actions in routine-actions.ts; route servers become thin wrappers (strictest guard semantics in one place) - Move parseFrequencyDays into validation.ts - Extract ScoreBadge/StatusBadge components; use on project pages and the home page instead of duplicated scoreClass/statusClass helpers - Fix archiveProject calling the routine archive with the project id
* Add routine archives: archive date, searchable archived list, frozen pageMartin Kagamino Lehoux2026-09-07
| | | | | | - Stamp archived_at on the archived snapshot; copy it on edit - loadArchived(projectId) + collapsible fuzzy-searched "Archivées" section on the project page - Archived routine pages open read-only with the health chart ending at the archive date; edit/complete actions reject archived routines
* Extract shared groceries helpers and BestRef componentMartin Kagamino Lehoux2026-09-07
|
* Add routine detail page with editable description and health historyMartin Kagamino Lehoux2026-09-07
|
* Add projects with routines, urgency tracking and health scoresMartin Kagamino Lehoux2026-09-07
| | | | | | | | | | Projects group recurring routines (chores included) with an append-only snapshot table (id, version) so edits never rewrite history; completions reference the exact snapshot. Pure metrics compute due dates, urgency buckets (ok/due/late/veryLate) and 0-100 health scores per routine, project, and globally. Home page lists projects; project dashboard sorts routines most-urgent first with one-tap completion and interval parser inputs (1d/2w/3m/1y).
* feat(auth): add persistent family loginMartin Kagamino Lehoux2026-08-13
|
* 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
|
* 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
* refactor: rename brand to reference everywhereMartin 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: 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)
* 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