Miguel Palhas
ed210b29d3
feat(web): series detail metadata header
2026-08-24 00:37:53 +01:00
Miguel Palhas
b413718fd1
fix(web): unrated movies show no rating
2026-08-24 00:01:17 +01:00
Miguel Palhas
9a03fc9963
Merge #149 : movie detail page
...
Closes #149
2026-08-24 00:00:22 +01:00
Miguel Palhas
fdaaeccb40
feat(web): movie detail page at /movies/{id}
2026-08-24 00:00:18 +01:00
Miguel Palhas
be2c5f7e3c
Merge #147 : posters and ratings on search results
...
Closes #147
2026-08-23 22:45:49 +01:00
Miguel Palhas
5e2bb5dff7
feat(api): carry poster and rating through search and lists
...
Widen the unified search so both §9.2 halves can render a thumbnail
and a rating: TMDB results gain vote_average/vote_count from the
search bodies, library results read the #145 artwork columns, and
episodes take their series' art. GET /api/movies and /api/series gain
the same two fields for the #151 grid. Mirrors in web updated.
2026-08-23 22:45:08 +01:00
Miguel Palhas
30382585ea
fix(meta,api): detail ratings are optional too
2026-08-23 22:26:04 +01:00
Miguel Palhas
c9e73cb23c
Merge #156 : unrated titles store NULL
...
Closes #156
2026-08-23 22:24:05 +01:00
Miguel Palhas
8af85606a0
test(api): match detail call by its appended resources
2026-08-23 22:22:14 +01:00
Miguel Palhas
08e3c7bce7
fix(meta): store unrated titles as NULL, not zero
...
TMDB reports vote_average: 0 where no rating exists (#156 ). Normalise
it to None at the arr-meta edge, like non_empty does for "", and let
the Option flow through the daemon refresh and API add paths so the
nullable columns from #145 do their job.
2026-08-23 22:21:57 +01:00
Miguel Palhas
22f5d6b463
Merge #146 : title metadata endpoints
...
Closes #146
2026-08-23 22:19:03 +01:00
Miguel Palhas
60fcc9f3d5
feat(api): metadata endpoints for library titles
2026-08-23 22:17:51 +01:00
Miguel Palhas
b59e30dbdb
Merge #145 : store poster, backdrop and rating
...
Closes #145
2026-08-23 22:13:37 +01:00
Miguel Palhas
8478c0f8a9
feat(db): store poster, backdrop and rating on titles
...
§9.6 keeps rich detail out of the database except for the three fields
pure-SQL views need. Adds poster_path, backdrop_path and vote_average to
movies and series, written by the daily metadata refresh in both lanes
and filled at add time from the TMDB response the create flows already
fetch.
2026-08-23 22:12:05 +01:00
Miguel Palhas
82f87d61f1
Merge #144 : trailer endpoint by TMDB id
...
Closes #144
2026-08-23 22:04:42 +01:00
Miguel Palhas
80a63ea2e1
feat(api): resolve trailer chips by TMDB id
2026-08-23 22:03:04 +01:00
Miguel Palhas
9bd037d1b6
Merge #143 : rich title detail in arr-meta
...
Closes #143
2026-08-23 21:34:00 +01:00
Miguel Palhas
cbb21418a4
feat(meta): rich detail calls for movies and series
...
movie_detail/series_detail fetch credits, videos and external ids in
one upstream request via append_to_response; cast is truncated to the
top 10 billed in the crate and a trailer is chosen by rule (official
YouTube trailer, any YouTube trailer, YouTube teaser, none).
movie_videos/series_videos serve #144 's search-row chip from the
videos endpoint alone. Everything rides the existing 24h cache.
2026-08-23 21:33:17 +01:00
Miguel Palhas
689487bf82
Merge #142 : DESIGN.md title detail surface
...
Closes #142
2026-08-23 21:23:45 +01:00
Miguel Palhas
2e4e1e7547
docs(design): title detail and enriched search rows
2026-08-23 21:22:50 +01:00
Miguel Palhas
1acdcaca23
Merge TV tracking milestone
...
ci / web (push) Successful in 27s
e2e / e2e (push) Successful in 2m5s
ci / rust (push) Successful in 2m9s
Closes the phase/6-tv gap set: daily series metadata refresh, tracked-season
intent, RSS episode and season-pack matching, season release decks, the TV
attention queue, and the series detail view. 27 issues.
See milestone 'TV tracking'.
2026-08-23 21:10:52 +01:00
Miguel Palhas
26dd0dc5d3
Merge #153 : placeholder for empty episode titles
...
Closes #153
2026-08-23 20:58:09 +01:00
Miguel Palhas
e9a5095557
feat(api): reject empty episode titles
2026-08-23 20:55:30 +01:00
Miguel Palhas
0ed0791fd4
fix(db): backfill empty episode titles to TBA
2026-08-23 20:55:16 +01:00
Miguel Palhas
23f5781714
feat(meta): substitute TBA for unnamed episodes
2026-08-23 20:55:16 +01:00
Miguel Palhas
877dbae7cb
Merge #152 : URL-addressed TV release decks
...
Closes #152
2026-08-23 20:49:01 +01:00
Miguel Palhas
cf36a4302c
feat(web): route season and episode release decks
2026-08-23 20:44:28 +01:00
Miguel Palhas
06a68372e6
feat(api): expose series and season on episodes
2026-08-23 20:44:28 +01:00
Miguel Palhas
4762f2612f
feat(web): show the vanished flag on seasons
2026-08-23 20:32:30 +01:00
Miguel Palhas
468f31f0b0
Merge #141 : expose seasons.vanished on the API
...
Closes #141
2026-08-23 20:31:13 +01:00
Miguel Palhas
571ec42e92
feat(api): expose seasons.vanished ( #141 )
...
Season objects from the series endpoints now carry the conflict flag
#137 writes, the way episodes already do.
2026-08-23 20:27:34 +01:00
Miguel Palhas
db72cb4bcd
docs: use agent-browser for the visual pass
2026-08-23 20:24:00 +01:00
Miguel Palhas
d5013d4ca8
Merge #129 : series detail view
...
Closes #129
2026-08-23 20:21:15 +01:00
Miguel Palhas
7f9729fb57
style(web): issue refs without hex-looking hashes
2026-08-23 20:18:51 +01:00
Miguel Palhas
e335a1be73
style(api): drop needless raw string hashes
2026-08-23 20:13:54 +01:00
Miguel Palhas
82100ef7ab
feat(web): series detail view with season and episode decks
2026-08-23 20:12:06 +01:00
Miguel Palhas
6826170431
feat(web): series data layer and /series route
2026-08-23 20:12:06 +01:00
Miguel Palhas
4efc7b1833
fix(web): token linter ignores comments
2026-08-23 19:54:42 +01:00
Miguel Palhas
353608ae63
Merge #140 : name episodes in the attention queue
...
Closes #140
2026-08-23 19:52:48 +01:00
Miguel Palhas
d86d975073
fix(web): drop issue refs that trip the token linter
2026-08-23 19:51:52 +01:00
Miguel Palhas
9129728622
refactor(api): extract attention merge helpers
2026-08-23 19:48:59 +01:00
Miguel Palhas
e4c115803b
style: fix test formatting
2026-08-23 19:46:16 +01:00
Miguel Palhas
1d31ea7d1b
feat(web): render SxxEyy chips in attention queues
2026-08-23 19:45:33 +01:00
Miguel Palhas
7f7f26dbc7
feat(api): name attention episodes and seasons
2026-08-23 19:45:33 +01:00
Miguel Palhas
11d2952863
Merge #137 : reconcile whole seasons removed upstream
...
Closes #137
2026-08-23 19:36:37 +01:00
Miguel Palhas
00ff4db26a
style: cargo fmt
2026-08-23 19:35:07 +01:00
Miguel Palhas
409967eef6
feat(daemon): reconcile vanished seasons ( #137 )
2026-08-23 19:34:55 +01:00
Miguel Palhas
943f18cdf5
feat(db): add seasons.vanished conflict flag
2026-08-23 19:34:55 +01:00
Miguel Palhas
1af73caa34
Merge #133 : render TV lanes in the attention queue
...
Closes #133
2026-08-23 19:27:35 +01:00
Miguel Palhas
71cbb9269b
fix(web): reword comment that tripped the token gate
2026-08-23 19:26:43 +01:00