<feed xmlns='http://www.w3.org/2005/Atom'>
<title>home-sveltekit/src/lib/server/db/schema.ts, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.kagamino.dev/home-sveltekit/atom?h=main</id>
<link rel='self' href='https://git.kagamino.dev/home-sveltekit/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/'/>
<updated>2026-09-30T20:13:07Z</updated>
<entry>
<title>Allow granular routine frequencies like 5/2w</title>
<updated>2026-09-30T20:13:07Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-30T20:13:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=a725d4c7d28fee701b6997cc46cffddefbcd26bf'/>
<id>urn:sha1:a725d4c7d28fee701b6997cc46cffddefbcd26bf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Compress comments to terse single lines within line width</title>
<updated>2026-09-25T07:10:31Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-25T07:10:31Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=760a61001edafb462ca9c7f5bc8013f31fb15a5c'/>
<id>urn:sha1:760a61001edafb462ca9c7f5bc8013f31fb15a5c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add routine archives: archive date, searchable archived list, frozen page</title>
<updated>2026-09-07T20:31:23Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-07T20:31:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=992e40835af1600a0961ec2454fb78ff43aec3c6'/>
<id>urn:sha1:992e40835af1600a0961ec2454fb78ff43aec3c6</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>Add routine detail page with editable description and health history</title>
<updated>2026-09-07T17:17:45Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-07T17:17:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=37573109a05a07ac50827759ea63793209baa73a'/>
<id>urn:sha1:37573109a05a07ac50827759ea63793209baa73a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add projects with routines, urgency tracking and health scores</title>
<updated>2026-09-07T09:32:41Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-07T09:32:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=18a0f9c874aaa09c0f71252dad853c23f9511ed6'/>
<id>urn:sha1:18a0f9c874aaa09c0f71252dad853c23f9511ed6</id>
<content type='text'>
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).
</content>
</entry>
<entry>
<title>feat: drag-to-reorder categories with persistent order</title>
<updated>2026-07-29T13:01:38Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-29T13:01:38Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=63e003a718782e2ca3ffcb2d11b0be97560a7259'/>
<id>urn:sha1:63e003a718782e2ca3ffcb2d11b0be97560a7259</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: services layer, valibot validation, shared CSS utilities, aria labels, and drizzle migrate</title>
<updated>2026-07-28T13:07:57Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-28T13:07:57Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=04fabf115ccea31ac504b06cc51d78423b697f60'/>
<id>urn:sha1:04fabf115ccea31ac504b06cc51d78423b697f60</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>refactor: rename brand to reference everywhere</title>
<updated>2026-07-27T19:07:48Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-27T19:07:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=d9a200cd35a3d06173846a45c9f58acb1adf61aa'/>
<id>urn:sha1:d9a200cd35a3d06173846a45c9f58acb1adf61aa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: product references + grocery detail page</title>
<updated>2026-07-27T17:53:11Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-27T17:53:11Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=e075698891d653330b5d5d0f80c2c3495aee6262'/>
<id>urn:sha1:e075698891d653330b5d5d0f80c2c3495aee6262</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>feat: separate categories table + /categories management page</title>
<updated>2026-07-27T16:31:26Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-27T16:31:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=e14717b2e7853705469275d64023bb902b195ebb'/>
<id>urn:sha1:e14717b2e7853705469275d64023bb902b195ebb</id>
<content type='text'>
- Categories table (id, name unique) with FK from groceries.category_id
- /categories page for add/delete categories
- Main page uses native &lt;select&gt; dropdown for category
- Categories grouped by name in list/catalog views
- Regenerated drizzle migrations from scratch
</content>
</entry>
</feed>
