Release Preparation
Prepare a new wigglystuff release. Follow these steps:
Instructions
Determine the new version: Read
pyproject.tomlfor the current version and the latest entry inCHANGELOG.md. If the version has already been bumped, use that. Otherwise, bump the patch version (e.g., 0.2.24 -> 0.2.25).Bump version in
pyproject.toml(if not already done).Add a changelog entry at the top of
CHANGELOG.mdfollowing the existing format:- Use
## [x.y.z] - YYYY-MM-DDheader with today's date - Add
### Added,### Changed,### Fixed, or### Removedsubsections as appropriate - Look at the git diff against
mainto determine what changed
- Use
Update all documentation locations for any new widgets:
docs/reference/<widget-name>.md— create a reference doc following the pattern in existing reference pages (use::: wigglystuff.module.ClassNamemkdocstrings directive + a synced traitlets table)zensical.toml— add the widget to thenavReference sectiondocs/index.md— add to the appropriate gallery section (main gallery or 3rd party gallery)readme.md— add to the appropriate gallery table (main gallery or 3rd party table)docs/llms.txt— add a one-line entry in the appropriate sectionCLAUDE.md— add a row to the quick reference tablewigglystuff/__init__.py— verify the widget is imported and listed in__all__
For 3rd party widgets (those requiring non-core dependencies like neo4j, torch, wandb):
- Place them in the "3rd party widgets" section of the galleries (not the main gallery)
- Use a molab link for the demo instead of a local example page
- Use
MOLAB_LINK_HEREas a placeholder if the molab link is not yet available and tell the user they need to fill it in - Screenshot path should be
docs/assets/gallery/<widgetname>.webp— tell the user if one is missing (runuv run python scripts/png_to_webp.pyif a PNG was added)
Check dependencies: Read
pyproject.tomland verify that no 3rd party widget dependency (neo4j, torch, wandb, etc.) has been added to core[project] dependencies. These must only appear under[project.optional-dependencies]as extras. Core dependencies should only include packages needed by all widgets (anywidget, numpy, pillow, python-dotenv). If a 3rd party dep has leaked into core dependencies, remove it.Bump demo
wigglystuff==X.Y.Zpins: Everydemos/*.pynotebook has a PEP 723# /// scriptheader pinning a publishedwigglystuffversion. For any demo that was added or modified in this release (anything ingit diff origin/main -- demos/since the previous tag), update its pin to the new version. Otherwiseuv run demos/<name>.pywill fetch the old release and the new feature will be missing. Grepdemos/ -l "wigglystuff=="to find pins; you do not need to bump untouched demos.Verify nothing is missed: Check the git diff to make sure all new/changed widgets have corresponding updates in all locations listed above.
Commit, push, and open a PR — but do NOT merge. Run the mechanics without asking for confirmation: commit the release changes, push the branch, and open a PR against
main(gh pr create --base main). Then STOP — leave the merge to the user; never rungh pr merge. Only pause earlier if there's a genuine blocker (failing tests, merge conflicts, ambiguous diff) — not for the commit/PR steps themselves.Report what was done and what still needs manual action (e.g., adding screenshots, replacing molab link placeholders).