Careers unification, fake testimonials removed, button hover bug fixed, /search/ sitemap completed
What was done
1. Careers — unified all 5 roles
src/pages/careers/index.astro previously had the PE role styled differently from the other four (specific salary “$110k–130k + bonus” vs generic “Competitive”; CTA “Read the role →” via a built: true flag vs “Get in touch →” for the others). All 5 roles now show:
- Comp: Competitive + bonus
- CTA: Get in touch →
Removed the built flag and the conditional render. Hrefs preserved (each role still links to its own detail page).
2. Project details — removed 4 fake testimonials
The 4 project markdown files that had hand-written placeholder testimonials attributed to “Developer Partner” had their testimonial: blocks deleted entirely:
src/content/projects/swainsons-hawk-arbor.mdsrc/content/projects/foxcroft.mdsrc/content/projects/jump-creek.mdsrc/content/projects/ledgestone-plaza.md
The render template (src/pages/projects/[slug].astro) is unchanged — it already conditionally rendered {data.testimonial && (...)}, so missing testimonials just don’t render. The other 2 project markdowns (gander-creek-north, gander-creek-south) didn’t have testimonials.
3. Button hover bug — .btn-primary text invisibility
Symptom: On project detail pages, the “Request a parcel analysis →” CTA showed blue text against a blue hover background — invisible.
Root cause: .side-card a (in src/pages/projects/[slug].astro) sets color: var(--color-precision-blue) for inline links. CSS specificity (0,1,1) beats .btn-primary’s color: var(--color-white) (0,1,0). The button text was already blue at base, just barely visible against the black .cta-card background. On hover, the button background flipped to precision-blue too — text and background both blue = invisible.
Two-part fix:
- Global change (
src/styles/global.css):.btn-primary:hovernow inverts to soft-white background + explicit black text (was: blue background, color inherited). This makes the hover treatment robust to any parent context that overrides link color — light bg + dark text reads under almost any cascade. - Targeted override (
src/pages/projects/[slug].astro): Added.cta-card .btn-primary { color: var(--color-white); }and.cta-card .btn-primary:hover { color: var(--color-black); }to defeat.side-card acolor inheritance specifically on the project-page CTA.
Per Ryan’s design preference: “turn button white/grey on hover inline with design tokens” — used --color-soft-white (#F2F2F2) for the hover background.
4. /search/ sitemap completed
Audit revealed ~30 real pages were missing from the curated sitemap on /search/ (the no-JS fallback when Pagefind isn’t available). Added:
- About column:
/about/bailey/(the pillar page) — was completely absent - Community column:
/community/westbilt/— gained a sub-list - Careers column: all 6 sub-pages —
/careers/professional-engineer/,/careers/civil-project-engineer-eit/,/careers/land-use-planner/,/careers/civil-engineering-intern/,/careers/bookkeeper-office-manager/,/careers/growth/ - Service Areas column: changed
counties.slice(0, 2).map(...)tocounties.map(...)so all 6 counties enumerate their cities, not just Ada and Canyon. The previous “Other Counties” flat-list block was replaced by full enumeration. This adds the 11 stub city pages enriched earlier today (Blaine 4, Owyhee 3, Elmore 2, Boise County 2) plus all the existing Ada/Canyon non-rich city pages - Dev.IQ FAQs: added hardcoded
<li>for/dev-iq/faqs/feasibility-studies/(a one-off.astropage that bypasses the FAQ collection and so wasn’t picked up by the dynamic loop)
Re-audit after rebuild: zero real pages missing from /search/ (excluding /log/ devlog entries and /home-test/, which are intentionally not in the sitemap, and the noindex-redirect flat-slug aliases like /service-areas/boise/).
5. CLAUDE.md — convention for future page additions
Added a new top-level section “When adding a new page” to CLAUDE.md documenting:
- The
/search/sitemap is NOT auto-generated for hardcoded pages — only collection-backed lists (FAQs, projects, team) andcountiesfromsite.tsupdate automatically - Whenever a new public page is added, the agent must update
src/pages/search.astroin the appropriate column - Specific placement guidance per page type (service, service-area, career, community, top-level, one-off FAQ, About sub-page)
- A spot-check requirement: verify by
grepagainstdist/search/index.htmlafter build
Also clarified that Pagefind itself reindexes automatically on every npm run build via the postbuild script — no manual step needed for the search-input itself.
Why
User listed five tasks in one message, all small but each affecting either user-facing content (careers, testimonials), a real visual bug (hover invisibility), site discoverability (search sitemap), or future-bot durability (CLAUDE.md). Batched them so a single build verifies all five.
Files affected
Modified
src/pages/careers/index.astro— all 5 roles unified;builtflag removed; CTA conditional removedsrc/content/projects/swainsons-hawk-arbor.md— testimonial block deletedsrc/content/projects/foxcroft.md— testimonial block deletedsrc/content/projects/jump-creek.md— testimonial block deletedsrc/content/projects/ledgestone-plaza.md— testimonial block deletedsrc/styles/global.css—.btn-primary:hoverchanged from blue→soft-white; explicitcolor: var(--color-black)on hoversrc/pages/projects/[slug].astro— added.cta-card .btn-primarycolor overrides to defeat.side-card acascadesrc/pages/search.astro— sitemap expanded (all counties enumerate cities; About/Community/Careers got sub-lists; Feasibility Studies FAQ added)CLAUDE.md— added “When adding a new page” section with /search/ update requirements
Created
src/content/devlog/2026-04-23-careers-projects-search-sitemap-and-button-hover-fix.md(this entry)
Pagefind reindex (Ryan’s question 5)
Pagefind reindexes automatically on every npm run build via the postbuild script in package.json (postbuild: npx pagefind --site dist). The build I just ran reindexed all 151 indexed pages including all the today-edited city pages, the Bailey pillar updates, and the new dev log entries. No manual reindex is needed — the build already did it.
Verification
- Build verify: 20/20 PASS
- HTML spot-check:
- Careers: 5× “Competitive + bonus” + 5× “Get in touch →” rendered in
dist/careers/index.html - Testimonials: 0 occurrences of “Bailey flagged the hawk” or “Developer Partner” in any
dist/projects/*/index.html - Hover fix: global
.btn-primary:hoverin compiled CSS =background:var(--color-soft-white);color:var(--color-black);.cta-card .btn-primaryoverrides present in scoped page CSS - Sitemap:
/about/bailey/,/community/westbilt/,/careers/professional-engineer/,/service-areas/blaine-county/bellevue/,/dev-iq/faqs/feasibility-studies/all confirmed indist/search/index.html - Pages-not-in-sitemap audit: empty (all real pages present, only intentional exclusions remain)
- Careers: 5× “Competitive + bonus” + 5× “Get in touch →” rendered in