Commit Graph
100 Commits
Author SHA1 Message Date
Yusuf İpek 26cf58a28c feat(auth): enhance project access handling with pre-fetched data and new utility functions 2026-04-09 17:17:39 +03:00
Yusuf İpek 173261149f feat(comments): implement pagination for comments retrieval with limit and offset 2026-04-09 16:35:02 +03:00
Yusuf İpek 11dfa4938f feat(docker): update postgres configuration for improved performance 2026-04-09 16:34:29 +03:00
Yusuf İpek e97d60cf36 feat(docker): add Docker support with configuration files and entrypoint scripts 2026-04-09 15:54:03 +03:00
Yusuf İpek b1b1715578 Refactor registration and dashboard features to support invite codes and Bunny uploads
- Moved registration logic to a new client component for better separation of concerns.
- Integrated invite code requirement based on feature flags in the registration process.
- Enhanced dashboard functionality to conditionally enable Bunny uploads based on feature flags.
- Updated various components and API routes to check for Bunny uploads and Stripe billing feature flags.
- Added new feature flag utilities for managing feature toggles in the application.
2026-04-08 18:46:12 +03:00
Yusuf İpek 6f22b0bf8b feat(billing): integrate Stripe for subscription management and billing access
- Added billing-related fields to the User model in the database.
- Implemented functions for managing billing access, including trial periods and subscription statuses.
- Created new billing utility functions for Stripe integration.
- Updated onboarding page to include billing overview and workspace creation eligibility.
- Enhanced route access checks to require billing access for certain actions.
- Implemented cleanup scripts for expired billing workspaces and associated media.
- Updated header component to conditionally show app navigation based on billing access.
- Added new migrations for billing-related database changes.
2026-04-08 17:50:40 +03:00
Yusuf İpek 8db7a031e6 fix(footer): update copyright year and company name in footer 2026-03-20 22:33:35 +03:00
Yusuf İpek f5f96e6f9f feat(rate-limit): add environment variable to disable rate limiting for local testing 2026-03-20 22:32:26 +03:00
Yusuf İpek 14b2809aed feat(comments-pane): refactor comments display logic for improved asset and comment pane management 2026-03-08 18:50:09 +03:00
Yusuf İpek 4746085fc3 feat(audio-upload): implement audio file size validation and error handling 2026-03-08 18:46:53 +03:00
Yusuf İpek 8a4553d351 feat(video-upload): enhance video file handling with drag-and-drop support and validation 2026-03-06 09:04:40 +03:00
Yusuf İpek 185293a45d fix(search-modal): update project item href to use new URL structure 2026-03-01 19:28:07 +03:00
Yusuf İpek 490e800e69 feat(search): implement search API with rate limiting and results fetching 2026-03-01 19:18:32 +03:00
Yusuf İpek 75535e8cda feat(comments): add drag-and-drop support for image attachments and enhance image validation 2026-03-01 18:53:54 +03:00
Yusuf İpek 147e5520a3 feat(notifications): update Telegram bot support and update settings management 2026-03-01 17:28:25 +03:00
Yusuf İpek f011ce4f05 Merge pull request #2 from yusufipk/worktree-compare-optimization
perf(compare): optimize timeline with RAF loop and direct DOM mutation
2026-02-28 16:02:31 +03:00
Yusuf İpekandClaude Sonnet 4.6 9a86ad02a1 perf(compare): optimize timeline rendering with RAF loop and direct DOM mutation
Replace per-frame React state updates with ref-based tracking and direct DOM
mutation for the progress bar, playhead, and timecode. React state is now
throttled to ~4 commits/sec (~250ms), eliminating unnecessary re-renders on
every animation frame during playback.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-02-28 16:00:58 +03:00
Yusuf İpek dc40847371 feat(notifications): enhance notification preferences with new version and approval event options 2026-02-28 11:10:41 +03:00
Yusuf İpek 975ff603e1 feat: add audio asset support with recording and upload functionality
- Implemented audio asset handling in the API, including download and deletion routes.
- Added audio content type mappings and extraction functions for audio file names and keys.
- Enhanced the asset management UI to support audio uploads, including recording capabilities.
- Updated the database schema to accommodate audio assets with new enum values.
- Integrated audio playback features in the asset list and comment sections.
- Improved user experience with drag-and-drop support for audio files.
2026-02-28 11:01:10 +03:00
Yusuf İpek 9dde7dce44 Merge pull request #1 from yusufipk/worktree-onboarding
feat: onboarding wizard flow
2026-02-28 10:39:22 +03:00
Yusuf İpekandClaude Sonnet 4.6 31fda8a28c feat(onboarding): add onboarding wizard flow
- Add `onboardingCompletedAt` field to User model + migration
- Add AUDIO/R2_AUDIO enum values to schema
- Gate dashboard behind onboarding check; redirect to /onboarding if not completed
- Add /onboarding page + layout with 5-step wizard (welcome, workspace, project, video info, notifications)
- Add POST /api/onboarding/complete endpoint to mark onboarding done

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-02-28 10:35:01 +03:00
Yusuf İpekandClaude Sonnet 4.6 d4f4220520 fix(onboarding): handle completion API failure instead of silently redirecting
Check res.ok and catch network errors in completeOnboarding; surface a
toast and bail early rather than pushing to /dashboard on failure,
preventing a redirect loop back to /onboarding.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-02-28 10:31:57 +03:00
Yusuf İpek 3aedc46351 feat: Redesign the landing page's "How It Works" section with a new grid layout, updated icons, and improved styling, while removing a redundant GSAP reveal animation. 2026-02-26 17:33:15 +03:00
Yusuf İpek 53f7c326df feat: add sharp dependency to enhance image processing capabilities 2026-02-26 15:34:40 +03:00
Yusuf İpek bbf44fd0aa feat: Introduce pauseAfterSeek option to the video player, refresh landing page content and animations, and update the dashboard image. 2026-02-26 15:19:11 +03:00
Yusuf İpek 8d59095e72 feat(video-assets): implement ETag handling and polling for asset updates 2026-02-26 12:51:58 +03:00
Yusuf İpek 60add2a1c4 feat(comments): implement asset handling for attached images in comment creation 2026-02-26 12:45:23 +03:00
Yusuf İpek 4ea6099508 feat(bunny-cdn): refactor CDN hostname resolution and update asset URLs for improved flexibility 2026-02-26 11:53:03 +03:00
Yusuf İpek 3522c3da30 feat(video-page): enhance Bunny asset handling and playback features
- Added support for tracking Bunny asset readiness and processing states.
- Implemented thumbnail loading error handling and retry logic for Bunny assets.
- Introduced a "Ready to play" indicator for Bunny assets.
- Enhanced Bunny preview player with playback speed and quality selection options.
- Improved state management for video playback, including resuming playback after source switches.
- Updated package.json to streamline database setup commands.
2026-02-26 11:48:21 +03:00
Yusuf İpek bb43a07234 refactor(db): move rate-limit extras into Prisma migration and remove db-extras script 2026-02-26 10:40:36 +03:00
Yusuf İpek 6dd44953a3 feat(video-upload): add global drag-and-drop uploader with project selection and permission gating 2026-02-26 10:31:51 +03:00
Yusuf İpek 15fa9452a4 feat(video-player): add Bunny original-source fallback and quality option, plus approval/download UI tweaks 2026-02-26 10:02:11 +03:00
Yusuf İpek 7f87d717d2 Improve asset mention UX with empty-state dropdown and icon-only chips 2026-02-25 19:09:37 +03:00
Yusuf İpek 76d37d02e5 feat: make media cleanup best-effort with warning summaries and enforce video/workspace management access 2026-02-25 18:59:02 +03:00
Yusuf İpek 9ce033d306 feat(video-assets): add full video asset system (uploads, downloads, @mentions, and cleanup/billing integration) 2026-02-25 18:34:03 +03:00
Yusuf İpek 6eea327083 refactor(dashboard): centralize access guards and split interactive pages into client components 2026-02-25 16:42:47 +03:00
Yusuf İpek a2b07b3e19 feat: add approvals workflow and unified member invitation management across projects, workspaces, and videos 2026-02-25 16:24:45 +03:00
Yusuf İpek 0ae1becc1b refactor(video-page): split video page into modular components, hooks, and shared types 2026-02-25 15:01:37 +03:00
Yusuf İpek 86a995aed4 update landing page pricing section with revised cloud plan copy and new studio/agency tier 2026-02-24 20:16:20 +03:00
Yusuf İpek a096a5ea02 Remove pinned timestamp control from video page comment composer 2026-02-24 18:30:50 +03:00
Yusuf İpek 068bc6f788 fix(player): stop YouTube iframe re-init loop 2026-02-24 18:23:20 +03:00
Yusuf İpek 191b352520 remove unused admin users and stats API routes 2026-02-24 18:13:14 +03:00
Yusuf İpek 59b766d071 chore(infra): gate DB pool debug logs and de-duplicate rate-limit cleanup timer 2026-02-24 18:10:36 +03:00
Yusuf İpek 644b239ab3 feat: add pagination and strict query validation for workspace/project listings 2026-02-24 18:07:04 +03:00
Yusuf İpek 9f32aeafe6 optimize watch progress persistence with debounced client saves and tiny-delta server skip 2026-02-24 17:51:40 +03:00
Yusuf İpek 71233f8fe8 feat(video-card): show deleting overlay and disable interactions during delete 2026-02-24 17:46:05 +03:00
Yusuf İpek 7f07a271a4 Improve media cleanup performance with bounded concurrency and aggregated failure reporting 2026-02-24 17:44:23 +03:00
Yusuf İpek 6e14d4d19f feat(admin): add manual R2 stats refresh endpoint/button and share in-memory storage snapshot cache 2026-02-24 17:35:42 +03:00
Yusuf İpek 6a6b48f6a9 optimize admin users table sorting and pagination by pushing supported sorts to Prisma 2026-02-24 17:23:44 +03:00
Yusuf İpek 68c63ce020 fix(watch-progress): validate versionId and enforce video access/version ownership before saving progress 2026-02-24 17:20:45 +03:00
Yusuf İpek 354bc38d42 refactor(auth): centralize project/workspace authorization with checkProjectAccess across API routes 2026-02-24 17:18:04 +03:00
Yusuf İpek fa51847aa4 feat(storage): add shared R2 media proxy and orphan cleanup tooling for R2/Bunny 2026-02-24 17:02:54 +03:00
Yusuf İpek ffa55d7dcc feat(video): lazy-load version comments and add ETag-based comment caching 2026-02-24 16:34:16 +03:00
Yusuf İpek a9041ebca5 docs(agents): rewrite AGENTS.md into a minimal high-signal workflow checklist 2026-02-24 16:09:23 +03:00
Yusuf İpek afa1529873 feat(feedback): add user feedback/review system with admin management and hardened image upload validation 2026-02-24 16:05:11 +03:00
Yusuf İpek 4083651025 Restrict guest CSV comment export in UI and fix lint/typecheck cleanup in comment APIs 2026-02-24 15:03:42 +03:00
Yusuf İpek 449433a08a fix: centralize trusted same-origin validation for watch session and upload token routes 2026-02-23 18:31:09 +03:00
Yusuf İpek 1708c5c99c fix(video-player): preserve playback state when seeking to timestamps 2026-02-23 18:25:25 +03:00
Yusuf İpek dd884a325c Add admin-only comment resolution controls 2026-02-23 18:21:10 +03:00
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 d15e5192ac chore: clean up lint/type issues and tighten comment media URL validation 2026-02-23 16:06:43 +03:00
Yusuf İpek 609b33bbcb feat(admin): track and display per-user download egress for Bunny version downloads 2026-02-22 20:19:55 +03:00
Yusuf İpek bbae612a70 feat(admin): add sortable paginated users table with invited-members metric and async searchParams fix 2026-02-22 20:04:41 +03:00
Yusuf İpek 55a2c16a7f fix(landing): replace pricing CTA with user-appropriate action text
- change hosted plan CTA from 'Deploy on Cloud' to contextual copy
- show 'Start Now' for new users and 'Go to Dashboard' for logged-in users
2026-02-22 17:20:08 +03:00
Yusuf İpek ab0dc82e2a Create LICENCE file with FSL-1.1-ALv2 terms
Added Functional Source License, Version 1.1.
2026-02-22 17:15:03 +03:00
Yusuf İpek 323093029e feat(seo): upgrade site metadata, schema, and crawl files for OpenFrame rebrand
- update title/description to Open Source Video Review Platform
- add centralized SEO config with canonical URL + meta image (/meta.webp)
- add Open Graph and Twitter card metadata
- add JSON-LD Organization/WebSite structured data
- add robots.txt, sitemap.xml, and web app manifest routes
- version icon metadata to help search engines refresh branding
2026-02-22 16:53:01 +03:00
Yusuf İpek b0e6f9514a change the deep-dive-dashboard image. 2026-02-22 16:37:43 +03:00
Yusuf İpek 0288fe08d3 feat(video-download): add Bunny original/compressed download options with secure file handling and tighter rate limits 2026-02-22 16:33:52 +03:00
Yusuf İpek f224b0a8a1 feat(landing): redesign homepage with GSAP-driven landing page and new showcase assets 2026-02-22 15:53:53 +03:00
Yusuf İpek 2115d986af feat(video): add secure download flow with Bunny API proxy, quality validation, rate limiting, and direct URL host allowlist 2026-02-22 14:19:09 +03:00
Yusuf İpek 72d14f4a5d feat(comments): add secure CSV/PDF export for version comments with auth, rate limits, and CSV injection hardening 2026-02-22 13:56:02 +03:00
Yusuf İpek 47f12b38fa chore: remove unused dependencies and delete unused combobox demo components 2026-02-22 13:42:52 +03:00
Yusuf İpek e30b4a5b19 feat: harden Bunny upload flow, migrate Bunny playback to hls.js, and add Bunny storage admin stats 2026-02-22 13:03:45 +03:00
Yusuf İpek 10164069dd feat: Add URL safety check to prevent rendering iframes with non-HTTP/HTTPS protocols. 2026-02-22 09:56:18 +03:00
Yusuf İpek 0f24bcfe6c feat: Implement direct video file uploads via Bunny.net and TUS protocol, adding a new API route and UI for file selection. 2026-02-22 09:55:08 +03:00
Yusuf İpek 5547346082 feat: Implement multi-panel video comparison with shared playback controls, timeline comments, and YouTube API integration. 2026-02-22 07:56:27 +03:00
Yusuf İpek 87d6c0ab0a feat: Add a close button to the annotation toolbar and ensure annotation mode is correctly reset upon removal. 2026-02-22 06:30:10 +03:00
Yusuf İpek fc047841cf feat: Enhance annotation canvas toolbar responsiveness, group controls 2026-02-21 20:27:19 +03:00
Yusuf İpek d731c9434a feat: Add drawing annotation functionality to comments, including a new canvas component and API integration for creation, retrieval, and updates. 2026-02-21 20:23:15 +03:00
Yusuf İpek 4cb4089caa feat: enhance responsive layout of video page by adjusting visibility of the sidebar, video title, and new version button on various screen sizes. 2026-02-21 19:29:43 +03:00
Yusuf İpek e32196c430 fix: address security vulnerabilities and add image attachments
- Fix type confusion vulnerability in comment content updates
- Validate pagination offsets to prevent negative values
- Validate timestamp is a valid number before parsing
- Exclude guestEmail from comment API responses for privacy
- Fix TypeScript error in audio upload route
- Add image attachment support for comments with upload API
- Update admin dashboard to track image attachments
- Rename cleanup functions to handle both voice and image media
2026-02-21 16:40:58 +03:00
Yusuf İpek cd9b89c971 feat: Introduce Linkify component to automatically convert URLs in comment and reply content into clickable links. 2026-02-21 10:50:45 +03:00
Yusuf İpek 5065fca38d feat: replace hero video placeholder with an autoplaying demo video and refine hover effects. 2026-02-20 16:29:24 +03:00
Yusuf İpek 7fd2f7e289 feat: Redesign the landing page with an enhanced sticky header, a new hero section featuring gradient text and a badge, and integrate additional Lucide icons for future features. 2026-02-20 16:25:45 +03:00
Yusuf İpek fcdb300b73 feat: replace favicon.ico with a scalable icon.svg 2026-02-20 15:51:44 +03:00
Yusuf İpek 2a20b449a8 refactor: Migrate dashboard project listing to client components, adding URL-driven filtering, sorting, and pagination. 2026-02-20 15:50:50 +03:00
Yusuf İpek 83eeffe5c0 feat: Implement admin dashboard with user management, statistics, and role-based access control. 2026-02-20 15:17:32 +03:00
Yusuf İpek 1bb1c8e574 feat: Enhance dashboard responsiveness across various pages and update project visibility icons for improved clarity. 2026-02-20 14:28:43 +03:00
Yusuf İpek fe496b7fa5 feat: Implement notification settings and logic for new video versions. 2026-02-20 13:51:00 +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 7e55c578df remove experimental vimeo video provider support 2026-02-15 12:55:36 +03:00
Yusuf İpek c572ddb522 feat(video): add fullscreen mode with keyboard shortcut and error handling
- Add fullscreen toggle (F key and button) for video player
- Add comments panel visibility toggle in fullscreen mode
- Rename isFullscreen to isFullscreenMode for clarity
- Add toast error handling for fullscreen API failures
- Fix indentation issues in JSX
2026-02-15 12:50:37 +03:00
Yusuf İpek d3187f7fe4 docs: add AGENTS.md with coding guidelines for agents 2026-02-15 11:22:03 +03:00
Yusuf İpek da8c62e60d fix(ui): use filteredComments instead of comments in video page 2026-02-15 10:56:41 +03:00
Yusuf İpek 643697dc00 fix(ui): add defensive checks for undefined replies in video page comments 2026-02-15 09:36:02 +03:00
Yusuf İpek bf6a8aa4e8 fix(ui): add defensive replies array handling in video page comments 2026-02-15 09:29:50 +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 a8711db0ad build(deps): add radix-ui dependency 2026-02-14 17:26:18 +03:00
Yusuf İpek ea21d173b2 perf(config): improve performance with image optimization, caching headers, and build optimizations
- Add AVIF and WebP image formats for optimized delivery
- Configure cache headers for static assets (images, icons, SVGs)
- Enable server minification and optimize package imports
- Disable poweredByHeader and enable compression
- Remove unused radix-ui dependency
2026-02-14 17:15:35 +03:00