Yusuf İpek
c73bc9a19a
fix(README): correct description of OpenFrame to emphasize fair source
2026-04-20 16:49:18 +03:00
Yusuf İpek
a6bbc50acd
Merge pull request #4 from cinarozkan/add-ci-pipeline
...
ci: add GitHub Actions CI pipeline
2026-04-16 18:36:14 +03:00
Yusuf İpek
c9522eff82
feat(VideoPageHeader): move DownloadControls to a new position in the layout
2026-04-16 15:27:25 +03:00
Yusuf İpek
6c42fd23d3
feat(LandingPage): add option to download original uploaded video
2026-04-15 19:55:10 +03:00
Yusuf İpek
873945464d
feat: implement storage quota management for uploads
...
- Added storage quota enforcement for audio and image uploads in the respective routes.
- Introduced reservation system to manage concurrent uploads and prevent quota overages.
- Enhanced comment creation to account for audio and image attachment sizes against user quotas.
- Created new UploadReservation model to track in-flight upload reservations.
- Backfilled existing video assets with size information from R2.
- Added progress component for UI feedback during uploads.
- Updated API responses to include reservation IDs for better quota management.
- Adjusted error handling to return appropriate storage limit exceeded messages.
2026-04-15 19:53:43 +03:00
Yusuf İpek
acf31b3d6b
refactor(docker): remove unnecessary next-env.d.ts copy from Dockerfile
2026-04-15 17:00:41 +03:00
Yusuf İpek
50d31ef894
feat(download): add estimation of egress bytes by fetching Content-Length via HEAD request
2026-04-14 13:56:27 +03:00
Yusuf İpek
f3cdebaa81
refactor(download): remove unused content type handling and filename sanitization logic
2026-04-14 13:46:43 +03:00
Yusuf İpek
8a12bb484b
feat(assets): add image upload state management and update button behavior during upload
2026-04-14 13:41:41 +03:00
Yusuf İpek
d1b2d23509
fix(settings): update workspace creation display logic to show reason only when creation is not allowed
2026-04-11 13:02:30 +03:00
Yusuf İpek
e18d5219f5
feat(billing): add trial eligibility logic and update billing overview
2026-04-11 12:53:02 +03:00
Yusuf İpek
faa902a604
feat(auth): implement email verification process with resend functionality and update registration flow
2026-04-11 00:17:09 +03:00
Yusuf İpek
5bff32fef1
fix: update descriptions for real-time webhooks and storage exceedance FAQ
2026-04-10 23:04:07 +03:00
Yusuf İpek
f622752233
feat(auth): enhance registration page with OAuth support for Google and GitHub
2026-04-10 22:50:02 +03:00
Yusuf İpek
c457971ff5
chore: update dependencies to latest versions
...
- upgraded @aws-sdk/client-s3 from ^3.985.0 to ^3.1029.0
- upgraded next from 16.1.6 to 16.2.3
- upgraded nodemailer from ^8.0.1 to ^8.0.5
2026-04-10 22:41:05 +03:00
Yusuf İpek
20897ab418
feat(privacy, refund, terms): add Privacy Policy, Refund Policy, and Terms of Service pages with navigation links
2026-04-10 22:33:23 +03:00
Yusuf İpek
4ba7521a38
feat(auth): implement OAuth login with Google and GitHub, add Prisma adapter for user management
2026-04-10 22:23:13 +03:00
Yusuf İpek
5beaa26fb4
feat(comments): enhance comment deletion permissions to allow project owners and admins to delete any comment
2026-04-10 21:56:02 +03:00
Yusuf İpek
11abb5dbcb
fix(notifications): improve error handling for Telegram test by logging detailed error message
2026-04-10 21:53:56 +03:00
Yusuf İpek
05a303cd35
feat(projects): add validation for name and description in PATCH request to ensure they are non-empty strings within specified length limits
2026-04-10 21:52:46 +03:00
Yusuf İpek
db1c594fae
feat(progress): add validation for progress and duration to ensure they are non-negative finite numbers within a reasonable range
2026-04-10 21:51:18 +03:00
Yusuf İpek
c6f06627f2
feat(progress): add validation for duration to ensure it is a non-negative finite number
2026-04-10 21:50:13 +03:00
Yusuf İpek
79d8b742e3
feat(videos): add validation for position to ensure it is a non-negative integer
2026-04-10 21:49:15 +03:00
Yusuf İpek
df10f45e9e
feat(onboarding): implement rate limiting for onboarding completion
2026-04-10 21:48:25 +03:00
Yusuf İpek
e72f5e8948
feat(projects): add validation for project visibility in PATCH request
2026-04-10 21:47:26 +03:00
Yusuf İpek
9b561b78b4
refactor(request-origin): remove unused origin retrieval functions to enhance security
2026-04-10 21:45:40 +03:00
Yusuf İpek
72bdc05422
feat(comments): add validation for guest email length and format in POST request
2026-04-10 21:43:16 +03:00
Yusuf İpek
1be0e6d6fa
feat(tags): add validation to ensure tags belong to the project to prevent IDOR
2026-04-10 21:40:48 +03:00
Yusuf İpek
eca3f92e71
feat(env): add trusted proxy mode configuration for rate limiting
2026-04-10 21:39:30 +03:00
Yusuf İpek
288c5d2624
feat(stripe-billing): add Stripe stats retrieval and display in admin dashboard
2026-04-10 21:35:22 +03:00
Yusuf İpek
3d0e430230
feat(access-control): implement project access control for audio and image uploads
2026-04-10 21:27:52 +03:00
Yusuf İpek
c92181b90f
feat(rate-limit): enforce rate limit configuration in production environment
2026-04-10 21:13:43 +03:00
Yusuf İpek
d07b40a937
feat(rate-limit): add rate limit configuration for comment export
2026-04-10 21:12:56 +03:00
Yusuf İpek
84ea384ee7
refactor(invitation): simplify buildInvitationUrl by removing email parameter
2026-04-10 21:11:56 +03:00
Yusuf İpek
8014fc3986
Refactor error logging across the application to use a centralized logger
...
- Introduced a new logger utility (`logError`) to standardize error logging.
- Replaced all instances of `console.error` with `logError` in various API routes and libraries.
- Enhanced error logging to sanitize sensitive information, particularly for Prisma and Stripe errors.
- Ensured consistent error handling and logging practices throughout the codebase.
2026-04-10 21:10:09 +03:00
Yusuf İpek
07f7b6fb02
feat(security): enhance Content Security Policy and add global security headers
2026-04-10 20:56:33 +03:00
Yusuf İpek
439e74d037
feat(validation): implement validateAnnotationStrokes function for safe annotation data handling
...
feat(rate-limit): add TRUSTED_PROXY_MODE for configurable proxy header trust
feat(comments): validate annotation data structure in comment routes and components
2026-04-10 20:38:22 +03:00
Yusuf İpek
03bfd565e8
feat(auth): enforce length limits for name and password during registration
...
feat(comments): add content length validation for comments and annotations
feat(guest-gate): restrict guest name length and update localStorage handling
feat(share-link-unlock): set maxLength for password input field
2026-04-10 20:28:55 +03:00
Yusuf İpek
d1ffc4c4db
feat(annotation-canvas): optimize canvas resizing by using refs for strokes and currentStroke
2026-04-09 17:23:27 +03:00
Yusuf İpek
ea05f9c929
feat(cache): implement max entries limit for Bunny download source cache
2026-04-09 17:18:34 +03:00
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 İpek and Claude 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 İpek and Claude 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 İpek and Claude 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