Repository navigation
Conversation
PySide2/Qt5 is end-of-life and has no native Apple Silicon build, so move to PySide6/Qt6. This also bumps the interpreter from Python 3.10 (end-of-life October 2026) to 3.13. The port is mechanical: rename the imports, drop the deprecated .exec_() alias (PySide6 only warns today, but it is slated for removal in PySide7), regenerate the .ui- and .qrc-derived modules with pyside6-uic/pyside6-rcc, and require PyInstaller >= 6.4 for its macOS arm64 and QtNetwork/OpenSSL fixes. No .ui/.qrc source changes were needed -- Qt6 keeps both schemas. QSettings was always written with IniFormat/UserScope, which Qt6 reads unchanged, so existing users keep their credentials and avoid list. PySide6 ships a single universal2 macOS wheel, so CI now builds native Apple Silicon alongside the existing Intel build: macos-15 produces an arm64 app and macos-15-intel keeps producing the x86_64 app, each thinned with PyInstaller's --target-arch and uploaded as a distinctly named artifact. Windows is unchanged. While the workflow is being touched, its actions are also re-pinned to commit SHAs (with ``# vX.Y.Z`` comments) rather than floating tags, and checkout drops persisted credentials it never uses. No other CI behavior changes.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
mgoodness
marked this pull request as ready for review
October 7, 2026 16:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Swap the GUI toolkit and build both macOS slices.
PySide2/Qt5 is end-of-life and has no native Apple Silicon build, so the current macOS binary is x86_64-only (Rosetta on Apple Silicon). PySide6 ships a single universal2 wheel, so both arches build from the same dependency set — only the PyInstaller target differs.
QSettingsstaysIniFormat/UserScope, which Qt6 reads unchanged, so existing users keep their credentials and avoid list. The API port is mechanical: import rename,.exec_()→.exec(), and regenerated.ui/.qrcmodules.Evidence
macos-15-intelonly (x86_64; Rosetta on Apple Silicon).After: run 37653925240 — all three legs green, uploading
shortcircuit-arm64.app.tar.gz,shortcircuit-x86_64.app.tar.gz, andshortcircuit.exe.test_pyside6_migration.py(generated modules build under PySide6; noPySide2/exec_(); Qt5-writtenQSettingsread back) andtest_ci_macos_builds.py(both arches wired up; Windows-only lock entries retained).Trade-offs
Pipfile.lock,requirements.txt, and the generatedgui_*.py/resources_rc.pyare large diffs — inherent to a toolkit bump.importlib-resourcesis dropped as unused; no replacement.Merge Danger
Door: two-way — reverting restores Qt5; the settings format is unchanged, so nothing must be migrated back.
Blast Radius: packaging