Commit Graph
150 Commits
Author SHA1 Message Date
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 İ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