<feed xmlns='http://www.w3.org/2005/Atom'>
<title>home-sveltekit/src/routes/+page.server.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-08T15:06:51Z</updated>
<entry>
<title>Migrate date handling from Date to Temporal API</title>
<updated>2026-09-08T15:06:51Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-08T15:06:51Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=bd2f982c489b15ce1165c051fdedf35af979f784'/>
<id>urn:sha1:bd2f982c489b15ce1165c051fdedf35af979f784</id>
<content type='text'>
Routine scheduling, health series, service stamps, session expiry, and
date formatting move to native Temporal (Instant / ZonedDateTime in
UTC), with ISO strings kept at DB and chart boundaries. Ambient types
in src/temporal-ambient.d.ts cover the native runtime; no polyfill.
Observable behavior and stored formats are unchanged.
</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>Split groceries domain out of the app root</title>
<updated>2026-09-07T08:55:06Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-07T08:55:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=113415ce357a9cea1759d0452ebae6352f8fe36b'/>
<id>urn:sha1:113415ce357a9cea1759d0452ebae6352f8fe36b</id>
<content type='text'>
Move the grocery list, catalog, and categories routes under /groceries/
so the app home can host the projects/routines overview next. Update
nav to exact-path matching, login redirect default, and layout title.
</content>
</entry>
<entry>
<title>feat: autocomplete search with datalist to prevent duplicate items</title>
<updated>2026-07-28T20:25:37Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-28T20:22:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=7e5535f9834fca2594c5bade425ecee00c32bdb8'/>
<id>urn:sha1:7e5535f9834fca2594c5bade425ecee00c32bdb8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: keep keyboard open on mobile when adding items to list</title>
<updated>2026-07-28T16:14:56Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-28T16:14:56Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=3ce6da65adf9d8c657893edb1ee1278a18da3e4e'/>
<id>urn:sha1:3ce6da65adf9d8c657893edb1ee1278a18da3e4e</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>feat: warm redesign, full French localization, compact sticky form, fixed row heights, and show quality score in list</title>
<updated>2026-07-28T10:13:31Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-28T10:13:31Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=45cc0afb734a422ee7765dc5c60dccbcc6721367'/>
<id>urn:sha1:45cc0afb734a422ee7765dc5c60dccbcc6721367</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: compact sticky add form with Add + Edit buttons</title>
<updated>2026-07-27T19:00:10Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-27T19:00:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=bc3678461c3000c2394e355b7aaa73b774a33fff'/>
<id>urn:sha1:bc3678461c3000c2394e355b7aaa73b774a33fff</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>feat: navbar + split list/catalog into separate pages</title>
<updated>2026-07-27T18:44:10Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-27T18:44:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=5f423e365ada8aae63ad07099031a23252f47514'/>
<id>urn:sha1:5f423e365ada8aae63ad07099031a23252f47514</id>
<content type='text'>
- 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)
</content>
</entry>
<entry>
<title>feat: show best reference (by quality score) on each item in list view</title>
<updated>2026-07-27T18:40:10Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-07-27T18:40:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/home-sveltekit/commit/?id=3a7f9e40edb58b206d99a5d2e38ba34621227155'/>
<id>urn:sha1:3a7f9e40edb58b206d99a5d2e38ba34621227155</id>
<content type='text'>
</content>
</entry>
</feed>
