Repository navigation
Releases: hansenje/systole-releases
Release list
Systole 1.2.0-beta.1
Beta. The first beta of Systole 1.2, a large rework of how the app is built. Only installs with Settings → Software Updates → "Receive beta builds" turned on are offered it; everyone else stays on their current version.
Requires macOS 13 (Ventura) or later, or 64-bit Windows 10 or later. Earlier Systole builds also ran on macOS 11–12; this one does not.
Your data, REDCap exports and .pedal files are unchanged — every export check produces the same output as before.
What's different
- "Records" is the new name for the home tab. The list of your patients and tests is now called Records everywhere in the app and the user guide. "Registry" now only ever means the PEDAL / REDCap registry. Two related labels: the Patients table's "Registries" column is now Networks (the CNU networks), and the patient window's control-subject section is PEDAL Registry.
- The database runs in its own background process. A long import or dry run no longer freezes the window. On Windows you'll see a Systole Engine process under Systole in Task Manager; on macOS it's one of the "Systole Helper" processes.
- If that process ever stops, Systole restarts it once and tells you; if it stops again, a red banner explains what happened and offers the diagnostic log, rather than the app failing silently. Please send us that log if you ever see it.
- Failed imports leave nothing behind. If a file fails part-way through importing, nothing from it is saved — previously it could leave a patient record with no test.
- Faster REDCap export window when you have many patients.
- Also includes every fix released since 1.1.0-beta.2: control subjects kept out of REDCap export, the FRIEND citation,
est_age_daysacross daylight saving, and a dependency security update.
Installing
- macOS: download the
.dmg, open it, and drag Systole into Applications (replace the existing copy). - Windows: download and run the
.exeinstaller.
Please report anything that looks wrong — especially in the Records tab, imports, and REDCap export.
Systole 1.1.0-beta.2
Beta. Installs on 1.0.x are not offered this build automatically; installs already on the 1.1.0 beta (or opted in to beta builds) are. To try it, download the installer below (macOS DMG, or the Windows .exe once it appears) and install over your current version. Your database is kept.
Verified tests change only through an amendment
A verified test is signed off, and now nothing changes its values unless you open it and click Amend.
- Bulk Import, Merge Mode, the Review queue's Merge, and MedGraphics' "missing breath-by-breath data" can still add breath data to a verified test that has none. Its summary, AT and PFT values stay exactly as verified, blanks included, because a blank AT may be the reader's decision. The file's timing and AT time are held until you amend the test and click Fill Missing or Recompute from BxB.
- A verified test that already has breath data, or a bulk Overwrite of one, now goes to the Review queue instead of being changed.
- Review → Overwrite on a verified test and Admin → Reassign of verified tests now explain what will change and ask for your reason, which is recorded in each test's history.
- Importing as Verified saves each test exactly as the file has it.
- The verified lock now blocks keyboard input as well as the mouse and covers the 9-panel. Amend reloads the test first, so nothing typed while it was locked is saved.
Recalculate summaries from breath data, in bulk
- Data Management → Recalculate Summaries from Breath Data: choose Preliminary and/or Historical tests, click Preview to see every value that would change, then Recalculate. Verified and amended tests are never included.
- Bulk Import → "Recalculate summaries from merged breath data" (with Merge Mode): when a merge adds breath data to a Preliminary or Historical test, its summary is recalculated from it.
Bulk Import Dry Run
- Dry Run runs the import with your chosen settings, shows what would happen to each file, and then undoes it. Nothing is saved, and your file selection is kept for the real import.
- The results box now also reports merges that found nothing new, summaries recalculated, breath data added to verified tests, and verified tests sent to Review.
REDCap
- Tests whose values change through a merge, a recalculation or a re-average are now marked for re-export, so REDCap doesn't keep the old values.
Fixes
- Moving AT on the 9-panel now blanks AT fields the breath data can't supply (for example SpO₂ at AT), instead of keeping the value from the old AT point.
- MedGraphics breath-data retrieval no longer overwrites the local test when MedGraphics returns no breath data.
User guide
- New chapter Bulk Import in Depth (Help → User Guide) covers every merge rule and what will and won't happen. It's also included as a single file you can email:
Systole - Bulk Import in Depth.html.
Systole 1.1.0-beta.1
Beta. Installs on 1.0.x are not offered this build automatically. To try it, download the installer below (macOS DMG, or the Windows .exe once it appears) and install over your current version. Your database is kept. Once installed, you'll be offered later betas and then the stable 1.1.0.
REDCap
- The export now reads its codes and field list straight from the registry's data dictionary (production 1.0, 2026-07-24), instead of a hand-copied list. The export itself is unchanged.
Breath-by-breath averaging
- Imports now follow the site's default averaging method. Previously, bulk and single-file imports ignored it.
- Breeze-averaged data is no longer averaged a second time. A
.sumexported with any method other than Unaveraged already has averaged breath data. Systole keeps Breeze's summary, shows the rows as exported, and locks the 9-panel averaging buttons with a note. - Unaveraged and MedGraphics imports, when imported as preliminary, have their single-breath summary recomputed with the site default. The device's original values are kept with the test.
- Settings → Default BxB Averaging Method can now apply a new default to all preliminary tests at once. Historical, verified and Breeze-averaged tests are not changed.
Exercise tab and 9-panel
- Compute from BxB is now two buttons. Fill Missing from BxB fills only empty fields. Recompute from BxB replaces every value the breath data can provide.
- Moving or clearing AT on the 9-panel changes only the AT values. Peak, rest and the slope to peak are left alone, and every AT field now follows the new AT point.
- Peak work is now the highest work rate reached during exercise, which is the registry's definition. Before, it was the averaged value at the moment of peak VO₂, which read low.
Fixes
- Clearing AT now also clears the VE/VCO₂ slope at AT on the Exercise tab.
- Deleting a CPET value now actually removes it, instead of the old value returning on the next refresh.
- A failed Amedro equation no longer reports a predicted peak VO₂ of 0.
Systole 1.0.3
A correctness patch. Two fixes you may notice, and groundwork you shouldn't.
Network memberships display correctly. The Patients table showed a bare 6 for anyone in
SV-ONE, and showed PC4 Family under its former name, "CNU". Both now read correctly. Only the
display was affected — the checkboxes you tick and the data sent to the registry were always
right, so no re-entry is needed.
Exercise duration exports correctly for imported tests. A test whose duration carried a
fraction of a second could export as "23 min 60 sec" instead of "24 min 0 sec". REDCap accepts
out-of-range values with only a warning, so this would have settled quietly into the registry as
a wrong duration. Typed durations were never affected.
Ethnicity and gender identity can record "Unknown". Both fields now offer Unknown, with a
Clear button to return them to unanswered after a mis-click. "Not asked" and "asked, unknown"
are different answers, and the registry can now tell them apart.
Under the hood, this release adds a test harness that freezes the exact REDCap rows and .pedal
files Systole produces, so a future change that would alter them fails loudly instead of shipping
quietly. That matters now that Cincinnati Children's is building their own .pedal v5.0 generator
against our published specification — and it is the foundation for the larger architectural work
coming in v1.5.
Download the DMG below and drag Systole into Applications. Windows installer attached shortly
after publication.
Systole 1.0.2
Systole 1.0.2 — correctness release for the PEDAL CPET Data Manager.
All patient data stays on the local machine. Nothing is transmitted over the internet.
Installing
- macOS — download the
.dmg, open it, drag Systole into Applications. Signed and notarized by Apple. - Windows — download the
.exeinstaller and run it. Code-signed; SmartScreen may still warn on early downloads until the certificate accrues reputation.
Upgrading from 1.0.0 or 1.0.1: install over the top. Your database, settings, and license key are untouched.
New sites: follow docs/DEPLOYMENT_CHECKLIST.md. Full-disk encryption (FileVault / BitLocker) is required — it is how patient data is protected at rest in this release. Auto-backup is off until you configure it in Settings.
Please read if you export to REDCap
Two defects in this release affected data that has already been uploaded to the registry. Systole now finds the affected rows for you: open the export dialog and click the new Needs Re-Export button.
at_vevco2_1andpeak_vevco2_1carried the ventilatory equivalent at a single point, not the VE/VCO₂ slope the dictionary asks for. Both measures are unitless and land in the same range, so nothing downstream looked wrong. Every row exported before this release is affected.- Patients who were never asked about Hispanic/Latino ethnicity were uploaded as a positive "No." Existing rows can't be told apart from real "No" answers and will keep exporting as
2; from now on, an unanswered field exports99, Unknown.
What's new
- Systole now records what it sent to REDCap. Every export is kept in a local ledger and re-checked each time you open the dialog, so a row that no longer matches what Systole would build today is flagged rather than found by hand. The pill on each test says which columns differ, and distinguishes a plain Re-export from Blank in REDCap (REDCap won't overwrite a value with a blank) and Record moved (re-uploading would create a second record). The ledger never leaves the machine.
- Hispanic / Latino can now say "not asked." It was a checkbox, which could not tell No apart from never recorded. It is now Yes / No with nothing preselected and a Clear link to return it to unanswered. Race gained an Unknown option.
- VO₂ vs Work Rate is drawn to a fixed scale. The panel used to auto-fit both axes, so the same slope rendered at a different angle for a child and an adult — the one comparison the panel exists to support. The axes are now locked to 10:1 and a dashed 10 mL/min/W reference runs from resting VO₂, so a shallow work-to-VO₂ response is visible at a glance. Treadmill tests use ACSM-estimated watts, labelled as such.
- The patient dialog was rearranged into a single Demographics row with consistent typography throughout, and the diagnosis moved above the network IDs.
Fixes
- Predictions are no longer computed from implausible demographics. A height typed in inches instead of centimetres (64 rather than 163) returned eight predictions, three of them marked "appropriate" — two negative and one absurd — and those values fed the comparison table, percent predicted, Z-scores and the prescription. Age, height, weight and sex are now range-checked on every path, including the Report tab, trend charts and import. Out-of-range demographics now produce no predictions rather than wrong ones.
- A previous test's data could stay on screen after switching tests. Six places painted test-scoped content and returned early when the new test had none: the prescription's intensity-target table kept the previous patient's training heart-rate ranges, the BxB tab kept the previous test's time-down table and unapplied edits, and the MedGraphics import dialog could count a different patient's hidden selections.
- Protocol codes are stored and exported exactly as recorded. "Other" is now REDCap's
88for protocols as it is everywhere else; existing mappings convert on first launch. Nothing in REDCap changes and nothing is flagged for re-export. - A malformed
.pedalfile no longer imports as a blank test. A file whose contents were not a JSON object imported silently with no error at all; it is now rejected with a stated reason. - "Describe gender identity" now appears when Gender is set to Other.
- Editing a patient's ethnicity correctly re-arms the REDCap export flag on the patient and all of their tests.
Documentation
The user guide chapters on the patient registry, normative predictions, the breath-by-breath tab and REDCap export have been brought up to date with all of the above. Help → User Guide, or the Notion copy.
Systole 1.0.1
Systole 1.0.1 — maintenance release for the PEDAL CPET Data Manager.
All patient data stays on the local machine. Nothing is transmitted over the internet.
Installing
- macOS — download the
.dmg, open it, drag Systole into Applications. Signed and notarized by Apple. - Windows — download the
.exeinstaller and run it. Code-signed; SmartScreen may still warn on early downloads until the certificate accrues reputation.
Upgrading from 1.0.0: install over the top. Your database, settings, and license key are untouched.
New sites: follow docs/DEPLOYMENT_CHECKLIST.md. Full-disk encryption (FileVault / BitLocker) is required — it is how patient data is protected at rest in this release. Auto-backup is off until you configure it in Settings.
What's new since 1.0.0
The 1.0.0 tag was cut mid-day on 2026-07-24, so this release carries more than the version number suggests — everything below landed after that build.
- Diagnosis is now recorded per visit. Each test keeps the diagnosis that applied on that date, so a patient's Fontan → transplant transition no longer rewrites their earlier studies. The patient record still holds the current diagnosis, which seeds each new test.
- AVSD (atrioventricular septal defect / AV canal) is now its own diagnosis instead of forcing a choice between isolated ASD and VSD. The PEDAL registry dictionary was updated to match, so AVSD records import end to end.
- Choose which spelling is authoritative when merging patients. Linking an import to an existing patient whose name differs only by spelling now asks which version is current, instead of silently keeping the registry's. Neither spelling is lost — the other becomes a searchable alias.
- Registry search matches name aliases (AKA) on both the Tests and Patients sub-tabs.
- ICD / pacemaker status carries forward from the prior visit, so an imported test no longer exports a blank device field — no import format carries it.
- Update check: a manual Check for Updates Now button, and stable installs are never offered a beta build.
Fixes
- A patient edit no longer silently rewrites a verified test — those changes now go through the amend-with-a-reason flow.
- The REDCap export flag re-arms when patient-level data changes, so edits are not missed at the next export.
- Resolving a fuzzy patient match no longer drops the queued import.
Reporting problems
Use the in-app Help menu to find your log, then report the issue to the coordinating center. Please do not include patient identifiers in a report.
Systole 1.0.0
Systole 1.0.0 — the first production release of the PEDAL CPET Data Manager.
All patient data stays on the local machine. Nothing is transmitted over the internet.
Installing
- macOS — download the
.dmg, open it, drag Systole into Applications. Signed and notarized by Apple. - Windows — download the
.exeinstaller and run it. Code-signed; SmartScreen may still warn on early downloads until the certificate accrues reputation.
New sites: follow docs/DEPLOYMENT_CHECKLIST.md. Full-disk encryption (FileVault / BitLocker) is required — it is how patient data is protected at rest in this release. Auto-backup is off until you configure it in Settings.
Upgrading from 1.0.0-beta: install over the top. Your database, settings, and license key are untouched.
What's new since the beta
- Diagnostic log — Systole now keeps a rolling log of what the application did, at Settings → Troubleshooting → Open Log Folder (also on the Help menu). If something goes wrong, attaching this file to a bug report is the fastest path to a fix. Review it before sending: error messages can quote patient values.
- Clearer failures — an unexpected shutdown now explains itself and names the log file instead of leaving a blank window, and confirms your data is intact.
- Signed Windows installers — the "Unknown publisher" warning is gone.
- Windows robustness — a second launch focuses the running window instead of opening a competing copy, and database imports, backups, and settings saves now survive the transient file locks antivirus and indexing software cause.
- Excel-friendly CSV exports — accented names no longer garble on open.
- Documentation — licensing and troubleshooting are documented for the first time, the REDCap export walkthrough has screenshots, and all guide images are current. The full guide ships inside the app: Help → Systole User Guide.
Reporting problems
Use the in-app Help menu to find your log, then report the issue to the coordinating center. Please do not include patient identifiers in a report.
Systole 1.0.0-beta
Systole 1.0.0-beta — the PEDAL Network's CPET Data Manager.
Download the build for your platform from the Assets below.
macOS (Apple Silicon)
- Download
Systole-1.0.0-beta-arm64.dmg. - Open the
.dmgand drag Systole into your Applications folder. - Launch Systole from Applications.
Windows
- Download
Systole.Setup.1.0.0-beta.exe. - Run the installer and follow the prompts.
- Launch Systole from the Start menu.
Windows may show a SmartScreen prompt on first run — click More info → Run anyway to proceed.
A fresh install opens in Demo mode with a bundled sample database so you can explore safely. Switch to your real data any time via Settings → Application Mode → Clinical. Systole checks for newer releases on launch and links back here when one is available.