Skip to main content

Release Notes

We strive to deliver updates fortnightly (bi-weekly), continuously improving the platform with new features, enhancements, and bug fixes. Each release consolidates changes across all platform components including CTMS, Sublink, Analytics, and supporting services.


v2.40 — May 09, 2026

Feature — Appointment Module Overhaul & End-User Documentation

Version: bundle-v2.40.20260509

New Features

  • End-User Documentation — Four new illustrated user guide pages added to docs.zynomi.com covering the complete clinical trial workflow:
    • Dashboard Overview — KPI cards (Total Studies, Subjects, Active Sites, Adverse Events, Visit Completion), date range filter, Enrollment Trend and Subject Status charts, full sidebar navigation reference
    • Study Design (Protocol Design) — Step-by-step guide for creating a study, setting eligibility, assigning sites, personnel, subjects, and eCRFs — with 10 real screenshots
    • Subject Enrollment — Enrolling patients from the registry, bulk site assignment, enrolled subjects list — with 3 real screenshots
    • Subject Clinical Data Capture — All 8 clinical data sections (Consent, Demographics, Vitals, Family Medical History, Concomitant Medications, Laboratory Results, Physical Examination, Adverse Events) — with 21 real screenshots

Enhancements

  • Appointment Module — Status Lifecycle — Appointments now support an extended status lifecycle: Scheduled → Open → Completed → Closed. Extended_Status field on the Appointment doctype stores Completed/Closed states separately; the status column in the list view resolves from Extended_Status when present
  • Appointment Module — Time Slot Population — The appointment form now dynamically populates available time slots based on the selected practitioner and date
  • Appointment Module — Practitioner Display — Appointments list now shows the practitioner's full name instead of the internal practitioner ID
  • Appointment Module — Advanced Filters — Advanced filter panel added following the Management/Users module standard; filter by Practitioner ID works as expected
  • Appointment Module — Status Action Buttons — Bulk status update via action buttons added alongside checkbox-based multi-select with delete support
  • Appointment Module — UX Cleanup — Removed Duration field from grid and form; new appointments default to Scheduled (read-only on create, editable on edit); removed duplicate toast on reschedule; removed Delete Appointment action

Bug Fixes

  • Consent Tab Default — Consent tab is now selected by default when opening a patient or study participant detail page (previously defaulted to a different tab)
  • Appointment — Reschedule & Cancel — Fixed reschedule not working correctly; fixed Cancel Appointment flow; fixed Open status not being fetched correctly when opening the edit sheet
  • Appointment — Duplicate Toast — Removed double toast notification on reschedule

v2.39 — May 09, 2026

Patch — IPv4 Auto-Detection Fix & Consent Tab Default

Version: bundle-v2.39.20260509

Bug Fixes

  • IPv6 Auto-Detection on Dual-Stack Servers — On Hetzner Cloud (and other dual-stack hosts), the server OS prefers IPv6 for outbound connections. zynctl.sh used curl https://ifconfig.me without forcing IPv4, causing the IP detection service to return an IPv6 address (e.g., 2a01:4f9:c010:a4a3::1). All service URLs in the deployment summary were then malformed and unreachable from browsers. Fix:

    • All curl calls in SERVER_HOST auto-detection now use the -4 flag to force IPv4
    • Secondary fallback changed to api4.ipify.org (IPv4-only endpoint)
    • Tertiary fallback added: checkip.amazonaws.com (IPv4-only)
    • hostname -I fallback now filters to dotted-decimal IPv4 only, excluding 127.x
    • Added post-detection guard: if the result still contains :, a clear warning is printed and SERVER_HOST is cleared, prompting the operator to set it manually in zynctl.conf
  • Consent Tab Now Default in Patient/Participant Views — The consent tab was not selected by default when opening a patient's detail page. Resolved by updating the default tab value across all patient and participant detail components.

Upgrade Notes

If you are on a dual-stack Hetzner (or similar) server, always set SERVER_HOST explicitly in zynctl.conf before deploying:

SERVER_HOST=<your-public-ipv4>

Get the IPv4 from your cloud console (Hetzner → server detail → Public IPs → IPv4).


v2.3.0 — Mar 15, 2026

