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>
45 lines
1.3 KiB
Python
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)
|