fix(gui): render changelog and release notes as Markdown
release / release (push) Successful in 14s

The changelog dialog and update prompt showed raw Markdown (literal #, **)
instead of rendered styling, making notes hard to read. Render the in-app
changelog with QTextEdit.setMarkdown() and the update prompt's notes as rich
text (Markdown -> HTML via QTextDocument).

Closes #1

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-21 19:01:26 +02:00
parent 89ebb6c61e
commit 9ae2e22b44
4 changed files with 15 additions and 6 deletions
+6
View File
@@ -5,6 +5,12 @@ All notable changes to RigDoctor are recorded here. Format follows
(`MAJOR.MINOR.PATCH`, pre-1.0). `__version__` and `pyproject.toml` must match the git (`MAJOR.MINOR.PATCH`, pre-1.0). `__version__` and `pyproject.toml` must match the git
release tag (so the auto-updater, D18, can compare versions). release tag (so the auto-updater, D18, can compare versions).
## [0.3.1] - 2026-05-21
### Fixed
- Changelog/release notes now **render Markdown** instead of showing raw `#`/`**` markup —
the in-app changelog uses `QTextEdit.setMarkdown()` and the update prompt renders notes as
rich text (closes #1).
## [0.3.0] - 2026-05-21 ## [0.3.0] - 2026-05-21
### Added ### Added
- **System inventory (M5)**: CPU, GPU (model/driver/VBIOS/VRAM/PCIe), motherboard/BIOS, RAM - **System inventory (M5)**: CPU, GPU (model/driver/VBIOS/VRAM/PCIe), motherboard/BIOS, RAM
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "rigdoctor" name = "rigdoctor"
version = "0.3.0" version = "0.3.1"
description = "Modular hardware monitoring & crash diagnostics for Linux gamers." description = "Modular hardware monitoring & crash diagnostics for Linux gamers."
readme = "README.md" readme = "README.md"
requires-python = ">=3.11" requires-python = ">=3.11"
+1 -1
View File
@@ -1,3 +1,3 @@
"""RigDoctor — modular hardware monitoring & crash diagnostics for Linux gamers.""" """RigDoctor — modular hardware monitoring & crash diagnostics for Linux gamers."""
__version__ = "0.3.0" __version__ = "0.3.1"
+7 -4
View File
@@ -7,6 +7,7 @@ import sys
import threading import threading
from PySide6.QtCore import Qt, QProcess, QTimer, Signal from PySide6.QtCore import Qt, QProcess, QTimer, Signal
from PySide6.QtGui import QTextDocument
from PySide6.QtWidgets import ( from PySide6.QtWidgets import (
QApplication, QApplication,
QButtonGroup, QButtonGroup,
@@ -171,7 +172,9 @@ class MainWindow(QMainWindow):
box = QMessageBox(self) box = QMessageBox(self)
box.setWindowTitle(f"Update to {self._latest_tag}") box.setWindowTitle(f"Update to {self._latest_tag}")
box.setText(f"Update RigDoctor to {self._latest_tag}?") box.setText(f"Update RigDoctor to {self._latest_tag}?")
box.setInformativeText(self._latest_notes or "(no release notes)") notes_doc = QTextDocument()
notes_doc.setMarkdown(self._latest_notes or "_(no release notes)_")
box.setInformativeText(notes_doc.toHtml()) # render Markdown as rich text (#1)
box.setStandardButtons(QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel) box.setStandardButtons(QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel)
box.button(QMessageBox.StandardButton.Ok).setText("Update") box.button(QMessageBox.StandardButton.Ok).setText("Update")
if box.exec() != QMessageBox.StandardButton.Ok: if box.exec() != QMessageBox.StandardButton.Ok:
@@ -232,9 +235,9 @@ class MainWindow(QMainWindow):
return return
blocks = [] blocks = []
for tag, date, notes in releases: for tag, date, notes in releases:
head = tag + (f" ({date})" if date else "") title = f"## {tag}" + (f" {date}" if date else "")
blocks.append(f"{head}\n{'' * len(head)}\n{notes or '(no notes)'}") blocks.append(f"{title}\n\n{notes or '_(no notes)_'}")
view.setPlainText("\n\n".join(blocks)) view.setMarkdown("\n\n".join(blocks)) # render Markdown instead of raw text (#1)
def _check_updates(self) -> None: def _check_updates(self) -> None:
self._update_checked.emit(updates.update_state()) self._update_checked.emit(updates.update_state())