Skip to content

v0.7.0

Latest

Choose a tag to compare

@jeandet jeandet released this 10 May 22:09

Highlights

Dependencies

  • Requires tscat>=0.5.1,<0.6. tscat 0.5.0 had two ORM bugs (membership comparison by Python id(), stale catalogue.events after permanent delete) that broke event remove/restore flows; both are fixed in tscat 0.5.1.

Reliability fixes

  • Parented AppState and its QUndoStack to TSCatGUI so Qt destroys them in the correct order. Eliminates the trailing RuntimeError: Internal C++ object (PySide6.QtGui.QUndoStack) already deleted and Signal source has been deleted exceptions emitted on widget teardown.
  • Decorated _external_signal_emission_changed, __state_changed, and __undo_redo_index_changed with @QtCore.Slot(...) so PySide6 registers them as proper Qt slots and auto-disconnects when the widget is destroyed. Embedders that open and close the editor repeatedly (e.g. SciQLop) no longer accumulate dangling connections to the global tscat_model.action_done signal.
  • passive_select for _Catalogue now mirrors uuids into AppState.selected_catalogues, fixing a fuzzer-discovered regression where, after undoing a catalogue creation, the next NewEvent would target a deleted catalogue.

Cleanups

  • Replaced the deprecated QDateTimeEdit.setTimeSpec(Qt.TimeSpec.UTC) call with setTimeZone(QTimeZone(QTimeZone.Initialization.UTC)) (Qt 6.7+).
  • Bumped vulnerable transitive deps in uv.lock: mako → 1.3.12, pytest → 9.0.3, pygments → 2.20.0, requests → 2.33.1.

Testing

  • New Hypothesis-based stateful UI fuzzer that drives the full editor (catalogues, events, attributes, undo/redo) and asserts model invariants between every step. Already surfaced and prevented several regressions during this release cycle.

Build / CI

  • Release workflow switched from uv pip install twine && twine upload (which required a venv that wasn't created) to uv publish, matching the tscat release setup.

Full Changelog: v0.6.0...v0.7.0