Skip to content

Responsive fix, design system, SEO, brand mark, and creator page - #3

Merged
folathecoder merged 20 commits into
mainfrom
fix/responsive-docs-chrome
Oct 14, 2026
Merged

folathecoder merged 20 commits into
mainfrom
fix/responsive-docs-chrome

Conversation

@folathecoder

Copy link
Copy Markdown
Collaborator

Fix the mobile layout, then rebuild the site's visual and SEO foundations on one token layer. 19 commits, each reviewable on its own; the batches are tokens, primitives, shell, pages, copy, cleanup, SEO, content, brand, creator.

Layout and chrome

  • Docs content collapsed to 0px below 1024px: the sticky page selector was a w-full child of the docs flex row. The layout now stacks below lg. This bug is live on agentling.dev today.
  • The mobile sheet rendered off screen because its parent's backdrop-filter became the containing block for a fixed element. It is portaled to body with a focus trap, scroll lock, and Escape to close.
  • The header's overflow-hidden clipped the mobile menu and the version menu.
  • The compact theme toggle uses resolvedTheme, so it works under "system".

Design system

  • Semantic tokens only (surfaces, borders, three text levels, accent, success/warning/danger), two tuned palettes, two radii, two shadows, a nine-step type scale with an 11px floor. Stock Tailwind palette, radius, shadow and text scales removed.
  • IBM Plex Sans replaces Inter, self-hosted and Latin-subset via next/font with font-display: swap. JetBrains Mono for code.
  • Search palette, sidebar, table of contents (inline below xl), header, pages, pager, feedback row and 404 restyled. Press and hover states only; nothing animates on the palette or theme switch.
  • Dead components, the motion dependency and the phantom /feed.xml link removed. <main> landmark and a one-line footer on every page.

SEO

  • pageMetadata is the single source of title, description, canonical, Open Graph and Twitter tags; title template %s | Agentling.
  • metaTitle and metaDescription frontmatter on all 20 content pages, length-checked by the validator. Dates from git per file.
  • JSON-LD: Organization, WebSite and SoftwareApplication site-wide; TechArticle with a full BreadcrumbList on docs; WebPage elsewhere. Validated on validator.schema.org with 0 errors, 0 warnings.
  • Sitemap lists the 22 indexable pages with git lastmod. / and /docs are 308s, /docs/<section> redirects to its first page, /feed.xml, /blog and /roadmap redirect to their replacements. The 404 is noindex.

Brand

  • "Steps" mark replaces the emerald terminal chevron. icon.svg follows the colour scheme; favicon.ico, apple-icon.png and the PWA icons are generated from the same geometry by scripts/generate-icons.mjs (sharp, devDependency). Manifest and theme colours come from the tokens.
  • Open Graph card redrawn on the paper ground with the mark, no gradient.

Creator page

  • /creator: first-person profile of Folarin Akinloye, creator of Agentling, with ProfilePage and Person JSON-LD sharing one Person @id with the software's creator and every doc's author. Indexable and in the sitemap, but deliberately absent from navigation, footer, search and internal links. Documented in the README.

Verification

  • Lint, type check, content validation and next build pass. There is no test suite in this repo.
  • Playwright sweep of 24 routes at 320, 375, 768, 1024, 1280 and 1920px: no horizontal overflow, no console errors, 11px minimum text.
  • Keyboard-only runs through the palette, sidebar, theme control, code copy and mobile sheet. Reduced motion exercised.
  • Lighthouse mobile, same page, same local server, before vs after: performance 96 vs 96 to 99, accessibility 96 vs 100, best practices 100 vs 100, SEO 100 vs 100, CLS 0.

After merge

  • Add a www DNS record and 301 to the apex at the host; www.agentling.dev does not resolve.
  • Submit the sitemap in Search Console and run the Rich Results Test on the live URLs.
  • Run node scripts/generate-icons.mjs whenever the mark changes.

🤖 Generated with Claude Code

folathecoder and others added 20 commits October 14, 2026 13:43
Docs pages were unusable on phones and tablets: the sticky mobile page
selector is a w-full child of the docs flex row, so it took the whole
width and the article collapsed to 0px (one word per line, 11k px tall).
The layout now stacks in a column below lg.

- Portal the mobile docs sheet to body. Its parent bar uses
  backdrop-filter, which made it the containing block for the fixed
  sheet, so the sheet rendered thousands of pixels off screen. Lock
  body scroll while open, close on Escape and on route change.
- Drop overflow-hidden from the 56px header; it clipped both the
  mobile menu and the version dropdown. The mobile menu is now an
  absolute panel below the bar, and the dropdown closes on outside
  click and Escape.
- Compact theme toggle uses resolvedTheme so it works under "system".
- Search trigger is icon-only below sm instead of wrapping its label.
- Changelog search results and the version menu deep-link to the
  release anchor.
- Copy-code buttons and heading anchors stay visible on touch devices.
- Feedback widget no longer pretends to submit a comment: "No" links
  to a pre-filled GitHub issue for the page.
- Remove the phantom /feed.xml autodiscovery link and blog branch.
- Delete unused footer, hero, terminal demo, code tabs, reveal, share
  links, brand icons, and blog types; drop the motion dependency.
