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_Statusfield on the Appointment doctype stores Completed/Closed states separately; the status column in the list view resolves fromExtended_Statuswhen 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.shusedcurl https://ifconfig.mewithout 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
curlcalls inSERVER_HOSTauto-detection now use the-4flag to force IPv4 - Secondary fallback changed to
api4.ipify.org(IPv4-only endpoint) - Tertiary fallback added:
checkip.amazonaws.com(IPv4-only) hostname -Ifallback now filters to dotted-decimal IPv4 only, excluding127.x- Added post-detection guard: if the result still contains
:, a clear warning is printed andSERVER_HOSTis cleared, prompting the operator to set it manually inzynctl.conf
- All
-
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-snapshotandrefresh-tokencommands for day-2 operational workflows
Enhancements
- Consolidated
zynctl.v1.sh→ singlezynctl.shcontroller (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_countcolumn mapping) - Fixed ODM container
DB_SSLMODEpass-through anddata_analyticsRBAC 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.shnow runsdocker compose pull ctms-initbeforeupin both thedeployandupdatefunctions.
v2.30 — Mar 07, 2026
Patch — Deployment Race Condition & Missing Item Groups
Bug Fixes
- Token Race Condition — Added Step 6b to
zynctl.shthat 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 in401 UNAUTHORIZEDerrors during ctms-init provisioning. - Missing Item Groups —
ctms-initStage 4 now creates "Laboratory" and "Drug" Item Groups before seeding Items that depend on them. Previously, Items withitem_group="Laboratory"failed with417 EXPECTATION FAILEDbecause 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.shStep 6b: polling loop checks setup container status every 5s for up to 10 minutesfrappe_seed_master_data.py: newseed_item_groups()function called beforeseed_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.shscript 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-DDfor 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
LaboratorySelectvariable declaration order (ReferenceError) - Fixed Docker-internal API URL leaking to browser-side code
- Fixed doctype API route ignoring
limit_page_lengthquery param - Fixed duplicate subject-study enrollment and null encounter on subject add
- Fixed
encounter-serviceto handle both API response shapes - Fixed
clinical_trialfield 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.shscript 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