Commit Graph

2512 Commits

Author SHA1 Message Date
Johannes
239f2595ba feat: add ability to copy surveys with all response data
Implements a comprehensive solution for copying surveys to different projects
with all associated response data, including file uploads, contacts, tags,
quotas, and display records.

Key Features:
- UI toggle to choose between 'Survey Only' or 'Survey + Responses' copy modes
- Intelligent file URL rewriting for uploaded files across environments
- Contact mapping/creation in target environment
- Tag find-or-create logic to preserve response tagging
- Quota and display record copying
- Batch processing (100 responses at a time) for performance
- Graceful error handling with detailed logging

Implementation Details:

UI Changes:
- Added OptionsSwitch component to copy-survey-form.tsx
- Visual toggle with icons for copy mode selection
- Descriptive text explaining each mode
- Integrated with React Hook Form validation

Backend Service (copy-survey-responses.ts):
- extractFileUrlsFromResponseData(): Recursively finds storage URLs
- downloadAndReuploadFile(): Rewrites file URLs for target environment
- rewriteFileUrlsInData(): Updates all file references in response data
- mapOrCreateContact(): Handles contact migration
- mapOrCreateTags(): Ensures tags exist in target environment
- copyResponsesForSurvey(): Main orchestration with batching

Core Updates:
- Updated copySurveyToOtherEnvironment() to optionally copy responses
- Extended action schema to accept copyResponses parameter
- Added comprehensive error handling and logging

Technical Approach:
- Preserves original createdAt timestamps for historical accuracy
- Generates new IDs to prevent conflicts
- Maintains data integrity with proper foreign key mapping
- Handles partial failures gracefully (survey copy succeeds even if some responses fail)

Edge Cases Handled:
- File uploads with environment-specific URLs
- Environment-specific contacts
- Tag name matching across environments
- Quota link preservation
- Display record migration
- Large response datasets via batching

Performance Considerations:
- Batch processing prevents memory issues
- Per-response error handling prevents cascade failures
- Efficient database queries with proper includes

Future Enhancements:
- Progress tracking UI for large datasets
- Background job queue for 10,000+ responses
- Selective response copying (date ranges, filters)

