Commit Graph

9 Commits

Author SHA1 Message Date
fb9a55a64c feat: use new search/people API for People search mode 2026-07-25 20:33:15 +08:00
25f718c0d5 fix: remove duplicate case clauses in api/index.ts 2026-07-25 18:28:04 +08:00
8af2dc6128 feat: integrate new merge_groups API from Core Team
Replace merge_trace implementation with merge_groups API

Changes:
1. src/api/index.ts:
   - Add merge_groups API definition
   - POST /api/v1/file/:file_uuid/groups/merge
   - Parameters: file_uuid, source_groups[], target_group_name

2. src/views/PeopleView.vue:
   - Rewrite executeMerge() function
   - Use group names instead of trace IDs
   - Single API call for all groups
   - Remove trace-level loop

3. src/views/PeopleView.vue:
   - Delete updateClusterAfterMerge() function
   - No longer needed with new API

Benefits:
- ✅ Atomic operation (single API call)
- ✅ Correct merge behavior (groups, not traces)
- ✅ Better performance (1 call vs N calls)
- ✅ Data consistency guaranteed

API behavior:
- Merge N groups into 1 target group
- All traces from source groups merged to target
- Source groups deleted after merge
- Returns traces_merged count

Core API: Implemented by Core Team (2026-07-25)
Status: Ready for testing
2026-07-25 14:25:35 +08:00
cb7e1ba0ba fix: resolve TypeScript compilation errors
Fixes:
- VideoPlayer.vue: restore allTags, filteredMarks, marksByTag (removed by mistake)
- PeopleView.vue: fix frameTime scope in playFaceDetailVideo catch block
- Both errors caused white screen on build failure

Root cause:
1. visibleTags duplicate declaration (old + new logic)
2. frameTime undefined in catch block (scope issue)

Solution:
1. Keep allTags/filteredMarks/marksByTag (needed in template)
2. Keep visibleTags (new logic for processor toggles)
3. Move frameTime calculation to correct scope in catch block
2026-07-24 23:33:40 +08:00
5951aca086 feat: frame-based positioning and mark system foundation
Core Changes:
- Fix SearchView to use start_frame/end_frame directly (no time*fps conversion)
- Add hard_delete support to delete_trace API
- VideoPlayer: Main timeline + Mark system foundation
- Proxy: Add local routes for auth, media, identity-matches, cluster-results
- Add .gitignore to exclude build artifacts and dependencies

Design Documents:
- Multi-track Mark system design (.opencode/plans/)
- Video editing positioning standards research

Files Modified:
- src/views/SearchView.vue: Frame positioning, ensureMinDuration (240 frames)
- src/views/PeopleView.vue: batchDeleteGroups with hard_delete
- src/api/index.ts: delete_trace with hard_delete body
- src/components/VideoPlayer.vue: Timeline + Mark UI
- src-tauri/src/proxy.rs: New local routes
- AGENTS.md: Update documentation
2026-07-24 20:19:47 +08:00
98a3d79701 feat: add ASR status display in search results, fix unassigned traces param name 2026-06-27 11:41:03 +08:00
691b38fe96 fix: m4mini deployment issues - duplicate script setup, auth redirect, Tauri bypass 2026-06-26 20:33:35 +08:00
f915aaf794 feat: pending identity sorting, face detail modal, video player fps, processor counts 2026-06-24 02:02:33 +08:00
7855983dc1 feat: bind/unbind by id, video streaming proxy, unmute default, library refresh, hamburger click-outside
- Core API: bind/unbind accept id (integer PK) when face_id is null
- Tauri proxy: stream video responses instead of buffering for seek bar
- VideoPlayer: remove muted attribute, unmute by default
- LibraryView: call invalidateFiles() before ensureFiles() on register/unregister
- PeopleView: close sort panel on click-outside, not just hamburger toggle
- bind_face: prefer face_id, fallback to id when face_id is null
2026-06-18 22:24:03 +08:00