Changelog
Changelog
What changed, newest first. Dates are ISO.
-
Business-grade polish
- JSON-LD structured data (Article, Person, BreadcrumbList, CollectionPage) for Google rich results
- hreflang VI↔EN on every mirrored page
- Open Graph article:* meta tags on all posts
- Terms of Service (VI/EN)
- Changelog to track progress
- Contact form /contact with Turnstile, stored in D1
- Bilingual 500 error page
-
Polish
- Privacy policy VI/EN with data-collection detail and user rights
- Orange reading progress bar on every post
- robots.txt + humans.txt, Cloudflare auto-blocks AI crawlers
-
Editorial workflow
- Draft preview URLs /preview/[slug], noindex
- Weekly digest cron, Sundays 09:00 ICT
- Admin dashboard adds Drafts and Digests tabs
-
Credibility & email
- Resend integration for bilingual HTML confirmation emails
- Turnstile captcha on every subscribe form
- Cloudflare Web Analytics, no cookies
- Admin /admin/subscribers with table, status tabs, CSV export, gated by Cloudflare Access
-
Custom domain + backend
- Pointed cloudsecop.net + www. at the khavan worker, retired the placeholder
- D1 database khavan-subscribers with sliding-window rate limit
- Worker API /api/subscribe, /api/confirm/:token, /api/unsubscribe/:token
-
Multi-language + brand
- i18n with Vietnamese as default, English at /en/
- New logo (orange speech bubble), favicon, OG image generator
- Shiki syntax highlighting dual theme
- Tri-state theme: system / light / dark
-
CF blog-style redesign
- 3-tier header: utility strip, brand + subscribe, category nav
- Post card with multi-author avatars
- Typography Inter, dropped serif
- Footer with link grid + newsletter
-
Launch
- Astro 5 + Cloudflare Workers Assets
- GitHub Actions CI/CD on every push
- Pagefind build-time search
- Dark mode, RSS, sitemap, author pages