S3 Bundle Distribution & Token-Based Downloads

Version: bundle-v2.36.20260315

Download

Install bundles are distributed via a private S3 bucket. Each client receives download credentials during onboarding.

Download URL:

https://zynomi-ctms.s3.us-east-2.amazonaws.com/zynctl-bundle-2.36.20260315.tar.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential={credentials-received}
# Download using your provisioned token URL
curl -Lo zynctl-bundle-2.36.20260315.tar.gz '<YOUR_DOWNLOAD_TOKEN_URL>'

# Extract and deploy
tar xzf zynctl-bundle-2.36.20260315.tar.gz
cd zynctl-bundle-2.36.20260315
SERVER_HOST=<your-server-ip> ./zynctl.sh full-deploy

Need download credentials? See our Download FAQ or contact your Zynomi account representative at contact@zynomi.com.

New Features

  • S3 Bundle Distribution — Install bundles are now automatically uploaded to a private S3 bucket as part of the CI/CD pipeline, providing reliable and fast downloads for client deployments
  • Token-Based Download Access — Each client receives a unique, time-limited presigned download URL. Tokens are generated per client during onboarding using generate-download-token.sh
  • Automated S3 Upload in CI — The GitHub Actions build workflow now uploads the bundle tarball to S3 after every successful build (tagged and main-branch)

Enhancements

  • Workflow region configuration corrected for S3 bucket (us-east-2)
  • Download token generator script with bundle listing, expiry control, and ready-to-use client install commands

Technical Details

  • Bucket: s3://zynomi-ctms (private, us-east-2)
  • Auth: AWS presigned URLs with configurable expiry (default 7 days, max 7 days)
  • Token generation: ./scripts/generate-download-token.sh <version> [expiry-seconds]

v2.2.0 — Mar 15, 2026

Observability, Data Quality & Developer Experience

New Features

  • Grafana Analytics Sidecar — Provisioning config (datasources, dashboards) for Grafana shipped alongside the platform. Grafana itself is licensed under AGPL-3.0 and is not bundled or redistributed — operators pull the official image independently.
  • Elementary Data Quality Reports — Daily dbt pipeline generates data-observability reports via Elementary (Apache-2.0). Elementary runs as a companion service; it is not packaged inside the platform distribution.
  • Frontend Developer Guide — Three-page architecture guide covering UI standards, naming conventions, error handling, and two worked CRUD examples
  • CI/CD Documentation — Build Pipelines page and Installer Bundle & Versioning guide added to Developer Guide
  • zynctl Post-Snapshot & Token Commands — New post-snapshot and refresh-token commands for day-2 operational workflows

Enhancements

  • Consolidated zynctl.v1.sh → single zynctl.sh controller (removed legacy script)
  • Practitioner creation: dynamic department dropdown + improved error handling
  • UI improvements: dashboard error states, patient name display, login/signup titles
  • Deployment Verification recipe with copy-paste test commands
  • Frappe Token Refresh recipe and platform runbook updates
  • Post-snapshot recipe with accurate step table and cross-links
  • Sidebar restructure: Developer Guide category replaces flat Architecture section

Bug Fixes

  • Fixed daily dbt pipeline to always generate Elementary companion reports regardless of model changes
  • Fixed HIV baseline staging model (result_of_cd4_count column mapping)
  • Fixed ODM container DB_SSLMODE pass-through and data_analytics RBAC role
  • Fixed Grafana sidecar DuckDB datasource plugin reference
  • Fixed login/signup page titles and subject navigation ordering
  • Fixed practitioner creation error handling for missing departments

v2.31 — Mar 08, 2026

Patch — Force-Pull ctms-init Image

Bug Fixes

  • Stale Docker Image Cache — During fresh deploy, Docker reused a locally cached ctms-init:latest (v1.10) instead of pulling the newly published v1.11, causing the Item Group fix from v2.30 to be skipped. Fix: zynctl.sh now runs docker compose pull ctms-init before up in both the deploy and update functions.

v2.30 — Mar 07, 2026

Patch — Deployment Race Condition & Missing Item Groups

