The Jenkins project released version 2.567 on June 9, 2026, delivering a critical fix for navigation state within AJAX refreshed dashboard widgets. This update resolves a regression where links in the Build Queue and Build Executor Status sidebars would lose their view context during background updates. Operators relying on custom Jenkins views for monitoring complex build environments will find this release improves dashboard consistency and prevents broken navigation breadcrumbs.
The full release notes and downloads are on the GitHub release page.
The Contextual Navigation Problem ¶
Jenkins operators often organize jobs into specific views to manage large scale installations. These views provide a filtered perspective of the build ecosystem and maintain a specific navigation hierarchy. A user browsing a view at /view/Production/ expects all subsequent clicks to remain within that path. This preservation of context is handled by the navigation breadcrumbs at the top of the interface.
A significant issue emerged in recent versions where the dynamic components of the sidebar failed to respect this hierarchy. The Build Queue and Build Executor Status widgets refresh periodically to show real time system state. When these widgets triggered a refresh via AJAX, the links generated for builds or jobs would often default to the root context. If an SRE clicked a link to a running build from the sidebar while inside a custom view, the page would transition to the global job path. This transition stripped away the view specific breadcrumbs and forced the user to manually navigate back to their preferred dashboard.
Technical Root Cause: Stapler and Context Loss ¶
The root of this behavior was found in the interaction between the Stapler web framework and the partial page update mechanism. Jenkins uses Stapler to map URL paths to Java objects and Jelly templates. When a full page load occurs, Stapler has access to the complete request URI to determine the current view.
However, during an AJAX refresh, the request is directed at a specific widget endpoint. In these sub requests, the server side logic often lost access to the original page URL. The getOwnerUrl method in the widget classes would return a path relative to the Jenkins root instead of the current view. This occurred because the internal ownerUrl field was not being persisted or passed correctly during the asynchronous update cycle.
The impact was most visible in the hudson.widgets.HistoryWidget and hudson.model.BuildQueueWidget classes. These components are responsible for rendering the links that appear in the sidebar. Without a valid view context, the Jelly templates rendered these links as absolute paths from the root, breaking the user navigation experience.
The Fix: Preserving State Across Refreshes ¶
The fix implemented in PR 26721 by Markus Winter addresses this by ensuring context propagation during the AJAX lifecycle. The implementation involves changes across the Java backend and the frontend JavaScript logic.
On the backend, AbstractItem.java was refined to better handle URL construction when an item is rendered as part of a dynamic subcomponent. The widget classes now explicitly capture the ownerUrl from the initial page load and include it in the data sent back during refreshes. This ensures that the server always knows the intended navigation context even when processing a partial update.
On the frontend, the hudson-behavior.js file was updated to synchronize with the new backend logic. The script that handles widget refreshes now captures the base URL of the current page and passes it as a parameter in the AJAX request. By providing the view context in the request parameters, the server can render the links correctly. This change ensures that the link to a build like job/my-job/10/ is correctly prefixed with the view path such as view/Production/ when the user is active in that view.
Operator Impact and Reliability ¶
For platform engineers and SREs, this fix restores the reliability of the Jenkins web interface for long lived monitoring sessions. In environments with hundreds of executors and large build queues, the sidebar widgets are the primary tool for observing system health. This update prevents the frustration of being jumped out of a filtered view when investigating a stalled build or a queue backup.
This release is part of the ongoing effort to modernize the Jenkins user interface while maintaining the robust navigation patterns that operators expect. It follows the performance improvements seen in version 2.566 and continues the trend of polishing the experimental UI components that are becoming standard in the 2.x line.
Where to get it ¶
The Jenkins 2.567 release is available through the standard distribution channels. Operators should verify their plugin compatibility before upgrading, although this core fix is unlikely to conflict with common plugins.
- Release Page: https://github.com/jenkinsci/jenkins/releases/tag/jenkins-2.567
- Project Repository: https://github.com/jenkinsci/jenkins
- Release Tag:
jenkins-2.567