- API returns correct trace_ids for each cluster
- Previously, loadClusterResults overwrote trace_ids from clusterTraceIdsMap
- clusterTraceIdsMap uses cluster_id from face_cluster.json (Person_0, etc.)
- But groups may have custom names (Group_aaa), causing key mismatch
- Now only uses clusterTraceIdsMap as fallback when API trace_ids are empty
- Fixes 'Group_aaa 有兩個' display issue caused by lost trace_ids
- Added /api/v1/files, /api/v1/file/, /api/v1/jobs, /api/v1/bookmarks to port 3002
- Fixes 500 errors when MarkBase (port 8888) is not running
- All Core API endpoints now correctly route to port 3002
- Added proxy routes for /api/v1/file/*/json/face_cluster, /api/v1/file/*/traces, /api/v1/admin/config, /api/v1/file-profile
- Added requiresApiKey: true to get_cluster_results
- Fixes 500 errors when loading cluster results and other Core API endpoints
- Changed order: loadClusterNames now runs BEFORE setClusterResults
- Removed condition that skipped loading names for 'Person_X' clusters
- Now always loads custom names from trace profiles (DB is source of truth)
- Fixes rename persistence - custom names are now correctly saved to cache
- Added requiresApiKey: true to register_file, unregister_file, merge_groups, update_trace_profile_group
- Added API key header injection in httpCall
- Simplified setClusterResults to just cache data (names now come from database)
- Removed localStorage custom name logic (backend handles persistence)
- API returns cluster_id as integer (1, 2) but localStorage saves with string keys
- Now tries matching by both cluster_id and original name
- Fixes rename persistence not being applied after page refresh
- Added requiresApiKey?: boolean to buildHttpRequest return type
- Added API key header injection in httpCall
- Fixes 401 errors on register, unregister, merge, and rename operations
- Previously setClusterResults read from clusterResultsCache which gets deleted by refresh()
- Now reads directly from localStorage to preserve custom names across refresh
- Fixes Face Group rename not persisting after page refresh
- Moved navigation arrows outside modal overlay for proper z-index
- Added pointer-events: none to overlay to allow arrow clicks
- Simplified trace matching to use only trace_id
- Added visible debug info in modal header (nav:xxx idx:xxx list:xxx)
- Added console logging for navigation context setup
- Moved .ms-fs-nav-arrow buttons outside .ms-modal-overlay div
- Updated z-index to dynamic faceDetailZIndex + 100
- Fixes stacking context issue where arrows were unclickable
- Arrows now render as siblings of overlay with proper z-index
- Navigation arrows z-index increased from 10010 to 10100
- Fixes issue where modal overlay was covering the arrows
- Left/right buttons now clickable in face detail modal
- Added getUnregFilePath() helper to construct full path for unregistered files
- Updated template to use getUnregFilePath() for thumbnail loading
- Updated loadFiles() to load thumbnails for unregistered files with constructed paths
- Unregistered files now show thumbnails instead of placeholder icons
- quickRegister now builds full path when file_path is empty
- Uses default upload base path: /Users/accusys/momentry/var/sftpgo/data/demo
- Fixes 500 error when registering unregistered files
- 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