Day 3 of Roadmap Month, and a theme emerged without anyone planning it. Almost every fix today was something that looked fine and was not: a button that did nothing when clicked, a form that said “saved” after saving nothing, a counter that said zero while the thing it counted sat right there, a link pointing at a page that has never existed.

None of these break a page. They break trust, which is worse and harder to notice.

Poll votes can be changed

Reported plainly: click the wrong option by mistake and you live with it forever.

That was exactly true. The vote was written once, and every attempt after it came back with “you have already voted” for the life of the poll. One misclick, permanent.

Votes now move. Pick another option and the vote goes with it, right up until the poll closes. Results appear as soon as you have voted rather than after, and each bar stays clickable, with a quiet line underneath: changed your mind, pick another option. Behind it the database still holds exactly one vote per folk per poll, so the totals stay honest and nobody can stuff a second one in.

Two additions came along with it:

Who voted. Every poll now shows the folks who took part, faces linking to their profiles. Deliberately for the poll as a whole, never per option: a poll is a ballot, and folks answered it expecting the room to see the totals, not to see who picked what.

A Polls tab. Latest, Following, Bookmarks, and now Polls, which gathers every poll on WPFolks, open and closed, in one stream.

Forms that said yes to nothing

The GitHub username field accepted an empty submission and reported “GitHub username saved.” for a username nobody had typed. There was no validation of any kind, on either side.

Empty now means two different things, because it genuinely does. With nothing stored, you missed the field, and it says so. With a username already stored, clearing the box is the only way to remove a typo, so that is treated as a removal and says that instead. Format checking came too: letters, digits and single hyphens, up to 39 characters, which is GitHub’s own rule. Pasting a full profile URL no longer sails through.

The Apply Filters button on the listing sidebars was reported as redundant, and it was. Those filters apply themselves the moment you tick a box, so the button underneath applied filters that were already applied. It is gone when JavaScript is running, and still there, still working, when it is not, because then it is the only way to filter anything. Eight pages carried it: plugins, themes, ideas, deals, jobs, snippets, resources and partners. Folks and repositories keep theirs, since those genuinely need an explicit submit.

The Cancel button on Suggest a video did nothing at all. The form’s own stylesheet was overruling the attribute the script was setting, so cancelling changed a value nobody could see. Cancel now closes the form and empties it, which is what cancelling means.

Counted wrong

The dashboard banner that reads “1 submission awaiting review” stayed silent for some folks whose submission was plainly sitting in review.

It counted by author alone. But being the author is only one of the ways a submission belongs to you on WPFolks: a business also belongs to its team members, an idea to whoever claimed it, an event to the address that submitted it. My Submissions already knew all of that. The banner did not, so the two pages disagreed about the same submission. They now ask the same question the same way.

Things you look at

The repositories cards fell apart on a phone when a project carried a maintainer flag. Four things sat in one row that refuses to wrap, two of them fixed width, adding up to more than a phone’s card is wide, so the flag landed on top of the activity pill and pushed the GitHub button off the edge. The row wraps now.

The leaderboard appeared to have a large empty gap before Monthly Champions. It was the opposite: the board had no bottom spacing at all, so the next section’s background began level with the final row and sliced it in half. It now ends 48px before the next thing starts.

The Connect a repository panel rendered light in dark mode. Its background was set inline, which puts it out of reach of the dark layer entirely, with a light colour as its fallback. It is styled by class now, with an explicit dark rule, like everything else on that page.

A link to nowhere

The weekly update email has been sending folks to /wordcamps/ for months. There is no such page. Every single click landed on a 404.

The link now points at the events page filtered to WordCamps, which is where the WordCamp list has always lived. And because the emails already sitting in inboxes cannot be edited, /wordcamps/ and /wordcamp/ now redirect there too.

Closed without a commit

The report about the feed’s editor tabs overlapping post content while scrolling is the same issue fixed on Day 2, when the sticky tab strip was taught to follow the site header instead of hovering where the header used to be. Nothing further was needed.

Keep them coming

Ten releases, almost all of them from folks who noticed something was slightly off and took the time to write it down. A tooltip that never opens and a vote that cannot be changed do not show up in any dashboard. They only show up when someone says something.

Put it on the roadmap.