Related to customer request for copying survey data between projects.
2025-10-10 00:00:11 +02:00
Dhruwang Jariwala
5468510f5a feat: recall in rich text (#6630)
Co-authored-by: Johannes <johannes@formbricks.com>
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2025-10-09 09:45:08 +00:00
Victor Hugo dos Santos
76213af5d7 chore: update dependencies and improve logging format (#6672) 2025-10-09 09:02:07 +00:00
Anshuman Pandey
cdf0926c60 fix: restricts management file uploads size to be less than 5MB (#6669) 2025-10-09 05:02:52 +00:00
Victor Hugo dos Santos
ed10069b39 chore: update esbuild to latest version (#6662) 2025-10-08 14:11:24 +00:00
Anshuman Pandey
7c1033af20 fix: bumps nodemailer version (#6667) 2025-10-08 06:03:45 +00:00
Matti Nannt
98e3ad1068 perf(web): optimize Next.js image processing to prevent timeouts (#6665) 2025-10-08 05:02:04 +00:00
Johannes
1bddc9e960 refactor: remove hidden fields toggle from UI (#6649) 2025-10-06 12:19:45 +00:00
Matti Nannt
3f122ed9ee perf: reduce cache TTL to 1 minute for SDK environment state and segments (#6635) 2025-10-06 10:12:46 +00:00
Jakob Schott
bdad80d6d1 fix: remove capitalize functions (#6610)
Co-authored-by: Johannes <johannes@formbricks.com>
2025-10-06 10:07:23 +00:00
Johannes
d9ea00d86e fix: allow deselecting optional single-select question responses (#6643)
Co-authored-by: Victor Santos <victor@formbricks.com>
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-10-06 09:32:24 +00:00
Johannes
3a09af674a feat: hit ENTER for new option (#6624)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-10-06 07:23:17 +00:00
Dhruwang Jariwala
1ced76c44d chore: added expirationDays param support in personal link api (#6578)
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2025-10-06 07:12:29 +00:00
Victor Hugo dos Santos
fa1663d858 docs: enhance file upload troubleshooting guidance in migration (#6645)
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2025-10-06 06:40:06 +00:00
Victor Hugo dos Santos
ebf591a7e0 fix: improve E2E test reliability and security (#6653) 2025-10-06 05:02:51 +00:00
Dhruwang Jariwala
5c9795cd23 chore: update @boxyhq/saml-jackson and posthog-node (#6647) 2025-10-04 09:26:30 +02:00
Victor Hugo dos Santos
b67177ba55 Merge commit from fork
* fix(auth): enhance password validation and rate limiting for login attempts

- Added password length validation to prevent CPU DoS attacks, limiting to 128 characters.
- Implemented constant-time password verification to mitigate timing attacks.
- Adjusted rate limit for login attempts from 30 to 10 per 15 minutes for improved security.
- Updated login form validation to reflect new password length constraints.
- Introduced constants for authentication endpoints in the API.

* fixed sample size for timing test

* password validation messages

---------

Co-authored-by: Your Name <you@example.com>
2025-10-02 11:09:28 +02:00
Johannes
4afb95b92a fix: switch Manage Subscription button bg to stripe color (#6633) 2025-10-01 12:00:44 +00:00
Johannes
fa0879e3a0 chore: increase visibility of hover effect to indicate clickability (#6622)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-09-30 12:44:13 +00:00
Dhruwang Jariwala
2153d2aa16 fix: replace button with div in IdBadge to prevent hydration issues (#6601) 2025-09-25 13:42:41 +00:00
Matti Nannt
7fa4862fd9 feat: make S3_REGION optional in storage client configuration (#6577) 2025-09-25 12:25:35 +00:00
Victor Hugo dos Santos
eb1349f205 fix: enhance JWT handling with improved encryption and decryption logic (#6596) 2025-09-25 11:45:08 +00:00
Victor Hugo dos Santos
6af81e46ee chore: improve Sentry API logs with correlation ID and request context (#6584) 2025-09-24 09:25:51 +00:00
Jakob Schott
7423fc9472 fix: Improve messaging for mobile users (#6579)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-09-23 10:13:00 +00:00
Piyush Gupta
5d53ed76ed fix: logic fallback cleanup (#6568) 2025-09-22 08:10:27 +00:00
Dhruwang Jariwala
ebd399e611 fix: block previews for completed and paused surveys (#6576) 2025-09-22 07:21:38 +00:00
Dhruwang Jariwala
843110b0d6 fix: followup toast (#6565) 2025-09-19 13:03:56 +00:00
Anshuman Pandey
51babf2f98 fix: minor csp change and removes uploads volume (#6566) 2025-09-19 10:20:38 +00:00
Victor Hugo dos Santos
6bc5f1e168 feat: add cache integration tests and update E2E workflow (#6551) 2025-09-19 08:44:31 +00:00
Anshuman Pandey
6a49fb4700 feat: adds one-click MinIO migration script for Formbricks 4.0 (#6553)
Co-authored-by: Victor Santos <victor@formbricks.com>
2025-09-18 16:23:03 +00:00
Dhruwang Jariwala
646921cd37 fix: logic issues (#6561) 2025-09-18 18:31:44 +02:00
Dhruwang Jariwala
c3c06eb309 fix: empty container in template UI (#6556) 2025-09-18 06:45:20 +00:00
Dhruwang Jariwala
bf4c6238d5 fix: api key modal tweaks (#6552)
Co-authored-by: Johannes <johannes@formbricks.com>
2025-09-17 15:00:42 +00:00
Dhruwang Jariwala
8972ef0fef fix: integration redirect links (#6555) 2025-09-17 14:59:35 +00:00
Dhruwang Jariwala
379aeba71a fix: synced translations (#6547) 2025-09-15 10:19:02 +00:00
Dhruwang Jariwala
41798266a0 fix: quota translations (#6546) 2025-09-15 07:04:40 +00:00
Victor Hugo dos Santos
935e24bd43 chore: clean-up new cache package (#6532) 2025-09-12 11:16:13 +00:00
Matti Nannt
839144d338 chore: remove unused fields and tables from prisma schema (#6531)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-09-12 09:01:03 +00:00
Anshuman Pandey
96031822a6 feat: s3 compatible storage (#6536)
Co-authored-by: Victor Santos <victor@formbricks.com>
2025-09-12 08:17:33 +00:00
Matti Nannt
22d4952a40 chore: remove ios and android package from monorepo (#6533) 2025-09-11 12:57:55 +00:00
dependabot[bot]
933723f1fe chore(deps-dev): bump the npm_and_yarn group across 9 directories with 1 update (#6526)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-11 09:25:10 +02:00
Piyush Gupta
dd394f1d2c chore: remove cron jobs and survey scheduling functionality (#6505)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-09-11 06:57:11 +00:00
Dhruwang Jariwala
0188aad97b feat: nav cleanup pt. 2 (#6515)
Co-authored-by: Johannes <johannes@formbricks.com>
2025-09-11 04:07:17 +00:00
Yuuenn
d46644fe0d feat: add Simplified Chinese (zh-Hans-CN) translations #6511 (#6518)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2025-09-10 12:13:48 +00:00
Victor Hugo dos Santos
c259a61f0e feat: unified cache (#6520) 2025-09-10 09:59:16 +00:00
Piyush Gupta
feee22b5c3 feat: Quota management(part 1 & part 2) (#6521)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
Co-authored-by: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com>
2025-09-09 13:25:05 +00:00
Dhruwang Jariwala
a5433f6748 feat: improved project and org switch (#6500)
Co-authored-by: Johannes <johannes@formbricks.com>
2025-09-09 12:58:44 +00:00
Dhruwang Jariwala
557f14bab8 fix: requried questions being skipped (#6506)
Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
2025-09-09 08:33:41 +00:00
Dhruwang Jariwala
fdba260301 fix: project styling settings issues (#6488) 2025-09-09 08:33:28 +00:00
Dhruwang Jariwala
ac5d1e651e fix: untranslated string (#6512) 2025-09-08 10:27:31 +00:00