Commit Graph
17 Commits
Author SHA1 Message Date
Yusuf İpek fe7235052e Add guest upload tokens and share-session aware permissions 2026-02-23 18:17:22 +03:00
Yusuf İpek 9058317247 feat(share): add video-level secure share links with password unlock and session-based watch/comment access 2026-02-23 17:11:32 +03:00
Yusuf İpek cdd46cf05e fix: Retrieve all video versions by removing the isActive filter and take limit from API queries. 2026-02-20 13:32:29 +03:00
Yusuf İpek 81c0d41a26 feat(watch): add pause and visibility change progress saving with rate limiting
- Save watch progress immediately when video is paused using player instance directly
- Save progress when tab becomes hidden (user switches tabs or minimizes)
- Add rate limiting (30/min) to watch progress API endpoint to prevent abuse
- Use player instance directly instead of React state for current time/duration to avoid stale values
2026-02-15 09:22:25 +03:00
Yusuf İpek 1c7ee70815 feat(optimizations): adds memoization for performance optimization
Add currentUserName to video API responses and session for display in comments. Also adds memoization for performance optimization and implements Page Visibility API to pause comment polling when tab is hidden.
2026-02-14 16:21:52 +03:00
Yusuf İpek 20005f1a15 fix(api): add rate limiting, file size validation, and timeout handling
- Add Content-Length header check for early file size validation on audio upload
- Add rate limiting (60 req/min) to public watch endpoint
- Add 10-second timeout with AbortController for YouTube and Vimeo oEmbed requests
- Add automatic rate limit cleanup interval for self-hosted servers
- Fix null check for comment.replies in video page content
- Add checkWorkspaceAccess helper for workspace authorization
2026-02-14 15:59:30 +03:00
Yusuf İpek 413fc9cec6 fix(api): add project access validation to video progress route 2026-02-14 15:28:50 +03:00
Yusuf İpek 88c74d646e feat: add video watch progress tracking with resume functionality
Implements a complete watch progress system that allows users to:
- Save playback position automatically every 5 seconds while watching
- Resume from last position when returning to a video
- Save progress on page leave using sendBeacon for reliability

Also includes:
- Optimized slug generation in projects and workspaces APIs (single query vs loop)
- Added isActive filter to version queries across all video endpoints
- Added pagination support for video and comment queries
- Enhanced database pool management with connection limits and graceful shutdown
- New WatchProgress Prisma model with user-version relations
2026-02-14 15:25:32 +03:00
Yusuf İpek ca65cf8f58 feat: Implement video version management API, enable comment tag editing, and enhance video duration display to include hours. 2026-02-10 14:48:15 +03:00
Yusuf İpek 062a0aec83 refactor(auth): Centralize project access checks
- Move `checkProjectAccess` function to `lib/auth.ts`
- Consolidate project access logic into a single utility
- Simplify access checks in video API routes
- Remove redundant project member inclusions from queries
2026-02-08 14:17:12 +03:00
Yusuf İpek 05150d5a20 feat(comments): Grant workspace members access to comments
- Allow workspace members to view comments
- Enable workspace members to resolve/unresolve comments
- Permit workspace members to delete comments
- Verify workspace membership or ownership for access
2026-02-08 13:54:04 +03:00
Yusuf İpek f8afec0291 refactor: Update fetch requests to disable caching for video data retrieval 2026-02-07 18:41:07 +03:00
Yusuf İpek 6e8170d080 feat(api): Implement API response Cache-Control
- Introduce `withCacheControl` utility function for API responses.
- Apply `private, no-store` to authentication and data modification (POST, PATCH, DELETE) routes.
- Apply `private, no-cache` to sensitive data retrieval (GET) routes.
- Enhance security by preventing caching of private user data.
- Ensure fresh data is always fetched for authenticated API responses.
2026-02-07 16:51:46 +03:00
Yusuf İpek 373aab964c feat: Implement robust error/not-found pages & UI components
- Introduce dedicated error pages for dashboard and video routes
- Add specific not-found pages for dashboard, projects, videos, and settings
- Implement global `not-found.tsx` for general unhandled routes
- Integrate root and dashboard layouts with ErrorBoundary and Suspense
- Add new UI components: Accordion, Hover Card, Menubar, Navigation Menu, Select, Tabs
- Update Navbar to utilize the new Navigation Menu component
- Enhance `button` component with a `link` variant for better styling
- Refine existing UI components (dialog, dropdown, input, etc.)
- Update Tailwind config with new colors and animation extensions
2026-02-07 15:53:31 +03:00
Yusuf İpek 5856c42181 feat: implement comment tagging system with CRUD operations
- Removed Telegram setup instructions from settings page.
- Enhanced video and version comment APIs to include tag information.
- Added new CommentTag model in Prisma schema for managing tags.
- Created API routes for managing tags (GET, POST, PATCH, DELETE).
- Updated WatchPage to support tag selection and display.
- Introduced keyboard shortcuts modal for improved user experience.
- Added tag selection dropdown in comment input area.
2026-02-07 14:46:17 +03:00
Yusuf İpek 88dcf9514c feat: Introduce guest access for video viewing, implement user notification settings via email and Telegram, and add rate limiting infrastructure. 2026-02-07 13:56:26 +03:00
Yusuf İpek 0228020041 feat(video-card): add edit, versioning, and delete functionality with dialogs
- Implemented edit dialog for updating video title and description.
- Added functionality to create new video versions with URL validation.
- Included delete confirmation dialog for video removal.
- Enhanced UI with loading indicators and error handling.
- Updated video card layout for better user interaction.

feat(youtube): extend YT namespace with playback rate methods

- Added methods to set and get playback rate.
- Included method to retrieve available playback rates.
2026-02-07 08:17:25 +03:00