v4.0.1 Trim the release title instead of turning jq's newline into a space
Fixed
- ci: Trim the release title instead of turning jq's newline into a space 64dc05d
v4.0.0 New UI
A redesign of the whole site. Every public page is redrawn in eight greys, set in Geist and dark by default, with colour left to the work itself; every page has a Markdown twin and the site publishes llms.txt. This release also adds these patch notes, database backup and restore in the admin, employment details on the CV, and safer admin saves.
New
- site: Lay the Foothill foundation, navbar and home page 0d0b139
- site: Redesign the about and open-hire pages c4b7e8a
- site: Redesign the work and writing pages f395045
- site: Redesign the dashboard as an instrument panel 2aab34f
- site: Redesign the guestbook, contact, sign-in, legal and error pages 64360e7
- site: Redraw the site around the portrait, image-led cards and one motion layer 3099114
- site: Animate every disclosure, steady the reveals and settle the type 9c51590
- site: Size the cursor disc to the text under it c8c8883
- site: Choose the photo or a faceless avatar, and match the favicon to the mark 49b7a74
- site: A question-mark avatar, a tighter cursor and no click sparks fd76068
- site: A blurred portrait option, and facts beside every page heading 8eed08e
- site: Redraw every public page in the grayscale design 2f431af
- site: Give every page a Markdown twin and publish llms.txt db9f68b
- site: Generate the CV, draw sharing cards and measure icon contrast c16cc6e
- site: Refresh project links, previews and copy, and polish the CV b78aba0
- site: Add the CV as Markdown, rename the roles and smooth the dashboard 357216b
- about: Add organization roles, page skills and group the job hunt by year a8890fd
- blog: Draw post covers in the site's own design 93af9d9
- projects: Filter Work by every status in the vocabulary 63cdbeb
- blog: Sort Writing four ways and show it as a grid or an index 2c1e4ea
- settings: Choose how pictures are resized: none, Next.js or wsrv.nl 75ed666
- settings: Describe every vocabulary value, and read ordered ones in order 7e8d34f
- work: Sketch the kind of work where a project has no picture, and say what a status means a32b037
- filters: Put the Work and Writing filters behind a Filters button, and shrink the chips 9c9edaa
- cv: Show employment type, work mode and location under each role d472e92
- patch-notes: Record every push to main as a release, and show them on the site 057baff
- admin: Back up the database to one file and restore it 23f424a
Fixed
- site: Judge a GET form by where it goes, not by its action's scheme 36f1d74
- security: Strip outline tags to a fixed point and patch source-map-js 3fbeced
- site: Open the mobile menu after a scroll, and keep the cursor sharp 0db551d
- site: Close four code-scanning findings b0c9f8d
- site: Fix the stat tiles, footer word, back-to-top ring and dashboard boxes 0a76c3f
- security: Refuse tab-split redirects, throttle posting and enforce frame, base and object limits b104cc0
- site: Stop the heatmap mask clipping edge squares and keep /cv.pdf crawlable 5893305
- site: Drop panel fills, fix copy labels, stale errors and stray progress 4f5ce56
- site: Rename the back-to-top ring so a Tailwind utility stops boxing it 804495e
- dashboard: Pad the stats cells so text clears the rules between them 608b69b
- gallery: Keep the thumbnail strip six columns wide whatever the image count cab17f3
- seo: Let crawlers fetch /static/ so the share image shows in previews 744a201
- ui: Close menus, sheets and popovers when their route is hidden ee8947e
- admin: Make an untouched save write nothing, and stop it duplicating rows b995335
- cv: Keep every CV link current, and stop entries drawing over their dates 2624963
- admin: Keep a project's tech stack in order when it is saved 1d5e832
- cv: Span an organisation's roles by their dates, not their order 761190b
- admin: Check a record's inline rows before saving it, not after dbce8df
- admin: Write a save's record, join rows, child rows and descriptions in one transaction 5802028
- ci: Take the empty expression out of the release script's comment 77ec3f1
- ci: Reach the site through its Vercel address, past Cloudflare's bot challenge 3b24bd4
Security
Faster
- site: Sized avatars, a contents list on long posts and steadier small targets 2680cd5
Under the hood
Design
- site: Bare, larger palette icons and no focus ring on its search box 28e529a
- contact: Put the form's fields back in bordered boxes a60c91f
- contact: Keep focused fields rounded and add placeholders 9ffbfe4
- home: Hide the portrait on phones ea97e65
- home: Set the name at the site's title size, on one line, with the tagline below the role 3feeec4
- admin: Dress the admin in the site's palette, type and buttons, and redraw the toast 51a3507
- site: Drop the warm accent for ink, fill logo tiles, and invert the text selection d06e5de
- admin: Lay the admin out as the public pages are, without cards 89df95f
- site: Set the site in eight greys, Geist and dark by default 56d5e5b
- buttons: Size buttons by the Filters button, and shrink the sign-in and hero buttons 1b1bc83
Documentation
Tests
Maintenance
- blog: Drop CRON_SECRET from the publish endpoint d9c1e7b
- site: Register the CV term list and tidy two examples 81edba0
- site: Remove code nothing calls and fix the publish workflow 189877e
- scripts: State the cover script's reason, not its lineage 199d69e
- deploy: Rebuild so the 13 newly published projects appear 5421700
- deploy: Rebuild with wsrv.nl as the image service d6d7a3d
- claude: Track the shared Claude Code settings, and leave attribution off 5f061cb
- ci: Drop unused scheduled-publish workflow ed8ee0f
- blog: Remove unused scheduled-publish endpoint 7f42de2
- release: Release everything since the last tag, with no step by hand f3a676b