tracker
All repositories: gitoria
3.7 KB
# w063 — tracker#29: /my/unwatched checks look "active" (mission 019 (old 063))**Commit**: `fa1f9df` on main in loreana:/media/STORAGE/projects/tracker.worldapi.org. It is not pushed and not deployed. I did not touch tracker-wt26.## CauseThis is **not a code regression** of #23 / f14db67.- **Classes are right**: on the real-data copy, signed in as az5b2, all 1,287 checks on /my/unwatched have the class `checkicon regular`. Their computed fill is transparent, both on a fresh load and after a client-side navigation. The live CSS is the same as HEAD.- **The look was the problem**: the "inverted" unwatched check from #11 (outline circle with an outline check) was drawn in the **accent** colour. A whole page of those reads as ticked.- **Fix** (`styles.hl`): the unwatched circle and check are now **muted grey** (`colorTextMuted`, rgb(145,150,155)). They turn accent only under the pointer.- A watched check is unchanged: a solid accent disc with a dark check.- The #11 shape stays: it is not a bare empty circle, which the creator rejected in #11.## Pages checked- **Same fix applies** (they share the same CSS): /my/unwatched, the show page's seasons and episodes, and the movie page.- **/my/schedule**: it has no checks.- **/my/movies**: only watched movies get a mark (#24). An unwatched movie has no mark, so there is no empty check on that page.## Gate`mkdir -p /tmp/w063/shots; TRACKER_GATE_SHOTS=/tmp/w063/shots TRACKER_GATE_PORT=8720 TRACKER_GATE_IDENT_PORT=8721 TRACKER_GATE_CHROME=8722-8726 TRACKER_GATE_TMDB_PORT=8727 node tests/browser.mjs`→ `266 passed, 0 failed` (was 259).- **How a check is tested**: the new `checkLook(sel)` measures a real check on the page; the hidden-copy check is removed. It moves the pointer off the check, then reads the circle's computed fill and stroke, the check's stroke, and whether the check is the topmost element. It also takes the screenshot pixel inside the disc. Each check must then pass as `lookEmpty` or `lookSolid`.- **Where**:- /my/unwatched: both rows.- Show page: an unwatched episode and season, a watched episode, and the #23 mixed state.- Movie page: both states.- /my/movies: the watched mark.- **Negative test**: run against the old `styles.hl`, the gate fails exactly 4 of the new checks, all on the accent stroke.- **Pre-existing quirk**: the gate crashes if the `TRACKER_GATE_SHOTS` directory does not exist, so `mkdir` it first.## Real data- **Copy**: I took Byrodin's `storage/` at about 19:30. The ssh from Loreana to Byrodin was refused, so I piped the tar from Byrodin into Loreana instead.- **Run**: server on :8730, `REAL_OUT=/tmp/w063/real node tests/realdata-063.mjs`.- **/my/unwatched**: 1,287 checks, all regular, muted and unfilled. Full load took 1,913 ms at 390 px and 1,050 ms at 1280 px.- **Other pages**: Foundation has 11 muted and 2 solid checks. The Star Trek: First Contact movie check is muted. /my/movies has no marks, because the creator has no watched movie.- **Click**: one click took the list from 1,287 to 1,286 rows in 1.5 s, and the row stayed gone after a reload. There were 0 console problems.- **Cleanup**: the copy, the sessions and the server are gone, and ports 8720–8731 are free.## Screenshots (looked at)- **Real data**: Loreana `/tmp/w063/real/my-unwatched-390.png` and `my-unwatched-1280.png`, plus `show-*` and `my-movies-*`. The grey outline checks are clearly different from the solid accent discs on Foundation.- **Gate**: `/tmp/w063/shots/`.## Open points1. Deploy.2. The ticket asks for "empty" checks. I kept #11's outline-with-check shape and made it grey instead of accent. If the creator wants a bare empty circle, that reverses their #11 note. It would be a one-line CSS change plus the `lookEmpty` gate check.3. There were no Hybriel issues.
Branches
- mainmain branch
Latest commits
- 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
- 9b5d2e89tracker mission 031: README (What it does, Test: four gates + the #32 checks, Files: theme/, new pages), STATUS (real copy, A/B load, how to repeat, open points), LOGmre
- 39950e4ctracker#32 (mission 031): the WorldAPI theme (theme/ vendored verbatim from layouts.worldapi.org 85b5654; styles.hl inherits it: accent green-dark, type colours 1-6; own base/header rules, row lines, genre-pill and inverted-button frames removed, the season foldable keeps its line; check-theme 21 -> 0, 4th deploy gate; main actions class primary) and the #32 header (theme AppHeader/MainMenu/UserMenu/Sidebar/ContentFirst: desktop brand, search, Series|Shows|Movies|Genres|People, user icon with Unwatched..Settings, Logout; signed out the ident selector, phone the iD icon dropdown; phone menu in the sidebar overlay; marked entry by :has); /find -> /search/<q>, /genres, /people(/<letter>), /settings; main { ContentFirst { slot } } works around the hl:web one-line slot bug; gates 365/0, 32/0, 52/0, check-theme 0mre
- a386dc92tracker: reports 029 + 030mre
- 71e0fd7dtracker missions 029 + 030: README (What it does, Files, gate count), STATUS (real-copy numbers, how to repeat, open points), LOGmre