VersionControl:PRs/pickipedia/170
From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
| State | 🟣 merged 2026-11-03 21:47:39 |
|---|---|
| Worked on by | magent, justin |
| Moods | #uploads-and-embeds |
| Deploy | redeploy PickiPedia (the usual wiki build) |
| Branch | release-pages → production, by magent-cryptograss
|
| Opened · last pushed | 2026-11-02 19:59:21 · 2026-11-02 19:58:55 |
Justin's ask in #uploads-and-embeds (block ~26,329,275): a speed setting on the Release player, toggleable styled subtitles, Release pages titled as themselves, cards when linked, and commentary from the uploader and releaser.
**Player (`videoPlayer.js`, every `.hls-video-player`, Release pages and embeds alike)**
- **Speed row:** .5× .75× 1× 1.25× 1.5× 2×, under every player and on every playback path (hls.js, native, plain file). Pitch is kept (the browser's `preservesPitch` default). Remembered across videos in localStorage, like the quality choice. Re-applied when a new source loads (Audio only, fallback). Shift+< and Shift+> step it while the player has focus. The browser's own speed menu moves the row too.
- **Captions:** the player reads `Release:<CID>/captions` (`action=raw`). WebVTT as is; SRT is converted. It's added as a real `<track kind="subtitles">`, so it can be toggled with **CC** under the player or the browser's own CC menu. On by default; turning it off is remembered. Styled with `::cue` in `videoPlayer.css`, not burned into the picture.
- Captions live on the wiki rather than in the pin: a CID can't change, and captions get corrected and translated after release.
**Release pages (`ReleaseContentHandler`, `Hooks`)**
- The YAML `title` is the page heading **and** the HTML `<title>` (`setDisplayTitle`; checked in the 1.43.6 source that `Article::adjustDisplayTitle` sets both). The CID stays in the details table.
- **Byline** under the heading: uploader (linked to their user page), upload block, date.
- **Description** is the opening words under the player, not a monospace table cell.
- **Commentary:** a new optional YAML list, rendered as signed quotes with a role chip:
```yaml
commentary:
- by: SkymanJenkins
role: uploader
text: |
Words, in plain text. Blank lines make paragraphs.
```
- **Captions line:** "No captions yet · add them (WebVTT or SRT)" or "Captions on · edit them". It's registered as a link/template, so it redraws when the captions page is created or edited.
- **Link cards:** `og:title`, `og:description`, `og:image` (the release's `poster.jpg` when the YAML says delivery-kid made one), `og:type`, `og:url`, and `twitter:*`. The description falls back to the first commentary, then to "A video on PickiPedia, uploaded by X."
- `Release:*/captions` gets the plain-text content model (`ContentHandlerDefaultModelFor`). The existing `/Metadata` subpages are untouched.
- An upright phone video is capped at 80vh on its Release page.
**Tested** on a throwaway MediaWiki 1.43.6 built from the `pickipedia-wiki:latest` image with this extension copied in, using the live YAML of [Cory Walkers Birthday Banjo Cake](https://pickipedia.xyz/wiki/Release:QmUQwnWJMcwMGkVSo45XLwiqWZg8esLnecSzFCwdASDvNg), plus test commentary and a two-cue WebVTT. In Chromium (playwright):
- the heading and `<title>` show the release name, and all og/twitter tags are present;
- the real AV1 stream played from the IPFS gateway, and both cues parsed, with one showing on screen at 1.6 s;
- at .75×, `playbackRate` was 0.75 with pitch preserved, and it was remembered on a second page's embed;
- CC toggled hidden/showing, and turning it off was remembered;
- the API reports the captions page as model `text`;
- SRT conversion was checked in node;
- the only console error was a missing favicon.
`php -l` is clean. No PHPUnit run: this repo has no harness for the extension.
**Not in this PR**
- **The Releaser isn't recorded anywhere yet.** The Release page is made by Blue Railroad Imports, and nothing writes who finalized it, so the releaser's commentary is typed into the YAML by hand. A "commentary" box on ReleaseDraft carried through finalize is the follow-up.
- **magenta's own embed** gets speed in its own PR; captions there next.
Deploy: redeploy PickiPedia (the usual wiki build)
Worked on by: magent and Justin, in #uploads-and-embeds