- Align manifest and viewport theme colors with the real palette.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
The three-column header used justify-between, which left the search
icon floating in the middle on phones and the field centred on tablets.
Below lg the search now sits flush with the GitHub, theme, and menu
buttons; from lg it keeps the centre column.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Light and dark become two tuned palettes defined once in globals.css and
mapped into Tailwind's theme. The stock colour, radius, shadow, and text
scales are dropped so only the semantic tokens exist: three surfaces,
two borders, three text levels, accent, and success/warning/danger. Two
radii (4px controls, 8px panels), two shadows, and a nine-step type
scale with an 11px floor.

Inter is replaced by IBM Plex Sans (OFL 1.1, matching the social cards),
self-hosted and Latin-subset by next/font with font-display: swap.
Code blocks use one dark theme in both modes. Prose, tables, callouts,
and code blocks are restyled from the tokens. A Button recipe is added
for the component batch. Legacy token names are aliased for now.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Theme toggle becomes a 4px segmented control with a resolved-theme
single button below sm. Copy buttons move their styling into the
[data-copy-button] CSS and announce "Copied". The search palette gets
the 8px panel, dialog shadow, 48px field, 40px rows, a combobox and
listbox contract, Tab trapping, focus return to its trigger, a platform-
aware shortcut hint, and distinct empty and unavailable states. The
feedback row drops the fake comment form.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Header drops the one-item version menu and the Python badge; the
version is a chip linking to its changelog entry. Sidebar rows are 32px
with an inset accent bar on the current page, section eyebrows replace
the Diátaxis pills, and the mobile sheet moves focus in, traps Tab, and
returns focus on close. The right rail keeps Edit and Report links;
below xl an inline "On this page" disclosure appears under the lede
instead of the outline disappearing.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Doc pages show one neutral eyebrow for the Diátaxis kind instead of a
tinted pill, drop the per-page "Python 3.11+ • MIT" strip, gain the
inline table of contents below xl, and use 8px pager panels. Changelog
and standalone pages share the 760px column and the lede style. The 404
page states the problem plainly and offers one link.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
The site tagline names what the framework is instead of listing
adjectives. The guides section description lists the guides. "What this
unlocks" becomes "What this enables". Search empty state and 404 copy
shipped with their components.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
No component references the old token names any more, so the aliases
go. The pageMetadata docblock sits on pageMetadata again.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Lighthouse flagged three controls whose aria-label did not contain their
visible text (version chip, search trigger, Copy as Markdown) and TOC
links under 24px tall. Visible text now provides the name, shortcut
hints are decorative, and TOC rows are 24px.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
…ects

pageMetadata takes a page kind and is the only source of title,
description, canonical, Open Graph and Twitter tags; the title template
is "%s | Agentling" with a descriptive site default. Doc and site pages
read optional metaTitle and metaDescription frontmatter and fall back to
their visible title and lede. Publication and modification dates come
from git per file.

Structured data: a site-wide Organization, WebSite and SoftwareApplication
graph in the root layout; TechArticle with dates, image and a full
breadcrumb on doc pages; WebPage with breadcrumb on changelog, contributing
and legal pages; none on the 404, which is now noindex with its own title.

The root and /docs become permanent redirects, /docs/<section> redirects
to the section's first page, and /feed.xml, /blog and /roadmap redirect
to their replacements. The sitemap lists only the 21 indexable pages with
git lastmod and no changefreq. The content wrapper is a <main> landmark
and a one-line footer reaches legal pages from every route.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Adds metaTitle and metaDescription frontmatter to the 17 doc pages and
3 site pages, written for readers: specific, within 60 and 155
characters including the title suffix. Visible titles and ledes are
unchanged. The validator enforces the lengths.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
…tokens

Replaces the emerald terminal chevron with the Steps mark: three bars of
decreasing length, the last in accent, drawn on a 32-unit grid with a
16-unit drawing for the favicon size. icon.svg follows the viewer's
colour scheme; favicon.ico (32 and 16), apple-icon.png (180), and the
192, 512 and maskable 512 PWA icons are generated from the same geometry
by scripts/generate-icons.mjs using sharp (devDependency). The manifest
lists all of them with the paper ground. The header wordmark carries the
mark, and the Open Graph card is redrawn on the paper ground with the
mark, a mono eyebrow, the title, description and a hairline footer, with
no gradient or glow.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
codeRepository is a SoftwareSourceCode property; the schema.org
validator warned on it.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
…ly unlinked

/creator is a first-person profile establishing the creator of Agentling
and his work on agentic systems, AI product engineering, and reliability.
Every claim is drawn from folarin.dev, the GitHub profile, or the
Agentling repository and docs. Exact title and description from the
brief, a typographic Open Graph card, and ProfilePage + Person JSON-LD.

The Person entity now has a stable @id shared by every graph on the
site: the site-wide SoftwareApplication names it as author and creator,
and TechArticle authors reference it.

The page returns 200, has a self-referencing canonical, and is listed in
the sitemap, but is absent from navigation, the footer, and both search
indexes, with no inbound internal links. The README documents this as a
deliberate choice.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
CI's lint run flags <a> for internal routes.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
@folathecoder
folathecoder merged commit 2d56e01 into main Oct 14, 2026
1 check 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