Commit Graph

226 Commits

Author SHA1 Message Date
popovskik 954f186761 build: content-hash cache-busting for local CSS/JS (?v=hash)
Deploy to Production on Develop Push / deploy (push) Successful in 20s Details
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>
2026-08-27 18:14:44 +02:00
popovskik 7c2110d8a5 fix(mobile): Ask-MSOS pill yields to cookie/language banners
Deploy to Production on Develop Push / deploy (push) Successful in 19s Details
In in-app browsers (Instagram/Facebook) the floating pill (z-index 9999, same
as the cookie banner) sat on top of the cookie Accept button and the language
banner, so consent could not be tapped. The pill now hides whenever the
cookie-consent (.msos-cc) or language (.lang-suggest) banner is present, via a
MutationObserver on <body>, and reappears once they are dismissed. With the
pill yielding, the language banner is dropped back to the bottom edge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 18:03:13 +02:00
popovskik 6bfd882354 Merge remote-tracking branch 'origin/fix/si-guide-copy-corrections' into develop
Deploy to Production on Develop Push / deploy (push) Successful in 22s Details
2026-08-27 17:46:30 +02:00
popovskik 7865fbeeac Merge branch 'develop-kristijan' into develop
Deploy to Production on Develop Push / deploy (push) Successful in 22s Details
2026-08-27 17:43:11 +02:00
popovskik 7823578225 style(home): permanent drop shadow on latest-news card images
Add a soft box-shadow to .news-card-media so the card image separates from the
teal (#2D738C) News section background — needed when an image has blue edges
that otherwise merge into the section colour.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 17:24:48 +02:00
popovskik 30dbb60aa6 content: add Capital sponsor to partner marquee + fix MSS livestream embeds
- Add the Capital Asset Management logo to the partner/sponsor marquee on the
  homepage and Support page (both carousel groups, EN/MK/SI).
- Fix the Meet Student Slovenia livestream embeds: the 2024 page was embedding
  the 2023 recording. Now 2024 embeds the 2024 live (00GGIfVx8wA) and 2023
  embeds the 2023 live (DJD02mQIE98), as proper iframes on all three languages
  (MK/SI 2024 previously had only a placeholder "#" link).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 17:13:29 +02:00
popovskik 7b82355e66 Merge pull request 'Batch fixes: MSS 2026 event, blog/news cards, mobile gallery & language banner' (#26) from develop-kristijan into develop
Deploy to Production on Develop Push / deploy (push) Successful in 22s Details
Reviewed-on: #26
2026-08-27 15:03:53 +00:00
popovskik fb3625efd9 Merge branch 'fix/mss-news-excerpt' into develop-kristijan 2026-08-27 17:00:14 +02:00
popovskik abf04db9b1 Merge branch 'fix/blog-card-images' into develop-kristijan 2026-08-27 17:00:13 +02:00
popovskik 6c710eafb7 Merge branch 'fix/lightbox-mobile-layout' into develop-kristijan 2026-08-27 17:00:12 +02:00
popovskik 9ffb7fe257 Merge branch 'fix/mobile-lang-popup-button' into develop-kristijan 2026-08-27 17:00:12 +02:00
popovskik 08142a929e Merge branch 'fix/mss-2026-form-conditional' into develop-kristijan 2026-08-27 17:00:11 +02:00
popovskik d6638414ae Merge branch 'fix/teambuilding-remove-photos' into develop-kristijan 2026-08-27 17:00:09 +02:00
popovskik 41b41da092 fix(news): give MSS 2026 a card excerpt / meta description
The Meet Student Slovenia 2026 news card had an empty description because the
auto-extractor looks for the first <p> right after .news-article-body, but that
page starts with the sticky-CTA <a>, so nothing matched. Add a curated
description (EN/MK/SI) via seo_inject DESC_OVERRIDES; this now fills the meta
description, OG/Twitter/JSON-LD, the News-hub card excerpt, and llms.txt.
MK/SI copy AI-drafted — flag for native review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 16:54:55 +02:00
popovskik fb0c5c8639 fix(blog): use each published post hero image on the blog listing cards
The blog index cards showed placeholder icons even for published posts that
have a hero image. Replace the icon thumb with the post hero (cover-cropped)
for every published card in EN/MK/SI, and add a .blog-thumb--image rule to
mirror the existing featured-card image style. Coming-soon / unpublished cards
keep their icons.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 16:43:18 +02:00
popovskik 1273edcb41 fix(lightbox mobile): stack caption/button under photo + hide Ask-MSOS pill
On phones the lightbox caption and "Read the story" button were pinned to the
screen bottom, cramped and overlapped by the floating "Ask MSOS" pill
(z-index above the lightbox). Now:
- lightbox becomes a centred column on <=600px: image -> button -> caption
  flow directly under the photo instead of being absolutely bottom-pinned;
- image capped at 62vh so tall/portrait photos leave room for the button;
- the Ask-MSOS pill is hidden while the viewer is open (body.lightbox-open),
  so it can no longer overlap the controls.
Desktop layout is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 16:36:38 +02:00
popovskik 7bccf716de fix(mobile): language banner vs Ask-MSOS pill + guide button overflow
- On phones the language-suggestion banner sat at the bottom and the floating
  "Ask MSOS" pill (higher z-index) overlapped its bottom-right, hiding the
  dismiss (x) button. Raise the banner above the pill (bottom: 84px) so they
  stack and the x is fully visible and tappable.
- The success-screen "Read the welcome guide" button used the base .btn
  white-space:nowrap, so the long MK label overflowed the box on narrow
  screens. Allow .ms-success-links .btn to wrap (white-space: normal).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 16:09:39 +02:00
popovskik 3e205a5c96 fix(mss-2026 form): hide study plans for parents and "other"
Parents and "other" registrants will not be studying, so the "Your study
plans" section is now hidden for those roles. Gating is driven by the role
<select>; validate()/collect() skip any field inside a hidden container, so
the study fields are neither required nor submitted for those roles. Students
(future/current) are unchanged: the section stays visible and required.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 15:38:03 +02:00
popovskik 8d90fcddac content(teambuilding-2026): remove two photos from event page + gallery
Remove the "a-new-space-for-the-community-3" (toast) and "additional-12"
(diploma) photos from the Teambuilding / MSOS Hub opening event: drop the
inline article image and both gallery thumbnails, promote one hidden thumb to
keep 5 visible, and correct the "+more" badges and album photo count
(16 -> 14). Delete the two now-orphaned webp files. All three languages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 15:31:51 +02:00
popovskik 9a9eec21c5 Merge pull request 'content(mss-2026): reword live-stream CTA + fix MK grammar' (#24) from fix/mss-2026-copy into develop
Deploy to Production on Develop Push / deploy (push) Successful in 21s Details
Reviewed-on: #24
2026-08-27 10:16:26 +00:00
popovskik 01b0ebeadf content(mss-2026): reword live-stream CTA + fix MK grammar
- Live-stream line now invites online registration ("Не можеш да дојдеш во
  живо? Пријави се и следи го настанот онлајн." / EN / SI equivalents).
- MK grammar fix: "некој да им го кажел" -> "некој да им каже".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 12:10:22 +02:00
popovskik 7519f64047 Merge pull request 'Publish Meet Student Slovenia 2026 (banners, Capital sponsor, NLB branch venue)' (#22) from feat/mss-2026-publish into develop
Deploy to Production on Develop Push / deploy (push) Successful in 21s Details
Reviewed-on: #22
2026-08-27 05:21:05 +00:00
popovskik 11c3c25e1e content(mss-2026): "past years" wording for the previous-editions album link
Change the "See the full album" caption under the moments gallery from
singular last-year to plural past-years, across MK/EN/SI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 07:15:56 +02:00
popovskik 5f56e79e5d Merge pull request 'privacy: disclose Google (Analytics + Forms) as data processor (GDPR)' (#21) from fix/privacy-policy-processors into develop
Deploy to Production on Develop Push / deploy (push) Successful in 25s Details
Reviewed-on: #21
2026-08-27 05:14:18 +00:00
popovskik 903faf54fe content(mss-2026): add sponsor logo + event banners, update venue to NLB branch
- Add Capital Asset Management sponsor logo (images/partners/capital.png),
  replacing the plain-text sponsor name in the event partners row.
- Set the in-article hero to the clean event banner (mss-2026-hero.webp) and
  the News/homepage listing cards to the sponsor-strip promo variant
  (mss-2026-card.webp) via a new front-matter `card:` field.
- Update the venue everywhere (event page key info + prose + confirmation
  text, and the homepage promo banner) to
  "НЛБ експозитура, локација East Gate Mall, Скопје" (EN: NLB branch;
  SI: poslovalnica NLB), across all three languages.

Build tooling: build_content emits an optional data-card on the hero <img>;
build_listings prefers data-card as the listing thumbnail so the card can
differ from the in-article hero. Rebuilt news pages, listings and search index.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 07:05:41 +02:00
popovskik 827b6b95f5 Revert "chore(release): exclude Meet Student Slovenia 2026 from publish"
This reverts commit fb26cda to publish the MSS 2026 event page,
homepage banner, and listings ahead of the 4 Sep 2026 event.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-27 06:50:17 +02:00
popovskik 9ffe440a66 content(privacy): disclose Google (Analytics + Forms) as data processor (GDPR)
Name Google Forms (membership/feedback/event forms) and Google Analytics as
processors in the privacy policy, add form-submission data to 'what we collect'
and its legal basis, and note the possible US transfer under SCCs. Applied to
EN/MK/SI. Draft wording — pending review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 02:45:41 +02:00
popovskik 14d7e7e280 Merge pull request 'seo: enable canonical-host 301 redirect to msosorg.com' (#19) from seo/canonical-host-golive into develop
Deploy to Production on Develop Push / deploy (push) Successful in 24s Details
Reviewed-on: #19
2026-08-26 00:00:23 +00:00
popovskik ed76ee6db0 Merge pull request 'Go-live content: CMS + 2025-26 events (real photos), MK/SI/EN guide & deadline fixes, press interview' (#20) from release/golive-content into develop
Deploy to Production on Develop Push / deploy (push) Successful in 22s Details
Reviewed-on: #20
2026-08-26 00:00:13 +00:00
popovskik 4c88e71294 Merge branch 'fix/press-and-deadline-consistency' into release/golive-content 2026-08-26 01:58:09 +02:00
popovskik 99a0ce7061 Merge branch 'fix/mk-guide-copy-corrections' into release/golive-content 2026-08-26 01:58:08 +02:00
popovskik b0ac0831b3 seo(htaccess): enable canonical-host 301 to msosorg.com (go-live)
Now that msosorg.com serves the docroot, 301 every non-canonical host
(the temp domain msos.spletnimojster.si, any www., the origin host) to
https://msosorg.com to consolidate ranking signals. Runs before the
HTTPS-force so the temp domain reaches the canonical in a single hop; the
condition excludes msosorg.com itself so there is no redirect loop.

Mark the redirect steps done in the launch checklist.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 01:43:46 +02:00
popovskik 659f720e44 content(press): add MSOS president interview (YouTube) to 'In the media'
Add the interview 'Македонците се поврзуваат — интервју со лидерот на МСОС'
(youtube.com/watch?v=Vi6wzK9Zfwc) as the first item in the In the media list
on the EN/MK/SI press pages, with localized descriptions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 01:30:43 +02:00
popovskik da3acbff5e fix(guide): spell out abbreviated deadline months in SI/EN tables
Mirror the Macedonian reviewer's date fix to Slovenian and English: expand
feb/mar/sep... to full month names inside the deadline table cells on
application-deadlines, bachelor- and master-application (SI + EN).
Replacement is scoped to <td> cells to avoid touching words like SI 'nov'.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 01:29:59 +02:00
popovskik ac80736026 fix(guide,mk): apply Macedonian reviewer corrections
- Landing intro: 'заради' -> 'поради' (додипломски/магистерски студии)
- Landing study-cities paragraph reworded (Словенија не е само Љубљана)
- student-accommodation: 'Почнете рано' -> 'Почнете порано со барањето'
- Spell out abbreviated months in deadline tables (фев->февруари, сеп->
  септември, ...) on application-deadlines, bachelor- and master-application
- ljubljana-through-our-eyes: 'каналот Градашчица' -> 'каналот на Градашка река'

Skipped (do-not-touch): reword of the .guide-help 'Se uste vi treba pomos?'
feedback block. MK only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 01:17:14 +02:00
popovskik 481e157f87 fix(guide,si): apply Slovenian copy corrections across Student Welcome Guide
Landing page: refine hero lead, intro and study-cities paragraphs; rename
route-generator title/labels/button (Pripravi svojo študijsko pot, Kdo ste?,
Raven študija, Kje ste trenutno?, Prikaži mojo pot) and section subtitle.

student-guide.js: relabel SI phase options and switch budget options to
'X € / mesec' with en-dash ranges + gender-inclusive wording.

Shared across all SI guide pages: rewrite 'Dobro je vedeti' box into three
paragraphs (+ CSS), change 'Nazadnje preverjeno' -> 'Posodobljeno' (30 pages),
and refine the 'preverite najnovejše informacije' warning (22 pages).
complete-student-journey: reword the 'Devet korakov' subtitle.

New route-generator state 'Prijavo sem že oddal/-a' intentionally deferred
(needs my-route.js + Google Form wiring). SI only per request.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-26 00:57:25 +02:00
popovskik fb26cda8cc chore(release): exclude Meet Student Slovenia 2026 from publish
Remove the MSS 2026 news page, homepage promo banner, and listing entries,
then rebuild listings/sitemap/llms.txt/search-index so no MSS references
remain. Keeps shared event CSS/JS intact for other events. MSS 2026 stays
on feat/no-code-cms for a later, separate publish.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-25 23:47:18 +02:00
popovskik 5863c295b7 Merge origin/develop into feat/no-code-cms
Bring CMS/event branch up to date with develop. Net incoming change is the
CI deploy runner config (install rsync/openssh); all other develop history
was already present via shared kristijan-dev lineage.

Meet Student Slovenia 2026 remains on this branch only (unpublished).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-25 22:58:51 +02:00
popovskik c2a7724b0c chore(assistant): rebuild search index after content update
Regenerate assistant/index-{en,mk,si}.json to reflect real event photos
and Latinized titles.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-25 22:28:05 +02:00
popovskik a963aade36 content(projects): swap event placeholders for real photos + copy cleanup
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>
2026-08-25 22:25:26 +02:00
popovskik dc7b8b6809 content(projects): add 7 events/projects (2025-2026) with photo placeholders
Add trilingual (EN/MK/SI) event pages for seven MSOS activities:
- Joint Walk "Path Around the Wire" (May 2025)
- Kafanska vecher (May 2025)
- Watching the Macedonia-Wales match (Nov 2025)
- Team-building and MSOS Hub opening (Feb 2026)
- SEPA webinar with the National Bank of RNM (May 2026)
- President Siljanovska-Davkova lecture at UL (May 2026)
- Morning Coffee in front of CTK, 4th edition (Jun 2026)

Each page uses a neutral placeholder image (images/event-placeholder.svg)
in every hero/inline/gallery slot, with captions describing the intended
photo so real images can be dropped in later. Pages follow the existing
event template (narrative sections + scrollspy + photo gallery); no
"At a glance" classification box.

Wires the events into the Projects hub (filter cards), News hub, sitemap,
bot-discovery files and the offline search index. Unrelated pages were
kept out of this commit to avoid build-tool encoding churn.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-22 17:58:04 +02:00
popovskik f66db9873f content(guide): clarify visa D vs residence permit and residence application routes
Update the Student Welcome Guide residence pages (EN/MK/SI):

- visa-and-residence-explained: clarify that visa D mainly applies to
  study exchanges (e.g. Erasmus, up to one year) and is handled only by
  the embassy, while degree students use the temporary residence permit
  decided by the administrative unit (a permit, not a "visa").
- where-to-apply-for-residence: explain that the embassy only forwards
  the application to the administrative unit (slower, costlier); present
  applying directly at the administrative unit as usually faster and
  cheaper with the same documents; replace vague checklist prompts with
  concrete facts (appointment contact, standard document list, official
  Slovenian translation, certification, criminal-record recency, fees);
  keep the cautious lawful-stay wording and add a warning about leaving
  Slovenia while the application is pending.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-22 16:33:29 +02:00
popovskik af294ce8a4 chore: stop tracking compiled .pyc bytecode
These auto-generated Python caches were committed before .gitignore
listed __pycache__/ and *.pyc, so Git kept tracking them and they showed
up as spurious changes on every build. Untrack them (files stay on disk)
so .gitignore takes effect and they no longer appear in diffs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-22 08:17:17 +02:00
popovskik 7bd85c11a0 feat(event): add print/PDF export styles for event pages
Add a @media print block so event pages export cleanly to PDF/print:
keep faithful colours (print-color-adjust: exact), unstick the header,
hide screen-only chrome (chat bubble, cookie consent, sticky CTA, back
link, newsletter box, mobile nav), and reset the hero image to full
width. No effect on the on-screen layout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-22 08:16:04 +02:00
popovskik 027a888539 fix(news): style Sources lists with guide-linklist across articles
The Sources sections on the Welcome Days, accommodation-search and
Ad futura scholarship articles used bare <ul>/<ol> lists, which rendered
as default bullets/numbers with plain blue links instead of the site's
standard source-list style (chain icon, teal links, row dividers).

Add class="guide-linklist" to the Sources lists (converting Ad futura's
<ol> to <ul>) in the content/ source markdown and the generated en/mk/si
pages, matching the Student Welcome Guide. Edits scoped to the affected
articles to avoid unrelated build-tool reformatting churn.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-22 07:44:09 +02:00
popovskik 09dbeb2bc7 fix(home): restore homepage event banner styling
The .event-banner rules were dropped during an _event.css rewrite, so the
homepage promo banner rendered unstyled (full-width dark text, no gradient).
Restored the banner styles and removed the em-dash from the banner copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-20 23:40:01 +02:00
popovskik 954dfb4d7d feat(event,support): refine event page + add supporter form to Support page
Event page (Meet Student Slovenia 2026):
- Guide-style centred header with wide banner hero and caption
- Key facts on a plain background: When/Where side by side, subtle
  live-stream line, centred Register CTA, full-width note
- Partner logos (NLB patron, Embassy support) + sponsor
  Kapital Aset Menadžment DOOEL / Капитал асет менаџмент ДООЕЛ
- Inline photos between sections; em-dash removed from the subtitle
- "Support MSOS" call-out linking to the support page

Support page:
- Added the become-a-member supporter flow (supporter path only) via a
  new data-only-flow="supporter" mode in member-form.js; submits to the
  same combined Google Form tagged type=supporter
- Hero "Become a partner" button now scrolls to the form
- .ms-section carries its own brand vars so the form renders off the
  member page

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-20 23:35:43 +02:00
popovskik 270df5b2f8 feat(news): add Meet Student Slovenia 2026 event page
Trilingual (EN/MK/SI) promo page for the upcoming "Meet Student Slovenia
2026" event, built through the content CMS (content/news/...) plus custom
sections styled to match the site.

- Guide-style centred header with a wide banner hero and caption
- Plain-background key facts (When/Where), subtle live-stream line,
  centred Register CTA, and partner/patron/sponsor logos
  (NLB Banka, Embassy of Slovenia; Capital Financial Center as text)
- Auto-scrolling "Moments from previous years" carousel + inline photos
- Embedded registration form (dropdowns, required study-plan fields,
  multi-field study preferences) wired to a Google Form; left-hand
  floating Register button
- Homepage promo banner (EN/MK/SI) + auto-listed in News hub, homepage
  latest, sitemap, llms.txt and the offline search index
- New assets: css/pages/_event.css, event-register.js

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-20 22:46:09 +02:00
mark e063b3cd4a ci: install rsync in deploy runner container
Deploy to Production on Develop Push / deploy (push) Successful in 20s Details
2026-08-20 08:30:09 +00:00
mark 9c451f12c5 ci: trigger deploy after migration to sh37.neoserv.si
Deploy to Production on Develop Push / deploy (push) Failing after 14s Details
2026-08-20 10:28:27 +02:00