26ac0e90df
fix: 完成 B-1, B-2, B-4(proxy 硬编码移除 + re-scan 端点)
...
B-1: 移除 proxy 硬编码路径
- 移除 API_KEY 常量,改为 get_api_key() 从环境变量读取
- 移除 PROFILE_DIRS,改为 get_output_dir() 从环境变量读取
- 移除 output_bases (identity_matches, trace_profile),改为环境变量驱动
- 移除 ADMIN_CONFIG_PATH,改为 get_admin_config_path() 从环境变量读取
- 添加 dev fallback 支持开发环境
B-2: API key 改为环境变量
- MOMENTRY_API_KEY 环境变量必须设置
- 未设置时会明确报错启动
B-4: 改用 re-scan 端点
- 简化 doReprocess 函数从 92 行减少到 32 行
- 改用单一 POST /api/v1/re-scan API
- 显式传 auto_pipeline: true
- 移除 unregister → register → process 手动串接
- 原子性操作,避免中间失败留下不一致状态
环境变量:
- MOMENTRY_API_KEY (必需)
- MOMENTRY_OUTPUT_DIR (可选,默认 /Users/accusys/momentry/output)
- MOMENTRY_DATA_DIR (可选,默认 /Users/accusys/momentry/data)
- MOMENTRY_ADMIN_CONFIG (可选,默认 /Users/accusys/momentry/config/admin_config.json)
2026-10-04 15:00:45 +08:00
f3d75ebce8
feat: Library 批量注册 + PeopleView 修复 + 国际化
...
Library:
- 添加 checkbox 和鼠标框选功能
- Unregistered 卡片添加快速注册按钮
- 状态标签移至左下方,人脸图标移至左侧中间
- Deep Scan 改为 unregister -> register -> process
- 完整国际化(日语、繁体中文、英语)
PeopleView:
- 修复卡片不显示问题(使用 get_file_traces API)
- 移除对 identity_id 字段的依赖
其他:
- 添加日语语言包
- 添加 useDragSelect composable
- 新增文档:Face Bbox Null Bug Report
2026-10-01 00:42:13 +08:00
7b60ca3d2d
feat: add face filter components and integration guide
...
- useFaceFilter composable: manages face filtering state and API calls
- FaceFilterPanel component: UI for filtering controls
- FaceCard component: text-only face display card
- Integration guide: step-by-step guide for integrating into PeopleView
Implements hybrid filtering mode with:
- Instant mode: client-side filtering (5-10ms)
- Backend mode: server-side complex filtering
- Hybrid mode: backend + instant filtering (AND)
Uses actual Core API endpoints:
- GET /file/{uuid}/faces
- POST /file/{uuid}/faces/filter
- GET /file/{uuid}/face/{faceId}/filter-report
- GET /file/{uuid}/filter-stats
Preferences stored in localStorage.
2026-08-09 21:24:52 +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
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
c9964ce4fb
fix: use snake_case invoke commands
2026-06-15 11:56:55 +08:00
fb47acf67b
fix: add status field to PersonInfo struct
2026-06-15 04:10:40 +08:00
11b3b4b395
fix: zoom using CSS + cleanup
2026-06-14 23:33:05 +08:00
0a3619243e
feat: zoom in/out with Cmd+/Cmd-/Cmd+0
2026-06-14 23:27:54 +08:00
2ddf12bb03
feat: update_identity_status command + People ignore action
2026-06-14 22:55:44 +08:00
07d9ebda29
fix: Library thumbnail guard, Search People/Agent modes, People pagination debug
2026-06-14 20:34:36 +08:00
67c0a2b4a0
fix: get_people fetch all pages to include main characters
2026-06-14 19:55:52 +08:00
620736a170
fix: Tauri commands camelCase + PeopleView perPage
2026-06-14 19:02:15 +08:00
5687a56fd6
feat: Rust commands - PersonInfo starred, faces data key, video temp file, +5 new commands
2026-06-14 13:06:54 +08:00
3ba2120c8e
All API through Rust proxy, fix unregistered files null uuid, People enhancements
2026-06-14 11:05:23 +08:00
79e0a862d4
Initial commit: Momentry Studio v0.1.0
2026-06-13 17:49:02 +08:00