Skip to content

💄♻️:draw the 404 action the way the site draws - #1878

Merged
openinf-commit-queue[bot] merged 1 commit into
livefrom
feat/theme-the-404-button
Aug 31, 2026
Merged

openinf-commit-queue[bot] merged 1 commit into
livefrom
feat/theme-the-404-button

Conversation

@DerekNonGeneric

@DerekNonGeneric DerekNonGeneric commented Aug 31, 2026 •

Copy link
Copy Markdown
Member

Drops the last Bootstrap component import and redraws the 404 action in
the site's own language.

85.1 KB, from 94.4 KB on live and 158.2 KB two changes ago — 46%
off the original.

Why it looked foreign

buttons cost 10.0 KB to style a single .btn on /404/, and the
rounded teal fill was the tell. This site draws in strokes and hard
edges:

element how it is drawn
the logogram ring fill="none", stroke="currentColor"
a heading a 1px rule running off beside it
.featured-link a 2px underline, arrow sliding on hover
.featured-cat chip square, monospace, uppercase, letterspaced

Nothing on the site is rounded, and nothing of consequence is a flat
fill. The button was both.

What it is now

A square box with a 2px edge and no fill, labelled in the same
monospace uppercase as the news chips, with a ← that slides back
under the pointer the way the → on a post slides forward. Hover and
:focus-visible fill the box with ink and turn the label to parchment
— the chip, inverted.

role="button" came off. It is a link that navigates, and the role
told assistive tech to expect something that acts in place.

Checked

  • nps test — all verify tasks pass. stylelint wanted a different
    property order and editorconfig-checker wanted the comment
    continuation at two spaces; both settled with format-scss, and the
    reorder was confirmed not to alter rendering.
  • 16 of 18 screenshots pixel-identical to live; the two that
    differ are /404/ at each viewport, which is the point.
  • Contrast 13.97:1 at rest and hovered, both directions.
  • Keyboard: reachable on the 6th tab, :focus-visible matches, and the
    fill applies once the 150ms transition settles.
  • prefers-reduced-motion: reduce drops both transitions, matching
    what _nav.scss and _home.scss already do.
  • No .btn rules remain in the built CSS.

Summary by CodeRabbit

  • Style

    • Redesigned the 404 page’s “Back to Home” link with a bordered, uppercase appearance and arrow icon.
    • Added hover and focus states, including arrow animation.
    • Respects reduced-motion preferences.
  • Bug Fixes

    • Improved the 404 page navigation control after removing reliance on default button styling.

Bootstrap's button styles cost 10 KB to fill one rounded teal pill on
one page, and the pill was the tell: this site draws in strokes. The
ring is stroked rather than filled, a heading carries a rule beside it,
a link carries an underline under it, and nothing anywhere is rounded.

So the action is a square box with a 2px edge and no fill, labelled in
the monospace uppercase the news chips use, with an arrow that slides
back a little under the pointer the way the one on a post slides
forward. Hovering or focusing it fills the box with ink and turns the
label to parchment, which is the chip inverted. Both states read at
13.97:1.

The wrapper sizes the ghosted numerals at 10rem, so the font size here
is stated rather than inherited from it.

`role='button'` went with the import. The element is a link that
navigates, and saying otherwise told a screen reader to expect
something that acts in place.

Signed-off-by: Derek Lewis <DerekNonGeneric@inf.is>
Assisted-by: Claude-Code:claude-opus-5
@netlify

netlify Bot commented Aug 31, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for gh-pages-openinf ready!

Name Link
🔨 Latest commit 18cb490
🔍 Latest deploy log https://app.netlify.com/projects/gh-pages-openinf/deploys/6a9604848a43f10008a062ec
😎 Deploy Preview https://deploy-preview-1878--gh-pages-openinf.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Aug 31, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: e8446390-87cc-41cc-9687-7d54a575a420

📥 Commits

Reviewing files that changed from the base of the PR and between b1a3314 and 18cb490.

📒 Files selected for processing (3)
  • _assets/styles/_error.scss
  • _assets/styles/main.scss
  • collections/_pages/404.html
💤 Files with no reviewable changes (1)
  • _assets/styles/main.scss

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

The 404 page replaces its Bootstrap button link with a custom error-home link. New styles define its layout, visual states, arrow motion, and reduced-motion behavior. The Bootstrap buttons stylesheet import is removed.

Changes

404 Error Page Styling

Layer / File(s) Summary
404 home link markup
collections/_pages/404.html
The 404 page now uses an error-home link with a decorative arrow and separate “Back to Home” text.
Error home link styling
_assets/styles/_error.scss, _assets/styles/main.scss
The error link receives custom layout, typography, border, hover, focus-visible, arrow, and reduced-motion styles. The Bootstrap buttons import is removed.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 18cb4

This PR only restyles the 404 action and removes the final Bootstrap component import; the change is localized and validated, so no actionable merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title describes the main change: redesigning the 404 action to match the site's visual style. It is somewhat informal and includes decorative emojis, but it remains clear and related to the change…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title describes the main change: redesigning the 404 action to match the site's visual style. It is somewhat informal and includes decorative emojis, but it remains clear and related to the changeset.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/theme-the-404-button

Warning

Some tools did not complete. Review the errors below.

🔧 Stylelint (17.14.0)
_assets/styles/_error.scss

ConfigurationError: Could not find "stylelint-config-recess-order". Do you need to install the package or use the "configBasedir" option?
at getModulePath (file:///usr/local/lib/node_modules/stylelint/lib/utils/getModulePath.mjs:38:9)
at loadExtendedConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:285:21)
at extendConfig (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:252:25)
at async augmentConfigBasic (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:85:20)
at async augmentConfigFull (file:///usr/local/lib/node_modules/stylelint/lib/augmentConfig.mjs:138:24)
at async getConfigForFile (file:///usr/local/lib/node_modules/stylelint/lib/getConfigForFile.mjs:102:26)
at async resolveOptionValue (file:///usr/local/lib/node_modules/stylelint/lib/utils/resolveOptionValue.mjs:27:24)
at async standalone (file:///usr/local/lib/node_modules/stylelint/lib/standalone.mjs:127:22)


Comment @coderabbitai help to get the list of available commands.

@DerekNonGeneric DerekNonGeneric added the 🚀 Status: Commit Queue Land this pull request when its checks pass label Aug 31, 2026
@openinf-commit-queue
openinf-commit-queue Bot merged commit abf2e28 into live Aug 31, 2026
17 checks passed
@openinf-commit-queue openinf-commit-queue Bot removed the 🚀 Status: Commit Queue Land this pull request when its checks pass label Aug 31, 2026
@DerekNonGeneric
DerekNonGeneric deleted the feat/theme-the-404-button branch August 31, 2026 22:55
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