Thanks @nilieskou!
Looking at the schema, I noticed that it already doesn't include the fields that this issue captures to be hidden (#587655), is that correct?
@svedova That is the thing I tried to explain - it currently is not just !isPipelineComplete because we have the this.hasPipeline guard in place.
Without it, we could end up in a state where there is no pipeline and isPipelineIsRunning is true, right?
@svedova Apologies for jumping in, as I was also thinking about this when I suggested it to change to this
isPipelineComplete is false when:
mr === null)isPipelineRunning should only be true in case 3 (Pipeline running). If we drop the hasPipeline check, then it would become true for cases 1, 2 (not loaded, no pipeline) as well.
I think this shows exactly where boolean state falls apart and is so difficult to reason about.
One idea could be using a simple state machine, which really helps to express the different states in a more digestible way:
pipelineState() {
if (!this.mr) return 'loading';
if (!this.mr.pipelineIid) return 'no-pipeline';
if (this.mr.isPipelineActive) return 'running';
return 'complete';
}
// ...
statusMessage() {
if (this.pipelineState === 'running') return s__('MrReports|Waiting for pipeline to complete.');
if (this.pipelineState === 'no-pipeline') return s__('MrReports|No pipelines started yet...');
return '';
},
The template would also be quite straightforward. Eg.:
v-if="pipelineState === 'complete'"
We could also use constants for the states.
But just an idea, and maybe something for a follow-up?
David Pisek (38286291) at 19 Mar 09:07
Merge branch 'add-code-quality-widget-specs' into 'master'
... and 1 more commit
David Pisek (56300fec) at 19 Mar 09:04
Changes:
- check_name
+ engine_name
| Before | After |
|---|---|
![]() |
![]() |
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
LGTM @sming-gitlab - nice work! Approved and setting-auto merge!
Changes:
- check_name
+ engine_name
| Before | After |
|---|---|
![]() |
![]() |
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Ah, very nice @svedova! I really like the idea and will tackle it in a follow-up
On it next @sming-gitlab
Thanks, Becka! I'll keep that in mind
Thanks for the quick and thorough review @lorenzvanherwaarden! I followed your great suggestion and changed the token's type.
@svedova - Could you please maintainerize?
That is a great point @lorenzvanherwaarden! I could imagine that the could expand in the future, so I am changing it to malware (also following the existing pattern)
David Pisek (440c2909) at 18 Mar 18:17
Feedback: change token type
Yes, nice work @svedova - approved!
Add vulnerabilities by age chart to project dashboard
Implement the Vulnerabilities By Age chart for the project-level security dashboard, bringing feature parity with the group-level dashboard while appropriately simplifying for project-level scope.
project_total_risk_score_chart (http://gdk.test:3000/rails/features/project_vulnerabilities_by_age_chart)Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to gitlab-org#21021
Handle different lifecycle for MR reports:
| 1. No Pipeline | 2. Pipeline loading | 2. Pipeline complete |
|---|---|---|
![]() |
![]() |
![]() |
| Changes | MR |
|---|---|
| Handle pipeline lifecycle state |
|
| #593748 | tbd |
| Before | After |
|---|---|
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #593551
thought: First off, a praise: Thanks for making this more accessible!
One thought, I think it is not ideal to remove/add live-regions from the DOM. I believe some screen readers might miss it, when we move from the "loading" to the "loaded" state.
Here is a great read around this: https://k9n.dev/blog/2025-11-aria-live
Nice one @sming-gitlab, another series to watch
The changes LGTM! I just left a non-blocking suggestion and a ally thought, so I'll also go ahead and approve
suggestion (non-blocking): maybe we could slightly improve readability here. Something like:
hasPipeline() {
return Boolean(this.mr?.pipelineIid);
},
isPipelineComplete() {
return this.hasPipeline && !this.mr.isPipelineActive;
},
isPipelineRunning() {
return this.hasPipeline && !this.isPipelineComplete;
},
hasNoPipeline() {
return Boolean(this.mr) && !this.hasPipeline;
},But also happy to leave as-is