IINTS-AF SDK v1.5.19 Release Notes¶
Release date: 2026-06-30
v1.5.19 is a desktop reliability and update-transparency release. It focuses on making the native desktop app open reliably on macOS and making SDK updates easier to understand because users can now see update commands and outputs directly.
What Changed¶
1. macOS Desktop App Startup Fix¶
The macOS Cocoa fallback app could close immediately after launch. The root cause was a PyObjC selector-export issue:
objc.BadPrototypeError: '_label' expects 0 arguments
Internal Python helper methods inside the NSObject delegate were being interpreted as Objective-C selectors. The fix marks those helpers with @objc.python_method, keeping only the real Cocoa callbacks exposed to Objective-C.
Affected area:
src/iints_desktop/cocoa_app.py
This stabilizes the macOS beta app path while the richer Qt bundle continues to be hardened.
2. Cross-Platform Update Terminal¶
The PySide/Qt desktop app now includes an Open Update Terminal action in the Methods tab.
It runs the SDK update command visibly in a real operating-system terminal:
python -m pip install -U "iints-sdk-python35[full,desktop,mdmp]"
Platform behavior:
| Platform | Terminal route |
|---|---|
| macOS | osascript opens Terminal and runs the update command |
| Windows | cmd.exe opens a visible command window |
| Linux | tries x-terminal-emulator, gnome-terminal, konsole, xfce4-terminal, then xterm |
This is intentionally transparent: users can see installer output, pip warnings, failures, and completion messages instead of the app hiding the process.
3. Integrated App Terminal¶
The Methods tab now has:
Developer Settings / Integrated App Terminal
It can run curated maintenance commands from inside the app and stream stdout/stderr line-by-line into a read-only terminal output box.
Current actions include:
Run Update In App TerminalRun Version CheckClear Terminal
This is useful for debugging, demos, and support sessions because the exact system output remains visible in the desktop app.
4. Update Command Handling¶
The desktop app now resolves the Python update command depending on launch mode:
- normal Python launch: uses the current
sys.executable - packaged/frozen app launch: falls back to
python3on macOS/Linux orpyon Windows
That keeps the update flow usable across editable installs, PyPI installs, and packaged beta apps.
5. MDMP Contract Resource Path Fix¶
The standard diabetes MDMP contract path now uses modern resource traversal:
importlib.resources.files("iints") / "data" / "contracts" / STANDARD_DIABETES_CONTRACT
This avoids a mypy incompatibility around chained Traversable.joinpath() calls.
6. Release Documentation¶
The release adds:
walkthrough_terminal.md
It explains:
- what the system terminal update does
- how the integrated app terminal works
- why packaged app replacement still depends on GitHub release assets
- what is and is not self-updated by the beta app
Verification¶
The release was checked with:
python3 -m py_compile src/iints_desktop/qt_app.py src/iints_desktop/cocoa_app.py
python3 -m iints_desktop.cocoa_app --smoke
python3 -m pytest tests/test_desktop_app.py -q
python3 -m mypy src/iints_desktop/qt_app.py src/iints_desktop/cocoa_app.py src/iints/data/certify.py
python3 -m pytest tests/ -q
python3 -m mkdocs build --strict
Results:
Cocoa desktop smoke OK: 5 workflows loaded; default=doctor-safety
28 passed
Success: no issues found in 3 source files
651 passed, 2 skipped
Documentation built successfully
The rebuilt macOS beta app was also launched through macOS open and stayed running instead of closing immediately.
Important Boundaries¶
IINTS-AF remains a research and education SDK. The desktop app does not add treatment functionality, dosing authority, or medical-device behavior.
The update terminal updates the Python SDK package environment. Replacing a packaged .exe, .dmg, or Linux app bundle still depends on the downloadable GitHub release assets and future signing/notarization infrastructure.