chore(release): 0.3.1 (#67) - #68
Merged
Merged
Conversation
`Notification` accepting body content is a fix a real consumer needs now, not at the next feature release. RankedJobs uses the body form at all 17 of its `<c-cf.notification>` call sites, so every notification in that application has been rendering an empty box since April. Patch, not minor: no new components and no new required props. The JinjaX signature only loosens and the cotton wrapper only gains a default, so every existing `message=` call site renders byte-identically to 0.3.0. No migration. Both version declarations move together — the agreement test added in #63 fails the build otherwise. Verified before tagging: 2386 passed / 20 skipped (unit + integration), 236 passed / 33 skipped (E2E chromium, both js modes), prek clean with both djLint trees, and the release workflow's own wheel guard run locally against `uv build --wheel` — 237 shipped templates and assets, all present. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NhqNRBg83czKfr8L6FF5xf
…sumer The 0.3.1 preamble named the one repo currently declaring cf-ui and used its call-site count as the reason to ship. Wrong register for a published changelog: it is meaningless to every other reader, it implies this package's release cadence is set by one application rather than by its own defects, and it pulls a second repo into a permanent public artifact for no benefit. The bug justifies the release on its own terms, and the stronger argument was already sitting there unused — it fails *silently* in django-cotton, so a caller cannot detect it from their own code or logs, and it predates 0.1.1. That is what makes it worth a release of its own, not how many call sites one consumer has. The impact analysis keeps its home in #65, where triage belongs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NhqNRBg83czKfr8L6FF5xf
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.
Closes #67.
Patch release for #65, on its own because of how that bug fails rather than how much code it touches.
Notificationdiscarded body content in every theme and both engines, and in django-cotton it did so silently — no error, no warning, and a call site that reads correctly. Anyone passing children to it has been getting a correctly styled, correctly coloured, empty box, with nothing in their own code or logs to say so. It predates 0.1.1, so every published release carries it.A defect that cannot be noticed from the caller's side does not wait for the next feature.
Why patch, not minor
No new components, no new required props, no behavioural change to any existing call form. The JinjaX signature only loosens (
messagerequired → optional) and the cotton wrapper only gains a default. Everymessage=call site renders byte-identically to 0.3.0. The one markup change — Foundation's<p>now wrappingmessagealone rather than the whole content channel — was verified to leave the scalar form unchanged; it only affects a body, which could not previously exist there.Diff
pyproject.tomlandsrc/cf_ui/_version.py→0.3.1, moved together because the agreement test added in Release 0.3.0: the primitives layer — and fix the wheel guard and version drift first #63 fails the build if they drift.CHANGELOG.md:[Unreleased]rolled into## [0.3.1] — 2026-08-01.Verified before tagging
js_on+js_off)ruff check/ruff format --check src testsprek run --all-filesuv build --wheel+ the release workflow's own shipped-files guard, run locally🤖 Generated with Claude Code
https://claude.ai/code/session_01NhqNRBg83czKfr8L6FF5xf