3 June 2026
Added
- Barcelona blog post: Tour de France Grand Départ Barcelona 2026: public transport when the city turns upside down. Three-day road-closure impact (4–6 July), which metro lines stay clean, Montjuïc cable-car/funicular warning, El Prat options during race weekend, and ticket-card guidance for the Grand Départ.
Changed
- Section "Fares & tickets" now uniform across all 23 accordion city pages. "Zones & pricing" (the previous title) was only accurate for 7 of 25 cities that actually have a zone system. "Fares & tickets" covers flat-fare, distance-based and zone-based systems alike. Anchor-nav pills updated to match on all 25 pages.
- Do/don't checklist framing removed from the Fares & tickets section on 9 cities (Brussels, Budapest, Copenhagen, Dubai, Istanbul, Milan, Naples, Prague, Zurich). Icon-heavy h3 headers ("Tips", "Do's", "Smart moves", "What NOT to do") replaced with descriptive ones ("How to pay", "Fare rules to know"). Navigation tips, etiquette notes and night-schedule items that don't belong in a fare explanation were removed.
- Amsterdam and Athens now have a brief fare-system introduction in the Fares & tickets section. Previously both cities had only a reference table with no context. Amsterdam: OVpay tap-in/tap-out, distance-based, €10,50 daily cap. Athens: flat fare €1,20 per ride, €4,10 daily cap via Tap2Ride.
- Local transport options now use a shared CSS class instead of inline styles. On 15 city pages, non-commercial "local option" blocks were refactored from inline
style="border-left: 4px solid #4CAF50; ..."to a new shared.local-optionclass incity-guide.css. Partner card styles (.partner-card,.commercial-container) also restored after they were lost in the May 2026 CSS merge.
2 June 2026
Added
- Two genuine safety warnings restored as styled
.alert(red) blocks. The tip-highlight cull below lost two blocks with real safety impact: Berlin's "AB tickets do NOT work for BER airport — €60 fine" warning (airport section) and Naples' "Avoid unofficial taxis at the airport" warning (airport section). Both restored using the existing.alertred-callout pattern. - Cost example callouts added on Madrid and Vienna. Madrid compares 3× 1-day Tourist Ticket (€30,00) against the 3-day Tourist Ticket (€22,50) for a €7,50 saving; Vienna compares 3× 24-hour pass (€30,60) against the 7-day digital pass (€25,20) for a €5,40 saving, plus the Vienna City Card 72h (€37) for museum-discount seekers.
Changed
- Hypothesis C redesign live — all 25 city pages. New design rolled out across the full site: at-a-glance card at the top of every page with the three essential traveller facts, anchor navigation with 8 direct-jump links, and accordion sections for detail. Critical-box and pre-boarding checklist are now always visible (never hidden inside a collapsible) for maximum traveller safety.
- At-a-glance card unified to 3 rows on all 25 city pages. Every page now consistently shows Best ticket, How to pay, Don't get caught — and nothing else. 18 pages had a fourth row with variant labels ("Key note", "Zone note", "Airport note", etc.) that always repeated information available in other sections. Removed; Singapore's fourth-row content kept under the canonical "Don't get caught" label.
- Ticket section unified across all 25 city pages. The "Which ticket should you buy?" section now follows the Stockholm/London/Rome template: heading standardised to
<h2>Which ticket should you buy?</h2>on all 25 pages; recommended row marked withtr.is-pick+<span class="pick-tag">Our pick</span>badge. On 12 pages the earlier trophy-icon + "BEST CHOICE!" markers were replaced. - Roammate advice callout now styled and uniform on all 25 city pages. Above every ticket table there is now a blue
.advicecallout with a "Roammate advice" kicker and a target icon — identical to the Stockholm reference. 13 pages had an unstyled<div class="tip-highlight">block replaced; copy polished to the Stockholm tone. - Cost example callout added on 12 cities. Directly below the ticket table on amsterdam, barcelona, berlin, brussels, copenhagen, hamburg, lisbon, milan, munich, paris, singapore and zurich there is now a blue callout with a calculator icon and a concrete comparison showing the savings versus buying single tickets. Seven cities (athens, budapest, dubai, hong-kong, istanbul, naples, taipei) deliberately get no cost example — their savings are under €5 or there is only one realistic ticket option.
Fixed
- Travel reminder card lost its cream background and border on 13 city pages. 13 pages were still using the old class names (
.travel-reminder/.travel-reminder-title/.form-field) which no longer exist incity-guide.css. The reminder block rendered as plain unstyled fields on amsterdam, athens, berlin, brussels, budapest, hamburg, istanbul, madrid, munich, naples, taipei, vienna and zurich. Classes renamed so all 25 pages pick up the styling. - App-links block not uniform on 12 city pages. The same group of pages was still using legacy
<div class="app-download">markup with no CSS styling, no smartphone icon, no "Official app —" label. All 12 migrated to the new<p class="app-links">pattern. App-links row also moved to the canonical position on budapest, dubai and vienna, where it was incorrectly sitting above the at-a-glance card. - Unstyled
.tip-highlightblocks (83 across all city pages). The CSS rule for.tip-highlightwas never carried over tocity-guide.css, leaving 83 tip blocks rendering as plain text. Temporarily fixed with a neutral grey card style, then removed entirely (see Removed). - Prague Cost example callout label punctuation fixed. Heading was
Cost example: 3 days in Prague, nowCost example — 3 days in Pragueto match the em-dash separator used on the other cost-example pages.
Removed
- All 83
.tip-highlightblocks removed across 13 city pages (amsterdam, athens, berlin, brussels, budapest, hamburg, istanbul, madrid, naples, taipei, vienna, zurich). Free-text tips without a timestamp or trigger are not maintainable at the 100%-correct standard. ~80% were redundant with structured blocks elsewhere on the page. Two blocks with genuine safety impact were restored as proper.alertblocks (see Added). - All page-level intro paragraphs removed on 15 city pages (amsterdam, athens, berlin, brussels, budapest, dubai, hamburg, istanbul, lisbon, madrid, naples, prague, taipei, vienna, zurich). Content was almost entirely redundant with the at-a-glance card, app-links line, ticket table and accordion sections. Two unique critical details on amsterdam and zurich were moved to the "Don't get caught" row before removal.
- Nine redundant red warning callouts removed across six city pages. An audit of all 33 red
.alertblocks showed nine were repeating information already visible elsewhere on the same page. Removed on paris (carnet discount + four mistakes), hong-kong (Airport Express duplicate + always-tap-out), london (key pitfalls), rome (validation is sacred + watch the timing), stockholm (Arlanda outside SL zone) and barcelona (El Prat special fare). The remaining 24 alerts carry unique information not found elsewhere.
27 May 2026
(1)
Changed
- Monthly fare check — 15 cities updated. Automated research against official transit operator sources. Fares corrected in JSON and synced to all HTML pages:
- London: Heathrow Elizabeth Line fare corrected to £15,80 (was £13,30); Zone 1–2 daily cap to £8,90 (was £8,50).
- Paris: CDG RER B updated to €14,00 (was €11,80); Orly Metro L14 to €14,00 (was €10,30). Carnet removed — abolished January 2026.
- Rome: Tap&Go daily cap corrected to €8,50 (was €7,00).
- Vienna: 24h pass updated to €10,20 (was €5,80); S7 airport to €5,40 (was €4,40).
- Stockholm: Daily cap to 180 SEK (was 175); Arlanda Express to 340 SEK (was 320).
- Berlin: Kleingruppenkarte to €35,30 (was €26,00).
- Barcelona: T-Familiar to €11,50 (was €10,70).
- Budapest: Bus 100E airport transfer to 2500 HUF (was 2200).
- Munich: Airport transfer to €13,80 (was €13,00); Android app name corrected to MVGO.
- Prague: Airport fare updated to 46 CZK app / 50 CZK paper (was 40 CZK).
- Singapore: Tourist Day Pass prices updated; EZ-Link card corrected to SGD 10; fare range to SGD 1,28–2,57.
- Zurich: Airport train to CHF 7,20 (was CHF 6,80).
- Hamburg: App links updated to hvv switch.
- Istanbul: Android app URL normalised.
- Madrid: Contactless payment note updated — bank cards at Metro gates launching June 2026.
- Seasonal section updated for late May 2026: Rome & Prague disruption warnings; Vienna Tap+Ride launch good news; London stable; Barcelona discounts; Madrid extra capacity.
(2)
Added
- London blog post: Wimbledon 2026: how to survive the District Line and understand the Queue. District Line route advice, station comparison, Queue logistics and Oyster/contactless tips for Wimbledon fortnight.
(3)
Fixed
- RSS feed "Invalid Date" bug. Changelog sections with a numbered suffix (e.g.
## 2026-05-26 (11)) causedgenerate-rss.jsto produce invalid dates inpublic/feed.xml, corrupting item titles and pubDates. Fixed by extracting only the ISO date part (YYYY-MM-DD) before parsing.
26 May 2026
(1)
Fixed
- Travel reminder accepted only 16 cities. Submissions from the other 9 active city pages (Athens, Brussels, Budapest, Dubai, Hamburg, Lisbon, Munich, Naples, Zurich) were silently rejected by the backend because the allowlist had drifted from the canonical city list. Anyone signing up on those pages saw an "Unknown destination" error.
Changed
- Single source of truth for cities. The travel-reminder backend (
subscribe-reminder.js) now derives the accepted-destinations list at bundle-time fromcities.json. Adding a city tocities.jsonautomatically enables the reminder for it — no second code change needed. - Explicit city on every reminder form. All 25 city pages with a reminder form now carry a
data-city="{City Name}"attribute that exactly matchescities.json. The form no longer relies on URL-pattern detection. - New-city checklist updated so future city pages cannot ship with a broken reminder.
Added
- Brussels travel reminder. The Brussels page previously showed a "coming soon" placeholder; it now carries the full reminder form like every other city page.
Removed
- Last hardcoded city list in the codebase. The legacy
extractCityFromUrl()fallback innetlify_travel_alarm.jsstill carried its own 16-city array — fully redundant now that every form setsdata-city. Removed.
(2)
Fixed
- Blog H3 and H4 headings were unstyled — they fell back to browser defaults, while H2 got the Roammate blue. Added matching styles in
blog.cssso all heading levels share a consistent visual hierarchy. - Blog index social-share image was always the static fallback. Sharing
/blog/on social platforms now shows the most recent post's hero image instead of a generic graphic.
Added
- Reminder CTA on blog posts. Every city-specific blog post now ends with a "Going to {City}?" block that lets readers sign up for the same 14-days-before-departure transport email as the city pages. Hidden on posts that are not about a specific city. Future pillars light up automatically when a new city ships in
cities.json. image_altfrontmatter field for blog posts. Replaces title-as-alt-text on the hero image: the title describes the article, the alt describes the picture, they should never be identical. Existing posts will be retrofitted one by one.
(3)
Added
- Share button on every blog post. A single neutral "Share this post" button sits between the article body and the reminder CTA. On mobile and Safari it opens the native share sheet (iMessage, WhatsApp, Mail, X, whatever you have installed) in one tap. On desktop browsers without share support, it copies the URL to the clipboard with a brief "Link copied ✓" confirmation. No third-party scripts, no platform branding, no tracking.
(4)
Fixed
- Blog posts had no freshness signal for Google. The
dateModifiedfield always equalled the publication date — every post looked permanently un-edited. New optionalupdatedfrontmatter field drives both the schema and a visible "Updated <date>" line in the post header. - Missing image in BlogPosting schema blocked rich-result eligibility in Google Search. Hero image is now included as an absolute URL in the JSON-LD.
- Twitter/X share previews were tiny thumbnails. Added
twitter:cardmeta tags so shared links render with the full hero image — same treatment as Facebook and LinkedIn previews. - Sitemap
lastmodwas filesystem timestamp for blog posts, bumping noisily on every build. Now derived from the markdown frontmatter so search engines see real editorial changes, not build noise.
Added
- Breadcrumb schema on every blog post. Lets Google show breadcrumb trails (Home → Blog → Post Title) in search results instead of a raw URL.
(5)
Fixed
- Blog share button: macOS Safari opened the native share popover in the right page margin, far from the button. Re-aligned the button to the left of the article column so the popover anchors directly below it on desktop. No effect on mobile (iOS and Android always slide the share sheet up from the bottom).
(6)
Added
- Descriptive alt text for all 9 blog hero images. Each photo now has a literal one-sentence description (e.g. trams at Praça do Comércio for Lisbon; the Mile End Underground platform for London) instead of falling back to the article title. Better for screen-reader users and image search.
Fixed
- Nav links broke on blog posts. The shared nav partial used relative paths (
../index.html,../about.html) — they worked on city pages but resolved to 404s when loaded inside a blog post. Switched to absolute paths so the nav works at every URL depth.
Changed
- Blog promoted to top navigation; About moved to the footer. The top nav is scarce real estate, and Blog earns it more than About on an editorial site. Same change applied across every page footer (homepage, marketing, city, blog) so the swap is consistent everywhere.
(7)
Added
- Missing hero alt text is now a hard stop, not a silent fallback. When a blog post has a hero image but no
image_altfrontmatter, the editorial rules now require flagging it, viewing the photo, and proposing descriptive alt text before commit. The title-as-alt fallback stays only as a legacy safety net.
(8)
Added
- New
/new-blogslash command for drafting blog posts. Briefing-driven: takes a free-text instruction, picks the right blueprint, verifies facts against the relevant city page and official transit operators, drafts the post following the editorial guidelines, and reports back with sources and open questions. Does not commit — Erwin reviews each draft before publishing. No autonomous scheduling, no batch mode.
(9)
Added
- Identity paragraph on the blog index. Under the existing tagline, a short intro explains what makes Roammate's blog different — fact verification against official transit operators, the kinds of posts you'll find, and the "updated when something changes, not on a schedule" cadence. Helps readers (and Google) understand the angle before they click through to a post.
(10)
Removed
- Identity paragraph on the blog index. The short intro under the tagline (added earlier today) felt overdone and defensive — like the blog was justifying itself before any reader had asked. The tagline alone carries the page, so the paragraph and its supporting CSS rule are gone.
(11)
Fixed
- "Blog" link was missing from the top nav on root pages. The earlier Blog-for-About swap on 26 May only touched the shared nav partial — but the homepage and the marketing pages (About, Business Traveler, Contact, Privacy, Changelog) each have their own hardcoded nav and never use the partial, so they still showed About in the top nav and About again in the footer, with no link to the blog at all. Fixed on all six pages. City pages and blog posts were already correct.
22 May 2026
Added
- Paris blog post: Paris public transport in June 2026 — Fête de la Musique night service and know this before strike season. Six metro lines running all night on 21 June, the €4,20 Fête de la Musique RATP package, the 48-hour strike-notice rule, Navigo Easy as the only valid ticketing medium from June 2026, and RER B + bus 9517 for CDG airport.
- Barcelona blog post: Barcelona Sant Joan 2026 — how to use public transport on the wildest night of the year. All-night metro on 23–24 June, Line 4 reinforcement, T-Casual validity, and when to avoid the NitBus toward Barceloneta.
- Rome blog post: Rome public transport in summer 2026 — surviving the heat, validating your ticket and avoiding a €100 fine. AC guide (metro lines A and B vs older surface buses), ticket validation steps, and the €104,90 fine.
- Evergreen post: From arrivals hall to hotel — navigating public transport in your first 15 minutes. First-arrival playbook for London and Paris.
- Budapest blog post: Budapest Sziget & Grand Prix 2026 — how to use public transport during the city's busiest week. Opens the new Budapest pillar.
- Lisbon blog post: Lisbon Festas de Santo António 2026 — how to navigate the metro on Lisbon's biggest night. Opens the new Lisbon pillar. Covers the Avenida metro station closure during the Marchas Populares on 12 June, Carris Rede da Madrugada night buses for the return, and the Navegante Occasional card with Zapping (€0,50 card + €1,72 per ride).
- Zurich blog post: Zurich Street Parade 2026 — how to navigate the city when the entire tram axis shuts down. Opens the new Zurich pillar. Saturday 8 August 2026: every tram line through Bellevue, Bürkliplatz, Seefeld and Enge is suspended; S-Bahn to Stadelhofen, HB or Enge plus walking is the only way in, with the ZVV Nachtnetz for the return.
- Paris Fête de la Musique post: hero image added.
21 May 2026
Added
- Blog launched at
/blog/, powered by Eleventy 3. The blog covers fare and rule changes, cross-city comparisons, accessibility deep-dives and seasonal travel reminders. Atom feed at/blog/feed.xml. - First city post: London public transport for tourists 2026 — Oyster card vs contactless, what actually saves you money. Practical primer on why contactless beats Oyster for most adults (no £7 card fee), when families with kids aged 11–15 should use a Visitor Oyster (Young Visitor 50% discount), 2026 fares (single £3,10, daily cap £8,90, weekly cap £44,70), and the three Heathrow options compared (Elizabeth line £15,80 / Piccadilly £5,90 / Express £26 walk-up).
- Preparation pillar: What to do at home before you arrive — the European public transport checklist. Pre-departure brief for first-time European city visitors: phone wallet setup, contactless coverage by city, zone awareness, the app-impostor warning, and a London/Paris/Barcelona comparison table. Scheduled for June 2026.
Changed
- Footer "Blog" link site-wide: The "Coming soon" placeholder in every page footer (homepage, marketing pages, all 25 city guides) is now an active link to /blog/.
20 May 2026
Added
- Lisbon (Portugal): 23rd city guide added — full public transport guide covering the Metro Red Line from the airport, Carris buses and trams, the rebranded Navegante Occasional card and the Lisboa Card. Includes the 2026 update that the AeroBus airport shuttle has been permanently discontinued.
- Naples (Italy): 24th city guide added — covers the TIC integrated 90-minute ticket (€1,80) versus the cheaper ANM-only ticket (€1,30, which does NOT cover Metro Linea 2), the Alibus airport shuttle from Capodichino (€5,00), four funiculars, night buses N1–N7 and the Friday/Saturday extension of Metro Linea 1 until ~01:20. Includes verified Comune di Napoli predetermined taxi fares (€21 Centrale, €24 Beverello, €28,50 Via Partenope) and the correct fare-evasion fine of €52,20 (€26,10 within 5 days).
- Athens (Greece): 25th city guide added — covers OASA's 90-min ATH.ENA ticket (€1,20), new Tap2Ride contactless (Visa/Mastercard only with €4,10 daily cap — Maestro, AMEX, Diners and JCB are NOT supported), the 3-Day Tourist Ticket (€20,00 incl. both airport trips), Metro Line 3 to Eleftherios Venizelos airport (€9,00 / €16,00 return, ~40 min, every 30–36 min) vs the 24/7 Express buses X93/X95/X96/X97 (€5,50), Friday/Saturday 24h metro on Lines 2/3, taxi flat fares to ATH (€40 day / €55 night) and the new mid-2026 fare-evasion fines (€100 full / €50 reduced). Accessibility rated 3/5 — strong on Lines 2/3 and tram T6/T7, weaker on the historic Line 1 (ISAP).
Fixed
- Taipei — app links replaced (urgent): The official "Go! Taipei Metro" app is being discontinued on 31 May 2026. Replaced with the official successor 台北捷運Go by TRTC, verified active as of today.
12 May 2026
Fixed
- Quarterly Accessibility Update: All 22 city accessibility sections verified against official operator sources. 18 cities updated.
- Budapest (critical): M2 accessible stations corrected — Astoria, Keleti and Déli are a future plan, not yet built. Actual accessible stations: Örs vezér tere, Pillangó utca, Puskás Ferenc Stadion. Tram line list and bus percentage also corrected.
- Istanbul (critical): T1 tram corrected — the T1 operates 100% low-floor vehicles with level boarding. Previous content incorrectly discouraged wheelchair users from using it. Star rating updated from 2 to 3/5.
- Hamburg: U-Bahn coverage updated to 97% — U1 now fully barrier-free (completed October 2025).
- Barcelona: Inaccessible station list updated to current TMB live data. Several stations retrofitted since last check.
- Berlin: BVG Mobility Service phone number corrected to (030) 346 49 940.
- Brussels: Tram line 3 removed (discontinued September 2024). Station assistance now immediate — no 48h advance booking required.
- Rome: New Metro C Colosseo–Fori Imperiali station (December 2025) added — first fully accessible route to the Colosseum.
- Zurich: Tram fleet and S-Bahn lift claims corrected.
- Amsterdam, Dubai, Hong Kong, Milan, Prague, Singapore, Taipei, Copenhagen, London, Paris: Minor corrections and updates to accessibility data.
5 May 2026
Fixed
- Section order corrected on all 22 city pages. The collapsible sections were in the wrong order on most pages. All city guides now follow the canonical order: Airport transfers → Zones & pricing → Family discounts → Accessibility → Night transport → Shared mobility → eSIM recommendations → Baggage storage.
2 May 2026
Added
- Visual impairment section — all 22 city pages now include a dedicated subsection in the accessibility collapsible with verified information on tactile guiding strips, audio announcements in vehicles and at stations, Braille on lift buttons, and specialist apps or assistance services for blind and visually impaired travellers.
30 April 2026
Fixed
- App-store links corrected on 6 city pages. The iOS and/or Android links on Munich, Budapest, Dubai, Hamburg, Brussels and Zurich pointed to wrong apps because earlier links had been generated from plausible-looking patterns rather than verified. All six pages now link to the correct, user-verified apps: Munich (MVV iOS / MVG Android), Budapest (BudapestGO iOS / BKK Futár Android), Dubai (Nol Pay iOS unchanged / RTA Android updated; the obsolete "Journey planner: S'hail (replaces Wojhati)" line was removed), Hamburg (HVV iOS + Android; label simplified from "hvv switch" to "hvv"), Brussels (STIB-MIVB iOS + Android), Zurich (ZVV iOS + Android).
29 April 2026
Added
- Brussels (Belgium) — 21st city guide. Full STIB-MIVB coverage of metro lines 1, 2, 5, 6, the tram and premetro network (3/4/7 underground), buses and the MOBIB Basic card. Includes Brupass tickets, contactless EMV (capped daily fare), and Brupass XL covering airport, SNCB train and De Lijn/TEC. Brussels Airport (Zaventem) via SNCB train at €11,80 (€5,40 Diabolo surcharge) or STIB bus 12/21; Charleroi (CRL) via Flibco shuttle at €21,00. Noctis night buses on Friday/Saturday only from De Brouckère. Fine for fare evasion €107 rising to €321. Accessibility rated 3/5, Villo! bike-share, Bolt/Uber/Heetch ride-hailing and a low-emission zone (LEZ) warning for car renters.
- Zurich (Switzerland) — 22nd city guide. Full ZVV / VBZ guide with trams, S-Bahn, ZSG lake boats and the doubled-zone-110 fare quirk explained. 2026 fares verified against the official ZVV tariff page: single 1–2 zones CHF 4,70 / 3-zone airport CHF 7,20; 24h tickets 1–2 zones CHF 9,40, 3 zones CHF 14,40, all zones (NetworkPass) CHF 36,00; 9 O'Clock Day Pass CHF 28,00; ZurichCard 24h/72h CHF 29 / 56 (children CHF 19 / 37) including airport transfer and 17 free museums. ZRH airport via S2/S16/S24 in 10–13 min. Nachtnetz on Friday/Saturday with no surcharge. Fare-evasion fine CHF 100. PubliBike from CHF 3, Mobility Carsharing, taxis CHF 6–8 flag fall, accessibility rated 5/5 (entire VBZ tram fleet is low-floor).
- Homepage and About: Brussels and Zurich added to the city grid,
dropdown and travel-alarm form. Tagline updated to "22 cities". Coverage count on
About page bumped from 20 to 22.
cities.json,llms.txt(URLs alphabetical + STIB-MIVB and ZVV/VBZ in Content policy) andmonthly-check.md(table + count) updated to match.
Improved
- Fare-accuracy sweep across four recent city pages after fact-checking against the operators' own websites (BKK.hu, RTA, STIB-MIVB, HVV).
- Hamburg: Einzelkarte AB €3,80→€4,10, Tageskarte AB €8,90→€8,20, Gruppenkarte AB €14,00→€16,40, Deutschlandticket €58,00→€63,00. App ticketing wording updated with the explicit 7% in-app discount.
- Budapest: single ticket 450→500 HUF, 24h travelcard 2.500→2.750 HUF, 72h travelcard 5.500→5.750 HUF, 7-day Hetijegy 5.950→6.500 HUF, block of 10 4.000→4.500 HUF, single from driver 600→700 HUF, 100E Airport Express 2.200→2.500 HUF. The Átszállójegy (transfer ticket, 530 HUF) has been discontinued since the June 2025 fare restructure — replaced by a 30-minute ticket (600 HUF) and a 90-minute ticket (850 HUF, app-only, unlimited transfers). Ticket table, FAQ JSON-LD, Roammate advice box and checklist updated.
- Dubai: removed the obsolete Friday-morning Metro pause — since the UAE shifted its weekend to Saturday-Sunday in 2022, Friday now runs the full 05:00 start. Updated in FAQ JSON-LD, critical box, info-grid, night-transport schedule and common mistakes.
- Brussels: MOBIB Basic €5,00→€6,00, Brupass single (app/MOBIB) €2,10→€2,70, 1-day Brupass €8,00→€9,50, 10-journey load €17,00→€18,90 (€1,89/ride), Brupass XL single €3,50→€3,60. Removed the no-longer-existing Brupass XL 1-day (€11,00). New: contactless bank card (EMV) is now €2,40 per ride with a €8,50 daily cap (4 rides) — cheaper than both the MOBIB single and the 1-day Brupass; promoted to the "best for tourists" recommendation across the page.
- All four pages:
dateModifiedand footer "Last updated" set to 29 April 2026.
28 April 2026
Added
- Munich (Germany): 17th city guide added — full MVV/MVG coverage with U-Bahn, S-Bahn, tram and bus. Includes Tageskarte (€9,90 single, €19,30 group up to 5 adults), IsarCard Woche (€22,30), Deutschlandticket guidance (€58,00/month), MUC airport transfer via S1/S8, NachtTram night network, 5/5 accessibility rating and MVG Rad bike-share.
- Budapest (Hungary): 18th city guide added — full BKK coverage with M1–M4 metro, tram 4/6 (longest in Europe), BudapestGO app, 24h/72h/7-day travelcards (2.500 / 5.500 / 5.950 HUF), 100E Airport Express (2.200 HUF), MOL Bubi bike-share. Accessibility rated 3/5 (M1 heritage line has no lifts; M4 is fully step-free).
- Dubai (United Arab Emirates): 19th city guide added — full RTA coverage of the driverless Metro Red and Green Lines, Dubai Tram, public bus and abra/water bus. Includes Silver Nol Card (AED 25,00), Day Pass (AED 20,00), Gold Class first-class carriage, Women & Children carriage rules, Friday morning service restrictions (no Metro before 10:00), DXB Metro Red Line connection, RTA fines (AED 100 eating/drinking, AED 200 fare evasion, AED 300 sleeping), Careem ride-hailing, Careem Bike. 5/5 accessibility rating and VoIP-blocking eSIM advice.
- Hamburg (Germany): 20th city guide added — full HVV coverage of U-Bahn, S-Bahn, Hochbahn buses, VHH regional buses and the iconic HADAG harbour ferries (lines 61, 62, 64, 72, 73, 75 — all included in any HVV ticket, making Hamburg the only German city where a normal day pass also gets you a free harbour cruise on the Elbe). Includes Tageskarte AB (€8,90), Gruppenkarte AB (€14,00 for 5 people), 9-Uhr-Wochenkarte (€27,40), Hamburg CARD (from €11,90/day), Deutschlandticket guidance (€58,00/month), HAM Airport via S1 with the splitting-train warning at Ohlsdorf, NachtBus 600-688 weeknight network, MOIA electric ride-pooling (Hamburg-only), StadtRAD bike-share and the unified hvv switch app. Accessibility rated 4/5.
- Homepage and About: Munich, Budapest, Dubai and Hamburg added to the city grid, dropdown and travel-alarm form. Tagline updated from "13 cities" to "20 cities". Coverage count on About page bumped from 16 to 20.
27 April 2026
Added
- Markdown for AI agents: Requests with
Accept: text/markdownheader now receive a clean markdown version of any page. Browsers continue to get normal HTML.
Updated
- London: Elizabeth Line Heathrow fare updated from £15,50 to £15,80 (fare table, detail section and FAQ JSON-LD).
- Copenhagen: Physical Rejsekort is being phased out and stops working on 28 May 2026. Page updated across 7 locations to recommend the Rejsekort app and contactless payment instead.
- Homepage: Seasonal section updated from April to May 2026 — Tube strikes London (19–22 May), Metro Line 3 closure Paris, ATAC strike Rome (~15 May), good news for Barcelona, Stockholm and Berlin.
Improvements
- 9 city pages: Fixed dateModified JSON-LD mismatch — synced with hero dates for Barcelona, Berlin, Hong Kong, Istanbul, Madrid, Prague, Rome, Taipei and Vienna.
31 March 2026
Removed
- Rome: "Practical final tips" section removed.
- Barcelona: "Practical Tips for Tourists" collapsible (7 Essential Tips) removed.
- Paris: Removed "practical tips" from meta description.
29 March 2026
Updated
- Copenhagen: Airport fare updated from DKK 36 (3-zone) to DKK 46 (5-zone) — the separate airport supplement no longer exists; travellers pay the standard zone fare.
- London: Zones 1–3 daily cap updated from £10,00 to £10,50; Elizabeth Line to Heathrow from £14,60 to £15,50 (TfL fare increase 1 March 2026).
- Milan: Malpensa Express body text corrected from €13 to €15,00; return ticket validity corrected from 90 to 30 days.
- Paris: RoissyBus discontinued 28 February 2026 — replaced by bus line 9517 (€2,55 standard metro fare). OrlyBus discontinued March 2025 — Orly now served exclusively by Metro Line 14.
- Singapore: Tourist Day Pass prices updated from SGD 12/19/24 to SGD 22/29/34 (includes SGD 10 refundable deposit).
- Stockholm: Pendeltåg to Arlanda updated from 190 SEK to 200 SEK; Arlanda surcharge from 147 SEK to 157 SEK (effective 8 January 2026).
24 March 2026
Added
- uMob added to the Shared Mobility section on all 16 city pages. uMob is an app that lets travellers book and pay for shared transport — bikes, scooters, shared cars — from multiple providers in one place, without needing separate accounts per provider. Available in all cities covered on Roammate.eu.
20 March 2026
Added
- Cloudflare Web Analytics added to all pages — privacy-friendly, cookie-free analytics. No cookie banner needed. Replaces Google Analytics.
19 March 2026
Added
- Structured data (JSON-LD) added to all 16 city pages — helps search engines and AI tools (Google AI Overviews, Perplexity, ChatGPT) understand and correctly cite page content. Each page now includes a FAQ schema with the most common questions about tickets, airport connections and fines, and a WebPage schema with description, language, publication date, and a Wikidata link for the city.
llms.txtadded to the site root — a machine-readable index that tells AI agents which pages exist, what they cover, and how the content may be used.
18 March 2026
Fixed
- Accessibility star rating fixed on 7 city pages (Copenhagen, Singapore, Amsterdam, Taipei, Hong Kong, Milan, Istanbul) — Lucide icon stars were rendering as empty outlines; replaced with Unicode ★/☆ characters
Improved
- Privacy Policy updated: reflects Travel Alarm data collection and lists sub-processors (Netlify, Loops.so, Proton Mail)
- Travel Alarm reminder widget on all city pages: email and date fields now look identical regardless of browser autofill — no more yellow background on mobile.
17 March 2026
Added
- Travel Alarm form added to all 16 city guides — set a reminder 14 days before departure
Improved
- Travel Alarm: sign-ups with a departure date less than 14 days away are now blocked — too soon for an alert to be useful
3 March 2026
Added
- Lucide SVG icons integrated via CDN — replaces emoji across all 25 pages for consistent rendering on all devices and browsers
- Country flag emoji removed from city cards and navigation
- RSS feed added at /feed.xml — auto-generated on every Netlify deploy from the changelog
- RSS icon added next to the Changelog page title, linking to the feed
2 March 2026
Updated
- Singapore: Tourist Day Pass prices updated (1-day SGD 12, 2-day SGD 19, 3-day SGD 24)
- Singapore: EZ-Link single fare updated to SGD 1,28–2,57 (distance-based)
- Singapore: EZ-Link card price updated to SGD 10 (incl. SGD 5 stored value); fee terminology corrected (non-refundable, not a deposit)
- Stockholm: Flygbussarna airport bus price updated (129 SEK online / 139 SEK at station or with chauffeur)
- Taipei: Fun Pass prices updated (2-day Unlimited NT$1.900 / 3-day Unlimited NT$2.200)
- Taipei: EasyCard card fee corrected — non-refundable NT$100 purchase fee, not a deposit
- Homepage: Monthly travel tips updated for March 2026 across all 6 featured cities
25 February 2026
Added
- Custom 404 page ("Wrong Stop") with illustration and link back to home
- Milan added to city cards on the homepage (was missing from the grid)
- Milan added to Travel Alarm city list on the homepage
Improved
- Hero banners on subpages (About, Contact, Privacy, Changelog, 404) made more compact — less empty space above the content
- Consistent city order across all homepage lists: Vienna now before Prague
22 February 2026
Added
- City guide for Copenhagen — full public transport guide added
- City guide for Milan — full public transport guide added
- Istanbul city guide added (İstanbulkart, metro, tram, Metrobus, ferry, airport transfer)
- Copenhagen, Milan and Istanbul added to dropdown and city cards on the homepage
- About page updated to reflect 16 cities
- robots.txt created — blocks city-passes/ from crawlers and points to sitemap
- favicon.png added and linked across all pages
- Open Graph tags (og:title, og:description, og:image, og:url, og:type) added to all city pages
- og-default.jpg created (1200×630px) as shared OG image for all pages
- Canonical tags added to all city pages
- "Feedback or corrections? Contact us." link added to the footer of all 16 city pages
Changed
- All eSIM partner buttons on city pages now link to real URLs: Airalo, Holafly, and Firsty
- All luggage storage partner buttons on city pages now link to real URLs: Bounce and Stasher
- cities.json: highlights updated for Milan and Copenhagen
- generate-sitemap.js updated with priority and changefreq per page type
- sitemap.xml regenerated with priority and changefreq
- Contact email updated to erwin.boogert@proton.me on business-traveler, contact, and privacy pages
- contact.html: hero text and layout improved
- amsterdam-commercieel.html removed from public/ (moved to archive)
- new-city skill updated: OG tags and canonical tag now standard in the head template for new city pages
- Email addresses removed from footer of all city pages
- Last updated date inconsistencies fixed (barcelona, london) and "Last update" typo corrected (paris)
- amsterdam.html: meta description added (was missing)
Improvements
- CSS improvements in style.css (responsive header, flexbox logo)
21 February 2026
Added
- Automated sitemap generation script to keep
sitemap.xmlupdated during builds - Netlify build configuration for automatic sitemap updates on deployment
Improved
- Standardized transport app link sections across all 13 city pages for a cleaner, more consistent look
- Updated master city page template to reflect the new standardized app link format
20 February 2026
Added
- Three new city pages: Hong Kong, Singapore, and Taipei — each with a full transit guide, fares, tips, and collapsible sections
- City data JSON files created for Hong Kong, Singapore, and Taipei
- Baggage storage and seasonal content entries for all three new cities
- Hero background image added to the homepage
- Contact page
- Changelog page
- Privacy Policy page
Changed
- Homepage: three city cards and dropdown options added; tagline updated to "13 cities across Europe and Asia"
- Footer across all pages: "About" link replaced with "Contact" link; Privacy Policy link now resolves
- About page updated to reflect 13 cities, including Asian cities
- Changelog page rewritten in English; inline CSS moved to
style.css
Improved
- Taipei: added exit number tip for MRT stations
- Singapore: added SimplyGo surcharge warning for foreign cards; added bus wave-off tip
- Taipei: added YouBike tourist registration workaround
Removed
- Two unused images removed from the image map