Commit Graph
19 Commits
Author SHA1 Message Date
yusufipek 079513d5bf Merge pull request #2 from yusufipk/claude/vanity-handle-resolve
Follow the redirect when a handle resolves to a legacy vanity address
2026-08-22 15:37:12 +03:00
yusufipek 1e1c092055 Follow the redirect when a handle resolves to a legacy vanity address
Channels that still carry an old custom URL do not resolve in one step:
navigation/resolve_url answers @MesutCevik with a urlEndpoint pointing at
youtube.com/mesutcevik, and only that second address carries the browseId.
resolveChannel handled a urlEndpoint only when it already contained /channel/,
so those channels threw "kanal çözülemedi" and none of their cards ever got a
badge, anywhere on the site. It now follows an internal redirect up to three
hops.

Search results put a dozen cards from the same channel on screen at once. The
store read that fronts the handle cache is async, so every one of them missed
the cache and asked for the same resolution separately, which the extra hop
would have doubled. Cards now share the in-flight request, the same way
OBScore.baseline already shares a baseline fetch.
2026-08-22 15:35:21 +03:00
yusufipek 51a83a7e96 Merge pull request #1 from yusufipk/claude/youtube-outlier-badge-bug-d58fe1
Score cards and the watch panel again after the player endpoint closed
2026-08-22 15:27:03 +03:00
yusufipek 3e70662ef8 Score cards and the watch panel again after the player endpoint closed
YouTube now answers the InnerTube `player` endpoint with LOGIN_REQUIRED for
requests that carry no session, and the extension deliberately sends none.
`videoDetails` therefore returned nothing for almost every video, which broke
two things at once: cards on channel pages, where YouTube omits the channel
link because you are already on the channel, and the watch page panel, which
starts every render with that same call.

`next` returns the channel id and the exact view count without a session, so
videoDetails reads from there instead. A live stream reports "watching now" in
the same field, so that text is filtered out rather than read as a view count.

Channel pages no longer need the fallback at all: the cards belong to the
channel in the address bar, so pageChannel() reads it from the URL. That also
drops one request per card.

The panel took the video length from the player response to tell Shorts apart;
`next` does not carry it, so it comes from the page's own player element.

test/check.js probed videoDetails with dQw4w9WgXcQ, which keeps answering even
on the broken endpoint and kept the suite green through all of this. It now
probes a current video from the channel it just listed, and asserts the view
count as well as the channel id.
2026-08-22 15:20:40 +03:00
yusufipek 522998a73e Bump version to 0.1.3 2026-08-18 11:51:28 +03:00
yusufipek 4d011dff11 Link the AMO listing from the READMEs
The extension is published now, so the install section leads with the store link and keeps the temporary load as the way to run this checkout.
2026-08-18 11:51:28 +03:00
yusufipek e58bd2ec42 Keep the chart tooltip inside the chart at both edges
The tooltip was clamped to a fixed 90px margin while it can grow to 260px,
so bars near the left edge pushed it outside the panel and cut the title and
view count. It now clamps against its measured width and rests against the
chart edge instead of staying centred.
2026-08-16 13:45:34 +03:00
yusufipek 36a44ce5be Add AMO listing images 2026-08-15 11:03:45 +03:00
yusufipek 10c6aba812 Pin the license to GPL-3.0-only 2026-08-15 11:01:11 +03:00
yusufipek fcea651191 Declare no data collection, license under GPL-3.0
AMO rejects new extensions without browser_specific_settings.gecko
.data_collection_permissions; nothing here leaves the browser, so the
required list is just "none".
2026-08-15 10:55:26 +03:00
yusufipek cb73024d27 Add screenshots to the READMEs 2026-08-15 10:52:48 +03:00
yusufipek e43cfae113 Add a packaging script 2026-08-15 10:50:07 +03:00
yusufipek a07558c371 Drop the panel's caveat line and chart hint 2026-08-15 10:48:55 +03:00
yusufipek ba95eba591 Drop the views-over-time note from the READMEs 2026-08-15 10:46:45 +03:00
yusufipek 3d53c40655 Drop the self-signing instructions from the READMEs 2026-08-15 10:46:11 +03:00
yusufipek 3dd305d3e7 Bump version to 0.1.1 2026-08-15 10:45:52 +03:00
yusufipek 66e6fec778 Make the distribution chart readable
Bars are HTML now instead of SVG: the SVG <title> tooltip barely showed up in
Firefox and thin bars were hard to hit. Each bar sits in a full-height hover
target, hovering shows the video's title, views and age, clicking opens it. A
legend explains the median line and the highlighted bar, and baselines now
cache titles for those tooltips.
2026-08-15 10:45:30 +03:00
yusufipek 0444792fa7 Ignore packaged zips 2026-08-15 10:37:00 +03:00
yusufipek 0d5a232f08 Outlier score badge on YouTube thumbnails
Scores every card against the median views of its own channel's last N
videos, badging the thumbnail above the duration stamp. Shorts and regular
videos are scored in separate pools, live streams in none. Baselines come
from YouTube's InnerTube endpoint, one request per channel, cached a day.
Interface in English and Turkish.
2026-08-15 10:32:29 +03:00