Release v2.12.2
We're excited to announce Bublik v2.12.2!
This release brings live project status badges you can embed in READMEs and dashboards, autocomplete for the "Test Path" field in the history search form, and an improved dashboard column configuration structure in the per-project config. The import workflow has been significantly reworked: runs imports are now tracked as structured jobs with run-specific tasks, making it possible to monitor execution status per job. We also fixed a bug where filtering by test name could return mixed results from different test groups and normalized stacked chart y-axes for multi-axis plots.
What's New
Project Status Badges
Projects now expose an SVG badge endpoint showing the latest run status. Use GET /api/v2/projects/{id}/badge/ with an optional metric parameter to embed live badges in READMEs or dashboards.
Autocomplete for Test Path Search
The global search form now provides autocomplete for the "Test Path" field, making it faster to find and filter relevant test results.
Unified Dashboard Column Configuration
The per-project configuration structure has changed: DASHBOARD_HEADER and DASHBOARD_PAYLOAD keys are merged into a single DASHBOARD_COLUMNS array. Each column's key, label, payload, and formatting are now defined in one place.
Improved Run and Import API Support
The run and import pages have been updated to work with the latest backend API changes.
Chart and Table Improvements
Stacked chart y-axes are now normalized for multi-axis plots, and the "Objective" column is visible by default on the run page.
Highlights
Project Status Badges
Projects now have a built-in SVG badge endpoint reflecting the latest run status. Badges follow the shields.io flat style and can be embedded anywhere that renders images — READMEs, wikis, dashboards.
Endpoint: GET /api/v2/projects/{id}/badge/
Supported metric values: passed, unexpected, total, rate, or omit for run conclusion with unexpected count.

Autocomplete for Test Path Search
The global search form now provides autocomplete for the "Test Path" field, making it faster to find and filter relevant test results.

Unified Dashboard Column Configuration
The per-project configuration structure has changed: DASHBOARD_HEADER and DASHBOARD_PAYLOAD are replaced by a single DASHBOARD_COLUMNS array where each column is a self-contained object with key, label, payload, and formatting.
The go_tree payload value is renamed to go_log.

Improved Run and Import API Support

