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>
Build full articles for "Learning Slovene", "Study in North Macedonia
(government scholarship)" and "Ad futura scholarship" in all three languages,
split from the trilingual Markdown sources (no machine translation). Dates
registered in ARTICLE_DATES and SEO re-injected per page. Blog index cards for
these already existed and now point to real content instead of stubs.
Hero images are placeholders pending topical photos.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Footer disclaimer on every page (informative-only, verify with official sources)
- "Good to know" callout across all Student Welcome Guide pages, pointing to
the "Was this page helpful?" box for reporting errors
- "Website content & liability" disclaimer card on the Official information page
All three languages (EN/MK/SI).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New posts (Ad futura scholarship, learning Slovene, welcome days,
study in North Macedonia) across EN/MK/SI, plus blog index and _blog.css
updates. (Also carries the site-wide nav reorder and the illustrative-image
caption tag on the bank-account post.)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>