Commit graph

18 commits

Author SHA1 Message Date
a5ebb6f088 fix(watchlist): preserve prev country when TMDB tv lacks production_countries
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 15:20:43 +08:00
e0e0462836 fix(watchlist): TV country full name + tmdb_rating precision rounding
TMDB's origin_country returns ISO codes (KR), not full names, causing
a vault regression from South Korea to KR. buildRecord now prefers
production_countries[0].name, falling back to the raw origin_country
code only when absent.

TMDB also now returns vote_average at full precision (6.537), causing
mass diff noise against the vault's 1-decimal convention and spurious
rewrites on precision drift alone. tmdb_rating is now rounded to 1
decimal place.

Loki fixture updated to realistic TMDB shapes (ISO country code +
production_countries) to catch this regression going forward.
2026-07-30 15:00:39 +08:00
fb3f52e4b0 fix(watchlist): preserve custom body sections through sync rewrite
renderNote wiped any ## heading not owned by the renderer (Synopsis,
Cast, Links, My Notes) on every sync, destroying user content like
## Collection graph-link sections. extractCustomSections now pulls
non-owned sections out of the existing body before rewrite, and
renderNote re-emits them verbatim, in original order, between Links
and My Notes.
2026-07-30 14:59:24 +08:00
2c663568ca feat(watchlist): preserve existing TV crew fields until per-episode enrichment 2026-07-30 14:32:42 +08:00
a4ba1b8e42 fix(watchlist): stale-read clobber, concurrency guard, leaked timeout, quiet catch-up notices
- SyncDeps.listNotes now returns paths only; new readNote(path) reads
  content immediately before parse/diff/write per note, closing the
  window where an edit made between the initial scan and a later write
  got silently overwritten. resolveMissingIds updated to match.
- WatchlistController gains a syncing flag shared by syncNow and
  resolveMissingIds so overlapping invocations short-circuit instead
  of racing on the same vault notes.
- main.ts registers cleanup for the 30s startup catch-up setTimeout so
  it doesn't fire after unload.
- syncNow takes a quiet flag (used by the scheduled catch-up path) so
  zero-change scheduled syncs don't spam a Notice; manual commands are
  unaffected.
2026-07-30 13:24:33 +08:00
b77a189848 fix(watchlist): resolve 429 backoff + unique-exact-match acceptance 2026-07-30 13:05:31 +08:00
22a409ce9b feat(watchlist): resolve-missing-ids command 2026-07-30 12:54:49 +08:00
f9cc324ead feat(watchlist): settings, commands, catch-up scheduler wiring 2026-07-30 12:44:52 +08:00
e8cb9b93fe fix(watchlist): strip surrounding quotes from prev user fields (notion_url round-trip) 2026-07-30 12:37:52 +08:00
eeaa37469c feat(watchlist): SyncEngine — tiered diff-on-write sync with throttle/backoff 2026-07-30 12:31:00 +08:00
79ba40f04d fix: tests/tsconfig baseUrl after root baseUrl addition (typecheck script) 2026-07-30 12:27:21 +08:00
08f63205c2 feat(watchlist): tmdb client — v3/v4 auth, detail + search 2026-07-30 12:22:27 +08:00
0aa6df81a3 feat(watchlist): renderNote — canonical note serializer (golden-tested) 2026-07-30 11:17:22 +08:00
51d630fcd6 feat(watchlist): buildRecord — TMDB detail → canonical record
Port pure fn mapping raw TMDB JSON + prev frontmatter → WatchlistRecord. Fixtures from python reference selftest. TDD: 14 new cases all green.
2026-07-29 23:15:36 +08:00
732ec8adf6 feat(watchlist): note parsing (frontmatter, My Notes, tmdb ref) 2026-07-29 22:55:46 +08:00
cade7104db feat(watchlist): yaml helpers + schema types 2026-07-29 21:47:25 +08:00
Moritz Jung
80adf4aff7 more tests 2026-07-03 11:38:15 +02:00
Moritz Jung
84a82f521a fix issue 2026-06-23 19:17:22 +02:00