Commits
The home agenda, per-county filler and the account menu
Home Wednesday: the agenda rebuilt with three featured and six upcoming events, county-aware filler, and a new account menu in the navigation.
Home Wednesday. Eight commits and two big topics: the agenda section, rebuilt from top to bottom, and account navigation. In between, three filler bugs worth more than the rest together.
Three featured and six upcoming
The home agenda section was a flat list. It now has structure: three featured agendas in a row on top and six upcoming events below. More agenda, less page: the grid fits without crowding the rest of the sections.
The filler, county by county
When a county has no events of its own, the grid fills with the latest agendas held. The code asked for these agendas with a single query and one global limit, and that is where the problem appeared: one dense county exhausted the limit on its own and left the others out of the list. The county with the most movement was eating everyone else's filler.
The fix: one query per county. Each county gets its slice of the limit and none goes unrepresented.
And right away, the second bug, a classic: an off-by-one in the filler loop. Without the cut, the last lap of the loop went past the total and the grid painted one extra event:
while (omplir.length < buit && queda) {
queda = false;
for (const c of falten) {
if (omplir.length >= buit) break;
const p = pools.get(c);
One line. The kind of error you don't see until someone counts the cards with a finger.
When a county has nothing in the agenda
Some counties have no upcoming events. Before, the row just stayed empty: a hole in the home page. Now, if there is nothing coming, the row shows a CTA to the agenda so nobody finds a dead space, and the filler uses the latest agendas held with a maximum of four per county, so the same ones don't always repeat. The upcoming-events limit went from six to nine.
In passing, two fixes you don't see: the grid gaps are now mapped to {slug, label}, the type the FeaturedAgenda component expects, and the CTA row carries a double class so the mobile media query brings it down nicely.
Account menu, and out with the Subscribe button
Navigation had the second half of the day. The account button now opens a menu with profile, password, plans and sign out. The BottomNav gains a More button with the remaining sections: they don't all fit on mobile and that's fine. And the header got lighter: the logo keeps only the PX letters and the Subscribe CTA is gone — it already lives on the home page and the plans page.
The home page is starting to stand on its own: agenda, upcoming events and account, everything in its place.
Evening odds and ends
The day hadn't closed. The getaway cards lose the duration: one less piece of data in the RouteCard that added nothing. The news list gains the county filter by reusing buildBaseWhere and the existing FilterBar: shared machinery starts to pay back. And the ProfileCards in the interviews list now show the featured image: a list with faces reads completely differently.