- Local variable 'sessions' was shadowing the ref 'sessions'
- sessions.value = sessions was not updating the ref
- Renamed local variable to 'sessionList' and properly assign to sessions.value
- This fixes sessions not appearing in history list after save
- Save button now prompts for session name
- Uses same rename dialog with different labels
- confirmSaveSession saves messages to MarkBase SQLite
- Session appears in history list after save
- Added 💾 Save button to history header
- saveCurrentSession saves all messages to current session
- If no session exists, creates one with timestamp name
- Saved sessions appear in history list for selection
- Added localStorage.removeItem(SESSION_STORAGE_KEY) to handleNewSession
- Prevents old messages from reappearing after page refresh
- New session now starts completely clean
- Removed incorrect localhost conditional that used /health (404)
- Now uses /api/v1/health for both localhost and remote access
- Added console.error logging for debugging
- Aligns with Core API route design
- Card now shows vlm_description_localized directly (no 【ZH-TW】 label)
- Avoids incorrect language labels from Core API text_content field
- Japanese content now displays correctly without wrong prefix
- Added last_query field to SearchSession interface
- loadSessions now fetches last user message for each session
- Session list displays: mode badge, title, last query, message count, time
- Added .hs-query CSS style for query text
- Added VLM description sections (localized + English) to text detail modal
- Added VLM tags display with both local and English labels
- Styled with language labels, tag badges, and proper spacing
- Fixed onMounted to properly set currentSession after creating default
- startNewChat now creates a new session when called
- Ensure authToken before all session API calls
- Added ensureAuthToken() function that auto-logs in with demo/demo123
- All session API functions now call ensureAuthToken() first
- Fixes 'Missing Authorization header' errors
- Sessions now save correctly without manual admin login
- Created useSearchSession composable for session management
- Added 7 API endpoints in api/index.ts
- Updated SearchView.vue to use sessions instead of history
- Session sidebar with create, rename, delete functionality
- Auto-save messages to current session after each search
- Auto-create default session on first load
- Updated CSS for session active state and new session button
- Removed thumbnail_url from VLM scene results (lines 901, 1312)
- Scene thumbnail files often don't exist for unprocessed videos
- Frontend now falls back to regular thumbnail loading mechanism
- Eliminates 404 errors in browser console
- Scene thumbnails often don't exist for unprocessed files
- Use regular thumbnail fallback instead of scene-specific URLs
- Eliminates 404 errors in browser console for scene_*.jpg requests
- Scene thumbnails may not exist for all files
- Added @error handler to hide broken images instead of showing 404
- Cleaner UI when scene data is incomplete
- /api/v2/mbe/models endpoint doesn't exist on MarkBase
- Removing the call eliminates the 404 error on page load
- MBE model selector dropdown will remain empty but functional
- save_admin_config_handler now creates parent directory if it doesn't exist
- Prevents 500 error when config/ directory is missing
- Enables first-time config save without manual directory creation
- saveConfig no longer throws error when current config returns 404
- Creates new config file with current values if none exists
- User can save config for the first time without errors
- loadConfig now uses default values when config file doesn't exist (404)
- No error shown to user when config file is missing
- Config tab loads with empty defaults instead of error message
- loadMbeModels no longer logs console.error for 404 (endpoint may not exist)
- loadUsers removed from onMounted - only called after admin login
- Prevents 401 errors on page load before user has authenticated
- Users tab now only loads data after successful login
- saveUploadPath now validates path via POST /api/v2/settings/validate
- Shows clear error message if path doesn't exist or isn't writable
- Only saves if validation passes (valid: true)
- 5 validation checks: format, existence, type, read/write permissions
- Added useAdminAuth composable for login/logout/token management
- Admin Users tab now requires login before showing users
- loadUsers/loadShares now use direct fetch with Bearer token
- Added login form with username/password fields
- Token stored in localStorage with expiry check
- Default credentials: demo/demo123
- Replaced deprecated /api/v2/config with new /api/v2/settings
- loadSettings() now uses GET /api/v2/settings (structured JSON)
- saveUploadPath() now uses POST /api/v2/settings
- Removed PostgreSQL migration error handling (no longer needed)
- Settings page now works correctly with SQLite-only MarkBase
- Created MARKBASE_API_REQUIREMENTS.md with detailed API specs
- Requests GET/POST /api/v2/settings endpoints from MarkBase team
- Documents current issues with /api/v2/config returning 500
- Defines required fields, error handling, and priority levels
- loadSettings now shows detailed error from MarkBase response body
- MarkBase /api/v2/config returns 500 when config file is incomplete
- Error message now includes actual error details instead of just HTTP status
- Previously proxy accessed llama-server /health endpoint directly
- Now forwards /api/v1/mbe/health to Core API (3002) which has full health check
- Returns complete health info: status, model, uptime
- Fixes frontend not showing 'online' status in Admin Settings
- Vite now forwards /health to Rust proxy (port 8888)
- Required for Admin Panel proxy health check to work in dev mode
- External Caddy reverse proxy may also need /health forwarding rule
- loadServiceUrls: use window.location.origin for remote access, localhost for local dev
- testCoreApi: use /api/v1/health for remote, /health for localhost
- testProxy: health check path works for both
- testMbe: already uses getApiBase() which handles both cases
This fixes the issue where Admin Panel showed offline when accessed via
https://nextorage.momentry.ddns.net because localhost health checks
point to user's machine, not the server.
- useVLMScenes(fileUuid): load scenes for a specific file with thumbnails
- useVLMSearch(): search VLM scenes and traces with bilingual support
- useSceneThumbnail(fileUuid, sceneIndex): load scene thumbnail URLs
- TypeScript interfaces: VLMTag, VLMScene, VLMTrace, FileScene
- Uses direct HTTP calls via getApiBase() (no Tauri IPC needed)
- Follows Vue 3 composable best practices (ref, loading, error states)
- Core API now returns both vlm_description (EN) and vlm_description_localized (JA)
- Removed duplicate API calls (was fetching EN + JA separately)
- Single API call with output_language param, uses both fields from response
- Load More also updated to use results array and correct field names
- Format: 【JA】localized text...【English】english text...