Deploy to Production on Develop Push / deploy (push) Successful in 22sDetails
- Latest-news row and FAQ grid now go 3 -> 2 -> 1 columns (added a 1024px
tablet step); .news-card drops its brittle fixed 405.33px width and fills a
responsive grid cell. Fixes cramped 3-across cards on 769-1024px.
- Contrast: replace #98A2B3 text color (2.58:1 on white) with the palette
muted #667085 (~4.8:1) across 13 CSS files (31 text-color uses; borders/
backgrounds untouched, verified none on dark backgrounds).
- Re-stamped cache-bust (v=6770822f).
Note: the ~20px-looser header top-gap at 769-1024px is left as a minor,
lower-risk follow-up (would need a coordinated multi-page padding pass).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploy to Production on Develop Push / deploy (push) Successful in 21sDetails
From the QA audit — high-impact, low-risk fixes:
- SI homepage hero: replace leftover template boilerplate subtitle
("timski nabiralniki"...) and truncated badge with proper Slovene copy
matching EN/MK.
- Footer: .footer-container was a hard width:1280px and got clipped by
overflow-x:clip on 769-1279px screens; now width:100%; max-width:1280px.
- WCAG AA contrast: darken orange text (.article-publish-date, .mm-real-link)
and the Ask-MSOS footer (.msa-foot) which were ~2.6-3:1 on white.
- iOS Safari focus-zoom: bump form/search/assistant inputs to 16px
(.ms-field, .msa-input, .filterbar-search-field).
- Re-stamped cache-bust (v=9ff60d7a).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploy to Production on Develop Push / deploy (push) Successful in 20sDetails
Stops deploys being served stale from browser cache — the recurring "changes
do not show up until a hard refresh" problem.
- New tools/cache_bust.py stamps a global content hash onto every local
<link>/<script> CSS/JS ref AND the @import lines in css/main.css (so partial
edits bust too). External (https://) refs are untouched. Deterministic and
idempotent: same content -> same stamp, any asset edit -> new stamp sitewide.
- Wired as the final step of tools/build_site.py so every build/deploy stamps.
- Initial stamp applied across 259 pages + main.css (v=64a53dd6).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace event-placeholder.svg with real .webp photos across all 2025-2026
event/project pages (EN/MK/SI), updating OG/Twitter/JSON-LD image refs,
inline article images, and content/events/*.md. Also Latinize EN/SI titles
(e.g. "Kafanska večer") and drop empty "In numbers" TOC sections.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- New Press & media page in all three languages: press-enquiries contact,
a 6-way logo download grid (EN/SI/MK x colour/white), an "MSOS at a glance"
fact sheet (full legal name + preferred name), and a grouped coverage list
(media, universities & institutions, official records, reference, government)
with 29 verified third-party links, each described in EN/MK/SL.
- Styling in css/pages/_press.css (imported by main.css), on the site's tokens.
- Footer: added a "Press & media" link to the Organisation column on every page
(all languages, relative paths correct for each page depth).
- SEO/sitemap refreshed so the new pages carry NGO schema + hreflang.
MK/SI copy is AI-drafted and pending a native proofread.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Generative Engine Optimization pass so AI answer engines (ChatGPT, Gemini,
Perplexity, AI Overviews) can confidently identify and cite MSOS.
Schema (tools/seo_inject.py, propagated to all 231 pages):
- FAQPage JSON-LD parsed from the /faq/ Q&A blocks (33 Q&A x EN/MK/SI)
- Organization upgraded to NGO with entity-disambiguation fields:
alternateName (all spellings), description, areaServed Slovenia,
knowsLanguage, and foundingDate 2023-03-05
- Event JSON-LD on all 9 /projects/ recap pages (date + real location)
Autonomous for future content (no code edits to add a project):
- Event/Article dates auto-read from the English page's publish date;
event city auto-detected from the body (Slovenian-city whitelist).
ARTICLE_DATES/PROJECT_LOCATIONS are now optional overrides only.
(Auto-detect corrected Paint & Wine to Nova Gorica.)
- build_listings.py: auto-date fallback so undated new content still lists
- pre-commit hook now runs seo_inject.py --all --sitemap first, then
listings/botlinks, and re-stages changed pages (idempotent)
Docs: docs/geo-offsite-worklist.md - copy-paste-ready off-site plan
(Wikidata, Wikipedia fixes, directories, Google Business, AI-visibility tests).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Rework the About Us hero so the eyebrow, title and description are overlaid on
the auto-rotating team images (centred, white, text-shadowed) exactly like the
landing hero, instead of sitting in a separate white band above them. Remove the
old page-header band and move its text into the hero. All three languages.
- Rename the "Who We Are" menu item from "Our team" to "About Us"
(MK "За нас", SI "O nas") across all pages; footer "About us" link unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Previously /llms.txt and /links-for-bots/ existed but were not linked anywhere,
so users/bots couldn't find them. Following Proxify's pattern, add a "For bots"
footer column (all 225 pages, EN/MK/SI) linking to category link lists and an
AI summary page.
build_botlinks.py now also generates:
/links-for-bots/blog|guide|projects/ per-section link lists (EN/MK/SI)
/links-for-bots/about-msos/ "Hey AI, learn about us" summary
/links-for-bots/ hub + /llms.txt
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Publish Vasil Handziski's personal essay in MK (original) with EN/SI AI-drafted
translations. Adds a prose article variant (no scrollspy sidebar, centred column,
custom byline) via .article-page--prose, plus blog index cards in all languages.
Converter now omits the "last checked" line when empty.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>