Files
cimtechniques-service-suite/cim_suite/shell/whats_new.py
Andy 63169a7644 feat: add versioning and changelog system
Conventional-Commit-driven version bumps (scripts/bump.py), a commit-msg validation hook, and a /release-notes workflow that produces a human-reviewed CHANGELOG.md. Adds an in-app version badge + 'What's new' dialog on the launcher. The version is single-sourced from pyproject.toml (cim_suite.__version__), and the deterministic bump backbone lives in scripts/release/ with tests in tests/release/. Marks the 1.0.0 baseline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 11:31:22 -04:00

45 lines
1.3 KiB
Python

"""The "What's new" dialog: renders the bundled CHANGELOG.md as release notes.
Plain-language notes for a non-technical audience live in CHANGELOG.md; this just
displays them. The markdown is located/read by :mod:`cim_suite` so the same file
works from a source checkout and a frozen build.
"""
from __future__ import annotations
from PySide6.QtWidgets import (
QDialog,
QHBoxLayout,
QPushButton,
QTextBrowser,
QVBoxLayout,
QWidget,
)
import cim_suite
from cim_suite.core.ui.theme import Space
class WhatsNewDialog(QDialog):
def __init__(self, parent: QWidget | None = None) -> None:
super().__init__(parent)
self.setWindowTitle("What's new")
self.resize(580, 540)
layout = QVBoxLayout(self)
layout.setContentsMargins(Space.LG, Space.LG, Space.LG, Space.LG)
layout.setSpacing(Space.MD)
self.notes = QTextBrowser()
self.notes.setOpenExternalLinks(True)
self.notes.setMarkdown(cim_suite.changelog_markdown())
layout.addWidget(self.notes)
buttons = QHBoxLayout()
buttons.addStretch(1)
close = QPushButton("Close")
close.setProperty("variant", "primary")
close.clicked.connect(self.accept)
buttons.addWidget(close)
layout.addLayout(buttons)