Repository navigation
Highlights
Dependencies
- Requires
tscat>=0.5.1,<0.6. tscat 0.5.0 had two ORM bugs (membership comparison by Pythonid(), stalecatalogue.eventsafter permanent delete) that broke event remove/restore flows; both are fixed in tscat 0.5.1.
Reliability fixes
- Parented
AppStateand itsQUndoStacktoTSCatGUIso Qt destroys them in the correct order. Eliminates the trailingRuntimeError: Internal C++ object (PySide6.QtGui.QUndoStack) already deletedandSignal source has been deletedexceptions emitted on widget teardown. - Decorated
_external_signal_emission_changed,__state_changed, and__undo_redo_index_changedwith@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 globaltscat_model.action_donesignal. passive_selectfor_Cataloguenow mirrors uuids intoAppState.selected_catalogues, fixing a fuzzer-discovered regression where, after undoing a catalogue creation, the nextNewEventwould target a deleted catalogue.
Cleanups
- Replaced the deprecated
QDateTimeEdit.setTimeSpec(Qt.TimeSpec.UTC)call withsetTimeZone(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) touv publish, matching the tscat release setup.
Full Changelog: v0.6.0...v0.7.0