Patinae v0.4.4
Patinae 0.4.4 is a foundations release. The visible pieces are practical: richer plugin panels, a more reliable macOS viewport on external displays, faster renderer memory-budget planning, and the Slint/WGPU dependency migration needed to keep the app current.
The larger piece is the first molecular-mechanics engine crate. This release adds the internal machinery for force-field parsing, parametrization, MM/GBSA-style energy evaluation, minimization, hydrogen and side-chain building, caps, mutations, rotamers, protonation variants, and scoring. It is not yet presented as a complete end-user molecular-design workflow, but the core is now in-tree, isolated from plugin and UI layers, and ready to become shared infrastructure for future design tools.
Highlights
Molecular-mechanics core lands in-tree
Patinae now has a dedicated patinae-mm crate for molecular-mechanics work.
The new crate includes parsers and embedded data for GROMACS-style force fields, including Amber19SB, CHARMM27, and OPLS-AA families. It can build parameterized systems from loaded molecular structures, evaluate molecular-mechanics and implicit-solvent energy terms, and expose the building blocks needed for later design workflows.
The crate is deliberately independent of the command layer, plugin host, and GUI. That keeps force-field parsing, parametrization, scoring, minimization, side-chain work, and mutation support testable as plain Rust library code.
Structure editing helpers for design workflows
patinae-mol now has helpers for appending atoms and regrouping residues.
That is small API surface, but important plumbing: molecular-design operations need to add hydrogens, caps, rebuilt side chains, or mutation products without treating molecule objects as immutable loader output.
Plugin panels become real layouts
Plugin panels can now render richer declarative layouts instead of only simple control lists.
The plugin UI contract now supports more expressive panel content, including grouped controls, rows, headings, text, select controls, buttons, sliders, numeric fields, collapsible sections, and text-area style surfaces. The desktop Slint renderer for plugin panels was expanded accordingly.
The raytracer panel is the first visible consumer: its controls are organized into a denser, more structured panel with resolution presets, output actions, quality controls, lighting, and edge settings.
macOS external-display redraw reliability
The desktop app now uses a macOS CVDisplayLink render heartbeat.
This fixes a class of redraw stalls seen with external displays, where the viewport could stop receiving a steady render cadence even though the app was still alive. The display-link path gives the renderer a native frame heartbeat on macOS and keeps display recovery logic simpler.
Renderer budget estimation gets cheaper
The renderer's representation memory-budget estimators now use closed-form upper bounds for expensive cartoon and surface paths.
That keeps the memory policy work from becoming its own performance problem: Patinae can still make conservative allocation decisions under constrained profiles, but the estimator no longer has to walk the costly path just to decide whether the costly path fits.
Slint 1.17.1 and WGPU 29
Patinae has moved to Slint 1.17.1 and WGPU 29.
The migration updates renderer, web, benchmark, raytracer, and desktop integration code for the newer GPU stack while preserving the memory-profile and recovery behavior added in 0.4.3.
New features
- Molecular-mechanics engine crate: new
patinae-mmcrate for force-field loading, parametrization, energy evaluation, gradients, minimization, hydrogens, caps, side chains, mutations, rotamers, protonation variants, and scoring. - Embedded force-field data: Amber19SB, CHARMM27, and OPLS-AA style GROMACS force-field assets are now included for the MM core.
- Structure-building primitives: support for hydrogen planning, ACE/NME caps, ideal side chains, side-chain planning, rotamer optimization, and mutation construction.
- MM scoring APIs: binding, stability, and total-energy scoring entry points are exposed through the new engine crate.
- Atom append and residue regroup helpers: molecule data structures now have editing helpers needed by design and rebuilding workflows.
- Rich plugin panel layouts: plugin UI declarations can describe structured panels with grouped controls instead of flat, minimal toolbars.
- Expanded raytracer panel: the raytracer plugin now uses the richer panel renderer for resolution, quality, lighting, edge, and output controls.
- macOS display-link heartbeat: the desktop app now has a native render heartbeat for more reliable viewport redraws on external-display setups.
Bug fixes and improvements
- External-display rendering: macOS viewport redraws are more reliable when the app is running on or across external displays.
- Faster memory-budget planning: cartoon and surface budget estimators now use cheap closed-form upper bounds instead of expensive estimation paths.
- WGPU 29 compatibility: renderer pipelines, compute passes, picking, postprocess, web GPU setup, benchmarks, and raytracer code were updated for the newer WGPU APIs.
- Slint 1.17.1 compatibility: desktop UI and viewport integration were migrated to the current Slint stack.
- Renderer recovery cleanup: obsolete memory-recovery wiring was removed as part of the WGPU migration and display-heartbeat work.
- Plugin loader compatibility: plugin host loading was adjusted for the dependency update.
- Stable formatting and lint cleanup: the new MM code and render estimator changes were brought in line with stable rustfmt and clippy.
Downloads
Bundles (recommended)
Self-contained packages with the app, plugins, and runtime pieces. Unzip or mount and run.
| Platform | Architecture | Download |
|---|---|---|
| macOS | Apple Silicon | Patinae.dmg |
| Windows | x86_64 | patinae-bundle-windows-x86_64.zip |
| Windows | ARM64 | patinae-bundle-windows-arm64.zip |
Standalone executables
Bare binaries for advanced users. Plugins can be installed separately.
| Platform | Architecture | Executable | Plugins |
|---|---|---|---|
| macOS | Apple Silicon | patinae-macos-arm64.tar.gz | patinae-plugins-macos-arm64.tar.gz |
| Windows | x86_64 | patinae-windows-x86_64.zip | patinae-plugins-windows-x86_64.zip |
| Windows | ARM64 | patinae-windows-arm64.zip | patinae-plugins-windows-arm64.zip |
| Linux | x86_64 | patinae-linux-x86_64.tar.gz | patinae-plugins-linux-x86_64.tar.gz |
| Linux | ARM64 | patinae-linux-arm64.tar.gz | patinae-plugins-linux-arm64.tar.gz |
Python and web
| Package | Download |
|---|---|
| Python wheels | pip install patinae or see release assets below |
| Web viewer (WASM + JS) | patinae-web.tar.gz |
Full Changelog: v0.4.3...v0.4.4