github formbricks/formbricks 6.1.0-rc.1

pre-release5 hours ago

What's Changed

  • fix: terminate AuthZed health CLI after failures by @BhagyaAmarasinghe in #9232
  • fix(i18n): update Hungarian translations by @Dhruwang in #9234
  • feat(api-v3): OpenAPI contract for the v3 responses API by @xernobyl in #9167
  • fix(ci): pull the MinIO images from quay.io instead of Docker Hub by @xernobyl in #9260
  • fix(survey-editor): stop a disabled unit select covering the rule delete button [ENG-3175] by @Dhruwang in #9250
  • fix(organization): mirror the server's owner count in the members table [ENG-2616] by @pandeymangg in #9226
  • fix(i18n): correct mistranslated Dutch back/save buttons by @jobenjada in #9229
  • docs: rename Connect Your App to Web & Mobile SDK, document install methods by @jobenjada in #9168
  • fix(analysis): partition NPS and CSAT buckets exhaustively [ENG-3147] by @Dhruwang in #9248
  • chore: A/B test shortening the Pro trial from 14 to 7 days by @harshsbhat in #9224
  • fix(ui): cap combobox option list inside its popover [ENG-3158] by @Dhruwang in #9243
  • fix(survey-link): stop a mounted gate fighting the language picker [ENG-3160] by @Dhruwang in #9246
  • fix(charts): drop grouped rows no selected measure answers [ENG-3150] by @Dhruwang in #9239
  • fix(charts): keep one category label treatment on flipped bar charts [ENG-3148] by @Dhruwang in #9240
  • docs: add release and maintenance policy page by @mattinannt in #9273
  • fix(logger): resolve process handle through globalThis in Edge bundles [ENG-2602] by @itsjavi in #9267
  • fix: respect PostgreSQL Helm overrides by @BhagyaAmarasinghe in #9221
  • feat: add explicit AuthZed maintenance preparation by @BhagyaAmarasinghe in #9265
  • fix(charts): resolve option labels from every mapped question [ENG-3140] by @Dhruwang in #9235
  • fix(responses): bound the "Other" response filter instead of permuting every subset by @xernobyl in #9253
  • docs: clarify Kubernetes v6 maintenance upgrades by @BhagyaAmarasinghe in #9282
  • fix(unify): translate the strings frozen in English on Unify surfaces [ENG-2605] by @pandeymangg in #9227
  • refactor(api-v3): consolidate error handling into one thrown-error mapper, one Hub mapper and a problem-code registry by @xernobyl in #9147
  • fix(helm): support Gateway API v1.5 clusters by @BhagyaAmarasinghe in #9291
  • fix(integrations): stop the disabled integration action from navigating [ENG-2608] by @pandeymangg in #9228
  • feat(api-v3): shared response service, and both delete endpoints on top of it by @xernobyl in #9183
  • feat(api-v3): keyset cursor helper, its Response indexes, and Sentry on v3 5xx by @xernobyl in #9222
  • fix(contacts): restore the clear control on date pickers [ENG-3084] by @itsjavi in #9289
  • fix(auth): restrict OAuth dynamic client registration to loopback redirect URIs by @xernobyl in #9300
  • feat(webhooks): fan out webhook delivery into per-webhook background jobs by @xernobyl in #9123
  • chore(eslint): widen the package lint gates past ./src by @xernobyl in #9286
  • fix(turbo): restore the copied SDK bundles from cache and hash the shared vite plugins by @xernobyl in #9297
  • fix(i18n): unify the Japanese term for Survey and translate the strings left in English [ENG-2393] by @Dhruwang in #9308
  • docs: move AuthZed Operations, Rate Limiting and AI Features into Configuration by @jobenjada in #9306
  • fix(sso): label provisioning rejections in the callback-outcome log by @xernobyl in #9294
  • feat(mcp): add responses:read and responses:write scopes by @xernobyl in #9274
  • fix(sso): stop SSO recovery retries growing the URL into a 414 by @xernobyl in #9144
  • test(attachments): stop the headers test leaking its stream into the next test by @itsjavi in #9314
  • fix(storage): delete workspace files when an organization or account is deleted [ENG-3197] by @pandeymangg in #9316
  • fix(responses): keep a column labelled __proto__ in the export by @itsjavi in #9315
  • fix(security): gate API key organization write access at mint time by @pandeymangg in #9317
  • fix(surveys): address respondents formally in the German and Russian survey UI by @mattinannt in #9321
  • fix(ui): match combobox search against the option label by @Dhruwang in #9245
  • fix(deps): raise the fast-xml-parser floor to 5.7.2 so S3 XML responses parse [ENG-3263] by @pandeymangg in #9329
  • feat(api-v3): response serializer and the three read endpoints by @xernobyl in #9237
  • feat(api-v3): response writes — create and patch by @xernobyl in #9252
  • refactor(mcp): put the feedback-record tools back on registerScopedTool by @xernobyl in #9290
  • chore(ci): stop inheriting secrets into the PR gate's reusable workflows by @pandeymangg in #9330
  • refactor(auth): make BETTER_AUTH_* the documented env var names, keep NEXTAUTH_* as an alias by @xernobyl in #9307
  • feat(mcp): expose responses through the MCP server by @xernobyl in #9326
  • fix(js-core): hold the survey concurrency guard once a survey has rendered (ENG-2849) by @pandeymangg in #9331
  • chore(deps): replace the deprecated otplib 12 and @react-email/components by @Dhruwang in #9313
  • chore(sonar): enrol eight packages and the route/action layer in coverage [ENG-2432] by @Dhruwang in #9310
  • fix(helm): make v6 upgrades safer for self-hosters by @BhagyaAmarasinghe in #9339
  • refactor(api-v3): one shared list meta across the v3 collection endpoints by @pandeymangg in #9336
  • fix(surveys): strip trailing colon from validation field labels [ENG-1797] by @Dhruwang in #9311
  • chore(api-v3): mark the generated OpenAPI bundle linguist-generated by @mattinannt in #9349
  • feat(ci): sync the release-branch cut to Linear by @mattinannt in #9346
  • fix(unify-feedback): keep a held Enter to a single dataset purge [ENG-2604] by @Dhruwang in #9345
  • fix(survey-link): serve a same-script sibling for a requested survey language [ENG-3083] by @Dhruwang in #9353
  • chore(i18n): drop the retroactivity sentence from the anonymize toggle by @jobenjada in #9357
  • fix(security): make the fresh-instance sign-up exception single-use [ENG-2247] by @pandeymangg in #9354
  • fix(auth): name what the MCP feedbackRecords:write scope grants [ENG-3192] by @Dhruwang in #9356
  • feat: offer the Lite license at 2FA and the workspace limit instead of branding removal by @harshsbhat in #9347
  • fix(i18n): translate the team permission label, membership status badges and organization roles [ENG-2481] by @Dhruwang in #9309
  • fix(unify-feedback): pluralize feedback-record counts in the records table [ENG-2606] by @Dhruwang in #9343
  • feat(surveys): keep New Survey available while the list loads [ENG-2579] by @Dhruwang in #9344
  • fix(ui): give link-buttons a hover state [ENG-3138] by @Dhruwang in #9355
  • docs: inline local setup instructions by @mattinannt in #9359
  • fix(analysis): resolve date presets in the organization's time zone on summary and charts [ENG-3215] by @itsjavi in #9361
  • fix(auth): look users up by the canonical email address by @xernobyl in #9319
  • fix(surveys): bind encrypted single-use links to their survey by @xernobyl in #9131
  • fix(auth): keep logout on the admin domain when PUBLIC_URL is set [ENG-3286] by @jobenjada in #9333
  • feat(mcp): name the survey element types on the tool surface by @xernobyl in #9320
  • fix(account): send a relative callbackURL on the SSO account-deletion link by @xernobyl in #9318
  • fix(editor): seed the rich text editor once per mount, not twice by @xernobyl in #9328
  • feat(i18n): support the full European language/locale matrix in surveys by @Dhruwang in #9332
  • chore: update Helm app version to 6.0.0 by @BhagyaAmarasinghe in #9366
  • docs: correct the conformance claims on the accessibility page by @jobenjada in #9348
  • fix: prompt to reload when a tab outlives its deployment [ENG-2330] by @Dhruwang in #9154
  • fix(surveys): close the language switcher on Escape and return focus to its trigger by @Dhruwang in #9365
  • fix(workspace-settings): disable manage-gated settings for read/write members [ENG-3191] by @itsjavi in #9368
  • perf(survey-editor): debounce preview updates while editing [ENG-991] by @itsjavi in #9370
  • fix(auth): unlock password users whose credential row has no issuer [ENG-3258] by @pandeymangg in #9369
  • perf(survey-editor): memoize block cards to skip unchanged blocks on edit [ENG-992] by @itsjavi in #9373
  • fix(i18n): use Unicode punctuation and remove contractions in English copy by @Dhruwang in #9367
  • fix(surveys): open each cardless survey page at the top [ENG-3379] by @Dhruwang in #9374
  • fix(survey-ui): keep out-of-month date picker days at full contrast [ENG-1296] by @itsjavi in #9381
  • fix(editor): group question types and clear settings tab axe violations [ENG-3154] by @itsjavi in #9378
  • fix(surveys): stop naming survey images and name inline surveys [ENG-3154] by @itsjavi in #9376
  • fix(sso): revoke the squatter's API keys on SSO recovery by @pandeymangg in #9372
  • fix(docker): run hub worker in self-hosted compose by @BhagyaAmarasinghe in #9379
  • fix(surveys): only ring the close and language buttons on keyboard focus [ENG-1830] by @itsjavi in #9385
  • fix(integrations): show a reconnect message when Google Sheets lacks the scope [ENG-2807] by @Dhruwang in #9383
  • feat(helm): support external embedding runtimes by @BhagyaAmarasinghe in #9363
  • fix(storage): delete the old logo file when a workspace logo is removed or replaced [ENG-2418] by @pandeymangg in #9322
  • chore(email): map react-email components for jsx-a11y [ENG-3154] by @itsjavi in #9375
  • fix(analysis): thin and relabel time axes for hourly granularity [ENG-3211] by @itsjavi in #9380
  • fix(web): single-brand link survey titles and render ICU placeholders [ENG-3154] by @itsjavi in #9377
  • docs: add Okta OIDC setup guide by @jobenjada in #9275
  • docs: forbid agent session links in PRs and commits by @itsjavi in #9388
  • fix(dashboards): add new charts to the next open slot [ENG-3209] by @Dhruwang in #9390
  • fix(ai-translation): explain output token limit overflow instead of a generic failure [ENG-2831] by @Dhruwang in #9384
  • fix(settings): hide the integrations tip when the user has no workspace [ENG-1781] by @Dhruwang in #9387
  • fix: replace MinIO client with RustFS CLI by @BhagyaAmarasinghe in #9395
  • feat(api): edit and reorder survey blocks without resending the whole array by @xernobyl in #9186
  • fix(auth): stop serving Better Auth's /update-user over HTTP [ENG-3189] by @Dhruwang in #9358
  • fix(helm): prevent TEI API key logging by @BhagyaAmarasinghe in #9391
  • fix: rate-limit AI chart generation by @BhagyaAmarasinghe in #9392
  • fix: sanitize v1 contact list database errors by @BhagyaAmarasinghe in #9396
  • fix: correct doesNotIncludeAllOf, surface impressions load errors, delete removed survey languages by @mattinannt in #9371
  • chore: dedupe lockfile and clean up stale repository configuration by @mattinannt in #9400
  • fix(audit): keep respondent content out of the audit log, and record refused MCP mutations by @pandeymangg in #9402
  • feat(api): record read-path metrics for the v3 responses API by @mattinannt in #9401
  • feat(settings): organization usage page for self-hosted owners and managers by @Dhruwang in #9393
  • docs(review): make performance an explicit review dimension (ENG-3179) by @Dhruwang in #9251
  • fix(survey-list): keep settings when a survey is duplicated [ENG-2144] by @pandeymangg in #9409
  • fix(survey): reject JSON literals as numeric prefill values (ENG-1146) by @Dhruwang in #9410
  • fix(surveys): require a valid web address for ending card button and redirect URLs [ENG-2585] by @Dhruwang in #9399
  • fix(database): harden postgres connection reliability by @BhagyaAmarasinghe in #9407
  • docs: add workspaceSurveyCount to the MCP list_surveys example by @pandeymangg in #9417
  • fix(surveys): pin --spacing inside #fbjs against host overrides [ENG-833] by @itsjavi in #9405
  • fix(surveys): use "Skicka in" for the Swedish submit button by @jobenjada in #9422
  • fix(surveys): drop image minimum height once media has loaded [ENG-3421] by @Dhruwang in #9420
  • feat(surveys): allow mailto: links in survey text and ending buttons [ENG-3392] by @itsjavi in #9403
  • fix(analysis): reject nonsensical prompts in AI chart generation [ENG-3210] by @itsjavi in #9406
  • fix(web): validate brandColor before it reaches the OG image SVG [ENG-2563] by @itsjavi in #9425
  • fix: block 10 personal email domains on Cloud by @jobenjada in #9427
  • chore(ci): add Dependabot for GitHub Actions and unify harden-runner pins (ENG-2544) by @Dhruwang in #9411
  • feat(charts): matrix chart — statements × scale points grid (ENG-3312) by @Dhruwang in #9415
  • fix(storage): delete respondent uploads when a survey is deleted [ENG-3373] by @pandeymangg in #9428
  • fix(charts): scale the flipped category gutter with the chart width [ENG-3223] by @Dhruwang in #9418
  • fix(web): require Manage access to change survey custom head scripts by @mattinannt in #9432
  • fix(surveys): 44px close button touch area, inset from the card corner [ENG-3429] (a11y) by @itsjavi in #9433
  • fix(api): bound request arrays and cap invalid_params on v3 and MCP [ENG-3384] by @pandeymangg in #9423
  • fix(surveys): settle navigation from an off-block blockId instead of throwing [ENG-2818] by @Dhruwang in #9149
  • fix(ci): scan the published release image by digest instead of a dead workflow_run trigger by @BhagyaAmarasinghe in #9443
  • chore(ci): retire orphaned Formbricks Cloud helmfile deploy workflow by @BhagyaAmarasinghe in #9442
  • fix(security): bump nodemailer, undici, fast-uri and ip-address and patch 8 advisories [ENG-3435][ENG-3442] by @Dhruwang in #9444
  • feat(surveys): support an "Other" option in ranking questions by @Dhruwang in #9429
  • fix(survey-editor): name the field behind a blocked publish [ENG-2833] by @Dhruwang in #9138
  • fix: refund failed invite rate-limit usage by @BhagyaAmarasinghe in #9362
  • docs: add performance testing guidance by @BhagyaAmarasinghe in #9408
  • fix(helm): validate the two cross-process taxonomy timing invariants [ENG-2813] by @BhagyaAmarasinghe in #9451
  • fix(helm): render containerSecurityContext on the web container [ENG-2922] by @BhagyaAmarasinghe in #9450
  • fix(ci): stop maintenance releases rolling GHCR major/minor tags back [ENG-2926] by @BhagyaAmarasinghe in #9449
  • refactor: clear AuthZed cutover SonarQube findings by @BhagyaAmarasinghe in #9452
  • feat(helm): give the taxonomy pod its own ServiceAccount for workload identity by @BhagyaAmarasinghe in #9453
  • fix(web): typecheck Playwright specs in pnpm typecheck [ENG-2239] by @itsjavi in #9413
  • docs: remove leftover merge-conflict marker from v6 migration guide by @BhagyaAmarasinghe in #9458
  • fix(docker): ship a slim Cube image without known CVEs [ENG-3431] by @BhagyaAmarasinghe in #9457
  • fix(survey-editor): name the block, not its id, when a logic destination is gone [ENG-3443] by @itsjavi in #9440
  • fix(security): bump markdown-it, engine.io and brace-expansion and patch 6 advisories [ENG-3463][ENG-3462][ENG-3461][ENG-3460][ENG-3459][ENG-3458] by @Dhruwang in #9462
  • fix(helm): run Cube with a read-only root filesystem and no capabilities by @BhagyaAmarasinghe in #9461
  • feat(surveys): report the survey card's rect to native hosts by @pandeymangg in #9242
  • fix(ci): exclude nested lockfiles from the PR size check by @BhagyaAmarasinghe in #9459
  • fix(taxonomy): wire TAXONOMY_MAX_RECORDS in compose and fail fast on empty LLM base URL [ENG-1522] by @BhagyaAmarasinghe in #9463
  • feat(charts): add nested filter groups to chart filters [ENG-3149] by @Dhruwang in #9241
  • fix(telemetry): send usage updates through the configured HTTPS_PROXY by @Dhruwang in #9414
  • feat: show feedback record taxonomy in API and drawer by @BhagyaAmarasinghe in #9446
  • test: run repo-level script tests as part of pnpm test by @xernobyl in #9469
  • fix(deps): bump next to 16.3.6 for GHSA-vcvr-r3jv-pc5j by @Dhruwang in #9478
  • feat(embedded-data): Embedded Data V2 — field library, one Embedded Data card, typed fields by @pandeymangg in #9467
  • perf(docker): shrink the build context and cache the install layer [ENG-587] by @BhagyaAmarasinghe in #9466
  • fix(docker): rebuild the Cube image on the fixed distroless base (1.7.47-2) by @BhagyaAmarasinghe in #9492
  • fix(helm): harden the migration Job's containers [ENG-3480] by @BhagyaAmarasinghe in #9468
  • docs(self-hosting): say which patch releases carry the bundled Cube image by @BhagyaAmarasinghe in #9491
  • feat: add custom overlay color and opacity for app surveys by @pandeymangg in #9485
  • chore(billing): ship the trial and response-limit nudges to everyone by @harshsbhat in #9471
  • fix(mcp): log JWKS load failures as jwks_fetch by @jobenjada in #9382
  • feat(authorization): survey visibility and its operational model [ENG-3282] by @Dhruwang in #9412
  • chore: align Node 24 across CI, engines and the devcontainer by @xernobyl in #9474
  • fix(helm): restore writable migration jobs for older images by @BhagyaAmarasinghe in #9503
  • fix(settings): keep a workspace-less organization active in account settings by @Dhruwang in #9465
  • fix(survey-editor): stop recall tag edits hanging the editor in an update loop [ENG-2931] by @Dhruwang in #9447
  • chore(deps): bump Prisma to 7.10.0 to fix leaked transactions after a maxWait overrun by @xernobyl in #9498
  • fix(api-v3): refuse NULL bytes in list filters and cursors with a 400 by @xernobyl in #9501
  • feat(charts): NPS & CSAT band dimension, fixed score axes, metric presets and response base [ENG-3331] by @Dhruwang in #9448
  • fix(analysis): translate response filter criteria [ENG-645] by @Dhruwang in #9470
  • feat(ai): OAuth2 client-credentials auth for the openai-compatible provider [ENG-3226] by @Dhruwang in #9438
  • fix(auth): revoke an OAuth app's tokens when its consent is revoked by @xernobyl in #9472
  • feat(email): tag SES messages by type and environment by @BhagyaAmarasinghe in #9502
  • docs(mcp): add an Adding A Tool guide to the MCP handbook by @xernobyl in #9481
  • fix: restrict survey reset to workspace managers by @jobenjada in #9480
  • fix(i18n): translate 76 strings left in English in 12 locales by @xernobyl in #9486
  • fix(web): attribute Sentry errors to the signed-in user by id [ENG-2326] by @itsjavi in #9426
  • fix(storage): delete removed-element uploads by their survey-scoped key [ENG-2546] by @pandeymangg in #9509
  • fix(security): bump hono to 4.13.7 and patch 1 advisory [ENG-3486] by @Dhruwang in #9505
  • fix(contacts): derive activity timeline read-only state on the server by @mattinannt in #9495
  • fix(contacts): bind bulk-upload attribute-key arrays as typed text[] params [ENG-3549] by @Dhruwang in #9520
  • fix(survey-editor): mount the workspace context in the editor layout [ENG-2601] by @pandeymangg in #9510
  • fix(helm): set numeric UID for AuthZed hooks by @BhagyaAmarasinghe in #9516
  • fix(responses): fold a contact's identical resubmission within a minute into the first response by @Dhruwang in #9477
  • fix(survey-link): stop a superseded language switch landing after the respondent moved on [ENG-3170] by @Dhruwang in #9524
  • test(billing): cover subscription_cancelled on both plan-downgrade paths by @Dhruwang in #9527
  • refactor(api-v3): generate the Responses Zod schemas from the OpenAPI spec by @xernobyl in #9500
  • fix(billing): replace legacy EUR subscriptions instead of swapping USD prices onto them by @Dhruwang in #9464
  • fix(og): leave right-to-left survey names off the preview card by @pandeymangg in #9521
  • docs: fix dead links, stray anchors and an unclosed div in the readme by @pandeymangg in #9528
  • feat(auth): tell SSO users how to sign in and make forgot-password enumeration-safe [ENG-3262][ENG-3639][ENG-3640] by @xernobyl in #9511
  • fix(auth): let claude.ai and ChatGPT MCP connectors register through DCR by @xernobyl in #9494
  • fix(ci): fail the latest-release check closed instead of promoting on API errors [ENG-2927] by @xernobyl in #9496
  • refactor(web): keep service modules server-only and guard "use server" exports by @mattinannt in #9497
  • fix(docker): pin basic-ftp 6.2.2 in the Cube image for CVE-2026-102990 (1.7.47-3) by @Dhruwang in #9506
  • refactor(surveys): pull the block-flow decision out of the survey component by @mattinannt in #9531
  • fix(surveys): give unnamed pop-up surveys a top-level heading by @itsjavi in #9533
  • chore(sentry): drop scanner multipart noise at ingest [ENG-1745] by @pandeymangg in #9537
  • fix(docs): point anchor links at Mintlify heading ids by @jobenjada in #9540
  • fix(gateway): refuse ambiguous JSON bodies before authorizing feedback records [ENG-3658] by @xernobyl in #9532
  • chore(ci): bump the github-actions group across 4 directories with 24 updates by @mattinannt in #9522
  • fix(setup): fit the setup forms inside their card on narrow screens by @Dhruwang in #9507
  • fix(charts): drop option-less groups from charts grouped by value option by @Dhruwang in #9523
  • fix(hub): stop passing Next's proxied request to the Request constructor in the feedback-records dev proxy [ENG-3225] by @xernobyl in #9525
  • feat(surveys): open multi-language surveys in the browser language, on one shared matcher by @Dhruwang in #9508
  • fix(database): stop write transactions expiring on Prisma's 5 s default [ENG-3285] by @xernobyl in #9499
  • fix(segments): let interaction filters target the survey being edited by @jobenjada in #9534
  • fix(web): drop inert Access-Control-Allow-Credentials from public client API CORS by @pandeymangg in #9553
  • fix(web): tell the user when a server action gets an unexpected response [ENG-2899] by @xernobyl in #9513
  • fix(security): bump source-map-js to 1.2.2 and patch 1 advisory [ENG-3661] by @Dhruwang in #9536
  • feat(i18n): ship Belgian Dutch and Swiss Italian survey bundles by @Dhruwang in #9539
  • fix(ai): stop logging prompts and model output when an AI call fails [ENG-3720] by @xernobyl in #9550
  • docs(mcp): troubleshoot Cloudflare blocking self-hosted MCP connections by @BhagyaAmarasinghe in #9554
  • feat: support taxonomy thinking levels and verify provider compatibility by @BhagyaAmarasinghe in #9561
  • feat(mcp): offer responses:read / responses:write to OAuth MCP clients by @xernobyl in #9479
  • docs: correct how Prisma applies migrations and document failed-migration recovery [ENG-2820] by @xernobyl in #9529
  • fix(responses): read organization and contact before the management create transactions [ENG-3722] by @xernobyl in #9551
  • fix(web): allow blob: workers in the CSP so Sentry Replay can compress by @pandeymangg in #9573
  • fix: remediate Formbricks image vulnerabilities by @BhagyaAmarasinghe in #9558
  • fix(security): bump next to 16.3.8 and patch 2 advisories [ENG-3737][ENG-3743] by @Dhruwang in #9579
  • fix(teams): expire pending invites when their creator leaves the organization by @BhagyaAmarasinghe in #9576
  • feat: dark mode and Custom CSS for surveys by @itsjavi in #9549
  • docs: add Attio and Salesforce integration guides by @harshsbhat in #9473
  • fix(billing): charge VAT through Stripe automatic tax on paid plans by @Dhruwang in #9568
  • feat(actions): explain CSS selector syntax in the no-code click action by @jobenjada in #9575
  • feat(surveys): let creators set alt text for survey images by @Dhruwang in #9574
  • fix(deps): pin handlebars 4.7.10 and shell-quote 1.12.0 for critical advisories [ENG-3806] by @xernobyl in #9584
  • fix(docker): reset install-input timestamps after the source copy so a cached install passes pnpm's check [ENG-3801] by @xernobyl in #9581
  • feat(nav): remove Beta badge from the Analyze section by @jobenjada in #9583
  • fix(invites): limit invites per user and org creation, bound inviter name by @mattinannt in #9585
  • fix(web): report a rejected clipboard write instead of a false "Copied" toast [ENG-3239] by @Dhruwang in #9542
  • chore: remove CODEOWNERS and automatic PR reviewer assignment by @mattinannt in #9590
  • fix(survey-link): give link survey routes their own error boundary [ENG-3171] by @pandeymangg in #9586
  • fix: create Dependabot Linear tickets as vulnerability-labelled Triage items by @mattinannt in #9589
  • feat(surveys): import Qualtrics surveys from .qsf files by @pandeymangg in #9595
  • docs: remove v6.1 section from the self-hosting migration guide by @mattinannt in #9599
  • refactor(hub): adopt @formbricks/hub 0.14.0 and drop the query-serialization workaround [ENG-2536] by @xernobyl in #9594
  • docs: mark the 5.4 accessibility fixes as released by @jobenjada in #9597
  • fix(database): keep the legacy Survey columns until Formbricks 7 by @pandeymangg in #9603
  • fix(database): build the keyset Response indexes with lock_timeout = 0 [ENG-3701] by @BhagyaAmarasinghe in #9580
  • fix(database): make the idle-transaction backstop opt-in through DATABASE_URL [ENG-3285] by @xernobyl in #9604
  • chore(docker): bump the cube group in /docker/cube-image with 2 updates by @Dhruwang in #9605
  • fix(docker): warn instead of blocking when the Compose is missing hub-worker [ENG-2484] by @xernobyl in #9606
  • feat: add guarded online 6.1 upgrades by @BhagyaAmarasinghe in #9609

Full Changelog: 6.0.2...6.1.0-rc.1

Don't miss a new formbricks release

NewReleases is sending notifications on new releases.