From 630e9917586526f8137ce0499f2baac0d688985b Mon Sep 17 00:00:00 2001 From: Dylan Verheul Date: Sun, 4 Oct 2026 09:40:00 +0200 Subject: [PATCH] Un-cut 26.4: fold the section back into Unreleased and return to 26.3 main claimed a version that does not exist. CHANGELOG.md carried a closed `## 26.4 (2026-09-21)` section and pyproject.toml said 26.4, while the latest tag was v26.3 and nothing had been published. The release cut did not arrive through the release PR, #877, which was closed as postponed. It arrived through #878, the CI sync, which also carried the changelog heading, the version bump and the coverage[toml] dedup. Closing #877 therefore postponed nothing, and four more entries accumulated on top of a section that was already dated and closed. This folds the eight 26.4 entries back into Unreleased alongside the four that followed, ordered by the categories in MAINTAINING.md: bug fixes, then features, then tooling and internal. No entry text is changed. The version returns to 26.3 in pyproject.toml and uv.lock. `just release-check` reads correctly again. Before this it listed five src/ commits against an Unreleased section holding only two matching entries, because the other three were covered by the closed 26.4 section. uv.lock also bumps its own `revision` marker from 3 to 5, which my local uv wrote when regenerating. That is incidental to this change. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 9 +++------ pyproject.toml | 2 +- uv.lock | 4 ++-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5aa4f02e..1f7cadc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,15 +4,12 @@ - Fix a `template_name` set on a `RadioSelect`, `CheckboxSelectMultiple` or `ClearableFileInput` subclass being overwritten by this package's own widget template (#388). Widgets that still carry Django's default template are unaffected. - Accept a non-string URL value in `css_url`, `javascript_url` and `theme_url`, so a lazy `static()` value can be used directly instead of only inside the dict form (#616). Passing one raised `ValueError: dictionary update sequence element #0 has length 1; 2 is required`, because anything that was not a `str` was treated as a dict of attributes. The docs now cover serving Bootstrap from your own static files, which needs the URL resolved at render time so `ManifestStaticFilesStorage` can supply the hashed filename. -- Test on Python 3.15 (release candidate) against Django 6.1 and `main`. The job is non-blocking and 3.15 is not yet advertised as supported. -- Fail the CI gate when any job fails, not only the test matrix. A failing docs or packaging build could previously be merged. - -## 26.4 (2026-09-21) - +- Recognize `week`, `search` and `color` input-type widgets as form-control widgets, so `addon_before`/`addon_after` work on them, and warn instead of silently dropping addons on a widget that cannot have them (#743, #872). Floating labels stay unsupported for `color`, where Bootstrap sizes the swatch itself. - Add the documented `inline_field_class` setting to `BOOTSTRAP5_DEFAULTS`, where it was missing. Its effective default is unchanged. - Support `addon_before`/`addon_after` on fields with `layout="floating"` (#866). The `form-floating` element is now nested inside the `input-group`, as Bootstrap's floating-label input-group markup requires, instead of the two being alternatives. This removes the warning added in 26.3 (#833), which existed because the combination was unsupported. -- Recognize `week`, `search` and `color` input-type widgets as form-control widgets, so `addon_before`/`addon_after` work on them, and warn instead of silently dropping addons on a widget that cannot have them (#743, #872). Floating labels stay unsupported for `color`, where Bootstrap sizes the swatch itself. - Add a system check that warns about keys in the `BOOTSTRAP5` setting that the package does not read, such as a setting removed in an earlier release or one carried over from django-bootstrap3 or django-bootstrap4 (`django_bootstrap5.W001`, #867). Silence it with `SILENCED_SYSTEM_CHECKS` if you keep extra keys deliberately. +- Test on Python 3.15 (release candidate) against Django 6.1 and `main`. The job is non-blocking and 3.15 is not yet advertised as supported. +- Fail the CI gate when any job fails, not only the test matrix. A failing docs or packaging build could previously be merged. - Drop a duplicate `coverage[toml]` entry from the `test` dependency group and sort it alphabetically. - Add `just release-check` to list `src/` changes against changelog entries before a release. - Fix the release process in MAINTAINING.md: the version bump goes through a PR, not a direct push to protected `main`. diff --git a/pyproject.toml b/pyproject.toml index d7b0d9af..9fc027be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ license-files = ["LICENSE", "AUTHORS"] name = "django-bootstrap5" readme = "README.md" requires-python = ">=3.10" -version = "26.4" +version = "26.3" [project.optional-dependencies] jinja = ["Jinja2>=3.0,<4"] diff --git a/uv.lock b/uv.lock index b0b0c284..7b3a0834 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 5 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.12'", @@ -289,7 +289,7 @@ wheels = [ [[package]] name = "django-bootstrap5" -version = "26.4" +version = "26.3" source = { editable = "." } dependencies = [ { name = "django" },