Skip to content

Auto-bump on main + Windows-only Nuitka + PySide6 desktop GUI#2

Merged
JE-Chen merged 1 commit into
mainfrom
dev
May 16, 2026
Merged

Auto-bump on main + Windows-only Nuitka + PySide6 desktop GUI#2
JE-Chen merged 1 commit into
mainfrom
dev

Conversation

@JE-Chen
Copy link
Copy Markdown
Member

@JE-Chen JE-Chen commented May 16, 2026

Summary

Three independent changes in this PR:

1. Auto-bump patch version on every CI-success push to main

  • Before: release pipeline only ran when a PR also edited pyproject.toml's version. Most merges shipped nothing.
  • After: every CI-success push to main auto-bumps the patch component (0.1.00.1.1 → …) and publishes to PyPI + GitHub Releases.
  • Loop prevention: GITHUB_TOKEN-pushes don't trigger workflows; the bump-version job also skips when the previous commit was already chore: bump version to.
  • Escape hatch: include [skip release] anywhere in a commit message and bump + publish are gated off.

2. Limit Nuitka release builds to Windows

  • Linux / macOS users install from PyPI; shipping native binaries there inflated the release page without serving a real use case.
  • The matrix is gone; release.yml runs windows-latest only and attaches autopapertoppt-windows-x86_64.exe + .sha256 to the GitHub Release.

3. PySide6 desktop GUI behind the [gui] extra

  • New tabs: Search (functional), Settings (functional — API keys persisted via QSettings + mirrored to os.environ), Enrich (placeholder for next iteration), Deck (placeholder for next iteration).
  • Launch via autopapertoppt-gui (PyPI console script), autopapertoppt gui (CLI subcommand), or the Windows release .exe which now bundles PySide6.
  • UI labels in English + Traditional Chinese; slide-deck output language stays 14-language (independent table).
  • 24 new pytest-qt tests cover models, page wiring, settings round-trip, CLI dispatch, and i18n coverage.
  • Latent test-isolation fix: shutdown_clients() now tolerates RuntimeError: Event loop is closed when an httpx client outlives its asyncio loop (the test suite spins a new loop per asyncio.run).

Repo settings needed before merge

  • Settings → Actions → General → Workflow permissions → Read and write permissions (bump commit is pushed via GITHUB_TOKEN).
  • PYPI_API_TOKEN secret.

Test plan

  • CI matrix (Ubuntu + Windows × Python 3.12 / 3.13 / 3.14) passes — 416 tests including 24 GUI tests
  • On merge: release workflow auto-bumps 0.1.00.1.1, publishes to PyPI, creates draft release
  • Windows Nuitka build succeeds, attaches autopapertoppt-windows-x86_64.exe + .sha256, then publish-release unmarks the draft
  • autopapertoppt.exe gui launches the desktop window
  • A subsequent docs-only commit with [skip release] triggers CI but NOT a bump/publish

Previously the release pipeline only fired when a developer manually
bumped `pyproject.toml`'s `version` line in a PR. Most main pushes
therefore shipped nothing, which was confusing.

New behaviour: every push to `main` that passes CI auto-bumps the
patch component (0.1.0 -> 0.1.1 -> 0.1.2 ...). The bump-version job
reads the current X.Y.Z from pyproject.toml, increments Z, commits
the change back to main as `chore: bump version to X.Y.Z` using the
workflow GITHUB_TOKEN, then hands the new SHA off to publish-pypi /
build-nuitka / etc.

Loop prevention: GitHub's rule that GITHUB_TOKEN-driven pushes can't
trigger new workflow runs means the bump commit won't re-fire CI. As
belt-and-suspenders the gate also skips when the previous commit
message already starts with `chore: bump version to`.

Escape hatch: a commit message containing `[skip release]` opts out
of bumping and publishing for that push - useful for docs-only / typo
commits that shouldn't burn a version number.

README's 'Continuous integration & releases' section is rewritten to
describe the new flow, including the requirement to grant Actions
read+write permissions so it can push the bump commit.
@JE-Chen JE-Chen merged commit ddaa74d into main May 16, 2026
12 checks passed
@JE-Chen JE-Chen changed the title Auto-bump patch version on every CI-success push to main Auto-bump on main + Windows-only Nuitka + PySide6 desktop GUI May 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant