Repository navigation
Releases: scshafe/scshafe-qt
Release list
v0.2.0
scshafe-qt 0.2.0 from 2a9d2a9.
| Artifact | sha256 |
|---|---|
scshafe_qt-0.2.0-py3-none-any.whl |
727d4ff4c45e492dadd3af67849db892ea86dc28a381a7d8f37e6171091cee9f |
scshafe_qt-0.2.0.tar.gz |
464b36c25395e537d55aaa5edabcfd0e5ae7b88d1a681e8c50796b5ffad54408 |
Built and tested on Linux and macOS; a fresh build of the tag equals the
verified build byte for byte; the wheel downloaded from this Release passed
the payload check and the install-and-load smoke before it was published.
The same two files are on PyPI: pip install scshafe-qt==0.2.0.
Python 3.12 and 3.13 supported. No change to the components, the QML module
or the Python API: the wheel's code is that of 0.1.2.
requires-python = ">=3.12"(was>=3.14,<3.15), with classifiers for
3.12, 3.13 and 3.14. The code used nothing newer than 3.12: every module
already hadfrom __future__ import annotations, and the stdlib and syntax
in use parse and pass the suite on 3.12.PySide6-Essentials6.11.x wheels
are abi3 for CPython 3.10+ (they declare<3.15, which bounds the usable
range in practice); the dependency range is unchanged (>=6.11.2,<6.12).uv.lockregenerated for>=3.12: the same package versions.- CI: Linux on 3.12, 3.13 and 3.14 on every push and pull request; macOS on
3.12 and 3.14 on dispatch and weekly (UV_PYTHONper matrix entry).
Development andpublish.ymlkeep.python-version(3.14). - A minor bump because the supported range widened: apps pinned
scshafe-qt>=0.1.2,<0.2stay on 0.1.2 until they widen the pin.
v0.1.2
scshafe-qt 0.1.2 from df45e76.
| Artifact | sha256 |
|---|---|
scshafe_qt-0.1.2-py3-none-any.whl |
61d71f26766f759fcb2165fd817cbd23d7131156e76000465e656737ec302d78 |
scshafe_qt-0.1.2.tar.gz |
dbd994259908a40e93d596e002be448b2be9a9ffae5d78b37a2e2aaf651dea53 |
Built and tested on Linux and macOS; a fresh build of the tag equals the
verified build byte for byte; the wheel downloaded from this Release passed
the payload check and the install-and-load smoke before it was published.
The same two files are on PyPI: pip install scshafe-qt==0.1.2.
Published to PyPI; docs. No library change (the wheel's code and QML module
are those of 0.1.1).
- On PyPI:
pip install scshafe-qt/uv add scshafe-qt.publish.yml
gains apypijob: after the GitHub Release is published it uploads the
build job's wheel and sdist (a run artifact; the Release carries the same
files) by trusted publishing (OIDC, environmentpypi,v*tags only,
PEP 740 attestations), then checks that PyPI serves the verified digests. - Package metadata for PyPI: dropped the
Private :: Do Not Upload
classifier (PyPI refuses it), the misleadingFramework :: Pytestand the
License ::classifier (the license is the PEP 639 expressionMIT); added
keywords, status, audience, OS and topic classifiers and project URLs
(homepage, docs, issues, releases). - README: install from PyPI, or from a Release URL as a fallback (the
repository is public: Release downloads need no token); the CI token-check
note no longer calls@scshafe/uiprivate.
v0.1.1
scshafe-qt 0.1.1 from cd1bacf.
| Artifact | sha256 |
|---|---|
scshafe_qt-0.1.1-py3-none-any.whl |
56510070900c26d6cadabf1077c26220b45d2ccd2dc42521bd0a2d281692385b |
scshafe_qt-0.1.1.tar.gz |
5a93aba32f1ec265e2b1ef526e944efddddfd5c11680fb1557e5bf0be3935cef |
Built and tested on Linux and macOS; a fresh build of the tag equals the
verified build byte for byte; the wheel downloaded from this Release passed
the payload check and the install-and-load smoke before it was published.
Security release.
- Caller text is plain text. Every
TextinScshafe.Uisets
textFormat: Text.PlainText(25 elements, 14 components). With Qt's default
AutoText, a caller string that looked like HTML rendered as rich text and
fetched remote images: a mail subject with<img src=…>made Qt request it,
a tracking beacon (found by mailroom-desktop's review). No component needs
rich text, so there is no opt-in.tests/test_plain_text.pyproves it with
a counting HTTP server (0.1.0: fetched; 0.1.1: zero requests) and fails any
newTextwithout the line. - Token snapshot from
@scshafe/ui0.4.1: the registry is unchanged (same
sha256); only the recorded source version moves.
v0.1.0
scshafe-qt 0.1.0 from 200c69c.
| Artifact | sha256 |
|---|---|
scshafe_qt-0.1.0-py3-none-any.whl |
3647f3b5d9f6ba0353ace4d1210eeca3a2f56b6440e43ceabe22d139818ff9aa |
scshafe_qt-0.1.0.tar.gz |
393c8fa435a74dd27793f2814447e8d547ae6afd0dfb7747112da4cc38df56ac |
Built and tested on Linux and macOS; a fresh build of the tag equals the
verified build byte for byte; the wheel downloaded from this Release passed
the payload check and the install-and-load smoke before it was published.
First release.
- Releases:
.github/workflows/publish.yml(the library standard's Python
variant): an annotatedv<x.y.z>tag onmainmatching the version; tests,
build and install-and-load smoke on Linux and macOS; a reproducible rebuild
must match; a draft GitHub Release with the wheel, sdist andSHA256SUMS,
published only after the assets downloaded back pass the payload check and
smoke.tools/check_dist.py --dist DIR. CI runs macOS by hand and weekly
(tags go throughpublish.yml). - Tests ignore one headless-only Qt warning: on macOS the offscreen platform's
theme font "Sans Serif" doesn't exist; any other warning still fails. - Qt 6.11: depend on
PySide6-Essentials>=6.11.2,<6.12(was>=6.8.3,<6.9);
open-source Qt patches track the current minor, so the library follows it
(6.12 when PySide6 6.12 ships). Python 3.14 (.python-version,
requires-python >=3.14,<3.15); the 6.11 wheels are abi3 (CPython 3.10+). - Q1 components (QtQuick.Templates, themed from
SuiTheme, light and dark,
keyboard-focusable with a keyboard-only focus ring, accessible roles and
names, animations onSuiTheme.duration):SuiAppShell(resizable,
keyboard-operable splitters; collapsible inspector and sidebar),
SuiSidebarList/SuiSidebarItem(counts, ok/held/failing dots, sections),
SuiList/SuiListRow(single selection;j/k/arrow hooks as signals),
SuiChip,SuiBadge,SuiIconButton(requiredlabel),SuiTextField,
SuiSearchField(/focus hook, Escape clears),SuiEmptyState,SuiBanner,
SuiToast/SuiToastHost,SuiDialog/SuiSheet(focus trap, Escape,
focus return),SuiTrail,SuiShortcutOverlay(?),SuiIcon(built-in
vector icons),SuiKbd; internalSuiFocusRing,SuiSplitHandle. SuiThemeNATIVE-ONLY tokens (generator section, not in the registry):
eight bucket tonesbucket1…bucket8(contrast-checked: text >= 4.5:1 on
the chip over every surface and overlay, base >= 3:1, in both themes), tone
helpers, control metrics and layout defaults,monoFamilyper platform.examples/gallery.py: every component in one window;--screenshot DIR.- Tests: per-component render (both themes), accessible role and name,
keyboard focus ring (pixel), pointer focus without ring, focus order, list
and sidebar keyboard navigation, shell resizing, dialog focus trap and
return, toasts, no colour literals, every animation onSuiTheme.duration
(static and at runtime), token parity and contrast, gallery screenshots in
both themes; Qt warnings fail tests.tools/check_dist.pychecks every
module file is in the wheel and listed inqmldir, and the smoke builds
every public component from the installed wheel. - Q0 scaffold: package
scshafe_qt(hatchling, uv, Python 3.13) depending on
PySide6-Essentials>=6.8.3,<6.9(Qt 6.8 LTS), with the QML module
Scshafe.Uiandscshafe_qt.register(engine)/qml_import_path(). SuiThemesingleton generated from the@scshafe/ui0.3.1 token registry
(62 tokens, light and dark):modesystem/light/dark,reducedMotion, plus
native focus-ring and type-scale values;tools/gen_tokens.py --check.SuiButton: themed, keyboard-focusable, keyboard-only focus ring,
accessible role and name.- Tests (pytest-qt and QtQuickTest, offscreen), CI on Linux (every push) and
macOS (tags, dispatch, weekly), distribution check.