Files
momentry_studio/src/router/index.ts
Momentry Studio 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

45 lines
1.3 KiB
TypeScript

import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
import SearchView from '../views/SearchView.vue'
import LibraryView from '../views/LibraryView.vue'
import PeopleView from '../views/PeopleView.vue'
import PersonDetailView from '../views/PersonDetailView.vue'
import AdminView from '../views/AdminView.vue'
import ClientView from '../views/ClientView.vue'
import LoginView from '../views/LoginView.vue'
const routes: RouteRecordRaw[] = [
{ path: '/', redirect: '/search' },
{ path: '/login', name: 'Login', component: LoginView },
{ path: '/search', name: 'Search', component: SearchView },
{ path: '/library', name: 'Library', component: LibraryView },
{ path: '/face', name: 'Face', component: PeopleView },
{ path: '/face/:uuid', name: 'FaceDetail', component: PersonDetailView },
{ path: '/admin', name: 'Admin', component: AdminView },
{ path: '/client', name: 'Client', component: ClientView }
]
const router = createRouter({
history: createWebHistory(),
routes
})
router.beforeEach((to, _from, next) => {
const token = localStorage.getItem('token')
const isLoggedIn = !!token
if (to.path === '/login') {
if (isLoggedIn) {
next('/search')
} else {
next()
}
} else {
if (isLoggedIn) {
next()
} else {
next('/login')
}
}
})
export default router