Skip to content

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 Terminal
  • Run Version Check
  • Clear 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 python3 on macOS/Linux or py on 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.