✨ Features
- Locale auto-detection:
LocaleServiceauto-detects published locales fromBlogPostTranslationandCmsPageTranslation, cached and invalidated on content changes - Locale disable toggles: New
locales_disabledcheckbox list in settings — disabled locales return 404 on the frontend - Multilingual Settings UI redesign: Auto-detect toggle + conditional manual textarea fallback, default locale now a
<select>with human-readable names - Flag emojis:
localeFlag()helper with 26-locale mapping added to navigation and language-switcher - CMS content rendering:
default.blade.phprenders$contentand$blocks; fix for overriding published views resolved - CLI import fix:
detectCmsPageFormat()delegates toCmsPageImportExportService - Per-translation CMS page editing:
EditCmsPageTranslation.phpwithCmsBlockBuilder, eliminating combinatorial explosion - Architecture redesign: Single-form replaced with translation grid using
Repeater::make('translations')->relationship() - Install page translations: Full JSON translation for 10 locales (7 blocks each, 4 content blocks translated)
- INSTALL.md: Step-by-step guide from zero to running blog
🐛 Bug Fixes
- Fix
Livewire PropertyNotFoundExceptionby adding missinglocales_auto_detectandlocales_disabledproperties toBlogrSettings - Fix CMS page content/blocks rendering: removed overriding published views and cleared view cache
✅ Tests
- 911 passing tests (56 skipped, ~2720 assertions)
- New test files:
LocaleServiceTest,CmsPageDisabledLocaleTest,CmsPageTranslationEditTest - 4 new disabled filtering tests, 2 new
availableLocales()tests, 3 route-level disabled locale tests