Roadmap Month is a simple promise: thirty days, and every report that lands on the roadmap gets looked at, not queued. Day 2 closed fifteen of them.

Most of these are small. That is the point. A platform does not feel unreliable because of one big outage, it feels unreliable because of a tooltip that never opens, a tab that highlights the wrong thing, and an error page that blames you for something you did not do.

The 429 that said nothing

Three separate reports arrived about the same wall: submit a snippet, get a full-page “429 Too Many Requests. You have been rate-limited for making too many requests in a short time frame.”

That message was wrong twice over. Nobody was hammering anything. WPFolks caps how much one folk can submit in a rolling seven days, to keep the directories readable and the spam out, and the cap had been reached. There was even a friendly page explaining exactly that, written months ago. Nobody ever saw it, because it was sent with an HTTP 429 status and the host’s edge throws away the body of a 429 and substitutes its own generic screen.

A cap on how much you may post is a product rule, not a transport error. The page now carries its own meaning:

  • Which cap was hit, in plain language
  • How much of each cap is used, with a meter
  • The exact moment the next slot opens, calculated from when the earliest post in the window ages out
  • Somewhere useful to go next

Better still, the cap now announces itself before you type. Every submit form on the site, thirteen of them, shows a banner when the cap is full, and a heads-up when one slot is left. A blocked submit should never cost somebody a draft they just wrote.

Pagination that forgot how to count

Reported on Resources: search for something, and the result count reads “Showing 0” with the pagination gone, even though matches exist.

The cause sits in WordPress core. When a query returns a page with no rows, set_found_posts() returns early, leaving the total and the page count at zero. Any listing where a search or filter shrinks the results below the page you are standing on then claims there is nothing there and drops its own navigation, stranding you.

The fix is a shared helper, and the reporter asked for a cross-check across the whole site, so it went everywhere: resources, themes, plugins, jobs, businesses, snippets, ideas, deals, partners, folks, speakers, repositories, photos, events, past Academy sessions, submissions, the release gallery and global search. Eighteen listings, one behaviour.

Forms that said yes to nothing

The business listing form marked six fields as required with an asterisk and then accepted an entirely empty submission. The form carried novalidate, which switches off the browser’s own enforcement, and the handler only ever checked the business name.

Both halves are now real. The server validates every required field, checks that a website address and an email are shaped like one, and sends you back to the form with each problem marked inline and everything you typed still in place. The browser catches the same rules first so the answer arrives beside the field rather than after a round trip.

Things you look at

Dark mode, CLI category. The Academy grid tints each card from its track colour. CLI was seeded as near black, which in dark mode landed within three points of the page behind it. A card that is the same colour as the background is not a card.

Folks page tooltips. Hovering a Verified or Expert badge showed an empty grey sliver. The bubble was being drawn inside two boxes that clip: a name line that truncates after two lines, and a card that hides its own halo. It is now drawn outside the card entirely and kept inside the edge of the screen, so it shows in full wherever the badge happens to sit.

Badges page tabs. Clicking Streaks opened Streaks and left Recognition highlighted. The scroll spy measured from a fixed offset that no longer matched where a jump actually lands. Simulated across the page, fourteen of the fifteen tabs were lighting the wrong one; Streaks was simply the one somebody clicked.

Community feed tabs. The Latest / Following / Bookmarks strip appeared to float over post images. It was pinned below a header that retracts as you scroll down, so once the header left, a band of the post showed above the strip. The strip now follows the header.

Academy request cards lost their alignment as soon as Edit and Delete appeared, and the TV page rendered the selected category as light text on white. Both now hold their shape and their contrast.

Two done by hand

Not everything needs a release. Address autocomplete is working again, so typing a location suggests real addresses instead of leaving you to spell it out. And the pages that were missing a meta description now have one: themes, speakers, Academy, TV, shipped, badges and roadmap. Nobody reads a meta description on the site itself, which is exactly why they go missing. They are what a search result shows before anyone decides whether to click.

Two that needed no code

Not every report becomes a commit. The pending snippet line on profiles was already fixed in an earlier release, confirmed by measuring the actual contrast rather than trusting the screenshot. The Community feed error on posts with images is gone since the feed rewrite, verified end to end.

Reporting something that turns out to be fixed is still useful. It is how anyone finds out.

Keep them coming

Fifteen down, and nearly all of them came from folks who took the time to write up what they saw, often with a screenshot or a recording. That is the whole engine.

Something broken, slow, or just annoying? Put it on the roadmap.