chore: release v0.3.2#40
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
[0.3.2] — 2026-05-07
Added
nasde-toolkitnow ships to PyPI;install with
uv tool install nasde-toolkit(orpipx/pip). Tag pushestrigger an automated
publish.ymlworkflow that builds, runs a fresh-installsmoke test on TestPyPI, gates the production publish on the smoke test
passing, then publishes to PyPI and creates a GitHub Release. (feat: PyPI publishing + in-CLI update notifier #36, chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)
nasdechecks PyPI for newer releases onstartup and prints a one-line notice on stderr when one is available
(severity-tinted: patch / minor / major). Notify-only — never auto-applies,
never prompts. Skips on no-TTY,
NASDE_NO_UPDATE_CHECK=1,CI=true, anddev/pre-release builds. Cached for 24h via
platformdirs. (feat: PyPI publishing + in-CLI update notifier #36)build to TestPyPI and runs the smoke test against it — catches transitive
dependency breakage (e.g. an upstream wheel going bad) in the window
between releases. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)
Changed
harborto>=0.6,<0.7(latest 0.6.4). Adapter additions,Modal/Windows support, gemini-cli v0.40+ session improvements, plus a
field rename in
JobStats(n_trials→n_completed_trials) that therunner now handles. No user-facing CLI or config changes. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)
opikto 2.0.22 within the existing>=2,<3range. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)pyproject.tomlwith project URLs, classifiers, and keywordsfor a proper PyPI project page. (feat: PyPI publishing + in-CLI update notifier #36)
Fixed
+gHASH) fromhatch-vcsoutput so devbuilds are PyPI-acceptable as pre-releases (
0.3.2.devNinstead of0.3.2.devN+gabcdef). PEP 440 forbids local versions on the public index. (fix(build): drop local-version segment from hatch-vcs output #37)supabase>=2.29.0,<3to skip broken upstream wheels.supabase 2.28.3and
3.0.0a1ship wheels missing the_async/and_sync/subpackages,which made
nasde --versioncrash at import in fresh installs. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)_print_job_summaryin the runner to harbor 0.6'sJobStatsfieldrename; previously crashed with
AttributeErrorafter a successful trial. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)Docs
docs/RELEASING.mdanddocs/ci-setup.mdfor the automatedpublish flow. Includes a recovery table for failure modes encountered
during pipeline verification. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)
Internal
publish.ymlworkflow with PyPI Trusted Publishing (OIDC) — no long-livedtokens or secrets. Reuses
quality-gate.ymlviaworkflow_call. (feat: PyPI publishing + in-CLI update notifier #36)pyproject.toml: explicitpackaging>=25,<26dependency (used by theupdate notifier; was previously transitive). (feat: PyPI publishing + in-CLI update notifier #36)
skip-existing: trueso re-runs ofworkflow_dispatchwith the same
devNfilename are no-ops instead of400 File already exists. (chore(release): operationalize PyPI publishing — bump harbor, smoke gates, docs #38)Versioning rationale (patch, not minor). The user-facing CLI,
nasde.tomlschema,task.tomlschema, and benchmark project layout are all unchanged. PyPI publishing is a delivery-mechanism change. The update notifier is opt-out, stderr-only, suppressed in CI/non-TTY, and adds a single line on startup. Per RELEASING.md: "Transitive or internal dep bump with no visible behavior change → patch. The user'snasde.toml, benchmark layout, and CLI output are unchanged." Bumping to v0.3.2 signals "safe to upgrade" rather than v0.4.0's "minor bump, check what changed."