Skip to content

v2.6.0: Reliable analytics and custom form URLs

Choose a tag to compare

@JhumanJ JhumanJ released this 14 Oct 11:59
c851f9f

This release fixes traffic breakdown data loss during hourly cleanup, adds custom form URLs for self-hosted instances, and improves email integration visibility and form loading.

Analytics

  • Traffic Breakdown now preserves source, device, browser, operating system, and country counts when individual views are cleaned up. Analytics combines archived counts with recent views. #1316
  • Cleanup is protected against overlapping runs and concurrent view inserts, preventing lost or duplicated counts.
  • Dashboard form lists load faster and correctly include historical view counts. Summary charts also have clearer colors and more readable results. #1298, #1304

Historical data: older versions discarded detailed traffic metadata during cleanup. Overall view and submission counts were retained, but metadata already deleted cannot be reconstructed from the remaining statistics. Updating preserves the detailed breakdowns going forward.

Forms and integrations

  • Self-hosted form owners can set a custom form URL from Share → Regenerate link → Custom URL. Existing shared links and embeds must be updated when the URL changes. #1310
  • Email integration history now shows outcomes per recipient, including transport acceptance, failures, bounces, and complaints. Confirmed delivery to a recipient mail server is shown when signed SES feedback is configured; transport acceptance alone does not confirm delivery or inbox placement. Delivery details can be expanded when needed. #1299, #1300
  • The JavaScript SDK accepts a full form URL or a baseUrl for self-hosted instances. #1308

Fixed

  • Public forms load less unnecessary code, reuse server configuration more efficiently, and recover more reliably from stale browser assets. Temporary loading failures no longer appear as missing forms. #1290, #1288, #1289, #1305
  • Conditional fields no longer briefly flash while a form or saved draft loads. #1312
  • Fixed the payment editor crash when amounts are numeric, stale Google font previews, and select-field label accessibility. #1307, #1301, #1287
  • PDF templates identify and remove mappings to deleted form fields before continuing in the editor. Save the template to retain this cleanup. #1295
  • Restored missing submission-error and PDF-download translations, and repaired form validation messages across supported languages. #1311, #1313
  • Fixed public-form build checks for Amplify and sitemap generation with API URLs lacking a trailing slash. #1297, #1306

API and security

  • Export status polling now supports API tokens with forms-read, validates that the export belongs to the requested form, and has corrected endpoint and response documentation. #1314
  • Removed the unused public form-users lookup endpoint. #1309

Upgrade

This release includes database migrations. Back up your database, update the API and client together, apply migrations, and restart long-running workers.

After the release images are available, Docker installations can use jhumanj/opnform-api:2.6.0 and jhumanj/opnform-client:2.6.0, or pull latest. The standard API container applies migrations at startup. Source installations should run php artisan migrate --force from api/.

For SES delivery confirmation, configure EMAIL_TRACKING_SNS_TOPICS and the signed feedback endpoint as described in the email delivery tracking guide. Existing SMTP setups continue to work without SES feedback.

Full changelog

Compare v2.5.0...v2.6.0 — 24 merged changes.