UI polish, colour themes, and a redesigned landing - #2
Conversation
Bump topic-cloud pill font (0.78→0.85rem) and padding for a larger tap target. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
The keyboard-driven terminal has no place on small touch screens, so hide the launcher and window below 34rem. JS still loads but the UI stays gone; !important beats the hidden-attr removal JS does on enhance. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Make the site header position:sticky so it stays at the top while scrolling. Opaque bg and z-index so content scrolls cleanly underneath. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Topic pills, the console launcher, and the console bar buttons now fill with the accent colour on hover/focus, flipping text to a new --accent-fg var. Adds a 0.15s transition. Inline nav and prose links stay colour-only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Bump list title to 1.25rem. On hover the whole row fills with the accent colour, text flipping to --accent-fg. Negative inline margin cancels the new padding so text stays aligned at rest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Add two rich, multi-hue themes (paper, dracula) pickable from the console (`theme set <name>`), replacing the earlier monochrome set. Introduces: - a pop palette (--c-red..--c-pink) defined on light/dark bases so every theme has vivid source colours, feeding UI, selection, and mermaid - semantic sets (--link, --pill, --row, --term, --focus, each with a fill-fg) so a theme can tint each surface independently — e.g. dracula keeps the selection grey but makes pills green, rows purple, console pink - ::selection highlight and per-theme --selection / --code vars - mermaid diagrams tinted from the active theme's CSS vars (theme: base) The pre-paint script now applies any saved theme, not just light/dark, so colour themes no longer flash on load. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Switch Chroma to class-based output (markup.highlight.noClasses = false) and map the token classes to the pop palette, so fenced code blocks colour themselves per theme instead of using Chroma's baked-in hex. Also tint inline `code` with the theme's --code var. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
The mobile hide keyed on max-width: 34rem, which also fired on a narrow desktop window and made the console vanish. Key on pointer type instead (hover: none and pointer: coarse) so only real touch devices lose it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Add a Themes section to CLAUDE.md covering every colourable surface (core, selection, inline code, syntax, mermaid, pop palette), the semantic sets table, and a recipe for adding a new theme. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Remove the toggle button next to the site title and its inline script. Theme now follows the OS by default (no data-theme), and is changed via the console (`theme set <name>`); persistence/no-flash stays in the baseof pre-paint script. Deletes the now-dead .theme-toggle CSS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Move the console partial from index.html into baseof.html so the launcher and window appear on all pages (posts, lists, taxonomies), not only the home page. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
A post full of fenced code (Python, JS, Go, Rust, Bash, CSS) plus inline code, so the theme-aware syntax highlighting has somewhere to show off. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Switch the row flex alignment from baseline to center so the small mono date sits mid-row instead of low on the title's baseline. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Each named theme now lives in assets/css/themes/<name>.css instead of main.css. baseof.html concatenates main.css + every theme file (themes last, so their :root[data-theme] blocks still win by source order) into one fingerprinted bundle via resources.Match + resources.Concat. New themes are picked up by the glob automatically. Docs updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Blush ground, burgundy ink, all pinks + rose/crimson pops (no purple). Adds valentine.css and registers it in the console theme modes + self-check. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Pull the footer out of the centred content column and pin it to the viewport's bottom-left (mirroring the console launcher on the right). Remove the border-top divider. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Paginate posts on the home page via .Paginate with pagerSize = 12, plus a minimal mono pager (newer / n / total / older) that only renders past one page. Keeps long archives from turning into an endless scroll. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Shell-style recall: ArrowUp steps back through the session's command history, ArrowDown forward, and down past the newest clears the line. Submitting resets the cursor. Caret jumps to end on recall. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
The fixed footer overlapped the tail of long pages, and post-nav sat too far down. Add 6rem bottom padding to main so content scrolls clear of the footer, and drop post-nav margin-top 4rem -> 2rem. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
The home page duplicated /posts/: both showed the topic cloud and the full post list. Make the landing distinct — a greeting, the latest post featured (large title, date, topics, summary excerpt, read link), a short "more writing" list of recents, topics, then a link to the full archive. Move the paginator to /posts/ (list.html) so the firehose and pager live in one place. Shorten the hero description copy. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
`relURL "/"` returns a bare "/", so on a project-subpath deploy (e.g. GitHub Pages at /basic/) the title linked to the domain root and broke the site. Use site.Home.RelPermalink, which prepends the subpath like the nav links already do. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Make the landing greeting pop and retint per theme. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW
Review — UI polish, colour themes, redesigned landingReviewed against frontend-UI / accessibility and JS best-practice lenses. Solid PR — the theme "sets" architecture is clean, the self-check is extended, and the Accessibility1. Home page has no {{ with $intro }}<h1 class="intro">{{ . }}</h1>{{ end }}2. Syntax + comment colours fail WCAG AA on the light themes. In UX tradeoffs (deliberate — flagging so they're conscious calls)3. Touch devices lose all manual theme control. The console is hidden on touch and the toggle was removed, so on mobile the theme is 100% OS-driven with no in-page override. The PR body frames this as intentional — noting it here. 4. Fixed footer can overlap content. JS / robustness (nits)5. Pre-paint script trusts any stored theme string. 6. Arrow-key Keep as-is (good)
Fixes for #1, #2, and #6 in a follow-up PR. 🤖 Generated with Claude Code |
Addresses PR #2 review: - home page had no h1 (top heading was h2) — add a visually-hidden h1 with the site title so the document outline is complete without changing the front-door layout - light-base + paper syntax yellow/green and valentine/paper muted were below WCAG AA 4.5:1 as code text — darken them - parenthesise the ArrowUp/ArrowDown keydown test for clarity Claude-Session: https://claude.ai/code/session_01RbMGFzZfHUfbhid95FjBKb Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Branch of UI fixes plus a multi-theme colour system.
UI
Themes
paper,dracula,valentineassets/css/themes/*.css, auto-discovered and concatenated aftermain.cssCLAUDE.mdLanding & console (this round)
/posts//posts/is the full archive: paginator moved hereVerification
node assets/js/console.jsself-check passes;hugo --minifybuilds clean (23 pages). Not yet eyeballed in a live browser.🤖 Generated with Claude Code
https://claude.ai/code/session_01Bgxxw4baXATznPYP4ARHzW