Commit Graph

17 Commits

Author SHA1 Message Date
5b83936c4b livewire config fix 2025-11-29 17:53:18 +09:00
ef238891f5 fix: Set Livewire asset_url to null for subdirectory support
ASSET_URL was being used as the script src, causing:
<script src="https://domain.com/kb">

Setting asset_url to null lets Livewire use the correct default path.
2025-11-29 17:48:12 +09:00
a9b4b93d8c fix: Remove wire:navigate to fix MIME type error
Livewire 3's SPA navigation (wire:navigate) was causing the browser
to register document URLs as JavaScript sources, resulting in:
'Refused to execute script... MIME type text/html is not executable'

Removed wire:navigate from:
- partials/tree-item.blade.php (sidebar links)
- livewire/document-viewer.blade.php (backlinks)
- livewire/quick-switcher.blade.php (search results)

Pages will now do full page loads instead of SPA navigation.
2025-11-29 17:40:59 +09:00
9625268e67 fix: Add Livewire config and custom 404 page for subdirectory support
- Add config/livewire.php with app_url and asset_url settings
- Add custom 404 error page with consistent design
- Add error translations for all 8 languages

For subdirectory deployment:
1. Set APP_URL to include subdirectory (e.g., https://example.com/kb)
2. Set ASSET_URL if using CDN
3. Clear config cache after deployment
2025-11-29 17:27:40 +09:00
ac56889a87 fix: Use slug for Document route model binding
- Add getRouteKeyName() to return 'slug' for Document model
- Add resolveRouteBinding() to support both slug and ID lookups
- Update QuickSwitcher to use slug instead of ID
- Update quick-switcher blade to use slug in routes

This ensures URLs use readable slugs (e.g., /documents/home)
while maintaining backwards compatibility with ID-based URLs
2025-11-29 17:22:17 +09:00
893d3c7a69 fix: Replace hardcoded paths with route/url helpers for subdirectory support
Files updated:
- layouts/knowledge-base.blade.php - Use url('/') for home link
- layouts/navigation.blade.php - Use url('/') for nav links
- layouts/guest.blade.php - Use url('/') for logo link
- Document.php - Use route() for wiki links
- DocumentLink.php - Use route() for URL attribute
- AuthenticatedSessionController.php - Use url('/') for redirects
- DocumentEditor.php - Use url('/') for redirect
- ProfileController.php - Use url('/') for redirect

This ensures the app works when deployed in a subdirectory
2025-11-29 17:14:46 +09:00
25613eea05 php8.3 2025-11-29 15:54:35 +09:00
5519c311ad feat: Show last modified by user on document viewer
- Display updater name next to update time
- Fall back to creator if no updater is set
- Add modified_by translation for all 8 languages
2025-11-29 12:12:17 +09:00
d47c3a456f fix: Add logo icon to knowledge-base header
- Add application-logo component to header
- Wrap logo and title in link to home page
2025-11-29 12:08:05 +09:00
5b4f1b4970 fix: Add Livewire scripts to app layout for Alpine.js dropdown
- Add @livewireStyles to head
- Add @livewireScripts before closing body tag
- Fixes dropdown menu not working in admin panel
2025-11-29 12:05:49 +09:00
9bb2ff8ccc feat: Add i18n support for profile page
- Add profile section translations to all 8 language files
- Update profile/edit.blade.php header
- Update update-profile-information-form.blade.php
- Update update-password-form.blade.php
- Update delete-user-form.blade.php

Translated sections:
- Profile information form
- Password update form
- Account deletion form
2025-11-29 12:03:28 +09:00
cdf0bf4bad feat: Add multi-language support (i18n)
Languages supported (8):
- English (en)
- 日本語 (ja)
- Deutsch (de)
- Français (fr)
- Español (es)
- 简体中文 (zh-CN)
- 繁體中文 (zh-TW)
- 한국어 (ko)

Changes:
- Add locale column to users table
- Add SetLocale middleware for automatic locale detection
- Add LocaleController for language switching
- Create language files with translations for all UI elements
- Add language selector to user profile page
- Update all Blade views to use translation strings
2025-11-29 12:00:09 +09:00
ecfa21d56c feat: Add DocumentSeeder with initial documents
- 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
2025-11-29 11:40:08 +09:00
691ac566e2 docs: Update README.md with comprehensive project documentation
- Add feature overview and tech stack
- Update Docker service names to match compose.yml (kb_*)
- Add admin functionality documentation
- Add document creation guide with wiki links
- Add troubleshooting section
- Update setup instructions
2025-11-29 11:31:46 +09:00
a63e08327e container name fix 2025-11-29 11:28:25 +09:00
c11c05b3ea Add admin user management and improve UX
Features:
- Add user management for admins (CRUD operations)
- Add is_admin column to users table
- Add AdminMiddleware for authorization
- Add admin routes and views
- Add artisan command: user:set-admin

Improvements:
- Fix Quick Switcher: add x-data for Alpine.js dispatch
- Fix Quick Switcher: close on outside click
- Redirect non-admin users to front page after login
- Add Knowledge Base link in dashboard navigation
- Change app logo from Laravel to book icon
2025-11-29 11:08:17 +09:00
6e7f8566ef Implement ID-based routing and folder auto-generation from titles
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>
2025-11-29 09:41:38 +09:00