v0.4.0
Breaking Changes
Postcontent type renamed toArticle:Sayfa.ContentTypes.Postis nowSayfa.ContentTypes.Article. Content files inposts/directories should move toarticles/, URLs change from/posts/{slug}/to/articles/{slug}/, and thelayout: "post"front matter key should be updated tolayout: "article". Therecent_postsandrelated_postsblocks are renamed torecent_articlesandrelated_articlesrespectively.
Added
- Asset digesting: The builder now computes content hashes for compiled CSS and JS files and rewrites references in the base layout to cache-busted URLs (e.g.
app-a1b2c3d4.css), enabling long-lived caching in production. - Language switcher
variant:assign: Render multiple language switcher instances on the same page with unique element IDs by passingvariant: :desktoporvariant: :mobile. - Language switcher home fallback: The language switcher no longer hides when a page has no verified translation — it falls back to the target language's home path so the switcher is always visible.
AGENTS.md: Guidance file for AI coding agents working on the Sayfa codebase.
Changed
- Default theme rewritten with Catppuccin Latte/Mocha palette: The entire default theme CSS has been rewritten using the Catppuccin color system. Latte (light) and Mocha (dark) palettes auto-switch via
prefers-color-scheme. All palette tokens are registered as--color-ctp-*Tailwind utilities via@theme inline. Feed tooltip contrast meets WCAG AA in both modes. - Semantic CSS component classes: All block modules now emit semantic component class names (e.g.
.header-shell,.content-card,.toc-nav) instead of raw Tailwind utilities. Styles are centralized inmain.css. - Breadcrumb block redesigned as a back-link: The full
<nav>breadcrumb trail is replaced with a minimal← Sectionback link. Bare pages emit only JSON-LDBreadcrumbListstructured data without a visible link. - Arabic font loading stabilized:
@font-facedeclarations for Arabic fonts now load reliably across builds.
Full Changelog: v0.3.3...v0.4.0