LabelledCheckbox, self-hosted fonts, and automated NixOS plugin pins - #17
Merged
Merged
Conversation
Replace the separate Checkbox + label markup on the Register, Login and Terms pages with the hightide LabelledCheckbox component, which handles container-click toggling and accessible label association. On the Register and Login pages the checkbox now sits closer to the form fields above it than to the action buttons below, grouping it with the form. Self-host the Inter and Space Grotesk fonts. Previously the app referenced these font families by name (via hightide's typography utilities) but never loaded the font files, so they only rendered correctly on machines that happened to have the fonts installed locally and fell back to the system sans-serif elsewhere. Add @font-face declarations backed by the variable font files (bundled through Vite so the keycloakify build rewrites the asset paths for Keycloak's resources path), mirroring the setup used in helpwave tasks. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MkN8eGu18MoULRF4XLb5Y4
Deploying id-helpwave-de with
|
| Latest commit: |
277fb3e
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://59629187.id-helpwave-de.pages.dev |
| Branch Preview URL: | https://claude-labelled-checkbox-spa.id-helpwave-de.pages.dev |
Add scripts/update-nixos-plugin-pins.mjs, which pins the NixOS deployment doc to a GitHub release: it reads themeVersion from the release tag, derives spiVersion from the SPI jar file names, converts the sha256 digests the GitHub API reports per asset into SRI format (falling back to downloading and hashing when a digest is missing), and rewrites the pin block in docs/deployment-nixos.md. Each replacement is anchored to its jar file name and must match exactly once, so hashes can never be assigned to the wrong plugin and shape drift fails loudly. Exposed as `npm run update-nix-pins` with --tag, --check and --release-json flags. Wire it into CI: after create_github_release, the new update_nixos_plugin_pins job re-pins the doc against the freshly published tag and commits the result to main, so the checked-in Nix snippet always matches the latest release. Restructure docs/deployment-nixos.md around that motion: document the two version numbers (theme vs SPI), replace the placeholder-hash example with a real, verified pin block for v0.6.0 (release = ver: file: sha:), and rewrite the updating section as the end-to-end release flow. Fold the sha256-by-hand instructions into a fallback note. Restructure README.md: add a table of contents, group development and deployment sections, fix the duplicated section numbering, and document the release + pinning motion. Bump the version to 0.6.1 so merging this cuts a release that exercises the new pipeline end-to-end. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MkN8eGu18MoULRF4XLb5Y4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three related improvements: UI fixes on the login/account theme, the missing font files, and an automated release→docs pinning pipeline for NixOS deployments. Bumps the version to 0.6.1 so merging cuts a release that exercises the new pipeline end-to-end.
1.
LabelledCheckboxinstead of a separate checkbox + labelThe Register, Login and Terms pages built the terms/remember-me checkbox out of a separate
Checkboxplus a hand-rolled clickable<label>(with its ownrole/tabIndex/keydown wiring). These are replaced with hightide'sLabelledCheckbox, which already handles container-click toggling, keyboard toggling and accessible label association. The terms link stays a real<a>and keepsstopPropagation()so clicking it opens the terms without toggling the checkbox.Spacing: on Register and Login the checkbox previously sat ~2rem below the form fields but only ~1rem above the action buttons, so it visually attached to the buttons. It now sits ~1rem below the fields and ~1.5rem above the buttons, grouping it with the form.
2. Self-hosted fonts (Inter & Space Grotesk)
The app referenced the
Inter/Space Groteskfamilies by name (via hightide's typography utilities) but never loaded the font files — no@font-face, no font assets. The fonts only rendered on machines that had them installed locally and silently fell back to the system sans-serif everywhere else. This adds the variable font files undersrc/fonts/andsrc/fonts.csswith@font-facedeclarations, bundled through Vite so the keycloakify build rewrites the asset paths onto Keycloak's resources path — mirroring the working setup in helpwave/tasks.3. Automated NixOS plugin pins
docs/deployment-nixos.mdpreviously carried placeholdersha256-AAAA…hashes the operator had to compute by hand. Now:scripts/update-nixos-plugin-pins.mjs(npm run update-nix-pins) pins the doc to a GitHub release:themeVersionfrom the tag,spiVersionfrom the SPI jar file names, and SRI hashes converted from the sha256 digests the GitHub API reports per release asset (fallback: download + hash). Replacements are anchored to jar file names and must match exactly once — hashes can never land on the wrong plugin, and doc-shape drift fails loudly. Supports--tag,--check,--release-json.create_github_release, the newupdate_nixos_plugin_pinsjob re-pins the doc against the freshly published tag and commits tomain. The checked-in Nix snippet always matches the latest release — copy it as-is.docs/deployment-nixos.mdrestructured: the module example now uses therelease = ver: file: sha:pin block with real, verified v0.6.0 hashes (validated against the GitHub API asset digests), and the updating section documents the whole repeatable motion: bump version → CI releases → CI re-pins docs →nixos-rebuild switch.README.mdrestructured: table of contents, grouped development/deployment sections, fixed duplicated section numbering, new "Releases & version pinning" section.Testing
tsc --noEmit,eslint .— passvite build— succeeds; both.ttffiles emitted as hashed assets referenced from the built CSS--check(fresh/stale), missing-asset and SPI-version-mismatch error paths against the real v0.6.0 release data; the four SRI hashes in the doc match the GitHub asset digests🤖 Generated with Claude Code