Skip to content

v2.7.0

Choose a tag to compare

@marcinpsk marcinpsk released this 30 Sep 14:17
· 272 commits to main since this release

v2.7.0 (2026-09-30)

This release is published under the Apache-2.0 License.

Bug Fixes

  • branching: Accept a 1.2 pre-release and drop the dead resolver-hook path (d5c3244)

  • branching: Answer the plugin's own JSON requests with a JSON refusal (e3bd307)

  • branching: Keep netbox-branching's queued messages off the anonymous refusal (d3261f3)

  • branching: Pass a view with no module name through the refusal middleware (4f7c053)

  • branching: Quote the branch name in the refusal message (1883c97)

  • branching: Read the branch header on API requests only, as upstream (23d0b6c)

  • branching: Refuse an anonymous caller without naming the branch (da1b870)

  • branching: Refuse in every policy entry helper before its first plugin read (45e86b5)

  • branching: Show the Device card notice without reading plugin data (5cc9fb3)

  • changelog: Snapshot NetBox objects before the plugin updates them (20f7cc0)

  • compat: Require NetBox 4.6.9 (3e36997)

  • graphql: Refuse a stale branch selector like the REST and UI views (a18e452)

  • jobs: Record import job changes in the NetBox change log (fd3fd1a)

  • migrations: Drop orphan tag assignments when the tags move is rolled back (f71d52b)

  • migrations: Move, not copy, the tag rows in the data migration (8f7408d)

  • plan: Keep Python error text out of the unreadable-plan message (f255b0c)

  • proposals: Fail a proposal whose job is refused inside a branch (cd91369)

  • release: Keep a released version's range in the compatibility matrix (9a2ed8c)

  • tags: Filter profiles and backends by tag and show their tags (1aada6a)

  • views: Lock the Device the field sync writes, and snapshot it there (63b73da)

  • views: Send no events for writes a sync view rolls back (e373804)

Chores

  • deps: Bump the github-actions group with 3 updates (a630ed1)

  • deps-dev: Bump jsdom from 30.0.1 to 30.1.1 (e528e19)

  • deps-dev: Bump python-semantic-release from 10.6.2 to 10.7.0 (3869b71)

  • deps-dev: Bump ruff from 0.16.7 to 0.16.8 (f182c25)

Code Style

  • branching: Give the anonymous refusal card the in-layout card styles (1787730)

Continuous Integration

  • Require full coverage of branching.py in the branching job (e91d2af)

  • Run the branching tests beside netbox-branching 1.2.1 (4225ddc)

  • branching: Run the full suite with netbox-branching installed (29840f0)

Documentation

  • configuration: Limit the job change log note to NetBox objects (3e77263)

  • design: Ratify netbox-branching compatibility (c3b824e)

  • design: Record the snapshot fix in the netbox-branching design (d71f718)

  • design: State the netbox-branching versions the contract covers (27b7b20)

  • readme: State the NetBox 4.6.9 floor in the trace sentence (28a5ff6)

Features

  • branching: Fake the data migrations on a branch migrate (2285945)

  • branching: Keep a core delete in a branch out of main's plugin rows (c726dcf)

  • branching: Refuse every plugin entry point inside a branch (eb78475)

  • branching: Refuse reverts that cannot restore plugin data (5a263e6)

  • branching: Refuse to start beside netbox-branching older than 1.2 (d777a45)

  • tags: Store profile and backend tags as NetBox tag assignments (ea0e517)

  • ui: Add a Filters tab to the profile and AI backend lists (1ea35ce)

Performance Improvements

  • import: Snapshot a saved Device only when a save follows (72dbaf0)

Refactoring

  • branching: Choose the refusal format with NetBox's is_api_request (98c5f4c)

  • migrations: Split the tags move into a data and a schema migration (ebee623)

Testing

  • Keep the other plugins' settings in a PLUGINS_CONFIG override (47c6891)

  • Refuse a PLUGINS_CONFIG override that can drop a plugin entry (3f1301f)

  • branching: Keep the base netbox-branching settings in the test settings (a22cc1a)

  • branching: Make the base-settings check fail when it has nothing to compare (e2b2050)

  • branching: Refuse a plugin foreign key to a branchable plugin model (7c9b2b8)

  • branching: Skip the branching modules on one installed-app fact (6215d59)

  • changelog: Check many-to-many changes in the snapshot guard (6f857f9)

  • changelog: Share the webhook event rule fixture (be76a56)

  • filters: Search import profiles by name through the inherited q filter (325fbab)

  • migrations: Refuse a faked migration that holds schema operations (289c2bf)

  • migrations: Restore the leaf through the shared helper (f8bbf2f)

  • release: Pass the bumped version to the generator instead of patching its reader (2679b9f)

  • tags: Check only the model checks for a tags clash (d89ef2b)


Detailed Changes: v2.6.0...v2.7.0