Admin Section
Backend Update
cd bublikgit remote updategit checkout v2.12.2./scripts/deploy --steps pip_requirements migrate_db per_project_conf run_services
The run statistics data structure has been updated. Therefore, the run statistics cache must be cleared so that the statistics are rebuilt accordingly:
- Activate the virtual environment:
source .env/bin/activate - Clear run statistics cache for all runs:
python manage.py run_cache delete -f 2017.01.01 -d stats -d stats_reqs
Frontend Update
- Trigger the workflow in your frontend repository
- Synchronize the mirrors
cd bublik-uigit remote updategit checkout v2.12.2
Documentation Update
- Trigger the workflow in your frontend repository
- Synchronize the mirrors
cd bublik-docsgit remote updategit checkout v2.12.2
Docker Instance Update
# 1. Backup the current db
task backup:create
# 2. Update the image tag in the .env file
sed -i "s/^IMAGE_TAG=.*/IMAGE_TAG=2.12.2/" .env
# 3. Pull the latest docker image
task pull
# 4. Start the docker container
task up
# 5. Enter the container shell
task shell
# 6. Reformat configs
python manage.py reformat_configs
# 7. Delete old cache data
python manage.py run_cache delete -f 2017.01.01 -d stats -d stats_reqs
Changelog
Frontend
🚀 New Feature
- history: add autocomplete to "Test Path" global search form field (ae3d3d8)
- router: send current URL information to parent window (5eab15d)
🐛 Bug Fix
- history: preserve verdict lookup type when clicking reset verdict button (09d78f9)
- history: support quoted badge values containing commas (200e2a6)
- dashboard: fix analytics dashboard page view tracking (94d7f42)
- import: remove duplicated root prefix in import run requests (27dd360)
♻️ Code Refactoring
- import: adapt import table to new API changes (ba7d169)
- run: adapt for new api changes (139001e)
- dashboard: move analytics route tracker for better organization (f11e5fe)
- history: [form] improve test path input with proper path handling (dcb9fe1)
- import: [form] display loading state in import form properly (f80906a)
- log: deprecate
formattedfield in JSON log (2f25dce)
📦 Chores
- measurements: normalize stacked chart y-axes for multi-axis plots (8933fd8), closes #532
- run: make "Objective" column visible by default (e1b1285)
- analytics: remove logging of all events from client side (dfb738c)
💅 Polish
- history: [form] align close button horizontally (defe631)
- import: improve import events table layout (ba0507f)
Backend
🐛 Bug Fix
- pagination: fix OpenAPI schema mismatch for paginated responses (e82a489)
- importruns: ensure failed tasks are marked correctly (f18e545)
- logging: fix incorrect log routing in importruns (0597a29)
- results: fix same-name test results retrieval via start result ID filter (abfa3c4)
- run: fix missing run stats test comments (895069e)
- results: fix broken
result,result_properties,requirementsfilters (facfc8e) - management: management: fix per_conf migration when dashboard keys are missing (f8a8221)
- management: sync dashboard sort keys with column keys during per_conf migration (b1465f4)
- serializers: remove access to non-existent attribute (8fa13de)
🚀 New Feature
- api: add project badges to see the pipe status externally (3bd4ea9)
- history: add test search options endpoint (841b553)
- cache: add tests cache (46235ed)
- importruns: add job and task models with relations to track executions (2140465)
📦 Chores
- management: enable reformat to merge dashboard column settings (858c32a)
- api: define error response serializers to ensure OpenAPI schema matches runtime (dd7172b)
- importruns: enforce mandatory task ID across the import process (df90506)
- importruns: ensure reliable task execution during worker restarts (5cc606f)
- jobtasks: align OpenAPI schema with actual runtime responses (73c188d)
- run stats: improve clarity and consistency of run stats data fields (d1a8254)
- requirements: update packages versions to pick up bug fixes (7f3eaa9)
- management: document dashboard settings merge reformat step (a5df64f)
- requirements: update packages versions to pick up bug fixes (fa32b5c)
♻️ Code Refactoring
- config: improve dashboard column configuration by consolidating settings (5a8946e)
- dashboard: adapt service to handle consolidated column configuration (cd854f3)
- dashboard: use config schema as source of truth for payload handlers (18699e1)
- importruns: clarify API logic by adjusting parameter handling (f4657db)
- importruns: improve consistency by unifying parameter names (6fb728a)
- importruns: move runtime helper to utils for helpers centralization (9add310)
- importruns: extract run path traversal logic to separate concerns (ae4f58a)
- importruns: extract import logic to separate concerns (7c01e99)
- importruns: extract run scheduling logic to separate concerns (ec7d642)
- importruns: remove CLI dependency by using direct scheduling (655a679)
- importruns: make parameter validation independent from CLI (52753c4)
- importruns: enforce single API entry point for imports (6ee1356)
- importruns: centralize parameter normalization (8429d33)
- importruns: make Celery tasks run-specific (267bff9)
- importruns: integrate job and task entities into import workflow (9b7513a)
- jobtasks: add task execution service for separation of concerns (dbe5f0c)
- jobtasks: improve session import tracking using job/task models (3c5682f)
🧹 Cleanup
- utils: remove unused argument to avoid variable shadowing (d956755)
- logging: clean up unused logger in importruns (09eb40f)
- checks: remove unused message helper (af736a1)
- tasks: explicit task ID in Celery event handlers (ecf2c2c)
- tasks: explicit run source URL in Celery event handlers (8311833)
- tasks: make Celery events error message safer (ae0dbf1)
- importruns: make task argument order more logical (2a681a8)
- importruns: remove duplicated exception logging (701baa3)
- importruns: unify import exception handling (09ce9d5)
- importruns: improve run source URL naming to reduce confusion (17589f4)
- logging: remove error logging duplicated by exception handler (7d051fe)

