theonedev/onedev
29.9
Weak · 10 October 2026
368.8k
lines of production code
Java
with JavaScript
3
measurements over time
What this system is
This system is a self-hosted DevOps platform that integrates source code management, issue tracking, and CI/CD pipelines into a single application. It manages Git repositories and pull requests while providing a flexible build system with YAML-defined workflows and support for multiple package registries. The platform also includes comprehensive project management features, code quality reporting, and extensive integration capabilities for user authentication and external service imports.
How it got here
2012–2019 — Core architecture and UI modernization
258 changes.
This period focused on rebuilding the server-core module with a new event-driven architecture, Jakarta-based persistence layer, and modular security framework. It simultaneously introduced a comprehensive suite of modern Wicket UI components, replacing legacy interfaces with standardized, extensible widgets for issues, builds, and code browsing.
2020–2022 — CI/CD and UI modernization
206 changes.
This period focused on overhauling the CI/CD engine with a new build specification system, diverse job executors, and extensive reporting plugins for code quality and test coverage. Simultaneously, the web interface was modernized through a migration to Bootstrap 4, the introduction of dark mode, and the addition of advanced features like saved queries, full-text search, and SSO authentication.
2023–2026 — Jakarta migration and workspace infrastructure
205 changes.
The project migrated its core infrastructure to Jakarta EE namespaces and introduced a comprehensive workspace provisioning system supporting AI agents and remote execution. This period also established a robust package registry ecosystem, expanded CI/CD capabilities with numerous language-specific plugins, and integrated foundational AI chat and automation features.
Features
Add .NET CI job suggestion with test, coverage, and code analysis reporting
The .NET buildspec plugin now suggests a default CI job for .NET projects. This job checks out code, sets up a NuGet package cache, runs \dotnet test\ with XPlat Code Coverage and TRX logging, and publishes three reports: unit test results (TRX), code coverage (Cobertura), and code problems (Roslynator). The job is triggered on branch updates and pull request updates.
server-plugin/server-plugin-buildspec-dotnet · high confidence
Add At.js autocomplete library with caret positioning and dark mode support
The server now includes the At.js library (v1.3.2) to provide autocomplete functionality for text inputs. This change introduces a new Wicket resource reference that bundles the core JavaScript, a custom caret-positioning helper, and the associated CSS. The styling has been updated to support dark mode, ensuring autocomplete dropdowns and selected items are visible and styled correctly in both light and dark themes.
server-core/src/main/java/io/onedev/server/web/asset/atwho · high confidence
Add Bitbucket Cloud project import capability
Users can now import projects and repositories from Bitbucket Cloud. This new plugin registers a Bitbucket Project Importer that guides users through a three-step process: authenticating via email and API token, selecting the source workspace and specific repositories (with options to import all or include forks), and configuring import settings such as default public roles. The implementation includes the necessary Guice module bindings and UI steps to facilitate this integration.
server-plugin/server-plugin-import-bitbucketcloud · high confidence
Add Blob and Revision choice editors for property forms
Users can now select specific Git blobs or revisions directly within property edit forms via new \BlobChoice\ and \RevisionChoice\ editors. These new Wicket components provide a picker interface that filters available files or commits based on configured patterns or project context, allowing for precise selection of repository content as property values.
server-core/src/main/java/io/onedev/server/web/editable/blobchoice · high confidence
Add Bootstrap Switch toggle component integration
The server now includes a new Bootstrap Switch behavior for Wicket components, allowing checkboxes and radio buttons to be rendered as styled toggle switches. This change adds the necessary Java behavior classes, a resource reference, and the underlying Bootstrap Switch v3.3.4 JavaScript and CSS assets, along with custom styling to align the switches with the application's theme variables.
server-core/src/main/java/io/onedev/server/web/behavior/bootstrapswitch · high confidence
Add Build Packs page to filter packs by type
A new BuildPacksPage has been added to the project build detail view, allowing users to view a list of build packs filtered by a specific type. The page accepts a 'type' parameter to scope the displayed packs and uses a PackListPanel to render them, ensuring that only packs the user has permission to read are shown.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/pack · high confidence
Add CPD (Copy-Paste Detection) report publishing step
Users can now publish CPD reports in their build pipelines. A new 'CPD Report' step has been added to the Publish step group, allowing users to specify a CPD result XML file (e.g., \target/cpd.xml\). The system parses the XML to identify code duplications and displays them as low-severity code problems in the project's code quality view, with clickable links to the specific lines in the source code where the duplication occurs.
server-plugin/server-plugin-report-cpd · high confidence
Add Cargo package registry support
This change introduces a new Cargo package registry capability within the server-plugin-pack-cargo module. It adds the necessary backend components (CargoPackHandler, CargoPackSupport, CargoData) to handle publishing, downloading, and managing Rust crates, including validation of package metadata and checksums. It also provides the corresponding UI panels (CargoHelpPanel, CargoPackPanel) that guide users through configuring their local Cargo environment, authenticating, and integrating the registry into CI/CD pipelines.
server-plugin/server-plugin-pack-cargo, server-plugin/server-plugin-pack-npm, server-plugin/server-plugin-pack-nuget · high confidence
Add Clover and Jest coverage report publishing
Users can now publish Clover-format code coverage reports (including Jest coverage) as a build step. The plugin introduces a "Clover Coverage Report" step that parses Clover XML files to display line and branch coverage statistics, and a "Jest Coverage Report" step for Jest-generated Clover reports, with unit tests verifying the parsing logic.
server-plugin/server-plugin-report-clover · high confidence
Add Cobertura coverage report publishing step
Users can now publish Cobertura XML coverage reports in their build pipelines. This change introduces a new 'Cobertura Coverage Report' publish step that parses Cobertura XML files to calculate line and branch coverage statistics, and maps the results to source files for display in the UI. The implementation includes the plugin module registration, the report processing logic, and unit tests verifying the parsing of various coverage scenarios.
server-plugin/server-plugin-report-cobertura, server-plugin/server-plugin-report-jacoco · high confidence
Add CodeMirror 5 library assets
The server now bundles the CodeMirror 5 JavaScript library and its default CSS styles as static assets. This enables syntax highlighting and code editing capabilities in the web interface, supporting fixes for specific language highlighting issues such as Bash heredocs, Julia, and Dockerfile syntax.
server-core/src/main/java/io/onedev/server/web/asset/codemirror/lib · high confidence
Add Discord as a Single Sign-On provider
This change introduces a new Discord SSO connector, allowing users to authenticate via their Discord accounts. The implementation handles the OAuth2 flow (authorization, token exchange, and user info retrieval) and supports restricting access to members of a specific Discord server (guild) by configuring a server ID. It registers the new connector within the application's SSO module.
server-plugin/server-plugin-sso-discord · high confidence
Add DropzoneField component for file uploads
A new DropzoneField component has been introduced to enable drag-and-drop file uploads within forms. This component supports configurable limits on the number of files and maximum file size, allows filtering by accepted MIME types, and includes specific styling to ensure correct preview appearance in dark mode.
server-core/src/main/java/io/onedev/server/web/component/dropzonefield · high confidence
Add ECharts JavaScript library and resource reference
The server now bundles the ECharts JavaScript library (echarts.min.js) and provides a Wicket resource reference (EChartsResourceReference) to serve it. This resource automatically includes jQuery as a dependency, enabling the server to deliver charting assets to the client.
server-core/src/main/java/io/onedev/server/web/asset/echarts · high confidence
Add EntityLabelsPanel component for displaying labels
A new Wicket panel component, EntityLabelsPanel, has been added to render label badges for entities. This component retrieves the list of labels from a provided model, sorts them by name, and displays them as styled badges using the existing LabelBadge component. The panel automatically hides itself if the entity has no labels associated with it.
server-core/src/main/java/io/onedev/server/web/component/entity/labels · high confidence
Add GPG Keys management page
Users can now manage their GPG keys via a new 'My GPG Keys' page in the user settings. This page allows users to view a sorted list of their existing keys and add new ones through a modal dialog, with the list automatically refreshing after a key is inserted.
server-core/src/main/java/io/onedev/server/web/page/my/gpgkeys · high confidence
Add Git Pack Config settings page
Users can now configure Git pack options directly through the web UI to optimize memory usage for large repositories. A new Git Pack Config page has been added to the project settings, allowing administrators to edit these settings via a form and save changes, which are then propagated to the active server.
server-core/src/main/java/io/onedev/server/web/page/project/setting/code/git · high confidence
Add Git protocol switcher for clone URLs
A new GitProtocolPanel component has been added to the project UI, allowing users to toggle between SSH and HTTP(S) clone URLs via an Ajax link. The panel respects a persistent user preference stored in a cookie, displays a warning if SSH is selected but no SSH keys are configured, and shows the server's SSH fingerprint when applicable.
server-core/src/main/java/io/onedev/server/web/component/project/gitprotocol · high confidence
Add Go project build job suggestion
The Go buildspec plugin now automatically suggests a CI job for projects containing a go.mod file. This job sets up dependency caching, builds and tests the code using the detected Go version, and publishes coverage, unit test, and lint reports. It also includes a linting step and handles version-specific tooling for gocover-cobertura.
server-plugin/server-plugin-buildspec-golang · high confidence
Add HTML report publishing and viewing capability
Users can now publish HTML reports from build jobs and view them directly in the build detail page. A new 'Html Report' build step allows specifying a start page, which is then rendered in an iframe within the UI, including support for dark mode styling.
server-plugin/server-plugin-report-html · high confidence
Add Helm chart package support
The server-plugin-pack-helm module now introduces a new Helm chart package type, allowing users to push, store, and retrieve Helm charts via a dedicated registry endpoint. This includes a new HelmPackHandler for managing chart uploads and downloads, a HelmPackSupport implementation to register the new package type, and UI panels (HelmPackPanel and HelmHelpPanel) that provide users with the necessary Helm CLI commands to add the repository, install charts, and configure CI/CD jobs using job tokens.
server-plugin/server-plugin-pack-helm · high confidence
Add Hibernate Validator metadata core classes
The server-core module now includes the Hibernate Validator internal metadata classes MetaDataBuilder and MetaConstraint. These classes handle the construction of constraint metadata and the execution of validation logic, indicating that the application is now bundling or exposing the Hibernate Validator library for bean validation.
server-core/src/main/java/org/hibernate/validator/internal/metadata · high confidence
Add JUnit test report parsing and publishing step
The JUnit report plugin now provides a new 'JUnit Report' build step that parses JUnit XML test results (supporting both single \<testsuite\> and nested \<testsuites\> formats) and publishes the results. This allows users to view test statistics, pass/fail status, and failure messages directly in the build report.
server-plugin/server-plugin-report-junit · high confidence
Add Jest unit test report rendering
Users can now publish and view Jest JSON test reports in build details. A new 'Jest Test Report' publish step accepts JSON output files, and the system parses them to display test case statuses (passed, failed, pending, todo) with clickable links to source code locations for failures.
server-plugin/server-plugin-report-jest · high confidence
Add Jupyter notebook source view rendering
Users can now view .ipynb (Jupyter notebook) files in source view within the project blob renderer. This change introduces a new NotebookRenderer that detects .ipynb files and renders them using a NotebookViewPanel, which loads the necessary JavaScript assets and passes the raw blob URL to the client-side renderer for display.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/notebook · high confidence
Add KaTeX library for rendering math in markdown
The server now includes the KaTeX library (version 0.16.2) to render mathematical expressions within markdown content. This change adds the necessary JavaScript (\katex.min.js\) and CSS (\katex.min.css\) assets, along with a Wicket resource reference to ensure they are correctly loaded and styled, enabling proper display of math formulas in user-facing markdown views.
server-core/src/main/java/io/onedev/server/web/asset/katex · high confidence
Add LDAP and Active Directory authentication plugins
The server now includes a new LDAP authenticator plugin that allows users to authenticate against generic LDAP servers or Microsoft Active Directory. This feature enables configuration of LDAP URLs, manager credentials, user search bases, and attribute mappings for names and emails. It also supports retrieving group memberships via different strategies (such as searching by filter or using a specific user attribute) to automatically sync group permissions from the directory service.
server-plugin/server-plugin-authenticator-ldap · high confidence
Add Markdown property editing and viewing support
Users can now edit and view properties annotated with @Markdown using a dedicated editor and viewer. This change introduces a new EditSupport that detects String properties marked with the Markdown annotation and provides a MarkdownPropertyEditor for input (featuring an OnTypingDoneBehavior for live updates) and a MarkdownViewer for display, enabling rich text formatting in applicable fields.
server-core/src/main/java/io/onedev/server/web/editable/markdown · high confidence
Add Markdown rendering support via Marked library
The application now includes the Marked JavaScript library (v15.0.12) to enable client-side Markdown parsing. This change introduces the \MarkedResourceReference\ class and the \marked.min.js\ asset, providing the underlying engine required to render Markdown content in the web interface.
server-core/src/main/java/io/onedev/server/web/asset/marked · high confidence
Add Mypy report parsing and publishing step
Users can now publish Mypy static analysis reports for Python projects. A new 'Mypy Report' build step (PublishMypyReportStep) parses Mypy output files, extracting code problems with severity levels (Medium for errors, Low for notes) and precise file locations, which are then displayed in the build's code quality view.
server-plugin/server-plugin-report-mypy · high confidence
Add Open Graph meta headers for URL previews
The server now includes Open Graph meta tags (og:image, og:title, og:description, og:url) in the HTML head, enabling social platforms and link previews to display richer information when URLs are shared.
server-core/src/main/java/io/onedev/server/web/opengraph · high confidence
Add PDF.js 5.4.530 assets for in-app PDF rendering
The web application now includes the PDF.js library (version 5.4.530) and its required resources—such as worker scripts, CMap files for character encoding, and standard font licenses—within the ES6 asset bundle. This addition enables the server to serve the necessary client-side JavaScript and data files to render PDF documents directly in the browser.
server-core/src/main/java/io/onedev/server/web/asset/es6, server-core/src/main/java/io/onedev/server/web/asset/pdfview · high confidence
Add Playwright JSON test report support
Users can now publish and view Playwright JSON test reports in the build UI. A new 'Playwright Test Report' publish step parses the JSON output, displaying test suites and cases with their status, duration, errors, and standard output/error. Failed or retried attempts show detailed panels including inline images (screenshots) and other attachments, with ANSI escape codes sanitized for safe display.
server-plugin/server-plugin-report-playwright · high confidence
Add PyPI package repository support
The server now supports hosting Python packages via the PyPI protocol. Users can upload packages using tools like twine and install them using pip with the configured repository URL. The plugin provides a simple index page for package discovery, handles package metadata and file storage, and includes UI panels to display package details and provide installation instructions for both interactive and CI/CD environments.
server-plugin/server-plugin-pack-pypi · high confidence
Add Roslynator report publishing step
Users can now publish Roslynator code analysis reports in their build pipelines. A new 'Roslynator Report' step parses XML diagnostics output, mapping severity levels (Error, Warning, Info) to high, medium, and low code problems, and links them to specific files and line locations in the project.
server-plugin/server-plugin-report-roslynator, server-plugin/server-plugin-report-spotbugs · high confidence
Add RubyGems package registry support
The server-plugin-pack-gem module now provides a new RubyGems package registry type. This adds a GemPackHandler to manage gem uploads and metadata, a GemPackSupport implementation to register the 'RubyGems' pack type, and Wicket UI panels (GemHelpPanel, GemPackPanel) that display installation commands, Gemfile configurations, and CI/CD job instructions for users.
server-plugin/server-plugin-pack-gem · high confidence
Add RubySymbol class for symbol marshaling
The gem plugin pack now includes a new RubySymbol class to support the marshaling of Ruby symbols. This class implements CharSequence and Cloneable, providing methods to access the symbol's name, handle character sequences, and manage equality and hashing, enabling the plugin to correctly process Ruby symbol data types.
server-plugin-pack-gem · high confidence
Add ScalarNode class to SnakeYAML nodes package
The ScalarNode class has been added to the org.yaml.snakeyaml.nodes package. This class represents scalar nodes, which form the leaves in the YAML node graph, and includes functionality to manage scalar values, styles, and metadata such as tags and marks.
server-core/src/main/java/org/yaml/snakeyaml/nodes · high confidence
Add Security Settings page with audit logging
A new Security Settings page has been added to the admin interface, allowing administrators to view and modify security configurations via a form editor. The implementation includes audit logging: when settings are saved, the system records the change by capturing the previous and new XML representations of the security settings, providing a traceable history of configuration updates.
server-core/src/main/java/io/onedev/server/web/page/admin/securitysetting · high confidence
Add ServletWebResponse implementation for HTTP response handling
Introduces the new ServletWebResponse class in the server-core module, which wraps the standard Servlet HttpServletResponse to manage HTTP responses within the Wicket framework. This implementation handles core response operations including setting headers, managing cookies, writing content, and encoding URLs, ensuring proper interaction with the underlying servlet container.
server-core/src/main/java/org/apache/wicket/protocol/http · high confidence
Add Slack and Discord notification integrations
Users can now configure Slack and Discord notifications within project settings. This change introduces new plugin modules that contribute 'Slack Notifications' and 'Discord Notifications' settings pages, allowing users to set up webhook URLs for these services. Notifications are sent to the configured webhooks when project events occur, with content formatted appropriately for each platform (using Slack blocks and Discord embeds).
server-plugin/server-plugin-notification-slack · high confidence
Add Snap.svg 0.5.1 library for SVG manipulation
The server now bundles the Snap.svg 0.5.1 JavaScript library (including its eve event system and mina animation engine) as a Wicket JavaScript resource. This enables the application to use Snap.svg for dynamic SVG creation, manipulation, and animation on the client side.
server-core/src/main/java/io/onedev/server/web/asset/snapsvg · high confidence
Add Tippy and Popper.js tooltip assets
The application now includes the Tippy.js tooltip library and its Popper.js dependency as bundled JavaScript assets. This enables the server to serve the necessary client-side scripts for rendering interactive tooltips, with the Tippy resource reference automatically handling the inclusion of the required Popper.js dependency.
server-core/src/main/java/io/onedev/server/web/asset/tippy · high confidence
Add Two-Factor Authentication management page
A new page has been added to the 'My' section that allows ordinary, non-disabled users to manage their two-factor authentication settings, provided 2FA is enforced for their account. The page displays a status panel for the current user and prevents access for service accounts or disabled users.
server-core/src/main/java/io/onedev/server/web/page/my/twofactorauthentication · high confidence
Add URL-based project import capability
Users can now import projects by specifying a remote Git repository URL (HTTP/HTTPS). This new feature introduces a URL import step in the project creation flow, supporting optional authentication credentials and allowing imports into a parent project hierarchy. The implementation includes server-side logic to clone the repository, validate the URL, and handle the import process, with secrets masked in logs.
server-plugin/server-plugin-import-url · high confidence
Add admin page for configuring and triggering database backups
A new Database Backup page has been added to the administration interface, allowing administrators to enable or disable automatic scheduled backups and manually trigger an immediate backup download. The page displays the current lead server address in a cluster environment and provides a form to save backup settings, which are persisted via the SettingService.
server-core/src/main/java/io/onedev/server/web/page/admin/databasebackup · high confidence
Add blame message tooltips for commit details
Users can now view detailed commit information via tooltips on blame annotations. This change introduces a new behavior that fetches the author, commit age, and full commit message via AJAX and displays them in a styled popup, including support for dark mode styling.
server-core/src/main/java/io/onedev/server/web/behavior/blamemessage · high confidence
Add build report tab with statistics link
A new 'Report' tab is now available on the build detail page, allowing users to view specific build reports (such as Clover coverage or Checkstyle results) and access a link to view historical statistics for that report type.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/report · high confidence
Add cancellable long-running task support with live progress feedback
The task button component now supports running cancellable long tasks from the UI. When a task is triggered, a modal panel appears displaying live log entries and progress messages, allowing users to monitor execution in real-time. The system automatically cleans up timed-out tasks and ensures that only one instance of a specific task runs per session, cancelling any previous in-flight execution.
server-core/src/main/java/io/onedev/server/web/component/taskbutton · high confidence
Add choice parameter default value providers
Added new build-spec parameter classes in the \choiceparam\ package to support configurable default values for choice parameters. This includes \ChoiceParam\ as the main spec, along with \DefaultValueProvider\ and \DefaultMultiValueProvider\ interfaces and their implementations (\SpecifiedDefaultValue\, \ScriptingDefaultValue\, \SpecifiedDefaultMultiValue\, \ScriptingDefaultMultiValue\). These allow users to set literal default values or evaluate Groovy scripts to determine defaults for single and multi-value choice parameters, utilizing Jakarta validation annotations.
server-core/src/main/java/io/onedev/server/buildspec/param/spec/choiceparam · high confidence
Add classic color picker component
The server now includes a classic color picker UI component, implemented via the Pickr library (version 1.8.2). This adds the necessary JavaScript (\pickr.min.js\) and CSS (\classic.min.css\) assets, along with a Wicket resource reference that handles loading the library and its jQuery dependency, enabling users to select colors using a palette, hue slider, and opacity controls.
server-core/src/main/java/io/onedev/server/web/asset/pickr · high confidence
Add client-side image cropping and text editing utilities
The application now includes built-in support for client-side image cropping via Cropper.js (v1.4.3) and text area auto-resizing via Autosize (v3.0.20). Additionally, it integrates jQuery Caret (v1.5.2) for precise cursor position management in input fields and Cookies.js for handling browser cookies. These libraries are registered as Wicket JavaScript resources, enabling features like image manipulation, dynamic form fields, and cookie-based state management directly in the browser.
(repo-wide) · high confidence
Add code problem display assets and field compare styling
This change introduces the frontend assets required to display code problems (such as linting or static analysis issues) within the source code view. It adds a JavaScript module (\code-problem.js\) that renders problem details in a popover, applying severity-based color coding (danger for critical/high, warning for medium) and supporting dark mode. It also includes the corresponding CSS (\code-problem.css\) and a Wicket resource reference (\CodeProblemResourceReference\) to manage dependencies like jQuery. Additionally, it adds styling for field comparison tables (\field-compare.css\), ensuring they are visible with dashed borders and respect dark mode themes.
server-core/src/main/java/io/onedev/server/web/asset/codeproblem · high confidence
Add code problem reporting and statistics to build views
The server-plugin-report-problem module now integrates code problem reports into the OneDev UI. Users can view a "Code Problems" statistics page in the project sidebar and see specific problem report tabs within individual build detail pages. The plugin also mounts URL routes for viewing problem reports and syncing problem directories during cluster replication.
server-plugin-report-problem · high confidence
Add color picker component with pre-defined swatches and dark mode support
Users now have a new color picker component available in the UI. This component allows selection from a set of pre-defined color swatches and supports dark mode styling. It is implemented as a Wicket component that integrates with the Pickr library, providing a classic theme interface with hex input and clear/save interactions.
server-core/src/main/java/io/onedev/server/web/component/colorpicker · high confidence
Add color picker support for editable properties
Users can now edit color values directly in forms using a dedicated color picker component. This change introduces a new \ColorEditSupport\ and \ColorPropertyEditor\ that detect the \@Color\ annotation on properties, rendering a visual color swatch in view mode and an interactive picker in edit mode, ensuring color fields are writable rather than read-only.
server-core/src/main/java/io/onedev/server/web/editable/color · high confidence
Add configurable retry conditions based on build logs and parameters
Users can now define custom criteria to determine whether a failed build should be automatically retried. This change introduces a new build specification feature that allows retry conditions to be evaluated against the build's log output (e.g., checking if the error message contains specific text) and build parameters (e.g., checking if a parameter is empty, not empty, or equals a specific value). The system supports logical combinations of these conditions using AND, OR, and NOT operators, as well as a 'timed out' condition to retry builds that exceeded their time limit, and a 'never' condition to disable retries.
server-core/src/main/java/io/onedev/server/buildspec/job/retrycondition · high confidence
Add copy-to-clipboard functionality for links and code spans
Users can now easily copy text to their clipboard directly from the interface. This change introduces a new \CopyToClipboardLink\ component for links and enhances editable components to support copying code spans. When a user clicks a supported link or code snippet, the content is copied to the clipboard, providing visual feedback via an icon change and a tooltip confirmation.
server-core/src/main/java/io/onedev/server/web/component/link/copytoclipboard · high confidence
Add coverage report plugin module
The server-plugin-report-coverage module is introduced to integrate code coverage statistics into the OneDev UI. It adds a "Coverage" item to the project sidebar menu and contributes a "Coverage" tab to the build detail view, allowing users to access coverage reports directly from the web interface. The module also configures URL mappings for coverage stats and individual reports, and ensures coverage data is synchronized across cluster nodes.
server-plugin-report-coverage · high confidence
Add dedicated CSS for the revision compare UI component
A new CSS resource file (revision-compare.css) and its Java reference class have been added to the server-core module. This stylesheet defines the layout and styling for the revision comparison view, including flexbox-based positioning for base and target revisions, responsive adjustments for mobile screens (wrapping and margin changes), and specific color variables for dark mode support.
server-core/src/main/java/io/onedev/server/web/asset/revisioncompare · high confidence
Add dedicated issue commits panel
A new IssueCommitsPanel component has been introduced to display commits that fix an issue. This panel renders a list of ProjectScopedCommit objects using the existing CommitInfoPanel and includes specific CSS styling to visually separate each commit entry.
server-core/src/main/java/io/onedev/server/web/component/issue/commits · high confidence
Add entity navigation panel for sequential browsing
A new EntityNavPanel component has been introduced to provide previous/next navigation controls for lists of entities. This panel displays the current position (e.g., "1/10") and offers clickable links to move to the preceding or succeeding item in a query result set, enabling users to browse through entities sequentially without reloading the entire list.
server-core/src/main/java/io/onedev/server/web/component/entity/nav · high confidence
Add enum property editing support with radio and select options
The server now provides a dedicated UI component for editing Java enum properties. Users will see enum fields rendered as either radio buttons or dropdown selects in the web interface, depending on whether the field is annotated with @RadioChoice. This change introduces the EnumEditSupport and EnumPropertyEditor classes to handle both viewing and editing of enum values, including proper display names and AJAX-based updates.
server-core/src/main/java/io/onedev/server/web/editable/enumeration · high confidence
Add hover-based dropdown behavior
Introduces a new \DropdownHoverBehavior\ component and its associated JavaScript logic to enable dropdown menus to open and close based on mouse hover events. This adds a new interaction pattern for UI elements, allowing users to trigger dropdowns by hovering over a trigger element with a configurable delay, rather than requiring a click.
server-core/src/main/java/io/onedev/server/web/behavior/dropdown · high confidence
Add image and video blob renderers
Users can now view image and video files directly in the web interface. This change introduces new renderer components (ImageRenderer, VideoRenderer) and their corresponding UI panels (ImageViewPanel, VideoViewPanel) that detect media types and display the content using native HTML tags, along with the necessary CSS styling for centered, responsive display.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/image · high confidence
Add image diff view for file changes
Users can now see side-by-side visual diffs for image files (e.g., PNG, JPG) when reviewing changes in the web interface. This change introduces the \BlobImageDiffPanel\ and \ImageDiffRenderer\ components, which render the 'before' and 'after' states of image blobs with placeholders if the image is unavailable, replacing the previous behavior where image changes were likely not visually diffed.
server-core/src/main/java/io/onedev/server/web/component/diff/blob/image · high confidence
Add issue reference display panel
A new UI component has been added to display issues that reference the current issue. This panel shows the summary of the referencing issue as a clickable link (when the user has access) and its current state badge, providing better visibility into issue relationships within the project.
server-core/src/main/java/io/onedev/server/web/component/issue/referencedfrom · high confidence
Add issue statistics panel to project view
A new IssueStatsPanel component has been introduced to display issue counts within the project interface. This panel renders a total issue count and breaks down the numbers by specific issue states, with each state link styled using its corresponding color. The component filters issues to the current project and links to the project's issue list page for detailed viewing.
server-core/src/main/java/io/onedev/server/web/component/project/stats/issue, server-core/src/main/java/io/onedev/server/web/component/project/stats/pack, server-core/src/main/java/io/onedev/server/web/component/project/stats/workspace · high confidence
Add issue time tracking progress indicators
Introduces new UI components in the issue progress area to display and manage time tracking data. Users can now see a completion rate (estimated vs. spent time) and a live working timer on issue pages. The update adds a detailed timing panel that allows users to log work, start/stop a stopwatch, and edit estimated time, with support for aggregating time across linked issues based on project settings.
server-core/src/main/java/io/onedev/server/web/component/issue/progress · high confidence
Add job log entry rendering assets with dark mode support
This change introduces the client-side assets (JavaScript, CSS, and resource reference) required to render individual job log entries in the UI. The JavaScript module handles appending and replacing log lines, including support for carriage-return-based overwrites and optional timestamp formatting via Moment.js. The CSS provides styling for log text and background colors, including specific rules to ensure these colors render correctly in dark mode.
server-core/src/main/java/io/onedev/server/web/asset/joblogentry · high confidence
Add new CodeMirror syntax highlighting themes
The code editor now supports several new visual themes, including 3024-day, 3024-night, abbott, abcd, ayu-dark, ayu-mirage, base16-dark, base16-light, bespin, blackboard, cobalt, and colorforth. These additions provide users with more options for customizing the appearance of the syntax-highlighted code editor.
server-core/src/main/java/io/onedev/server/web/asset/codemirror/theme · high confidence
Add page to manage user GPG keys
Users can now view and manage GPG keys associated with their account via a new dedicated page. This page displays a list of existing keys and provides a button to add new keys through a modal dialog, allowing users to verify commits and tags signed by their identity.
server-core/src/main/java/io/onedev/server/web/page/user/gpgkeys · high confidence
Add pie chart component with dark mode support and selection handling
A new pie chart component has been introduced for the server UI, built on Apache Wicket and ECharts. This component renders pie charts that support dark mode styling, display slice values in the legend, and allow users to select slices via AJAX callbacks. The implementation includes the Java panel class, a data model for pie slices, and associated JavaScript/CSS assets, with animations disabled for performance.
server-core/src/main/java/io/onedev/server/web/component/chart/pie · high confidence
Add project builds page
A new Project Builds page has been added to the application, providing a dedicated view for listing and managing project builds. This page integrates a saved queries panel for filtering and a build list component, supporting features such as query personalization, common query inheritance from parent projects, and audit logging for changes to build queries.
server-core/src/main/java/io/onedev/server/web/page/project/builds · high confidence
Add pull request query editing support
Introduces a new edit support component for pull request queries, enabling users to view and edit query strings within the pull request configuration UI. This implementation provides a read-only label for viewing existing queries and an input field with an assist behavior for editing, ensuring that the underlying property is strictly typed as a String.
server-core/src/main/java/io/onedev/server/web/editable/pullrequest · high confidence
Add pull request reference display component
A new UI component has been added to display information about pull requests that reference the current one. This component renders a summary link to the referencing pull request (visible only if the user has read access to the target project) alongside a status badge indicating the referencing pull request's state.
server-core/src/main/java/io/onedev/server/web/component/pullrequest/referencedfrom · high confidence
Add pull request status badge component
A new RequestStatusBadge component has been added to the pull request web components. This component displays a visual badge indicating the current status of a pull request (Open, Merged, or other), applying specific CSS classes (warning, success, info) to distinguish between states for the user.
server-core/src/main/java/io/onedev/server/web/component/pullrequest · high confidence
Add script selection dropdown for Groovy scripts
Users can now select from a list of available Groovy scripts in settings pages that use the @ScriptChoice annotation. The dropdown includes both user-defined scripts and built-in scripts contributed by extensions, with support for clearing the selection if the field is optional.
server-core/src/main/java/io/onedev/server/web/editable/scriptchoice · high confidence
Add source format configuration panel
Introduces a new UI component that allows users to configure source formatting options, specifically indent type (Spaces or Tabs), tab size (2, 4, or 8), and line wrap mode (No wrap or Soft wrap). The panel persists these settings in browser cookies and applies custom styling, including support for dark mode.
server-core/src/main/java/io/onedev/server/web/component/sourceformat · high confidence
Add support for publishing Checkstyle, ESLint, and PMD code quality reports
Users can now publish and visualize code quality issues from Checkstyle, ESLint, and PMD tools directly in the OneDev UI. This change introduces new build steps (Checkstyle Report, ESLint Report, PMD Report) that parse XML reports, map violations to specific file locations, and display them as annotated code problems with severity levels (High, Medium, Low). The ESLint step reuses the Checkstyle parser by expecting reports generated with the checkstyle formatter, while PMD supports priority-based severity mapping.
server-plugin/server-plugin-report-checkstyle · high confidence
Add support for publishing Clippy and Cppcheck static analysis reports
New build steps have been added to publish code quality reports from Rust's Clippy and C++'s Cppcheck. The Clippy step parses JSON output (generated via \cargo clippy --message-format json\) and maps warnings and errors to the platform's code quality view. The Cppcheck step parses XML output (generated via \cppcheck --xml\) and similarly displays findings, including multi-location issues like One Definition Rule violations. Both steps allow users to specify file patterns for the report files within the job working directory.
server-plugin/server-plugin-report-cppcheck · high confidence
Add support for publishing Pylint and Ruff code quality reports
Users can now publish code quality reports from Pylint and Ruff in their build pipelines. New 'Pylint Report' and 'Ruff Report' steps allow specifying JSON result files, which are parsed to display code problems with severity, file paths, and line/column locations in the build UI. The Ruff step defaults to failing the build on MEDIUM severity issues.
server-plugin/server-plugin-report-pylint · high confidence
Add symbolic link blob renderer
Users can now view symbolic links within project blobs. The new SymbolLinkRenderer detects symbolic link blobs and renders them using SymbolLinkPanel, which displays a clickable link to the target file. The panel resolves the target path, validates it, and creates a navigation link to the target blob if it exists; otherwise, the link is disabled. A red folder icon is displayed alongside the target path label, styled with specific CSS padding.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/symbollink · high confidence
Add syntax-highlighted code editing with variable auto-completion
Introduces a new code editing component for properties annotated with @Code, replacing plain text areas with a CodeMirror-based editor that provides syntax highlighting, line numbers, and code folding. The editor supports variable auto-completion triggered by the '@' character, allowing users to quickly insert available variables into their code snippets.
server-core/src/main/java/io/onedev/server/web/editable/code · high confidence
Add usage tracking utilities to prevent operations on in-use resources
The server now includes a new \Usage\ utility class and \InUseException\ in the \io.onedev.server.util.usage\ package to track resource usage contexts. This allows the system to detect when a resource is still referenced by other components and throw a specific exception with a detailed message listing the active usage locations, rather than failing silently or with a generic error.
server-core/src/main/java/io/onedev/server/util/usage · high confidence
Add user password change page with external authentication warning
A new password management page has been added for ordinary, enabled users. The interface displays a warning notice when a user is currently authenticating via an external system, informing them that setting a password will switch their authentication method to the internal database. The page integrates a password editing panel and restricts access to ordinary, non-disabled users.
server-core/src/main/java/io/onedev/server/web/page/user/password · high confidence
Add user project authorization management page
A new page has been added to allow users to view and manage their project authorizations. The interface displays a notice that authorizing a project also applies to child projects and provides a form to edit assigned roles per project. Upon saving, the system validates for duplicate entries, updates the user's project authorizations, and records the changes in the audit log.
server-core/src/main/java/io/onedev/server/web/page/user/authorization · high confidence
Add webhook channel notification settings for project events
Users can now configure webhook notifications for specific project events. The new ChannelNotificationSetting model allows administrators to define multiple webhook URLs and select which event types to monitor, including issues, pull requests, builds, code pushes, and code comments. Each event type can be filtered using specific queries (e.g., issue queries, build queries), and the system validates that webhook URLs are unique and properly formatted (http/https).
server-core/src/main/java/io/onedev/server/model/support/channelnotification · high confidence
Add working period input component for time tracking
Users can now enter time durations using a human-readable format (e.g., '1w 1d 1h 1m') in fields annotated with @WorkingPeriod. This new UI component automatically parses the input into integer values based on the project's time tracking settings and displays formatted periods in view mode.
server-core/src/main/java/io/onedev/server/web/editable/workingperiod · high confidence
Added UI for managing confidential issue authorizations
Users can now explicitly manage access to confidential issues via a new panel that lists authorized users, allows filtering by name, and enables adding or removing individual user authorizations through an AJAX-driven interface.
server-core/src/main/java/io/onedev/server/web/component/issue/authorizations · high confidence
Added git-receive-hook, iCal4j config, and test keys
This change introduces a new git-receive-hook script that forwards Git receive events to the OneDev server via HTTP POST, allowing for remote processing of git operations. It also adds an iCal4j configuration file to optimize calendar parsing by using a local time-zone cache, and includes a pair of test RSA public and private keys (test\_public.pem, test\_private.pem) likely intended for unit or integration testing purposes.
server-core/src/main/resources · high confidence
Added js-joda 1.11.0 for client-side date and time handling
The application now includes the js-joda library (version 1.11.0) to provide Java-like date and time functionality in the browser. This change introduces a new resource reference class, JsJodaResourceReference, which serves the minified js-joda.min.js asset, enabling consistent date/time operations on the client side.
server-core/src/main/java/io/onedev/server/web/asset/jsjoda · high confidence
Added placeholder for custom plugins and libraries
A new empty file named 'put\_custom\_plugins\_and\_libs\_here' has been added to the server-product/system/site/lib directory. This serves as a placeholder or documentation hint indicating where users can place custom plugins and libraries for the site.
server-product/system/site · high confidence
Added retry utility with exponential backoff
A new RetryUtils class has been introduced to provide a configurable retry mechanism for internal operations. This utility supports exponential backoff with jitter, allowing callers to define maximum retries, base delay, and backoff exponents to handle transient failures more gracefully.
server-core/src/main/java/dev · high confidence
Admin UI for managing Groovy scripts
Administrators can now create, edit, and delete Groovy scripts directly from the Administration page. This change introduces a new list view with sortable columns for script name and usage permissions (jobs vs. workspaces), along with modal dialogs for adding or modifying scripts. The implementation includes validation to prevent duplicate script names and integrates with the audit service to log all script creation, modification, and deletion events.
server-core/src/main/java/io/onedev/server/web/page/admin/groovyscript · high confidence
Admin UI for managing issue link specifications
Administrators can now define and manage issue link types (such as 'blocks' or 'relates to') via a new page in the project settings. This change introduces a list view for existing link specifications and a modal editor that allows creating, editing, and deleting link definitions, including validation to prevent duplicate names and ensuring distinct names for bidirectional links. The implementation includes audit logging for all changes to link specifications.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/linkspec · high confidence
Admin UI for managing workspace provisioners
Administrators can now manage workspace provisioners directly from the Administration page. This change introduces a new Workspace Provisioners page that allows users to add, edit, copy, and delete provisioners, as well as toggle their enabled status and reorder them via drag-and-drop. The interface includes a 'Test' button to validate provisioner configurations before saving and enforces unique names across the list.
server-core/src/main/java/io/onedev/server/web/page/admin/workspaceprovisioner · high confidence
Admin UI for plugin-contributed settings
Administrators can now configure settings contributed by plugins directly from the web interface. A new ContributedAdministrationSettingPage provides a dedicated form with an enable/disable toggle and an editor for the setting's properties, ensuring changes are saved and audited.
server-core/src/main/java/io/onedev/server/web/page/admin/pluginsettings · high confidence
Admin page for configuring alert settings with change auditing
Administrators can now manage alert settings through a new dedicated page in the admin interface. This page allows users to edit notification configurations via a form and automatically records an audit log entry whenever the settings are saved, capturing the previous and new values for compliance and tracking purposes.
server-core/src/main/java/io/onedev/server/web/page/admin/alertsettings · high confidence
Admin page for configuring coding agent commit message fix settings
Administrators can now configure how coding agents reference fixed issues in commit messages, including specifying prefix and suffix patterns to detect these references. This change introduces a new settings page within the Issue Settings section that allows users to edit and save these configurations, with changes being audited for compliance.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/commitmessagefix · high confidence
Admin page for configuring external issue transformers
Administrators can now define transformers to convert external issue references into clickable links within commit messages and pull request descriptions. A new page in the Issue Settings section allows users to edit these transformer rules via a form, and all changes to the transformer configuration are recorded in the system audit log for traceability.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/externalissuepattern · high confidence
Admin page for managing GPG signing keys
Administrators can now generate, view, and delete a system-wide GPG signing key via a new GPG Signing Key page in the admin interface. The page displays the key's email address, Key ID, and public key (with a copy button), and allows generating a new key for signing commits or deleting an existing one, with audit logging for both actions.
server-core/src/main/java/io/onedev/server/web/page/admin/gpgsigningkey · high confidence
Admin page for managing GPG trusted keys
A new administration page has been added to manage GPG public keys used for signature verification. Administrators can now add trusted keys via a modal form and view a table listing the Key ID, associated Email Addresses, and Sub Keys for each entry. Trusted keys can also be removed from the list, and the system prevents adding duplicate keys or sub-keys that are already trusted.
server-core/src/main/java/io/onedev/server/web/page/admin/gpgtrustedkeys · high confidence
Admin page for managing global label specifications
A new administration page has been added that allows administrators to define and update global label specifications. The page provides a form to edit a list of labels, validates that label names are unique, and persists changes via the LabelSpecService. It also records an audit log entry whenever the label definitions are modified.
server-core/src/main/java/io/onedev/server/web/page/admin/labelmanagement · high confidence
Admin pages for customizing system email templates
New Wicket administration pages have been added to the email templates section, allowing administrators to customize the Groovy templates for system alert, email verification, password reset, user invitation, and service desk feedback emails. The implementation introduces a reusable page hierarchy (AbstractTemplatePage, AbstractNotificationTemplatePage, AbstractSimpleNotificationTemplatePage) that provides a consistent editor interface, displays variable help documentation, and logs changes to the audit trail when templates are saved or reset to defaults.
server-core/src/main/java/io/onedev/server/web/page/admin/emailtemplates · high confidence
Admins can now define and manage default issue boards for all projects
A new page in the admin settings allows administrators to define default issue boards that apply to all projects, with individual projects able to override these defaults. Users can add, edit, and delete these default boards via a sortable table interface, and all changes to default board configurations are now recorded in the system audit log.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/defaultboard · high confidence
Admins can now define and manage issue description templates
A new Issue Template management interface has been added to the Issue Settings page, allowing administrators to create, edit, and delete description templates that are automatically applied to new issues based on query matching. This change introduces the IssueTemplateListPage for managing the template list and the IssueTemplateEditPanel for editing individual templates, with all changes audited via the AuditService.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/issuetemplate · high confidence
Admins can now upload separate logos for light and dark modes
The Branding settings page now includes fields to upload distinct 128x128 transparent PNG logos for light and dark themes. Administrators can customize the site's visual identity per theme, and changes are automatically synchronized across all servers in a cluster.
server-core/src/main/java/io/onedev/server/web/page/admin/brandingsetting · high confidence
Apply code suggestions via pull request comments
Users can now apply suggested code changes directly from pull request code comments. This change introduces the backend logic and UI modal (SuggestionApplyModalPanel) that allows a user to select a target branch and provide a commit message, which then creates a new commit with the suggested edits and automatically resolves the comment. It also handles branch protection rules and stale suggestion errors gracefully.
server-core/src/main/java/io/onedev/server/web/component/suggestionapply · high confidence
Assign multiple roles to users and groups in project authorization
Project administrators can now assign multiple roles to individual users and groups via the new User and Group Authorizations pages in project settings. This change replaces the previous single-role-per-entity model, allowing granular permission combinations (e.g., Developer and Reporter) for the same user or group, with changes automatically propagating to child projects.
server-core/src/main/java/io/onedev/server/web/page/project/setting/authorization · high confidence
Audit logging for issue state transition changes
Changes made to issue state transition rules at the system level are now recorded in the audit log. Administrators can track when transitions are added, modified, or deleted, including the previous and new configuration details, providing better visibility into how issue workflow rules are managed.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/transitionspec · high confidence
Automatic Gradle CI job suggestions
The Gradle build spec plugin now automatically suggests a CI job configuration when a project contains Gradle build files (build.gradle or build.gradle.kts). The suggested job includes steps to check out code, set up a Gradle cache, detect the project version, run tests, and publish JUnit test reports, with triggers configured for both branch updates and pull request updates.
server-plugin/server-plugin-buildspec-bazel, server-plugin/server-plugin-buildspec-gradle · high confidence
Automatic Maven CI job suggestion
The Maven buildspec plugin now automatically suggests a CI job when a project contains a pom.xml file. This suggested job includes steps to check out code, set up a Maven repository cache, run tests, detect the project version, set the build version, and publish JUnit test reports, with triggers configured for branch updates and pull requests.
server-plugin/server-plugin-buildspec-maven · high confidence
Automatic Node.js CI job suggestions for React, Vue, and Express projects
The Node.js build spec plugin now automatically suggests pre-configured CI jobs when it detects a \package.json\ file. For React projects, it proposes a job running lint, test, and build scripts (defaulting to \react-scripts\); for Vue projects, it suggests a job running lint, test, and build scripts (defaulting to \jest\); and for Express projects, it provides a similar suggestion. Each suggested job includes steps for checking out code, caching npm dependencies, setting the build version via a contributed Groovy script, and executing the detected or default commands.
server-plugin/server-plugin-buildspec-node · high confidence
Branch selection now supports multi-select and tag filtering
The branch choice editor in the web UI has been updated to allow selecting multiple branches simultaneously via a new multi-select component, in addition to the existing single-branch selection. The underlying selection mechanism now respects a 'tags mode' flag, enabling users to filter and choose from tags when configured, rather than being limited to branches alone.
server-core/src/main/java/io/onedev/server/web/editable/branchchoice · high confidence
CMake project build suggestions with dependency caching
The CMake plugin now automatically suggests a CI job for projects containing a CMakeLists.txt file. The suggested job includes checkout, test execution, and coverage reporting steps, and intelligently configures dependency caching for vcpkg, Conan, or FetchContent based on the presence of vcpkg.json, conanfile.txt, or conanfile.py in the repository.
server-plugin/server-plugin-buildspec-cmake · high confidence
Centralized management of query watches in user profile
Users can now view and remove their subscribed query watches from a single, tabbed interface in their profile. This new QueryWatchesPanel aggregates watches across six categories—Issue, Pull Request, Build, Pack, Workspace, and Commit—allowing users to select and delete multiple subscriptions at once. The change introduces specific management panels for each category (e.g., BuildQueryWatchesPanel, IssueQueryWatchesPanel) that display the query name, associated project (or 'Global' for account-level settings), and provide direct links to the relevant lists, while logging unsubscription actions to the audit trail.
server-core/src/main/java/io/onedev/server/web/component/user/querywatch · high confidence
Client-side PlantUML rendering in markdown
Markdown content containing PlantUML diagrams is now rendered directly in the browser using a compiled JavaScript library (TeaVM) instead of requiring server-side processing. This change introduces a new \PlantUmlResourceReference\ and associated JavaScript assets (\plantuml-init.js\, \plantuml.js\) that handle the dynamic loading of the rendering engine, queue render requests, and inject SVG output into the page, including support for dark mode and error handling.
server-core/src/main/java/io/onedev/server/web/asset/plantuml · high confidence
Clustered session support and configurable session timeout
The server now supports clustered session storage via Hazelcast, allowing sessions to be shared across multiple server instances for high availability. Additionally, administrators can now configure the session timeout duration through system settings, replacing the previous fixed default of 30 minutes. This change also introduces Kubernetes health probe endpoints (/healthz and /readyz) to monitor server readiness and includes a filter to disable the HTTP TRACE method for security.
server-core/src/main/java/io/onedev/server/jetty · high confidence
Comment history tracking and revision viewing
Users can now view the edit history of comments. A new CommentHistoryLink component provides a menu of past revisions, and clicking a revision opens a modal (CommentRevisionPanel) that displays a plain-text diff of the changes made in that specific edit, showing who edited the comment and when.
server-core/src/main/java/io/onedev/server/web/component/comment · high confidence
Configurable Git and Curl executable paths
Users can now explicitly specify the paths to the Git and Curl executables used by the server, rather than relying solely on system defaults. New configuration options allow selecting either the system-path versions (default) or providing custom absolute paths for both tools, with validation ensuring the specified executables are valid and accessible.
server-core/src/main/java/io/onedev/server/git/location · high confidence
Configurable pull request merge strategies and default settings
Users can now configure default pull request behaviors at the project level, including selecting a merge strategy (create merge commit, create merge commit if necessary, squash, or rebase), specifying default assignees, and enabling automatic deletion of the source branch after merge. The system also supports saving named queries for pull requests to simplify filtering.
server-core/src/main/java/io/onedev/server/model/support/pullrequest · high confidence
Configurable wiki storage location via folder settings
Users can now specify exactly which repository folder stores wiki pages through a new Wiki Setting. This setting allows selecting a specific path (defaulting to 'wiki') or leaving it to inherit from the parent project. The configuration also supports pointing to a Git submodule and enables file exclusion via a .wikiignore file in the wiki root folder.
server-core/src/main/java/io/onedev/server/model/support/wiki · high confidence
Display child projects in the project navigator tree
Users can now see a hierarchical tree of child projects directly within the project navigator. This new component renders a nested list of child projects, each showing an avatar and name, and links to the Project Overview page. To maintain performance, the tree caps the display at 1,000 nodes per level and shows a warning message if the limit is exceeded.
server-core/src/main/java/io/onedev/server/web/component/project/childrentree · high confidence
Display detailed verification results for GPG and SSH signed commits
Users can now see specific details about commit signature verification directly in the UI. New Wicket components (GpgVerificationDetailPanel and SshVerificationDetailPanel) display the signing key ID and signer email addresses for GPG signatures, and the key type and fingerprint for SSH signatures, alongside a success or failure status message. The SignatureStatusPanel provides the interactive dropdown that triggers this detailed view, allowing users to verify the authenticity of commits signed with either GPG or SSH keys.
server-core/src/main/java/io/onedev/server/web/component/gitsignature · high confidence
Display source context for code comments
A new UI component has been added to show the origin or context of a code comment. When viewing a comment, users will now see a link to the specific file and line path where the comment was originally created, improving traceability and context for code discussions.
server-core/src/main/java/io/onedev/server/web/component/codecomment/referencedfrom · high confidence
Enhanced Markdown file viewing with outline and editing capabilities
Markdown files now feature a dedicated viewer that displays a table of contents outline on the right side, which users can toggle via a checkbox option; the outline's visibility and width are persisted in browser cookies. Additionally, a new edit panel allows users to modify Markdown files using a dedicated editor, with a diff viewer showing changes between the original and edited content. The rendering logic has been updated to detect Markdown files by language (including .mkd extensions) and apply specific CSS styling for better readability and layout.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/markdown · high confidence
Enhanced text diff viewing with syntax highlighting and expandable hunks
Users can now view file changes with syntax highlighting applied to both unified and split diff views, making code changes easier to read. The diff interface also supports expandable hunks, allowing users to click controls to reveal more context lines around changes without loading the entire file at once.
server-core/src/main/java/io/onedev/server/web/asset/textdiff, server-core/src/main/java/io/onedev/server/web/component/diff · high confidence
Expanded editor capabilities with new keymaps and syntax modes
The code editor now supports Emacs, Sublime Text, and Vim keybindings, allowing users to edit code using their preferred navigation and editing shortcuts. Additionally, syntax highlighting has been added for a wide range of new languages and formats, including APL, ASN.1, Asterisk, Brainfuck, and ASCII Armor (PGP), while existing modes for C-like languages, Bash, and Julia have been updated to fix highlighting bugs.
server-core/src/main/java/io/onedev/server/web/asset/codemirror/mode · high confidence
Expanded issue query criteria for custom fields and engagement metrics
The issue search engine now supports filtering by boolean, date, choice, and build custom fields, as well as by engagement metrics such as comment count, emoji reactions (eyes, confused, etc.), and estimated time. Users can also filter by description content, specific comments, and issues fixed in builds or commits, providing more granular control over issue lists.
server-core/src/main/java/io/onedev/server/search/entity/issue · high confidence
Extensible Git pre-receive and post-receive hook callbacks
The server now exposes configurable pre-receive and post-receive Git hook callbacks via dedicated servlet endpoints. This introduces a new \GitPreReceiveChecker\ extension point, allowing plugins to inject custom validation logic that can block pushes (e.g., for branch protection or workspace constraints) before they are accepted. Post-receive callbacks automatically trigger internal events for ref updates, ensuring that downstream features like pull request link generation and listener notifications are consistently fired after a push completes.
server-core/src/main/java/io/onedev/server/git/hook · high confidence
Forking a project now allows customizing key, labels, roles, and parent location
When forking a project, users can now configure the new project's key, description, and labels, assign default roles, and choose a specific parent project for the fork (including respecting a system-wide default fork root). The fork operation also copies settings such as issue management, pack management, time tracking, build configurations, and workspace specs from the source project, and the action is recorded in the audit log.
server-core/src/main/java/io/onedev/server/web/component/project/forkoption · high confidence
Full-text search support for issues and pull requests
Users can now search for issues and pull requests by content using full-text search. This change introduces new Lucene-based text indexing services for Issues, Pull Requests, and Code Comments, allowing queries to match against titles, descriptions, comments, and file paths. The search implementation includes support for issue numbers (e.g., \#123), multi-field boosting, and security-aware filtering for confidential issues.
server-core/src/main/java/io/onedev/server/search/entitytext · high confidence
GitLab import plugin now supports importing issues and child projects
The GitLab import plugin has been expanded to support importing issues from GitLab projects, in addition to the existing project import capability. Users can now configure issue import options, including mapping GitLab labels to OneDev custom fields, assigning issues to users, and setting due dates. Additionally, the plugin now supports importing projects from child project views, allowing for more granular control over project hierarchy during import.
server-plugin/server-plugin-import-gitlab · high confidence
Granular access token permissions with expiration and audit logging
The Access Tokens page now supports creating tokens with specific expiration dates and assigning multiple roles to specific projects, rather than granting the token the owner's full permissions by default. Administrators with an active subscription can also configure default project settings that apply to all current and future projects. All token creation, editing, and regeneration actions are now recorded in the system audit log for traceability.
server-core/src/main/java/io/onedev/server/web/component/user/accesstoken · high confidence
Group-level project authorization with multi-role support
Administrators can now manage project authorizations directly from the group settings page, allowing multiple roles to be assigned to a single project. The new GroupAuthorizationsPage provides a form to edit these assignments, automatically propagating the selected roles to all child projects, and records the changes in the audit log for accountability.
server-core/src/main/java/io/onedev/server/web/page/admin/groupmanagement/authorization · high confidence
HTML report plugin adds build tab contributions and file serving infrastructure
The HTML report plugin now registers itself as the implementation for PublishReportStep, contributing a new BuildTabContribution that dynamically lists available HTML reports as tabs in the build detail view. It also mounts URL routes for viewing HTML reports directly in the browser and downloading them, and registers a BuildStorageSyncer to ensure report files are synchronized across cluster nodes.
server-plugin-report-html · high confidence
Import GitHub projects and issues from child project views
The GitHub import plugin now supports importing repositories and issues when initiated from a child project view. A new \ChildrenImportRepositories\ class and updates to \GitHubProjectImporter\ allow the import process to automatically use the current child project as the parent for imported repositories, enabling hierarchical project structures. The import workflow remains a three-step process (authenticate, choose repository, specify options) and includes options to import all repositories, include forks, and map GitHub issues to OneDev fields.
server-plugin/server-plugin-import-github · high confidence
Import YouTrack projects from child project views
The YouTrack import plugin now supports importing projects when initiated from a child project view. A new \ChildrenImportProjects\ class extends the standard \ImportProjects\ importer to automatically inherit the parent OneDev project context, allowing users to nest imported YouTrack projects under an existing OneDev project rather than only at the root level.
server-plugin/server-plugin-import-youtrack · high confidence
Improved rendering of Git submodules with unregistered path detection
The web interface now uses a dedicated GitLink renderer to display submodule references. When viewing a blob that represents a submodule, the UI shows the submodule details and provides a clickable link to the referenced project and commit if the URL is resolvable within the server. Additionally, if the submodule path is not registered in the .gitmodules file, a warning message is displayed to indicate that the path is unregistered.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/gitlink · high confidence
Initial Playwright-based end-to-end test suite for OneDev
The project now includes a new end-to-end testing infrastructure using Playwright to validate the OneDev web interface in Chromium. This setup automatically manages a local server instance (via \dev.sh prod\) with unattended first-run configuration, including a readiness check against the \/api/server/ready\ endpoint before tests begin. The suite covers critical user workflows such as SSH cloning with key management, application-relative redirects, login redirects with session handling, WebSocket partial updates for real-time UI changes, and Jev AI integration for issue suggestions and service desk fields. Configuration allows for flexible execution, including skipping the local web server for remote testing, enabling server stdout logging for debugging, and running tests in headed or UI modes.
e2e-test · high confidence
Initial repository scaffolding and development environment setup
Establishes the foundational project structure by adding the \.gitignore\ file to exclude build artifacts and IDE configurations, defining the \server-ee\ submodule in \.gitmodules\, and providing the \dev.sh\ script to manage the local development server, hot-reload compilation, and classpath resolution. Includes the \.onedev-buildspec.yml\ CI/CD pipeline for releases and site publishing, \AGENTS.md\ for AI assistant guidelines, and initial documentation files like \readme.md\ and \license.txt\.
(repo-wide) · high confidence
Initial server-core module structure and core services
This change introduces the foundational server-core module, establishing the core application lifecycle in OneDev.java, dependency injection configuration in CoreModule.java, and server configuration handling in ServerConfig.java. It adds essential infrastructure services including a Quartz-based task scheduler (DefaultTaskScheduler), OAuth token management with automatic refresh (DefaultOAuthTokenService), and cluster event handling (NodeConnected, NodeDisconnected). The module also sets up static asset serving via AssetServlet and its implementations, along with initial support for project replication (ProjectReplica) and time tracking aggregation.
server-core/src/main/java/io/onedev/server · high confidence
Interactive job submission with branch/tag selection and parameters
Users can now manually trigger a job from a specific commit with the ability to select which branches or tags should be built and to provide custom parameter values. When a job has multiple relevant refs or defined parameters, a modal dialog appears allowing the user to choose the target refs and fill in parameter inputs before submission; if only a single ref and no parameters are involved, the job runs immediately. The system also validates that the selected branches are up-to-date, warning the user if a branch has been updated since the commit was viewed.
server-core/src/main/java/io/onedev/server/web/component/job · high confidence
Introduce AI chat interface with Markdown copy and resizable layout
Users can now interact with AI assistants via a new chat panel accessible from the server UI. This panel supports selecting from entitled AI models, managing multiple chat sessions, and sending messages via a resizable side panel that adapts to mobile screens. A key usability improvement is the ability to copy individual AI responses as Markdown directly from the chat history, and the interface includes visual indicators for active responses and input state.
server-core/src/main/java/io/onedev/server/web/component/ai · high confidence
Introduce CodeMirror-based editor for plain text files
Users editing plain text blobs in the repository now benefit from a dedicated editor panel that integrates CodeMirror, providing syntax highlighting, line numbers, code folding, and bracket matching. This change replaces the previous basic text area with a richer editing experience for plain text files, ensuring proper handling of line endings and form submission states.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/edit/plain · high confidence
Introduce JobExecutor model with security and configuration capabilities
The server now defines a new \JobExecutor\ abstract model class that serves as the base for all job execution agents. This model introduces configurable security settings, specifically toggles to enable or disable site publishing and HTML report publishing, which helps prevent XSS attacks by restricting these features to trusted executors. It also includes a \jobMatch\ field to define which jobs an executor can handle, along with helper methods to manage project moves and deletions. Supporting classes such as \RegistryLogin\ (for container registry authentication with variable interpolation), \ServiceLocator\ (for matching Kubernetes services by name/image with node selectors), and \KubernetesAware\ have been added to support these execution configurations.
server-core/src/main/java/io/onedev/server/model/support/administration/jobexecutor · high confidence
Introduce Kubernetes Job Executor
Adds a new Kubernetes-based job executor that runs build jobs as pods directly within a Kubernetes cluster, eliminating the need for separate agent nodes. This executor allows users to configure resource requests (CPU and memory), storage classes, and registry logins, and automatically discovers available Kubernetes clusters to enable job execution on them.
server-plugin/server-plugin-executor-kubernetes · high confidence
Introduce PolymorphicEditor component for dynamic type selection
A new PolymorphicEditor Wicket component has been added to the server-core module, enabling users to dynamically switch the type of an editable object at runtime. The component renders a dropdown selector that lists available implementations of a base class (discovered via the ImplementationRegistry or ImplementationProvider annotation) and swaps the underlying BeanEditor instance when a different type is chosen, preserving existing property values where possible.
server-core/src/main/java/io/onedev/server/web/component/polymorphiceditor · high confidence
Introduce SSO authentication model and connector framework
Added the core model classes for Single Sign-On (SSO) support: \SsoAuthenticated\ represents the authenticated user context carrying subject, username, and profile details, while \SsoConnector\ provides the abstract base for SSO providers, defining methods for building authentication URLs, handling auth responses, and constructing callback URIs.
server-core/src/main/java/io/onedev/server/model/support/administration/sso · high confidence
Introduce Server Docker Executor for running CI jobs in containers
A new Server Docker Executor plugin is added, allowing build jobs to run as Docker containers directly on the OneDev server (excluding Windows). This executor provides configuration options for registry logins, Docker socket paths, Buildx builders, concurrency limits, and security settings such as image pull policies and builder cache pruning. It is automatically discovered and enabled when the server is not running in Kubernetes mode and the host OS is not Windows.
server-plugin/server-plugin-executor-serverdocker · high confidence
Introduce Server Docker Provisioner for workspaces
Adds a new Server Docker Provisioner that allows workspaces to run as Docker containers directly on the OneDev server. This feature is available on non-Windows systems when Kubernetes is not configured, enabling users to provision workspaces locally via Docker with configurable resource limits (CPU/memory), registry authentication, and security options like mounting the Docker socket. The implementation includes a new module for discovery and registration of this provisioner type.
server-plugin/server-plugin-provisioner-serverdocker · high confidence
Introduce Server Shell Workspace Provisioner
A new Server Shell Provisioner is now available, allowing workspaces to run directly on the OneDev server using tmux instead of requiring a Kubernetes cluster or Docker container. This feature adds a new provisioning option that executes workspaces with the same privileges as the OneDev process, requiring tmux to be installed on the server. Administrators can configure the tmux executable path, set concurrency limits, and define which projects are permitted to use this provisioner via path wildcards. The implementation includes a new plugin module to register the provisioner and handles workspace setup, cache provisioning, and shell execution on the server host.
server-plugin/server-plugin-provisioner-servershell · high confidence
Introduce SimplePage base class with unified styling for authentication and error pages
A new SimplePage base class and its associated CSS have been added to provide a consistent, modern look for simple pages such as login, 2FA, and error screens. This change introduces a centered card layout with a brand logo, title, and subtitle, featuring styled form controls and buttons. It also includes specific support for dark mode, ensuring that these pages render correctly with appropriate colors and contrast when the user's theme is set to dark.
server-core/src/main/java/io/onedev/server/web/page/simple · high confidence
Introduce artifact metadata model classes
Added new \ArtifactInfo\, \DirectoryInfo\, and \FileInfo\ classes in the \io.onedev.server.util.artifact\ package to represent artifact metadata. These classes provide a structured way to access artifact path, last modified timestamp, file length, media type, and directory children, laying the groundwork for artifact-related functionality.
server-core/src/main/java/io/onedev/server/util/artifact · high confidence
Introduce build spec pipeline view
Adds a new visual pipeline component for build specs, rendering jobs in a column-based layout with SVG dependency lines. The \PipelinePanel\ component handles job sorting and selection, while supporting JavaScript-based interaction for marking active jobs and drawing dependency curves.
server-core/src/main/java/io/onedev/server/web/component/pipeline · high confidence
Introduce dedicated UI component for displaying and editing issue field values
A new \FieldValuesPanel\ component has been added to render issue field values with support for inline editing, dependent field prompts, and links to related commits or pull requests. The component includes a dedicated CSS resource (\field-values.css\) to style the field values display, including hover effects for editable fields and proper badge padding. This change provides a consistent and reusable way to display and interact with issue field values across the application.
server-core/src/main/java/io/onedev/server/web/component/issue/fieldvalues · high confidence
Introduce dedicated branch selection components
Added new Wicket components (BranchSingleChoice, BranchMultiChoice) and a supporting JavaScript formatter for selecting branches. These components provide a consistent user experience with placeholders like "Choose branch..." and "Choose branches...", handle HTML escaping for branch names, and integrate with the existing Select2-based choice infrastructure.
server-core/src/main/java/io/onedev/server/web/component/branch/choice · high confidence
Introduce dedicated commit option panel for blob edits
A new CommitOptionPanel component has been added to the project blob rendering area, providing a dedicated UI for users to enter commit messages and submit file changes. This panel includes a multiline text field for the commit message, which is automatically populated with a default message based on the operation (add, edit, delete, or rename), and displays a diff of conflicting changes if another user has modified the file since editing began. The submission button is dynamically enabled or disabled based on whether the blob content has been modified, and the UI includes feedback mechanisms to warn users about concurrent edits or file mode/type changes.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/commitoption · high confidence
Introduce dedicated side panel for build details
A new BuildSidePanel component has been added to display detailed build metadata in a structured side panel. This panel presents key information including the commit, branch, tag, job, agent, submitter, submission and retry timestamps, queueing and running durations, cancellation details, labels, associated pull request, build parameters, and dependency relationships. The implementation includes a new CSS resource (build-side.css) to style the panel with a table-like layout for properties and support for dark mode.
server-core/src/main/java/io/onedev/server/web/component/build/side · high confidence
Introduce dedicated workspace terminal UI with mobile scroll support
Users can now access a dedicated terminal tab within the workspace detail view, featuring a new UI component that displays specific scroll instructions for mobile devices (tap tmux \[) alongside desktop instructions. The terminal session is managed via WebSocket, respects workspace modification permissions for input, and allows users to close the terminal with a confirmation dialog, redirecting them to the default workspace page upon exit.
server-core/src/main/java/io/onedev/server/web/page/project/workspaces/detail/terminal · high confidence
Introduce global custom issue field management
Administrators can now define, edit, and delete custom issue fields (such as choice fields) via a new list page in the global issue settings. This change adds the UI components (FieldBean, FieldEditPanel, IssueFieldListPage) and backend logic to manage these field specifications, including validation for unique names, audit logging for changes, and workflow reconciliation when field structures are modified.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/fieldspec · high confidence
Introduce infinite scroll behavior for list components
Added a new InfiniteScrollBehavior component and its associated JavaScript logic to enable automatic loading of additional items as users scroll through lists. This feature allows pages with large datasets to load content incrementally, improving performance and user experience by reducing initial page load times and memory usage.
server-core/src/main/java/io/onedev/server/web/behavior/infinitescroll · high confidence
Introduce pack-specific event model
Added a new event hierarchy for package pack operations, introducing an abstract \PackEvent\ base class and a concrete \PackPublished\ event. This change enables the system to track and notify users when a package pack is published, providing specific activity details and URLs for the published artifact.
server-core/src/main/java/io/onedev/server/event/project/pack · high confidence
Introduce paging history support interfaces
Added three new interfaces in the \paginghistory\ package to standardize how page state is tracked and restored: \PagingHistorySupport\ defines the core contract for retrieving the current page, \ParamPagingHistorySupport\ extends this to allow generating page parameters for navigation, and \AjaxPagingHistorySupport\ adds a callback for handling AJAX navigation events.
server-core/src/main/java/io/onedev/server/web/util/paginghistory · high confidence
Introduce project dependency job with configurable build selection
Users can now configure a Project Dependency job to retrieve artifacts from other authorized projects. This new capability allows specifying the target project and choosing which build's artifacts to fetch via two strategies: selecting the last finished build of a specific job (optionally filtered by a ref name) or specifying a build number directly. Artifacts can be filtered using path patterns and optionally downloaded to a custom subdirectory within the job workspace, with support for access tokens to authenticate against the source project.
server-core/src/main/java/io/onedev/server/buildspec/job/projectdependency · high confidence
Introduce project hierarchy and new project creation UI
Users can now create child projects nested under a parent project via the new NewProjectPage, which supports setting a parent path, default roles, and labels. The ProjectPage base class and its HTML template have been updated to display the full project path in the top bar, with JavaScript and CSS handling responsive truncation of long paths. Additionally, a NoProjectStoragePage has been added to gracefully handle cases where a project's storage is missing, and the ProjectListPage now supports saved queries for filtering projects.
server-core/src/main/java/io/onedev/server/web/page/project · high confidence
Introduce pull request assignee selection and management
Users can now assign and remove assignees for pull requests via a new UI component. This change adds an interactive list that displays current assignees with the ability to remove them, alongside a user picker (Select2) to add new assignees. The selection logic restricts choices to users with write access to the project who are effective collaborators and are not already assigned, ensuring the interface reflects current permissions and existing assignments.
server-core/src/main/java/io/onedev/server/web/component/pullrequest/assignment · high confidence
Introduce pull request selection component with emoji support
Added a new set of components in the pull request choice package to enable selecting pull requests via a Select2 dropdown. This includes a choice provider that supports fuzzy searching and displays pull request titles with emoji formatting, a single-choice UI component, and associated JavaScript formatters for consistent display of pull request references and titles in the interface.
server-core/src/main/java/io/onedev/server/web/component/pullrequest/choice · high confidence
Introduce query watch and subscription support classes
Added new utility classes in the server-core watch package to manage user preferences for named queries. The WatchStatus enum defines three states (Default, Watch, Ignore) for query visibility, while QueryWatchSupport provides methods to retrieve and update these statuses, and QuerySubscriptionSupport serves as an abstract base for managing query subscriptions.
server-core/src/main/java/io/onedev/server/util/watch · high confidence
Introduce selectable Git credential types (Default, HTTP, SSH) for build jobs
Build jobs can now explicitly choose how to authenticate with Git repositories via a new GitCredential abstraction. The server-core module adds three implementations: Default (using the project's standard clone URL), HTTP(S) (using a job secret as an access token), and SSH (using a job secret as an SSH private key with server host key verification). This allows users to configure authentication per job rather than relying on a single global method.
server-core/src/main/java/io/onedev/server/buildspec/job/gitcredential · high confidence
Introduce server-side cache provisioners for jobs and workspaces
Added three new classes in the server-core cache package to handle cache operations for CI/CD jobs and workspaces. ServerCacheProvisioner provides the core logic for downloading and uploading cache archives, including support for cross-server transfers via the cluster API when the active server is remote. ServerJobCacheProvisioner and ServerWorkspaceCacheProvisioner extend this base class to provide context-specific project ID resolution and upload permission checks, enabling cache functionality for job contexts and workspace contexts respectively.
server-core/src/main/java/io/onedev/server/cache · high confidence
Introduce server-side terminal shell infrastructure
The server now includes the core backend components required to support interactive terminal sessions. This change adds the \Shell\ interface and its \CommandlineShell\ implementation, which manages the lifecycle of external command processes, handles standard input/output/error streams via a pseudo-terminal (PTY), and supports terminal resizing. The \Terminal\ interface is also introduced to define the contract for shell output and lifecycle events, enabling the server to drive terminal-based interactions.
server-core/src/main/java/io/onedev/server/terminal · high confidence
Introduce server-side user data provisioner for workspace initialization
Added ServerUserDataProvisioner to handle the provisioning of user workspace data. This component manages the synchronization of workspace files by generating shell entrypoint arguments to copy or create necessary paths within the container, and delegates upload/download operations to the UserService for tar-based data transfer.
server-core/src/main/java/io/onedev/server/userdata · high confidence
Introduce structured initialization stages and manual configuration models
The server's initialization process now uses a structured model to handle manual configuration steps. New classes, InitStage and ManualConfig, define how the server presents configuration prompts to users during setup, including titles, descriptions, specific settings, and property exclusions. This change supports the broader refactoring of the server startup sequence to better manage interactive or semi-interactive configuration requirements.
server-core/src/main/java/io/onedev/server/util/init · medium confidence
Introduce structured log instruction parsing and workspace logging infrastructure
The server now supports structured log instructions via a new ANTLR grammar (LogInstruction.g4) and parser, allowing build steps to emit commands prefixed with '\#\#onedev' that can be parsed and executed. This change also introduces the WorkspaceLoggingSupport and WorkspaceLoggingIdentity classes, which provide the backend infrastructure to manage logging identities, file paths, and secret masking for workspace-specific logs, laying the groundwork for displaying per-step status and associated logs in the UI.
server-core/src/main/java/io/onedev/server/logging/instruction, server-core/src/main/java/io/onedev/server/logging/workspace · high confidence
Introduce two-factor authentication setup and status UI components
Users can now configure two-factor authentication (2FA) via a new setup panel that displays a QR code and a manual secret key for TOTP authenticators, verifies the passcode, and provides downloadable recovery codes upon successful setup. A status panel indicates whether 2FA is already configured or pending, allowing users to request a reset if they lose access to their authenticator app.
server-core/src/main/java/io/onedev/server/web/component/user/twofactorauthentication · high confidence
Introduce unified code quality report models and storage
This change introduces a new set of core data models and storage mechanisms for code quality reports within the server core. It adds classes to represent code problems with severity levels (Critical, High, Medium, Low) and targets (blob, container, general), as well as coverage statistics including line and branch coverage metrics. These models support reading and writing serialized reports for problems, coverage, and unit tests, enabling the system to store and retrieve detailed code quality data from builds.
server-core/src/main/java/io/onedev/server/codequality · high confidence
Introduce user match criteria for branch update triggers
Added a new user-matching system in the server-core module to support the branch update trigger feature (OD-2554). This change introduces a grammar and parser (UserMatch) that allows users to define access rules using 'anyone', specific 'user', or 'group' criteria, combined with OR/AND logic and EXCEPT exclusions. The implementation includes criteria classes (Anyone, UserCriteria, GroupCriteria) and utility methods to handle user/group renames and usage checks, enabling more flexible and precise control over which users or groups are affected by branch update events.
server-core/src/main/java/io/onedev/server/util/usermatch · high confidence
Introduce workspace automation and agent-based provisioning infrastructure
The server-core workspace module has been restructured to support running tasks via AI agents and provisioning workspaces on remote agents or Kubernetes clusters. This change introduces a new \AgentProvisionerUtils\ and \ServerProvisionerUtils\ to handle resource allocation, agent session management, and directory cleanup across different environments. A new \WorkspaceRuntime\ abstraction and \WorkspaceAgentShell\ enable remote shell interactions and command execution within the workspace, while \DefaultWorkspaceService\ now orchestrates these capabilities, including support for submodules, configurable teardown scripts, and persistent agent binding. Additionally, \DefaultWorkspaceQueryPersonalizationService\ is added to manage per-user workspace query preferences.
server-core/src/main/java/io/onedev/server/workspace · high confidence
Introduce workspace spec templates for AI coding agents
This change adds a new set of workspace spec templates for popular AI coding agents, including Claude Code, Codex, and Cursor. Each agent is available in two variants: one that runs inside a dedicated container for isolation and security, and another that runs directly in the server's shell environment. These templates pre-configure the necessary shell settings, environment variables, shortcuts, and user data paths (such as skills and session history) to allow AI users to execute tasks and maintain state across workspace sessions.
server-core/src/main/java/io/onedev/server/model/support/workspace · high confidence
Introduces @variable@ interpolation syntax for job and workspace commands
This change adds a new variable interpolation mechanism for CI/CD build specs and workspace scripts, allowing users to embed dynamic values using the @variable@ syntax (with @@ for literal @ signs). The implementation includes a new ANTLR grammar and parser to tokenize strings into literal and variable segments, along with specific interpolators for Job variables (supporting params, properties, secrets, scripts, files, and agent attributes) and Workspace variables (supporting workspace-specific variables and scripts). This enables more flexible and dynamic command definitions in build steps and workspace operations.
server-core/src/main/java/io/onedev/server/util/interpolative · high confidence
Introduces a new input assist framework with natural language query support
The input assist system has been refactored into a new, modular architecture centered on the \InputAssistBehavior\ class, which powers a floating suggestion panel (\AssistPanel\) with infinite scrolling and keyboard navigation. This change introduces a new \ANTLRAssistBehavior\ base class to simplify code completion for ANTLR-based grammars and adds a \NaturalLanguageTranslator\ component that leverages an AI \ChatModel\ to convert natural language descriptions into structured queries. Users benefit from improved auto-completion accuracy, the ability to type queries in plain English, and a more responsive, accessible input experience with features like auto-select on focus and automatic space appending.
server-core/src/main/java/io/onedev/server/web/behavior/inputassist · high confidence
Introduces extensible interfaces for project and issue importers
The import subsystem now defines new extension points (IssueImporterContribution and ProjectImporterContribution) that allow third-party modules to register custom importers. These interfaces standardize how import logic is structured, providing methods to define importer names, execution steps, and dry-run capabilities, thereby enabling a more modular and pluggable import architecture.
server-core/src/main/java/io/onedev/server/imports · high confidence
Introduction of a base page for project issue views
A new abstract base class, ProjectIssuesPage, has been added to serve as the foundation for project-specific issue pages. This component establishes a consistent layout structure using Bootstrap utility classes and integrates a WorkflowChangeAlertPanel to notify users of workflow state changes. It also centralizes the retrieval of global issue settings and defines the standard page title format, ensuring that all derived issue pages share this common behavior and UI structure.
server-core/src/main/java/io/onedev/server/web/page/project/issues · high confidence
Introduction of agent connection event types
The server now defines specific event classes for agent lifecycle changes, including AgentConnected, AgentDisconnected, and the base AgentEvent. These events allow the system to track when agents connect or disconnect, providing a structured way to handle agent-related state changes within the server's event model.
server-core/src/main/java/io/onedev/server/event/agent · high confidence
Introduction of base 'My' page for authenticated user sections
A new abstract base page, MyPage, has been added to the application's web layer to serve as a foundation for user-specific views. This component enforces authentication by redirecting unauthenticated users to the login page and dynamically sets the browser tab title to include the instance's branding name. The associated HTML template provides a standardized card-based layout wrapper for content rendered by subclasses, ensuring a consistent visual structure for the 'My' section of the application.
server-core/src/main/java/io/onedev/server/web/page/my · high confidence
Introduction of entity-specific event classes
The server now defines a new hierarchy of event classes in the \io.onedev.server.event.entity\ package to handle entity lifecycle changes. This includes a base \EntityEvent\ class that wraps an \AbstractEntity\, along with specific subclasses \EntityPersisted\ (which indicates whether the entity is new) and \EntityRemoved\. These classes provide a structured way to track when entities are created or deleted within the system.
server-core/src/main/java/io/onedev/server/event/entity · high confidence
Introduction of granular, role-based permission classes
The server's security model has been refactored to support fine-grained, role-based access control by introducing a comprehensive set of new permission classes in the \io.onedev.server.security.permission\ package. This change replaces or augments previous authorization logic with specific, composable permissions such as \AccessBuildLog\, \AccessConfidentialIssues\, \EditIssueField\, \ManageJob\, and \ProjectPermission\. Users can now assign more precise privileges, such as allowing access to specific build reports or confidential issues without granting full project management rights, and permissions are structured to support inheritance and hierarchy (e.g., \ManageIssues\ implies access to time tracking and confidential issues).
server-core/src/main/java/io/onedev/server/security/permission · high confidence
Introduction of new core data models for agents, access tokens, and AI chat
The server's data model has been extended with new entity classes to support new capabilities. Agent management is now backed by dedicated models (Agent, AgentToken, AgentAttribute, AgentLastUsedDate) to track build agents and their metadata. Access control is enhanced with AccessToken and AccessTokenAuthorization models, allowing for granular, project-scoped permissions on tokens. Additionally, AI interaction is supported by Chat and ChatMessage models, enabling persistent conversation history with the AI user.
server-core/src/main/java/io/onedev/server/model · high confidence
Introduction of server-core utility classes
The server-core module now includes a comprehensive set of utility classes in the io.onedev.server.util package to support core application functionality. This addition introduces BeanEditContext and EditContext for managing bean editing states, BeanUtils for reflection-based property access, and ContentDetector for identifying file types and character encodings using Apache Tika. Security and data integrity are supported by CryptoUtils for encryption and Digest for hashing, while GpgUtils provides functionality for parsing and generating GPG keys. Additional utilities include DateUtils for date and time formatting, GroovyUtils for script evaluation, and HtmlUtils for HTML sanitization, alongside helpers for collection manipulation, file handling, and UI component hierarchy.
server-core/src/main/java/io/onedev/server/util · high confidence
Issue boards now support scheduling issues to iterations and drag-and-drop state transitions
The issue board view now allows users to schedule issues into iterations directly from the board. A new 'Add to iteration' action is available on columns, enabling users to move all issues in a column to a specified iteration, with an option to remove them from their current iteration. Additionally, dragging an issue card between columns now automatically updates the issue's state or iteration assignment based on the board's configuration, providing a more interactive way to manage issue workflow.
server-core/src/main/java/io/onedev/server/web/page/project/issues/boards · high confidence
Iteration burndown charts now support time tracking indicators
The burndown chart component for iterations has been updated to allow users to track progress using remaining or estimated time in addition to the default issue count. This new capability is gated by project-level time tracking settings and an active subscription, ensuring that time-based metrics are only available when appropriate. The UI now displays a warning if the iteration spans too long or has invalid dates, and includes a note about aggregation exclusions when time tracking is active.
server-core/src/main/java/io/onedev/server/web/component/iteration/burndown · high confidence
JIRA Cloud import now supports importing projects from a child projects view
The JIRA Cloud import plugin now allows users to import projects into a specific parent OneDev project when initiating the import from a child project's view. This is enabled by a new \ChildrenImportProjects\ class that extends the standard \ImportProjects\ importer, automatically setting the \parentOneDevProject\ context when a parent path is detected, ensuring imported projects are nested correctly under the current project rather than at the root.
server-plugin/server-plugin-import-jiracloud · high confidence
Manage SSO accounts via new user interface panel
A new SSO account management panel has been added to the user interface, allowing administrators to view and delete SSO accounts linked to a user. The panel displays a table listing the SSO provider and subject for each account, and includes a delete action that removes the association. An informational notice explains that deleting an SSO account will require the user to reconnect their SSO subject upon next login, and that SSO subjects with verified emails will be automatically connected to users with the same verified email.
server-core/src/main/java/io/onedev/server/web/component/user/ssoaccount · high confidence
Maven package repository plugin adds Gradle support and usage instructions
The Maven package repository plugin now supports Gradle build tools alongside Maven. Users can view and copy integration instructions for both Maven (pom.xml, settings.xml) and Gradle (build.gradle in Groovy and Kotlin, gradle.properties) directly from the package help and detail panels. The plugin also provides ready-to-use CI/CD job command snippets for both build systems, simplifying the process of publishing and consuming packages in automated pipelines.
server-plugin/server-plugin-pack-maven · high confidence
New AI administration settings pages for chat prompts, Jev, and Lite Model
Administrators now have dedicated pages in the OneDev administration interface to configure AI-related settings. This includes a Chat Prompts page to edit and revert built-in prompts for code explanation, issue summaries, pull request summaries, and build failure issues; a Jev page to configure symbol navigation and field suggestion settings; a Lite Model page to select a cost-effective model for lightweight tasks; and a Chat Preserve Days page to set automatic deletion of old chat history. All changes are saved via forms with audit logging.
server-core/src/main/java/io/onedev/server/web/page/admin/aisetting · high confidence
New AI task execution and chat infrastructure
The server now includes a foundational AI task execution engine and chat service. This introduces the AiTask model to define prompts, tools, and response handlers, supported by a DefaultChatService that manages chat sessions, message history, and streaming responses via WebSocket. A new BuildSpecSchemaResource exposes the build specification schema as YAML, enabling AI agents to understand and edit build configurations. Additionally, helper classes (BuildHelper, IssueHelper, ProjectHelper, PullRequestHelper, CodeCommentHelper) provide structured data summaries for core entities, and a ChatTool interface allows pages to contribute context-specific tools for AI interactions.
server-core/src/main/java/io/onedev/server/ai · high confidence
New AI user configuration settings for behavior, entitlements, and model selection
This change introduces new web components in the user settings UI to configure AI user capabilities. Users can now define custom system prompts and specific responsibilities for pull requests (such as merging, fixing builds, and resolving conflicts), enable a proactive mode for the AI to respond to relevant comments without being explicitly mentioned, and set a maximum loop count to prevent infinite execution. Additionally, administrators can manage access by granting entitlements to specific users, groups, or projects, or by granting access to all users and projects. The model settings panel allows for the configuration of the underlying AI model.
server-core/src/main/java/io/onedev/server/web/component/user/aisetting · high confidence
New AI user settings interface with Model, Behavior, and Entitlement tabs
A new settings page for AI users has been added, accessible via the \UserAiSettingPage\. This interface organizes configuration into three distinct tabs: Model, Behavior, and Entitlement. Each tab renders a specific panel (\ModelSettingPanel\, \BehaviorPanel\, and \EntitlementSettingPanel\) to manage the corresponding aspects of the AI user's configuration. Access to this page is restricted to users of type \AI\ who are not disabled.
server-core/src/main/java/io/onedev/server/web/page/my/aisetting, server-core/src/main/java/io/onedev/server/web/page/user/aisetting · high confidence
New Ajax call listeners for UI feedback and state management
Added a suite of new Wicket Ajax call listeners in the server-core web layer to enhance user interface behavior. These include listeners for showing and hiding global or local loading indicators (with dark mode support), confirming user actions or form changes, disabling components during requests, and tracking browser history/view state for better navigation support.
server-core/src/main/java/io/onedev/server/web/ajaxlistener · high confidence
New BeanEditModalPanel component for consistent edit modals
A new Wicket component hierarchy (BeanEditModalPanel and BeanEditContentPanel) has been introduced to standardize how edit dialogs are rendered and behave. This component provides a consistent modal structure with a title, description, feedback area, and editor, while automatically handling dirty-state awareness and 'confirm leave' prompts when users attempt to close or cancel without saving.
server-core/src/main/java/io/onedev/server/web/component/beaneditmodal · high confidence
New BranchLink component for consistent branch navigation
A new BranchLink component has been introduced to handle navigation to branch views. It renders a link to the ProjectBlobPage for a specific branch, automatically adjusting its label to show either the short branch name or the fully qualified name (FQN) depending on the current page context and configuration. The component also respects security permissions, disabling the link if the user cannot read the code for the associated project.
server-core/src/main/java/io/onedev/server/web/component/branch · high confidence
New Build Pipeline tab in build detail view
A new 'Pipeline' tab has been added to the build detail page, displaying a visual pipeline of all jobs defined in the build specification for the current commit. The panel highlights the currently active job and provides buttons to view information for each job in the pipeline. An informational note with a link to an article is included to help users understand how build pipelines work. Access to this tab is controlled by the existing pipeline access permissions.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/pipeline · high confidence
New Build and Pull Request list pages with saved queries and audit logging
The Build and Pull Request list pages have been replaced with new implementations that feature a sidebar for saved queries, support for personal and global query customization, and audit logging for changes to these queries. Users can now save, edit, and manage named queries for builds and pull requests, with changes to global settings and personal preferences being recorded in the audit log.
server-core/src/main/java/io/onedev/server/web/page/builds · high confidence
New CI/CD build specification steps
This location introduces the core server-side definitions for the new build specification steps, including BuildImageStep (using buildx), BuildImageWithKanikoStep, CheckoutStep, CommandStep, CraneStep, CreateBranchStep, CreatePullRequestStep, CreateTagStep, CloseIterationStep, PruneBuilderCacheStep, PublishArtifactStep, and PublishReportStep, along with supporting classes like CacheEntry and CompositeStep. These steps provide users with new capabilities to build Docker images (via buildx or Kaniko), check out code with LFS/submodule support, execute commands in containers or on the host, manage Git branches and tags, create pull requests, close iterations, prune Docker build caches, and publish artifacts and reports.
server-core/src/main/java/io/onedev/server/buildspec/step · high confidence
New Code Contributions page with time-range filtering
A new Code Contributions page has been added to the project stats section, allowing users to view overall commit activity over time and identify the top contributors. The page includes a dropdown to filter the view by period (6 Months, 1 Year, 5 Years, or All) and an interactive chart that supports brushing to select a specific date range, which dynamically updates the list of top contributors and their daily contribution counts.
server-core/src/main/java/io/onedev/server/web/page/project/stats/code · high confidence
New Docker and Kubernetes deployment configurations
This change introduces official Docker images and a Helm chart for deploying OneDev. The Dockerfiles (server and agent) are based on Ubuntu 26.04 and include Java 17, Git, and Docker CLI tools. A docker-compose.yaml is provided for local development with PostgreSQL. For Kubernetes, the Helm chart supports both Nginx and Traefik ingress controllers, allows separate HTTP and SSH services, and includes a pre-upgrade hook to safely scale down the StatefulSet before applying image changes.
server-product · high confidence
New FieldUtils helper for issue field value resolution and bean management
A new FieldUtils class has been introduced in the server-core module to centralize logic for managing issue field beans and resolving field values. This utility handles the dynamic definition of field bean classes based on global issue settings, retrieves editable property names with security checks, and resolves field values from field instances, including support for scripting values and JEV (Jev integration) decide values. It also manages hierarchical context for accessing sibling field values during scripting.
server-core/src/main/java/io/onedev/server/model/support/issue/field · high confidence
New Fixed Issues page shows issues fixed since the last successful build on the same stream
A new Fixed Issues page has been added to the build detail view. It lists issues that were fixed in the current build, specifically calculating the set of fixed issues since the previous successful build on the same build stream. If no previous successful build exists on that stream, the page displays a warning message instead of a list.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/issues · high confidence
New Git model classes and filters for core repository operations
The server-core module introduces a new set of Git-related model classes and servlet filters to handle repository data and HTTP requests. New model classes include BlameBlock, BlameCommit, Blob, BlobChange, BlobContent, BlobEdits, BlobIdent, BlobIdentFilter, and GitContributor, which provide structured representations for blame information, blob contents, diff changes, and contributor statistics. Additionally, new servlet filters such as GitFilter, GitLfsFilter, and GoGetFilter are added to handle Git smart HTTP protocol operations, Git LFS object storage and locking, and Go module import metadata, respectively. These changes enhance the server's ability to manage Git repository data, support LFS, and integrate with Go module ecosystems.
server-core/src/main/java/io/onedev/server/git · high confidence
New Gitea and Ntfy.sh plugins added
This update introduces two new server plugins. The Gitea import plugin enables importing projects and issues from Gitea repositories, supporting organization-level imports, fork filtering, and mapping of Gitea labels to OneDev custom fields. The Ntfy.sh notification plugin allows sending project activity notifications to ntfy.sh channels with markdown formatting support.
server-plugin/server-plugin-import-gitea · high confidence
New Gmail and Microsoft 365 mail connectors with configurable concurrency
The Gmail and Microsoft 365 mail service plugins now provide connector implementations that allow users to configure the maximum number of concurrent mail sending sessions. Both connectors expose a concurrency setting (defaulting to 2) alongside existing options for authentication, inbox polling intervals, and timeouts, enabling administrators to tune mail processing performance for their specific environments.
server-plugin/server-plugin-mail-gmail, server-plugin/server-plugin-mail-office365 · high confidence
New Guice proxy target locator for Wicket integration
A new GuiceProxyTargetLocator class has been added to the Wicket Guice integration module. This component implements the IProxyTargetLocator interface to resolve proxy targets from the Guice injector, supporting optional injection bindings and singleton scope detection. It enables Wicket components to properly inject Guice-managed beans by locating the correct instance based on field type and binding annotations.
server-core/src/main/java/org/apache/wicket/guice · high confidence
New Indexed Paths Panel for displaying path details
A new reusable UI component, IndexedPathsPanel, has been added to display the count of paths backed by an indexed-path directory. When clicked, this count opens a dropdown list showing each individual path along with its on-disk size, providing users with detailed visibility into indexed storage usage.
server-core/src/main/java/io/onedev/server/web/component/indexedpath · high confidence
New Issue Setting page with workflow change alerts
A new Issue Setting page has been added to the administration interface, providing a dedicated layout for managing global issue configurations. The page includes a WorkflowChangeAlertPanel that notifies users of workflow changes and automatically refreshes the view upon completion. The UI is styled with a dedicated CSS file that formats issue state color indicators.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting · high confidence
New Issue State Badge Component
A new IssueStateBadge component has been added to the issue web components. This component renders the current state of an issue as a styled badge, dynamically applying background and text colors based on the state's configuration. It includes a ChangeObserver to automatically update the UI when the issue's state changes and supports an optional arrow icon.
server-core/src/main/java/io/onedev/server/web/component/issue · high confidence
New Iteration management pages with burndown and issue views
The project's issue management UI now includes a dedicated set of pages for managing Iterations. Users can view a paginated list of iterations, create new ones, and edit existing details. The iteration detail view features tabs for viewing associated issues (with state statistics) and a burndown chart that allows filtering by specific indicators. This replaces the previous milestone-based interface with an iteration-centric workflow.
server-core/src/main/java/io/onedev/server/web/page/project/issues/iteration · high confidence
New JobInfoButton component for job status and execution
A new JobInfoButton component has been added to the job info area, providing a dropdown link that displays the current build status icon and job name, along with a list of recent builds. It also includes a dedicated button to manually run the job, wired to the active build's reference context.
server-core/src/main/java/io/onedev/server/web/component/job/jobinfo · high confidence
New MiniBuildListPanel component for displaying recent builds
A new Wicket panel (MiniBuildListPanel) and its associated CSS have been added to the server-core module. This component renders a compact list of recent builds, showing each build's status icon, number, and version, with a link to the detailed build page. It highlights the currently active build and displays a 'No builds' message when the list is empty, providing a reusable UI element for build status summaries.
server-core/src/main/java/io/onedev/server/web/component/build/minilist · high confidence
New My Query Watches page for reviewing and removing watched queries
A new 'My Query Watches' page has been added to the application, allowing users to centrally review and manage their watched queries. This page is accessible via the 'My' section and supports tabbed navigation (defaulting to the Issue tab) to organize watched items. The implementation ensures that service accounts and disabled users cannot access this page, throwing an error if they attempt to do so.
server-core/src/main/java/io/onedev/server/web/page/my/querywatch · high confidence
New OpenID Connect SSO plugin with Microsoft Entra ID and GitHub connectors
The server-plugin-sso-openid module introduces a new OpenID Connect SSO implementation, providing pre-configured connectors for Microsoft Entra ID (supporting tenant ID, client secrets, and optional group retrieval via Microsoft Graph) and GitHub (handling user info and email verification). It also includes a generic OpenIdConnector for custom providers, a Twitch connector, and a UI component (CallbackUrlPanel) that displays the callback URL with a copy-to-clipboard button to simplify provider registration.
server-plugin/server-plugin-sso-openid · high confidence
New Pack Detail page for viewing and managing individual packages
Users can now view the details of a specific package within a project via a new PackDetailPage. This page displays the package reference and type, renders the package-specific content, and provides a side panel for actions such as deleting the package, which now includes audit logging for the deletion event.
server-core/src/main/java/io/onedev/server/web/page/project/packs/detail · high confidence
New Performance Settings page with audit logging
Administrators can now configure system performance settings via a dedicated page in the admin interface. The page includes a form to edit performance parameters and automatically logs changes to the audit trail, capturing the previous and new configuration values upon saving.
server-core/src/main/java/io/onedev/server/web/page/admin/performancesetting · high confidence
New Project Packs page for managing package queries
A new ProjectPacksPage has been added to the project navigation, providing a dedicated interface for managing package-related queries. This page features a sidebar for saved queries (including common and personal pack queries) and a main panel displaying the pack list. It supports filtering packs by query, pagination, and saving custom queries, with audit logging for changes to common package queries.
server-core/src/main/java/io/onedev/server/web/page/project/packs · high confidence
New Project Workspaces page with saved queries and workspace listing
A new ProjectWorkspacesPage has been added to the project navigation, providing a dedicated view for managing workspaces. This page features a sidebar for saved queries (including common and personal queries) and a main area displaying the list of workspaces. Users can now view, filter, and save workspace queries directly from this page, with changes to common queries being audited. The page respects the 'create workspaces' permission for access control.
server-core/src/main/java/io/onedev/server/web/page/project/workspaces · high confidence
New ProjectAvatar and ProjectPicker components
Added ProjectAvatar to render project avatars as images and ProjectPicker to provide a dropdown interface for selecting projects using SVG icons.
server-core/src/main/java/io/onedev/server/web/component/project · high confidence
New Pull Request Settings page with audit logging
A new Pull Request Settings page has been added to the project settings, allowing users to configure pull request behavior via a form editor. This change introduces audit logging for any modifications to these settings, recording the previous and new configuration states to provide a traceable history of changes.
server-core/src/main/java/io/onedev/server/web/page/project/setting/code/pullrequest · high confidence
New REST API annotations for entity metadata and immutability
The server now includes new Java annotations to support the RESTful API structure: \@Api\ allows marking classes, methods, fields, and parameters with metadata such as internal status, examples, names, descriptions, and ordering; \@EntityCreate\ specifies the entity class associated with a create operation; and \@Immutable\ marks entity fields that cannot be updated after creation. These annotations provide the declarative foundation for API documentation and validation logic within the REST layer.
server-core/src/main/java/io/onedev/server/rest/annotation · high confidence
New REST API endpoints for access tokens, agents, and build artifacts
The server now exposes dedicated REST resources for managing access tokens, agents, and build artifacts. Users can create, update, and delete access tokens and their associated project authorizations via the /access-tokens and /access-token-authorizations endpoints, with audit logging for non-owner actions. Agent management is available through /agents and /agent-tokens, allowing administrators to query agents, update agent attributes, and manage authentication tokens. Additionally, the /artifacts endpoint enables authorized users to upload, download, and delete build artifacts, while the /streaming/build-logs endpoint provides real-time build log streaming.
server-core/src/main/java/io/onedev/server/rest/resource · high confidence
New RedirectRequestHandler with explicit HTTP status code support
The Wicket request handling layer now includes a new RedirectRequestHandler that allows applications to specify exact HTTP redirect status codes (301, 302, 303, 307, or 308) rather than relying on default behavior. This handler supports three modes: REDIRECT (using sendRedirect with URL encoding), STATUS (setting the Location header directly without encoding), and AUTO (selecting the method based on the status code). This gives developers finer control over redirect semantics, particularly for AJAX requests which now receive the Location via an Ajax-Location header when using the STATUS mode.
server-core/src/main/java/org/apache/wicket/request/http · high confidence
New Remote Docker Executor for running jobs on agent machines
A new RemoteDockerExecutor is introduced, allowing build jobs to run as Docker containers on remote machines via agents. This executor extends the existing ServerDockerExecutor and adds an 'Agent Selector' to target specific agents, supports concurrency limits per agent, and enables job resumption and interactive shell access over the agent session.
server-plugin/server-plugin-executor-remotedocker · high confidence
New Remote Shell Executor for agent-based job execution
A new Remote Shell Executor is now available, allowing build jobs to be executed on remote machines via connected agents. This executor enables users to target specific agents using an agent selector query and supports features such as job resumption for debugging and interactive web terminal access. It is designed for environments where jobs do not require containerized services, leveraging the agent's local shell facility to run builds.
server-plugin/server-plugin-executor-remoteshell · high confidence
New SMTP/IMAP mail connector with configurable concurrency and IMAP polling
The SMTP/IMAP mail connector plugin now allows administrators to configure the maximum number of concurrent mail sending sessions and the timeout for server communication. Additionally, the connector supports checking incoming emails via IMAP, enabling users to post issue or pull request comments via email by specifying the IMAP host, credentials, and poll interval.
server-plugin/server-plugin-mail-smtpimap · high confidence
New SSH key management page for users
Users can now manage their SSH keys via a dedicated page that displays a list of existing keys and provides a modal interface to add new ones. The page loads the current user's SSH keys and allows saving or canceling additions, with the list refreshing automatically after a new key is added.
server-core/src/main/java/io/onedev/server/web/page/user/sshkeys · high confidence
New Select2 component library with i18n support
The server now includes a new Select2-based component library (AbstractSelect2Choice, Select2Choice, Select2MultiChoice) to replace the previous dropdown implementation. This adds richer search, pagination, and AJAX capabilities to selection fields, along with localized user-facing messages for errors and loading states in English, German, Hungarian, and Chinese.
server-core/src/main/java/io/onedev/server/web/component/select2 · high confidence
New Server Information page for admins
Administrators now have a dedicated Server Information page in the admin area that displays key system details, including the system date, operating system, JVM version, and heap memory usage (both total and used). The page also features a visual progress bar for current memory usage and a "Force Garbage Collection" button that allows admins to trigger a GC on the current server or across the cluster.
server-core/src/main/java/io/onedev/server/web/page/admin/serverinformation · high confidence
New Server Log page for admin users
A new Server Log page has been added to the admin interface, allowing users to view and download the server's log file. The page displays the most recent 5,000 lines of the log, converting timestamps to the browser's timezone, and shows a warning if the log is truncated due to size.
server-core/src/main/java/io/onedev/server/web/page/admin/serverlog · high confidence
New Server Shell Executor plugin
A new Server Shell Executor plugin has been added, allowing build jobs to run directly on the OneDev server's shell facility. This executor provides a concurrency limit setting and uses a job match criteria to restrict which jobs can use it, with a warning that jobs running with this executor have the same privileges as the OneDev process. The implementation registers the executor via a Guice module and handles job execution by copying dependencies and running steps within a local build directory.
server-plugin/server-plugin-executor-servershell · high confidence
New Sort Edit Panel for configuring entity sort orders
A new SortEditPanel component has been added to the server-core web layer, providing a user interface for managing entity sort criteria. This panel allows users to select available fields to add to the sort list, reorder them via drag-and-drop, toggle ascending/descending direction, and remove items. The component includes its own CSS styling and integrates with Wicket's Ajax capabilities for interactive updates.
server-core/src/main/java/io/onedev/server/web/component/sortedit · high confidence
New System Settings page with audit logging and environment-aware configuration
Administrators now have a dedicated System Settings page that automatically detects and displays the server URL when running behind an ingress controller, while hiding irrelevant configuration options (such as Git/Curl locations in Docker environments or SSH root URL when SSH is disabled). Additionally, all changes to system settings are now recorded in the audit log, providing a traceable history of configuration modifications.
server-core/src/main/java/io/onedev/server/web/page/admin/systemsetting · high confidence
New TypeSelectPanel component for filtering and selecting types
A new TypeSelectPanel component has been added to the server-core web layer, providing a user interface for selecting implementation types. The component features a search input that filters available types in real-time using a similarity-based algorithm, displaying results in a grouped tree structure. It includes specific HTML templates for group nodes and type nodes (with labels and descriptions), a dedicated CSS stylesheet for styling, and a Wicket resource reference to manage the CSS asset.
server-core/src/main/java/io/onedev/server/web/component/typeselect · high confidence
New UI component for generating OAuth refresh tokens
Added a new web-editable component for properties annotated with @RefreshToken, providing a password field and a 'Generate' button in the settings UI. When the user clicks the button, the system opens an OAuth authorization popup; upon successful authentication, the resulting refresh token is automatically populated into the field, simplifying the setup of OAuth-based integrations like MS365 Mail.
server-core/src/main/java/io/onedev/server/web/editable/refreshtoken · high confidence
New UI components for agent status, email verification, and label badges
Added several new Wicket components to the web interface: AgentStatusBadge displays online/offline and paused states for build agents; EmailAddressVerificationStatusBadge shows unverified email warnings; LabelBadge renders project labels with dynamic background and font colors; AjaxLazyLoadPanel provides a custom loading indicator that respects dark mode; MultilineLabel handles newline characters in text; NoRecordsPlaceholder hides containers when lists are empty; and RepeatingView allows reordering child components without detaching feedback panels.
server-core/src/main/java/io/onedev/server/web/component · high confidence
New UI components for editing and viewing secrets
This change introduces a new set of web components in the server-core module to handle secret properties in the UI. It adds a \SecretPropertyEditor\ that allows users to type secret values into a masked textarea with a toggle to reveal the content, and a \SecretPropertyViewer\ that displays a masked version of the secret with a 'Copy to clipboard' link. These components are wired together via a new \SecretEditSupport\ class which detects the \@Secret\ annotation on string properties and applies this specialized editing/viewing behavior.
server-core/src/main/java/io/onedev/server/web/editable/secret · high confidence
New UI components for editing post-build actions and job triggers
Added a set of Wicket-based UI components (beans, edit panels, list panels, and list edit supports) for the build specification editor. These new files enable users to configure post-build actions and job triggers directly within the build spec interface, providing list views that display action descriptions and conditions, as well as trigger descriptions and parameter counts.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/job/postbuildaction, server-core/src/main/java/io/onedev/server/web/editable/buildspec/job/trigger · high confidence
New UI editors for File, Symbol, and Text code search options
Added Wicket-based UI components (FileQueryOptionEditor, SymbolQueryOptionEditor, TextQueryOptionEditor) that provide users with input fields and validation for code search queries. These editors allow users to specify search terms with options for case sensitivity, regular expressions, whole-word matching, and file name patterns, while enforcing constraints such as preventing overly general searches and validating PCRE syntax.
server-core/src/main/java/io/onedev/server/web/component/codequeryoption · high confidence
New UI for configuring project dependencies in build specs
Users can now configure project dependencies directly within the build spec editor. This change introduces a new set of Wicket-based UI panels (ProjectDependencyEditPanel, ProjectDependencyListEditPanel, etc.) that allow users to add, edit, and view dependencies, displaying the target project path and build provider description in a list format.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/job/projectdependency · high confidence
New UI for editing job dependencies in build specs
The build specification editor now includes a dedicated interface for managing job dependencies. Users can add, view, and edit dependencies via a list panel that displays the target job name, the number of parameters, and whether a successful run is required. The editor enforces uniqueness, preventing duplicate dependencies to the same job within a single build spec.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/job/jobdependency · high confidence
New UI for editing job privileges
Users can now manage job privileges through a dedicated list editor that displays job names and specific access rights (such as run, manage, log, pipeline, and reports) in a sortable table. This new interface allows administrators to add, edit, and delete individual privilege entries via modal dialogs, with the ability to confirm deletions and see immediate feedback on changes.
server-core/src/main/java/io/onedev/server/web/editable/jobprivilege · high confidence
New UI for managing branch and tag protection rules
This change introduces the web interface for configuring branch and tag protection rules within project settings. Users can now create, edit, copy, and delete protection rules via a new Branch Protections and Tag Protections page. The interface supports reordering rules via drag-and-drop (using a grip indicator), enabling/disabling rules with a toggle switch, and viewing the specific branch/tag patterns and user matches for each rule. All changes, including creation, modification, deletion, and reordering, are automatically recorded in the audit log.
server-core/src/main/java/io/onedev/server/web/page/project/setting/code/branchprotection · high confidence
New UI for managing issue creation settings
Administrators can now edit issue creation settings through a dedicated modal interface. This change introduces a list-based editor that allows users to add, edit, delete, and reorder settings via drag-and-drop, with each setting edited in a separate modal dialog.
server-core/src/main/java/io/onedev/server/web/editable/issue/creation · high confidence
New UI for managing issue state transitions
The issue state transition specification editor now features a dedicated list panel and modal dialog for creating, editing, and reordering transitions. Users can view transitions in a sortable table, add new ones via a modal form, and manage existing entries with edit, copy, and delete actions, providing a more structured interface for defining how issues move between states.
server-core/src/main/java/io/onedev/server/web/component/issue/transitionspec · high confidence
New UI for managing job executors in admin settings
Administrators can now configure job executors via a dedicated page in the admin settings. This update introduces a new interface that allows users to add, edit, copy, and delete job executors, as well as enable or disable them and reorder them using drag-and-drop. The new UI includes validation to prevent duplicate executor names and provides a 'Test' button to verify executor configuration before saving.
server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/jobexecutor · high confidence
New UI for managing user GPG keys
Users can now view, add, and delete GPG public keys directly from their account settings. The new interface displays a list of keys with their IDs, associated email addresses (marked as 'ineffective' if unverified or belonging to another user), and any sub-keys. Users can add new keys via a modal form that validates ownership and verification status, and can remove existing keys with a confirmation prompt. A help link to GitHub's documentation is also provided for guidance on generating and using GPG keys.
server-core/src/main/java/io/onedev/server/web/component/user/gpgkey · high confidence
New UI for managing user SSH keys
Users can now add and manage SSH keys through a dedicated interface. The new 'Add a SSH Key' modal allows users to paste their public key, with automatic fingerprint generation and duplicate detection to prevent conflicts. The SSH key list displays each key's fingerprint, optional comment, and creation date, and includes a delete action that requires confirmation before removal. All changes are recorded in the system audit log.
server-core/src/main/java/io/onedev/server/web/component/user/sshkey · high confidence
New User Access Tokens management page
A new page has been added to manage user access tokens, allowing users to view and handle tokens used for API access or repository pull/push operations. The page includes a notice clarifying that these tokens cannot be used to sign in to the web UI, and it displays a list of access tokens specific to the current user.
server-core/src/main/java/io/onedev/server/web/page/user/accesstoken · high confidence
New WebSocket-based agent communication infrastructure
The server now includes a dedicated WebSocket endpoint for agent connectivity, implemented via the new \ServerSocketServlet\, \ServerSocket\, and \AgentHelper\ classes. This change introduces a binary message protocol over WebSocket (replacing or supplementing previous HTTP-based mechanisms) to handle agent registration, remote procedure calls, log streaming, and shell session management. The servlet enforces authentication using agent tokens and configures Jetty WebSocket settings for idle timeouts and message sizes, enabling more efficient, persistent communication channels between the server and agents.
server-core/src/main/java/io/onedev/server/agent · high confidence
New Wicket behaviors for UI interactions and query assistance
The web layer introduces a suite of new Wicket behaviors to enhance user interaction and input assistance. A new AbstractPostAjaxBehavior ensures specific AJAX requests use the POST method, while CtrlClickBehavior and CtrlAwareOnClickAjaxBehavior enable Ctrl/Cmd-click actions for opening links or triggering events without navigation. Input assistance is significantly expanded with new query behaviors (AgentQueryBehavior, BuildMetricQueryBehavior, BuildQueryBehavior, CodeCommentQueryBehavior, CommitQueryBehavior, ActionConditionBehavior) that provide context-aware auto-completion, syntax hints, and descriptions for various search and condition fields. Additionally, ChangeObserver allows components to react to specific observable changes, and CompletionRateBehavior renders visual progress indicators.
server-core/src/main/java/io/onedev/server/web/behavior · high confidence
New Wicket extensions for autocomplete and table navigation
This change introduces two new components to the Wicket extensions library. The \AutoCompleteBehavior\ class provides a base for AJAX-based autocomplete fields, utilizing an \IAutoCompleteRenderer\ to generate XML responses and integrating with the \HierarchicalContext\ for component state management. Additionally, the \NavigationToolbar\ component is added to support data tables, providing a paging navigator and displaying the total number of records in the dataset.
server-core/src/main/java/org/apache/wicket/extensions · high confidence
New Wiki Settings page for project configuration
A new Wiki Settings page has been added to the project settings, allowing users to edit wiki configuration via a form with an editor component and an update button. The page includes audit logging for changes to wiki settings and provides navigation back to the project overview or wiki settings page depending on user permissions.
server-core/src/main/java/io/onedev/server/web/page/project/setting/wiki · high confidence
New activity panels for pull request changes, comments, and updates
The pull request activity feed now includes dedicated display components for specific event types. Users can see detailed information for pull request changes (including merge commit hashes and links to the commit detail page), pull request comments (with support for editing, deleting, emoji reactions, and permanent links), and pull request updates (showing commit lists with author, signature status, and rebased indicators). These panels provide a richer, more interactive view of the history and evolution of a pull request.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/activities/activity · high confidence
New admin interface for managing groups
Administrators can now manage groups through a dedicated web interface. This includes a list page with search and pagination, and a detail page with sticky tabs for Basic Settings, Members, and Authorized Projects.
server-core/src/main/java/io/onedev/server/web/page/admin/groupmanagement · high confidence
New admin page to check and fix issue integrity
Administrators can now access a new 'Check Issue Integrity' page under issue settings. This page provides a warning about potential sync issues between issues and workflow settings and offers a 'Run Integrity Check' button. Clicking this button opens a modal that executes a workflow reconciliation process to identify and fix problems, such as undefined states or fields, and returns the user to the integrity check page upon completion.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/integritycheck · high confidence
New admin pages for external authenticator configuration and SSH server key management
Administrators can now configure an external authenticator to validate user credentials against an external source in addition to the internal database, with a built-in test feature to verify settings and retrieve user details. Additionally, a new page allows admins to manage the SSH server's private key, including saving settings and regenerating the key, which triggers an SSH server restart.
server-core/src/main/java/io/onedev/server/web/page/admin/authenticator · high confidence
New administration settings model classes
The server now includes a comprehensive set of new model classes in the administration package to manage system-wide configuration. These include settings for AI integration (prompts, model selection), agent queries, alert notifications, audit log retention, database backup scheduling, branding, cluster replication, default project creation, global queries for builds, issues, projects, pull requests, and workspaces, GPG key management, reusable Groovy scripts, issue creation defaults, password policies, performance tuning, and security configurations.
server-core/src/main/java/io/onedev/server/model/support/administration · high confidence
New advanced search panel for project blobs
Users can now perform advanced searches within project blobs using a new modal panel that supports text, file, and symbol query options. The panel includes a checkbox to restrict the search to the current directory and provides a dedicated UI for configuring search parameters, replacing or augmenting previous search capabilities with a more structured, tabbed interface.
server-core/src/main/java/io/onedev/server/web/page/project/blob/search/advanced · high confidence
New agent management interface in administration settings
Administrators now have a dedicated section to manage build agents, featuring a list page with filtering (by status, OS, architecture, and usage) and saved queries. The interface includes an 'Add Agent' panel that provides setup instructions for both Docker containers and bare-metal installations, and individual agent detail pages with tabs for Overview, Builds, Workspaces, and Log. The Overview tab allows administrators to pause/resume agents, restart them, view system details, manage access tokens, and edit agent attributes when the agent is online.
server-core/src/main/java/io/onedev/server/web/page/admin/buildsetting/agent · high confidence
New agent query editor and viewer components
Added a new set of Wicket components (AgentQueryEditPanel, AgentQueryViewPanel, and AgentQueryEditSupport) that provide a text-input interface for specifying agent queries. This allows users to define agent selection criteria via a query string, with support for real-time updates and a link to view the matching agents list.
server-core/src/main/java/io/onedev/server/web/editable/agentquery · high confidence
New attachment storage service and support interfaces
The server now introduces a dedicated attachment management layer within the server-core module. This includes a new AttachmentService interface and its DefaultAttachmentService implementation, which handle the lifecycle of attachments (save, delete, list, sync) for projects, including support for moving attachments when issues are moved between projects. New support interfaces (AttachmentSupport, AttachmentStorageSupport) and a ProjectAttachmentSupport class provide the bridge between the UI and the storage backend, enforcing a 20MB file size limit and exposing attachment URLs via the AttachmentResource. A new AttachmentTooLargeException is also added to handle oversized uploads.
server-core/src/main/java/io/onedev/server/attachment · high confidence
New avatar service with PNG generation and configurable Gravatar mirrors
The avatar system has been replaced with a new implementation that generates user initials as PNG images (improving quality over the previous JPEG format) and supports custom Gravatar mirror URLs via a new system setting. Users will see sharper, clearer avatar initials and, if configured by administrators, avatars sourced from alternative Gravatar providers.
server-core/src/main/java/io/onedev/server/web/avatar · high confidence
New avatar upload component with client-side cropping
The avatar upload interface now features a dedicated component that allows users to select an image file and crop it to a square aspect ratio directly in the browser before saving. This change introduces a new Wicket component structure (AvatarUploadField) along with supporting JavaScript and CSS assets that integrate a client-side cropper library. The implementation ensures that uploaded avatars are processed and saved as PNG files to preserve image quality and transparency, replacing the previous behavior.
server-core/src/main/java/io/onedev/server/web/component/avatarupload · high confidence
New basic user settings panel with audit logging
A new BasicSettingPanel has been added to the user settings interface, providing a form to edit core user properties (excluding password, type, and AI model settings). The panel includes validation to prevent duplicate login names and integrates with the AuditService to record changes to basic account settings, capturing the previous and new state for system auditing.
server-core/src/main/java/io/onedev/server/web/component/user/basicsetting · high confidence
New blob diff panel with review tracking and extensible rendering
The diff view for individual files (blobs) has been replaced with a new BlobDiffPanel that includes a sticky header with actions to toggle the diff body, view blame information, view the raw file, and edit the file on the source branch. The panel now supports marking files as reviewed in pull requests, allowing users to track their review progress. Additionally, the diff rendering logic has been refactored to use a new DiffRenderer extension point, enabling external modules to provide custom renderers for specific media types, while the UI now displays annotations such as code problems, coverage status, and comments via the BlobAnnotationSupport interface.
server-core/src/main/java/io/onedev/server/web/component/diff/blob · high confidence
New blob selection components for file and folder picking
Added a new set of Wicket components (BlobSelector, BlobFolderSelector, BlobPicker, BlobIcon) and associated CSS to enable users to browse and select files or folders from a project's commit history. These components provide an interactive tree view with SVG icons, allowing users to pick specific blobs (files) or folders within a specified commit, supporting features like auto-expanding single-child directories and AJAX-based selection.
server-core/src/main/java/io/onedev/server/web/component/blob · high confidence
New boolean property editors for UI forms
The server now provides dedicated UI components for editing boolean properties. Required boolean fields are rendered as a toggle switch (checkbox), while nullable boolean fields are rendered as a dropdown select list with options for true, false, and null. This change introduces the \BooleanEditSupport\ class and its associated Wicket components (\BooleanPropertyEditor\, \NullableBooleanPropertyEditor\) to handle these specific data types in the web interface.
server-core/src/main/java/io/onedev/server/web/editable/bool · high confidence
New breadcrumb-style blob navigator for file paths
The project blob view now uses a dedicated navigator component to display the file path as a clickable breadcrumb trail. This allows users to jump to any parent directory in the file's path directly from the file view, and includes a dropdown to browse subdirectories within a folder. The component also supports inline renaming of the current file or folder name.
server-core/src/main/java/io/onedev/server/web/page/project/blob/navigator · high confidence
New build artifacts detail page with tree view and deletion
Users can now view build artifacts in a dedicated detail page that presents files and directories in a collapsible tree structure, showing name, size, and last-modified age (with full datetime on hover). Authorized users can delete individual files or entire directories directly from this view via an Ajax confirmation dialog, with the page redirecting to the build default view when no artifacts remain.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/artifacts · high confidence
New build changes page showing differences within the same build stream
A new Build Changes page has been added to the project build detail view. This page displays the commits that occurred between the current build and the previous build on the same build stream, providing a focused view of changes relative to the immediate predecessor in the stream rather than the entire project history.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/changes · high confidence
New build lifecycle event types introduced
The server now exposes a set of specific event classes for build state changes, including BuildFinished, BuildPending, BuildResumed, BuildRunning, BuildSubmitted, BuildUpdated, and label changes (BuildLabelAdded, BuildLabelRemoved). These events extend a new BuildEvent base class that links the event to the specific build, project, and commit, enabling more granular tracking and notification capabilities for build status transitions and label modifications.
server-core/src/main/java/io/onedev/server/event/project/build · high confidence
New build list and filter UI components
The build list view now uses a dedicated \BuildListPanel\ and \BuildFilterPanel\ to provide a structured filtering interface. Users can filter builds by status, job, submitter, agent, submission date range, and labels. The list panel includes controls for saving queries, ordering results, and displaying build parameters, with the filter panel conditionally showing the job selector only when a specific project context is active.
server-core/src/main/java/io/onedev/server/web/component/build/list · high confidence
New build log aggregation and step status tracking
The build logging system has been refactored to support granular, stage-based log aggregation and per-step status reporting. A new logging infrastructure (BuildLogContext, BuildLogRouter, BuildLogService) now routes log output by build stage, enabling the UI to display the status of each individual build step. This change also introduces an UNKNOWN status for step executions, allowing the system to accurately reflect steps where the final outcome could not be determined.
server-core/src/main/java/io/onedev/server/logging/build · high confidence
New build metric query language and criteria engine
The build metric search now supports a new query language defined by the ANTLR grammar in BuildMetricQuery.g4, allowing users to filter builds using criteria such as build status (successful/failed), branch, job, report, date ranges (since/until), and custom parameters. This change introduces a new criteria engine (BuildMetricCriteria and its subclasses) that translates these queries into JPA predicates, enabling complex filtering with AND/OR/NOT logic and support for multiple values in a single field.
server-core/src/main/java/io/onedev/server/search/buildmetric · high confidence
New build metric statistics page with queryable line charts
A new BuildMetricStatsPage has been added to the project stats section, allowing users to view and filter build metrics via a text-based query interface. The page renders line charts for various metrics, grouping them by defined categories and displaying them in a responsive layout with a filter form and feedback panel.
server-core/src/main/java/io/onedev/server/web/page/project/stats/buildmetric · high confidence
New build model support classes for job secrets, properties, and step execution tracking
This change introduces a set of new model classes in the build support package to enhance job configuration and execution tracking. Users can now define and manage job-specific secrets with branch-based authorization controls and archival status, as well as job properties that can be archived to preserve historical build reproducibility. The build preservation settings allow configuring conditions and counts for retaining build artifacts. Additionally, the new StepExecution model tracks individual step statuses (including a new UNKNOWN state) and timing, enabling more detailed visibility into build step performance and outcomes within the build logs.
server-core/src/main/java/io/onedev/server/model/support/build · high confidence
New build selection components with improved display formatting
Users can now select builds using new single and multi-choice UI components that display build information more clearly. The components format selections to show the job name, version (if available), and build reference (e.g., 'job-name: 1.0 (ref-123)'). The multi-choice component includes helpful placeholder text ('Choose builds...' or 'Not specified') to guide users, while the single-choice component allows clearing the selection when not required. These components integrate with the existing Select2 library and support searching/filtering builds by project and query terms.
server-core/src/main/java/io/onedev/server/web/component/build/choice · high confidence
New build specification input model and type system
The build specification model now uses a new \inputspec\ package to define and validate build inputs. This introduces a structured type system with support for Boolean, Text, Integer, Float, Date, DateTime, Secret, Commit, Enumeration, User, Group, Issue, Iteration, Build, and Pull Request inputs. Users can now configure inputs with options like allowing multiple values, enforcing non-empty constraints, and setting default values (either static or via Groovy scripts). The model also supports dynamic choice providers, allowing choices to be specified statically or evaluated via scripts, with support for project-scoped applicability and color coding for UI display.
server-core/src/main/java/io/onedev/server/buildspecmodel · high confidence
New build specification parameter instance providers
The build specification system now supports a new set of parameter instance providers that allow users to define how parameter values are resolved. This includes options to specify literal values, pass through values from other parameters or secrets, evaluate Groovy scripts to generate values, or explicitly ignore a parameter. These changes introduce new classes like \IgnoreValue\, \PassthroughValue\, \ScriptingValue\, and \SpecifiedValue\ (along with their multi-value counterparts) which implement the \ValueProvider\ and \ValuesProvider\ interfaces. This enables more dynamic and flexible configuration of build parameters within the server-core module.
server-core/src/main/java/io/onedev/server/buildspec/param/instance · high confidence
New build specification parameter types
The build specification system now supports a comprehensive set of parameter types for configuring build inputs, including Text, Boolean, Integer, Float, Date, DateTime, Secret, and various choice parameters (Build, Group, Issue, Iteration, Pull Request). These new spec classes define the structure, validation, and default value handling for each input type, enabling users to define rich, typed parameters in their build pipelines.
server-core/src/main/java/io/onedev/server/buildspec/param/spec · high confidence
New build steps tab with granular log viewing and controls
The build detail page now includes a dedicated Build Steps tab that displays each build step individually with its own status, duration, and collapsible log view. Users can auto-update and auto-scroll through steps, pause updates, and access new actions such as rebuilding the build, canceling a running build, opening a terminal for the current step, and creating an issue for a failure. A progress bar estimates build completion based on previous successful runs, and the layout is optimized for mobile devices with sticky headers and responsive controls.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail/log · high confidence
New cache management page for project settings
A new CacheManagementPage has been added to the project settings, allowing users to configure the number of days to preserve build caches and view a table of uploaded caches. The page displays cache details including key, checksum, indexed paths, and last access date, and provides an action to delete specific cache entries via an Ajax link with confirmation.
server-core/src/main/java/io/onedev/server/web/page/project/setting/cache · high confidence
New cluster coordination primitives and internal API endpoints
The server now includes a new clustering support layer that provides distributed coordination tools and internal communication endpoints. This introduces cluster-wide atomic counters (ClusterAtomicLong) and reentrant locks (ClusterLock) backed by Hazelcast IMap, enabling safe concurrent operations across multiple server nodes. Additionally, a new internal REST API resource at /cluster exposes endpoints for downloading site files, build artifacts, and unit test reports, allowing cluster members to share and retrieve these resources from one another.
server-core/src/main/java/io/onedev/server/cluster · high confidence
New code problem report plugin with filtering and statistics
The server-plugin-report-problem module now provides a dedicated UI for viewing and analyzing code quality issues. Users can view problem reports grouped by target, filter results using path patterns with wildcard support, and inspect individual issues with severity badges. The plugin also introduces a Code Problem Statistics page to track metric trends over time. Builds can be configured to fail if problems exceed a specified severity threshold, and the system now persists these metrics for historical analysis.
server-plugin/server-plugin-report-problem · high confidence
New code protection models for branches, tags, and commit messages
This change introduces new model classes in the code support package to enable granular protection rules. BranchProtection and TagProtection now support preventing forced pushes, deletions, and creations, requiring commit signatures, and restricting specific file extensions. A new CommitMessageChecker interface allows enforcing commit message standards via ConventionalCommitChecker (with footer validation) or RegexpCommitChecker. Additionally, FileProtection enables path-specific review and build requirements, while GitPackConfig exposes repository-level git pack settings (windowMemory, packSizeLimit, threads, window) for configuration.
server-core/src/main/java/io/onedev/server/model/support/code · high confidence
New code search and indexing service
The server now includes a dedicated code search and indexing subsystem. This change introduces the \CodeIndexService\ and \CodeSearchService\ interfaces along with their default implementations, which manage a Lucene-based index for project source code. The system indexes code blobs asynchronously, supports searching by commit and query, and extracts code symbols (functions, classes, etc.) to enable more precise navigation and search results within the codebase.
server-core/src/main/java/io/onedev/server/search/code · high confidence
New code search result panel with navigation and confirmation
A new search result panel has been added to the project blob view, allowing users to browse code search matches directly. The panel displays a list of files and their matching lines, with controls to navigate between previous and next matches, and to expand or collapse file sections. It includes a confirmation dialog to prevent accidental navigation away from the search results when switching files or changing the view.
server-core/src/main/java/io/onedev/server/web/page/project/blob/search/result · high confidence
New command palette for quick navigation
A new command palette component has been added to the web UI, allowing users to quickly access different parts of the application by typing part of a URL. The palette dynamically suggests pages for projects, issues, pull requests, builds, commits, agents, groups, roles, users, iterations, and boards, while filtering out internal or authentication-related paths.
server-core/src/main/java/io/onedev/server/web/component/commandpalette · high confidence
New commit info panel component
A new Wicket-based CommitInfoPanel component has been introduced in the server-core module to render commit details. This component displays the commit message, author/committer avatars, contribution context, and links to the project overview and specific commit detail page. It also integrates signature status and build status indicators, along with functionality to copy the commit hash to the clipboard, supported by new CSS styling for the commit info layout.
server-core/src/main/java/io/onedev/server/web/component/commit/info · high confidence
New commit list UI with filter panel and graph rendering
The commit list view has been replaced with a new implementation that includes a dedicated filter panel for narrowing commits by branch, tag, build, touched file, author, committer, and date range. The list now renders a visual commit graph using SVG, supports date-based grouping of commits, and provides improved interaction for viewing commit details, build statuses, and workspace links.
server-core/src/main/java/io/onedev/server/web/component/commit/list · high confidence
New commit message display component with emoji support and collapsible details
A new CommitMessagePanel component has been introduced to render commit messages in the UI. This component displays the commit summary with emoji rendering support and allows users to toggle the visibility of the full commit detail message via a dedicated button. The implementation includes specific CSS styling for both light and dark modes to ensure the detail section is visually distinct when expanded.
server-core/src/main/java/io/onedev/server/web/component/commit/message · high confidence
New commit search query language with multiple criteria
The commit search now supports a structured query language that allows filtering by author, committer, path, message, and revision range (branch, tag, commit, or build), as well as fuzzy text search and ordering options. Users can combine multiple criteria in a single query to precisely locate commits, and the system handles special syntax like 'authored-by-me' and 'committed-by-me' for personal filtering.
server-core/src/main/java/io/onedev/server/search/commit · high confidence
New component to display build parameter values with formatting and masking
A new \ParamValuesLabel\ component has been added to the build web UI to render build parameter values. This component handles specific display logic: it masks secret inputs, formats date and datetime parameters using the server's date utilities, displays 'Unspecified' for empty values, and joins multiple values with commas for other types. This enables more consistent and user-friendly presentation of build parameters in the interface.
server-core/src/main/java/io/onedev/server/web/component/build · high confidence
New concurrent work execution infrastructure
The server-core module introduces a new concurrency framework consisting of the WorkExecutionService and BatchWorkExecutionService interfaces, along with their Default implementations. This system allows background tasks to be submitted with specific priorities and grouped by ID to manage concurrency limits and prevent deadlocks, while also supporting batched execution for workers that process multiple items at once.
server-core/src/main/java/io/onedev/server/util/concurrent · high confidence
New container image pack support with Docker Registry API
The server-plugin-pack-container module introduces a new Container Image pack type, enabling users to store and manage container images within OneDev. This adds a new HTTP endpoint at /v2 that implements the Docker Registry API v2, allowing standard Docker clients to push and pull images. The feature includes a ContainerAuthenticationFilter to handle Basic and Bearer token authentication (including job tokens), and a ContainerPackPanel that displays image details such as digest, OS/architecture, labels, and size, along with generated login and pull commands for the user.
server-plugin/server-plugin-pack-container · high confidence
New contributor panel displays author, committer, and date with tooltips
A new ContributorPanel component has been added to display commit attribution details. It shows the author and, when distinct, the committer, along with the commit date. The date is displayed as a relative age (e.g., '2 days ago') with a tooltip showing the full date/time, implemented using Tippy.js. The panel intelligently switches between two display modes: if the author and committer are the same person, it shows a single attribution line; otherwise, it explicitly lists both the author and committer.
server-core/src/main/java/io/onedev/server/web/component/contributorpanel · high confidence
New coverage report UI with sorting and filtering
The coverage report plugin now provides a dedicated web page for viewing test coverage data. Users can browse coverage statistics for groups or individual files, filter the list by name, and sort the results by line or branch coverage percentages. The interface displays branch and line coverage metrics using color-coded progress bars and supports pagination for large reports.
server-plugin/server-plugin-report-coverage · high confidence
New custom issue field specifications
The \server-core\ module now includes a comprehensive set of new field specification classes for custom issue fields, including Boolean, Build Choice, Commit, Date, DateTime, Float, Group Choice, Integer, Issue Choice, Iteration Choice, Pull Request, Secret, and Text fields. These classes define the structure, validation, default values, and conversion logic for each field type, enabling users to configure and use these specific custom field types within their projects.
server-core/src/main/java/io/onedev/server/model/support/issue/field/spec · high confidence
New data management service for database operations
A new DataService interface and its DefaultDataService implementation have been added to handle core database operations including schema creation, data migration, import/export, and backup scheduling. This service centralizes data persistence logic, managing table creation, constraint application, and database version checks while integrating with existing system settings and user management components.
server-core/src/main/java/io/onedev/server/data · high confidence
New date and date-time input components with time-aware formatting
The server now includes a dedicated date editing infrastructure (DateEditSupport, DatePropertyEditor) that renders date properties using a Wicket DatePicker. When a date field is annotated with @WithTime, the UI allows selecting both date and time and displays the value with time details; otherwise, it restricts input to dates only and formats the display accordingly. This change introduces new behavior for how date values are edited and viewed in the web interface.
server-core/src/main/java/io/onedev/server/web/editable/date · high confidence
New dedicated avatar editing interface
Users now have a dedicated panel for managing their profile picture, featuring a clear separation between the current avatar display and the upload workflow. The interface allows users to upload a new avatar image and immediately apply it, or revert to the default avatar if a custom one is currently set. This change introduces a specific UI component for avatar management, including the necessary CSS styling for the preview image size.
server-core/src/main/java/io/onedev/server/web/component/user/avataredit · high confidence
New dedicated page for pull request code comments
A new PullRequestCodeCommentsPage has been added to provide a dedicated view for code comments within a pull request. This page supports query-based filtering of comments, maintains browser history for pagination and search queries, and tracks user visit information for the pull request.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/codecomments · high confidence
New dedicated project issue list page with pinned issues and saved queries
A new ProjectIssueListPage has been introduced to provide a dedicated view for listing project issues. This page features a layout that includes a section for pinned issues at the top, a sidebar for saved queries, and the main issue list. It supports displaying pinned issues with their state, iteration, and linked issues, and allows users to unpin issues directly from the list. The page integrates with existing services for issue queries and personalization, offering a structured way to view and manage issues within a project.
server-core/src/main/java/io/onedev/server/web/page/project/issues/list · high confidence
New default email templates for notifications and account actions
The system now includes a new set of default email templates for various notifications and account actions, such as issue and pull request notifications, service desk issues, user invitations, email verification, password resets, and stopwatch overdue alerts. These templates, written in Groovy, support both HTML and plain text formats, allowing for customizable and user-friendly communication. Administrators can now tailor these templates to better fit their organization's needs, enhancing the overall user experience.
server-core/src/main/java/io/onedev/server/model/support/administration/emailtemplates · high confidence
New dropdown menu component with dark mode support
A new set of Wicket components (MenuLink, MenuPanel, MenuItem) has been introduced to render dropdown menus. This implementation supports displaying icons, selection ticks, and keyboard shortcuts, and includes specific CSS styling to ensure proper appearance in both light and dark modes.
server-core/src/main/java/io/onedev/server/web/component/menu · high confidence
New editable list components for interpolated strings and polymorphic objects
The server now provides dedicated UI editors and viewers for two new list types. Properties annotated with @Interpolative that hold a List\<String\> are now rendered with a dedicated editor supporting inline text input, drag-to-reorder, and variable/script interpolation assistance. Additionally, lists of polymorphic objects (interfaces or abstract classes annotated with @Editable) are now editable via a dynamic editor that presents a type selector and the appropriate bean editor for each item, allowing users to add, remove, and reorder heterogeneous objects in a single list.
server-core/src/main/java/io/onedev/server/web/editable/polymorphiclist · high confidence
New editable list components for workspace specification settings
Added new Wicket-based list edit panels and supporting classes for configuring Cache Config, Config Files, Environment Variables, and User Data within workspace specifications. These components provide a consistent user interface for managing lists of these items, including adding new entries, viewing details, and displaying key properties such as cache keys, file paths, environment variable names (with masking for secrets), and user data keys.
server-core/src/main/java/io/onedev/server/web/editable/workspacespec · high confidence
New editable panels for build specification parameters
The build specification editor now includes dedicated UI components for managing parameter instances. This change introduces \ParamMapEditPanel\ and \ParamMatrixEditPanel\ for editing single and multi-value parameters respectively, along with corresponding view panels (\ParamMapViewPanel\, \ParamMatrixViewPanel\) and their supporting \EditSupport\ classes. These components provide the interface for users to define, view, and modify build parameters, including support for secret values, scripting, and passthrough configurations.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/param/instance · high confidence
New email address management page for users
A new page has been added to the user interface that allows users to view and manage their email addresses. This page integrates the existing EmailAddressesPanel component, ensuring that the email management functionality is accessible within the standard user page layout.
server-core/src/main/java/io/onedev/server/web/page/user/emailaddresses · high confidence
New empty-project landing page with guided setup options
When a project has no commits, users now see a dedicated panel explaining that the project is empty and offering clear next steps: creating a new file, uploading files, setting up a CI/CD build spec (if permitted), or pushing an existing repository via Git. The panel includes push instructions with the remote URL and uses a consistent style, including dark-mode support for the illustration.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/nocommits · high confidence
New entity reference display component with copy-to-clipboard and help
A new reusable UI component (EntityReferencePanel) has been added to display entity references. It shows the reference string, provides a copy-to-clipboard button, and includes a help icon with contextual instructions on how to reference the entity in markdown or commit messages, noting when the project path can be omitted.
server-core/src/main/java/io/onedev/server/web/component/entity/reference · high confidence
New event classes for pull request and code comment lifecycle tracking
The server now emits a comprehensive set of new event types for pull requests and code comments, enabling more granular activity tracking and notifications. For pull requests, events now cover the full lifecycle including opening, updating, merging, discarding, deleting, and specific actions like assigning/unassigning reviewers, adding/removing labels, and build commit or merge preview updates. For code comments, events track creation, editing, deletion, status changes (resolved/unresolved), and replies. These events are structured to provide detailed context (such as user, date, and specific change data) to downstream systems like activity feeds or notification services.
server-core/src/main/java/io/onedev/server/event/project/pullrequest · high confidence
New exception classes and HTTP response handling infrastructure
The server now includes a new set of exception classes (BadRequestException, NoSubscriptionException, NotAcceptableException, NotFoundException, ServerNotFoundException, ServerNotReadyException, and HttpResponseAwareException) along with supporting infrastructure (ExceptionUtils, HttpResponse, HttpResponseBody) to provide structured HTTP responses. This allows the server to return specific HTTP status codes and bodies for different error conditions, improving error clarity for API consumers.
server-core/src/main/java/io/onedev/server/exception · high confidence
New expression-based conditions for post-build actions
Users can now define post-build action conditions using a flexible expression language instead of simple static settings. This change introduces a parser (ActionCondition.g4) and a set of criteria classes that allow conditions to be built on build status (successful, failed, cancelled, timed out), previous build status, branch/tag/project patterns, parameter presence, and log content. Actions can now be triggered conditionally based on these criteria, enabling more precise control over post-build workflows.
server-core/src/main/java/io/onedev/server/buildspec/job/action/condition · high confidence
New extensible blob rendering infrastructure for source views
The source view now uses a new extensible rendering system defined by the \BlobRenderer\ interface and \BlobRenderContext\. This allows the UI to display file content, blame, and edit modes through pluggable renderers, while the context object centralizes state management for operations like adding, editing, and deleting files, as well as handling comments, coverage reports, and search hits within the blob view.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render · high confidence
New extensible pack handling infrastructure
The server now uses a new extensible architecture for managing package types. A central PackFilter routes requests to specific handlers, while the PackHandler interface allows for custom request processing and API key authentication. Additionally, the PackSupport interface enables the registration of new package types (such as Helm charts) by defining their metadata, rendering logic, and version mutability rules.
server-core/src/main/java/io/onedev/server/pack · high confidence
New extensible workspace provisioning framework
The system now introduces a new extensible framework for provisioning workspaces, centered on the new \WorkspaceProvisioner\ abstract class and the \RegistryLogin\ configuration model. \WorkspaceProvisioner\ serves as an extension point that administrators can implement to define custom provisioning logic, including specifying applicable projects, enabling/disabling the provisioner, and handling workspace lifecycle tasks like deletion and project moves. The accompanying \RegistryLogin\ class provides a configurable UI component for specifying container registry credentials (URL, username, password) with support for variable interpolation, which is used by provisioners to authenticate with container registries when deploying workspaces.
server-core/src/main/java/io/onedev/server/model/support/administration/workspaceprovisioner · high confidence
New field value provider options: Scripting, Jev, and Ignore
Users can now configure issue field values using new provider types. The 'Evaluate script to get value' provider allows dynamic values via Groovy scripts, while 'Decide by Jev' uses AI to determine values with a specified fallback. Additionally, the 'Ignore this field' option allows fields to be explicitly skipped during issue processing.
server-core/src/main/java/io/onedev/server/model/support/issue/field/instance · high confidence
New file viewer and mobile-optimized workspace terminal
Users can now view text files directly in the workspace using a new FileViewPanel component that renders code with syntax highlighting and conflict detection. The workspace terminal has been rebuilt to support mobile devices, featuring an on-screen keypad for special keys (Esc, Ctrl, arrows, tmux commands) and improved font handling via local Nerd Fonts. The terminal also uses WebSocket for real-time interaction and includes a WebGL renderer for better performance.
server-core/src/main/java/io/onedev/server/web/component/terminal · high confidence
New filter-edit and tri-state switch UI components
This change introduces two new web components for the server UI. The FilterEditPanel provides a reusable base for editing entity query criteria, including logic to match, flatten, and update nested AND/OR criteria structures, along with its associated CSS styling. Additionally, a TriStateSwitch component is added, offering a three-position toggle (OFF, Unspecified, ON) for boolean-like selections, complete with JavaScript handling for state updates, accessibility labels, and form reset behavior.
server-core/src/main/java/io/onedev/server/web/component/filteredit · high confidence
New floating draw panel UI components
The application now includes a new set of Wicket components for rendering floating side panels (draw panels) that slide in from the left or right. This adds a reusable card-based UI structure with a header, body, footer, and close action, along with the necessary CSS styling to position these panels as fixed-width overlays on the screen.
server-core/src/main/java/io/onedev/server/web/component/draw · high confidence
New floating panel component for Wicket UI
A new floating panel component has been added to the server-core web layer, allowing UI elements to appear as floating overlays (such as dropdowns or popups) that can be aligned relative to specific target components or mouse positions. This includes the Java backend classes for managing alignment and the associated JavaScript logic for handling opening, closing, and positioning of these panels, improving the interactivity of inline UI elements.
server-core/src/main/java/io/onedev/server/web/component/floating · high confidence
New folder view with lazy-loaded commit details and README support
The folder view in the project blob browser has been rewritten to improve performance and usability. It now displays a table of folder contents with a 'parent' navigation link and lists child files/directories. Crucially, last commit information (author, avatar, message, and relative time) is loaded lazily via an asynchronous resource call to avoid blocking the initial page render. The view also automatically detects and renders a README file (checking for standard names and markdown extensions) with a sticky header, an outline toggle, and an edit link. User avatars and hover cards are integrated for commit authors, and dark mode styling is supported.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/folder · high confidence
New group creation page in admin interface
Administrators can now create new groups via a dedicated page in the admin interface. The page provides a form to define group details, validates that the group name is unique, and upon successful creation, logs the action in the audit trail and redirects the user to the group's membership management page.
server-core/src/main/java/io/onedev/server/web/page/admin/groupmanagement/create · high confidence
New group membership management page
Administrators can now manage group memberships via a dedicated page that allows searching for users by name, adding users to groups through a select2 dropdown, and removing selected users in bulk. The interface displays user avatars, names, email addresses, and verification status, and restricts add/remove actions to administrators.
server-core/src/main/java/io/onedev/server/web/page/admin/groupmanagement/membership, server-core/src/main/java/io/onedev/server/web/page/user/membership · high confidence
New group profile management page with audit logging
Administrators can now edit and delete groups via a dedicated GroupProfilePage. This page allows updating group settings with duplicate-name validation and automatically records both basic setting changes and group deletions in the system audit log.
server-core/src/main/java/io/onedev/server/web/page/admin/groupmanagement/profile · high confidence
New group selection components for issue forms
Added a new set of Wicket components (GroupSingleChoice, GroupMultiChoice) and their supporting providers (GroupChoiceProvider, AbstractGroupChoiceProvider) to allow users to select one or more groups via a Select2 dropdown. These components integrate with the existing Group model and service, providing fuzzy-search functionality for group names and rendering group names in the UI. A dedicated JavaScript resource (group-choice.js) handles the client-side formatting of group selections.
server-core/src/main/java/io/onedev/server/web/component/groupchoice · high confidence
New i18n infrastructure and German/Spanish translations for the web UI
The server now includes a new translation framework in the \io.onedev.server.web.translation\ package, introducing a custom Wicket component resolver (\TranslationResolver\) and string resource loader (\TranslationStringResourceLoader\) that enable localized text via a \t:\ markup tag and attribute prefixes. This change adds the initial German (\Translation\_de\) and Spanish (\Translation\_es\) translation bundles, covering core UI strings, AI settings, and enterprise feature notices, while also providing a base English bundle with common keys and extra static keys for status labels and navigation items.
server-core/src/main/java/io/onedev/server/web/translation · high confidence
New image upload and preview components
Added a new ImageUploadField component for selecting and previewing images, along with an ImageViewer component for displaying them. The upload field provides a file input with immediate client-side preview and supports configurable dimensions and background colors, while the viewer renders the image with specified sizing and styling.
server-core/src/main/java/io/onedev/server/web/component/imagedata · high confidence
New interactive RESTful API help documentation
A new web-based API help section has been added to the server, providing a browsable list of RESTful resources and detailed method pages that display HTTP methods, endpoints, parameters, and example request/response bodies. The interface includes copy-to-clipboard functionality for examples and links to a machine-readable JSON version of the API documentation, designed to assist both human developers and AI coding agents.
server-core/src/main/java/io/onedev/server/web/page/help · high confidence
New interactive UI for editing build pipeline steps
The build specification editor now features a dedicated interface for managing job steps, allowing users to view, add, reorder, and edit steps directly. This change introduces a list-based editor with drag handles for reordering, context menu options to insert steps before or after existing ones, and a modal dialog for editing step properties. Users can also change the type of an existing step in-place, with the system preserving the step's configuration during the transition. A side panel provides a quick view of step details without leaving the main editor.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/step · high confidence
New interface for managing custom issue states
Administrators can now define and manage custom issue states via a new list page and edit modal. The list view displays state names, colors, and descriptions, with the first state automatically designated as the initial state for new issues. Users can add, edit, or delete states, with validation preventing duplicate names. Changes to state names trigger a workflow reconciliation to ensure consistency.
server-core/src/main/java/io/onedev/server/web/page/admin/issuesetting/statespec · high confidence
New internal diff rendering engine with word-level granularity and whitespace controls
The server now uses a newly introduced set of classes in the \io.onedev.server.util.diff\ package to compute and render diffs. This includes a port of the Google Diff Match Patch library (\DiffMatchPatch\), a new \DiffRenderer\ that generates HTML tables with word-level highlighting for changes, and a \WhitespaceOption\ enum allowing diffs to ignore trailing, leading, or all whitespace. This change replaces the previous diff logic in this module, enabling more granular visual comparison of file contents.
server-core/src/main/java/io/onedev/server/util/diff · high confidence
New issue board editing interface
A new modal-based UI component has been introduced for editing issue boards. Users can now create and modify board specifications through a form that includes validation to prevent duplicate board names, with changes saved via AJAX to provide a responsive editing experience.
server-core/src/main/java/io/onedev/server/web/component/issue/board · high confidence
New issue choice editor with number-based referencing
The issue selection UI now supports referencing issues by their project-specific number (e.g., \#123) in addition to internal IDs. This is controlled by the new \IssueChoice\ annotation's \useNumber\ flag, which determines whether the editor and viewer display the issue number or the full reference. When viewing, if \useNumber\ is true, the issue is displayed as its number; otherwise, it shows the full reference (including project key if outside the current project's scope). The editor uses a dropdown to select issues, respecting the current project context and existing issue query filters.
server-core/src/main/java/io/onedev/server/web/editable/issue/choice · high confidence
New issue creation page with template support and workflow alerts
Users can now create new issues via a dedicated page that supports pre-filling fields using issue query templates passed as URL parameters. The page includes a workflow change alert panel to notify users of relevant workflow updates and validates that issue management is enabled for the project before allowing creation. Upon saving, the issue is opened and the user is redirected to the issue activities page.
server-core/src/main/java/io/onedev/server/web/page/project/issues/create · high confidence
New issue import wizard page for projects
A new web page has been added to allow users to import issues from external sources (such as YouTrack, GitHub, GitLab, etc.) into an existing project. The page presents a wizard interface that guides the user through the import steps, offering both a 'Dry Run' to test the import and an 'Import' action to execute it. Upon successful import, the user is automatically redirected to the project's issue list, sorted by issue number in descending order. The page also displays a notice explaining that original issue numbers are retained only if the project fork graph is free of other issues to prevent duplicates.
server-core/src/main/java/io/onedev/server/web/page/project/issues/imports · high confidence
New issue list UI components with batch editing and link display
The issue list view now uses a new set of Wicket components (IssueListPanel, IssueFilterPanel, BatchEditPanel) that support batch editing of issue fields (state, confidentiality, iterations, custom fields) with a notification toggle, and display issue links and iterations as interactive crumb-style elements. The list panel also includes controls for saving queries, filtering, ordering, exporting to XLSX/CSV, and importing issues, along with CSS for the new layout and link/iteration styling.
server-core/src/main/java/io/onedev/server/web/component/issue/list · high confidence
New issue management configuration models
The server now includes a set of new model classes in the issue support package to define and manage issue-related settings. These include BoardSpec for configuring Kanban boards (columns, queries, display fields), CommitMessageFixSetting for defining how coding agents should reference issues in commit messages, LinkSpecOpposite for defining bidirectional issue link constraints, IssueTemplate for creating reusable issue descriptions with applicable issue queries, NamedIssueQuery for saving and reusing issue queries, ProjectIssueSetting for aggregating project-level issue configurations (boards, transitions, named queries), StateSpec for defining issue workflow states with colors and descriptions, TimeTrackingSetting for configuring working hours/days and time aggregation via links, and TimesheetSetting for defining timesheet views (grouping, date ranges, issue filters). These models provide the backend structure for the issue board, workflow, linking, time tracking, and template features.
server-core/src/main/java/io/onedev/server/model/support/issue · high confidence
New issue operations panel with state transition menu
A new IssueOperationsPanel component has been introduced to display issue operations, including a state transition menu, progress indicator, and a link to create new issues. The state transition menu allows users to change the issue state via a modal dialog, respecting permission checks and transition specifications. The panel also includes a progress indicator and uses a dedicated CSS file for styling.
server-core/src/main/java/io/onedev/server/web/component/issue/operation · high confidence
New issue query edit support with context-aware criteria
A new IssueQueryEditSupport class has been added to handle the editing and viewing of issue query strings. This component enables users to define issue queries with specific criteria such as project, current project, build, commit, branch, issue, pull request, user, and state, as well as ordering and board-specific options. The edit interface provides an input assist via IssueQueryBehavior, which leverages the current project context to help users construct valid queries.
server-core/src/main/java/io/onedev/server/web/editable/issue · high confidence
New issue selection components with fuzzy search and emoji support
Added new Wicket components (IssueSingleChoice, IssueMultiChoice, IssueAddChoice) and a provider (IssueChoiceProvider) for selecting issues, featuring fuzzy search, emoji rendering in titles, and formatted display of issue references. These components integrate with Select2 and use custom JavaScript formatters to enhance the user experience when linking or assigning issues.
server-core/src/main/java/io/onedev/server/web/component/issue/choice · high confidence
New issue state transition rules for branch, build, and pull request events
The issue workflow engine now supports automatic state transitions triggered by repository events. Users can configure rules to change an issue's state when a branch is created or updated, when a build succeeds, or when a pull request is opened, merged, or discarded. These new transition specifications (BranchCreatedSpec, BranchUpdatedSpec, BuildSuccessfulSpec, PullRequestMergedSpec, etc.) allow filtering by specific branches, job names, or commit messages, providing finer control over automated issue lifecycle management.
server-core/src/main/java/io/onedev/server/model/support/issue/transitionspec · high confidence
New issue workflow reconciliation UI for resolving undefined states and fields
Administrators can now resolve inconsistencies in issue workflows through a new reconciliation interface. When the issue workflow changes, a warning alert appears prompting administrators to reconcile data. The reconciliation process is handled via a multi-step modal panel that first identifies and allows fixing of undefined workflow states (by mapping them to existing states or deleting them), then undefined custom fields (by mapping them to existing fields or deleting them), and finally undefined field values (by mapping them to valid choices or deleting them). This ensures data consistency after workflow modifications.
server-core/src/main/java/io/onedev/server/web/component/issue/workflowreconcile · high confidence
New iteration date and status display components
Added IterationDateLabel and IterationStatusLabel components to the iteration UI. IterationDateLabel renders the iteration's start and due dates with an arrow separator, displaying appropriate warning or danger styling based on whether the current date is before, within, or after the iteration period, and handles cases where dates are missing. IterationStatusLabel displays the iteration's status name with a badge that changes color (success for closed, warning for open) to provide quick visual feedback on the iteration's state.
server-core/src/main/java/io/onedev/server/web/component/iteration · high confidence
New iteration list panel with state filtering and sorting
A new IterationListPanel component has been added to the server-core web layer, providing a user interface for viewing and managing iterations. This panel allows users to filter iterations by state (Open or Closed) and sort them using various criteria, with the list updating dynamically via AJAX. It includes controls for creating new iterations and displays iteration details in a table format, supported by new CSS styling for the iteration list view.
server-core/src/main/java/io/onedev/server/web/component/iteration/list · high confidence
New iteration-based choice editors for Wicket forms
This change introduces a new set of Wicket edit components (IterationChoiceEditSupport, IterationSingleChoiceEditor, and IterationMultiChoiceEditor) that allow properties annotated with @IterationChoice to be edited via dropdowns populated with project iterations. Single-choice fields render as a select with an optional clear button, while multi-choice fields render as a multi-select; both support Ajax updates and respect the project's iteration hierarchy.
server-core/src/main/java/io/onedev/server/web/editable/iterationchoice · high confidence
New job match criteria syntax for branch, project, and job name
Users can now define job execution conditions using a new query language that supports matching on branch, project, and job name. The implementation adds a grammar (JobMatch.g4) and parser to interpret criteria such as 'on branch', 'is', and 'is not', allowing multiple values for each field (e.g., comma-separated branches). The system supports combining these criteria with logical operators (AND, OR, NOT) and parentheses, enabling complex conditional logic for when jobs should run.
server-core/src/main/java/io/onedev/server/job/match · high confidence
New job run selector component with search and infinite scroll
A new \JobRunSelector\ UI component has been added to the server-core module, providing a searchable, paginated list of jobs for a specific revision. Users can now filter available jobs by typing in a search field, with results loaded via infinite scroll. The component respects job execution permissions and displays a 'No jobs found' message when the list is empty.
server-core/src/main/java/io/onedev/server/web/component/job/runselector · high confidence
New job trigger types for branch, tag, issue, and pull request events
The build system now supports configuring jobs to run in response to specific repository and issue events. Users can add triggers for branch updates (filtering by branch, file paths, and user), tag creation (filtering by tag pattern and branch reachability), issue state changes (triggering when an issue enters a specific state), and pull request lifecycle events (open/update, merge, and discard). A new base trigger class also allows restricting triggers to specific projects and defining parameter matrices and exclusions.
server-core/src/main/java/io/onedev/server/buildspec/job/trigger · high confidence
New logical criteria classes (And, Or, Not) and base Criteria refactoring
The query criteria system in server-core now supports combining multiple conditions using new AndCriteria, OrCriteria, and NotCriteria classes, allowing users to construct more complex boolean logic in their filters. These classes delegate to underlying criteria implementations for predicate generation, matching, and metadata tracking (such as undefined fields or user renames). The base Criteria class was also refactored to include helper methods for handling large sets of numeric values efficiently, splitting them into ranges or discrete IN clauses to respect database limits.
server-core/src/main/java/io/onedev/server/util/criteria · high confidence
New mail service configuration page with test capability
Administrators can now configure the server's mail connector via a dedicated page in the admin interface. This page provides a form to edit mail service settings and includes a 'Test Settings' button that allows users to verify the configuration by sending a test email. The test logic checks for an inbox monitor; if present, it sends a message with a unique ID and waits for it to be received to confirm end-to-end functionality. If no inbox monitor is configured, it falls back to sending a test email to the authenticated user's primary email address, providing immediate feedback on whether the mail service is working correctly.
server-core/src/main/java/io/onedev/server/web/page/admin/mailservice · high confidence
New modal dialog for issue state transitions with field editing and comments
A new TransitionOptionPanel component has been introduced to handle issue state transitions via a modal interface. This UI allows users to edit specific issue fields and add comments before confirming the transition, with an 'Ok' button to submit changes and 'Cancel' or close buttons to abort. The panel includes a leave-confirmation mechanism to prevent accidental data loss if the user attempts to close the modal without saving.
server-core/src/main/java/io/onedev/server/web/component/issue/transitionoption · high confidence
New model support classes for AI, GPG, Webhooks, and entity metadata
This change introduces a suite of new model support classes in the server-core module to enable several new capabilities. It adds AiModelSetting and AiSetting to configure and manage AI model connections (including OpenAI-compatible endpoints and Jev), along with ProjectAiSetting for file exclusions. It introduces BaseGpgKey to support GPG public key storage and validation. WebHook and WebHookHeader classes are added to support webhook notifications with custom HTTP headers and event types (including workspace events). Additionally, it adds support classes for entity metadata and tracking, including EntityComment, EntityLabel, EntityReaction, EntityTouch, EntityWatch, CommentRevision, and LastActivity, as well as query personalization (NamedQuery, QueryPersonalization) and code indexing settings (CodeIndexingSetting).
server-core/src/main/java/io/onedev/server/model/support · high confidence
New notebook rendering assets and resource reference
The server now includes dedicated assets for rendering Jupyter notebooks in the web interface. This change adds a \NotebookViewResourceReference\ class that bundles the necessary JavaScript (\notebook.js\, \notebook-view.js\) and CSS (\notebook-view.css\) files. The \notebook.js\ library handles the parsing and rendering of notebook cells (code, markdown, images, etc.), while \notebook-view.js\ manages the fetch and DOM injection logic, including rewriting relative URLs for embedded media. The CSS provides styling for code inputs/outputs, markdown cells, and error states, with support for dark mode.
server-core/src/main/java/io/onedev/server/web/asset/notebook · high confidence
New notification receiver criteria for build actions
Users can now specify more granular recipients for build notifications by using new criteria such as committers, authors, and submitters, in addition to existing user and group targets. The system resolves these criteria to verified email addresses, allowing notifications to be sent to everyone who contributed to the build or to the person who triggered it.
server-core/src/main/java/io/onedev/server/buildspec/job/action/notificationreceiver · high confidence
New options for pull request title and description generation
The Create Pull Request step now offers two distinct methods for determining the pull request's title and description. Users can choose to use a generated title and description, which automatically creates content based on the branch name and commit messages (leveraging an AI model if configured), or they can manually specify the title and description using interpolatable variables. This replaces the previous single approach with a configurable choice.
server-core/src/main/java/io/onedev/server/buildspec/step/pullrequesttitleanddescriptionprovider · high confidence
New pack list and filtering UI components
Added the PackListPanel and PackFilterPanel components to the server-core web layer, providing a user interface for browsing, searching, and filtering packages. The list panel includes a query input, saved query management, and a data table for displaying packages, while the filter panel allows users to refine results by type, publication date, project, user, and labels.
server-core/src/main/java/io/onedev/server/web/component/pack/list · high confidence
New page for managing personal email addresses
Users can now access a dedicated 'My Email Addresses' page within the 'My' section to view and manage their associated email addresses. This new page integrates the existing EmailAddressesPanel component, providing a centralized interface for users to handle their email settings.
server-core/src/main/java/io/onedev/server/web/page/my/emailaddresses · high confidence
New page to manage personal access tokens
Users can now view and manage their personal access tokens via a dedicated 'My Access Tokens' page in the web UI. This page displays a list of tokens and includes a notice clarifying that access tokens are intended for API access and repository pull/push operations, but cannot be used to sign in to the web UI.
server-core/src/main/java/io/onedev/server/web/page/my/accesstoken · high confidence
New pages for managing SSO accounts
Added MySsoAccountsPage and UserSsoAccountsPage to allow users to view and manage their connected SSO accounts. These pages integrate the SsoAccountListPanel to display the list of SSO accounts associated with the current user.
server-core/src/main/java/io/onedev/server/web/page/my/ssoaccounts, server-core/src/main/java/io/onedev/server/web/page/user/ssoaccounts · high confidence
New parameter combination and utility classes for build specs
Added ParamCombination and ParamUtils classes to handle build specification parameters. ParamCombination manages parameter specifications and their input values, including logic for sorting values by ordinal, handling single vs. multiple selections, and determining parameter visibility based on conditional expressions. ParamUtils provides validation for parameter maps and matrices, ensuring unique values and correct types, as well as utilities for defining and loading dynamic bean classes for parameter serialization, including HTML sanitization for descriptions.
server-core/src/main/java/io/onedev/server/buildspec/param · high confidence
New password change page for ordinary users
A new 'Change My Password' page has been added to the user settings area. This page allows ordinary users to update their password using a dedicated edit panel. Access is restricted to ordinary, enabled users who authenticate locally; users authenticating via external systems (such as SSO or LDAP) or disabled accounts are prevented from accessing this feature.
server-core/src/main/java/io/onedev/server/web/page/my/password · high confidence
New persistence annotations for ID generation and transaction management
The server-core module introduces three new annotations in the persistence layer: EntityId, which allocates OneDev identifiers while preserving IDs from imports and system records; Sessional, which manages transaction scope for service methods (excluding REST resource and private methods); and Transactional, which ensures transactional behavior for service methods (also excluding REST resource and private methods). These annotations provide explicit markers for how persistence operations should be handled during entity ID assignment and transaction boundaries.
server-core/src/main/java/io/onedev/server/persistence/annotation · high confidence
New plain-text diff viewer with expandable context and syntax highlighting
Users can now view diffs for plain-text files using a new \PlainTextDiffPanel\ component that renders changes in a table format with optional line numbers. The viewer supports expanding collapsed context lines via AJAX controls, allowing users to inspect more surrounding code without reloading the page. Additionally, if a file name is provided, the diff content is automatically syntax-highlighted for better readability.
server-core/src/main/java/io/onedev/server/web/component/diff/text · high confidence
New post-build actions for issue creation, job triggering, and notifications
Users can now configure post-build actions to automatically create issues, trigger jobs in the same or other projects, and send notifications upon build completion. The new CreateIssueAction allows specifying a title, description, confidentiality, and custom fields for the issue. RunJobAction enables triggering other jobs within the same project with parameter matrices and exclusions. RunProjectJobAction extends this capability to cross-project job execution, supporting branch/tag selection and access token authentication. SendNotificationAction allows sending build status notifications to specified receivers.
server-core/src/main/java/io/onedev/server/buildspec/job/action · high confidence
New project avatar management interface
Users can now edit a project's avatar via a dedicated page that displays the current image and provides an upload form. The interface includes a 'Use Default' button to revert to the default avatar and an upload button that appears only after a file is selected, allowing users to replace the project's visual identity.
server-core/src/main/java/io/onedev/server/web/page/project/setting/avatar · high confidence
New project blob page with file upload and IDE integration
The project blob page has been restructured into a new layout that includes a dedicated upload panel for adding files to the repository, a 'Get Code' panel providing direct links to clone in VS Code and IntelliJ, and download options for zip and tar.gz archives. The page also features a resizable search result panel, keyboard shortcuts for quick and advanced search, and support for displaying build status and revision indexing progress.
server-core/src/main/java/io/onedev/server/web/page/project/blob · high confidence
New project branches page with base branch selection and filtering
The project branches view has been replaced with a new page that allows users to select a base branch for comparison, filter the branch list by name, and view detailed status information including ahead/behind counts, build statuses, and associated workspaces. The interface includes a modal for creating new branches from a specific revision and confirms deletion when open pull requests are present.
server-core/src/main/java/io/onedev/server/web/page/project/branches · high confidence
New project build settings pages for secrets, properties, and preservation rules
Users can now configure build-related settings directly from the project settings UI. This change introduces dedicated pages for managing job secrets (including creation, editing, archiving, and authorization), defining inherited job properties, setting default fixed-issue filters for build reports, configuring build preservation rules, and setting cache preservation days. These pages provide a centralized interface to control how builds behave, how secrets are secured and inherited, and how build artifacts and issue data are managed across the project hierarchy.
server-core/src/main/java/io/onedev/server/web/page/project/setting/build · high confidence
New project code comments management interface
Users can now view, filter, and manage code comments directly within the project. This change introduces a dedicated Project Code Comments page featuring a sidebar for saved queries (both personal and project-wide) and a main list for displaying comments. It also adds an Invalid Code Comment page to handle cases where referenced commits are missing, allowing administrators to review and delete these orphaned comments.
server-core/src/main/java/io/onedev/server/web/page/project/codecomments · high confidence
New project import wizard page
A new ProjectImportPage has been added to provide a wizard-based interface for importing projects. This page dynamically loads the appropriate importer based on URL parameters and presents a multi-step wizard to the user. It includes functionality for both a dry-run test and the actual import operation, with navigation logic that redirects users to the project overview or project list upon completion.
server-core/src/main/java/io/onedev/server/web/page/project/imports · high confidence
New project list page with advanced filtering and summary statistics
The project list view has been redesigned to support hierarchical project navigation and richer data presentation. Users can now filter projects by hierarchy (root, leaf, children of, forks of), ownership, activity status, and labels. The list displays detailed summary statistics for each project, including code, pull request, issue, build, and package stats, along with project descriptions and labels. The interface includes options to save queries, import projects, and manage project operations.
server-core/src/main/java/io/onedev/server/web/component/project/list · high confidence
New project overview page with README and site link
A new Project Overview page has been added to the project navigation. This page displays a project summary (avatar, path, description, labels, fork status, and service desk info), language statistics, and the next iteration details. It also renders the project's README file with a table of contents outline and includes a link to the published project site if available. The view is styled with a dedicated CSS resource and includes sections for child projects and various entity statistics (code, pull requests, workspaces, issues, builds, and packages).
server-core/src/main/java/io/onedev/server/web/page/project/overview · high confidence
New project query criteria for hierarchy, ownership, and status
Users can now filter projects using new query criteria: 'roots' and 'leafs' to find top-level or leaf projects in a hierarchy, 'forks of' and 'children of' to navigate fork and parent-child relationships, 'owned by me' and 'owned by \[user\]' to filter by project ownership, and status-based filters like 'missing storage', 'has outdated replicas', and 'without enough replicas'. These criteria are implemented in the project search entity layer, providing a structured way to refine project listings beyond simple text search.
server-core/src/main/java/io/onedev/server/search/entity/project · high confidence
New project selection and query editors in project settings
The project settings page now includes dedicated editors for selecting projects and entering project queries. Users can choose one or multiple projects via dropdowns that support hierarchical context and custom filtering, and can input project queries via a text field with autocomplete behavior. These new UI components enable more flexible project configuration and filtering directly within the editable project settings interface.
server-core/src/main/java/io/onedev/server/web/editable/project · high confidence
New project selector component with search and infinite scroll
A new ProjectSelector UI component has been introduced, providing a searchable list of projects with infinite scrolling support. Users can now filter projects by typing in a search field, with results ranked by similarity, and the list loads incrementally to handle large numbers of projects efficiently. The component displays project avatars and paths, highlights the currently selected project, and shows a 'No projects found' message when the search yields no results.
server-core/src/main/java/io/onedev/server/web/component/project/selector · high confidence
New project stats panels for builds and pull requests
Project pages now display dedicated statistics panels for builds and pull requests. These new components show the total count of items and break them down by status (e.g., successful, failed, open, merged), with each status link filtering the view to that specific state. The panels are only visible when there is data to display.
server-core/src/main/java/io/onedev/server/web/component/project/stats/pullrequest · high confidence
New project tags page with filtering and creation
A new Project Tags page has been added to the project UI, allowing users to view, filter, and create tags. The page includes a search field to filter tags by name, a list displaying tag details (name, signature status, build status, contributor), and a modal dialog to create new tags from a specific revision. Users can also download tag archives and delete tags directly from this interface.
server-core/src/main/java/io/onedev/server/web/page/project/tags · high confidence
New pull request changes page with multi-commit selection
The pull request changes view has been replaced with a new page that allows users to select and compare specific commits within a pull request. The interface includes a commit selector supporting single-click and shift-click multi-selection, navigation buttons to move between commits, and a filter to show only changes since the last review. The page also displays a warning when viewing a subset of changes and provides a link to view the full diff.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/changes · high confidence
New pull request choice editor for issue linking
A new \PullRequestChoiceEditSupport\ and associated editor components have been added to the server-core module. This introduces a UI component that allows users to select and link pull requests within editable properties, supporting both numeric and ID-based reference modes via the \PullRequestChoice\ annotation.
server-core/src/main/java/io/onedev/server/web/editable/pullrequest/choice · high confidence
New pull request creation page with AI title/description suggestions
The pull request creation interface has been replaced with a new page that includes a Work in Progress toggle, configurable merge strategy selection, and reviewer/assignee management. The page also integrates AI-powered suggestions to automatically generate pull request titles and descriptions, with a loading indicator shown while suggestions are being computed.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/create · high confidence
New pull request detail page with conflict resolution instructions
The pull request detail view has been replaced with a new implementation that includes a dedicated instruction panel for resolving merge conflicts. This panel provides specific git commands for both merge and rebase strategies, adapting the instructions based on whether the source and target branches are in the same or different repositories. The new page also introduces a summary section that displays merge status, build requirements, and review states, along with a sticky tab navigation and a side info panel for submission details, reviewers, and assignees.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail · high confidence
New pull request jobs panel displays build status and history
A new UI component has been added to the pull request view to display the status of associated build jobs. This panel lists each job with its current build status icon, marks required jobs with a visual indicator, and provides a dropdown to view the history of builds for that specific job. The component automatically updates when pull request changes occur and links to the project's build page for detailed filtering.
server-core/src/main/java/io/onedev/server/web/component/pullrequest/build · high confidence
New pull request list and filter components
The pull request list view has been redesigned with new UI components that provide a more structured interface for browsing and managing pull requests. Users can now filter pull requests by status, submitter, assignee, work-in-progress state, activity dates, and labels using a dedicated filter panel. The list itself displays key details such as branch information, review status, build jobs, and activity timestamps, with improved styling for titles and numbers to handle long content. This change introduces a new filter panel component and a redesigned list panel with associated CSS, enhancing the usability of the pull request management interface.
server-core/src/main/java/io/onedev/server/web/component/pullrequest/list · high confidence
New pull request management pages with invalid request handling
The project pull requests section now includes dedicated pages for listing pull requests and handling invalid states. A new InvalidPullRequestPage displays details for pull requests with missing commits or repository issues, allowing users to view the problematic commits, branch information, and delete the request if no workspaces are active. The main ProjectPullRequestsPage provides a list view with support for saved queries, personalization, and query-based filtering, integrating with the project's query inheritance settings.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests · high confidence
New pull request search criteria for assignments, reviews, and emoji reactions
Users can now filter pull request lists using new query criteria that reflect recent review and interaction states. This includes filtering by who approved or commented on a pull request (e.g., "Approved By Me", "Commented By \[User\]"), who it is assigned to ("Assigned To Me", "Assigned To \[User\]"), and emoji reaction counts (Hearts, Eyes, Confused, etc.). Additional filters allow searching by merge conflict status, pending reviews, unfinished or unsuccessful builds, and specific commit or issue inclusion.
server-core/src/main/java/io/onedev/server/search/entity/pullrequest · high confidence
New query language for filtering and sorting Pack entities
Users can now filter and sort Pack entities (build artifacts) using a new structured query language. This feature introduces support for fuzzy search (using tilde-delimited terms like \~term\~), specific field matching for name, version, type, and labels, and date range filtering (is since/is until). It also allows filtering by publication context (published by me, user, build, or project) and supports combining multiple values for fields like labels or projects. Results can be sorted by various fields in ascending or descending order.
server-core/src/main/java/io/onedev/server/search/entity/pack · high confidence
New query language for filtering build agents
Users can now filter and search for build agents using a new, structured query language. This feature introduces support for status-based filtering (online, offline, paused, or having running builds), attribute checks (has attribute, not used since, ever used since, ran build), and field-based comparisons (name, IP address, OS, OS version, OS architecture) with wildcard support. Queries can be combined using logical operators (AND, OR, NOT) and parentheses, and results can be sorted by various fields in ascending or descending order. A fuzzy search option is also available to match agents by name, IP, or OS details.
server-core/src/main/java/io/onedev/server/search/entity/agent · high confidence
New query language for filtering code comments
Users can now filter code comments using a new query syntax that supports criteria such as 'created by', 'replied by', 'mentioned', 'resolved', 'unresolved', 'on commit', 'contains', 'is since/until', and 'reply count', along with fuzzy text search and sorting. This is implemented via a new ANTLR grammar (CodeCommentQuery.g4) and corresponding Java criteria classes in the codecomment search package.
server-core/src/main/java/io/onedev/server/search/entity/codecomment · high confidence
New quick search for files and symbols in the current commit
A new QuickSearchPanel component has been added to the project blob view, enabling users to instantly search for file names and code symbols within the currently viewed commit. The feature provides an AJAX-driven modal interface that prioritizes exact matches before falling back to wildcard searches, displaying results with file scope context and allowing users to load additional matches or navigate directly to the selected code location.
server-core/src/main/java/io/onedev/server/web/page/project/blob/search/quick · high confidence
New reusable 'Select By Typing' component for keyboard navigation
A new shared JavaScript component, 'Select By Typing', has been added to the server-core assets. This component provides a standardized way to handle keyboard-based navigation (Up/Down arrows to move selection, Enter to confirm, Tab to complete) within dropdown or list-style UI elements. It is packaged as a Wicket resource reference that automatically includes necessary dependencies like DoneEvents and Hotkeys, enabling consistent and accessible keyboard interaction across various parts of the application.
server-core/src/main/java/io/onedev/server/web/asset/selectbytyping · high confidence
New reusable component for displaying simple user lists
A new set of Wicket components has been added to render a compact list of users with avatars and names. This includes a \SimpleUserListPanel\ for the list layout, a \SimpleUserListLink\ dropdown wrapper, and associated CSS styling, providing a consistent UI element for displaying user lists in various parts of the application.
server-core/src/main/java/io/onedev/server/web/component/user/list · high confidence
New reusable component for rendering issue titles
A new \IssueTitlePanel\ component has been introduced to standardize how issue titles are displayed across the application. This component renders the issue title (with emoji support and reference linking), the issue number, and a confidential indicator, while handling navigation context for the issue detail page.
server-core/src/main/java/io/onedev/server/web/component/issue/title · high confidence
New reusable confirmation modal component
A new ConfirmModalPanel component has been introduced to standardize user confirmation dialogs across the application. This component provides a consistent UI with a message, optional text input for safety checks, and feedback support, while the accompanying JavaScript logic automatically disables the confirmation button until the user types the required input, reducing accidental actions.
server-core/src/main/java/io/onedev/server/web/component/modal/confirm · high confidence
New reusable datatable components for consistent list views
This change introduces a new set of core components in the server-core web layer to standardize how data tables are rendered and navigated. DefaultDataTable provides a unified base for table layouts, integrating a responsive OnePagingNavigator that respects paging history and a ListNavigationToolbar that displays the total item count alongside navigation controls. EntityColumn simplifies the creation of sortable columns for entity lists by automatically handling display names and property binding, while EntityDataProvider offers a generic, load-detachable data provider that handles sorting and pagination queries against the DAO layer. These components replace ad-hoc implementations, ensuring consistent behavior and styling across issue, pull request, and other list views.
server-core/src/main/java/io/onedev/server/web/component/datatable · high confidence
New reusable line chart component for statistics and reports
A new Wicket-based line chart component has been added to the server-core module, providing a reusable UI element for displaying statistical data. This component supports multiple data series with features such as smooth lines, stacked areas, custom axis formatters (e.g., percentages, durations), and automatic dark mode styling. It is designed to power the new Issue, Build, and Pull request statistics and reports, as well as other chart-based widgets like burndown charts and coverage information.
server-core/src/main/java/io/onedev/server/web/component/chart/line · high confidence
New reusable list editor and viewer for draw-card bean properties
This change introduces a new set of Wicket components in the \drawcardbeanlist\ package that provide a consistent, modal-based editing experience and a summary-table view for list properties. Users can now add, edit, and delete items in a sortable table with drag handles, with changes persisted via a modal form that includes validation and feedback. A corresponding read-only view displays the list in a table, allowing users to click an ellipsis icon to open a side-draw panel showing detailed information for each item. This infrastructure is intended to replace ad-hoc list editors with a standardized, reusable pattern across the application.
server-core/src/main/java/io/onedev/server/web/editable/drawcardbeanlist · high confidence
New reusable log display component with pause/resume support
The logging UI now uses a new \LogPanel\ component that provides a scrollable, auto-updating log view. This component supports pausing and resuming log streaming, displaying a 'Execution paused' indicator with a resume link when paused, and automatically managing the number of displayed entries to prevent performance issues.
server-core/src/main/java/io/onedev/server/web/component/logging · high confidence
New reusable message modal component
A new set of Wicket components has been added to the server-core module to provide a standardized, reusable modal dialog for displaying messages. This includes a base \MessagePanel\ with a header, content area, and footer, along with an abstract \MessageModal\ wrapper for easier integration, supported by a dedicated CSS file for footer alignment. Users will benefit from a consistent look and feel for system notifications and informational pop-ups across the application.
server-core/src/main/java/io/onedev/server/web/component/modal/message · high confidence
New reusable modal dialog component for Wicket pages
The server's web UI now includes a new \ModalLink\ and \ModalPanel\ component pair in the Wicket component hierarchy, providing a standardized way to open modal dialogs via AJAX links. This change introduces a reusable pattern where clicking a link dynamically creates and appends a modal panel to the page body, handling lifecycle events like closing and cleanup. The accompanying JavaScript (\modal.js\) manages modal behavior, including keyboard shortcuts (Escape to close), backdrop handling, and integration with other UI elements like select2 and color pickers, ensuring a consistent user experience for modal interactions across the application.
server-core/src/main/java/io/onedev/server/web/component/modal · high confidence
New reusable subscription status toggle component
A new abstract Wicket component, SubscriptionStatusLink, has been added to the web layer to provide a consistent, AJAX-driven toggle for watch/unwatch actions. This component renders SVG bell icons (ring for watched, off for unwatched) and displays contextual tooltips ('Watched. Click to unwatch' or 'Unwatched. Click to watch') based on the current subscription state. It is accompanied by specific CSS styling to manage icon visibility and a resource reference for its styles, forming the UI foundation for the central place to review/remove watched queries.
server-core/src/main/java/io/onedev/server/web/component/subscriptionstatus · high confidence
New reusable tabbed navigation components for Wicket UI
The server's web UI now includes a new set of reusable components in the \tabbable\ package to handle tabbed navigation. This introduces \Tabbable\ as the container, \Tab\ as the base abstract class, and specific implementations like \ActionTab\ (for in-page actions), \AjaxActionTab\ (for AJAX-driven tab switching), and \PageTab\ (for navigating to different pages). These components support optional SVG icons and titles, automatically manage the active tab state, and render standard Bootstrap navigation markup, providing a consistent and structured way to build tabbed interfaces across the application.
server-core/src/main/java/io/onedev/server/web/component/tabbable · high confidence
New reusable watchers display component
A new EntityWatchesPanel component has been added to the server-core module, providing a standardized UI widget for displaying entity watchers. This component renders a list of user avatars (capped at 20), includes a link to view additional watchers, and offers a button for the current user to toggle their watch status (Watch, Ignore, or Default). It is designed as an abstract base class for integration into specific entity views, handling authorization checks and AJAX updates for watch status changes.
server-core/src/main/java/io/onedev/server/web/component/entity/watches · high confidence
New revision comparison page with pull request creation
Users can now compare two revisions within a project via a new Revision Compare page. This page allows selecting a base revision (with an option to use the common ancestor/merge base) and a target revision, swapping the selection, and viewing differences through tabs for commits and file changes. It also provides a direct link to create a pull request for the selected changes and displays relevant alerts for unrelated histories or missing selections.
server-core/src/main/java/io/onedev/server/web/page/project/compare · high confidence
New revision diff view with code annotations and review tracking
The revision diff view now supports code annotations, including code problems, coverage status, and code comments, displayed alongside the diff. Users can view a review progress bar indicating how many files have been reviewed, toggle between unified and split diff modes, and download diff patches. The interface includes a path filter to narrow down changes, resizable comment and navigation panels, and support for batched code suggestions.
server-core/src/main/java/io/onedev/server/web/component/diff/revision · high confidence
New revision picker components for branch and tag selection
Added new Wicket components (AffinalRevisionPicker, RevisionPicker, RevisionSelector) and their associated HTML, CSS, and JavaScript assets to the server-core web layer. These components provide a unified UI for selecting Git revisions (branches, tags, or commits) with features like filtering, tabbed navigation between branches and tags, and support for creating new refs where permissions allow. The AffinalRevisionPicker extends this capability to forked projects, allowing users to select revisions from the fork root and its descendants.
server-core/src/main/java/io/onedev/server/web/component/revision · high confidence
New role management interface in administration settings
Administrators can now create, edit, and delete custom roles through a dedicated UI in the administration section. The new RoleListPage provides a searchable table of existing roles with inline actions, while the NewRolePage and RoleDetailPage allow for defining role names, descriptions, and specific issue link authorizations. All changes are tracked via the audit service, and the built-in Project Owner role is protected from deletion.
server-core/src/main/java/io/onedev/server/web/page/admin/rolemanagement · high confidence
New server plugin archetype scaffolding
The server-plugin-archetype now includes the core template files for generating a new server plugin project. This adds the Maven archetype descriptor and a Java module class (PluginModule) that extends AbstractPluginModule, providing users with a starting point for defining Guice bindings in their plugins.
server-plugin/server-plugin-archetype · high confidence
New server-side database maintenance and recovery commands
The server now includes a suite of command-line handlers for direct database administration, allowing administrators to back up, restore, clean, and verify the database integrity without starting the full web server. New commands include \backup-db\ to export the database to a zip file, \restore-db\ to import data from a backup (including automatic migration and constraint application), \clean-db\ to clear all data, \check-data-version\ to report the current schema version, \apply-db-constraints\ to fix integrity issues after a restore or upgrade, \reset-admin-password\ to recover access to the root account, and \enable-internal-login\ to re-enable local authentication if it was disabled. These tools operate in maintenance mode, ensuring the server is stopped and database locks are held during execution.
server-core/src/main/java/io/onedev/server/commandhandler · high confidence
New side panel for issue details
A new side panel component has been introduced for the issue details view, consolidating key issue metadata and actions into a dedicated sidebar area. This panel displays issue fields, iteration assignments, associated branches, votes, watches, and external participants, while also providing controls for marking issues as confidential, moving, or deleting them. The layout is styled with new CSS to ensure a clean, organized presentation of these details alongside the main issue content.
server-core/src/main/java/io/onedev/server/web/component/issue/side, server-core/src/main/java/io/onedev/server/web/component/pack/side · high confidence
New source code view and edit panels with CodeMirror integration
The source file view and edit interfaces in the project blob renderer have been replaced with new \SourceViewPanel\ and \SourceEditPanel\ components. These panels integrate the CodeMirror editor to provide syntax highlighting, code folding, and line numbers. The view panel adds gutter indicators for code comments, static analysis problems, and code coverage status, along with a resizable outline panel for symbol navigation. The edit panel supports configurable indentation, tab size, and line wrapping, and includes autosave functionality with a warning banner to discard unsaved changes.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/source · high confidence
New state statistics bar component for issue iterations
A new \StateStatsBar\ component has been added to display a visual breakdown of issue counts by state within an iteration. The component renders a horizontal bar where each segment's width is proportional to the number of issues in that state, using configured colors and rounded styling. It includes tooltips showing the specific count and state name, and handles the empty state by displaying a full-width placeholder with a 'No issues in iteration' message. This component is part of the broader iteration/milestone replacement feature, specifically providing the UI widget for visualizing state distribution.
server-core/src/main/java/io/onedev/server/web/component/issue/statestats · high confidence
New string choice UI components for Wicket forms
Added new Wicket components (StringSingleChoice, StringMultiChoice, StringRadioChoice, and StringChoiceProvider) that provide Select2-based single and multi-select inputs and radio groups for string lists. These components support optional display names and descriptions for choices, allow filtering by similarity, and include a tags mode that permits free-text entry not present in the predefined list.
server-core/src/main/java/io/onedev/server/web/component/stringchoice · high confidence
New string property editor with multiline and input-assist support
The web UI now uses a dedicated editor for String properties that supports both single-line text fields and multi-line text areas (controlled by the Multiline annotation). Multi-line inputs preserve line endings, support monospace styling, and allow custom max-heights. Single-line inputs integrate with the input-assist feature, disable spell-checking and auto-complete by default, and avoid auto-focusing on non-required fields. View rendering escapes HTML for security and displays empty values appropriately.
server-core/src/main/java/io/onedev/server/web/editable/string · high confidence
New structured build query language with branch and dependency filtering
Users can now filter builds using a new query syntax that supports specific criteria such as branch name (including empty branch checks), build status, job name, labels, parameters, and dependency relationships (depends on/dependencies of). The implementation introduces a new ANTLR grammar (BuildQuery.g4) and a suite of criteria classes (e.g., BranchCriteria, DependsOnCriteria, LabelCriteria) that enable precise, structured searches beyond simple fuzzy text matching.
server-core/src/main/java/io/onedev/server/search/entity/build · high confidence
New structured build spec editor and viewer with AI integration
The build specification file (\.onedev-buildspec.yml\) now has a dedicated, structured editor and viewer in the project's file browser. Users can view the build spec as a visual interface with tabs for Jobs, Services, Step Templates, Properties, and Imports, rather than just raw YAML. The editor supports adding, editing, and organizing these elements with a pipeline view. Additionally, the editor integrates with the AI assistant, allowing users to get edit instructions, retrieve the current spec, or save changes via AI chat tools.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/buildspec · high confidence
New tabbed user detail page with role-specific settings
Administrators now see a unified, tabbed interface for managing user profiles, replacing the previous layout. The new UserPage consolidates settings into tabs such as Profile, Basic Settings, Email Addresses, and Avatar. The available tabs adapt to the user's type: AI users gain an 'AI Settings' tab (including model and behavior configuration), while ordinary users see Password, Two-factor Authentication, and SSO Accounts tabs. Service users are restricted to core profile and membership tabs, and Query Watches are hidden for them. This change introduces the structural UI for user management, including sticky tabs and specific panels for avatar editing and basic info.
server-core/src/main/java/io/onedev/server/web/page/user · high confidence
New table-based editor for lists of beans
The property editor now supports editing lists of complex objects (beans) as a structured table with columns for each property, rather than a simple list of values. This change introduces a new \BeanListEditSupport\ and associated editor/viewer components that render list properties as rows with individual field editors, allowing users to add, delete, and reorder items directly within the list context.
server-core/src/main/java/io/onedev/server/web/editable/beanlist · high confidence
New tag creation UI component with validation and protection checks
The server now includes a new Wicket-based UI component (CreateTagPanel) for creating tags, featuring client-side validation for tag names and server-side checks for existing tags and branch/tag protection rules before allowing creation.
server-core/src/main/java/io/onedev/server/web/component/createtag · high confidence
New text-based blob diff view with symbol context and code annotations
The text diff rendering for blob changes has been replaced with a new Wicket-based component (BlobTextDiffPanel) that provides a richer, interactive diff experience. Users now see enclosing symbol context labels (e.g., function or class names) above code hunks, with sticky headers that follow the scroll position. The view integrates code problem indicators, test coverage markers, and code comments directly into the diff lines, and supports symbol navigation via hover tooltips. Selection and comment interactions are handled through a dedicated JavaScript module, with CSS styling for dark mode and split-view layouts.
server-core/src/main/java/io/onedev/server/web/component/diff/blob/text · high confidence
New text-selection popover with dark mode support
A new selection popover component has been added to the server UI, allowing users to trigger actions on selected text via a fixed-position popup that respects viewport boundaries. The implementation includes dedicated CSS and JavaScript assets that support both light and dark themes, ensuring the popover adapts its background and shadow styles based on the current theme. This change introduces the underlying UI mechanism for text selection interactions rather than modifying an existing feature.
server-core/src/main/java/io/onedev/server/web/asset/selectionpopover · high confidence
New unified entity reference system for issues, builds, pull requests, and workspaces
The server now uses a new \EntityReference\ framework to parse, track, and link references to issues, builds, pull requests, and workspaces. When you mention these items in issue descriptions, pull request comments, or code comments, the system automatically detects them, creates bidirectional change records linking the source to the target, and renders them as clickable links to the respective detail pages. This provides a consistent way to navigate between related entities across the project.
server-core/src/main/java/io/onedev/server/entityreference · high confidence
New unit test report plugin for build analysis
A new plugin module has been added to display unit test results within the OneDev server. This introduces a dedicated sidebar menu item for project-level unit test statistics and integrates a new 'Unit Test' tab into the build detail view. Users can now navigate to pages showing test suites, individual test cases, and overall statistics for each build, with the plugin handling the necessary URL routing and cluster-aware synchronization for report data.
server-plugin-report-unittest · high confidence
New unit test report plugin with detailed case and suite views
This change introduces a new unit test report plugin that adds a dedicated UI for viewing unit test results. Users can now access pages to filter and browse individual test cases and test suites, with support for filtering by name, suite, and status, as well as sorting by duration. The plugin also provides a statistics page for build metrics and enables the download of test artifacts associated with the reports.
server-plugin/server-plugin-report-unittest · high confidence
New user and person card components for displaying account details
The web interface now includes dedicated card components (PersonCardPanel and UserCardPanel) to display user information with avatars and contextual details. For registered users, the card shows the display name and a link to their profile using the @handle format, while distinguishing between system accounts and unknown accounts. For Git committers (PersonIdent), the card displays the name, Git role, and either a verified email owner's profile link or a 'No OneDev Account' indicator if the email is unverified or missing.
server-core/src/main/java/io/onedev/server/web/component/user/card · high confidence
New user and person identification UI components
Added new Wicket components (UserIdentPanel, PersonIdentPanel) and supporting resources (CSS, Mode enum) to display user or Git committer identities. These components render an avatar and name, allow clicking to navigate to the user's profile page, and show a hover card with additional details.
server-core/src/main/java/io/onedev/server/web/component/user/ident · high confidence
New user management pages for inviting and creating users
The admin user management area now includes dedicated pages for inviting new users and creating new accounts. Administrators can send email invitations via a new Invitation List page, which supports filtering, resending, and canceling invitations. A new Create User page allows adding ordinary, service, and AI users, with validation to prevent duplicate names or email addresses, automatic assignment to the default login group, and an option to continue adding multiple users in one session. These pages replace the previous inline or less-structured workflows for user onboarding in the admin console.
server-core/src/main/java/io/onedev/server/web/page/admin/usermanagement · high confidence
New user profile activity components for pull requests, issues, and code comments
The user profile activity view now includes specific components to display a wider range of user actions. Users will see entries for opening, merging, discarding, reopening, and requesting changes on pull requests, as well as opening issues and transitioning their states. Additionally, the activity feed now tracks code review interactions, including creating, replying to, resolving, and unresolving code comments on files.
server-core/src/main/java/io/onedev/server/web/component/user/profile/activity · high confidence
New user profile page with activity date range filtering
A new User Profile page has been added, allowing users to view their profile information along with activity data filtered by a specific date range. The page supports dynamic date range selection via AJAX, updating the URL state to reflect the chosen range and handling browser back/forward navigation to restore the previous view.
server-core/src/main/java/io/onedev/server/web/page/my/profile, server-core/src/main/java/io/onedev/server/web/page/user/profile · high confidence
New user profile panel with activity calendar and authentication alerts
The user profile view has been replaced with a new panel that displays a contribution-style activity calendar (powered by ECharts) alongside yearly navigation and activity type statistics. The panel also includes specific UI alerts to inform administrators when a user authenticates via an internal database or an external system, providing direct actions to manage password settings or reset credentials.
server-core/src/main/java/io/onedev/server/web/component/user/profile · high confidence
New user selection editors with collaborator scoping
The web interface now includes dedicated editors for single and multiple user selections, allowing users to pick one or more active users from a dropdown. These editors automatically sort the available users alphabetically by display name and, when the field is configured to respect project context, restrict the selection list to only the project's effective collaborators, ensuring users can only assign or mention relevant team members.
server-core/src/main/java/io/onedev/server/web/editable/userchoice · high confidence
New watch status selection component for queries
Added a new Wicket component set (WatchStatusLink, WatchStatusPanel, and associated CSS) that provides a dropdown UI for users to select their notification preference for a watched query. The component offers three options—'Watch if involved' (default), 'Watch', and 'Ignore'—and uses AJAX to update the status, allowing users to manage how they are notified about activities related to that query.
server-core/src/main/java/io/onedev/server/web/component/watchstatus · high confidence
New web edit beans for project authorizations, iterations, and user management
This change introduces a set of new EditBean classes in the server-core web layer to support updated UI editing capabilities. ProjectAuthorizationsBean and ProjectAuthorizationBean enable assigning multiple roles to project authorization, including the ability to apply default roles to all root projects (OD-2336). IterationEditBean supports the replacement of milestones with iterations (OD-1961), handling name prefixes, dates, and validation. NewUserBean adds support for configuring AI model settings for AI-type users. Additional beans like CommitMessageBean, IssueWorkBean, and LabelsBean provide structured editing for commit messages, work logging, and label management.
server-core/src/main/java/io/onedev/server/web/util/editbean · high confidence
New web resources for agent management, build artifacts, and project archives
This change introduces a suite of new Wicket resource handlers in the server-core module to support agent operations and enhanced project data access. Administrators can now download a pre-configured agent package (including wrapper and library files) and view live agent logs directly from the server. The system also adds resources to download build artifacts, retrieve project archives (zip/tar.gz) for specific revisions, and fetch build logs, with all these resources supporting cluster-aware routing to ensure data is served from the correct server node.
server-core/src/main/java/io/onedev/server/web/resource · high confidence
New web utility classes for URL rendering, input suggestions, and wiki link resolution
The server's web utility layer has been expanded with a suite of new classes to support enhanced UI interactions and content handling. Input suggestions for build specs and queries are now powered by the new SuggestionUtils class, which provides fuzzy matching for branches, tags, and labels. Wiki navigation and link resolution have been refactored into dedicated WikiLinkResolver and WikiUtils components to handle relative paths and permission-gated actions. Additional utilities include a Cursor class for managing pagination state, a ConfirmClickModifier for safe user confirmations, and several 'Aware' interfaces (such as ProjectAware and BuildAware) to streamline context passing in Wicket pages.
server-core/src/main/java/io/onedev/server/web/util · high confidence
New wizard UI component for multi-step workflows
A new wizard component has been added to the server-core web layer, providing a structured, multi-step interface for user workflows. This includes the core WizardPanel and WizardStep interfaces to manage step navigation and state, a DefaultEndActionsPanel for final submission actions, and associated CSS styling. Users will see this component in any server features that utilize a guided, step-by-step process.
server-core/src/main/java/io/onedev/server/web/component/wizard · high confidence
New workspace changes page with file diff and commit UI
A new Workspace Changes page has been added to the project workspace detail view, providing a dedicated interface for managing repository changes. The page features a sidebar listing staged, unstaged, and conflicted files with actions to stage, unstage, discard, and mark resolved, alongside a commit form for creating commits. On narrow screens, the file diff view switches to a modal to maintain usability. The implementation includes a new CSS resource reference and styles to support the layout, dark mode, and responsive behavior.
server-core/src/main/java/io/onedev/server/web/page/project/workspaces/detail/changes · high confidence
New workspace data management panel
A new WorkspaceDataPanel has been added to the user interface, allowing users to view and manage personal workspace data that persists after a workspace is deleted. The panel displays a table of workspace data keys, the number of indexed paths associated with each key, and the last-updated timestamp (with absolute datetime shown on hover via tippy). Users can delete specific workspace data entries via an AJAX action that confirms the deletion before removing the data directory across the cluster.
server-core/src/main/java/io/onedev/server/web/component/user/workspacedata · high confidence
New workspace data pages and number list editing support
Users can now view workspace data through new dedicated pages for their own workspace (My Workspace Data) and other users' workspaces, both utilizing the WorkspaceDataPanel component. Additionally, the system now supports editing properties that are lists of integers or longs via a new NumberListEditSupport, allowing users to input multiple numbers separated by spaces in a single text field, which are then displayed as individual badges in view mode.
server-core/src/main/java/io/onedev/server/web/editable/numberlist, server-core/src/main/java/io/onedev/server/web/page/my/workspacedata, server-core/src/main/java/io/onedev/server/web/page/user/workspacedata · high confidence
New workspace management UI components
This change introduces a suite of new Wicket components for the workspace feature, including a list panel with search, filtering (by status, branch, spec, creator, agent, and date), and saved queries; a spec list panel that displays workspace specifications with descriptions and associated workspaces; a spec run selector for creating workspaces from specific specs; and UI indicators for workspace status and invalid specs.
server-core/src/main/java/io/onedev/server/web/component/workspace · high confidence
New workspace search query syntax and criteria
Users can now filter workspaces using a new query language that supports status (active, inactive, pending), creation filters (created by me, created by user, date ranges), and workspace attributes (branch, spec, project, issue, pull request, commit, number). The search also supports fuzzy matching, ordering, and querying workspaces by the agent they ran on.
server-core/src/main/java/io/onedev/server/search/entity/workspace · high confidence
New workspace spec management interface in project settings
Project administrators can now define, edit, copy, and delete workspace specs via a new settings page. The interface supports creating specs from scratch or from existing templates, allows reordering specs via drag-and-drop, and ensures unique names within the project hierarchy.
server-core/src/main/java/io/onedev/server/web/page/project/setting/workspacespec · high confidence
Plugin extensibility for project settings
Project administrators can now extend the project settings interface through third-party plugins. This change introduces a new extension point, ProjectSettingContribution, allowing plugins to register their own settings pages (ContributedProjectSetting) which are automatically discovered and added to the project settings sidebar menu. The settings menu now dynamically aggregates these contributed items, enabling modular feature additions without modifying core server code.
server-core/src/main/java/io/onedev/server/web/page/project/setting · high confidence
Plugin-contributed project settings are now configurable via the UI
Users can now manage settings contributed by plugins directly within the project settings interface. A new ContributedProjectSettingPage allows project managers to enable or disable specific plugin settings, edit their configuration via dynamic editors, and save changes. Each save action is recorded in the project's audit log, providing a clear history of who changed which contributed setting and what the previous values were.
server-core/src/main/java/io/onedev/server/web/page/project/setting/pluginsettings · high confidence
Project code statistics now display language breakdowns and code metrics
Users can now view detailed statistics about a project's codebase, including a visual breakdown of programming languages used (with a color-coded bar chart and legend) and counts for files, commits, branches, and tags. This new panel provides a quick overview of the project's technical composition and activity directly on the project stats view.
server-core/src/main/java/io/onedev/server/web/component/project/stats/code · high confidence
Project hierarchy and default role inheritance
Users can now organize projects into a parent-child hierarchy and configure default roles that are inherited by child projects. The General Project Settings page now includes a 'Parent Project' field to define the hierarchy (with validation to prevent circular references) and a 'Default Roles' field to specify which roles apply to all members by default, combining permissions from the project and its ancestors.
server-core/src/main/java/io/onedev/server/web/page/project/setting/general · high confidence
Project selection now displays avatars alongside project paths
The project choice components (single and multi-select) have been updated to include project avatars in the dropdown and selection views. When users search for or select projects, the interface now renders a small avatar image next to the project path/name, providing a visual cue to help identify projects more quickly.
server-core/src/main/java/io/onedev/server/web/component/project/choice · high confidence
Project-level issue branch prefix and state transition settings
Project administrators can now configure specific issue branch prefixes and define custom state transition rules directly within project settings. The new Issue Branch Prefix page allows setting a prefix for auto-generated branches, while the Issue State Transitions page enables defining how issues move between states, with rules merging from the project, ancestor projects, and global defaults. These features require an active subscription and are fully audited.
server-core/src/main/java/io/onedev/server/web/page/project/setting/issuesetting · high confidence
Publish and view markdown reports in build details
Users can now publish markdown files as build artifacts and view the rendered content in a dedicated build tab. The new 'Markdown Report' step allows specifying a start page relative to the job working directory, while the 'Pull Request Markdown Report' step publishes content for display in the pull request overview. The plugin includes a new download resource for serving markdown files and a CSS stylesheet to limit the report width for better readability.
server-plugin/server-plugin-report-markdown · high confidence
Python project build spec job suggestions
The system now automatically suggests CI jobs for Python projects by detecting and parsing configuration files such as pyproject.toml (including Poetry and standard PEP 621 formats), setup.py, setup.cfg, tox.ini, and requirements.txt. The suggested jobs include dependency installation, test execution (supporting both pytest and unittest), and coverage reporting, with specific handling for Poetry's optional dependency groups and pip cache setup.
server-plugin/server-plugin-buildspec-python · high confidence
Redesigned build detail page with sticky tabs and manual artifact upload
The build detail page has been restructured to improve usability and extensibility. The navigation tabs are now sticky, remaining visible while scrolling through the build content. A new manual artifact upload feature allows users to upload files directly to a build's artifact store via a dedicated modal dialog. The page layout now intelligently redirects to the most relevant tab (Artifacts, Steps, Pipeline, or Fixed Issues) based on the build's state and user permissions. Additionally, the tab system is now extensible via a new contribution point, allowing plugins to add custom tabs to the build detail view.
server-core/src/main/java/io/onedev/server/web/page/project/builds/detail · high confidence
Redesigned sidebar and topbar layout with plugin extensibility
The application's main page layout has been restructured to provide a more stable and customizable user interface. The sidebar now features a collapsible design with persistent state across navigations, while the topbar includes new quick-access tools such as an AI chat panel, a command palette (triggered by Ctrl/Cmd+K), and automatic light/dark mode detection. To support future extensibility, the layout now exposes extension points (AdministrationMenuContribution, MainMenuCustomization) that allow plugins to contribute items to the sidebar and administration settings.
server-core/src/main/java/io/onedev/server/web/page/layout · high confidence
Rust CI job suggestions added
The Rust buildspec plugin now automatically suggests a CI job for projects containing a Cargo.toml file. This suggested job includes steps to detect the build version, set up a Cargo dependency cache, and run tests using nextest with coverage (via llvm-cov) and Clippy linting reports. The job is triggered on branch updates and pull requests.
server-plugin/server-plugin-buildspec-rust · high confidence
Self-service account deletion and avatar rendering
Users can now delete their own accounts via a new self-delete link that triggers a confirmation dialog, performs the deletion, logs the action in the audit trail, and automatically logs the user out. Additionally, a new UserAvatar component renders user profile images by fetching URLs from the AvatarService, applying specific CSS classes for system versus regular users.
server-core/src/main/java/io/onedev/server/web/component/user · high confidence
Service Desk settings page now audits configuration changes
The Service Desk settings page in the admin console now records an audit log entry whenever the service desk configuration is modified. Administrators can view a history of these changes, including the previous and new settings, providing better traceability for system configuration updates.
server-core/src/main/java/io/onedev/server/web/page/admin/servicedesk · high confidence
Service Locator configuration UI
Added web UI components for editing Service Locator settings within build specifications. Users can now manage a list of service locators, specifying which services and container images each locator applies to, as well as configuring node selector entries for job execution.
server-core/src/main/java/io/onedev/server/web/editable/servicelocator · high confidence
Structured change tracking for pull request activities
The server now records specific pull request events—such as approvals, merges, title or description edits, target branch changes, and WIP status updates—as structured data objects. This enables the system to generate detailed, human-readable activity logs that clearly show what changed (e.g., old vs. new values) and how actions like merging or discarding were performed, improving transparency in the pull request history.
server-core/src/main/java/io/onedev/server/model/support/pullrequest/changedata · high confidence
Support for .NET TRX unit test reports
Users can now publish and view .NET TRX (Test Run Result) unit test reports. This change adds a new 'TRX Report (.net unit test)' build step that parses TRX XML files, displaying test outcomes, durations, and error details. Failed test locations are linked directly to the source code in the project blob viewer, allowing users to navigate from test failures to the relevant code lines.
server-plugin/server-plugin-report-trx · high confidence
Support for GFM callout blocks in markdown
Users can now use GitHub Flavored Markdown callout syntax (e.g., \\> \[!NOTE\]\) in markdown content. The markdown renderer has been extended with a new \CalloutExtension\ that parses these blocks into styled HTML divs with specific CSS classes and icons for types like note, tip, important, warning, and caution, providing better visual distinction for highlighted information.
server-core/src/main/java/io/onedev/server/markdown · high confidence
Support for PowerShell and Windows Batch command interpreters
Users can now select PowerShell or Windows Batch as command interpreters for build steps, in addition to the existing POSIX shell option. This change introduces specific interpreter classes (PowerShellInterpreter, WindowsBatchInterpreter, PosixInterpreter) that allow users to specify the executable (e.g., powershell.exe) and commands, enabling native script execution on Windows environments without relying solely on POSIX-compatible shells.
server-core/src/main/java/io/onedev/server/buildspec/step/commandinterpreter · high confidence
Support for dark mode branding logos
The BrandLogoPanel component now supports displaying a distinct logo for dark mode. When the panel is initialized with dark mode enabled (or detects it from the current page), it serves 'assets/logo-dark.png' instead of the default 'assets/logo.png'. If the specific dark mode logo file is missing, it falls back to the default logo image, ensuring the brand identity remains visible regardless of the theme.
server-core/src/main/java/io/onedev/server/web/component/brandlogo · high confidence
Support for editing lists of beans in a vertical layout
Users can now edit properties that are lists of concrete, editable beans using a new vertical list interface. This change introduces a dedicated editor that displays list items in a table with drag handles for reordering, buttons to add or delete individual elements, and inline validation feedback. A corresponding viewer renders these lists in a read-only vertical table format, showing a placeholder when the list is empty.
server-core/src/main/java/io/onedev/server/web/editable/verticalbeanlist · high confidence
Support for editing lists of enum values in property forms
Users can now edit properties that hold a list of enum values using a multi-select interface. This change introduces a new edit support component that detects List\<Enum\<?\>\> properties and renders them with a multi-choice selector (backed by Select2/StringMultiChoice) for editing, and a comma-separated, translated label for viewing. This enables more flexible configuration of fields that require multiple enum selections.
server-core/src/main/java/io/onedev/server/web/editable/enumlist · high confidence
Support for editing lists of strings in property forms
Users can now edit properties defined as a list of strings directly within the web interface. This change introduces a new edit support component that detects List\<String\> properties and renders them using a multi-select input (powered by Select2) for editing and a list of badges for viewing. This allows for more intuitive management of multi-value string fields in project settings and other configurable areas.
server-core/src/main/java/io/onedev/server/web/editable/stringlist · high confidence
Support for editing numeric properties in issue forms
Users can now edit numeric fields (int, long, float, double) directly in issue forms via a dedicated text input. This new component handles both viewing and editing of numeric values, excluding those already handled by specific choice annotations (IssueChoice, PullRequestChoice, BuildChoice, WorkingPeriod).
server-core/src/main/java/io/onedev/server/web/editable/numeric · high confidence
Support for editing polymorphic properties in the UI
The server now provides a dedicated UI component for editing and viewing properties that can hold different implementation types (polymorphic properties). When a property is annotated as editable but refers to an abstract class or interface, the system automatically uses a new polymorphic editor that allows users to select the specific concrete type and edit its fields, while also supporting the display of the current value's type and description in view mode.
server-core/src/main/java/io/onedev/server/web/editable/polymorphic · high confidence
Support for editing properties annotated with GroupChoice
Users can now edit properties marked with the @GroupChoice annotation in settings and configuration forms. This change introduces a new edit support mechanism that renders single or multi-select dropdowns for group names, allowing users to assign or select groups directly from the UI. The editors fetch available groups via the GroupService and support both single selection (with optional clearing) and multiple selection, integrating with the existing Wicket-based property editing framework.
server-core/src/main/java/io/onedev/server/web/editable/groupchoice · high confidence
Support for emoji rendering in git history
Users can now use emoji aliases (such as :smile:) in git commit messages and see them rendered as actual emoji characters in the git history view. This is enabled by a new emoji asset module that loads a comprehensive emoji database and replaces text-based aliases with their corresponding unicode characters.
server-core/src/main/java/io/onedev/server/web/asset/emoji · high confidence
Support for emoji syntax in markdown content
Users can now use emoji syntax (e.g., :smile:) in markdown fields such as commit messages and issue descriptions. This change introduces a new markdown extension that parses colon-delimited emoji aliases and renders them as their corresponding Unicode characters in the UI, ensuring consistent display across git history and editor views.
server-core/src/main/java/io/onedev/server/web/component/markdown/emoji · high confidence
Support for image property editing with upload and preview
Users can now edit properties annotated with @Image through a dedicated editor that provides an upload field for selecting images and a viewer for previewing them. This new ImageEditSupport, along with ImagePropertyEditor and its template, handles the rendering of image data in forms, allowing users to upload images that conform to specified constraints (accepted types, dimensions, and background color) and view the current value.
server-core/src/main/java/io/onedev/server/web/editable/image · high confidence
Support for inline SVG sprite icons
The server now supports rendering inline SVG icons via a new sprite-based system. This change introduces the \SpriteImage\ Wicket component, a \SpriteImageResolver\ to handle \\<svg\>\ tags in markup, and a \SpriteImageWrapper\ panel. Together, these components allow the UI to reference and display SVG icons from centralized sprite sheets, replacing previous icon rendering methods.
server-core/src/main/java/io/onedev/server/web/component/svg · high confidence
Support for publishing GoogleTest reports
Users can now publish and view GoogleTest XML reports in build results. This adds a new 'Google Test Report' publish step to the build specification, allowing users to specify XML file patterns (e.g., generated via \GTEST\_OUTPUT\). The plugin parses these reports to display test suites and cases with their status (passed, failed, skipped, disabled) and duration. Failure and skip messages are rendered with links to the relevant source code lines in the build's commit, provided the file path and line number are present in the message. The implementation includes a new parser, a publish step, and a plugin module to register the functionality.
server-plugin/server-plugin-report-gtest · high confidence
Support for publishing and viewing Markdown build reports
Users can now publish Markdown files as build artifacts and view their rendered content directly in the OneDev UI. This change introduces a new plugin module that registers \PublishMarkdownReportStep\ and \PublishPullRequestMarkdownReportStep\ as implementations of the report publishing step, mounts a dedicated web page for rendering Markdown content, and contributes Markdown report tabs to the build detail view as well as summary parts to pull request details. The implementation includes cluster-aware synchronization to ensure consistent report availability across high-availability server setups.
server-plugin-report-markdown · high confidence
Support for selecting builds by number or ID in issue fields
Users can now configure custom issue fields to reference builds using either the build's unique ID or its human-readable number. This new capability is implemented via the \BuildChoiceEditSupport\ and its associated single and multi-choice editors (\BuildSingleChoiceEditor\, \BuildMultiChoiceEditor\), which allow properties annotated with \@BuildChoice\ to specify the display mode. When editing issues, users can select one or multiple builds from a dropdown, with the system resolving the selection based on the configured mode, enabling more intuitive linking of builds to issues.
server-core/src/main/java/io/onedev/server/web/editable/build/choice · high confidence
Support for selecting multiple jobs in build specifications
Users can now select multiple jobs as inputs for a build step, in addition to the existing single-job selection. This is enabled by new UI editors (JobSingleChoiceEditor and JobMultiChoiceEditor) and a corresponding edit support class that handle properties annotated with @JobChoice, allowing build specs to reference a list of upstream jobs rather than just one.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/job/choice · high confidence
Support for single and multiple role selection in authorization settings
The authorization settings now allow users to assign either a single role or multiple roles to a project. This is implemented via new Wicket-based editors (RoleSingleChoiceEditor and RoleMultiChoiceEditor) that query available roles from the RoleService, sort them by name, and present them in a selectable dropdown interface. Properties annotated with @RoleChoice are now rendered as editable role pickers, enabling more granular permission management by associating multiple roles with a single authorization entry.
server-core/src/main/java/io/onedev/server/web/editable/rolechoice · high confidence
Support for verifying Git signatures created with SSH keys
Users can now verify Git commits and tags signed with SSH keys in addition to existing GPG support. The server-core module introduces an SSH signature verification implementation that validates the SSH signature format, checks the key fingerprint against stored SSH keys, ensures the associated email address is verified and owned by the key owner, and supports RSA (SHA-256/SHA-512) and Ed25519 signature algorithms. Verification results are displayed in the UI via dedicated detail panels indicating success or failure reasons.
server-core/src/main/java/io/onedev/server/git/signatureverification/ssh · high confidence
Support for viewing and diffing PDF files in the web interface
Users can now view PDF blobs directly in the project file browser and see side-by-side diffs for PDF changes. This change introduces the \PdfRenderer\ and \PdfViewPanel\ to render PDFs in view mode, and the \PdfDiffRenderer\ and \BlobPdfDiffPanel\ to display before/after comparisons of PDF files in commit diffs, utilizing a client-side PDF viewer.
server-core/src/main/java/io/onedev/server/web/component/diff/blob/pdf, server-core/src/main/java/io/onedev/server/web/page/project/blob/render/renderers/pdf · high confidence
Time-based progress bar with hover tooltips
The build progress indicator now supports time-based estimation: when a duration is provided, the bar advances smoothly in the browser every second without polling, and hovering over it displays tooltips showing the elapsed time and the estimated remaining time.
server-core/src/main/java/io/onedev/server/web/component/progress · high confidence
UI components for editing build spec parameter definitions
Added a set of Wicket-based UI components (ParamSpecBean, ParamSpecEditPanel, ParamSpecListEditPanel, ParamSpecListViewPanel, and supporting classes) along with specific CSS styling to enable users to define and edit parameters within build specifications. This includes list management, inline editing, validation for duplicate parameter names, and dark-mode support for the parameter spec interface.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/param/spec · high confidence
UI support for importing build spec elements from other projects
The build spec editor now includes a dedicated interface for managing imports of jobs, services, step templates, and properties from other projects. This change adds the necessary Wicket components (ImportListEditPanel, ImportListViewPanel) and styling (import.css) to allow users to add, delete, and reorder imported elements via a drag-and-drop list, with local definitions taking precedence over imported ones.
server-core/src/main/java/io/onedev/server/web/editable/buildspec/imports · high confidence
User selection components now display avatars
The user choice components (single and multi-select) have been updated to include user avatars in the selection interface. When users are selected via these components, their profile pictures are now rendered alongside their names, providing visual identification. Additionally, a new contributor avatars component displays author and committer avatars for commits, with the committer avatar overlaid on the author avatar when they are the same person.
server-core/src/main/java/io/onedev/server/web/component/user/choice · high confidence
Workspace lifecycle and activity event tracking
The system now emits specific activity events for workspace state changes, allowing users to track when a workspace is created, becomes active or inactive, enters a pending state, or has its terminal opened. These new event types provide granular visibility into workspace usage and status transitions within the project history.
server-core/src/main/java/io/onedev/server/event/project/workspace · high confidence
Security
Incorporates SnakeYAML BaseConstructor with security and validation fixes
The server now includes a vendored copy of SnakeYAML's BaseConstructor class to address security vulnerabilities and validation issues. This change integrates specific fixes, including validation of tag names to prevent invalid characters during tag creation, and aligns with broader library upgrades aimed at mitigating potential security risks in YAML parsing.
server-core/src/main/java/org/yaml/snakeyaml/constructor · high confidence
Architecture
Refactored Wicket URL routing with new base mappers and project-specific URL normalization
The server's web URL routing has been refactored to introduce new base classes, BasePageMapper and BaseResourceMapper, which serve as the foundation for all page and resource URL mappings. A new ProjectPageMapper and ProjectResourceMapper now handle project-scoped URLs by normalizing paths to correctly identify project segments, supporting both standard project URLs and a special default project path (\~administration/project-defaults) for global settings. This change centralizes URL parameter extraction and placeholder substitution logic in ProjectMapperUtils, ensuring consistent URL encoding and decoding across the application while simplifying the registration of new pages and resources in BaseUrlMapper.
server-core/src/main/java/io/onedev/server/web/mapper · high confidence
Behavioural changes
Add CSS styling for input spec UI components
Introduced a new CSS resource reference and stylesheet to style the input specification UI. The changes ensure that property names in input specs have a minimum width of 150px, add padding to the first row of bean viewers, and adjust the alignment and border styling for specific property types like showCondition, choicesProvider, and defaultValueProvider.
server-core/src/main/java/io/onedev/server/web/asset/inputspec · high confidence
Add Jakarta EE servlet wrapper for Shiro integration
The server now includes a new \ShiroHttpServletRequest\ wrapper class that adapts the Servlet API to work with Jakarta EE namespaces. This class wraps standard HTTP requests to ensure Shiro's security features (such as session management, user principal retrieval, and role checking) are correctly applied before delegating to the underlying servlet container, facilitating the migration from Java EE to Jakarta EE.
server-core/src/main/java/org/apache/shiro · high confidence
Audit logging for webhook changes
Changes made to project web hooks (adding, editing, or deleting) are now recorded in the system audit log. This provides a traceable history of who modified webhook configurations and what the previous and new settings were, enhancing accountability for project integration settings.
server-core/src/main/java/io/onedev/server/web/page/project/setting/webhook · high confidence
Build specifications are now defined in YAML instead of XML
The build specification format has migrated from XML to YAML, with the spec file now stored as \.onedev-buildspec.yml\. This change introduces new structural concepts including step templates, job properties, and the ability to import build specs from other projects. To ensure compatibility, the system automatically detects and migrates legacy XML build specs to the new YAML format upon loading.
server-core/src/main/java/io/onedev/server/buildspec · high confidence
Build status icons now use SVG sprites and CSS variables
The build status indicators in the web UI have been updated to use SVG icons instead of font icons, providing better visual consistency and support for dark mode. A new \BuildStatusIcon\ component renders specific SVG sprites (e.g., tick-circle-o for success, spin for running) and applies CSS classes that leverage CSS variables for colors, ensuring status colors adapt correctly in dark mode.
server-core/src/main/java/io/onedev/server/web/component/build/status · high confidence
Centralized JSON serialization with empty-string-to-null conversion
The server now uses a single, centrally configured Jackson ObjectMapper for all RESTful API interactions. This change introduces a default behavior where empty strings in incoming JSON payloads are automatically converted to null values, preventing potential errors in downstream processing. Additionally, the serialization setup now dynamically registers subtypes for contributed project and administration settings, ensuring that polymorphic JSON serialization and deserialization works correctly for extensible configuration types.
server-core/src/main/java/io/onedev/server/util/jackson · high confidence
CodeMirror editor integration and styling overhaul
The source code editor now uses a custom CodeMirror integration that bundles specific addons (such as matchbrackets, dialog, fold, search, and hint) and applies a dedicated CSS theme. This change introduces new visual styles for syntax highlighting, search matches, and selection, including support for dark mode, and adds custom JavaScript behaviors for identifier highlighting, line jumping, and scrollbar annotations.
server-core/src/main/java/io/onedev/server/web/asset/codemirror · high confidence
Comment indicator styles now support dark mode
The comment indicator and trigger components now adapt their colors for dark mode. Users will see specific hover and active state colors (purple tones) when using the dark theme, ensuring better visibility and consistency compared to the default light mode styles.
server-core/src/main/java/io/onedev/server/web/asset/commentindicator · high confidence
Custom Wicket page store and Hibernate Validator context for session replication safety
The server now uses a custom PageManagerProvider that disables caching and asynchronous storage for Wicket pages, ensuring pages are written synchronously to disk without being retained in replicated HTTP sessions. A new RequestPageStore buffers page additions until the end of the request to handle session creation timing correctly, particularly during login. Additionally, a patched BeanValueContext for Hibernate Validator shares processed constraint state within the validation tree to prevent redundant validation of cascaded beans during OneDev's specific property and class phases.
server-core/src/main/java/io/onedev/server/web/page/store, server-core/src/main/java/org/apache/wicket/pageStore, server-core/src/main/java/org/hibernate/validator/internal/engine/valuecontext · high confidence
Custom class resolution for dynamic issue field beans
The Wicket class resolver in the server core now explicitly handles special class names used for issue field beans. When resolving classes, it checks for specific field bean identifiers and delegates to \FieldUtils\ to return the correct bean class, ensuring that dynamic issue field configurations are resolved correctly during application runtime.
server-core/src/main/java/org/apache/wicket/application · high confidence
Display pull requests directly below issue description
A new 'Pull Requests' panel has been added to the issue view, allowing users to see a list of associated pull requests immediately below the issue description rather than navigating to a separate tab. This panel lists each pull request with its title and current status badge, linking directly to the pull request activities page, and automatically hides itself if no pull requests are present.
server-core/src/main/java/io/onedev/server/web/component/issue/pullrequests · high confidence
Enhanced XStream serialization for Hibernate entities and versioned documents
The server's XML serialization logic has been updated to properly handle Hibernate-specific types and versioned data. New converters ensure that Hibernate proxies are serialized as their underlying implementations and that PersistentBag collections are correctly marshalled. Additionally, the system now supports serializing VersionedXmlDoc objects with revision tracking and automatically resolves ManyToOne/JoinColumn relationships by storing and loading entity IDs, while also cleaning null characters from string fields.
server-core/src/main/java/io/onedev/server/util/xstream · high confidence
Fix resource URL case sensitivity and introduce ListenerRequestHandler
The resource request mapping now normalizes class names to handle case-insensitive URL segments, preventing failures when browsers or proxies convert resource URLs to lowercase. Additionally, a new ListenerRequestHandler class has been added to manage request handling for component and behavior listeners, ensuring proper page rendering and state management after listener invocation.
server-core/src/main/java/org/apache/wicket/core · high confidence
Form component validation and error message resolution logic
The FormComponent class in the Wicket markup module now implements specific logic for resolving error messages and validating form inputs. Users will see error messages generated through a hierarchical key lookup process (component ID, prefix, and generic keys) with variable substitution, ensuring that validation failures and conversion errors are displayed with appropriate context-specific labels and input values.
server-core/src/main/java/org/apache/wicket/markup · medium confidence
Granular role-based permissions for jobs and issue fields
The role management system now supports fine-grained control over job and issue access. Administrators can define specific permissions for jobs, including managing builds, running jobs, accessing build logs, viewing the pipeline panel, and restricting access to specific build reports. Additionally, issue visibility can be controlled at the field level, allowing roles to be configured to view all fields, no fields, or only a specified subset of issue fields.
server-core/src/main/java/io/onedev/server/model/support/role · high confidence
Improved JSON serialization and deserialization for Hibernate entities
The server now uses a custom Jackson module to handle Hibernate entities more robustly. Foreign key relationships are serialized as simple IDs and deserialized by loading the corresponding entity, while Hibernate lazy-loading proxies are automatically resolved to their underlying implementations during JSON processing. This ensures that API responses and request bodies correctly handle entity references and proxy objects without triggering lazy-load exceptions or exposing internal proxy structures.
server-core/src/main/java/io/onedev/server/util/jackson/hibernate · high confidence
Improved redirect handling after login behind reverse proxies
The Wicket component layer now correctly preserves the original request destination when a user is redirected to login, ensuring they return to the page they were trying to access rather than the homepage. This fix addresses issues where redirects failed or pointed to the wrong location when the application is deployed behind a reverse proxy, by properly capturing and restoring the original URL and POST parameters during the session replacement process.
server-core/src/main/java/org/apache/wicket · high confidence
Increased JVM heap memory limit for Maven builds
A new .mvn/jvm.config file has been added to the project, setting the maximum heap size (-Xmx) to 2 gigabytes. This configuration ensures that Maven processes have sufficient memory allocation during builds, which can help prevent out-of-memory errors on larger projects or systems with limited default JVM settings.
.mvn · high confidence
Interpolation of job variables in getter-based constraint validation
The validation logic for constraints applied to getter methods now supports variable interpolation. When a getter is annotated with @Interpolative, the system automatically interpolates job variables within the validated string or collection values before the constraint validator processes them. This ensures that validation rules evaluate the resolved values rather than the raw template strings, preventing false validation failures for dynamic content.
server-core/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation · high confidence
Introduce Wicket servlet filter and disable Cloudflare prefetch
The web layer now uses a dedicated DefaultWicketServlet that sets the X-Frame-Options header to SAMEORIGIN and adds a Speculation-Rules header to disable prefetching, addressing Cloudflare compatibility issues (OD-2120). Additionally, the application initializes jQuery UI v1.13.2 to support UI interactions.
server-core/src/main/java/io/onedev/server/web · high confidence
Introduce annotation-driven editable property framework
The web UI editing system has been refactored to use a new annotation-driven framework. Beans annotated with @Editable now automatically generate editors and viewers via BeanEditor and BeanViewer, which handle property grouping, visibility, and validation. New EditSupport implementations (such as ActionConditionEditSupport, CodeCommentQueryEditSupport, and CommitQueryEditSupport) provide specialized input assistance for specific property types, while the EditSupportRegistry manages the resolution of these contexts. This change standardizes how form fields are rendered and validated across the application.
server-core/src/main/java/io/onedev/server/web/editable · high confidence
Introduce base page infrastructure with automatic light/dark mode and session feedback
The application now uses a new \BasePage\ template that automatically detects and applies the user's system color preference (light or dark mode) via a cookie, ensuring consistent theming across all pages. This change also introduces a persistent session feedback panel that displays connection errors, session expirations, and other global messages at the top of the viewport, improving visibility of critical state changes without interrupting the user's workflow.
server-core/src/main/java/io/onedev/server/web/page/base · high confidence
Introduce dedicated side info panel with responsive sticky and overlay modes
The side info display has been replaced by a new, dedicated component system (SideInfoPanel, SideInfoLink) that manages its own lifecycle and styling. For users, this means the side info pane now behaves differently based on screen width: on wide viewports (≥1199px), it appears as a sticky, pinned panel that remembers its open/closed state via cookies and docks with sticky content; on narrow viewports (\<1199px), it slides in as an overlay that can be closed by pressing Escape or clicking outside. The panel includes a standardized header with a close button and supports dynamic content injection via title and body slots.
server-core/src/main/java/io/onedev/server/web/component/sideinfo · high confidence
Introduce new build specification model for jobs and triggers
The build specification system now uses a new set of core classes to define jobs, including EnvVar for environment variables, Job for the main job definition, JobDependency for upstream job links, and TriggerMatch for handling build triggers. This change establishes the structural foundation for the new YAML-based build spec format, allowing users to define job parameters, dependencies, and trigger conditions with improved validation and interpolation support.
server-core/src/main/java/io/onedev/server/buildspec/job · high confidence
Introduce responsive saved queries sidebar with mobile floating dropdown
The saved queries panel now adapts to screen width: on viewports under 1200px, the sidebar is hidden and clicking a query link opens a floating dropdown containing the panel, while on wider screens the sidebar remains visible. The panel persists its open/closed state via a browser cookie, and the edit modal now supports separate editors for personal and common queries with a 'Use Default' option. Save actions are gated by permissions (project managers or administrators for common queries; personal save for the current user), and the UI includes subscription and watch status indicators alongside the query links.
server-core/src/main/java/io/onedev/server/web/component/savedquery · high confidence
Introduce structured activity panels for issue changes, comments, and work logging
The issue activity feed now uses dedicated Wicket panels to render specific event types, replacing the previous generic rendering approach. This change introduces distinct UI components for issue changes (showing a history link and description), issue comments (displaying the author, timestamp, optional 'on behalf of' context, and a history link), and work logging (showing the user, time spent, and a markdown note with edit/delete actions). Each panel now handles its own rendering logic, including emoji reactions for comments and work items, and provides a consistent layout for the activity stream.
server-core/src/main/java/io/onedev/server/web/component/issue/activities/activity · high confidence
Introduce structured comment text abstraction for HTML and plain text rendering
The server now uses a new \CommentText\ class hierarchy in \server-core\ to handle comment content, replacing ad-hoc string handling with a structured approach. This change introduces \MarkdownText\ for rendering markdown content into HTML (via the existing \MarkdownService\) and extracting plain text, as well as \PlainText\ for escaping and wrapping raw text. Users will benefit from consistent rendering of comments across the platform, ensuring that markdown is properly processed and plain text is safely escaped.
server-core/src/main/java/io/onedev/server/util/commenttext · high confidence
Introduce structured entity query and sorting infrastructure
This change introduces a new, structured foundation for entity queries and sorting within the server-core search module. It adds the \EntityQuery\ class to encapsulate filtering criteria and sort orders, alongside \EntitySort\ and \SortField\ classes to define specific sort directions and field properties. Additionally, \QueryWatchBuilder\ is added to manage user query watches by parsing and matching entities against named queries, and \IssueSortField\ provides issue-specific sorting capabilities. This refactoring centralizes query logic and enables more consistent handling of sorting and filtering across different entity types.
server-core/src/main/java/io/onedev/server/search/entity · high confidence
Introduction of BasicLazyInitializer for enhanced proxy handling
A new BasicLazyInitializer class has been added to the server-core module to manage lazy initialization for plain Java objects. This implementation refines how Hibernate proxies behave during serialization and identifier access, specifically optimizing the handling of 'writeReplace' and 'hashCode' calls while ensuring proper initialization when setting identifiers or accessing component properties. This change improves the reliability of lazy-loaded entities, particularly in scenarios involving serialization or equality checks on uninitialized proxies.
server-core/src/main/java/org/hibernate/proxy · high confidence
Introduction of facade and cache classes for core entities
The server now includes a new set of lightweight facade and cache classes in the \io.onedev.server.util.facade\ package to support high-availability and caching mechanisms. This change introduces \EntityFacade\ as a base class and specific facades for \User\, \Project\, \Group\, \Role\, \EmailAddress\, \AccessToken\, \Issue\, \Build\, and related entities, along with corresponding cache implementations (e.g., \UserCache\, \ProjectCache\, \EmailAddressCache\). These classes provide optimized lookup methods and data structures for frequently accessed entity data, improving performance and enabling HA support for user, email, and project caches.
server-core/src/main/java/io/onedev/server/util/facade · high confidence
Introduction of new authentication model and base authenticator class
The system now uses a dedicated \Authenticated\ data class to represent the result of an authentication attempt, explicitly carrying the user's full name, email, group memberships, and SSH keys. The base \Authenticator\ class has been refactored to define the \authenticate\ method returning this new \Authenticated\ object, and includes configuration options for a default group assignment and network timeout.
server-core/src/main/java/io/onedev/server/model/support/administration/authenticator · high confidence
Issue detail page now uses sticky tabs and preserves scroll position
The issue detail view has been restructured to improve navigation and usability. The tab bar (Activities, Commits, Builds, etc.) is now sticky, remaining visible at the top of the main content area as users scroll through the issue details. Additionally, the page now remembers and restores the user's scroll position when switching between tabs or navigating back to the page, preventing the view from resetting to the top.
server-core/src/main/java/io/onedev/server/web/page/project/issues/detail · high confidence
Iteration action panel with audit logging
The iteration actions panel now provides Reopen, Close, Edit, and Delete actions for iterations, with visibility toggling based on the iteration's closed status. Crucially, all state-changing actions (reopen, close, delete) now record entries in the system audit log, capturing the project, action description, and (for deletions) the previous state of the iteration.
server-core/src/main/java/io/onedev/server/web/component/iteration/actions · high confidence
Lazy loading of images in markdown content
Markdown-rendered images now load lazily as the user scrolls, improving page load performance. This change integrates the Lozad library (v1.14.0) into the server-core web assets, providing the necessary JavaScript resource reference to enable this behavior.
server-core/src/main/java/io/onedev/server/web/asset/lozad · high confidence
Mail service refactored to support OAuth authentication and configurable concurrency
The mail service implementation has been refactored to support OAuth-based authentication for mail servers (such as MS365) via a new \OAuthAccessToken\ credential type that handles token retrieval and refresh, alongside a new \BasicAuthPassword\ type. The \SmtpSetting\ model now includes a configurable \concurrency\ parameter, allowing users to adjust mail sending parallelism. Additionally, the mail handling logic has been restructured with new classes for managing attachments (\Attachment\, \FileAttachment\, \ImageAttachment\, \Attachments\) and inbox monitoring (\InboxMonitor\, \MailPosition\), improving the robustness of email processing and notification delivery.
server-core/src/main/java/io/onedev/server/mail · high confidence
Mermaid diagrams now adapt to dark mode and are served via a dedicated resource reference
Mermaid diagrams embedded in Markdown now automatically switch to a dark theme when OneDev is in dark mode, improving readability and visual consistency. This is achieved by a new \MermaidResourceReference\ that bundles the Mermaid JavaScript library and an initialization script, ensuring the correct theme is applied at load time.
server-core/src/main/java/io/onedev/server/web/asset/mermaid · high confidence
Migrate project metadata storage to Xodus
The server now stores commit, issue, pull request, and visit metadata in Xodus environments instead of the previous persistence mechanism. This change introduces new services (CommitInfoService, IssueInfoService, PullRequestInfoService, VisitInfoService) that batch-process and cache data such as contributor stats, issue state history, PR-to-commit mappings, and user visit timestamps, improving performance and reducing memory usage during metadata-heavy operations.
server-core/src/main/java/io/onedev/server/xodus · high confidence
Migration to Jakarta EE namespace and REST API update
The server core has been updated to use the Jakarta EE namespace (jakarta.ws.rs, jakarta.inject) instead of the legacy javax.\* packages, reflecting the library upgrade mentioned in the commit history. Additionally, the REST API behavior has changed so that update operations now accept the resource ID via the URL path rather than the request body, addressing issue \#1255. The provided code diff specifically shows the new Jakarta-based implementations for MediaType parsing and parameter value handling that support these changes.
server-core/src/main/java/org/glassfish · high confidence
Migration to Jakarta EE validation annotations
The server-core annotation definitions in \io.onedev.server.annotation\ have been updated to use the \jakarta.validation\ namespace (e.g., \jakarta.validation.Constraint\) instead of the legacy \javax.validation\ namespace. This change aligns the server's internal validation framework with the Jakarta EE standard, ensuring compatibility with modern servlet containers and dependency versions that have adopted the \jakarta.\*\ package structure.
server-core/src/main/java/io/onedev/server/annotation · high confidence
New Administration page layout and styling
The Administration section now uses a dedicated base page and CSS resource, providing a consistent layout and styling for admin views. This includes specific styles for job executors, workspace provisioners, logo previews (supporting dark mode), and label management, improving the visual presentation and usability of server administration settings.
server-core/src/main/java/io/onedev/server/web/page/admin · high confidence
New Cursor rules to prevent Co-authored-by trailers and avoid slow Maven builds
Two new Cursor rules have been added to the workspace configuration. The 'no-co-author-in-commits' rule prevents the AI from automatically appending Co-authored-by or AI attribution footers to commit messages, ensuring cleaner history unless explicitly requested. The 'no-mvn-compile' rule instructs the AI to avoid running slow Maven build goals (like compile, install, or package) and instead rely on IDE linting tools to verify code correctness, only invoking Maven when explicitly asked by the user.
.cursor · high confidence
New Jakarta Criteria-based persistence DAO layer
The server's persistence layer in the DAO package has been replaced with a new implementation that uses the Jakarta Persistence Criteria API. This introduces a serializable query model (Criterion, EntityCriteria, Order) and a fluent Restrictions builder, allowing queries to be constructed independently of the Hibernate session. This change supports the broader migration to the Jakarta namespace and provides a more robust, type-safe foundation for data access operations.
server-core/src/main/java/io/onedev/server/persistence/dao · high confidence
New SSH server implementation with hardened security settings
The server now uses a new SSH service implementation that disables interactive shell access (returning a welcome message instead) and hardens cryptographic settings by removing weak key exchange algorithms (ecdh-sha2-nistp521/384/256), the ssh-rsa signature algorithm, and hmac-sha1 MAC algorithms. The service manages both an SSH server for client connections and an SSH client for internal cluster communication, authenticating users via SSH key fingerprints.
server-core/src/main/java/io/onedev/server/ssh · high confidence
New SVG icons for status indicators
The server now includes new SVG icon assets for status indicators, specifically adding \new-danger.svg\, \new-none.svg\, \new-normal.svg\, and \new-warning.svg\ to the \server-core/src/main/java/io/onedev/server/web/img\ directory. These vector-based icons replace previous implementations to provide consistent visual cues for different states across the interface.
server-core/src/main/java/io/onedev/server/web/img · high confidence
New UI for editing issue field instances
The interface for configuring issue field instances has been replaced with a dedicated edit panel. Users will now see a structured form when editing field settings, featuring a dropdown to select the value provider (Specified, Scripting, Jev, or Ignore) for each field, with specific options like Jev Deciding available for Choice Fields when AI is enabled. The view mode has also been updated to clearly display the provider type and current values in a table format, supported by new CSS styling for both light and dark modes.
server-core/src/main/java/io/onedev/server/web/editable/issue/fieldinstance · high confidence
New Wicket link components for consistent AJAX navigation and UI behavior
The server's web UI now uses a new set of reusable link components in the \link\ package to standardize how users interact with pages and menus. \ActionablePageLink\ and \ViewStateAwarePageLink\ handle page navigation, with the latter preserving scroll positions and cursor state to improve continuity when switching tabs or returning to previous views. \DropdownLink\ provides a consistent, AJAX-driven dropdown menu experience, while \ClientUriAwareLink\ ensures correct URL handling behind reverse proxies. Additional components like \BuildSpecLink\, \ArchiveMenuLink\, and \EmailLink\ offer specialized, secure, and context-aware linking for build specifications, project archives, and contact information.
server-core/src/main/java/io/onedev/server/web/component/link · high confidence
New blob editing interface with diff viewing and encoding warnings
The project blob edit page now uses a new panel that provides a tabbed interface for editing files, viewing plain text, reviewing changes (diffs), and saving. Users can now see the differences made to a file before committing, and will receive a warning if the file's encoding will be transcoded to UTF-8 upon commit.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/edit · high confidence
New blob view panel with edit/delete actions and dark mode support
The file viewing interface in the project blob page has been replaced with a new BlobViewPanel component. This update introduces a unified header bar displaying file metadata (lines, charset, size, Git LFS status) and action buttons for editing and deleting files, with availability gated by project permissions and branch state. The view now supports a 'plain text' toggle and 'blame' mode, and includes specific UI handling for large files that exceed size limits. Additionally, the new CSS styling ensures the view respects dark mode settings.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/view · high confidence
New branch picker component with search and keyboard navigation
The branch selection UI in the web interface has been replaced with a new, interactive picker. Users can now type to filter branches in real-time and navigate the filtered list using keyboard arrow keys, with the currently selected branch highlighted. This component also supports selecting branches across forked projects, allowing users to switch between a project and its forks or descendants seamlessly.
server-core/src/main/java/io/onedev/server/web/component/branch/picker · high confidence
New client-side row selection component for data tables
A new Wicket-based selection column component has been introduced for data tables, allowing users to select individual rows via checkboxes and toggle all rows through a header checkbox. This change implements the selection logic (including indeterminate states and bulk selection) directly in the browser using JavaScript, replacing previous server-side or different client-side mechanisms for row selection within the table UI.
server-core/src/main/java/io/onedev/server/web/component/datatable/selectioncolumn · high confidence
New data migration framework and legacy build spec support
The server now uses a new versioned migration framework (DataMigrator, MigrationHelper) to handle data upgrades, including the restoration of the XmlBuildSpecMigrator to ensure older build specifications can still be opened. This location also introduces default role definitions (Manager, Developer, Tester, Reporter) and email templates for notifications.
server-core/src/main/java/io/onedev/server/data/migration · high confidence
New date and date-range picker components with flatpickr and timezone support
The date picker UI has been replaced with a new implementation based on the flatpickr library, adding support for both single date and date-range selection. This change ensures that date and time values are displayed and processed in the user's local timezone rather than server time, and the calendar interface now adapts to the system's dark mode setting. Additionally, the picker now supports localization for numerous languages and allows configuration of the first day of the week.
server-core/src/main/java/io/onedev/server/web/component/datepicker · high confidence
New dynamic choice editors with placeholder support
The settings page now uses new SingleChoiceEditor and MultiChoiceEditor components for properties annotated with @ChoiceProvider, replacing previous implementations. These editors leverage Select2 to provide searchable dropdowns and support dynamic choice loading via reflection. A key user-facing improvement is the addition of input placeholders, making the settings interface more friendly and guiding users on what to enter. The editors also integrate with the suggestion system, allowing auto-completion to populate the choice fields directly.
server-core/src/main/java/io/onedev/server/web/editable/choice · high confidence
New error and server initialization pages
The application now uses dedicated pages for handling errors and server initialization. Users will see a new General Error page that allows administrators to view and copy detailed stack traces, an InUse Error page for objects that cannot be deleted or disabled, and a Page Not Found page with a humorous subtitle. Additionally, a new Server Init page manages the initial setup wizard, automatically logging in the root user and redirecting to the home page once manual configuration steps are completed.
server-core/src/main/java/io/onedev/server/web/page/error · high confidence
New event-driven listener architecture for server events
The server now uses a new annotation-based event system (Listen) with a DefaultListenerRegistry to manage and dispatch events. This change introduces a structured way to handle project-related events (like ProjectDeleted and ActiveServerChanged) with transactional guarantees and cluster-aware propagation, ensuring that listeners are invoked correctly across different server nodes and within database transactions.
server-core/src/main/java/io/onedev/server/event · high confidence
New inline issue title editing component
The issue title display and editing experience has been replaced with a new, dedicated inline component. Users can now edit an issue's title directly in place via an Ajax-powered form with Save and Cancel actions, rather than navigating to a separate edit page. The title view now displays the issue number in gray and shows a confidential indicator icon when applicable. The component also supports reference input behavior within the title field and renders emojis in the displayed title.
server-core/src/main/java/io/onedev/server/web/component/issue/editabletitle · high confidence
New interpolative pattern set grammar for variable expansion
The pattern set parsing logic in server-core has been extended to support variable interpolation. A new ANTLR grammar (InterpolativePatternSet.g4) and corresponding Java implementation allow pattern strings to contain variables defined by the '@...@' syntax, enabling dynamic content in file inclusion/exclusion rules. This builds upon the existing static PatternSet grammar, which handles basic quoted and non-quoted patterns, by adding a segment rule that recognizes Variable tokens alongside literals.
server-core/src/main/java/io/onedev/server/util/patternset · high confidence
New issue activities panel with toggleable sections
The issue activities view has been replaced by a new panel that consolidates change history, comments, and work logs into a single scrollable list. Users can now toggle the visibility of comments, change history, and work logs independently via buttons in the panel header, with their preferences saved in browser cookies. The UI distinguishes new activities with a primary-colored left border and supports dark mode styling. An AI summarize button is also available for comments.
server-core/src/main/java/io/onedev/server/web/component/issue/activities · high confidence
New issue list page with saved queries sidebar and workflow alerts
The issue list view has been replaced with a new page that features a sidebar for managing saved queries (both personal and common) and displays alerts when issue workflows change. Users can now save, edit, and switch between custom queries directly from the issue list, with common queries managed at the project setting level and personal queries stored per user. The page also integrates a workflow change alert panel to notify users of relevant configuration updates.
server-core/src/main/java/io/onedev/server/web/page/issues · high confidence
New iteration selection components for issue and pull request forms
Users can now select iterations (replacing the previous milestone concept) via new single and multi-select dropdowns in issue and pull request forms. These components provide search-as-you-type functionality, display iteration status badges (success/warning) in the selection list, and support internationalized placeholder text for required and optional fields.
server-core/src/main/java/io/onedev/server/web/component/iteration/choice · high confidence
New job list panel with search filtering
The job list UI has been replaced with a new component that includes a search field to filter jobs by name. The panel now displays jobs with their status, allows users to run jobs directly, and shows a list of recent builds for each job. A 'No jobs found' message is displayed when the filtered list is empty.
server-core/src/main/java/io/onedev/server/web/component/job/joblist · high confidence
New modal-based issue creation interface with intelligent field suggestions
The issue creation workflow now uses a dedicated modal panel (CreateIssuePanel) that wraps a new editor (NewIssueEditor) featuring a title input, description, confidentiality toggle, and iteration selection. A key behavioral change is the introduction of automatic field value suggestions: as users type in the title or description, the system queries for similar issues and, after a short delay, proposes values for other fields (such as iterations or custom fields) based on those matches, which users can accept or ignore.
server-core/src/main/java/io/onedev/server/web/component/issue/create · high confidence
New persistence layer with centralized ID generation and transaction management
The server's persistence infrastructure has been replaced with a new implementation in the \io.onedev.server.persistence\ package. This change introduces a centralized \IdService\ that manages entity ID high-water marks via a dedicated \EntityIdCounter\ table, ensuring consistent ID allocation across cluster nodes using Hazelcast. Transaction handling is now managed by \DefaultTransactionService\ and \DefaultSessionService\, which enforce manual flush modes and provide explicit session/transaction lifecycle control via interceptors. The update also includes a custom \IdGenerator\ for Hibernate, a \PrefixedNamingStrategy\ for schema organization, and database-specific dialect adjustments for PostgreSQL (bytea) and MySQL (longblob) to preserve data integrity during schema operations.
server-core/src/main/java/io/onedev/server/persistence · high confidence
New project event types for activity tracking and replication
The project event system now includes new event classes to support high-availability clustering and activity tracking. ActiveServerChanged signals when the active server node changes, enabling replication logic. CommitIndexed, DefaultBranchChanged, RefUpdated, and ScheduledTimeReaches provide granular events for commit indexing, branch updates, reference changes, and scheduled triggers, while ProjectCreated and ProjectDeleted track project lifecycle. These events carry user, project, and commit context to support activity feeds and distributed state synchronization.
server-core/src/main/java/io/onedev/server/event/project · high confidence
New project wiki page with folder structure and submodule support
The project wiki view has been replaced with a new implementation that supports hierarchical folder structures, a resizable navigation sidebar, and wiki submodules. Users can now browse wiki pages organized in folders, view a page outline, and edit content via a dedicated form. If the wiki is linked as a submodule from another project, a button is provided to visit the target wiki directly.
server-core/src/main/java/io/onedev/server/web/page/project/wiki · high confidence
New pull request activities page with granular view controls
The pull request detail view now uses a dedicated activities page that consolidates comments, commits, and change history into a single timeline. Users can toggle the visibility of comments, commits, and change history via toolbar buttons, with preferences saved in browser cookies. A 'Changes since last visit' link appears when new commits are detected, allowing quick navigation to recent diffs. The UI also includes an AI summarize button for comments and supports dark mode styling for activity items.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/activities · high confidence
New review requirement parsing and rename handling
The review requirement system now uses a dedicated ANTLR grammar and parser to handle criteria for specific users and groups, including optional approval counts for groups. This change introduces robust handling for user and group renames, ensuring that review requirements remain valid and correctly reference the updated names when a user or group is renamed in the system.
server-core/src/main/java/io/onedev/server/util/reviewrequirement · high confidence
New role selection components with description support
The role choice UI components have been refactored to support displaying role descriptions alongside names. New Wicket components (RoleSingleChoice and RoleMultiChoice) and their underlying providers now render role descriptions in the Select2 dropdown results, improving clarity when selecting roles for authorization.
server-core/src/main/java/io/onedev/server/web/component/rolechoice · high confidence
New structured code search hit types for precise navigation
The code search results now use specific hit types (FileHit, SymbolHit, TextHit) extending a common QueryHit base, enabling more accurate symbol navigation and highlighting. Users will see search results that distinguish between file matches, specific symbol occurrences, and text lines, with each type rendering appropriate icons and highlighting the exact matched range (line/column or symbol position) for better context and easier navigation.
server-core/src/main/java/io/onedev/server/search/code/hit · high confidence
New structured logging service with ANSI parsing and cluster support
The logging subsystem in server-core has been replaced with a new, structured implementation. The new DefaultLogService introduces in-memory caching of recent log entries, automatic flushing to disk, and support for reading logs via a stream interface. It now parses ANSI escape codes to preserve text styling (colors, bold) and masks secrets before truncation to prevent data leaks. The service is designed for distributed environments, forwarding log messages to the active server in a cluster via ServerLogger and LogTask, and notifying listeners via WebSocket for real-time updates.
server-core/src/main/java/io/onedev/server/logging · high confidence
New symbol tooltip component with AI-assisted definition inference
The symbol tooltip component has been replaced with a new implementation that displays possible symbol definitions and includes an AI-driven hint to identify the most likely definition (prompting users to set up Jev). The tooltip now supports Ctrl+click to open links in new tabs, closes automatically when the Escape key is pressed, and features a redesigned UI with dark mode support.
server-core/src/main/java/io/onedev/server/web/component/symboltooltip · high confidence
New validation constraints for server inputs
The server now enforces stricter validation on various user inputs through a new set of constraint validators. This includes checks for agent, build, commit, issue, pack, project, and pull request query syntax; branch, commit hash, cron expression, DNS name, environment variable, field, group, job match, notification receiver, parameter, path, pattern set, project key, project name, project path, regular expression, reserved options, review requirement, and role names; as well as password strength, current password verification, data directory existence and location, and interpolation syntax. Users will receive specific error messages for malformed queries, invalid names, or disallowed characters, improving data integrity and user feedback.
server-core/src/main/java/io/onedev/server/validation/validator · high confidence
New workspace detail page layout and navigation
The workspace detail view has been restructured with a new UI layout that includes a header bar displaying the workspace status, user, reference, and spec, along with action buttons for shortcuts, terminal access, port management, reprovisioning, and deletion. The page now features a tabbed interface for switching between different workspace views (such as changes and logs) and includes mobile-responsive styles to handle terminal keyboard interactions. A new default redirect page automatically routes users to either the terminal or log view based on available shell labels.
server-core/src/main/java/io/onedev/server/web/page/project/workspaces/detail · high confidence
Prevent circular parent assignments in project hierarchy
The project hierarchy editing interface now prevents users from creating circular references (e.g., setting a project's parent to one of its own descendants). This is enforced by the new ParentChoiceEditor, which filters the available parent options by checking if a candidate project is an ancestor of the current project before allowing selection.
server-core/src/main/java/io/onedev/server/web/editable/parentchoice · high confidence
REST API security, validation, and JSON help improvements
The REST API layer now enforces stricter security and validation rules while providing a machine-readable API reference. An AnonymousCheckFilter restricts anonymous access to non-public endpoints based on the 'enableAnonymousAccess' setting, allowing anonymous POST/DELETE/PUT only when explicitly permitted. A ParamCheckFilter validates query parameters, rejecting unexpected ones and requiring those marked as mandatory. A new ApiHelpJson resource exposes a JSON version of the API help documentation at /\~api/help for consumption by coding agents. Additionally, an EnumParamConverterProvider improves error messages for invalid enum query parameters, and a ValidationExceptionMapper ensures validation errors return a 400 Bad Request status.
server-core/src/main/java/io/onedev/server/rest · high confidence
Redesigned code comment list and panel UI
The code comment interface has been restructured with new Wicket components to improve usability and visual clarity. The list view now features a dedicated filter panel allowing users to filter by status (resolved/unresolved), creator, and activity date range, alongside a query input for fuzzy search and options to save or order queries. The individual comment panel has been redesigned to display comment context, user avatars, and action buttons (reply, resolve, edit, delete) more clearly, with visual indicators for new comments and support for dark mode styling.
server-core/src/main/java/io/onedev/server/web/component/codecomment · high confidence
Redesigned commit detail page with updated UI and operations
The commit detail view has been redesigned to improve usability and visual clarity. The layout now prominently features a 'Browse Code' button and an 'Operations' dropdown for commit actions. The page displays commit metadata including contributor avatars, commit hash with a copy button, parent commits, and associated build jobs. The diff view is presented in a dedicated card component. These changes are implemented in the CommitDetailPage and its associated resources (CSS, JavaScript) within the project commits module.
server-core/src/main/java/io/onedev/server/web/page/project/commits · high confidence
Redesigned email address management UI with privacy controls and verification
The user profile's email management section has been replaced with a new panel that distinguishes between ordinary users and service/AI users. Ordinary users can now set a primary email address, add and delete backup email addresses, and toggle a privacy setting to keep their email addresses hidden from public view (using an auto-generated address for Git operations). The interface includes visual indicators for unverified emails and options to resend verification emails, while service and AI users are informed that they cannot specify email addresses but can use the auto-generated address for commit association.
server-core/src/main/java/io/onedev/server/web/component/user/emailaddresses · high confidence
Redesigned issue primary view with in-line linked issues and cross-project linking support
The issue detail page now displays linked issues and pull requests directly within the main content area rather than in a separate sidebar or tab, improving visibility and reducing navigation steps. The new layout includes a dedicated section for linked issues with drag-and-drop reordering capabilities and visual indicators for unlinking. Additionally, the issue linking interface now supports cross-project linking via explicit syntax (e.g., PROJECTKEY-100 or projectpath\#100), with clear instructions provided in the selection panels. The UI also preserves the selected linking tab state via cookies for a smoother user experience.
server-core/src/main/java/io/onedev/server/web/component/issue/primary · high confidence
Redesigned pull request review management interface
The pull request review workflow has been overhauled with a new UI component that displays reviewers as avatars with transparent status overlays (approved, requested changes, pending) and provides inline actions to refresh or remove reviewers. The reviewer selection dropdown now intelligently filters out users who have already reviewed or are excluded, and the review requirement input field includes code-assist suggestions for specifying user groups and required review counts.
server-core/src/main/java/io/onedev/server/web/component/pullrequest/review · high confidence
Redesigned security pages with SSO and 2FA support
The security area has been completely redesigned to support modern authentication flows. The new LoginPage now handles standard password login, Single Sign-On (SSO) provider redirections, and Two-Factor Authentication (TOTP and recovery codes). A new SignUpPage allows self-registration with email domain validation, while CreateUserFromInvitationPage enables account creation via invitation codes. Additional pages include PasswordResetPage for secure password recovery, EmailAddressVerificationPage for confirming email ownership, and LogoutPage which correctly handles SSO provider logout URLs. The OAuthCallbackPage manages the final step of the OAuth flow.
server-core/src/main/java/io/onedev/server/web/page/security · high confidence
Refactored Git command execution to use dedicated command classes
The Git command execution layer in the server core has been refactored to use dedicated command classes (such as CloneCommand, FetchCommand, LogCommand, and BlameCommand) instead of the previous implementation. This change introduces a structured builder pattern for Git operations, allowing for better configuration of options like protocol version, stateless RPC, and file ranges. It also adds support for Git LFS fetching, improved blame caching, and more robust handling of file changes and commit logs, enhancing performance and maintainability of Git interactions.
server-core/src/main/java/io/onedev/server/git/command · high confidence
Refactored Git service API and implementation
The Git service layer has been refactored to improve its API structure and internal implementation. The \GitService\ interface and its \DefaultGitService\ implementation have been reorganized, introducing new data transfer objects such as \AheadBehind\, \CommitMessageError\, \DiffEntryFacade\, \PathChange\, \RefFacade\, \RevertResult\, \TaggingResult\, and \TreeFormatterEntry\ to better encapsulate Git operations and results. This change modifies how the server-core component handles Git repository interactions, including branch/tag management, commit operations, and diff calculations.
server-core/src/main/java/io/onedev/server/git/service · high confidence
Refactored Markdown Editor and Viewer Components
The markdown editing and viewing experience has been restructured through a comprehensive refactoring of the underlying Wicket components. The new \BlobMarkdownEditor\ and \BlobMarkdownViewer\ classes now handle repository-specific logic, including wiki link resolution and autosave key management, while the core \MarkdownEditor\ and \MarkdownViewer\ components have been streamlined to focus on rendering and input handling. This change introduces new support interfaces (\AtWhoReferenceSupport\, \BlobSelectionSupport\, \BlobUploadSupport\) to decouple repository-specific behaviors like file uploads and entity references from the core editor logic. Additionally, a new \LazyResourceLoader\ component ensures that heavy JavaScript libraries for Mermaid, KaTeX, and PlantUML are only loaded when the rendered content actually requires them, improving page load performance.
server-core/src/main/java/io/onedev/server/web/component/markdown · high confidence
Refactored WebSocket notification mechanism to prevent page re-rendering
The WebSocket handling in the server core has been refactored to improve reliability and clarity. The new implementation introduces an \AbstractWebSocketProcessor\ to centralize connection registration and event broadcasting, and a \WebSocketRequestHandler\ that manages asynchronous message pushing. Crucially, the client-side JavaScript (\wicket-websocket-jquery.js\) has been updated to process incoming WebSocket messages as AJAX responses, allowing the UI to update components without triggering a full page re-render. This change addresses issues where connection loss messages or notification updates caused unwanted visual disruptions or persistent UI elements.
server-core/src/main/java/org/apache/wicket/protocol/ws · high confidence
Refactored branch creation UI to enforce protection rules and signature requirements
The branch creation dialog has been refactored to validate branch names against Git standards and enforce project-specific branch protection rules, including checks for existing branches, creation prohibitions, and required commit signature validity before allowing a new branch to be created.
server-core/src/main/java/io/onedev/server/web/component/branch/create · high confidence
Refactored code search query engine with new query types and regex support
The code search functionality in the server core has been refactored to introduce a modular query architecture. New query types have been added to support searching by file name (FileQuery), code symbols (SymbolQuery), and text content (TextQuery), each with specific options for case sensitivity, file name filtering, and scope. A new PCRE-based regex engine has been implemented using ANTLR to parse regular expressions and convert them into optimized Lucene n-gram queries, improving search performance and accuracy for complex patterns. The refactoring also includes a new base BlobQuery class and a QueryOption interface to standardize how search options are defined and rendered in the UI.
server-core/src/main/java/io/onedev/server/search/code/query · high confidence
Refactored commit status UI into a dedicated component
The commit status display on the commit page has been refactored into a new, dedicated Wicket component (CommitStatusLink) with its own CSS styling. This change consolidates the logic for fetching build jobs and displaying their status into a reusable dropdown panel, ensuring the UI remains stable and does not shrink unexpectedly when shown. Users will see a cleaner, more consistent presentation of build statuses and job details directly within the commit view.
server-core/src/main/java/io/onedev/server/web/component/commit/status · high confidence
Refactored dashboard widgets to support tabbed layouts and state persistence
The dashboard widget model has been refactored to support multiple tabs within a single widget. New classes \Widget\, \WidgetTab\, and \TabState\ define a structure where widgets contain a list of tabs, each with a title and render logic. This change enables the persistence of widget state, such as the active tab and query parameters, allowing the dashboard to remember its configuration when the user navigates back to the page.
server-core/src/main/java/io/onedev/server/model/support/widget · high confidence
Refactored exception handling to return specific HTTP status codes
The server's exception handling logic has been restructured to replace generic error responses with precise HTTP status codes for various failure scenarios. Users will now see appropriate status codes such as 401 Unauthorized for authentication failures, 400 Bad Request for stale state issues, 404 Not Found for missing objects, and 499 for closed channels or EOF exceptions, rather than receiving generic 500 Internal Server Error responses. This change improves API clarity and allows clients to programmatically distinguish between different types of errors.
server-core/src/main/java/io/onedev/server/exception/handler · high confidence
Refactored issue event model to support granular notifications and activity tracking
The issue event system has been refactored to introduce specific event types for distinct issue lifecycle actions, including opening, changing state, commenting, editing comments, attaching commits, creating branches, and bulk operations like moving, copying, importing, and deleting issues. This change enables more precise activity logging and allows the system to selectively send notifications—for example, notifying watchers when issues are moved to other projects or disabling notifications for bulk operations—while ensuring the UI updates automatically when branches are created from issues.
server-core/src/main/java/io/onedev/server/event/project/issue · high confidence
Refactored job execution and authorization infrastructure
The job execution engine has been restructured to support more flexible job scheduling, authorization, and terminal access. A new JobAuthorizationContext manages access control for job secrets and Groovy scripts, ensuring that sensitive data is only exposed when specific branch or commit conditions are met. Job scheduling is now handled by a dedicated JobSchedule class, allowing for precise cron-based triggers tied to specific commits. The introduction of JobRunnable and JobContext interfaces decouples the execution logic from the service layer, enabling better management of job lifecycles and state. Additionally, a new JobAgentShell and JobTerminalService provide a robust WebSocket-based terminal interface for interacting with running jobs, improving the user experience for debugging and monitoring.
server-core/src/main/java/io/onedev/server/job · high confidence
Refactored mail service to support explicit SSL (StartTLS) and configurable ports
The mail service configuration has been refactored to introduce distinct connection modes for both IMAP and SMTP, allowing administrators to choose between Implicit SSL, Explicit SSL (StartTLS), and No SSL. This change adds new configuration classes (e.g., ImapExplicitSsl, SmtpExplicitSsl) that enable StartTLS negotiation and allow custom port configuration (defaulting to 587 for SMTP and 143 for IMAP with StartTLS), whereas previously only Implicit SSL (defaulting to 465/993) and plain connections were available. The refactoring also introduces a common base for SSL settings that includes a 'Bypass Certificate Check' option for handling self-signed certificates.
server-core/src/main/java/io/onedev/server/model/support/administration/mailservice · high confidence
Refactored notification system with new managers and customizable email templates
The notification subsystem in server-core has been restructured into dedicated managers (Build, CodeComment, Commit, Issue, Pack, PullRequest) and a shared ChannelNotificationManager for webhooks, replacing the previous monolithic approach. This change introduces support for customizable email templates via the EmailTemplates service, allowing users to tailor the appearance of notification emails. It also adds query-based subscription capabilities for builds, commits, and packages, enabling users to receive notifications for specific filtered sets of entities. Additionally, the system now supports channel notifications (webhooks) for issues, pull requests, builds, packages, commits, and code comments, providing a unified way to push events to external services.
server-core/src/main/java/io/onedev/server/notification · high confidence
Refactored password input components with confirmation support
The password editing UI has been refactored to introduce a new ConfirmativePasswordPropertyEditor that requires users to type their password twice to ensure accuracy, alongside a standard PasswordPropertyEditor for single-input scenarios. This change is driven by the PasswordEditSupport class, which now inspects the @Password annotation's checkPolicy setting to decide whether to render the confirmation-based editor or the standard one, ensuring that password fields requiring policy validation benefit from the extra confirmation step while others remain simpler.
server-core/src/main/java/io/onedev/server/web/editable/password · high confidence
Refactored pull request operation dialogs with obsolete update detection
The pull request operation dialogs (such as Merge) have been refactored to use a new base panel that detects when the pull request has been updated since the dialog was opened. If new commits are detected, the dialog displays a warning with a link to view the changes instead of proceeding with the operation, preventing actions on stale state. The refactoring also introduces specific panels for merge options and operation comments, standardizing the UI structure for these actions.
server-core/src/main/java/io/onedev/server/web/page/project/pullrequests/detail/operationdlg · high confidence
Refactored user password editing into a dedicated component with admin bypass and audit logging
The user password editing interface has been restructured into a new \PasswordEditPanel\ and \PasswordEditBean\ component. This change introduces a dedicated form for setting or changing passwords, featuring validation for the new password policy and an optional old-password field that is automatically hidden when an administrator performs the action. Additionally, the component now logs specific audit events for both password creation and modification, providing better visibility into account security changes.
server-core/src/main/java/io/onedev/server/web/component/user/passwordedit · high confidence
Replaced WebSocket infrastructure with Jetty 12 and Jakarta Servlet support
The server's WebSocket implementation has been rewritten to integrate with Jetty 12's native WebSocket container, replacing the previous Wicket-based upgrade mechanism. This change introduces a new \WebSocketFilter\ and \WebSocketProcessor\ that handle connections via the Jakarta Servlet API, ensuring proper Shiro subject binding and session management. The update includes a robust \DefaultWebSocketService\ with a message queue to prevent page re-rendering and connection loss issues, alongside dedicated event broadcasters for alerts, builds, code comments, commits, issues, pull requests, and workspaces to ensure real-time UI updates.
server-core/src/main/java/io/onedev/server/web/websocket · high confidence
Replaced legacy Shiro security implementation with a new modular authentication and authorization framework
The server's security layer has been completely rewritten to use a new set of Shiro-based components. This introduces dedicated filters for Basic and Bearer token authentication, a new caching mechanism for authorization info to improve performance, and a configurable CORS filter. The change also includes a new password service using BCrypt hashing and a restructured security manager and filter chain resolver, fundamentally altering how user sessions, access tokens, and permissions are processed.
server-core/src/main/java/io/onedev/server/security · high confidence
Responsive page navigator with adaptive visibility
The page navigator component has been replaced with a new implementation that adapts to screen width. On smaller viewports, intermediate page links are progressively hidden (based on distance from the current page) to save space, while ellipsis indicators are dynamically shown or hidden via JavaScript to maintain context. The navigation now uses a consistent set of CSS classes and data attributes to manage active states and responsive behavior, ensuring a cleaner interface on mobile and tablet devices.
server-core/src/main/java/io/onedev/server/web/component/pagenavigator · high confidence
Service layer refactored to use Jakarta EE namespaces
The service interfaces in the server core have been updated to use the Jakarta EE namespace (e.g., \jakarta.persistence.criteria\), reflecting the platform's migration from the Java EE \javax\ namespace. This change ensures compatibility with the updated runtime environment and standardizes the API usage across the service layer.
server-core/src/main/java/io/onedev/server/service · high confidence
Structured change tracking for issue activities
The issue activity log now records granular, structured details for specific issue modifications, allowing users to see precise before-and-after values in the change history. This location introduces a new set of data classes (extending IssueChangeData) that capture changes to the issue title, description, state, confidentiality status, iterations, custom fields, time tracking (estimated/spent), project assignment, and issue links. It also tracks when an issue is referenced from code comments, other issues, or pull requests, and when a comment is removed. This structured approach ensures that the activity feed displays clear, readable summaries of these specific changes rather than generic updates.
server-core/src/main/java/io/onedev/server/model/support/issue/changedata · high confidence
Symbol hover now closes on ESC key press
The symbol hover popover in the code editor now responds to the Escape key, allowing users to dismiss the overlay quickly without moving the mouse. This behavioral change is implemented in the new \jquery.hover.js\ utility, which registers a keydown listener on the document to hide the popover when the ESC key (keyCode 27) is detected, alongside existing mouse-based show/hide logic with configurable delays.
server-core/src/main/java/io/onedev/server/web/asset/hover · high confidence
Updated HTTP status codes for expired and stale page exceptions
The server now returns a 408 Request Timeout status when a page expires and a 400 Bad Request status when a stale page is detected, replacing the previous behavior. This change is implemented in the new PageExpiredExceptionHandler and StalePageExceptionHandler classes located in the exception handler package.
server-core/src/main/java/io/onedev/server/web/exceptionhandler · high confidence
Updated SnakeYAML representer to handle generic types and enums
The SnakeYAML library's Representer class has been updated to improve how Java objects are serialized to YAML. Specifically, the logic for representing JavaBean properties now explicitly handles Enum types by tagging them as strings, and it injects a 'type' field into mapping nodes for objects that are not Maps or Sets but have a different runtime class than their declared property type. This ensures that generic type information and enum values are preserved more accurately during serialization.
server-core/src/main/java/org/yaml/snakeyaml/representer · high confidence
Updated Wicket Strings utility class
The \org.apache.wicket.util.string.Strings\ utility class has been updated, introducing new static methods for string manipulation such as \afterFirst\, \afterFirstPathComponent\, \afterLast\, \beforeFirst\, and \beforeLast\. These methods allow users to easily extract substrings based on the first or last occurrence of a specific character or path separator, returning empty strings if the separator is not found. The class also retains existing functionality for handling session ID parameters and HTML markup escaping.
server-core/src/main/java/org/apache/wicket/util · high confidence
Updated and added SVG icons for the user interface
The icon assets in the server-core module have been refreshed with new and modified SVG files, including updates to AI-related icons (ai.svg, ai2.svg, ai3.svg), navigation arrows, and various functional icons like bell, branch, and calendar. A new IconScope class was also introduced to organize these assets.
server-core/src/main/java/io/onedev/server/web/asset/icon · high confidence
Upgrade to Bootstrap 4.5 and introduce dark mode support
The web interface has been upgraded from Bootstrap 3 to version 4.5.2, bringing modern layout utilities and component styles. Additionally, a comprehensive dark mode theme has been implemented, allowing users to switch to a darker color palette for the UI, which includes specific styling adjustments for backgrounds, text, and interactive elements to ensure readability and visual consistency in low-light environments.
server-core/src/main/java/io/onedev/server/web/asset/bootstrap · high confidence
Upgrade to Jakarta Validation namespace
The server's internal bean validation engine has been migrated from the Java EE \javax.validation\ API to the Jakarta EE \jakarta.validation\ namespace. This change updates the core validation implementation classes, such as \ValidatorImpl\ and \MethodValidationConfiguration\, to use the new \jakarta.\*\ package imports, ensuring compatibility with the updated Jakarta Validation specification.
server-core/src/main/java/org/hibernate/validator/internal/engine · high confidence
Warning added when editing unnamed files
When editing a blob that has no filename, the interface now displays a warning message prompting the user to specify a file name before modifying the content. This is implemented via a new edit panel and form component in the 'noname' renderer, which injects a specific CSS style and shows an alert notice.
server-core/src/main/java/io/onedev/server/web/page/project/blob/render/noname · high confidence
Fixes
Add PerfectScrollbar library to fix missing scrollbars in issue board cards
The application now includes the PerfectScrollbar library (v1.4.0) to ensure scrollbars are correctly displayed in areas like the issue board card side info. This change introduces the necessary JavaScript and CSS assets, along with a Wicket resource reference, to provide consistent scrolling behavior across the interface.
server-core/src/main/java/io/onedev/server/web/asset/perfectscrollbar · high confidence
Add styling for active pipeline buttons
Introduced a new CSS resource and stylesheet for pipeline buttons to ensure active states are visually distinct. The styles apply the primary color to text, borders, and drag indicators for active buttons, and adjust the background color on hover, focus, and active states, with specific support for dark mode.
server-core/src/main/java/io/onedev/server/web/asset/pipelinebutton · high confidence
Cache page and resource URLs in request scope
The RequestCycle now caches generated page and resource URLs in request-scoped ConcurrentHashMaps. This optimization reduces redundant URL generation during a single request, improving page loading performance, particularly when session state is not available.
server-core/src/main/java/org/apache/wicket/request/cycle · high confidence
Fix broken relative resource paths in bundled CSS and JavaScript
The web resource bundling system now correctly resolves relative paths (such as background images) referenced within bundled CSS files. Previously, bundling changed the URL structure, causing relative resource lookups to fail. This fix introduces a \BundleAwareResourceReferenceFactory\ that intelligently resolves these relative paths against the original source locations of the bundled resources, ensuring that assets like images load correctly even when CSS/JS are concatenated into single bundle files.
server-core/src/main/java/io/onedev/server/web/resourcebundle · high confidence
Fix custom file input styling for file uploads
Resolves issue \#372 by introducing a dedicated CSS resource and stylesheet for the file upload component. The new \file-upload.css\ implements a custom-styled file input that hides the native browser control and replaces it with a styled label, ensuring consistent appearance across light and dark modes and providing proper focus indicators for accessibility.
server-core/src/main/java/io/onedev/server/web/asset/fileupload · high confidence
Fix dropdown triangle indicator styling for dark mode and hover states
Resolved issue \#675 by introducing a dedicated CSS resource and styles for the dropdown triangle indicator. The new styles ensure the indicator displays correctly in both light and dark modes, with specific adjustments for background colors and border colors. Additionally, hover and open states are now visually distinct, improving user feedback when interacting with dropdowns in the project list and breadcrumb navigation.
server-core/src/main/java/io/onedev/server/web/asset/dropdowntriangleindicator · high confidence
Fix issue title pasting via clipboard integration
The application now correctly supports pasting content into issue titles by integrating the clipboard.js library (v2.0.11). This change introduces a new JavaScript resource reference and the minified library code to the server-core asset bundle, enabling the underlying clipboard functionality required for the paste operation to work as expected.
server-core/src/main/java/io/onedev/server/web/asset/clipboard · high confidence
Fixes 100% CPU usage in Hibernate cache timestamp generation
The SimpleTimestamper implementation in the Hibernate cache layer has been updated to prevent infinite CPU spinning (issue \#711). The new logic ensures that generated timestamp identifiers always increase by taking the maximum of the current wall-clock time and the previous value plus one, avoiding busy-wait loops when the system clock moves backwards or lags.
server-core/src/main/java/org/hibernate/cache · high confidence
GitLab import now correctly attaches access tokens to API requests
The GitLab import plugin now reliably authenticates with the GitLab API by adding a new AccessTokenFilter that injects the user's access token into the Private-Token header of outgoing requests. This change resolves the import failures reported in issue \#1267, ensuring that private repositories and protected resources are accessible during the import process.
server-plugin-import-gitlab · high confidence
Improved Lucene query handling and utility functions
The search functionality now includes a custom BooleanQueryBuilder that safely handles empty or null queries to prevent errors, and a LuceneUtils class that escapes special characters (such as brackets and logical operators) in search strings to avoid parsing issues. These changes ensure that creating or searching for issues with special characters in titles no longer causes exceptions or 500 errors.
server-core/src/main/java/io/onedev/server/util/lucene · high confidence
New input assist alignment logic for dropdowns and suggestions
This change introduces a new JavaScript alignment utility (jquery.align.js) and its Wicket resource reference to manage the positioning of UI overlays like dropdowns and input assist panels. The new logic ensures these elements stay within the viewport by automatically flipping their vertical or horizontal placement when they would otherwise overflow the screen edges, and it supports precise alignment to specific character positions in text inputs. This directly addresses user-facing bugs where assist panels appeared in wrong places or were cut off during scrolling or filtering.
server-core/src/main/java/io/onedev/server/web/asset/align · high confidence
Register custom MySQL BLOB type contributor
A new Hibernate service provider configuration file has been added to register the custom MySQL BLOB type contributor (io.onedev.server.persistence.MySQLBlobTypeContributor). This ensures that the application correctly handles MySQL BLOB data types during persistence operations, addressing potential issues with BLOB capacity during upgrades.
server-core/src/main/resources/META-INF · high confidence
Updated CodeMirror addons for improved editing experience
The server now includes updated versions of several CodeMirror addons (comment, dialog, display, edit) to enhance code editing capabilities. Users will benefit from improved comment handling with better continuation logic, more robust search and confirmation dialogs, and display features like auto-refresh, fullscreen mode, and rulers. Editing features have been updated to provide smarter auto-closing for brackets and tags, as well as improved markdown list continuation.
server-core/src/main/java/io/onedev/server/web/asset/codemirror/addon · high confidence
Upgrade Select2 to version 4.1.0 with Bootstrap 4 styling and Wicket integration fixes
The Select2 component has been upgraded from version 3.x to 4.1.0, bringing updated core JavaScript, CSS, and new Bootstrap 4-compatible styling. This change improves the visual appearance of dropdowns to match the application's Bootstrap 4 theme, including support for dark mode. It also resolves several user-facing issues, such as incorrect dropdown positioning within modals, selection order preservation in multi-select fields, and input hanging in Microsoft Edge. The integration layer now properly handles Wicket's DOM replacement events to prevent memory leaks and UI glitches when components are refreshed.
server-core/src/main/java/io/onedev/server/web/component/select2/res · high confidence
Test coverage
Added ChoiceField model for issue enumeration fields; Added UserChoiceParam build spec with configurable default values; Added comprehensive validation tests for dependency destinations and Hibernate validation behavior; Added default value providers for choice fields; Added persistence tests for entity ID management, schema generation, and Hibernate upgrades; Added test coverage for project collaboration, pull request reviews, resource scheduling, deletion logic, and project defaults; Added test for DefaultCommitInfoService line stats update; Added test page infrastructure for UI development; Added tests for DiffUtils visibility logic; Added tests for Git service wiki commits and Markdown link handling; Added tests for Jakarta EE 11 Jetty integration; Added tests for JevSetting and ServiceDesk field suggestion logic; Added tests for PatternSet grammar and interpolation; Added tests for REST API help JSON, Jakarta validation, parameter handling, and project reference security; Added tests for RunJobLink authorization checks; Added tests for TimeProgressBar component; Added tests for User Choice field specification; Added tests for VariableInterpolator; Added tests for Wicket and Hibernate customizations; Added tests for access token revocation, authorization caching, and Shiro filter subject isolation; Added tests for branch protection commit message validation; Added tests for build logging infrastructure; Added tests for cluster atomic counters, facade lookup caches, and Wicket repeating view components; Added tests for commit message fix and time tracking settings; Added tests for commit query parsing and regex literal handling; Added tests for data migration and serialization components; Added tests for diff expansion controls, symbol context resolution, and revision diff panel logic; Added tests for editable utils and project collaborator choice components; Added tests for entity reference extraction and transformation; Added tests for project defaults inheritance and routing; Added tests for project settings inheritance, collaborator scoping, pull request generation, and workspace data validation; Added tests for pull request collaborator selection logic; Added tests for report path validation and pull request title generation; Added tests for resource bundle reference resolution; Added tests for subscription-aware project defaults and authorization; Added tests for the Build Steps page behavior; Added tests for the translation scanning and generation logic; Added tests for wiki link resolution and utility functions; Added tests for wiki page functionality; Added tests for workspace port URL generation and user data validation; Added unit tests for Blame and Log commands; Added unit tests for Criteria utility class; Added unit tests for Git utilities and commit tracking logic; Added unit tests for REST resource endpoints; Added unit tests for SSH and GPG signature verification; Added unit tests for query watch builder and search grammar code assist; Added unit tests for server-core utility classes; Added unit tests for the TriStateSwitch component; New E2E test suite for API fixtures, confidential issues, diff symbol context, JEV integration, and login redirects.
Dependencies
Add end-to-end testing infrastructure with Playwright
Added a new \e2e-test\ module to the project, introducing an end-to-end testing setup using Playwright (v1.62.1) and Node.js (v20+). This includes the necessary \package.json\ and \package-lock.json\ files to support automated browser testing for the application.
(dependencies) · high confidence
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 30.
Lenses
- Code Health 20
- Architecture 72
- Maturity 52
- Readiness 30
- Security 63
- Domain Modelling 87
- Accessibility 28
- Performance 75
Changes since last survey
- 300 commits — 225 feature/other, 75 fixes
By area
- server-core/src — 159 commits
- (root) — 78 commits
- (repo) — 25 commits
- e2e-test/tests — 14 commits
- doc/missing-issue-fixes.md — 5 commits
- server-plugin/server-plugin-executor-serverdocker — 5 commits
- server-plugin/server-plugin-pack-maven — 3 commits
- server-plugin/server-plugin-executor-remotedocker — 2 commits
- server-plugin/server-plugin-report-playwright — 2 commits
- server-product/docker — 2 commits
- e2e-test/README.md — 1 commit
- e2e-test/playwright.config.js — 1 commit
- server-plugin/server-plugin-pack-npm — 1 commit
- server-plugin/server-plugin-report-unittest — 1 commit
- server-product/system — 1 commit
Notable commits
- fix: Fix OD-2276
- fix: Fix dev server classpath resolution
- fix: Fix dev server reactor classpath resolution
- fix: Revert "feat: Keep sidebar and topbar stable during full-page navigation"
- fix: chore: Fix for IntelliJ
- fix: chore: Fixed failed tests
- fix: chore: Revert dev.sh changes
- fix: chore: Submodule fix issue instruction improvement
- fix: fix(api): POST /pulls/{requestId}/request-for-changes approves the pull request instead of requesting changes
- fix: fix(deps): upgrade Bouncy Castle to 1.85
- fix: fix: /~api/renovate/repos/{project}/commits/{sha}/statuses returns 404 for an existing commit
- fix: fix: Able to configure mail sending concurrency in mail service
- fix: fix: Able to read arbitrary host file via workspace or run image tools step
- fix: fix: Add missing line break in execute method of ServerDockerExecutor
- fix: fix: Add null check for mail connector in DefaultMailService
- fix: fix: Add stop timeout to Docker run command in ServerDockerExecutor
- fix: fix: Backup script reports "rev not found" when run in container
- fix: fix: Batch issue deletion during reconciliation
- fix: fix: Checkout failed if repository root contains a file named "git"
- fix: fix: Commit indexing hangs on some particular C file
- …and 280 more
Architecture
- 0 containers · 8 bounded contexts · 7 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
theonedev/onedev 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 10 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 196c6bbda31c951aae5f1a9a1ca97dfadbb7e6ba — the exact code this score is about.
- Scored under rubric-2026.10.5 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fe8540b5da9b.