gitoriaLog in with ident

tracker

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commit9abda75d9abda75dtracker: report 035mre9abda75d/reports/014-tracker-small-bugs.md

4.0 KB

  1. # w058 — tracker#22–#25 (mission 014 (old 058))
  2. **Commit**: `f14db67` on main in loreana:/media/STORAGE/projects/tracker.worldapi.org. Not pushed and not deployed. I did not touch tracker-wt26.
  3. ## What changed
  4. - **#22 air dates**: every episode row ends with its air date (`YYYY-MM-DD`). This works for rows rendered on the server and for rows of a season opened with `showSeasonEpisodes`.
  5. - **#23 season check**: the season check is now worked out from the episodes. It is checked exactly when all its episodes are watched, and it updates as soon as the face answers. Clicking a partly watched season watches the rest.
  6. - **#24 movie watched check**: a movie's page has `#moviewatch` with the label "Watched" / "Not watched".
  7. - It saves a watch with the new target type `'movie'` through the face `showToggleMovie`.
  8. - Signed out, a click opens the sign-in modal and saves nothing.
  9. - `/my/movies` shows "N movies · M watched" and a solid check on each watched movie.
  10. - **#25 genre pages**: `/genres/<genre>` and `/genres/<genre>/page/<n>` (`components/genre.hl`, using `catalog.hl` `index.genres`).
  11. - Movies and series are listed together, newest first, 24 per page, with adult titles hidden.
  12. - The genre pills on show pages link here, and the old `/genre/<x>` answers 301.
  13. - Files: `components/show.hl`, `components/mymovies.hl`, `components/genre.hl` (new), `catalog.hl`, `shows.hl`, `project.hl`, `styles.hl`, `watches.hl`, `tools/verify.hl`, `tests/browser.mjs`, `tests/seed-show.hl`, `tests/realdata-058.mjs` (new), `README.md`, `STATUS.md`.
  14. ## Gate
  15. `TRACKER_GATE_SHOTS=/tmp/w058/shots TRACKER_GATE_PORT=8720 TRACKER_GATE_IDENT_PORT=8721 TRACKER_GATE_CHROME=8722-8726 TRACKER_GATE_TMDB_PORT=8727 node tests/browser.mjs`
  16. → `238 passed, 0 failed` (was 214; 24 new checks).
  17. - #23 is tested in both directions, live and after a reload.
  18. - #24 is tested signed out (modal) and signed in, and the watch is still there after a reload.
  19. - One old check had to change. "An unwatched check is the inverted icon" now styles a detached copy of a check classed `regular`, because with #23 every check on that page is solid at that point.
  20. ## Real data
  21. Copy of Byrodin `storage/` taken 2026-10-01 12:03 UTC, server on :8730, signed in as the creator, `node tests/realdata-058.mjs`. Full page loads in ms, 3 runs each:
  22. | Page | 390 px | 1280 px |
  23. |---|---|---|
  24. | `/shows/Foundation` | 549 / 277 / 221 | 224 / 228 / 225 |
  25. | movie `/shows/Star-Trek-First-Contact` | 234 / 250 / 250 | 237 / 238 / 239 |
  26. | `/genres/Action` | 118 / 991 / 42 | 92 / 39 / 43 |
  27. | `/genres/Action/page/2` | 41 / 103 / 749 | 93 / 48 / 110 |
  28. | `/my/movies` | 66 / 63 / 66 | 68 / 63 / 63 |
  29. - `/genres/Action` has 643 titles on 27 pages. The server answers it in 6–8 ms (curl); the occasional ~1 s loads are probably the poster images loading.
  30. - On Foundation, the open season's 10 rows all show a date, and the top season's check matches its episodes.
  31. - Movie check on the copy: click took 361 ms, after a reload it was solid, I clicked it back, and after another reload it was not watched.
  32. - 0 console problems.
  33. - The copy is deleted and nothing of mine is still running on 8720–8731.
  34. ## Screenshots (looked at)
  35. - Gate: Loreana `/tmp/w058/shots/`, especially `show-open-*`, `movie-watched-*`, `genre-action-*`, `my-movies-*` and `movie-signed-out-modal-1280`.
  36. - Real data: Loreana `/tmp/w058/real/` (`show`, `movie`, `genre`, `genre-2`, `my-movies` at 390 and 1280) and `/tmp/w058/real-Drama/`, `/tmp/w058/real-Action-Adventure/`.
  37. ## Open points
  38. 1. **`/genres/Action` has no series on real data.** TMDB uses different genres for TV ("Action & Adventure", "Sci-Fi & Fantasy", "War & Politics") than for movies. So Action has only movies (page 1: 24 movies), Action-Adventure only series (0 movies / 24 series) and Drama both (5 movies / 19 series). Merging them is a question for the creator.
  39. 2. A series tile shows its start year but is placed by its newest episode, the same as on /shows.
  40. 3. A season click still writes the season's own watch record, but nothing reads it for the check any more, so it can disagree with the episodes.
  41. 4. Deploy is still to do.
  42. 5. No Hybriel issues found.

Branches

