Skip to content

TUFF v4.1.1

Choose a tag to compare

@rexmhall09 rexmhall09 released this 05 Sep 03:30
· 264 commits to main since this release

I audited the settings and SwiftUI binding paths after the feedback on Reddit. There was a real observation bug when editing a model that wasn't selected, along with some unnecessary binding glue.

  • Settings for every model now update observable state immediately, including the memory estimates. Slider and text edits share the same coalesced persistence path.
  • General settings and updater preferences use direct bindings. Custom bindings remain where they validate a model switch, preserve manual memory settings, or convert editor state.
  • Pending settings survive changing the model directory or deleting the selected chat. Failed writes for non-selected profiles retain their retry state.
  • GPU argmax helpers now ignore non-finite logits consistently and return token 0 when none are valid, instead of an invalid token ID.
  • Removed a server concurrency warning by installing the idle handler on its channel event loop.

The repository includes the audit findings and the remaining coverage limits in docs/SETTINGS_AND_BINDING_AUDIT.md. Speculative decoding is still opt-in; this release makes no new performance claim.

Validation: 1,503 tests in 241 suites passed with the serial test runner. The release package is signature-checked and tested after ZIP extraction.

Requires Apple Silicon and macOS 15 or newer. Download the ZIP below and move TUFF.app to Applications. The app is ad-hoc signed, not notarized. The checksum and signed Sparkle update feed are attached.