| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
| |
The quick-add input computed to 40px while the square accent/outline
buttons were hard-coded 3rem, leaving an 8px overhang. Give add-bar
controls one shared height of 2.75rem — the nav/row rhythm and the
44px touch-target minimum — in the three places that render them
(Button squares, .add-bar input, FuzzyAutocomplete input).
|
| |
|
|
|
|
|
|
|
|
|
| |
Every list query lacked a tiebreak, so rows sharing a sort key (same-ms
createdAt inserts, tied or NULL quality scores) came back in unspecified
order and bestRef flipped between loads. Add explicit tiebreaks: items
createdAt desc, id desc (newest first); references qualityScore desc,
id asc (first inserted wins ties). Categories were already total
(order, name unique).
Pin the rules with service tests.
|
| |
|
|
|
|
|
|
| |
Picking a category only committed on blur, so the save fired after focus
left the select. Save on change instead, flush any pick made while a
previous submit is in flight, and only re-sync fields when navigating to
a different item so rapid re-picks aren't dropped or reverted by the
post-save reload.
|
| |
|
|
|
|
|
|
| |
- hairline separators instead of bordered rows, square corners, no shadows
- white background, system font stack, slimmer headings
- pine green accent; amber warn ramp carries the attention marks (due/late/mid)
- no hover backgrounds: hover is color/fill-state only
- reserve bold nav tab width and the scrollbar gutter so navigation never shifts layout
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
- 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
|
| | |
|
| | |
|
| |
|
|
|
| |
Add a Product section for the feature and drop the completed chores
module TODO.
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
row heights, and show quality score in list
|
| |
|
|
|
|
| |
- Non-root user (node), data volume at /app/data
- Startup migration script applies drizzle SQL before server starts
- HEALTHCHECK on port 3000 every 30s
|
| |
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
| |
- 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)
|
| | |
|
| |
|
|
|
|
|
|
| |
- 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
|
|
|
@libsql/client + Drizzle ORM for SQLite, Prettier + ESLint flat config.
Multi-stage Dockerfile (node:26-slim) for Caddy-backed deployment.
|