Latest commits

  • 9abda75dtracker: report 035mre
  • 12595e47mission 035: theme re-vendored from layouts.worldapi.org 0222f67 (two corner radii: radiusSmall 5px, radiusLarge 10px); the tracker's 18 own radii -> radiusSmall/radiusLarge (--layout-radius is gone); check-theme 0; gates 379/0, 32/0, 53/0, 229/0, 26/0; real copy: every computed radius in {0, 5px, 10px, 50%}mre
  • e7305014tracker: report 032 (art + photos)mre
  • fbb903cctracker#33/#37 (mission 032): a title without a TMDB poster gets its backdrop (w780, posterFromBackdrop, shown 2:3 centre-cropped); movies store runtime, the page shows release date + runtime; art backfill (public titles without poster file / movies without runtime) and person photo backfill (tmdbProfile / photoCheck) as the last start jobs (TRACKER_ART, TRACKER_PHOTOS; off in every gate start); gates 379/0, 32/0, 53/0, 229/0, 26/0, check-theme 0; live copy: art 4977 titles in 42 min (115 posters, 15 backdrops, 4609 runtimes), The Remaining shows its backdrop + 7 minmre
  • 4ecc67b2tracker: STATUS/LOG for the t38 + t40 merge (gates 374/0, 32/0, 53/0, 229/0, 26/0, check-theme 0; live copy checks)mre
  • e5945d2fMerge t40 (tracker#40 curated franchises, Franchises menu, superseded collections) into main: deploy.sh lists all six gates (browser, kinds, franchises, pager, franchiseseed, check-theme); search.hl keeps #37's personPhotoOf + #40's importWithCredits; pager gate runs with TRACKER_FRANCHISE_SEED=0; gates 374/0, 32/0, 53/0, 229/0, 26/0, check-theme 0mre
  • b638e99dMerge t38 (tracker#38 pagination, #35 Returning/Airing label) into main: LOG/STATUS keep both sides; pager gate follows #37's /people (everyone, last updated first: seed updatedAt); gates pager 229/0, browser 374/0mre
  • f8ffa4dbtracker: report 032 + The Remaining + #39mre
  • 7565a863tracker: LOG timemre
  • b10f00c8tracker#39: double episodes — migrated episodes whose TMDB id TMDB replaced are adopted by their number in the sync (old id -> migratedTmdbId); merge.hl step 3 merges each season's doubles at start (keeper: most watches > synced > first; watches moved/parked; tombstones into mergedEpisodes, nothing deleted); tools/count-duplicate-episodes.hl; gate fixture + paths-m039; live copy 850 -> 0 in 64 s; gates 373/0, 32/0, 52/0mre
  • 8f1d4542tracker#40: superseded collections — a TMDB collection timeline whose titles are all in one curated timeline is hidden (supersededBy; kept: own page + editor finder), set by the collection seed when it makes one and by the curated build (lifted when the cover is gone); partly covered ones join that franchise; no second widget (First Contact: only Star Trek — Prime); gate franchiseseed 26/0, browser 365/0, kinds 32/0, franchises 53/0, check-theme 0; real copy 24 supersededmre
  • 9448d643tracker#35 follow-up (mission 033): TVmaze 'Running' is labelled 'Returning', or 'Airing' while a non-special episode of the two newest seasons is released within today +-7 days (data unchanged); gate fixtures Running/Airing/Aired + a special; browser 366/0, kinds 32/0, franchises 52/0, pager 229/0, check-theme 0mre
  • 7d4b293dtracker#40: "Franchises" in the main menu (desktop header after People, phone sidebar) → /franchises, marked on franchise and timeline pages; gates 365/0, 32/0, 53/0, 24/0, check-theme 0mre
  • 8751adb8tracker: report 032mre
  • 9bce1f65tracker mission 032: STATUS gate files + the hour-boundary flakemre
  • 718bfb89tracker#37 (mission 032): /people = everyone, last updated first (updatedAt stamped by the person fill; view built at boot, touched people first at once), photo + name tiles (person colour) with the /movies pagination, /people/<letter> removed; photo = our file, tmdbProfile, a cast/crew entry's profile (in-memory map at boot), else the new 'no photo' placeholder; new cast/crew/created_by people keep tmdbProfile; search people rows with the photo; /settings = the heading only; util.hl sortDesc starts from sorted runs (same result, 105k: 1.6 s -> 0.15 s); gates 369/0, 32/0, 52/0, check-theme 0; README/STATUS/LOGmre
  • 93dfb0batracker#40 (mission 034): the curated franchises — data/franchises.json (17 franchises, 31 timelines, 285 TMDB titles, movies + series, in-universe/release order, 12 TMDB collections attached); lib/franchiseseed.hl + jobs.hl franchiseSeedTick (last start job, imports missing titles via details.hl importWithCredits = the search's Add, one per step paced, then one build; franchiseseed.db: editor changes win, the creator's same-name franchise adopted / timeline left alone, 404 remembered, resumable, idempotent); timeline heads 'N titles · in-universe order' (orderKind) and wrap on a phone; series pages show the widget; new gate tests/franchiseseed.mjs (5th in deploy.sh), the others run with TRACKER_FRANCHISE_SEED=0; gates 365/0, 32/0, 52/0, 24/0, check-theme 0; real copy 196 imported, 0 failed, 7 min, restart unchanged=31mre
  • 03ec792ftracker#38 (mission 033): pagination goes exactly to the clicked page — tilelist read the clicked button's text after pagination.hl's own handler had rebuilt the buttons (real clicks only); now li.current, else the button's own text; new gate tests/pager.mjs (5 lists x 11 pages, 390/1280, real + script clicks, Back/Forward) 229/0; browser 365/0, kinds 32/0, franchises 52/0, check-theme 0mre
  • 96ba683adeploy.sh: a gate without a 'passed,' line (check-theme) no longer ends the scriptmre
  • eb3b9205tracker: report 031mre