Changes:
- Move locale.update route outside auth middleware
- Update LocaleController to support both authenticated and guest users
- Guest users: Save locale preference to session only
- Authenticated users: Save to both session and database
- Add language switcher dropdown to header for all users
- Display current language with globe icon
- Show all 8 supported languages in dropdown
- Highlight currently selected language with checkmark
This allows non-logged-in users to change the interface language,
improving accessibility for international visitors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add DocumentSeeder with Home, Getting Started, and Markdown Guide
- Update DatabaseSeeder to call UserSeeder and DocumentSeeder
- Update UserSeeder to set is_admin flag
- Update README with seeder documentation
Major features:
- Switch from slug-based to ID-based routing (/documents/123)
- Enable title editing with automatic slug/path regeneration
- Auto-generate folder structure from title slashes (e.g., Laravel/Livewire/Components)
- Persist sidebar folder open/close state using localStorage
- Remove slug unique constraint (ID routing makes it unnecessary)
- Implement recursive tree view with multi-level folder support
Architecture changes:
- DocumentService: Add generatePathAndSlug() for title-based path generation
- Routes: Change from {document:slug} to {document} for ID binding
- SidebarTree: Extract recursive rendering to partials/tree-item.blade.php
- Database: Remove unique constraint from documents.slug column
UI improvements:
- Display only last path component in sidebar (Components vs Laravel/Livewire/Components)
- Folder state persists across page navigation via localStorage
- Title field accepts slashes for folder organization
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>