Bug Fixes

  • Token Race Condition — Added Step 6b to zynctl.sh that waits for the Frappe setup container (frappe-marley-health-setup-1) to fully exit before extracting the API token. Previously, the token could be read from incomplete logs, resulting in 401 UNAUTHORIZED errors during ctms-init provisioning.
  • Missing Item Groupsctms-init Stage 4 now creates "Laboratory" and "Drug" Item Groups before seeding Items that depend on them. Previously, Items with item_group="Laboratory" failed with 417 EXPECTATION FAILED because the Item Group didn't exist.
  • Record Count Update — Stage 4 master data increased from 140 to 142 records (added 2 Item Groups).

Technical Details

  • zynctl.sh Step 6b: polling loop checks setup container status every 5s for up to 10 minutes
  • frappe_seed_master_data.py: new seed_item_groups() function called before seed_laboratory_items()
  • ctms-init Docker image: v1.11 (from v1.10)

v2.1.0 — Mar 01, 2026

Deployment Automation & Patient Workflows

New Features

  • zynctl Bundle Controller — Single-command deployment controller (zynctl.sh) with GitHub Actions CI workflow for automated bundle builds and releases
  • Patient Appointment Workflows — Reschedule and cancel appointments with full UI flow and confirmation dialogs
  • Structured API Logging — Middleware-level JSON logging for all /api/v1/* requests with timing, method, and status
  • Demo Data Seeding — Self-contained seed-demo-data.sh script with patient seed containers for one-command demo environment setup
  • Custom Branding — Volume-mounted branding assets (/brand) for whitelabel deployments without image rebuilds
  • KrakenD Access Logging — Router-level access log enabled for API gateway observability

Enhancements

  • Renamed "Subjects" to "Patients" across all navigation and UI labels
  • Calendar date picker: allow past dates for Sites (expected_start_date, irb_approval_date)
  • Date formatting standardised to YYYY-MM-DD for Frappe API compatibility
  • zynctl.sh: Docker Hub login to avoid pull rate limits, env validation improvements, seed-users command
  • Healthcare Settings init step (Step 7c) added to provisioning pipeline
  • Comprehensive documentation overhaul: deployment recipes, seed-and-init guide, custom branding recipe, demo user seeding, bundle deployment guide, platform runbook updates
  • Recipes section added to docs site: SSH keys, Hetzner VM setup, shell commands
  • Developer Guide sidebar renamed from Architecture

Bug Fixes

  • Fixed Patient Encounter creation in user/subject signup flows
  • Fixed LaboratorySelect variable declaration order (ReferenceError)
  • Fixed Docker-internal API URL leaking to browser-side code
  • Fixed doctype API route ignoring limit_page_length query param
  • Fixed duplicate subject-study enrollment and null encounter on subject add
  • Fixed encounter-service to handle both API response shapes
  • Fixed clinical_trial field type (Select → Check) on Drug Prescription DocType
  • Removed DLT ghost columns from patient, drug_prescription, and patient_encounter staging models
  • Fixed SSL verification for self-signed certs in data pipeline ingester

v2.0.0 — Feb 15, 2026

Major Release — Single-Click Deployment & Pre-Built Images

New Features

  • Single-Click Deployment — Automated install.sh script for full-stack deployment (Rocky Linux 10 compatible)
  • Pre-Built Docker Images — All services now use CI/CD-built images (ctms-cube, ctms-api-gateway, supabase-seed, frappe-marley-health)
  • Patient Composite API — New /api/v1/patient/[email] endpoint combining Patient and Address data

Enhancements

  • Calendar date picker with UTC storage and local display
  • Study Participants: Enhanced enrollment with duplicate prevention
  • Comprehensive documentation overhaul (deployment guides, system requirements, platform runbook)
  • Standardized .env.production naming convention
  • Ghost column cleanup in data pipeline models

Bug Fixes

  • Fixed calendar date picker save/display with UTC normalization
  • Fixed duplicate subject-study enrollment and null encounter issues
  • Fixed Cube API retry logic for 'Continue wait' responses
  • Fixed Docker-internal API URL leaking to browser

v1.9.0 — Feb 01, 2026

New Features

  • Runtime Configuration — RUNTIME_* env override system for Docker deployments
  • Self-Hosted Supabase — Complete on-premise Supabase stack with docker-compose
  • CTMS Init Service — Dedicated Docker containers for Frappe provisioning (5-stage pipeline)
  • CTMS Staffing Planner — Web app with optimistic/pessimistic scenario planning

Enhancements

  • Refactored Signup and User Management flows
  • Generic entity count API endpoint (ADR-003)
  • Client-server URL separation for API calls
  • Build-time branding args for whitelabel support
  • Master data seed script with 83 records and 34 custom DocTypes

Bug Fixes

  • Fixed Supabase URL priority (runtime over build-time)
  • Fixed cubestore causing Cube 'Continue wait' hang
  • Fixed duplicate CORS headers in Caddy configuration

v1.8.0 — Jan 18, 2026

New Features

  • GitHub Actions Pipelines — Automated Docker builds with 1.x versioning across all repositories
  • OpenSpec Integration — Spec-driven development framework initialized in all projects
  • Data Pipeline CI/CD — Full ingester workflow with dry-run support, caching, and notifications
  • Unified Docker Stack — Single compose file with Caddy, observability & analytics profiles

Enhancements

  • Studies module: Back button with pagination handling
  • Dark overlay background when sheets are open
  • User management: Active/Inactive status toggle
  • Cube API URL configurable via environment variable
  • DBT pipeline with Elementary data quality reports

Bug Fixes

  • Fixed docker-entrypoint.sh permissions
  • Fixed DATALAKE_APIS shell parsing issues
  • Fixed Elementary command profile flags

v1.7.0 — Jan 04, 2026

New Features

  • Dynamic RBAC System — Configurable role-based access control with Frappe backend integration
  • Study Export (ODM) — Export studies to CDISC ODM format (PDF/XML/HTML)
  • Server-Side Pagination — Migrated data grids to server-side pagination for better performance
  • My Studies/Subjects KPIs — Personalized dashboard KPIs for logged-in users
  • Master Data JSON Config — Sidebar Master Data navigation now loaded from JSON configuration

Enhancements

  • RBAC Phase 3: Dynamic permissions with Frappe backend
  • Study Designer read-only access to subject clinical data
  • Widget-level error handling for metrics
  • User-friendly "Already exists" validation on signup

Bug Fixes

  • Fixed RBAC: Study Personnel button visibility for Study Coordinator
  • Fixed permissions: show disabled checkbox for missing permission records
  • Fixed Docker build and GitHub Actions configuration

v1.6.0 — Dec 14, 2025

New Features

  • MCP Chat Widget — Embeddable AI chat widget with theme presets, ChatGPT-style interface, and environment variable configuration
  • Cube.dev Semantic Layer — Ad-hoc analytics playground with Docker Compose deployment
  • MCP Server Deployment — REST bridge for AI assistant with Docker Compose hosting and DNS setup
  • Dynamic Dashboards — Real-time KPI dashboards served through Cube.dev semantic layer

Enhancements

  • Users module with full CRUD operations
  • Signup role assignment restricted to Patient only
  • Data quality checks for study dates in analytics pipeline
  • Environment variables standardized across all projects

Bug Fixes

  • Fixed data anomalies in dashboard metrics
  • Fixed table prefix issues in data pipeline
  • Fixed heading formatting in documentation

v1.5.0 — Dec 06, 2025

New Features

  • Role-Based Access Control (RBAC) — Guard rails for sites, action buttons, and feature flags
  • Dynamic Logo Support — Configurable branding with environment variables
  • Documentation Site — New Docusaurus-based documentation portal with API reference

Enhancements

  • Major refactor from "Patients" to "Subjects" terminology
  • Permission system improvements for Study Designer role
  • Signup support for multiple roles
  • New API menu and style refactoring
  • Logo management documentation added

Bug Fixes

  • Fixed access control issues reported by QA team
  • Fixed CVE-2025-55182 security vulnerability
  • Fixed layout wrapper and minimatch issues

v1.4.0 — Nov 29, 2025

New Features

  • Data Lakehouse Pipeline — Initial dbt pipeline with Cube.dev integration
  • Data Ingestion Service — DLT Hub-based data pipeline for clinical trial data

Enhancements

  • Drug Master changed to new doctype "Concomitant Medication"
  • Study CRF and Study Sites view screens standardized
  • Date formatting (DD-MMM-YYYY) applied across all screens
  • Calendar popover close behavior improved
  • FAQ and Glossary pages added to documentation

Bug Fixes

  • Fixed date picker calendar year limits for better UX
  • Fixed date range validator with improved user experience

v1.3.0 — Nov 22, 2025

New Features

  • Blog Section — Added blog page with code editor color theme
  • Change Password — Self-service password change with fallback redirect

Enhancements

  • Controlled menu navigation based on user roles
  • Future date selection enabled for non-DOB date fields
  • Documentation refactored and organized

Bug Fixes

  • Fixed sidebar background color issue
  • Fixed blog page rendering
  • Fixed about popup display

v1.2.0 — Nov 17, 2025

New Features

  • Internal API Layer — All APIs now served locally, removed KrakenD dependencies
  • New Signup Endpoints — Separate endpoints for user and subject registration

Enhancements

  • REST API client documentation compatible with Postman and OpenAPI spec
  • API documentation refactoring
  • GitHub Actions for Docker builds
  • Login page set as homepage

Bug Fixes

  • Fixed Docker build issues
  • Fixed GitHub Actions build configuration
  • Fixed login button color

v1.1.0 — Nov 14, 2025

New Features

  • Access Control & Authorization — Role-based access introduced
  • Study Personnel Module — Manage study team members
  • Dashboard Prototype — Initial dashboard implementation

Enhancements

  • ActionGuard component for permission-based UI controls
  • React Day Picker upgraded to v9.11.1 with dropdown selectors
  • Dashboard title modifications

Bug Fixes

  • Fixed add button issues in Sites and Personnel modules
  • Fixed role name display in Study Personnel
  • Fixed X button behavior (application standard)

v1.0.0 — Nov 07, 2025

New Features

  • Subject CRF Module — Dynamic form generation for Case Report Forms
  • Adverse Events Module — Capture and track adverse events
  • Laboratory Module — Lab test prescriptions with dropdown selection
  • Concomitant Medication — Drug prescription management

Enhancements

  • Unified card view across patient and study modules
  • Patient demographics update capability
  • Country master dropdown pagination
  • Study participant location capture with validation

Bug Fixes

  • Fixed consent save with full subject name
  • Fixed physical examination with full patient name
  • Fixed family medical history name validation
  • Fixed vital signs missing attributes

v0.9.0 — Oct 13, 2025

New Features

  • Patient Self-Signup — Form-based patient registration
  • Dynamic CRF Forms — Human-readable field labels generated automatically

Enhancements

  • Month and year selection enabled on date pickers
  • React date picker with template design
  • Signup UI improvements

Bug Fixes

  • Fixed CRF form readability
  • Fixed calendar UI issues

v0.8.0 — Sep 28, 2025

New Features

  • Study CRF Implementation — Link CRFs to studies and subjects
  • CRF CRUD Operations — Add, edit, view, list, and delete CRF entries

Enhancements

  • CRF listing based on Study and Subject
  • Dynamic form field generation with proper structure
  • Read-only forms positioned at top of sheets

v0.7.0 — Aug 25, 2025

New Features

  • Drug Prescription Module — Add and manage drug prescriptions
  • Laboratory Listing — View and manage lab tests

Enhancements

  • Drug dropdown excludes existing list items
  • Enhanced drug prescription list with accurate details
  • Frappe proxy APIs added

Bug Fixes

  • Fixed laboratory form with lab test dropdown
  • Removed console logs and debuggers

v0.6.0 — Aug 09, 2025

New Features

  • Patient Module — List and add patients
  • Encounter Creation — Automatic encounter creation on participant addition

Enhancements

  • Timestamp added to patient list to avoid cache issues
  • Location dropdown moved under search field for bulk operations

Bug Fixes

  • Fixed edit patient functionality

v0.5.0 — Jul 27, 2025

New Features

  • Business Glossary — Platform terminology reference
  • Study Participant Details — Tabbed interface for participant data

Enhancements

  • Standardized card views for subject and study modules
  • Elevated card view design
  • Enhanced glossary presentation layer

Bug Fixes

  • Fixed issues in study participant detailed tabs