Lucas Winther and Claude Opus 5.5
512e6e9464
fix(core): roll up descendants and surface orphaned entries; SQL-derived title cursor
...
- childSummary counts the user's live entries up to three levels below the work.
- The default library view (parentId null) lists entries with no ancestor (up to three
levels) carrying a live entry of this user, so episodes of an untracked show still show.
- The title keyset cursor carries the SQL lower(w.title) value, so SQLite no longer skips
non-ASCII titles.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:59:09 +01:00
Lucas Winther
4c65939d61
merge: feat/phase1 into task/6
2026-10-30 19:54:33 +01:00
Lucas Winther and Claude Opus 5.5
d98b2b9909
chore: ignore agent worktree directory
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:37:04 +01:00
Lucas Winther and Claude Opus 5.5
a13d9cd476
merge: task 5 works and matching
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:35:57 +01:00
Lucas Winther and Claude Opus 5.5
c7471f7761
feat(core): engagements, lists and copies with history restore
...
Engagements store partial dates as value + precision and track field_sources;
lists (list/grouping/thread, grouping-only rating/review) keep dense item
order and snapshot items in history; copies store price in cents. All three
restore through restoreVersion.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:35:15 +01:00
Lucas Winther and Claude Opus 5.5
13b81b1cd5
feat(core): entries, user history and match suggestion accept/reject
...
Entries carry per-field field_sources, write user_history diffs, resolve
aliased/merged works, and support quick add, per-user moves (with alias and
draft tombstone) and keyset-paginated library listing with child rollups.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:34:47 +01:00
Lucas Winther and Claude Opus 5.5
50c115b4c7
fix(core): follow merged tombstones in the position lookup
...
A merged child still holds its (parent_id, position) slot under the unique
index, so skipping tombstones made every retry collide. Follow the tombstone
to the surviving work instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:32:27 +01:00
Lucas Winther and Claude Opus 5.5
437ca143e5
fix(core): race-safe matching, visibility-checked ID matches, child-preserving merges
...
- migration 0002: unique index on works (parent_id, position)
- matchWork retries the whole transaction on a unique violation (3 attempts)
- addMissingExternalIds uses ON CONFLICT DO NOTHING
- ID matches only return shared works or the user's own; private works cannot carry external ids
- adminMergeWorks requires shared works and repoints non-colliding children
- draft is computed for the aliased work id
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:29:48 +01:00
Lucas Winther and Claude Opus 5.5
60876c2930
merge: task 7 attachments and crypto
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 19:27:30 +01:00
Lucas Winther and Claude Sonnet 5.5
4acb368c87
fix(core): serialise attachment file mutations, atomic writes, reject svg
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 19:26:16 +01:00
Lucas Winther and Claude Opus 5.5
c7effb5f0a
merge: task 4 auth
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:59:31 +01:00
Lucas Winther and Claude Opus 5.5
56b86e27da
feat(core): custom field definitions and value validation
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:56:51 +01:00
Lucas Winther and Claude Sonnet 5.5
fe3c9e4881
fix(core): serialise first-user registration, equalise login timing
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:56:36 +01:00
Lucas Winther and Claude Sonnet 5.5
a46fb60eee
feat(core): works catalogue and matching
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:56:05 +01:00
Lucas Winther and Claude Sonnet 5.5
e1faa7433b
feat(core): users, sessions, invites, app tokens
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:54:47 +01:00
Lucas Winther and Claude Opus 5.5
83940a3b31
merge: task 14
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:54:39 +01:00
Lucas Winther and Claude Opus 5.5
92f7c9a461
merge: task 13
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:54:39 +01:00
Lucas Winther and Claude Opus 5.5
94877c1e6e
merge: task 10
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:54:39 +01:00
Lucas Winther and Claude Opus 5.5
8f58ba4cdc
feat(core): attachments and credential encryption
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:54:33 +01:00
Lucas Winther and Claude Opus 5.5
a02fd808a4
merge: task 12
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:53:35 +01:00
Lucas Winther and Claude Opus 5.5
370275090f
merge: task 11
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:53:35 +01:00
Lucas Winther and Claude Opus 5.5
d392a65aa7
merge: task 2 schema
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:52:10 +01:00
Lucas Winther and Claude Sonnet 5.5
00742937c9
fix(plugins): walk listenbrainz listens backwards with max_ts
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:51:58 +01:00
Lucas Winther and Claude Sonnet 5.5
9708fb5e70
fix(plugins): type-specific trakt external id namespaces
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:51:58 +01:00
Lucas Winther and Claude Sonnet 5.5
4c08c16e48
fix(plugins): unique csv row keys, per-file default mediaType, scale-aware zero rating
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:51:22 +01:00
Lucas Winther and Claude Opus 5.5
2573c83f70
fix(plugins): mangabaka type-specific external id namespaces
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:50:51 +01:00
Lucas Winther and Claude Sonnet 5.5
26d021af48
fix(plugins): test hardcover lookup and all status mappings
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:50:44 +01:00
Lucas Winther and Claude Opus 5.5
d9f935d8a8
test(plugins): fix mangabaka upsert-without-entry fixture
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:50:44 +01:00
Lucas Winther and Claude Opus 5.5
f30c0db2b1
fix(plugins): mangabaka never deletes on upsert without entry
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:50:32 +01:00
Lucas Winther and Claude Sonnet 5.5
59ccc90bc1
feat(plugins): trakt
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:49:47 +01:00
Lucas Winther and Claude Sonnet 5.5
3eec2f2184
feat(plugins): listenbrainz and lastfm
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:49:31 +01:00
Lucas Winther and Claude Sonnet 5.5
ff595c1c5f
fix(db): add down migration, template-DB test harness, EntryStatus type
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:49:06 +01:00
Lucas Winther and Claude Sonnet 5.5
a540c7d34d
feat(plugins): csv and json import
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:48:59 +01:00
Lucas Winther and Claude Sonnet 5.5
c09968086f
feat(plugins): hardcover
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:48:46 +01:00
Lucas Winther and Claude Opus 5.5
ddd938935e
feat(plugins): mangabaka
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:48:39 +01:00
Lucas Winther and Claude Sonnet 5.5
da04adb286
feat(db): initial schema
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-30 15:39:14 +01:00
Lucas Winther and Claude Opus 5.5
06a59e1b5c
fix(sdk): block real network in test context, strip query from HttpError message
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:38:45 +01:00
Lucas Winther and Claude Opus 5.5
a14c4e7747
feat(sdk): plugin contract, http client, fixture harness
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:36:55 +01:00
Lucas Winther and Claude Opus 5.5
27ec24eb4b
feat(core): shared domain error classes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:30:49 +01:00
Lucas Winther and Claude Opus 5.5
8248a2ac27
feat(db): Bun.SQL Kysely dialect for sqlite and postgres
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:30:49 +01:00
Lucas Winther and Claude Opus 5.5
6c5a9fbad9
chore: workspace package stubs with approved dependencies
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:30:49 +01:00
Lucas Winther and Claude Opus 5.5
fb4ff36602
docs: phase 1 implementation plan
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:24:48 +01:00
Lucas Winther and Claude Opus 5.5
560c27c04d
chore: bootstrap agent-ready docs, rules and Bun workspace
...
Adds the approved v1 design spec, UI mockups, AGENTS.md (with CLAUDE.md
and GEMINI.md pointers), architecture/decisions/todo/permissions docs,
agent permission files, and an empty Bun workspaces skeleton.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-30 15:06:58 +01:00