Skip to content

docs: 2.22.0 release docs - #458

Merged
chhoumann merged 44 commits into
masterfrom
docs/release-2.22
Oct 15, 2026
Merged

chhoumann merged 44 commits into
masterfrom
docs/release-2.22

Conversation

@chhoumann

@chhoumann chhoumann commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Important

Hold until the owner releases 2.22.0. The docs site deploys from master, so merging this early would publish behavior that 2.21.1 users do not have.

Summary

The docs describe 2.21.1, while master holds 2.22.0: a redesigned PodNotes view, a new player, a rebuilt settings tab, and many fixes, each listed under "Docs at release" in its PR. This PR brings every page, the README, and the screenshots in line with master, so the site matches 2.22.0 on the day it ships. It replaces the held #397.

The view and the player (DOCS6):

Non-UI changes (DOCS5, unchanged in scope): sync and save recovery (/sync/, /save-problems/), private feeds (/private-feeds/), published transcripts, notes found by GUID, local file moves, Media Session controls, and the API changes. DOCS5's earlier description of this PR lists them.

The last master PRs (DOCS7): a new Where a note opens section on the notes page says where a note opens in each layout, and the player, transcript, getting started, and update pages link to it (#486). Sync says that PodNotes merges a file that sync replaced during a save without the save notice, and Fix save problems names both causes of that notice (#487). Sync's limits of merging say that a device on 2.21.1 and a device on 2.22.0 do not see each other's later progress for an episode (#504).

Docs ported from: #388, #397, #398, #399, #401, #404, #411, #413, #420, #423, #425, #426, #427, #428, #433, #434, #435, #440, #442, #447, #454, #459, #462, #464, #466, #468, #469, #470, #471, #472, #474, #475, #478, #479, #480, #482, #485, #486, #487, #504. #407, #409, #415, #439, #444, #446, #483, #489, #494, #495, #497, #500, #501, #502, and #503 listed no doc changes.

Every row of DOCS5's "UI docs after the redesign" table is now applied, so no page describes the 2.21.1 view, settings tab, or menus.

Release notes draft: research/release-notes-2.22.0.md in the program store.

Screenshots

docs/scripts/screenshots.mjs is rewritten for the v3 UI. It drives this worktree's isolated Obsidian through the verify skill's screens tooling (seed, library, place, theme, go, playback, press, shot), on the fixture library without its 404 feed, and adds only 2x emulation through the same obsidian dev:cdp channel, window crops, and the README GIF. Every published file name is kept, so old image URLs resolve, and queue, transcript, and transcript-phone are new. The README demo GIF is recorded again in v3: a capture from the command palette while the episode plays, with the Undo notice.

The screenshots are final: they were captured again with the same script after UI4b (#485) merged, on the final v3 UI.

Clips

Five guide clips, each after a sentence on its page that says what it shows (VIDEO1):

Clip Page Length Size, light and dark
Search for a show, add it, and play its first episode Getting started 11.6 s 117 KB, 110 KB
Timestamp while the episode plays, then Undo in the notice Capture timestamps 10.2 s 190 KB, 182 KB
Open Transcript, select a line, and find a word Use the player, Transcribe episodes 11.6 s 256 KB, 236 KB
On a phone, drag a queue episode by its grip, then open Up next Use the queue and playlists 13.6 s 152 KB, 166 KB
Open a private podcast that shows Address not on this device, and set its address Use private feeds 12.4 s 151 KB, light only (the page has no screenshots)
  • node docs/scripts/videos.mjs records every clip in this worktree's isolated Obsidian on the fixture podcasts, with real mouse and touch input and a drawn pointer, at 2x. It writes H.264 MP4s (yuv420p, +faststart) and WebP posters to docs/public/videos/. Desktop clips are 820 px wide, the pane width the screenshots use. The phone clip is 390 px in mobile emulation. The script stages only the network: Apple Podcasts search answers with the fixture shows, and the private address https://example.supercast.com/feed/abc123.rss is made up.
  • A page writes ![alt](/videos/<name>.mp4). src/videos.mjs renders a muted, looping, playsinline <video> with its poster, an accessible name, and its dark twin. A short inline script plays the clip that the reader's theme shows, so the other twin never downloads. Readers who prefer reduced motion get the poster and controls.
  • docs/scripts/scene.mjs now holds what screenshots.mjs and videos.mjs share. screenshots.mjs still runs end to end after the move.
  • DOCS7 recorded the queue clip again on 53e0acb, because since fix(ui): open notes beside the player and name the API key buttons #486 a touch drag leaves no focus ring on the grip. A fresh take of capture-undo and of every screenshot showed nothing that fix(ui): open notes beside the player and name the API key buttons #486 or fix(sync): adopt valid replacements during save readback #487 changed, so they stay as committed. The decision log is evidence/DOCS7/decisions.tsv in the program store.
  • Two review rounds, each with a fresh Claude Fable 5.1 and GPT-6 Astra reviewer who watched every clip and its page. Round 1 found four major issues, fixed in f758869: playback under reduced motion, a hidden third episode in Up next, times dropped from alt text, and a stray arrow in the phone clip. Round 2 found none major. Two of its three minor findings are fixed in f5926dc. The round logs are in evidence/VIDEO1/rounds/ in the program store.

Verification

  • On 40ae8ba, npm run lint, format:check, typecheck, build, test (2,751 tests), and docs:build pass on Node 22.23.2. docs:build checks internal links and 112 legacy fragments. The sidebar lists all 21 pages, and llms.txt lists the new ones.
  • Every heading id that the published site has is still on its page (id-diff.mjs, 0 dropped, against the published build, this PR's head before DOCS6, 8485766 before the clips, and f5926dc before DOCS7). All 95 URLs of the published site return 200 from the new build.
  • No page has a lazy list continuation or an em dash.
  • Six read-only fact dossiers checked the v3 view, the player, the settings tab, sync and saves, templates and privacy, and commands and the API against master's source at bdf3b82, with src/path:line citations. A seventh checked what feat(ui): finish the v3 phone, accessibility and polish pass #485 changed, at 75b00ab.

Review rounds

Each round ran two cold readers (Claude Opus 5.5 and GPT-6 Astra, as a 2.21.1 user who just updated, with only the local preview) on seven tasks, and two standards and facts reviewers (Claude Fable 5.1 and GPT-6 Astra) against src/, docs/STYLE.md, and the writing rules. A finding was major only when a reader would get a wrong result, lose data, or fail a task. Reports and each round's fixed and dismissed list are in evidence/DOCS6/rounds/ in the program store.

Round Cold readers (Claude, GPT), major Standards and facts (Claude, GPT), major Result
1 3, 1 0, 1 Fixed in f65f999. New Update to 2.22.0 page, touch reordering, a safer wait before the last-resort save step, selecting the loaded episode.
2 0, 0 1, 0 Fixed in 5b890de. Set feed address works after a 2.21.1 settings import since #459.
3 0, 0 0, 0 No major. Minor fixes in 94d7114.
4 0, 0 0, 0 No major. Second clean round in a row. Minor fixes in e70c6e0.
5 0, 0 0, 0 The full round after UI4b, on 23d44e3. No major. Minor fixes in 8485766: the row buttons that #485 gave per-episode names, the no-transcript paragraph as a list, the iPhone fullscreen sentence, and phone note crops that end below the last whole block.

DOCS7 ran the same four seats on the pages it changed and the queue clip. Round 1, on d1cf398, found 3 major, all from the cold readers. No page said where a note opens with the view in a sidebar, and Fix save problems named only one cause of the save notice. Both were fixed in aad397d. Round 2 found no major, and its minors are fixed in 40ae8ba. The logs are in evidence/DOCS7/rounds/ in the program store.

DOCS5's 16 rounds on the non-UI changes are in this PR's history.

Release impact

None to settings, storage, API, or URIs. Docs, screenshots, and clips only. It adds four pages to the sidebar (/private-feeds/, /save-problems/, /player/, /upgrade/), and every old URL and heading id still resolves.


Note

Low Risk
Documentation, README, and generated media only; no plugin runtime, API, or storage changes described in the release impact.

Overview
Brings the site and README in line with PodNotes 2.22.0: the PodNotes view and full player (chapters, feed transcript, capture Undo), renamed settings, merged sync, private feeds with Set feed address, free published transcripts, and note lookup by guid/feedUrl. Adds guide pages such as Use the player and Update to 2.22.0, expands commands/API/FAQ/mobile/sync/import docs, and updates the sidebar.

Screenshots and clips: screenshots.mjs now drives the worktree’s isolated Obsidian via the verify screens tooling and fixture podcasts instead of live RSS feeds; shared setup lives in scene.mjs. New videos.mjs records five how-to MP4s with real input; src/videos.mjs and MarkdownContent.astro turn ![…](/videos/….mp4) into themed, looping videos (poster + controls when motion is reduced). Screenshot seed vault and seed.json switch to fixture shows; docs/STYLE.md adds clip checklist.

Reviewed by Cursor Bugbot for commit 59b740d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Update docs for PodNotes 2.22.0: new guides, renamed settings, and rebuilt screenshots

This is the 2.22.0 documentation release.

  • Adds new guides: player.md, private-feeds.md, save-problems.md, and queue/playlist pages
  • Documents major behavior changes: private feed addresses stored per-device in Obsidian secret storage, merged multi-device saves instead of whole-library replacement, capture undo (7-second notice), and free feed-provided transcripts
  • Renames settings throughout: feed notes become podcast notes, capture format becomes Timestamp template, and feed/transcript/download paths get new names — see the migration tables in settings.md
  • Rewrites the screenshot/video pipeline in screenshots.mjs, videos.mjs, and scene.mjs around shared scene tooling, a fixture-based seed plan, and recorded pointer-overlay videos, replacing live feeds and manual vault setup
  • Regenerates all screenshots and adds new queue, transcript, and demo video assets

Behavioral Change: this PR only changes documentation and docs tooling, but scene.cdp rejects non-JSON command output and videos.zoom fails when the scaled window does not settle, so docs builds may break if the fixture or Obsidian version drifts.

Macroscope summarized 59b740d.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Deploying podnotes with  Cloudflare Pages  Cloudflare Pages

Latest commit: 59b740d
Status: ✅  Deploy successful!
Preview URL: https://6bca048d.podnotes.pages.dev
Branch Preview URL: https://docs-release-2-22.podnotes.pages.dev

View logs

Rewrites the pages that described the 2.21.1 view and settings, adds a page for the player, and rewrites docs/scripts/screenshots.mjs on the verify skill's screens tooling with the fixture library. The screenshots are provisional until the final visual pass merges.
Adds an Update to 2.22.0 page, fixes the loaded-episode and offline wording, makes in-page links site-absolute, and adds a phone twin for the transcript shot.
Corrects what happens after importing a 2.21.1 settings file, fits alt texts to their phone crops, and crops the first-run shot.
@macroscopeapp

macroscopeapp Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Macroscope skipped reviewing this pull request. Per-review cost limit exceeded (workspace setting).

This review would cost an estimated $14.91, which exceeds your per-review limit of $10.00.

The top 3 files driving up this estimate:

File Diff Size Estimate
docs/scripts/screenshots.mjs 58.45KB $2.76
docs/scripts/videos.mjs 27.80KB $1.31
docs/src/content/docs/timestamps.md 15.79KB $0.75

Tip

To get this pull request reviewed, you can:

  1. Comment @macroscope-app on this PR to request a manual review (monthly spend limits still apply).
  2. Exclude the file(s) above from review by adding a pattern to your .macroscope/ignore.md — note that creating this file replaces Macroscope's built-in default ignores rather than extending them.
  3. Raise your cost limit in your workspace billing settings.

Turn off this reminder going forward

});
/** A crop down to the last element matching `selector`, plus `pad`, as page source. */
const below = (/** @type {string} */ selector, pad = 16) =>
`() => ({ bottom: Math.max(...[...document.querySelectorAll(${JSON.stringify(selector)})]
Applies #485's Docs at release items: Remove from Local files, Exit fullscreen, Open note in the Transcript panel, Set feed address off while offline, and the Download path warning.
Name icon buttons by what a reader sees now that #485 gave them per-episode
names, split the no-transcript paragraph into a list, scope the iPhone
fullscreen sentence, and end phone note crops below the last whole block.
Move the seed plan, the docs' fixture library, episode notes made with
PodNotes' commands, and the instance's CDP channel out of screenshots.mjs
into scene.mjs, so the clip recorder can use them too.
node docs/scripts/videos.mjs records five clips in the isolated Obsidian
with real mouse and touch input and a drawn pointer, at 2x through
Electron's zoom, and writes H.264 MP4s with WebP posters and dark twins
to docs/public/videos.
Getting started, Capture timestamps, Use the player, Transcribe episodes,
Use the queue and playlists, and Use private feeds each get a clip after
a sentence that says what it shows. A clip plays muted on a loop, and
readers who prefer reduced motion get its poster and controls instead.
The docs README now describes the current screenshot script.
Pause clips when the reader turns on reduced motion, scroll Up next in
the phone clip so the whole new queue shows, hide the drawn mouse arrow
in touch clips, keep times out of clip alt text, where the site's
directive syntax drops them, and take posters after the click ring fades.
The phone clip now holds on Up next with the moved episode first, scrolls
to the last episode, and scrolls back, and the private feed's poster has
the pointer off the pasted address.
Ports the Docs at release sections of #486 and #487. Notes that the
player, the Transcript panel, and the podcast menu open go beside the
PodNotes view in the main area. A file that sync replaces during a save
merges without the save notice.
Since #486 a touch drag leaves no focus ring on the queue grip.
Round 1 review: readers could not tell where a note opens with the view
in a sidebar. One section on the notes page now covers the sidebar, the
main area or a popout, phones, and a note that opens while another tab
is active. Fix save problems and Sync now name both causes of the save
notice.
Round 2 review: Where a note opens now says which tab a note takes in
each layout, includes commands run from a note, and does not imply that
a capture opens the note. Getting started and the update page note the
phone exception. Sync says that a change written over between the read
and the write shows no notice.
@chhoumann chhoumann changed the title docs: 2.22.0 release docs (hold until release) docs: 2.22.0 release docs Oct 15, 2026
@chhoumann
chhoumann marked this pull request as ready for review October 15, 2026 20:41
@chhoumann
chhoumann merged commit ad5f8cd into master Oct 15, 2026
22 checks passed
@chhoumann
chhoumann deleted the docs/release-2.22 branch October 15, 2026 20:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants