Release v2.0.0
In this release we've introduced significant new features and improvements, including enhanced project management with the ability to create, edit, and delete projects, along with a new project picker in the sidebar for easier navigation.
Network analysis capabilities have been expanded with the addition of a packet capture analysis page, dissection tree component, and support for .cap
and .pcap
file attachments.
The update also brings UI refinements such as resizable panels, loading states, and a new split-button component, alongside performance gains from converting PNG images to WebP format.
Multi-Project Support
In this release, we introduced support for managing multiple projects within a single instance.
Project Management
Project management is available through the Configuration Manager in the Admin section.
This functionality is accessible to administrators only.
Here you can:
- Create new projects
- Rename projects
- Delete projects
Currently, you can only rename or delete projects that do not have any runs associated with them.
Importing Runs
To import a run that belongs to a new project, you must first create the project using the Configuration Manager in the Admin section.
To specify which project a run belongs to, set the project name as the value of the PROJECT
meta field in the meta_data.json
log file before starting the import.
Example of a meta_data.json
for a run that will be linked to the
ts-factory project
meta_data.json
for a run that will be linked to the
ts-factory project{
"version": 1,
"metas": [
{
"name": "PROJECT", // This means this run will be linked to project with name ts-factory
"value": "ts-factory"
},
{
"name": "TS_NAME",
"value": "net-drv-ts"
},
{
"name": "NET_DRV_TS_GIT_URL",
"value": "https://github.com/ts-factory/net-drv-ts.git"
},
{
"name": "NET_DRV_TS_BRANCH",
"value": "main",
"type": "branch"
},
{
"name": "NET_DRV_TS_REV",
"value": "9ac8dee6e9345039a2b602de72239f2faf8ab89f",
"type": "revision"
},
{
"name": "TSRIGS_GIT_URL",
"value": "https://cbs-speed-stack@git.oktetlabs.ru/git/oktetlabs/ts-rigs.git"
},
{
"name": "TSRIGS_BRANCH",
"value": "master",
"type": "branch"
},
{
"name": "TSRIGS_REV",
"value": "0ecac2d569b7fc83242d7c136c859c0c4cbea713",
"type": "revision"
},
{
"name": "CFG",
"value": "beechbone-e810"
},
{
"name": "TSCONF_GIT_URL",
"value": "https://github.com/ts-factory/ts-conf.git"
},
{
"name": "TSCONF_BRANCH",
"value": "main",
"type": "branch"
},
{
"name": "TSCONF_REV",
"value": "df76a477945aabed165ec244257100f1894d39af",
"type": "revision"
},
{
"name": "START_TIMESTAMP",
"value": "2025-02-23T17:07:32+03:00"
},
{
"name": "CAMPAIGN_DATE",
"value": "2025-02-23"
},
{
"name": "USER",
"value": "cbs-speed-stack"
},
{
"name": "RUN_STATUS",
"value": "DONE"
},
{
"name": "RUN_OK",
"value": "true"
},
{
"name": "TE_GIT_URL",
"value": "https://github.com/ts-factory/test-environment.git"
},
{
"name": "TE_BRANCH",
"value": "main",
"type": "branch"
},
{
"name": "TE_REV",
"value": "d869ac23287ee81795cf42803b2e79e17aea04ee",
"type": "revision"
},
{
"name": "REUSE_PCO",
"value": "true"
},
{
"name": "FINISH_TIMESTAMP",
"value": "2025-02-23T19:32:03+03:00",
"type": "timestamp"
}
]
}
At this time, setting the project in meta_data.json
before import is the only way to link a run to a project.
It is not possible to reassign a run to another project through the user interface.
If you need to change a run’s project, you must delete it and re-import it with the correct PROJECT
value in meta_data.json
.
Configurations
Configurations are now divided into:
- Default configurations
- Project-specific configurations
Default configurations are used for:
- Displaying runs when no project is selected
- Importing and displaying runs in the absence of project-specific configurations or missing attributes in them
If you want to customize settings for a particular project, create a dedicated configuration for that project and override only the attributes you need.
The presence of a run in Bublik is determined by the meta values listed in RUN_KEY_METAS
in the main configuration (per_conf). If you want to import identical runs into different projects, include the PROJECT
meta in the RUN_KEY_METAS
of the main configurations for both projects. This ensures that when importing the same run into another project, Bublik will not treat it as already imported.
Filter By Project
Highlights
Network Packets
New Page to view .cap
and .pcap
files from log attachments
You can access it via log attachments if added them
For more information please see documentation.
New Page
Improved Shortcut Links For History And Run
Run
History
Report
Report Chart Toolbar
Admin Section
Before starting the update, create a database backup to ensure data safety in case of any unexpected issues during the process.
Backend Update
Since assigning projects by meta can take a long time, it is recommended to specify the desired meta in the initial command execution to avoid the need for re-running the process.
Stop side services to avoid potential disruptions or conflicts during the migration process: ./scripts/deploy --steps run_side_servers
+ stop
. Restart them once the process is complete: ./scripts/deploy --steps run_side_servers
+ start
.
During the update, use tmux
or screen
to keep your session running in the background, ensuring it won’t be interrupted if the connection is lost.
cd bublik
git remote update
git checkout v2.0.0
./scripts/deploy --steps migrate_db
python manage.py migrate_tags_config_to_meta
python manage.py reformat_configs
python manage.py assign_project_by_meta -m <meta_name>
(meta name to split runs into projects; default:PROJECT
)python manage.py initialize_configs
./scripts/deploy --steps django_settings run_services
Frontend Update
- Trigger the workflow in your frontend repository
- Synchronize the mirrors
cd bublik-ui
git remote update
git checkout v2.0.0
Documentation Update
- Trigger the workflow in your frontend repository
- Synchronize the mirrors
cd bublik-docs
git remote update
git checkout v2.0.0
Docker Instance Update
task backup:create
- to create a backup of the current databasetask pull
- to pull the latest imagestask up
- wait about 15 seconds for containers to starttask shell
- to enter containerpython manage.py migrate_tags_config_to_meta
python manage.py reformat_configs
python manage.py assign_project_by_meta -m <meta_name>
(meta name to split runs into projects; default:PROJECT
)python manage.py initialize_configs
Changelog
Frontend
🚀 New Feature
- configs: add project creation button to config sidebar (c646f24)
- configs: add project deletion and update functionality (bb84489)
- log: add new type of log attachment for
.cap
and.pcap
files (4bef056) - net: add dissection tree component (50bacfe)
- net: add loading samples for testing (479b6d9)
- net: add packet capture analyze page (5452f0d)
- net: add resizable panels for tree, dump and table (abd25ec)
- net: add trace flow component (4287321)
- projects: [config] remove global config validation and improve empty state handling (369845a)
- projects: add project creation functionality (9618134)
- projects: add project dropdown component (78499f4)
- projects: add project support and missing config creation (2cec4fa)
- projects: add projects feature library (e0603f7)
- projects: enhance project dropdown with sidebar toggle and project name display (c609cc2)
- projects: extend config schema with project field (a1dd545)
- projects: implement project creation modal and add project dropdown to sidebar (9255aeb)
- projects: implement project filtering across pages (f88a601)
- projects: improve error handling for project creation and update forms (d1e366a)
- projects: replace Link with `LinkWithProject`` across all components (72ffded)
- report: [chart] add toolbar for report charts (ee23155)
- report: [TOC] remember open/close state in URL (1db6e9c)
- run: improve error handling in compromise status feature (d3ea8fb)
- ui: [icons] add external-link icon (91ad7aa)
- ui: [split-button] add new component for split-button (4cb17a0)
💅 Polish
- configs: add animation for project list accordion open/close states (8d708d1)
- net: [packet-table] add proper empty/loading states (66edb07)
- sidebar: fix sidebar button label alignment (7b52db1)
- sidebar: refactor project dropdown and search hooks (824a493)
- ui: [dropdown-menu] remove unused left padding from dropdown menu items (ae46070)
🐛 Bug Fix
- assets: ensure public directory exists for static assets (33dd537)
- ci: increase node memory limit to prevent out-of-memory errors (4426e54)
- configs: handle default project deletion and conditional rendering (bb1f043)
- configs: handle null project IDs in config list and API schema (bbc5157)
- history: preserve project filter when resetting history filters (9aaa76f)
- import: improve import log error handling and display (b869367)
- net: evenly space bottom panels for tree and data sources (ce42680)
- net: loading
.cap
and.pcap
files (ffaa94e) - projects: add truncate class to project dropdown text (2bd9f4d)
- projects: handle
undefined
project field in config endpoint (625d0d4) - projects: refine config endpoint error handling and project field (66c7af5)
- projects: rename
project_name
field toname
in API endpoints (c71b31e) - report: [table] fix react duplicate key error (b9a8971)
- run: [comments] add project ID to test comment functionality (80620d4)
- run: add no-cache to outside domains issues endpoint (fa488d2)
- run: fix split button popover being overlayed by run row (7584646)
- run: update API endpoints and remove unused prefetch (19f65e1)
- types: replace most of
any
types with concrete ones (b3edcba) - ui: [link] update link component ref type and pass ref to Link (3f318a0)
- ui: fix circural deps issue with context-links component (12775d0)
♻ Code Refactoring
- history: [linear] use split button to display shortcuts (431ac51)
- projects: add project support to config creation and sidebar (bd9fb66)
- projects: refactor project dropdown to use radio buttons instead of checkboxes (1d3152f)
- report: [chart] extract logic for chart options (e832af0)
- run: [result-table] change history link labels and add new shortcuts (484c4d5), closes #358
- run: [results] use split button to display links to history (3ff9b3c)
📦 Chores
- charts: delete outdated toolbar component (d47507d)
- faq: remove outdated storybook story (526f99b)
- measurements: remove unused chart imports from plot list component (6469f18)
- measurements: update export utility import path (8d2b23a)
- net: generate library for network analysis (6f5f43a)
- net: move packet analysis component to generated library (303ae2e)
- projects: update redux toolkit query import path (f8a877e)
- run: remove debug console log from compromise form (eade7db)
- sidebar: update project dropdown and sidebar link behavior (ca939ae)
⚡ Performance Improvements
- images: convert PNG images to WebP for improved performance and loading speed (844bb16)
Backend
🐛 Bug Fix
- apps: register signal handlers on app startup (f88de75)
- config: avoid meta config format mismatch errors (2cbea3e)
- config: fix meta config schema (e6e557a)
- importruns: fix metadata error msg (b37cfcc)
- management: fix config validation after reformatting (3f13f3d)
- urls: fix run source URL construction (46bd745)
🚀 New Feature
- metatest: enforce per-test comment uniqueness at the model level (fa5b0e6)
- management: enable merging of meta and tags configs to reduce complexity (8ec0ea9)
- management: simplify configs by merging tags into meta during their migration (f44d3be)
- config: drop tags config to simplify and unify config management (de16e4)
- config: add meta config content validation (d2dfc23)
- project: add project model and its relations (925fafa)
- project: add basic serializer (20f8ae5)
- project: add API for management (2c662d7)
- api: implement and apply project-based filtering (985b287)
- config: make config methods project-aware (e5f5447)
- config: make serializer methods project-aware (d560e43)
- config: update API to support project association (7d80277)
- test comments: make test comments management project-aware (16ecd0c)
- middleware: consider project in dynamic settings retrieval (4530b80)
- services: make global config attrs retrieval project-aware (1f4bb06)
- importruns: make the import process project-aware (6b34ee4)
- importruns: fix meta data generation (d2b3d65)
- importruns: filter import failure recipients by project (7716878)
- management: make meta categorization project-aware (7a03904)
- auth: make permissions check project-aware (21fc4e7)
- performance: update data retrieval with project filtering (c74048e)
- outside domains: update data retrieval with project filtering (7ad218c)
- api: update runs data retrieval with project filtering (376180d)
- api: add project info to API output (d320bae)
- report: update available config list filtering with project (f7a19e5)
- management: associate migrated configs with the corresponding project (473029c)
- management: add project info to config initialization (7f12565)
- management: update config reformatting labels with project (b54b56a)
- urls: update short URLs with project (ec076d7)
- management: enable run reassignment based on meta values (1da5485)
♻️ Code Refactoring
- cache: simplify tag category cache setup using base tag queryset (3387789)
- signals: centralize signals (4d76d81)
- metatest: ensure consistent orphan meta cleanup (e88e863)
- metatest: ensure valid updated value (26ee21a)
- metatest: ensure clean and reliable serial assignment (c1f3dea)
- test comments: ensure clean serialization and API (618c360)
- test comments: ensure data integrity when updating (70db86d)
- auth: unify access to permission-exempt actions (cda0163)
- management: optimize config type-name mapping (069381b)
- management: make configuration reformatting more flexible (b738112)
- config: refactor active configuration retrieval (01c1d3a)
- config: improve meta config structure (a275280)
- management: update meta categorization command for new config structure (1928fe8)
- management: sort configs before reformatting (74b4776)
- management: fix config reformatting order during migration (c2530e4)
- management: add reformatting for meta config schema update (846bfb2)
- config: update the main project config schema (cc3e6d5)
- run: prevent redundant DB hits (86e135f)
- services: require project ID for global config retrieval (6a34d2d)
- management: make config management commands atomic (0eef519)
- management: unify config management commands output (9a327d3)
- management: make config migration command more readable (4e495fa)
🧹 Cleanup
- cleanup: format import blocks (de7c985)
- serializers: organize export order for better clarity (b0e06c2)
- serializers: make meta test serializer public (ceeeb29)
- test comments: simplify docstrings (dba67dc)
- management: update meta categorization docstring (e7da9f2)
- management: clarify all metas categorized (ddd8dc0)