Go to file
popovskik 596290acf8 feat(cms): U2 render content/ into detail pages (characterization-verified)
Add tools/build_content.py: renders every content/ entry into its blog /
news / event detail page by self-templating the page's own chrome and
replacing only content-derived regions (title, article header, hero,
body, and — for new pages only — the scrollspy).

Faithful reproduction, proven against the live site:
- body_format: html fragments injected verbatim, so guide-boxes, inline
  figures and event galleries render unchanged.
- scrollspy sidebars are preserved (labels are hand-curated, shorter than
  the H2s); only generated when a page has none.
- <title> suffix derived per page, so EN/SI " - MSOS", MK " - МСОС", and
  suffix-less event titles all reproduce exactly.
- hero /images/… rewritten to the page's ../../../ depth.
- ASCII-only console output (no cp1252 crash on Windows/CI).

tools/tests/test_build_content.py: 8 characterization tests; the core one
renders all 51 pages and asserts each is semantically equivalent
(whitespace/attr-order-insensitive) to the current page — the R5
no-regression guarantee.

Does NOT overwrite the committed pages; whether generated pages are
committed vs built fresh in CI is decided in U4/U5. Run:
  python tools/build_content.py --check   # verify equivalence
  python tools/build_content.py --write    # emit pages (for U4)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 16:36:11 +02:00
.gitea/workflows feat(assistant): v2 — query-language detection, analytics, chips, auto-index 2026-08-04 01:48:39 +02:00
assistant feat: offline in-browser "Ask MSOS" assistant (no API, zero cost) 2026-08-04 01:29:22 +02:00
content feat(cms): U1 content model + migration scaffold for blog/news/events 2026-08-08 16:18:29 +02:00
css Add photo copyright & usage clause (EN/MK/SI) 2026-08-08 12:24:25 +02:00
docs feat(cms): U2 render content/ into detail pages (characterization-verified) 2026-08-08 16:36:11 +02:00
en Add photo copyright & usage clause (EN/MK/SI) 2026-08-08 12:24:25 +02:00
images Gallery: photos open lightbox, add project button, watermark our photos 2026-08-08 01:55:34 +02:00
links-for-bots GEO: FAQPage/NGO/Event schema + autonomous generation for new projects 2026-08-07 22:17:03 +02:00
mk Add photo copyright & usage clause (EN/MK/SI) 2026-08-08 12:24:25 +02:00
si Add photo copyright & usage clause (EN/MK/SI) 2026-08-08 12:24:25 +02:00
templates changes.txt Batch 1: nav, hero, gallery, project CTA, discl. groundwork 2026-08-05 15:54:33 +02:00
tools feat(cms): U2 render content/ into detail pages (characterization-verified) 2026-08-08 16:36:11 +02:00
.gitignore feat(cms): U1 content model + migration scaffold for blog/news/events 2026-08-08 16:18:29 +02:00
.htaccess security(.htaccess): enforce Content-Security-Policy (was report-only) 2026-08-04 10:48:23 +02:00
404.html feat: offline in-browser "Ask MSOS" assistant (no API, zero cost) 2026-08-04 01:29:22 +02:00
README.md test za actions 2025-08-21 12:22:10 +02:00
apple-touch-icon.png Popravki za homepage 2025-09-09 13:25:10 +02:00
assistant.css feat(assistant): one-time disclaimer note + GA4 question-report guide 2026-08-04 01:57:55 +02:00
assistant.js changes.txt Batch 1: nav, hero, gallery, project CTA, discl. groundwork 2026-08-05 15:54:33 +02:00
blog-filter.js Pagination fixes, blog page chooser, Events & Projects redesign 2026-08-01 20:30:47 +02:00
consent.js Add GDPR cookie-consent banner (Consent Mode v2) 2026-08-02 18:30:35 +02:00
export_code.sh Posodobljen mobilni meni 2025-09-04 20:43:28 +02:00
favicon-96x96.png Popravki za homepage 2025-09-09 13:25:10 +02:00
favicon.ico Popravki za homepage 2025-09-09 13:25:10 +02:00
favicon.svg Popravki za homepage 2025-09-09 13:25:10 +02:00
filter-search.js Landing/About/guide polish + Proxify-style category filter bar 2026-08-05 22:28:16 +02:00
guide-feedback.js Feedback: space/bottom-align Send button; submit No + comment as one row 2026-07-31 12:03:07 +02:00
llms.txt GEO: FAQPage/NGO/Event schema + autonomous generation for new projects 2026-08-07 22:17:03 +02:00
main.js Gallery: photos open lightbox, add project button, watermark our photos 2026-08-08 01:55:34 +02:00
member-form.js Become a Member: bento benefits, merged/redesigned join form, floating CTA, fixes 2026-08-01 13:14:36 +02:00
my-route.js security: harden static site (headers, exposed-file cleanup, privacy) 2026-08-03 23:56:48 +02:00
news-filter.js News hub: add working pagination that respects the type filter 2026-07-31 23:56:42 +02:00
optimize_images.py Popravki za timeline 2025-09-09 14:21:55 +02:00
robots.txt Add technical SEO foundation, MK/SI about-us + timeline, content fixes 2026-08-02 11:43:10 +02:00
site.webmanifest Popravki za homepage 2025-09-09 13:25:10 +02:00
sitemap.xml Press: add /press/ page (EN/MK/SI) + footer link + coverage list 2026-08-07 23:35:49 +02:00
student-guide.js Upgrade Build My Route into a personal report generator with export and data hook 2026-07-31 12:58:45 +02:00
style.css Prvotna verzija spletne strani 2025-08-21 11:06:11 +02:00
update_html.py 2 nova članka 2025-08-25 15:43:46 +02:00
web-app-manifest-192x192.png Popravki za homepage 2025-09-09 13:25:10 +02:00
web-app-manifest-512x512.png Popravki za homepage 2025-09-09 13:25:10 +02:00

README.md

msos spletna stran