netbox-community/netbox
51.4
Adequate · 19 September 2026
272.4k
lines of production code
Python
primary language
1
measurement over time
What this system is
This system is NetBox, an open-source infrastructure resource planning and data center infrastructure management (DCIM) platform. It provides comprehensive capabilities for modeling and tracking network infrastructure components, including IP address management, circuit provisioning, and physical device inventory. The system supports extensibility through plugins, custom fields, and automated reporting, while offering robust API interfaces (REST and GraphQL) for integration with external tools.
How it got here
2016–2019 — NetBox v4 architecture and UI modernization
63 changes.
This period focused on the comprehensive migration of NetBox to version 4, characterized by a complete rewrite of the user interface to use Bootstrap 5, HTMX, and declarative generic templates. The backend underwent significant structural changes, including the adoption of ViewSets for all REST APIs, the consolidation of database schemas via squashed migrations, and the introduction of new modules for virtualization and event rules. These efforts standardized the codebase, improved performance through caching and indexing, and replaced legacy components with modern, consistent patterns across the application.
2020–2022 — Modernization and GraphQL expansion
79 changes.
This period focused on a comprehensive modernization of the NetBox codebase, migrating the frontend to TypeScript and the Tabler CSS framework while introducing HTMX for dynamic interactions. The architecture was significantly restructured by breaking monolithic modules into modular packages and implementing a new GraphQL API via Strawberry alongside REST API enhancements. New features included wireless network management, virtual circuits, and improved user authentication, supported by extensive test coverage and database schema updates.
2023–2024 — Core infrastructure and VPN module
69 changes.
This period focused on establishing a robust core application by introducing centralized background job management, data source synchronization, and a dedicated account management system. It also delivered a new VPN module for managing tunnels and L2VPNs, alongside a comprehensive overhaul of the REST and GraphQL APIs to support these new features and improve internal code structure.
2025–2026 — Declarative UI layout migration
36 changes.
This period focused on migrating the NetBox user interface to a new declarative layout system, replacing ad-hoc template rendering with structured Python classes and reusable panel components across all modules. The work standardized object detail views, improved attribute rendering consistency, and enhanced bulk operation workflows by preserving filter contexts. Additionally, it introduced new localization support for Latvian and Korean, along with specific UI refinements for device attributes and resource displays.
Features
Add Chinese (Simplified) language support
NetBox now includes a complete Chinese (Simplified) translation file, enabling users to view the interface in zh. This change adds the necessary localization resources for the entire application, covering UI strings, status labels, and error messages.
netbox/translations/zh · high confidence
Add English source translation file
The English source translation file (django.po) has been added to the project, containing the base strings for the application's user interface. This file serves as the template for extracting and managing translatable text from the Python codebase, enabling future localization efforts for other languages.
netbox/translations/en · high confidence
Add GraphQL API for Tenancy and Contact models
This change introduces a new GraphQL schema for the tenancy app, exposing query and list endpoints for Tenants, Tenant Groups, Contacts, Contact Roles, Contact Groups, and Contact Assignments. The implementation uses the Strawberry framework and includes comprehensive filtering capabilities for all exposed types, allowing users to query and filter tenancy data and contact relationships via GraphQL.
netbox/tenancy/graphql · high confidence
Add GraphQL API for Users, Groups, and Owners
This change introduces a new GraphQL schema for the users app, exposing query fields for User, Group, Owner, and OwnerGroup objects. The implementation uses the Strawberry framework and provides filtering and pagination capabilities for these entities, allowing users to query and filter user accounts, groups, and custom owner definitions via the GraphQL API.
netbox/users/graphql · high confidence
Add GraphQL API support for the Circuits app
This change introduces a complete GraphQL schema for the Circuits application, exposing query and list endpoints for Providers, Provider Accounts, Provider Networks, Circuits, Circuit Types, Circuit Groups, Circuit Group Assignments, Circuit Terminations, Virtual Circuits, Virtual Circuit Types, and Virtual Circuit Terminations. It includes corresponding filter definitions for all these models, allowing users to query and filter circuit-related data via GraphQL, and defines the necessary enum types for circuit statuses, priorities, and termination roles.
netbox/circuits/graphql · high confidence
Add GraphQL API support for virtualization models
This change introduces the GraphQL schema, types, and filters for the virtualization module, enabling users to query and filter Clusters, ClusterGroups, ClusterTypes, VirtualMachines, VMInterfaces, VirtualDisks, and the new VirtualMachineType model via GraphQL. It includes specific fields such as virtual\_disk\_count and interface\_count on VirtualMachines, support for config context rendering, and relationships to IP addresses, VLANs, and contacts.
netbox/virtualization/graphql · high confidence
Add Japanese language support
NetBox now includes a Japanese translation file, allowing users to view the interface in Japanese. This change adds the necessary localization strings for core UI elements, status choices, and navigation menus.
netbox/translations/ja · high confidence
Add Korean language support
NetBox now includes a complete Korean translation file, allowing users to set their interface language to Korean. This change adds the necessary localization strings for UI elements, status choices, and system messages, enabling a fully localized experience for Korean-speaking users.
netbox/translations/ko · high confidence
Add Prefix button on Aggregate child prefixes view
The child prefixes view for IPAM aggregates now includes an "Add Prefix" button, allowing users to quickly create new prefixes associated with the aggregate when they have the necessary permissions and a first available prefix is identified.
netbox/templates/ipam/aggregate · high confidence
Add Turkish language support
NetBox now includes a Turkish translation, allowing users to switch their interface language to Turkish. This update adds the necessary translation files to support Turkish localization across the application.
netbox/translations/tr · high confidence
Add UI layout panels for the circuits app
The circuits application now includes dedicated UI layout panels that define how circuit-related objects are displayed in the interface. This change introduces specific panels for Circuit, CircuitType, Provider, ProviderAccount, ProviderNetwork, VirtualCircuit, and VirtualCircuitTermination, configuring attributes such as provider links, status, distance, and colored type indicators. It also adds specialized panels for circuit group assignments and circuit terminations, enabling structured views for termination points and group memberships within the circuits module.
netbox/circuits/ui · high confidence
Add Ukrainian language support
NetBox now includes a Ukrainian translation, allowing users to view the interface in Ukrainian. This change adds the \netbox/translations/uk/LC\_MESSAGES/django.po\ file containing the localized strings for the application.
netbox/translations/uk · high confidence
Add VPN GraphQL API support
This change introduces a new GraphQL API for the VPN module, exposing types, filters, and queries for Tunnel, TunnelGroup, TunnelTermination, IKEPolicy, IKEProposal, IPSecPolicy, IPSecProposal, IPSecProfile, L2VPN, and L2VPNTermination models. Users can now query and filter VPN resources via GraphQL, including support for custom fields, tags, contacts, and nested relationships.
netbox/vpn/graphql · high confidence
Add bulk sync button template with URL parameter preservation
A new template for the bulk sync button has been added to the core buttons library. This button submits a sync action and is designed to preserve existing filter parameters in the URL when the operation is performed, ensuring users remain on the correct filtered view after the action completes.
netbox/templates/core/buttons · high confidence
Add filtering controls to device interface lists
The device interface list now includes a dropdown menu that allows users to filter interfaces by their status and type. Users can hide disabled interfaces, hide enabled interfaces, hide virtual interfaces, and hide disconnected interfaces. These filters are applied via URL parameters, enabling persistent filtering states across page interactions.
netbox/templates/dcim/device/inc · high confidence
Add support for Latvian translations
NetBox now includes a complete Latvian (lv) language pack, allowing users to view the interface in Latvian. This change adds the necessary translation files for system messages, UI labels, and status choices across modules such as circuits, DCIM, and IPAM.
netbox/translations/lv · high confidence
Added Polish language support
NetBox now includes a Polish translation file (pl), allowing users to view the interface in Polish. This update adds the initial set of translated strings for core UI elements, status choices, and account views.
netbox/translations/pl · high confidence
Dashboard widget management and reset capabilities
Users can now customize their dashboard by adding, configuring, and removing individual widgets via modal interfaces, and can restore the default layout using a dedicated reset confirmation page. The new templates provide the UI for selecting widget types, setting titles and colors, adjusting specific configurations, and closing widgets, ensuring that these changes only affect the current user's view.
netbox/templates/extras/dashboard · high confidence
German language support added to NetBox
A new German translation file (netbox/translations/de/LC\_MESSAGES/django.po) has been added to the application, enabling users to view the NetBox interface in German. This file contains translations for core UI elements, status choices (such as Active, Planned, Offline), and account messages, allowing German-speaking users to interact with the platform in their native language.
netbox/translations/de · high confidence
HTMX-powered dynamic UI components for forms, tables, and notifications
The web interface now uses HTMX to deliver dynamic, partial-page updates for several key areas. Object lists are rendered as dynamic tables with live pagination, result counts, and bulk action buttons that update without full page reloads. Forms (including bulk-add and deletion workflows) are rendered via shared HTMX templates, enabling seamless modal interactions and immediate feedback. A new quick-add widget allows users to create related objects inline, while an advanced object selector provides searchable, filterable selection within modals. Additionally, the notification system now supports real-time updates and a 'Dismiss all' action, improving the responsiveness of user alerts.
netbox/templates/htmx · high confidence
Initial Czech (cs) translation file added
A new Czech language translation file (django.po) has been added to the application, providing localized strings for user-facing messages, interface labels, and status choices. This enables the NetBox interface to be displayed in Czech for users with that language preference.
netbox/translations/cs · high confidence
Initial French language translation support added
NetBox now includes a complete French (fr) translation file, enabling the user interface to be displayed in French for users who select this language. This addition provides localized strings for core system messages, account views, and network object statuses (such as Active, Planned, and Offline) across circuits, DCIM, and other modules.
netbox/translations/fr · high confidence
Initial Portuguese (pt) translation support added
NetBox now includes initial translation files for Portuguese, enabling the user interface to be displayed in Portuguese for users who select this language in their preferences. This change adds the necessary message maps to support localization for this language.
netbox/translations/pt · high confidence
Initial Russian language support added
NetBox now includes a complete Russian (ru) translation file, enabling users to view the interface in Russian. This addition provides localized strings for core areas such as account management, circuit status choices, and device status options.
netbox/translations/ru · high confidence
Initial Spanish language support added
NetBox now includes a complete Spanish translation for its user interface, allowing users to view the application in Spanish. This change adds the necessary translation files to support the 'es' locale, covering UI strings, error messages, and status labels across various modules such as circuits, DCIM, and IPAM.
netbox/translations/es · high confidence
Initial release of the Virtualization REST API
This change introduces the complete REST API surface for the virtualization module, exposing endpoints for managing clusters (types, groups, and instances), virtual machine types, virtual machines, virtual machine interfaces, and virtual disks. The API includes viewsets for these resources, enabling standard CRUD operations, filtering, and bulk actions. Notably, the Cluster viewset now calculates and exposes allocated resources (vCPUs, memory, disk) via database annotations, and the Virtual Machine viewset integrates with config context and rendering mixins to support dynamic configuration generation.
netbox/tenancy/api, netbox/virtualization/api · high confidence
Introduce ChoiceSet for structured field choices and new utility modules
The utilities package now includes a new ChoiceSet class and Choice tuple type to define field choices with optional color and description metadata, supporting configuration overrides via FIELD\_CHOICES. Additionally, new modules have been added: apps.py provides a get\_installed\_apps() utility to retrieve installed Django app names and versions; constants.py defines filter lookup maps, safe HTTP request meta keys, CSV delimiters, allowed HTML tags/attributes, and URL schemes; conversion.py offers unit conversion functions (to\_grams, to\_meters, etc.); and counters.py implements signal-based counter cache updates for model fields.
netbox/utilities · high confidence
Introduce GraphQL API for DCIM models
The Data Center Infrastructure Management (DCIM) module now exposes a complete GraphQL API, allowing users to query and filter devices, cables, racks, interfaces, and related components. This change adds the necessary schema definitions, object types, and filter mixins for the entire DCIM domain, replacing the previous Graphene-based implementation with Strawberry. Users can now leverage GraphQL-specific features such as nested filtering, cached relation lookups (e.g., filtering interfaces by site or rack), and optimized prefetching for cable terminations.
netbox/dcim/graphql, netbox/extras/graphql, netbox/ipam/graphql · high confidence
Introduce GraphQL API for Wireless LANs, Groups, and Links
This change adds the GraphQL schema, types, and filters for the wireless application, exposing WirelessLAN, WirelessLANGroup, and WirelessLink models. Users can now query and filter wireless networks by attributes such as SSID, status, VLAN, and authentication details, as well as navigate relationships to associated interfaces, tenants, and hierarchical groups.
netbox/wireless/graphql · high confidence
Introduce GraphQL API with Strawberry backend and plugin extension support
NetBox now provides a GraphQL API powered by the Strawberry framework, replacing the previous Graphene implementation. This new API includes a dedicated Django app that registers schema extensions for all core models (DCIM, IPAM, Tenancy, etc.) and exposes base types and filters that plugins can extend via a registry system. The implementation adds support for cursor-based pagination, enforces configurable maximum query depth and alias limits, and integrates DRF token authentication. It also introduces optimized prefetching for GenericForeignKeys and handles DISTINCT queries on to-many relations correctly using window functions.
netbox/netbox/graphql · high confidence
Introduce VPN models for tunnels, L2VPNs, and crypto policies
This change adds the core data models for the VPN feature set within the \netbox/vpn\ application. It introduces \Tunnel\, \TunnelGroup\, and \TunnelTermination\ to manage IPsec/IKE tunnels and their endpoints, \L2VPN\ and \L2VPNTermination\ to support Layer 2 VPN services with status tracking and tenant association, and \IKEPolicy\, \IKEProposal\, \IPSecPolicy\, and \IPSecProposal\ to define cryptographic security parameters. These models establish the foundational structure for configuring and tracking VPN infrastructure in NetBox.
netbox/vpn/models · high confidence
Introduce VPN module with tunnel and L2VPN management
This change introduces the new \vpn\ application, providing native support for managing VPN infrastructure. Users can now create and manage Tunnels (with encapsulation types like GRE, IPsec, WireGuard, etc.), Tunnel Groups, and L2VPNs. The module includes full CRUD views, filtering, search indexing, and UI panels for IKE/IPsec policies and proposals, allowing administrators to define and monitor VPN endpoints and layer-2 virtual private networks directly within NetBox.
netbox/vpn · high confidence
Introduce VPN tables for L2VPN, tunnels, and crypto policies
This change adds the table definitions for the VPN application, enabling users to view and manage L2VPNs, L2VPNTerminations, Tunnels, TunnelTerminations, and crypto policies (IKE/IPSec proposals and policies) in the NetBox UI. The new tables include specific columns for status, import/export targets, groupings, and associated objects, ensuring proper display and export behavior for these network infrastructure components.
netbox/vpn/tables · high confidence
Introduce Wireless API endpoints for LANs, Links, and Groups
The NetBox REST API now exposes wireless networking resources, allowing users to manage Wireless LANs, Wireless Links, and Wireless LAN Groups via dedicated API endpoints. This change adds new ViewSets and URL routes for these entities, enabling programmatic creation, retrieval, and modification of wireless infrastructure data through the standard API interface.
netbox/wireless/api · high confidence
Introduce bulk edit, import, and filter forms for Tenancy models
This change adds dedicated form classes for bulk editing, CSV importing, and filtering within the Tenancy app. Users can now perform bulk operations on Tenants, Tenant Groups, Contacts, Contact Groups, Contact Roles, and Contact Assignments, including the ability to nullify specific fields during bulk edits. Additionally, CSV import forms are provided for all these models, and filter forms allow filtering by contact-related attributes (contact, role, group) on Tenants and Contact Assignments.
netbox/tenancy/forms · high confidence
Introduce contact management and restructure tenancy views
The tenancy app now supports managing organizational contacts and their assignments to NetBox objects. Users can create and filter Contacts, Contact Groups (with nested hierarchy), and Contact Roles, and assign them to other objects via Contact Assignments. The existing Tenant and Tenant Group models have been migrated to a new generic view structure, standardizing their list, detail, edit, and bulk operation interfaces.
netbox/tenancy · high confidence
Introduce core GraphQL API for data sources and changelog
This change adds a new GraphQL schema under \netbox/core/graphql\ that exposes core models—specifically DataFile, DataSource, ObjectChange, and ContentType—as queryable types. It provides typed filters (e.g., by name, status, path, or action) and pagination for these resources, allowing users to query and filter data source content and system change logs via GraphQL. The implementation uses Strawberry and strawberry-django to define types, filters, and mixins (such as ChangelogMixin) that integrate with the existing NetBox GraphQL framework.
netbox/core/graphql · high confidence
Introduce core app with background job management and data source synchronization
The new \core\ app centralizes background job execution, data source synchronization, and system housekeeping. Users can now view and manage background tasks (jobs) via a dedicated UI section, including requeuing, stopping, and deleting them. Data sources support automatic periodic synchronization and bulk sync actions, with status tracking (new, queued, syncing, completed, failed). A daily system housekeeping job handles changelog pruning, expired job deletion, session cleanup, and census reporting. The app also introduces job logging, notifications, and event signals for job lifecycle tracking.
netbox/core · high confidence
Introduce dedicated Account management area
A new Account section has been added to the NetBox web UI, providing a centralized location for users to manage their profile, bookmarks, notifications, subscriptions, preferences, password, and API tokens. The profile view now displays the user's last login time and assigned groups, while the API token creation flow has been updated to display the plaintext token immediately upon creation and warn about v1 token deprecation. The new interface uses a tabbed layout for navigation and includes sticky action bars for bulk operations on lists like bookmarks and subscriptions.
netbox/templates/account · high confidence
Introduce dedicated account management app
A new \netbox/account\ application has been created to centralize user-facing account management features. This includes a dedicated URL namespace for profile, bookmarks, notifications, subscriptions, preferences, password changes, and API token management. The app introduces a \UserToken\ proxy model to allow users to manage their own API tokens and implements a \LoginView\ that restores the user's preferred language via a cookie upon successful authentication. Additionally, the login process now strips line breaks from URLs and usernames in logs to prevent log injection, and validates redirect URLs to ensure they are safe before redirecting users.
netbox/account · high confidence
Introduce extensible dashboard widget system
Users can now customize their NetBox dashboard with a new, extensible widget framework. This change introduces a registry-based system for dashboard widgets, allowing plugins to register custom widget types. The default installation includes several built-in widgets: Object Counts and Object Lists (which support filtering and URL parameterization), RSS Feeds (with configurable timeouts and proxy support), Bookmarks (with sorting options), and Notes (supporting Markdown). The dashboard layout and configuration are now managed via a new utility layer that handles default dashboard generation from configuration settings and user-specific dashboard persistence.
netbox/extras/dashboard · high confidence
Introduce generic view templates for consistent UI patterns
A new set of generic templates has been added to standardize the user interface across all object views. This includes a base layout (\_base.html) and specific templates for object lists, individual object details, creation/editing, and bulk operations (add, edit, delete, rename, import). These templates provide a unified structure for headers, tabs, controls, and content areas, ensuring a consistent experience for users when navigating, filtering, and managing objects throughout the application.
netbox/templates/generic · high confidence
Introduce new navigation menu data classes and utility functions
The navigation module now defines structured data classes (\Menu\, \MenuGroup\, \MenuItem\, \MenuItemButton\) to represent the UI navigation hierarchy, along with utility functions (\get\_model\_item\, \get\_model\_buttons\) to automatically generate menu entries and action buttons for models based on permissions. This provides a standardized, code-driven way to define and render navigation menus, replacing previous ad-hoc implementations.
netbox/netbox/navigation · high confidence
Introduce pip-installable CLI and standardized configuration structure
NetBox now supports a pip-installable distribution with a dedicated command-line interface (CLI) for pre-configuration tasks like generating secret keys and printing versions, alongside a new \\_\main\\_.py\ entry point for \python -m netbox\ execution. The project structure has been reorganized to centralize core constants (such as RQ queue names and advisory lock keys) in \netbox/constants.py\, generic choice definitions (colors, import formats, units) in \netbox/choices.py\, and updated example and testing configuration files (\configuration\_example.py\, \configuration\_testing.py\) that reflect the current Redis and database settings.
netbox/netbox · high confidence
Introduce table definitions for virtual circuits and provider accounts
This change adds the Django Tables2 table definitions for the new virtual circuits feature and provider account management. It introduces \VirtualCircuitTable\, \VirtualCircuitTerminationTable\, and \VirtualCircuitTypeTable\ to display virtual circuit data, including support for colored type labels and tenancy columns. Additionally, it adds \ProviderAccountTable\ to the provider tables, enabling users to view and sort provider accounts and their associated circuit counts in the provider list views.
netbox/circuits/tables · high confidence
Introduce virtual circuits and restructure circuit models
The circuits models have been split into dedicated submodules (circuits, providers, virtual\_circuits) to support a new virtual circuit capability. This change adds VirtualCircuit and VirtualCircuitTermination models, allowing users to define virtual connections between endpoints across physical circuits, complete with hub/spoke role assignments and provider network/account associations. It also introduces BaseCircuitType to standardize circuit type definitions with color support, adds a termination\_date field to physical Circuits, and enables group assignment for both physical and virtual circuits via CircuitGroupAssignment.
netbox/circuits/models · high confidence
Introduce virtualization app with VM type, start-on-boot, and interface management
The new virtualization app adds a VirtualMachineType model for categorizing VMs, a start\_on\_boot field to control automatic power-on behavior, and dedicated VMInterface views and bulk-add capabilities. It also registers search indexes for all virtualization models and wires up cluster-site sync and disk-size aggregation via signals.
netbox/virtualization · high confidence
Introduce wireless LAN and link management forms
This change adds the form definitions for the new wireless application, enabling users to create, edit, filter, and bulk-import Wireless LANs, Wireless LAN Groups, and Wireless Links. The forms support configuring SSID, status, VLAN assignment, tenant, and scope, as well as authentication details (type, cipher, and pre-shared key) and link distance. Bulk import forms allow linking wireless links to devices and interfaces by name, with dynamic filtering of interface choices based on the selected device and site.
netbox/wireless/forms · high confidence
Introduce wireless network management models and views
This change adds the \wireless\ application to NetBox, introducing models for Wireless LANs (SSIDs), Wireless LAN Groups, and Wireless Links. Users can now define wireless networks with authentication details (PSK, type, cipher), organize them into hierarchical groups, and record point-to-point wireless connections between interfaces. The update includes full CRUD views, filtering, search indexing, and automatic cable path management for wireless links.
netbox/wireless · high confidence
New Core API endpoints for background jobs and data sources
The core API module now exposes REST endpoints for managing background jobs, data sources, and RQ infrastructure. Users can interact with data sources via a new sync action, view job results and object changes, and inspect background queues, workers, and tasks through dedicated viewsets. The OpenAPI schema generation has been updated to correctly document these new resources, bulk operations, and specific field types like ChoiceFields and timezones, ensuring accurate client code generation.
netbox/core/api · high confidence
New DCIM object detail and management views
The DCIM section now provides dedicated, standardized detail views for core objects including Device, Interface, Module, Rack, Site, and Virtual Chassis, along with new management interfaces for bulk disconnections, cable editing, and cable tracing. Users can now view and manage these resources through a consistent UI layout that includes specific action buttons (such as adding child interfaces or populating device bays) and enhanced data presentation like SVG-based cable traces and related path listings.
netbox/templates/dcim · high confidence
New FHRP Groups panel on interface views
Interface views now include a dedicated FHRP Groups panel that lists all FHRP group assignments associated with the interface. This panel displays the group name, protocol, associated virtual IP addresses, and priority, and provides action buttons to create new groups or assign existing ones directly from the interface context.
netbox/templates/ipam/inc/panels · high confidence
New HTMX-based cable editing interface
A new HTMX template for editing cables has been added, providing a structured form layout with distinct sections for A-side and B-side terminations, cable attributes (including status, profile, type, bundle, length, and color), tenancy, ownership, custom fields, and comments. This change introduces a new UI component for cable management within the DCIM module, replacing or augmenting previous editing mechanisms with a modern, partial-rendering approach.
netbox/templates/dcim/htmx · high confidence
New IPAM detail panels for FHRP groups and prefix addressing
The IPAM detail views now include dedicated panels for FHRP group assignments and prefix addressing metrics. The FHRP panel lists group assignments with protocol, virtual IPs, and priority, allowing users to edit or delete assignments directly. The addressing panel displays utilization graphs, child IP counts, available IP counts, and the first available IP address, with a link to add a new IP at that address if permissions allow.
netbox/templates/ipam/panels · high confidence
New REST API endpoints for users, groups, tokens, permissions, and owners
The users API module now exposes dedicated REST endpoints for managing Users, Groups, API Tokens, Object Permissions, Owners, and User Configurations. Users can create API tokens via a new unauthenticated provision endpoint, update their own preferences through a dedicated config endpoint, and manage permissions and ownership structures via standard viewsets. This change consolidates user-related API operations into a structured router-based API.
netbox/users/api · high confidence
New REST API serializers for core resources
The core API now exposes dedicated serializers for several previously unserialized or differently handled resources. Users can now retrieve detailed change logging records (including pre/post-change data and user context) via ObjectChangeSerializer, manage data sources and their associated files with DataSourceSerializer and DataFileSerializer (including sync status and file metadata), and inspect background job execution details via JobSerializer (including execution time, queue name, and nested object representation). Additionally, the ObjectTypeSerializer now exposes public/feature flags, REST API endpoint URLs, and model descriptions, while the new RQ API serializers (BackgroundTaskSerializer, BackgroundQueueSerializer, BackgroundWorkerSerializer) provide visibility into background task status, queue metrics, and worker states, with task arguments and kwargs explicitly cast to strings for safe serialization.
netbox/core/api/serializers\ · high confidence_
New SVG rendering for cable traces and rack elevations
The DCIM module now generates SVG images for cable traces and rack elevations. Cable trace SVGs visualize connections between terminations, supporting features like fan-outs, channelized subinterfaces, and circuit descriptions, with links opening in the same window. Rack elevation SVGs display device positions, including reserved/occupied/blocked states via gradients, device tooltips with role and status, and support for highlighting specific devices.
netbox/dcim/svg · high confidence
New UI panels for core objects
The NetBox UI now includes dedicated detail panels for core objects, including Data Sources, Data Files, Jobs, and Object Changes. These panels define the specific attributes displayed in the user interface, such as job scheduling details (created, started, completed, execution time) and data file metadata (path, size, hash).
netbox/core/ui · high confidence
New VPN REST API serializers for crypto, L2VPN, and tunnel resources
This change introduces a new set of REST API serializers located in netbox/vpn/api/serializers\_ for managing VPN-related resources. It adds serializers for crypto components (IKE and IPsec policies, proposals, and profiles), L2VPN entities (including status, type, and route target management), and tunnel infrastructure (tunnels, groups, and terminations). These serializers define the API contract for creating, updating, and retrieving these objects, including nested representations for related entities like IPsec profiles and L2VPN terminations.
netbox/vpn/api/serializers\ · high confidence_
New attribute templates for circuit termination connection and speed details
Added new template files for the circuit termination detail view to render connection status and speed attributes. The connection template now displays whether a termination is marked as connected or linked via a cable, providing links to the cable and its peers, along with action buttons to trace, edit, or disconnect the cable (subject to permissions). If no cable exists, it offers a dropdown to connect the termination to an interface, front port, rear port, or another circuit termination. The speed template displays downstream and upstream speeds with directional icons when upstream speed is defined, otherwise showing the single speed value.
_netbox/templates/circuits/circuit\termination · high confidence
New built-in template tags for consistent UI rendering
This change introduces a suite of new built-in template tags in the utilities area to standardize how specific UI elements are rendered across the application. The new \badge.html\ tag supports both standard background colors and custom hex colors for badges. The \checkmark.html\ tag provides a consistent visual indicator for boolean values (true/false). The \copy\_content.html\ tag adds a button to copy content to the clipboard. The \customfield\_value.html\ tag centralizes the rendering logic for all custom field types (integer, decimal, longtext, boolean, date, datetime, url, json, select, multiselect, object, multiobject), ensuring proper formatting, color-coding for choices, and handling of empty states. The \htmx\_table.html\ tag simplifies the creation of HTMX-powered dynamic tables. Finally, the \tag.html\ tag renders tags as colored badges with optional links and descriptions. These components replace ad-hoc inline HTML with reusable, consistent, and maintainable template fragments.
netbox/utilities/templates/builtins · high confidence
New configuration display and plugin installation templates
This change introduces three new template fragments in the core includes directory to enhance the user interface. The \config\_data.html\ template provides a comprehensive view of system settings, including rack elevations, power feeds, IPAM, security, banners, pagination, validation rules, user preferences, changelog retention, and miscellaneous options like Copilot and GraphQL status. The \datafile\_panel.html\ template adds a dedicated panel for displaying data source and file information, including warnings for deleted files. Additionally, \plugin\_installation.html\ supplies standardized command-line instructions for installing NetBox plugins via PyPI, configuring the PLUGINS list, running migrations, and restarting services.
netbox/templates/core/inc · high confidence
New core app templates for system status, job management, and configuration history
The NetBox UI now includes dedicated templates for the core application, providing a centralized view for system health, background tasks, and configuration changes. Users can view a comprehensive System Status page displaying Python, Django, and PostgreSQL versions, installed plugins, and object counts, with an expandable Database schema inspector. Background job management is now accessible via new views for RQ queues, workers, and individual tasks, allowing users to monitor, stop, requeue, or delete jobs. Additionally, the system supports viewing and restoring previous configuration revisions, and displays a detailed change log with configurable retention policies.
netbox/templates/core · high confidence
New dashboard widgets for bookmarks, object counts, lists, and RSS feeds
The dashboard now includes four new widget templates that allow users to display specific content types directly on their dashboard. The Bookmarks widget displays links to user-saved objects, while the Object Counts widget shows aggregate counts for various models (displaying a lock icon if the user lacks permission). The Object List widget renders paginated lists of objects using HTMX for dynamic loading, and the RSS Feed widget fetches and displays external feed entries, with specific handling for isolated deployments and feed parsing errors.
netbox/templates/extras/dashboard/widgets · high confidence
New database management and Python packaging verification scripts
This change introduces a suite of new shell and Python scripts in the scripts directory to support local database management and Python package publishing. For database management, new shell scripts (drop\_database.sh, load\_database.sh, save\_database.sh) allow users to drop, create, dump, and restore the local NetBox database, with specific schema grants added to support PostgreSQL 15 and later. For Python packaging, a hatchling metadata hook (hatch\_metadata.py) derives PEP 440 versions from release.yaml and parses requirements.txt for wheel metadata. Additionally, several verification scripts (verify\_dependencies.py, verify\_release\_tag.py, verify\_sdist\_contents.py, verify\_wheel\_contents.py, verify\_wheel\_metadata.py) ensure that built wheels and source distributions contain the correct files, metadata, and dependencies, and do not leak sensitive configuration or credentials.
scripts · high confidence
New deployment configuration files for NetBox v4.7.1
This release adds a comprehensive set of deployment configuration files to the contrib directory, providing out-of-the-box support for running NetBox with Gunicorn or uWSGI as the application server, and Apache, Nginx, or uWSGI as the reverse proxy. The new files include systemd service units (netbox.service, netbox-rq.service) for process management, environment configuration (netbox.env), and specific server configurations (apache.conf, nginx.conf, gunicorn.py, uwsgi.ini). Additionally, pre-generated OpenAPI (openapi.json) and Device Type Library (generated\_schema.json) schema files are included to support API documentation and validation.
contrib · high confidence
New job detail and logging UI templates
The job detail view now includes dedicated templates for displaying job attributes, breadcrumbs, and log entries. Users can see scheduled job intervals, click through to filter jobs by object type, and view paginated log entries via an HTMX-powered panel, providing a structured interface for monitoring background job execution and history.
netbox/templates/core/job · high confidence
New management command to rebuild prefix hierarchy
A new management command, \rebuild\_prefixes\, has been added to the IPAM module. This command allows administrators to manually reconstruct the prefix hierarchy by recalculating depth and children counts for all prefixes, including those within specific VRFs. It resets existing counts and iterates through the global table and each VRF to ensure data consistency.
netbox/ipam/management · high confidence
New management commands for cached counts and ltree path repair
Added two new management commands to the utilities package. The \calculate\_cached\_counts\ command allows administrators to force a recalculation of all cached counter fields for devices and VMs, ensuring accurate component type counts. The \rebuild\_ltree\_paths\ command provides a way to recompute trigger-maintained path and sort\_path columns for hierarchical models from their parent relationships, including a \--check\ mode to identify stale data without modifying it, which aids in repairing data integrity after migrations or dumps.
netbox/utilities/management/commands · high confidence
New management commands for device type schema generation and cable path tracing
This change introduces two new management commands in the DCIM app. The \buildschema\ command generates a JSON schema for validating NetBox device type definitions, mapping various hardware choices (such as interface types, power port types, and wireless roles) into a structured format. The \trace\_paths\ command allows administrators to generate or recalculate cable paths for all cable termination objects (including interfaces, power ports/outlets, and console ports); it supports a \--force\ flag to delete and recalculate all existing paths and includes a visual progress indicator during the operation.
netbox/dcim/management · high confidence
New management commands for image size population, config context caching, and script execution
This change introduces several new management commands in the extras app: \populate\_image\_sizes\ to backfill the \image\_size\ field for existing ImageAttachments; \rebuild\_config\_context\_cache\ to pre-render and cache config context data for devices and virtual machines with an optional \--force\ flag; \runscript\ to execute custom scripts from the command line with support for user selection, logging levels, and data injection; and \webhook\_receiver\ to start a local HTTP server for debugging webhook payloads. Additionally, the legacy \run\_inventory\ command has been removed, and existing commands like \reindex\ and \renaturalize\ have been updated to support lazy reindexing and specific model targeting.
netbox/extras/management · high confidence
New management commands for shell, upgrades, and background workers
NetBox introduces several new management commands to improve the developer and operational experience. The \nbshell\ command now provides an enhanced interactive Python shell with pre-imported models, constants, and helper functions like \lsapps()\ and \lsmodels()\ for easier exploration. A new \upgrade\ command centralizes post-installation and post-upgrade tasks, allowing administrators to run migrations, collect static files, rebuild search indexes, and clean up sessions with granular control via flags like \--skip-migrations\ or \--readonly\. The \rqworker\ command has been updated to automatically listen on all configured queues (high, default, low) by default and now initializes system jobs upon startup. Additionally, the \makemigrations\ command is now restricted to development environments unless the \--check\ flag is used, preventing accidental schema changes in production.
netbox/core/management · high confidence
New panel templates for core object views
The core application now includes dedicated panel templates for displaying configuration revision comments and data, datafile content, datasource backend parameters, and detailed object change information (pre-change data, post-change data, differences, and related changes). These templates provide structured, card-based UI components for these specific data views within the core app.
netbox/templates/core/panels · high confidence
New panels for Rack Type details and Device inventory items
The DCIM views for Rack Types and Devices now include dedicated information panels. The Rack Type view displays a 'Dimensions' panel showing form factor, width, height, and new outer dimensions (width, height, depth) and mounting depth, alongside a 'Numbering' panel for starting unit and descending unit settings. The Device view includes a new 'Inventory Items' panel that lists associated inventory items with links to edit or delete them, accessible if the user has the appropriate permissions.
netbox/templates/dcim/inc/panels · high confidence
New repository configuration and contributor guidelines
This change introduces foundational repository configuration files and documentation to standardize the development workflow. It adds a \.gitattributes\ file to ensure consistent line endings for shell scripts and to treat compiled JavaScript and CSS assets as binary, preventing noisy diffs. A \.pre-commit-config.yaml\ file is added to enforce code quality and consistency by integrating Ruff for linting, Django system checks, migration verification, and static asset validation. Additionally, new documentation files (\AGENTS.md\, \CONTRIBUTING.md\, \SECURITY.md\) are introduced to guide contributors on the project's 'stadium' contribution model, issue reporting standards, and security policies.
(repo-wide) · high confidence
New table definitions for core resources
This change introduces the table definitions for core resources, including ObjectChange, ConfigRevision, DataSource, DataFile, Job, and Plugin tables. It also adds custom column types (BackendTypeColumn, BadgeColumn) and template code for rendering these tables. This provides the UI layer for displaying and managing these core entities.
netbox/core/tables · high confidence
New template helpers for saved filters, table configuration, and utilization graphs
This change introduces three new template helper components in the utilities area to support recent UI enhancements. The \applied\_filters.html\ helper renders active filter badges with options to clear all or save the current filter set, enabling the saved filters feature. The \table\_config\_form.html\ helper provides a modal interface for users to add, remove, and reorder table columns, replacing the previous button naming convention with 'Apply' and 'Reset'. The \utilization\_graph.html\ helper displays resource usage percentages, improving granularity and internationalization support by showing values outside the progress bar when utilization is below 35% and ensuring proper localization of numeric formats.
netbox/utilities/templates/helpers · high confidence
New template tags for buttons, navigation, permissions, and plugin rendering
The \netbox/utilities/templatetags\ module has been expanded with new template tags to improve UI consistency and plugin extensibility. A new \buttons.py\ tag library provides standardized action buttons (add, edit, delete, clone, import, export, bookmark, subscribe, sync) for both individual objects and lists. A \navigation.py\ tag now renders the main navigation menu, filtering items based on user authentication, permissions, and staff-only status. A \perms.py\ library introduces filters (\can\_add\, \can\_change\, \can\_delete\, etc.) to check model-specific permissions directly in templates. A \plugins.py\ library enables plugins to inject content into various UI regions (head, navbar, list buttons, object buttons, alerts, left/right page, full-width page) via \PluginTemplateExtension\. A \tabs.py\ tag renders dynamic view tabs for object detail pages, respecting permissions and weights. The \form\_helpers.py\ tag library has been significantly enhanced to support fieldsets, inline fields, tabbed groups, and multi-select add/remove fields, along with improved accessibility via \render\_field\_with\_aria\. The \helpers.py\ library now includes \viewname\ and \validated\_viewname\ filters for URL resolution, and an \action\_url\ template tag for generating action-specific URLs.
netbox/utilities/templatetags · high confidence
New template tags for custom links, dashboard widgets, and log levels
This change introduces three new Django template tags in the extras app. The \custom\_links\ tag renders custom links for objects, handling grouping, button styling, and graceful error display with escaped exception messages. The \render\_widget\ tag safely renders dashboard widgets, catching exceptions and displaying user-friendly error messages with escaped details. The \log\_level\ tag provides an inclusion tag to display syslog severity levels with appropriate labels and CSS classes.
netbox/extras/templatetags · high confidence
New templates for VPN tunnel and tunnel group detail views
The VPN section now includes dedicated detail page templates for Tunnel and TunnelGroup objects. Users viewing a Tunnel can now add terminations directly from the object page via a new 'Add Termination' button, and users viewing a TunnelGroup can add new Tunnels via an 'Add Tunnel' button. Additionally, a new template for displaying pre-shared keys includes a 'Show Secret' toggle button to reveal the key value.
netbox/templates/vpn · high confidence
New user profile panels for actions, object types, and API token examples
The user profile view now includes three new informational panels. The Actions panel displays enabled CRUD permissions and any custom model actions registered by plugins, including their applicable models. The Object Types panel lists the specific object types associated with the user. The Token Example panel provides a ready-to-use cURL command demonstrating how to authenticate API requests using the user's token.
netbox/templates/users/panels · high confidence
Plugins can now extend the GraphQL API and register custom Jinja filters
Plugin authors can now register custom GraphQL schemas, type extensions, and filter extensions to extend NetBox's GraphQL API, and can also register custom Jinja filters for use in ConfigTemplates. The plugin system now tracks installed plugins in a central registry, exposes plugin metadata (including version and release track) via a new API endpoint, and allows plugins to define custom navigation menus and menu items with authentication and permission controls.
netbox/netbox/plugins · high confidence
Refactored user management models with new ownership and permission features
The user management system has been restructured into distinct model files, introducing new capabilities for object ownership and enhanced permission management. Users can now assign 'Owners' and 'OwnerGroups' to resources, allowing for clearer accountability and group-based ownership. The ObjectPermission model has been modernized to support custom model actions and cloning, while the Token model has been upgraded to version 2 with improved security (HMAC-based authentication, fixed key lengths, and expiration validation) and the ability to enable/disable tokens. Additionally, user preferences are now stored in a dedicated UserConfig model with hierarchical JSON support, and the User model has been cleaned up by removing the is\_staff field and enforcing stricter superuser creation rules.
netbox/users/models · high confidence
Reorganized built-in template tags and filters into a modular package
The built-in template tags and filters previously located in the utilities module have been restructured into a new \netbox.utilities.templatetags.builtins\ package, split into separate \filters.py\ and \tags.py\ files. This change introduces several new template utilities for users: the \linkify\ filter to render objects as hyperlinks, the \customfield\_value\ tag to display custom field values with appropriate formatting and colors, the \copy\_content\ tag to add copy-to-clipboard buttons, and the \htmx\_table\ tag to embed HTMX-powered object lists. Additionally, the \static\_with\_params\ tag now correctly handles query parameter appending for static files and preserves cryptographic signatures on CDN URLs (such as S3 presigned URLs) by avoiding unnecessary cache-busting parameters.
netbox/utilities/templatetags/builtins · high confidence
Reports module initialization
The reports directory has been initialized with an empty \_\init\\_.py file, establishing the package structure for the reports feature.
netbox/reports · high confidence
VPN API endpoints for tunnels and L2VPNs
The VPN API now exposes dedicated REST endpoints for managing VPN infrastructure, including IKE/IPSec policies and proposals, tunnel groups, tunnels, and L2VPNs. Users can interact with these resources via standard viewsets registered under the /api/vpn/ prefix, enabling full CRUD operations for VPN configuration management.
netbox/vpn/api · high confidence
VPN forms moved to dedicated module with new tunnel creation and bulk-edit capabilities
The VPN application's form logic has been reorganized into a new \netbox/vpn/forms\ package, separating bulk edit, bulk import, filter, and model forms into distinct files. This change introduces a new \TunnelCreateForm\ that enables users to create tunnels with two terminations in a single step, dynamically switching between physical device and virtual machine interfaces based on the selected termination type. Bulk editing and filtering capabilities have been added for all VPN entities (Tunnels, IKE/IPSec policies and proposals, L2VPNs, and Tunnel Groups), and bulk import forms now support the new \TunnelGroup\ and \TunnelTermination\ models with proper field resolution.
netbox/vpn/forms · high confidence
Wireless app database schema and migration updates
This change introduces the initial database schema for the new Wireless app, defining models for WirelessLANGroup, WirelessLAN, and WirelessLink with fields for SSID, authentication, and interface connections. It adds support for tracking wireless link distance, allows WirelessLANs to be scoped to DCIM locations, regions, sites, and site groups, and enables object ownership for all wireless entities. The schema also migrates WirelessLANGroup from the MPTT library to PostgreSQL ltree for hierarchical data, fixes a database trigger issue that could fail during pg\_dump restores, and ensures empty string choices are stored as null.
netbox/wireless/migrations · high confidence
Removals
Removal of legacy secrets API endpoints and serializers
The legacy REST API implementation for the Secrets feature has been removed. This change deletes the \netbox/secrets/api\ module, including the \SecretSerializer\, \SecretRoleSerializer\, and their associated ViewSets and URL routes. Consequently, users can no longer access secrets via the previous API endpoints (such as listing secrets, retrieving details, or decrypting them via the \decrypt\ view).
netbox/secrets/api · high confidence
Removal of the legacy secrets application
The entire secrets application has been removed from NetBox. This change deletes the \secrets\ app module, including its models (Secret, SecretRole, UserKey), views, forms, filters, tables, URLs, and the Django admin configuration. Users can no longer create, edit, or view secrets or manage user keys through the UI or API.
netbox/secrets · high confidence
Architecture
DCIM models restructured into modular subpackages with new cooling infrastructure support
The DCIM model layer has been reorganized from a single monolithic file into distinct submodules (cables, cooling, device\_component\_templates, device\_components, devices, modules, power, racks, sites) to improve maintainability. This change introduces new models for cooling infrastructure, including CoolingSource and CoolingFeed, allowing users to model facility-level cooling sources and their distribution to racks. Additionally, the cable model now supports logical grouping via CableBundles, and the base model structure has been updated to include denormalized site, location, and rack references on device components for improved query performance.
netbox/dcim/models · high confidence
Extras forms reorganized into modular submodules
The form definitions in the extras application have been restructured from a single monolithic file into distinct submodules (bulk\_edit, bulk\_import, filtersets, misc, model\_forms, reports, and scripts). This change improves code maintainability and separation of concerns by grouping related form classes—such as bulk edit, import, and filter forms—into their own dedicated files, while also introducing new forms for scheduling reports and scripts.
netbox/dcim/forms, netbox/extras/forms · high confidence
Extras models restructured into a modular package
The model definitions in the extras application have been reorganized from a single monolithic file into a structured package with dedicated modules for custom fields, configuration contexts, scripts, tags, notifications, dashboard widgets, and search indexing. This change improves code maintainability and separation of concerns without altering the external API or user-facing features.
netbox/extras/models · high confidence
IPAM configuration and filtering logic restructured into dedicated modules
The IPAM application's static configuration and filtering logic has been reorganized into dedicated modules. Choice definitions for IP addresses, prefixes, VLANs, and services are now centralized in \netbox/ipam/choices.py\, while validation constants and protocol mappings are defined in \netbox/ipam/constants.py\. The filtering logic for all IPAM models has been consolidated into \netbox/ipam/filtersets.py\, and custom database query handling for IP addresses has been moved to \netbox/ipam/managers.py\ and \netbox/ipam/querysets.py\. This change standardizes how IPAM objects are filtered and configured without altering the underlying user-facing capabilities.
netbox/ipam · high confidence
Migrate frontend build to esbuild and TypeScript
The static asset build pipeline has been replaced with esbuild, bundling TypeScript sources and SCSS styles into the dist directory. This migration introduces a new TypeScript codebase for UI components (including Bootstrap integration, sticky bulk actions, and dashboard widgets) and adds ESLint and Prettier configuration to enforce code quality.
netbox/project-static · high confidence
Refactor IPAM REST API serializers into modular components
The IPAM API serializers have been reorganized from a single monolithic file into a modular package structure (netbox/ipam/api/serializers\_/). This change introduces dedicated serializer modules for specific IPAM objects—including ASNs, FHRP groups, IP addresses/ranges, VLANs, VRFs, and Services—while removing the previous dedicated nested serializers in favor of a unified dynamic nesting approach. For users, this maintains the existing REST API surface but improves internal maintainability and resolves circular import issues, ensuring consistent serialization behavior across all IPAM resources.
netbox/ipam/api/serializers\ · high confidence_
Refactored form field utilities into a modular package
The form field utilities in \netbox/utilities/forms/fields\ have been reorganized from a single monolithic module into a structured package with separate files for arrays, choices, content types, CSV handling, dynamic fields, expandable patterns, and generic object selection. This change improves code maintainability and clarity without altering the external API or user-facing behavior of the form fields.
netbox/utilities/forms/fields · high confidence
Refactored form utilities into modular components
The form utility classes and functions have been reorganized from a single monolithic module into a structured package under \netbox/utilities/forms\. This change introduces dedicated modules for bulk import logic (\bulk\_import.py\), form definitions (\forms.py\), mixins (\mixins.py\), rendering components like \FieldSet\ and \InlineFields\ (\rendering.py\), and utility functions (\utils.py\). For users, this represents an internal architectural cleanup that improves code maintainability and separation of concerns without altering the external behavior of existing forms.
netbox/utilities/forms · high confidence
Refactored generic views into a modular, reusable architecture
The generic view layer has been restructured into a modular package under \netbox/netbox/views/generic\, replacing the previous monolithic implementation. This change introduces dedicated base classes (\BaseObjectView\, \BaseMultiObjectView\) in \base.py\ and separates concerns into distinct modules: \bulk\_views.py\ for bulk operations (import, export, edit, delete, rename), \object\_views.py\ for single-object CRUD and child-list views, \feature\_views.py\ for specialized tabs (changelog, journal, images, jobs), and \mixins.py\ for shared logic like permission-based action rendering and table configuration. This refactoring standardizes the view hierarchy, improves code maintainability, and establishes a consistent foundation for future features like HTMX support and background jobs.
netbox/netbox/views/generic · high confidence
Relocate core models to a dedicated subpackage
The core application's model definitions have been reorganized into a new \netbox/core/models/\ subpackage. This change introduces dedicated modules for change logging (\change\_logging.py\), configuration revisions (\config.py\), data sources and files (\data.py\, \files.py\), background jobs (\jobs.py\), and object type management (\object\types.py\), all exposed via a unified \\\init\\_.py\. This structural shift consolidates these foundational components into a single, organized location within the core app.
netbox/core/models · high confidence
Reorganized DCIM table definitions into modular files
The DCIM table definitions have been restructured from a single monolithic module into separate files (cables, connections, cooling, devices, devicetypes, modules, power, racks, sites) to improve maintainability. This change refactors the internal code organization without altering the user-facing table columns, sorting, or filtering behavior.
netbox/dcim/tables · high confidence
Restructure REST API core components into netbox.api package
The core REST API infrastructure has been reorganized into the new netbox.api package, consolidating authentication, pagination, routing, and views into dedicated modules. This change introduces a custom TokenAuthentication class that enforces token expiration, source IP restrictions, and write permissions, alongside a new TokenPermissions handler. Pagination is now handled by NetBoxPagination, which supports both offset-based and cursor-based modes, and includes optimization for complex queries via StripCountAnnotationsPaginator. The NetBoxRouter extends DRF's DefaultRouter to support bulk operations and alphabetized endpoint listing. Additionally, new API views provide a structured API root, a status endpoint with operational details, and an authentication check endpoint, while custom fields and serializers improve data representation and validation.
netbox/netbox/api · high confidence
Restructured REST API serializers into modular package
The REST API serializers for the extras app have been reorganized from a single monolithic module into a dedicated subpackage (netbox/extras/api/serializers\_). This change introduces separate serializer files for distinct features—including ImageAttachment, Bookmarks, ConfigContexts, CustomFields, EventRules, Journaling, Notifications, Scripts, and Tags—improving code maintainability and reducing circular import risks without altering the external API contract.
netbox/extras/api/serializers\ · high confidence_
Behavioural changes
365 commits (138 fixes) modifying netbox/project-static/dist
A change to existing behaviour in netbox/project-static/dist — 365 commits (138 fixs), 77 files.
netbox/project-static/dist · medium confidence · unverified
Apply Tabler CSS framework styling to the NetBox web UI
The web interface has been restyled to use the Tabler CSS framework, replacing the previous Bootstrap-based design. This change updates the visual appearance of core UI components, including the navigation sidebar (with improved dark/light theme support and scroll behavior), cards, forms, tables, and tabs. Users will see a refreshed layout with adjusted spacing, typography, and color schemes across the application.
netbox/project-static/styles/transitional · high confidence
Authentication backend refactoring and proxy model support
The authentication module has been restructured into dedicated files (\_\init\\_.py and misc.py) to improve maintainability. A key behavioral change is that Object Permission checks now correctly support proxy models by comparing concrete models rather than proxy names, preventing permission evaluation errors when proxy models are used. Additionally, the LDAP group mirroring logic has been extracted into a custom helper function to ensure compatibility with NetBox's custom Group model, and social authentication backend display names have been updated to reflect 'Microsoft Entra ID' instead of 'Azure AD'.
netbox/netbox/authentication · high confidence
Branded REST API web UI with favicon and custom branding
The REST API browsable interface now features NetBox's custom branding, including a dedicated favicon (rest-api.ico) and a branded navigation bar that links back to the main NetBox home page. The page title has also been updated to explicitly identify the section as the "REST API".
_netbox/templates/rest\framework · high confidence
Circuit management forms restructured with new fields and bulk operations
The circuits application now uses a modular form structure (bulk\_edit, bulk\_import, filtersets, model\_forms) to support expanded circuit attributes and improved bulk workflows. Users can now specify termination dates, commit rates, and distance (with units) for circuits, and filter circuits by location, provider network, and ownership. Provider records support multiple ASN assignments via add/remove fields, and bulk editing/importing is available for providers, circuits, terminations, and virtual circuits.
netbox/circuits/forms · high confidence
Circuits app rewritten for NetBox v4 with virtual circuits and modern UI
The circuits application has been completely rewritten to align with the NetBox v4 architecture. The legacy function-based views, forms, and tables have been replaced with class-based views and a declarative layout system using panels. A new 'Virtual Circuit' model and its associated terminations have been introduced, expanding the app's capabilities beyond physical circuits. The URL structure has been standardized to use numeric IDs, and the app now includes dedicated search indexes and signal handlers for cable path rebuilding.
netbox/circuits · high confidence
Circuits app templates migrated to generic object views
The NetBox Circuits app has replaced its custom, hand-written templates with the standard generic object template framework. This change removes legacy files for circuit and provider views, lists, and bulk actions, consolidating them into a unified layout. Users will now see consistent UI controls, such as 'Add Circuit' buttons on provider and circuit type pages, and the provider detail view now uses the generic object structure with standardized controls and iconography.
netbox/templates/circuits · high confidence
Circuits model schema modernization and virtual circuit support
The circuits application database schema has been significantly updated to support new capabilities and improve data integrity. A new Virtual Circuit model family (VirtualCircuit, VirtualCircuitTermination, VirtualCircuitType) has been introduced, allowing users to track logical circuits without physical provider connections. Existing Circuit models now support distance tracking (distance, distance\_unit, \_abs\_distance) and can be assigned to CircuitGroups. The Provider model has been refactored to remove deprecated contact fields in favor of a new ProviderAccount model, and all major circuit-related models now support an Owner field for access control. Additionally, CircuitTermination caching has been enhanced with denormalized location/region/site fields, GFK indexes for performance, and stricter null-handling for cable\_end and cable profile data to prevent validation errors.
netbox/circuits/migrations · high confidence
Cluster detail view now includes direct actions for adding VMs and assigning devices
The cluster detail page now provides explicit buttons to add a new virtual machine or assign an existing device to the cluster, contingent on the user having the appropriate permissions. This replaces the previous layout where these actions were likely less prominent or required navigation through separate tabs, streamlining the workflow for managing cluster resources directly from the object view.
netbox/templates/virtualization/cluster · high confidence
Core model schema updates for jobs, data sources, and configuration revisions
This release updates the core database schema to support new operational features. Background jobs now track execution time, queue names, and user-configurable notifications, while also supporting optional object associations and storing log entries. Data sources can now be assigned owners and include a dedicated permission to synchronize remote data. Configuration revisions are tracked with an explicit active flag to prevent inaccurate activation, and the ObjectType model has been converted from a proxy to a concrete model to store public status and feature flags. Additionally, object change logging has been moved to the core app and now supports recording user messages.
netbox/core/migrations · high confidence
Customize Django form widget rendering templates
The system now uses custom templates for rendering standard Django form widgets (input, select, textarea, checkbox, and file input) within the admin UI. These templates enforce consistent Bootstrap CSS classes (e.g., \form-control\, \form-select\) and handle specific behaviors such as ensuring unchecked checkboxes submit empty values and restricting the 'clear' button on file inputs to non-required fields. This change replaces the default Django widget rendering to align with the application's UI framework.
netbox/templates/django · high confidence
DCIM REST API modernized with ViewSets, routing, and expanded endpoints
The DCIM REST API has been refactored from legacy Django REST Framework generic views to a modern ViewSet-based architecture using the NetBoxRouter. This change consolidates URL routing, standardizes API behavior across all DCIM models, and significantly expands the API surface to include new resources such as locations, rack types, rack roles, module types, module bay types, cable bundles, cooling infrastructure (sources/feeds), and virtual device contexts. Additionally, the API now exposes dedicated endpoints for cable tracing (including SVG rendering) and pass-through port paths, while removing obsolete endpoints like the separate rack units list and legacy interface connections.
netbox/dcim/api · high confidence
DCIM REST API serializers refactored into modular package
The DCIM API serializers have been reorganized from a single monolithic file into a structured \serializers\_\ package. This change introduces dedicated modules for specific domains—such as \cables.py\ (supporting cable bundles and profiles), \cooling.py\ (modeling cooling infrastructure), \devices.py\ (including nested module support and NAT/DNS fields on IPs), and \device\_components.py\ (handling port mappings and MAC address shortcuts)—along with shared base classes and mixins. For users, this represents a structural improvement to the API layer that enables more granular feature support (like cable bundles and cooling feeds) and fixes serialization behaviors (such as nullable fields and stale cable path handling) without altering the external API contract.
netbox/dcim/api/serializers\ · high confidence_
DCIM database schema consolidated and modernized via squashed migrations
The DCIM application's database history has been consolidated into a series of squashed migrations (0001 through 0191), replacing the previous linear migration chain. This update introduces several structural changes to the data model: it adds a new RackType model to define reusable rack specifications, supports nested ModuleBays for hierarchical module organization, and introduces a facility field to Locations. It also expands device and rack attributes with airflow, latitude/longitude, and out-of-band IP fields, while removing deprecated Napalm integration fields from Platforms. To improve performance and data integrity, the schema now includes specific database indexes for generic foreign keys, enforces stricter constraints on child interfaces, and increases the integer range for virtual chassis positions.
netbox/dcim/migrations · high confidence
Dark mode styling for cable trace and rack elevation SVGs
The cable trace and rack elevation SVG visualizations now support dark mode. New SCSS files define CSS variables for background colors, text, slots, and connections, switching to darker palettes when the system theme is set to dark. This ensures these diagrams remain readable and visually consistent with the rest of the interface in dark mode.
netbox/project-static/styles/svg · high confidence
Declarative UI panels for Users, Tokens, and Permissions
The Users interface now uses a declarative layout system to define object attributes and panels. This change introduces specific panels for Tokens (displaying version, key, allowed IPs, and example usage), Users (showing username, full name, and login status), Object Permissions (including a dedicated actions panel that reflects registered CRUD and custom actions), and Owners. This replaces previous imperative rendering logic with structured attribute definitions, improving consistency and extensibility of the user-facing details views.
netbox/users/ui · high confidence
Declarative UI panels for virtualization objects
The Virtualization app now uses a declarative layout system to define the attributes displayed in object detail views. New panel classes have been introduced for Clusters, Virtual Machine Types, Virtual Machines, Virtual Disks, and VM Interfaces, specifying exactly which fields (such as name, status, role, platform, and IP addresses) are shown and how they are rendered (e.g., as linkified related objects, nested hierarchies, or templated attributes). This replaces the previous implicit or code-based view logic with explicit configuration files that control the user interface presentation for these resources.
netbox/virtualization/ui · high confidence
Device type component management UI refreshed with Tabler CSS
The device type detail page now uses a new base template that extends the generic object layout, providing a refreshed user interface powered by the Tabler CSS framework. This change updates the visual styling of the 'Add Components' dropdown menu, which allows users to add various device type components (such as console ports, power ports, interfaces, and cooling intakes) directly from the device type view.
netbox/templates/dcim/devicetype · high confidence
Device type library schema now includes RF role for interfaces
The generated JSON schema for the device type library has been updated to include the 'rf\_role' property within the 'interface' definition. This change ensures that the schema accurately reflects the available RF role choices for network interfaces, allowing validation tools and consumers to correctly handle this specific attribute when working with device type data.
netbox/templates/extras/schema · high confidence
Enhanced error pages with actionable troubleshooting guidance
The exception templates for import errors, permission errors, and programming errors have been replaced with new, user-friendly pages that provide specific troubleshooting steps. The import error page now advises checking for missing packages listed in requirements.txt and verifying WSGI service restarts. The permission error page displays the configured media root path to help users verify file access rights. The programming error page guides users on running database migrations and explicitly states the requirement for PostgreSQL version 15 or later, including a SQL query to verify the database version.
netbox/templates/exceptions · high confidence
Extras panels adopt the new declarative UI layout
The templates for extras-related detail panels (including Config Context, Custom Fields, Event Rules, Image Attachments, Notification Groups, Saved Filters, Table Configurations, and Tags) have been migrated to the new declarative UI layout. These templates now extend the shared base template \ui/panels/\_base.html\ and use consistent Bootstrap components (such as \table-hover\, \list-group\, and badges) to render their content, ensuring a uniform visual style and structure across the extras section of the application.
netbox/templates/extras/panels · high confidence
IP Range IP Addresses view now uses generic object children template
The IP addresses view for IP Ranges has been updated to use the new generic object children template. This change standardizes the UI for listing child objects and adds a contextual 'Add IP Address' button that pre-fills the address field with the first available IP from the range, streamlining the process of assigning new addresses within an existing range.
netbox/templates/ipam/iprange · high confidence
IPAM database schema modernization and new VLAN features
This release introduces significant structural changes to the IPAM database schema to support new capabilities and improve performance. VLAN Groups now support flexible ID ranges via a new ArrayField instead of fixed min/max integers, and can be assigned to Tenants. Prefixes have moved from a single Site link to a generic Scope (GenericForeignKey) allowing assignment to Regions, Sites, or Locations, with denormalized fields for faster hierarchy lookups. Services are now linked to Devices or Virtual Machines via a generic parent relationship rather than separate foreign keys. The schema also adds support for Q-in-Q VLANs, VLAN translation policies, and IP ranges with a 'mark populated' flag. Performance is improved by adding GiST indexes for prefix containment queries and indexes on GenericForeignKey fields, while L2VPN models have been migrated to the VPN app.
netbox/ipam/migrations · high confidence
IPAM models restructured into modular files with new ASN and FHRP capabilities
The IPAM models have been reorganized from a single monolithic file into separate modules (asns, fhrp, ip, services, vlans, vrfs) to improve maintainability and import ordering. This change introduces new ASN and ASNRange models with ASDOT notation support, refactors FHRP groups to use GenericRelations for cleaner IP and service associations, and updates the Service model to support multiple protocols per service via a new port\_mappings ArrayField. Additionally, VLANGroup now uses IntegerRangeField for VID ranges and exposes total\_vlan\_ids, while VRF and RouteTarget models are consolidated in their own module.
netbox/ipam/models · high confidence
IPAM tables restructured into modular files with new service port mapping and ASN display columns
The IPAM table definitions have been reorganized from a single monolithic file into separate modules (asn, fhrp, ip, services, vlans, vrfs) to improve maintainability. In the services tables, the single protocol column has been replaced by a 'Port Mappings' column that supports multiple protocols per service, while preserving the 'ports' column key for backward compatibility with saved table configurations. ASN tables now include dedicated ASDOT notation columns (start\_asdot, end\_asdot, asn\_asdot) for display, and VLAN tables have been extended to show Q-in-Q roles, SVLANs, and L2VPN associations.
netbox/ipam/tables · high confidence
IPAM templates migrated to declarative generic layouts
The IPAM application's user interface has been standardized by replacing custom, hand-written Bootstrap 3 templates with a unified set of generic object templates (such as \generic/object.html\ and \generic/object\_edit.html\). This change removes dozens of individual view templates for aggregates, prefixes, VLANs, VRFs, and IP addresses, consolidating them into a consistent layout system that handles details, lists, edits, and bulk operations uniformly across the IPAM module.
netbox/templates/ipam · high confidence
IPAM templates refactored to support bulk creation and new filtering controls
The IPAM include templates have been restructured to introduce bulk creation capabilities and new filtering options. New tab headers for IP addresses, prefixes, and VLANs now include a 'Bulk Create' tab when adding new objects, allowing users to create multiple records at once. Additionally, new dropdown controls have been added to filter prefixes by 'Max Depth' and 'Max Length', and a toggle has been introduced to switch between showing assigned, available, or all IP addresses. The legacy table and header templates using Bootstrap 3 components and Glyphicons have been removed in favor of this new structure.
netbox/templates/ipam/inc · high confidence
IPAM views migrate to declarative attribute layouts
The IPAM section now uses a new declarative template system for displaying object attributes. New template files have been added for specific attributes such as aggregate utilization, VRF details, IP range utilization, service IP addresses, and VLAN group ID ranges. This change standardizes how these details are rendered in the UI, replacing previous inline or view-specific logic with reusable, declarative components.
(repo-wide) · high confidence
Improved cable path accuracy indicators and location filter for rack reservations
Users can now see whether the displayed cable length is accurate or not, with changes to the CablePath class and related templates to indicate this status. Additionally, a region filter has been added to the rack reservations list view, allowing users to filter rack reservations by region.
netbox/dcim · high confidence
Improved display of NAT relationships on IP address details
The IP address detail view now renders NAT (Network Address Translation) relationships using new, declarative template attributes. The 'Inside' NAT address is displayed with its assigned object context, while the 'Outside' NAT list is limited to the first 10 entries to improve page load performance and readability, with a link provided to view the complete filtered list if more than 10 exist.
netbox/templates/ipam/ipaddress · high confidence
Improved display of primary IP addresses with NAT mappings
The Virtual Machine attributes view now correctly displays the primary IP address alongside its associated NAT (Network Address Translation) mappings. If a primary IP has an inside NAT address, it is shown as 'NAT for \[address\]'; if it has outside NAT addresses, they are listed as 'NAT: \[addresses\]'. This change resolves a UI bug where NAT information was not properly rendered for VMs.
netbox/templates/virtualization/virtualmachine/attrs · high confidence
Initial VPN schema and L2VPN migration
This change introduces the initial database schema for the new VPN application, creating models for IKE and IPSec proposals and policies, IPSec profiles, and tunnel groups. It also migrates the L2VPN and L2VPNTermination models from the IPAM application into VPN, including the necessary table and index renames. Subsequent migrations in this set relax validation requirements for IKE/IPSec algorithms, allow multiple tunnel terminations per IP address, switch name sorting to natural collation, add a status field to L2VPNs, assign object ownership to VPN models, and clean up redundant database indexes.
netbox/vpn/migrations · high confidence
Introduce config context caching with background invalidation
The extras app now caches rendered config context data on Device and VirtualMachine objects to improve performance. When related data changes, the cache is synchronously invalidated and a background job is enqueued to re-render the contexts, ensuring consistency without blocking the request.
netbox/extras · high confidence
Introduce declarative UI layout system
The NetBox user interface now uses a new declarative layout system, replacing the previous template-based approach. Users will see object views rendered via a structured hierarchy of Layouts, Rows, and Columns, with content organized into Panels. This change introduces new breadcrumb support for navigation trails, panel actions (such as 'Add' and 'Copy Content'), and a richer set of attribute renderers (attrs) that handle data display more consistently. The UI is now more modular, allowing for better customization and plugin integration through the new component architecture.
netbox/netbox/ui · high confidence
Introduce declarative UI panel definitions for extras objects
The extras UI now uses a new declarative panel system, defined in netbox/extras/ui/panels.py, to render object details. This change introduces specific panel classes for custom fields (including behavior and validation attributes), image attachments, tags, and object types, replacing previous template-based implementations with structured Python classes that handle context and rendering logic.
netbox/extras/ui · high confidence
Introduce dedicated account app with UserToken model
A new 'account' application has been introduced to NetBox, containing its own initial migration (0001\_initial.py). This migration creates a 'UserToken' model that acts as a proxy for the existing 'users.token' model, effectively moving token management responsibilities into this new dedicated app. The migration depends on the squashed users migrations, ensuring proper database schema ordering.
netbox/account/migrations · high confidence
Introduce dynamic configuration system with centralized parameter definitions
The configuration system has been refactored to support dynamic settings stored in the database via ConfigRevision, replacing static settings.py overrides. This change introduces a new \Config\ class that loads parameters from cache or the database, falling back to defaults defined in \parameters.py\. Users will now see new configurable options such as \DEFAULT\_USER\_PREFERENCES\, \ALLOWED\_URL\_SCHEMES\, \PAGINATE\_COUNT\, \MAX\_PAGE\_SIZE\, \RACK\_ELEVATION\ dimensions, \POWERFEED\ defaults, and \CHANGELOG\_RETENTION\ (defaulting to 90 days). The system also includes performance optimizations by caching the configuration state to avoid per-request database queries when no revision exists.
netbox/netbox/config · high confidence
Introduces a declarative panel component system for the UI
The UI templates now use a new set of reusable panel components located in netbox/templates/ui/panels. A base panel template (\_base.html) provides a consistent card layout with optional headers and actions, which is extended by specific panels for displaying comments, JSON data, object attributes, related objects, and tables (including context and embedded tables). This change standardizes how these data blocks are rendered across the application, replacing previous ad-hoc implementations with a unified, declarative structure.
netbox/templates/ui/panels · high confidence
Major overhaul of user, group, and permission data models
The users application database schema has been significantly restructured to improve data integrity and support new capabilities. The User table has been moved from the legacy 'auth\_user' name to 'users\_user' with a 64-bit ID, and the Group model has been replaced by a dedicated 'users.Group' model, migrating existing data and updating all related CustomField references. Object permissions have been refactored so that assignments are now managed directly on User and Group models rather than on the ObjectPermission model itself. Additionally, the Token model has been upgraded to version 2, introducing support for enabling/disabling tokens, a new key format with HMAC digests, and a 'pepper\_id' field, while legacy Django admin log tables are cleaned up.
netbox/users/migrations · high confidence
Migrate DCIM detail view panels to new UI layout
The DCIM detail views for devices, racks, interfaces, and modules now use a new modular panel system. This change introduces dedicated template files for specific data sections—including cable connections, power utilization, virtual chassis members, and module type attributes—replacing previous inline layouts. Users will see these components rendered within a consistent, standardized panel design that improves visual hierarchy and accessibility across the DCIM interface.
netbox/templates/dcim/panels · high confidence
Migrate IPAM views to declarative layouts
The IPAM application views have been migrated to use the new declarative layout system. This change introduces a set of new UI components in the \netbox/ipam/ui\ package, including \attrs.py\ for defining object attributes (such as VRF display with optional route distinguisher support) and \panels.py\ for defining structured object panels (covering VRFs, Route Targets, RIRs, ASNs, Aggregates, IP Ranges, IP Addresses, Prefixes, VLANs, and FHRP Groups). Users will see these IPAM objects rendered using the updated declarative layout framework, which standardizes the presentation of attributes and related data across the IPAM module.
netbox/ipam/ui · high confidence
Migrate circuits API to NetBoxModelViewSet and NetBoxRouter
The circuits API endpoints have been refactored to use the standard NetBoxModelViewSet and NetBoxRouter infrastructure. This change replaces the previous generic DRF view classes and manual URL patterns with a unified viewset-based approach, applying consistent filtering, serialization, and routing behavior across all circuits-related resources (Providers, Circuits, Circuit Terminations, Groups, and Virtual Circuits).
netbox/circuits/api · high confidence
Migrate legacy Webhooks to Event Rules and refactor Custom Field visibility controls
This update introduces Event Rules as a generalized replacement for Webhooks, automatically migrating existing Webhook configurations into Event Rules with Webhook actions while removing the now-obsolete Webhook trigger fields (such as type\_create, type\_update, and conditions) and adding a description field. It also refines Custom Field user interface controls by replacing the single 'ui\_visibility' field with granular 'ui\_visible' and 'ui\_editable' settings, ensuring existing visibility preferences are correctly mapped to the new structure.
netbox/extras/migrations · high confidence
Migrate user-facing templates to declarative layouts
The user interface templates for Users, Groups, Object Permissions, Owners, and API Tokens have been replaced with new files that extend the generic 'object.html' and 'object\_edit.html' base templates. This change removes the previous custom Bootstrap 3-based layouts (such as the old profile, user key, and password change pages) in favor of a standardized, declarative structure. For API tokens, this migration includes specific UI behaviors: a deprecation warning for v1 tokens is now conditionally displayed based on the selected version, and the 'Create & Add Another' button is omitted to ensure the one-time plaintext token string is visible before navigation.
netbox/templates/users · high confidence
Migrate web UI to Tabler CSS framework and Tom-Select
The NetBox web interface has been restyled to use the Tabler CSS framework, replacing the previous styling system. This change introduces a new font stack (Inter and Roboto Mono), updates the primary brand color to dark teal, and integrates Tom-Select for dropdown controls. To ensure a smooth transition for existing templates, a set of transitional styles has been added to maintain compatibility with the previous UI appearance while adopting the new framework's components and layout utilities.
netbox/project-static/styles · high confidence
Migration to Transifex CLI configuration format
The project has replaced its legacy Transifex client configuration with a new \.tx/config\ file tailored for the Transifex CLI client. This change updates the resource slug and defines the translation file paths, ensuring that translation resources are correctly mapped between the local \netbox/translations\ directory and the Transifex platform.
.tx · high confidence
New UI layout for tenancy objects
The tenancy module now uses a new UI layout system. Tenant and Contact objects are rendered using new panel definitions that display specific attributes (such as group, description, name, contact details, and address) using the new NetBox UI attribute components.
netbox/tenancy/ui · high confidence
New and updated UI templates for extras features
The NetBox web interface now includes dedicated templates for managing object journals, viewing object changelogs with retention details, and inspecting object configuration contexts (including local and source contexts). Script management has been updated with new list, execution, and result views that support HTMX-based polling, log threshold filtering, and table configuration. Additionally, a new view allows users to render and download configuration templates with debug error support, and image attachments are now displayed in a responsive grid with fallback placeholders. Table configuration editing has also been standardized with a new form interface.
netbox/templates/extras · high confidence
New attribute display templates for Interface and PowerFeed details
The Interface and PowerFeed detail views now use dedicated, reusable templates for rendering specific attributes. For Interfaces, the MAC address is displayed in a monospace font with a 'Primary' badge, and speed is shown using a human-readable format. For PowerFeeds, the connected device is now linked with its name, and utilization is displayed as allocated versus available power (VA) with a visual progress graph when applicable. These changes improve the consistency and readability of attribute data in the DCIM section.
netbox/templates/dcim/interface, netbox/templates/dcim/powerfeed · high confidence
New attribute display templates for core models
This change introduces specific HTML templates for rendering attribute values in the DataFile, DataSource, and ObjectChange models. DataFile now displays size values with a 'bytes' label. DataSource attributes now render ignore rules in a pre-formatted block and conditionally link source URLs for non-local types. ObjectChange views now provide enhanced details: the changed object is linked if possible, the request ID is a clickable link to a filtered list, and the user field displays the full name alongside the username when available.
netbox/templates/core/datafile, netbox/templates/core/datasource, netbox/templates/core/objectchange, netbox/templates/extras/configtemplate, netbox/templates/extras/eventrule, netbox/templates/extras/tag · high confidence
New core forms for data sources, jobs, and configuration revisions
This change introduces a new \netbox/core/forms\ package that centralizes form definitions for core NetBox resources. Users will see dedicated bulk-edit, import, and filter forms for Data Sources (including owner group filtering), Jobs (with scheduling, execution time, and user filters), and Object Changes. Additionally, the Config Revision form now dynamically generates fields for all configuration parameters, grouping them into logical sections like Rack Elevations, Power, and Security, while the DataSource form supports dynamic backend-specific parameters via HTMX.
netbox/core/forms · high confidence
New declarative UI attribute templates for consistent rendering
The UI rendering engine now uses a new set of declarative template files for attribute types, replacing previous inline or ad-hoc rendering methods. This change introduces dedicated templates for displaying addresses with map links, boolean values as checkmarks, choices as colored badges, colors as swatches, dates/times, generic and nested objects with breadcrumb navigation, GPS coordinates, images with lazy-loading and decoding options, measurements, numeric values with copy-to-clipboard buttons, object lists, plain text with copy support, timezones with local time conversion, and utilization graphs. Users will see more consistent styling, interactive features like clipboard copying for text/numeric fields, and enhanced visual indicators (badges, breadcrumbs) for related objects across the NetBox interface.
netbox/templates/ui/attrs · high confidence
New declarative UI panels for DCIM objects
The DCIM interface now uses a new set of declarative panel classes (defined in \netbox/dcim/ui/panels.py\) to render object details. This introduces structured attribute displays for Sites, Locations, Racks (including dimensions, weight, role, and reservations), Devices (including management IPs, type details, and dimensions), and Device Types. Users will see these specific attributes organized into labeled sections on the respective object views, replacing the previous template-based rendering with a consistent, code-defined layout.
netbox/dcim/ui · high confidence
New global search engine with deferred caching and advanced matching
This change introduces a new global search subsystem that replaces the previous implementation. It adds support for displaying additional object attributes in search results, enables partial and regular expression matching for non-string types (including IP addresses), and allows sorting on object fields. To improve performance and stability, the system now defers search cache updates to background jobs, caches model-specific custom field lookups, and tolerates undefined columns during deferred search flushes.
netbox/netbox/search · high confidence
New tabbed interface for report details with source and job views
The report detail page now uses a tabbed layout (powered by the Tabler CSS framework) to organize content into three sections: the main report view, a new 'Source' tab that displays the report's Python code, and a 'Jobs' tab that lists execution history. This restructuring replaces the previous single-page view, allowing users to easily switch between report metadata, the underlying script source, and associated job records.
netbox/templates/extras/report · high confidence
New table rendering infrastructure in netbox/tables
The netbox/netbox/tables directory now contains the core table rendering logic, including BaseTable and NetBoxTable classes, a comprehensive set of custom columns (such as BooleanColumn, CustomFieldColumn, and ActionsColumn), and template code for global search results. This change introduces user-configurable column preferences, automatic prefetching of related objects to improve performance, and standardized rendering for dates, times, and custom fields across the application.
netbox/netbox/tables · high confidence
New templates for tenancy attribute rendering and object contacts
The tenancy module now includes dedicated templates for rendering specific attribute types (email, link, and phone) as clickable elements, and introduces a new object\_contacts template to manage contact assignments for objects. Additionally, the tenant group view template has been updated to include a direct 'Add Tenant' button, streamlining the creation of tenants within a group context.
netbox/templates/tenancy · high confidence
Preserve filter parameters during bulk component addition
The bulk add components button in the virtualization interface now preserves active filter parameters when adding virtual machine interfaces or virtual disks. This ensures that users remain on the correct filtered view after performing bulk operations, rather than being redirected to an unfiltered list.
netbox/templates/virtualization/buttons · high confidence
Preserve filter parameters during bulk device operations
The bulk action buttons for adding components (such as console ports, power outlets, interfaces, and cooling intakes) and disconnecting connections now automatically append the current URL query parameters to the action links. This ensures that when users perform these bulk operations, the existing filter context is maintained, preventing the loss of applied filters and keeping the user on the same view state after the action completes.
netbox/templates/dcim/buttons · high confidence
Python 3 migration and new secret key generation tool
The NetBox management script (manage.py) has been updated to use the Python 3 interpreter via its shebang line, ensuring compatibility with modern Python environments. Additionally, a new utility script (generate\_secret\_key.py) has been introduced to generate random 50-character strings for the SECRET\_KEY setting, replacing the previous practice of using a static example key and improving security by increasing randomness in key generation.
netbox · high confidence
Rack detail page UI restructured with new navigation and tabbed sections
The Rack detail view has been redesigned to use a new base template that includes a navigation bar for moving between previous, peer, and next racks. Additionally, the interface now utilizes a tabbed layout to separate content, specifically moving rack reservations and non-racked devices into their own distinct sections with dedicated 'Add' buttons for each.
netbox/templates/dcim/rack · high confidence
Rebuilt model base classes and deletion handling
The model layer has been restructured to introduce a new \NetBoxModel\ base class that composes a set of feature mixins (such as ChangeLogging, Cloning, CustomFields, and Tags) and a \BaseModel\ that enforces stricter validation for GenericForeignKeys and coerces empty strings to null on unique nullable CharFields. Deletion behavior has been overhauled with a custom \ConfirmCollector\ that counts high-cardinality job relations instead of loading them into memory, preventing out-of-memory errors during delete confirmations, and a \CustomCollector\ that ensures correct cascading deletion order for GenericRelations. Additionally, hierarchical models now support PostgreSQL \ltree\ as a replacement for MPTT, providing new lookup classes for ancestor/descendant queries.
netbox/netbox/models · high confidence
Redesigned UI layout with HTMX, dark mode, and mobile support
The NetBox web interface has been completely overhauled to use the Tabler CSS framework, introducing a sticky top navbar, a collapsible sidebar, and responsive layouts for mobile devices. The new base templates integrate HTMX for asynchronous navigation, support automatic dark/light mode switching based on system preferences, and include features like global search, version display in the nav menu, and configurable maintenance banners. Error pages (40x) now use the new card-based layout, and plugin extensions can inject content into the head, navbar, and footer areas.
netbox/templates/base · high confidence
Redesigned cable trace UI with modular templates and enhanced details
The cable trace view has been completely redesigned to improve readability and provide more context. The UI now uses modular templates for specific components (cables, devices, circuits, terminations, etc.), displaying detailed information such as cable labels, types, lengths with units, and status badges. Device nodes now explicitly show the manufacturer, device type, site, location, and rack. Circuit traces include the provider name. Cable entries now display associated tags. The visual style distinguishes connected cables with solid borders and non-connected ones with dashed borders, while white cables are rendered in gray for visibility. A new 'Attachment' node type is supported. All text is now translatable, and links are applied to key entities for easy navigation.
netbox/templates/dcim/trace · high confidence
Redesigned circuit termination display and management UI
The circuit termination section of the web interface has been completely rewritten to use a modern card-based layout with Material Design icons, replacing the previous table-based rendering. This change introduces dedicated templates for displaying termination details, including explicit support for custom fields with tooltips, tag display, and a unified connection management panel. Users can now view termination points, cable connections (with trace and edit actions), and speed information in a structured table within the card, while also having direct access to add, edit, or delete terminations via action buttons. The old table templates for circuits and providers have been removed as part of this consolidation.
netbox/templates/circuits/inc · high confidence
Redesigned custom script result display with HTMX and ISO 8601 formatting
The custom script result view has been rewritten to use HTMX for dynamic content loading and updated to display all dates and times in ISO 8601 format. The new interface provides a clearer summary of job status, including start time, scheduled time, and duration, alongside a dedicated section for test results and script output. Users can now download or copy script output directly from the result page, and the log view is loaded asynchronously via HTMX for improved performance.
netbox/templates/extras/htmx · high confidence
Redesigned error pages and alert components with modern UI
The NetBox web interface now features a complete visual overhaul for error handling and system notifications. Custom 403 (Access Denied) and 404 (Page Not Found) pages have been introduced to provide clearer, branded feedback when users encounter permission or routing issues. The server error (500) page has been significantly enhanced to display detailed troubleshooting information, including the specific exception, Python and NetBox versions, and installed plugin details, aiding administrators in diagnosing failures. Additionally, a new set of reusable alert components (danger, info, success, warning) has been added to standardize the appearance of system messages, and a dedicated media failure page now guides users through static file configuration when resources fail to load.
netbox/templates · high confidence
Redesigned form rendering with tabbed groups and inline fields
The form helper templates have been replaced with a new rendering system that supports tabbed field groups, inline side-by-side fields, and static object attributes. Users will now see custom fields organized into named groups, form errors displayed inline with their respective fields, and a 'Set Null' option for nullable fields in bulk edit forms. The layout also includes a copy-to-clipboard button for API tokens and a 'Regenerate Slug' button for slug fields, while meta fields are rendered in a distinct highlighted section.
_netbox/utilities/templates/form\helpers · high confidence
Redesigned navigation menu with mobile search and HTMX support
The navigation menu has been completely rewritten to support a modern UI structure, including a new mobile search box that appears on smaller screens and improved styling for sidebar action buttons. The template now leverages HTMX for navigation interactions and includes accessibility improvements such as proper ARIA labels for menu items and keyboard navigability. This change replaces the previous navigation implementation with a cleaner, more responsive design that integrates with the Tabler CSS framework.
netbox/utilities/templates/navigation · high confidence
Redesigned object list filtering and table controls with HTMX support
The object list interface has been overhauled to replace the legacy filter panel with a modern, card-based filter form that groups fields into fieldsets and supports custom fields. Table controls now feature a live quick-search bar that updates results via HTMX without full page reloads, alongside a dedicated table configuration menu for saving column preferences. Pagination and sorting are also handled via HTMX, providing a smoother, asynchronous user experience for navigating large datasets.
netbox/templates/inc · high confidence
Redesigned prefix detail views with new child object controls
The prefix detail page has been restructured to use a new template hierarchy, introducing dedicated child views for IP addresses, IP ranges, and sub-prefixes. These views now feature an 'Add' button that automatically pre-fills the creation form with the first available address or prefix from the parent scope, along with VRF and tenant context. The sub-prefix view additionally includes controls to toggle availability and filter by maximum length and depth, while the main prefix view provides a modal dialog displaying detailed network information such as network address, mask, and broadcast address for IPv4 prefixes.
netbox/templates/ipam/prefix · high confidence
Redesigned script detail view with dedicated tabs and improved error handling
The script detail interface has been restructured to use a tabbed layout, allowing users to easily switch between the main script view, the source code, and the execution history (Jobs). The new design displays the script's Python class name and description prominently, while the Jobs tab now includes a badge showing the count of associated jobs. Additionally, the source view provides clearer feedback when a script cannot be loaded, displaying specific error messages from the module instead of a generic failure.
netbox/templates/extras/script · high confidence
Redesigned script list and config context display with format toggling
The script list widget and config context data views have been updated to improve usability and consistency. The script list now correctly displays the 'Edit' button for script modules, shows the 'Last Run' time accurately, and includes a copy button for config context data. Users can now toggle the display format of config contexts between JSON and YAML via a new toggle component, with JSON set as the default to maintain existing behavior. Additionally, the script list widget now renders correctly in embedded views, and empty table headers are properly labeled for accessibility.
netbox/templates/extras/inc · high confidence
Refactor IPAM API into modular serializers and modernized routing
The IPAM REST API has been restructured to improve maintainability and consistency. Serializers are now organized into a dedicated subpackage (netbox/ipam/api/serializers\_) rather than defined in a single monolithic file, and a new module (field\_serializers.py) introduces custom DRF fields for validating IP addresses and networks. API routing has been standardized using the NetBoxRouter, replacing manual URL patterns with declarative viewset registrations for all IPAM resources. Additionally, the views now leverage the shared NetBoxModelViewSet and apply advisory locks to the available-IPs endpoints to prevent race conditions during concurrent IP provisioning.
netbox/ipam/api · high confidence
Refactor circuits API serializers into dedicated module
The REST API serializers for the Circuits app have been reorganized from a single monolithic file into a structured package under \netbox/circuits/api/serializers\_\. This change introduces separate modules for circuit definitions (\circuits.py\), provider details (\providers.py\), and nested representations (\nested.py\), while removing the legacy \provider\_network\ field from \CircuitTerminationSerializer\ and \CircuitCircuitTerminationSerializer\ to resolve circular import issues and clean up the API contract.
netbox/circuits/api/serializers\ · high confidence_
Refactor extras tables into modular column and table definitions
The table definitions in the extras module have been reorganized into dedicated files (columns.py and tables.py) with a new \_\init\\_.py entry point. This change introduces new column types, specifically CustomFieldStatusColumn for displaying custom field status icons and NotificationActionsColumn for notification-specific actions, and updates existing tables like CustomFieldTable to use these new components and reflect model changes such as the 'status' field.
netbox/extras/tables · high confidence
Refactor tenancy REST API serializers to use nested representations
The tenancy API serializers for Contacts and Tenants have been restructured to utilize nested serializer representations instead of dedicated nested API endpoints. ContactGroup and TenantGroup now include a 'parent' field referencing their respective nested serializers, while Contact and Tenant serializers expose nested group objects. This change consolidates the API structure by embedding related object details directly in responses, aligning with the deprecation of separate nested serializers and simplifying how users interact with hierarchical tenancy data.
netbox/tenancy/api/serializers\ · high confidence_
Refactored DCIM component templates and introduced lazy-loaded rack elevations
The DCIM interface templates have been refactored to improve modularity and performance. Several legacy partials for device components (console ports, interfaces, power ports/outlets, IP addresses) and bulk action tables have been removed in favor of new, consolidated include files: \cable\_termination.html\ for displaying termination details, \connection\_endpoints.html\ for path status, \endpoint\_connection.html\ for connection status, and \interface\_vlans\_table.html\ for VLAN assignment. Additionally, the rack elevation view now utilizes HTMX for lazy loading, fetching the SVG representation only when the element intersects the viewport, and includes a direct download link for the SVG.
netbox/templates/dcim/inc · high confidence
Refactored IPAM forms into modular components with new bulk creation and port mapping support
The IPAM forms have been reorganized into distinct modules (bulk\_create, bulk\_edit, bulk\_import, fields, filtersets, model\_forms, widgets) to improve maintainability. This change introduces bulk creation capabilities for IP networks and VLANs, allowing users to generate multiple objects via pattern or ID ranges. It also adds support for multiple protocols per application service through a new PortMappingField and widget, enabling users to define complex port mappings via a dynamic UI. Additionally, the refactoring standardizes form rendering using FieldSets and TabbedGroups, and updates bulk import/edit forms to support new fields like owner groups and improved scope handling for VLANs and prefixes.
netbox/ipam/forms · high confidence
Refactored REST API serializers with dynamic field selection and explicit tag management
The REST API serializer layer has been restructured into a modular base system (base, features, generic, nested, bulk, models) that introduces several behavioral changes for API consumers. Users can now request specific subsets of fields or omit fields entirely via the new \fields\ and \omit\ parameters, with nested objects defaulting to a brief representation. Tag assignment now requires explicit \add\_tags\ and \remove\_tags\ fields for incremental updates, replacing the previous \tags\ field behavior, and validation prevents specifying both \tags\ and the add/remove fields simultaneously or including \remove\_tags\ during object creation. Additionally, bulk operations now return structured error responses detailing failures per object, and the API schema has been updated to reflect these changes, including the removal of \RelatedObjectCountField\ from nested outputs.
netbox/netbox/api/serializers · high confidence
Refactored REST API structure and enhanced custom field handling
The REST API implementation in the extras app has been reorganized: the main serializers module now imports from a new subpackage (serializers\_), and a new customfields module introduces a CustomFieldsDataField that validates custom field inputs, rejects unknown fields, and normalizes URL values. Additionally, a new mixins module adds a ConfigTemplateRenderMixin that provides a /render-config/ endpoint for devices and virtual machines, allowing users to render configuration templates via the API with appropriate permission checks.
netbox/extras/api · high confidence
Refactored REST API viewsets with ETag support and structured bulk error reporting
The REST API viewsets have been refactored to introduce ETag support for caching and conditional requests, enforce object-based permissions more strictly, and provide consistent, structured error details for bulk operations. Users can now leverage weak ETags for efficient caching of API responses, while bulk create, update, and delete operations return detailed per-object error information, including handling of duplicate IDs and validation failures, improving the clarity of API feedback for complex operations.
netbox/netbox/api/viewsets · high confidence
Refactored device attribute display templates for IP, parent device, and rack
The device attribute rendering logic has been restructured into dedicated template files (ipaddress.html, parent\_device.html, rack.html) to improve modularity and fix display issues. For IP addresses, the view now explicitly distinguishes between primary and NAT IPs, showing the NAT relationship clearly. The parent device and rack attributes now include breadcrumb navigation and buttons to highlight the device's position within its rack, enhancing usability for users managing physical infrastructure.
netbox/templates/dcim/device/attrs · high confidence
Refactored device component views to use generic templates
The device interfaces list and base device view have been updated to extend generic object templates (generic/object.html and generic/object\_children.html). This change standardizes the layout and controls for device components, ensuring consistent breadcrumb navigation and table control rendering across the application.
netbox/templates/dcim/device · high confidence
Refactored form widget architecture and introduced new interactive components
The form widget module has been reorganized into distinct files (apiselect, datetime, generic, misc, modifiers, select) to improve maintainability. This change introduces several new capabilities: APISelect widgets now support dynamic and static query parameters for more flexible data fetching; HTMXSelect widgets now support multiple HTTP methods (GET, POST, PUT, PATCH, DELETE) for partial form re-rendering; a new FilterModifierWidget allows users to select lookup operators (e.g., 'Is', 'Contains') for filter fields; and new widgets like NumberWithOptions, SlugWidget, and MarkdownWidget enhance the editing experience for specific field types. Additionally, generic object selection is now handled by a composite GenericObjectSelect widget.
netbox/utilities/forms/widgets · high confidence
Refactored tenancy tables into modular components with enhanced contact assignment views
The tenancy table definitions have been reorganized into a modular structure (columns, contacts, tenants) to improve maintainability. The ContactAssignment table now exposes detailed contact attributes (title, phone, email, address, link, description) and groups directly, with phone numbers rendered as active links. Contact and ContactGroup tables now include comments fields, and the Contact table displays associated groups with clickable links. Tenant and TenantGroup tables also include comments fields, and the Tenant table now integrates a contacts column via a new mixin.
netbox/tenancy/tables · high confidence
Refined display of custom field type and attribute details
The Custom Field detail view now presents more specific information for the field type and attribute settings. The Type attribute explicitly shows the related object type name (e.g., 'Device') alongside the general type, clarifying the context for object-related fields. Additionally, new attribute displays have been introduced: Choice Sets now show the number of available choices, Related Object Filters display the filter configuration as JSON, and Search Weight indicates whether the feature is enabled or disabled.
netbox/templates/extras/customfield · high confidence
Refreshed form widgets with Bootstrap 5 and Material Design icons
The form widget templates in the utilities package have been rewritten to use Bootstrap 5 classes and Material Design Icons (mdi), replacing the previous styling and icon set. This update introduces new or significantly modified templates for various input types, including a new APISelect widget with object selector and quick-add buttons, a Markdown input widget with live preview tabs, a NumberWithOptions widget with a dropdown menu, a SplitMultiSelect widget for managing available/selected items, and updated layouts for file inputs, color selects, and generic object choices. Users will see a modernized UI with consistent Bootstrap 5 styling and new iconography across these form components.
netbox/utilities/templates/widgets · high confidence
Removal of legacy base CSS styles
The legacy \base.css\ file has been deleted, removing custom styles for layout, forms, tables, pagination, and rack elevations. This cleanup eliminates hardcoded dimensions (such as the fixed 1340px container width and specific footer heights) and rack-specific visual rules (including height classes for units up to 16U and color definitions), indicating a shift toward a different styling framework or structure for these UI components.
netbox/project-static/css · high confidence
Removal of legacy form utility templates
The templates for rendering forms and fields (bulk\_edit\_form, confirmation\_form, render\_field, and render\_form) have been removed from the utilities directory. This indicates that the application has migrated away from these specific Bootstrap 3-based helper templates, likely as part of the broader Bootstrap 5 migration, meaning form rendering is now handled by different template logic or components elsewhere in the codebase.
netbox/templates/utilities · high confidence
Removal of legacy secrets database schema
The initial migration for the secrets application has been removed, indicating that the legacy database models for Secrets, SecretRoles, and UserKeys are no longer part of the current data structure. This change eliminates the historical schema definition that included user key management and associated permissions, effectively cleaning up the migration history as the application moves forward with a new secrets implementation.
netbox/secrets/migrations · medium confidence
Removed legacy secrets UI templates
The templates for the secrets section's table rows, table controls, and private key modal have been removed. This eliminates the previous Bootstrap 3-based UI components (including glyphicons and jQuery-dependent modals) that were used to display and unlock secrets, aligning with the broader migration to Bootstrap 5 and the deprecation of jQuery functions in the secrets interface.
netbox/templates/secrets/inc · high confidence
Reorganization of management commands
The management commands within the utilities package have been reorganized. This change involves restructuring the internal layout of the management command modules to improve maintainability and clarity, without altering the external behavior of the commands themselves.
netbox/utilities/management · medium confidence
Reorganized virtualization models and added VM type and start-on-boot support
The virtualization models have been reorganized into separate files (clusters.py, virtualmachines.py) with a new \_\init\\_.py entry point. This change introduces a new VirtualMachineType model to define default attributes like vCPUs and memory for VMs, and adds a start\_on\_boot field to the VirtualMachine model to control boot behavior. The Cluster model now supports scoping via sites or locations and validates that host devices match the cluster's scope.
netbox/virtualization/models · high confidence
Restructure virtualization API serializers and expose new cluster and VM capabilities
The virtualization API serializers have been reorganized into a dedicated subpackage (netbox/virtualization/api/serializers\_), introducing new serializers for Cluster, ClusterGroup, and ClusterType that expose allocated resources (vCPUs, memory, disk) and scope information. Virtual Machine serialization now includes the new VirtualMachineType model, the start\_on\_boot field, serial number, and DNS/NAT details for primary IPs. VM interfaces support Q-in-Q VLANs, multiple MAC addresses, and simplified primary MAC updates. The change also adds owner fields to device and VM component serializers and optimizes config context rendering.
netbox/virtualization/api/serializers\ · high confidence_
Restructure virtualization tables and add VM start-on-boot support
The virtualization tables module has been reorganized into dedicated files (clusters.py, virtualmachines.py) and exposed via \_\init\\_.py. The VirtualMachine table now includes a 'Start on boot' column, allowing users to see and manage this new boot behavior setting. Additionally, the VirtualMachine table displays the new Virtual Machine Type, serial number, and config template, while the Cluster table now supports scope assignment and displays contacts. VM interface tables have been enhanced with tunnel termination buttons and L2VPN support.
netbox/virtualization/tables · high confidence
Restructured Virtual Machine detail view with permission-aware component actions
The Virtual Machine detail page now uses a new base template that standardizes breadcrumbs based on cluster or site context and introduces an 'Add Components' dropdown. This dropdown is gated by the 'change\_virtualmachine' permission and only displays options for adding Interfaces or Virtual Disks if the user holds the respective 'add\_vminterface' or 'add\_virtualdisk' permissions, ensuring users only see actionable items they are authorized to perform.
netbox/templates/virtualization/virtualmachine · high confidence
Restructured form architecture with dedicated mixins and bulk operation forms
The form module has been reorganized into a modular structure with dedicated files for bulk edit, bulk import, bulk rename, filtersets, and search, all re-exported from a central \_\init\\_.py. A new mixins.py file introduces reusable components like ChangelogMessageMixin, CustomFieldsMixin, OwnerMixin, and OwnerFilterMixin, which are now used across model, bulk edit, and filterset forms. Bulk edit forms now support changelog messages and owner assignment, while bulk import forms handle nullable fields and owner selection via CSV. Filterset forms include saved filter support and owner filtering, and the global search form now supports regex lookups.
netbox/netbox/forms · high confidence
Restructured user API serializers with enhanced token and ownership controls
The REST API serializers for users, groups, tokens, and permissions have been reorganized into a modular structure, introducing new capabilities for object ownership and stricter token management. Users can now view and manage the 'owner' field on supported models via the new OwnerMixin. Token creation via the REST API now returns the plaintext token value in the response for v2 tokens, while preventing the modification of a token's owner after creation and enforcing permission constraints for granting tokens to other users. Additionally, password changes for users now strictly enforce configured password validators, and the API exposes display URLs and full names for users and groups in nested representations.
netbox/users/api/serializers\ · high confidence_
Restructured user management forms into dedicated modules
The user management forms have been reorganized into four distinct modules: model\_forms.py for standard create/edit interfaces, bulk\_edit.py for mass-updating records, bulk\_import.py for CSV ingestion, and filtersets.py for list-view filtering. This change introduces specific capabilities such as the ability to bulk-edit token states (enabled, write\_enabled, expiration, allowed IPs) and descriptions, import tokens with version selection, and filter users, groups, permissions, and tokens by status, group membership, and action grants. The UserConfigForm now dynamically exposes user preferences (language, UI theme, table striping, measurement system, CSV delimiter) as form fields, and the TokenForm enforces that the token owner cannot be changed after creation.
netbox/users/forms · high confidence
Restructured views with enhanced error handling and media security
The views module has been reorganized into dedicated files (errors, htmx, misc) to improve maintainability. This change introduces a custom 500 error handler that includes NetBox version, Python version, and installed plugin details in server error reports to aid debugging, and a 404 handler that integrates with Sentry for error tracking. Additionally, the MediaView now enforces object-level view permissions for image attachments and device type images, ensuring users can only access media they are authorized to view, while the HomeView now gracefully handles dashboard configuration errors by falling back to a default layout.
netbox/netbox/views · high confidence
Secrets templates migrated to generic object views
The dedicated templates for the Secrets feature (including list, detail, edit, import, and bulk delete views) have been removed in favor of a unified, generic object template system. This change standardizes the user interface for secrets, aligning their layout, navigation, and interaction patterns with other primary objects in Netbox, while preserving core functionality such as secret unlocking, attribute display, and import/export capabilities.
netbox/templates/secrets · high confidence
Simplified color mode handling and removed obsolete JavaScript modules
The application now manages the UI color mode (light/dark) using a new dedicated script that sets the theme on the HTML element and persists the user's preference in local storage, falling back to the browser's system preference if no explicit choice is saved. This change coincides with the removal of several legacy JavaScript files (forms.js, livesearch.js, secrets.js) that previously handled helper field population, live search autocompletion, and secret decryption UI interactions, indicating a shift in how these features are implemented or integrated elsewhere in the application.
netbox/project-static/js · high confidence
Standardize virtualization object detail views with generic templates
The detail views for Cluster, ClusterGroup, ClusterType, VirtualMachine, and VirtualMachineType have been refactored to use a standardized layout. Cluster, VirtualMachine, and VirtualMachineType now extend specific base templates (e.g., \virtualization/cluster/base.html\), while ClusterGroup, ClusterType, and VirtualMachineType use the generic \generic/object.html\ base. This change introduces consistent action buttons (such as 'Add Cluster' or 'Add Virtual Machine') to the detail pages, allowing users to create related objects directly from the parent view.
netbox/templates/virtualization · high confidence
Standardized UI button components with Material Design icons and HTMX integration
The web interface now uses a set of standardized, reusable template tags for common actions (Add, Edit, Delete, Clone, Bulk Edit/Delete/Rename, Export, Import, Bookmark, Subscribe, Sync). These buttons have been visually updated to use Material Design Icons (mdi) instead of the previous icon set, and the Delete button now triggers an HTMX modal for confirmation. The Export button has been redesigned as a dropdown that distinguishes between exporting the 'Current View' and 'All Data' (with format indication), and includes links to custom export templates.
netbox/utilities/templates/buttons · high confidence
Standardized object detail panels for comments, custom fields, images, related objects, and tags
The object detail view now uses a consistent set of reusable template panels for common metadata sections. Comments are displayed with Markdown rendering, custom fields are grouped and include tooltip descriptions, image attachments feature an 'Attach an image' action button and an HTMX-powered list, related objects show counts with links to their respective lists, and tags are rendered with validated URLs. This refactoring standardizes the UI presentation across all object types.
netbox/templates/inc/panels · high confidence
Standardized resource display with IEC unit labels
The Virtual Machine and Cluster resource panels now display CPU, memory, and disk space using standardized IEC unit labels (e.g., GiB, TiB) instead of previous formatting. This change is driven by the adoption of new unit-agnostic humanize helpers (\humanize\_ram\_capacity\, \humanize\_disk\_capacity\) which ensure consistent, accurate representation of storage and memory values across the virtualization interface.
netbox/templates/virtualization/panels · high confidence
Support for user-configurable metric/imperial weight display
The total weight attribute template now respects the user's measurement system preference. When a user sets their preference to 'imperial', weights are displayed in pounds; when set to 'metric', they are displayed in kilograms. If no preference is set, both units are shown to ensure clarity.
netbox/templates/dcim/attrs · high confidence
Tenancy model migrations: schema updates and MPTT-to-Ltree migration
This change introduces a comprehensive set of database migrations for the tenancy app. It replaces the django-mptt tree implementation with PostgreSQL ltree for TenantGroup and ContactGroup, adding path and sort\_path fields while dropping legacy MPTT columns. It also adds an owner ForeignKey to Contact, ContactGroup, ContactRole, Tenant, and TenantGroup; migrates Contact to support multiple groups via a ManyToMany relationship; renames ContactAssignment.content\_type to object\_type; adds custom\_field\_data to ContactAssignment; updates default ordering and adds indexes for performance; and consolidates Tenant unique constraints to allow null group names/slugs.
netbox/tenancy/migrations · high confidence
Tenancy models restructured with improved tenant group deletion safety and contact assignment features
The tenancy models have been split into separate modules (contacts.py and tenants.py) and refactored to use the new base model hierarchy. TenantGroup deletion now includes validation to prevent creating duplicate tenant names or slugs when ungrouping tenants, raising a ProtectedError if conflicts exist. Tenant uniqueness constraints for names and slugs are now scoped per group rather than globally. Contact assignments now support custom fields, export templates, and tags, and use a renamed 'object\_type' field instead of 'content\_type'. ContactGroup uses PostgreSQL Ltree for hierarchical paths instead of MPTT.
netbox/tenancy/models · high confidence
UI styling updates for interfaces, change logs, and sticky action bars
This change introduces several new custom SCSS files to refine the NetBox web interface. Interface rows are now color-coded based on cable status, connection state, and enabled status, with specific fixes for row separators in dark mode to prevent harsh visual artifacts. Change record diffs and serialized data displays now have dedicated styling for added and removed lines, improving readability. Sticky action bars and form footers have been refactored to support left/right alignment and proper positioning, while legacy floating button styles are marked for removal. Additional updates include styling for rendered markdown content, muted read notifications, and a port mapping widget for application services.
netbox/project-static/styles/custom · high confidence
Updated Danish and Italian translation files
The Danish (da) and Italian (it) translation files in netbox/translations have been updated with new message strings and translator credits. This ensures that UI elements, status labels (such as 'Active', 'Planned', 'Offline'), and system messages are correctly localized for users of these languages.
netbox/translations/da, netbox/translations/it · high confidence
Updated GraphiQL static assets
The GraphiQL web interface has been updated with new static files, including a rebuilt \graphiql.min.css\ that embeds the Roboto font family as base64-encoded WOFF2 data. This change refreshes the styling and typography of the GraphQL explorer UI.
netbox/project-static/dist/graphiql · high confidence
Updated user profile interface with token warnings and activity display
The user profile section has been updated to improve usability and security awareness. A new banner now displays the full HTTP Authorization header value immediately upon token creation, emphasizing that this is the only chance to copy it as the plaintext is not stored. A warning banner has been added to alert users that v1 API tokens are deprecated and will be removed in a future release, encouraging migration to v2 tokens. Additionally, a new 'Recent Activity' card has been introduced to the profile view, allowing users to quickly see their latest actions with a link to view all activity. The legacy profile navigation component has been removed as part of this restructuring.
netbox/templates/users/inc · high confidence
Users app restructured with declarative views and new ownership model
The users application has been refactored to use declarative view registration via \register\_model\_view\, replacing the previous manual URL configuration and function-based views. This change introduces a new ownership model with \Owner\ and \OwnerGroup\ models, along with corresponding filtersets and tables. API token management is now handled through a dedicated, standardized UI with bulk actions and specific permission checks for token creation. Additionally, user login signals now automatically create \UserConfig\ instances and apply language preferences from the user's profile during SSO login.
netbox/users · high confidence
Virtual Machine Type default memory now respects RAM base unit settings
The default memory display for Virtual Machine Types now correctly applies the configured RAM base unit. A new template file formats the memory value using the humanize\_ram\_capacity helper, ensuring that the displayed capacity aligns with the user's preferred unit (e.g., GB vs MB) rather than showing a raw or incorrectly scaled number.
netbox/templates/virtualization/virtualmachinetype · high confidence
Virtualization forms refactored into modular structure with new VM capabilities
The virtualization forms have been reorganized into a modular package structure (bulk\_create, bulk\_edit, bulk\_import, filtersets, model\_forms, object\_create) to improve maintainability. This change introduces support for assigning Virtual Machines directly to host Devices, adding a 'Start on boot' configuration option, and managing Virtual Machine Types with default resource settings. It also adds fields for Config Templates, Serial numbers, and Virtual Disks to the relevant forms, and updates bulk edit and import workflows to handle these new attributes and the new device-assignment relationship.
netbox/virtualization/forms · high confidence
Virtualization schema overhaul and new capabilities
This update introduces a comprehensive set of database migrations for the virtualization module. Key changes include adding a 'start on boot' configuration option for virtual machines, introducing a new Virtual Machine Type model to categorize VMs, and allowing VMs to be assigned directly to devices in addition to clusters. The schema now supports virtual disks with size tracking, serial numbers for VMs, and Q-in-Q VLAN translation policies on VM interfaces. Additionally, clusters now support generic object scoping (replacing the direct site link) with denormalized location/region fields, and ownership can be assigned to clusters, VMs, and disks. MAC addresses are now managed via a dedicated DCIM model, and unique constraints for VM names have been consolidated to handle both cluster-based and device-based assignments more robustly.
netbox/virtualization/migrations · high confidence
Wireless API serializers restructured with new scope and distance fields
The REST API serializers for WirelessLAN and WirelessLink have been reorganized into a dedicated module, introducing support for WirelessLAN scoping to specific locations (via new scope\_type, scope\_id, and scope fields) and adding a distance field with unit selection to WirelessLink. The WirelessLANGroup serializer now includes a wirelesslan\_count field, and nested serializers have been updated to expose display\_url.
netbox/wireless/api/serializers\ · high confidence_
Wireless LAN and Link tables now display scope, status, and distance details
The Wireless LAN list table now includes columns for status, scope type, and scope (with scope unsortable), allowing users to see how a LAN is associated with specific devices or interfaces. The Wireless Link list table has been updated to show the link's status and a dedicated distance column, providing clearer visibility into link metrics and state.
netbox/wireless/tables · high confidence
Wireless app UI modernization and new WirelessLANGroup support
The wireless application's user interface has been updated to use the declarative layout system and Tabler CSS framework, replacing older template patterns. This includes the introduction of a new WirelessLANGroup model with its own detail view, which now allows users to add associated Wireless LANs directly from the group page. Additionally, new attribute and panel templates have been added to better display sensitive data like PSKs with a show/hide toggle and to present wireless link interface details in a standardized table format.
netbox/templates/wireless · high confidence
Wireless app views migrated to declarative UI layouts
The wireless application now uses declarative UI panels to define how objects are displayed, replacing the previous view implementation. This change introduces structured panels for Wireless LAN groups, Wireless LANs, Wireless Authentication, and Wireless Links, specifying exactly which attributes (such as SSID, status, VLAN, and tenant) are shown and how they are linked or grouped. Users will see a consistent, standardized layout for wireless resources that aligns with NetBox's modern UI components.
netbox/wireless/ui · high confidence
Fixes
Device height now displays with proper decimal formatting
The device type height attribute template has been updated to render values using the floatformat filter, ensuring that height measurements are displayed with appropriate decimal precision (e.g., 42.0U instead of 42) in the user interface.
netbox/templates/dcim/devicetype/attrs · high confidence
GraphiQL UI now serves resources locally and supports URL-based queries
The GraphiQL interface has been updated to load all JavaScript and CSS assets from local static files rather than external CDNs, ensuring the UI functions correctly in offline or restricted network environments. Additionally, the interface now supports loading a GraphQL query directly from the URL hash parameters, allowing users to share and open specific queries via links while automatically cleaning the URL after loading.
netbox/templates/graphql · high confidence
Support for PostgreSQL ArrayField serialization in JSON output
A custom JSON serializer has been added to handle PostgreSQL ArrayField values correctly. Previously, array fields might not have been serialized properly in JSON responses; this change ensures that array values are preserved as-is when they contain protected types or are empty, preventing data loss or formatting errors in API responses and change logs.
netbox/utilities/serializers · high confidence
UI styling overrides for Tabler migration and dark mode fixes
This change introduces new SCSS override files to support the migration to the Tabler CSS framework and improve the dark mode experience. Key updates include disabling font ligatures to fix Chromium rendering issues, enabling text selection on badges, and correcting dropdown clipping in responsive tables. Dark mode improvements address contrast for alerts, links, and form controls, while also fixing the checkbox icon color and preventing layout shifts from scrollbars. Additional fixes restore support for legacy Bootstrap color classes, adjust progress bar minimum widths, and improve Tom Select validation error styling.
netbox/project-static/styles/overrides · high confidence
Test coverage
Add comprehensive test coverage for the Tenancy app; Added comprehensive test coverage for core application components; Added dummy plugin fixture for testing plugin extension points; Added migration files for the dummy test plugin; Added test coverage for the users app; Added test suite for VPN module; Comprehensive test coverage for DCIM API, cable paths, and cable profiles; Comprehensive test suite for IPAM models, API, and filtersets; Comprehensive test suite for extras features; Establish comprehensive test suite for NetBox utilities; Expanded test suite for API, authentication, and configuration; Initial test coverage for wireless models and APIs; Initial test suite for the Circuits app; New reusable test infrastructure in utilities.testing; Removal of secrets test suite.
Dependencies
NetBox v4.6.2 dependency overhaul and packaging standardization
NetBox v4.6.2 introduces a comprehensive update to its dependency ecosystem and build infrastructure. The Python backend has been upgraded to Django 6.1.1, with significant version bumps across the stack including Django REST Framework 3.18.0, Strawberry GraphQL 0.327.7, and the migration from psycopg2 to psycopg 3.3.5. The frontend build has been standardized with a new \pyproject.toml\ configuration and a dedicated \netbox-graphiql\ workspace, utilizing esbuild for bundling and upgrading core UI libraries such as Bootstrap 5.3.8, HTMX 2.0.10, and Tabler 1.4.0. These changes also include the removal of legacy packages like pycrypto and the addition of new tools like Zensical for documentation rendering.
(dependencies) · high confidence
Housekeeping
Added .gitkeep to media directory; Removed empty migrations init file.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 51.
Lenses
- Code Health 99
- Architecture 78
- Maturity 75
- Readiness 64
- Security 80
- Domain Modelling 42
- Accessibility 45
Changes since last survey
- 300 commits — 200 feature/other, 100 fixes
By area
- netbox/dcim — 62 commits
- (repo) — 37 commits
- netbox/translations — 36 commits
- netbox/extras — 30 commits
- netbox/netbox — 30 commits
- netbox/core — 29 commits
- netbox/utilities — 17 commits
- netbox/ipam — 15 commits
- netbox/project-static — 9 commits
- docs/models — 6 commits
- (root) — 5 commits
- netbox/templates — 3 commits
- .github/workflows — 2 commits
- docs/customization — 2 commits
- docs/reference — 2 commits
- netbox/virtualization — 2 commits
- .claude/skills — 1 commit
- .github/ISSUE_TEMPLATE — 1 commit
- contrib/openapi.json — 1 commit
- docs/administration — 1 commit
Notable commits
- fix: Fixes #23097: Prevent duplicate Cable Paths when Cable Terminations are unchanged (#23100)
- fix: Add optional suspected cause & suggested fix fields to bug report template (#22971)
- fix: Add regression coverage for the CSV (comma-separated string) import path
- fix: Closes #22973: fix ltree search_path (#22975)
- fix: Closes #23032: Make GraphQL custom field N+1 regression test deterministic (#23034)
- fix: Fix CSVModelMultipleChoiceField's own export/import round trip; docs; hardening
- fix: Fix UI regression: transform= changed the rendered column, not just CSV export
- fix: Fix cross-worker cache contamination in parallel test runs (#23106)
- fix: Fix elapsed_time_expression() for jobs completed without an execution time
- fix: Fix handling of string-typed object IDs
- fix: Fix manufacturer-scoped bay type CSV export; tighten ambiguity tests; trim comments
- fix: Fix omission of Service protocol field from the OpenAPI request schema (#23085)
- fix: Fix regression: manufacturer scoping made cross-manufacturer bay types unimportable
- fix: Fix support for enable=false under DeviceBayTemplateImportForm
- fix: Fixes #22569: Ensures that Script Run OpenAPI operation is present
- fix: Fixes #22683: Prevent server errors when bulk import validation references an omitted field (#22784)
- fix: Fixes #22690: Restore the left border on the quick search field
- fix: Fixes #22694: Clear stale Rack assignment when changing a Device's Site (#22764)
- fix: Fixes #22738: Correct IPAM availability under constrained object permissions (#22785)
- fix: Fixes #22750: Validate Custom Script input and resolve object IDs in the REST API (#23119)
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
netbox-community/netbox was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f360e1d9bfa36916d97aaa5244169a315d045dca — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.