Changelog
WHAT'S SHIPPED
Every fix, perf win, and feature that went out the door — straight from the founder's terminal. This page is updated whenever something lands in production. If you spot something broken, ping us.
- NEW
Publish queue visible in the admin blog dashboard
The admin blog page now shows a Publish Queue card at the top: next 5 scheduled posts with relative times ("in 11 hours", "tomorrow"), a pulsing indicator, and a one-click Publish now button on each. The full post table is sorted scheduled-first (next-to-publish on top) with the same Publish now action per row. Overdue posts — scheduled times that have already passed — get an amber warning so missed slots never go unnoticed.
- NEW
6 new blog posts queued through July 10
Added six SEO-targeted posts to the content calendar: Japan safety, common Southeast Asia scams, the full travel safety checklist, best time to visit 10 safe countries, Portugal vs Spain comparison, and the safest Caribbean islands. Each is 760-1040 words of original, source-cited content, scheduled 1 per day at 14:00 UTC. Country and region tags are tuned so the new interlinking lights up the right country pages on publish (Japan, all Asian countries, all European countries, all Caribbean/Americas countries). The blog now has 11 posts scheduled through 2026-07-10, plus the 4 already live.
- NEW
Country index: risk-level filters, intro copy, full schema
The /countries page now leads with a one-sentence value prop and quick-pick risk chips (All / L1 / L2 / L3 / L4) alongside the existing region and search filters, plus a 'Showing X of 250' counter with a one-click reset. A data-sources line (State Dept, WHO, Timatic, CDC) sits under the header. The page now exports proper SEO metadata and ships a CollectionPage + ItemList JSON-LD listing all 250 country page URLs — the index preloads the country list server-side so the structured data is in the first render.
- NEW
Share buttons + weekly safety digest signup
Every country page and blog post now has one-click share to X, WhatsApp, email, and copy link (blog posts also include LinkedIn). New 'Get the Weekly Travel Safety Digest' signup form lives at the bottom of the country page, the blog index, and every blog post. The signup writes to the existing email list and unlocks a future weekly newsletter.
- BUG
Fixed 250 country pages silently showing 'Not Found'
Country page URLs like /countries/mexico were returning HTTP 200 but rendering the 'Not Found' screen because the data lookup was using the slug where a 3-letter code was expected. The matching is now slug-based and resolves through the country list, so every country page loads real data again.
- NEW
Country pages now link to related blog posts
Each of the 250 country pages now shows a 'From the Blog' section that surfaces posts tagged with the country's name (exact match scores highest), tokens in the name, or the country's region. The new Italy scams, Level 4, Thailand, Europe families, and digital nomad posts will auto-appear on the relevant country pages when they publish.
- NEW
Blog hub + admin blog/banner managers
Launched /blog with the first 4 articles from the SEO content plan (Levels 1-4 explainer, Mexico advisory, solo female travel, Europe scams). New /admin/blog for full post CRUD with revisions, plus /admin/banners for the announcement bar (max 12-hr window, A/B variants, weight-based selection). All announcement banners now editable from the dashboard; the static lib/announcements.ts stays as a fallback. A/B bucketing: client picks a stable variant (a/b/c/d) in localStorage and passes it to /api/v1/banners/active?variant=. Scheduled-publish cron wired to systemd timer (runs every 60s).
- NEW
Country pages: SEO + FAQ + related countries
Each of the 250 country pages now ships a 2026-suffixed title, a longer meta description, an FAQ block with 4 questions, and a related-countries section. JSON-LD adds FAQPage, TouristDestination, dateModified, and author/publisher for E-E-A-T.
- FIX
Fixed country dropdowns hanging for ~11s
Country picker now uses a lightweight code+name query so dropdowns populate in under half a second.
- FIX
Premium PDF: corrected advisory level labels
Level 2 countries were showing the Level 1 label. Fixed across the free PDF, premium PDF, and email brief.
- FIX
Trip safety reports now render as proper tables
AI-generated report tables were showing raw markdown. The PDF and the on-page preview both parse them correctly now.
- FIX
X / Twitter sharing unblocked
Posts to X were silently failing for a few days. Reauthenticated the integration and verified end-to-end sharing is working again.
- NEW
Trip-level visa lookups
On any trip page, pick a passport and see visa requirements for every destination in one shot.
- PERF
Premium PDF: tighter page layout
Phrases section no longer leaves a big blank gap before the Local News page.
- NEW
Android app: closed testing on Google Play
12 opted-in testers required before we can push to production. DM if you want in.
Want to follow along in real time? @TravelsafeAI on X