Skip to content

docs(changelog): v0.2.0-beta24 - #479

Merged
jeffcrouse merged 3 commits into
mainfrom
release-beta24
Nov 10, 2026
Merged

jeffcrouse merged 3 commits into
mainfrom
release-beta24

Conversation

@jeffcrouse

Copy link
Copy Markdown
Member

Release notes for v0.2.0-beta24, following the beta23 pattern (#452): the changelog section and the site's version chip.

  • Moves [Unreleased] under [0.2.0-beta24] - 2026-11-10, with a summary line.
  • Leads with the tokenless-server change (ADR-0171), worded from the table in docs/INSTALLATION.md: existing tokenless libraries keep serving everyone but lose MCP unless MCP_ALLOWED_HOSTS is set; new reachable servers make a token; a removed token or bare uvicorn answers only its own machine.
  • Adds the missing entry for the MCP playlist refresh (ADR-0177, feat(mcp): playlist writes notify attached clients (ADR-0177) #476).
  • Lists media.credentials among the capabilities.

1.7 does not depend on this release: ServerCapabilities in familiar-apple reads a server without a capability list (beta23) as unknown, never missing.

Before tagging

docs/RELEASE-CHECKLIST.md's manual pass (keyboard-only and VoiceOver on the web admin) needs a person; note anything that fails here. The NAS is already running this code (deployed from 46c8d3e3).

Tagging v0.2.0-beta24 on the merge commit starts release.yml.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UpUascYWiPxuH2vtav72eV

Moves Unreleased under 0.2.0-beta24, leads with what a server without a token does after the
upgrade (ADR-0171, per docs/INSTALLATION.md's table), adds the playlist refresh (ADR-0177, #476),
which had merged without an entry, names media.credentials among the capabilities, and moves the
site's version chip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UpUascYWiPxuH2vtav72eV
@jeffcrouse

Copy link
Copy Markdown
Member Author

Release checklist pass (keyboard + structure), against the NAS at 46c8d3e

Run with real key presses in Chrome on Overview, Library → Sync, Analysis → Status and Server → Access. The VoiceOver listening items still need a person.

Passes

  • Focus order is destinations → section rail → page on every page checked, and every stop shows a focus ring (:focus-visible).
  • Headings read Familiar (h1) → destination (h2) → section (h3) → cards (h4).
  • Destinations and sections are links, and the current one has aria-current="page".
  • The Analysis → Status phase table has a thead with column headers.
  • Overview, Library and Analysis have no unnamed controls and no images missing alt text. The pairing QR has alt text.

Fails

  1. Server → Access: the token field has no label. Its only name is the placeholder, so a filled field (the normal state) is likely announced with no name. panels/server/ServerTokenSettings.tsx.
  2. Create Profile dialog: the colour swatches are unnamed buttons with no selected state, so each is announced as just "button". The "Profile Name" <label> isn't tied to its input either. components/Profiles/ProfileSelector.tsx. (It's a native <dialog> with showModal(), so focus trap, Escape and focus return are the browser's.)
  3. A browser without the token sees "Failed to load profiles" and "Add Profile", not a request to sign in. A 401 SERVER_TOKEN_REQUIRED looks like an empty server.

Minor

  • Library → Sync: the button shows "Sync Now" but its accessible name is "Sync library" (WCAG 2.5.3, label in name).
  • Server → Access copy still says the token is "only needed if your server has authentication turned on", which no longer holds after ADR-0171.

Not exercised

  • Analysis → Status failure groups (Details / Copy details): none exist since the restart. In code they're a native <details>/<summary> and a named button.
  • Enter/Space activation on Sync and Show link: both are native buttons. I didn't press them, because that would start a sync or reveal the token.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UpUascYWiPxuH2vtav72eV

jeffcrouse and others added 2 commits November 10, 2026 15:42
…and the profile form

Found by the v0.2.0-beta24 release-checklist pass (docs/RELEASE-CHECKLIST.md):

- A browser without the server token saw "Failed to load profiles" and "Add Profile", which reads
  as an empty server. The picker now recognises SERVER_TOKEN_REQUIRED (isServerTokenRequired in
  api/base.ts, by code, never by message) and shows a sign-in screen with the token form, which
  reloads the profiles once the server accepts a token.
- Server → Access: the token field's only name was its placeholder, gone once the field is filled.
  It now has a label and a description, and the copy no longer says a token is optional
  (ADR-0171).
- Create Profile: the colour swatches were unnamed buttons with no selected state, and the
  "Profile Name" label was tied to nothing. The swatches are named and pressed-state buttons in a
  labelled group; the label points at its input; the dialog is named by its heading.
- Library → Sync: the button read "Sync Now" but was named "Sync library" (label in name).

axe passed all of these: it accepts a placeholder as a name, and the dialog is closed when the
accessibility spec runs. The new tests fail against the old components.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UpUascYWiPxuH2vtav72eV
@jeffcrouse

Copy link
Copy Markdown
Member Author

Fixed on this branch (f62e4b8), with changelog lines (61bada7): the sign-in screen for SERVER_TOKEN_REQUIRED, the labelled token field and updated copy, named and pressed-state colour swatches, the Profile Name label, and "Sync Now" named as shown. The four new tests that target these fail against the old components. Typecheck, the 450 frontend tests, boundaries, contracts and lint pass, with only the warnings main already has.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UpUascYWiPxuH2vtav72eV

@jeffcrouse
jeffcrouse merged commit 7c1e92d into main Nov 10, 2026
16 checks passed
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.

1 participant