Skip to content

fix: Various bugfixes - #335

Merged
olblak merged 5 commits into
updatecli:mainfrom
olblak:fix_labels
Oct 3, 2026
Merged

olblak merged 5 commits into
updatecli:mainfrom
olblak:fix_labels

Conversation

@olblak

@olblak olblak commented Oct 3, 2026 •

Copy link
Copy Markdown
Member
  • Limit the number of displayed PR to 5
  • Fix frozen labels within the filter
  • List pull request only once

Description

Test

/

Additional Information

Tradeoff

Potential improvement

Summary by CodeRabbit

  • New Features
    • Added pull-request lists to the dashboard and pipeline reports, with pipeline results grouped by pull request, expandable details, filtering, pagination, and live updates.
    • Added clear loading, empty, and retryable error states. Only HTTP(S) action links are clickable.
    • Waiting-to-merge items now appear in the pull-request list; the today queue focuses on failing pipelines.
  • Improvements
    • SCM filter labels and values refresh with date-range changes and live updates.

olblak added 5 commits October 2, 2026 21:57
The waiting to be merged list reads the new open actions endpoint and
shows one row per pull request, led by the worst result of the
pipelines feeding it. Home shows the 5 most recent, the dashboard and
the reports page page through every one matching their filter.
A page the reader asks for only becomes the current one once it
arrived. When it fails, the pager stays on the rows shown and says the
page could not be loaded, until the reader asks for a page again or
changes the filter; a background refresh no longer clears it. A refresh
that lands while a page is pending loads that page too.

Pull requests whose link is not http(s) are now listed as plain text
instead of being dropped, so the list agrees with the count.
Signed-off-by: Olivier Vernin <olivier@vernin.me>
Signed-off-by: Olivier Vernin <olivier@vernin.me>
The label keys and values were fetched for a time window frozen when the
page loaded, and only fetched again when the date range moved. A page
left open never offered a label first reported after it loaded.

The window is now read at request time, and the lists follow the live
refresh like the reports and charts they filter. Values of label rows
restored from the URL or the saved filter are loaded too, and so are
those of selected rows after a range change.

A response superseded by a newer refresh is dropped instead of
overwriting a newer list. A failed refresh keeps the lists it had while
the range is unchanged, and empties them after a range change.

Signed-off-by: Olivier Vernin <olivier@vernin.me>
@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5f73f360-77ed-43c0-be95-d09b01d00924
📥 Commits

Reviewing files that changed from the base of the PR and between 53251e8 and 7ecb9db.

📒 Files selected for processing (14)
  • src/components/PullRequestList.spec.js
  • src/components/PullRequestList.vue
  • src/components/TodayQueue.spec.js
  • src/components/TodayQueue.vue
  • src/components/pipeline/activityChart.vue
  • src/components/pipeline/reports.vue
  • src/components/scm/_filter.spec.js
  • src/components/scm/_filter.vue
  • src/components/scm/_summary.vue
  • src/composables/filter.js
  • src/composables/filter.spec.js
  • src/composables/url.js
  • src/views/Dashboard.vue
  • src/views/pipeline/ReportsView.vue
💤 Files with no reviewable changes (1)
  • src/components/pipeline/reports.vue

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Adds a reusable, paginated pull-request list to dashboard, reports, and waiting-queue views. Updates SCM label refresh handling and shared filter request construction. Adds tests for pull-request rendering, pagination, refresh edge cases, label refresh behavior, and request-body mapping. Removes the reports page’s aggregate pull-request list.

Changes

Pull-request lists

Layer / File(s) Summary
Pull-request list behavior
src/components/PullRequestList.vue, src/components/PullRequestList.spec.js, src/composables/url.js
Adds configurable list rows with aggregated pipeline results, filter-aware pipeline details, safe HTTP(S) action links, pagination, refresh handling, and loading, empty, and error states. Tests cover rendering, requests, pagination, and refresh cases.
View and queue integration
src/views/Dashboard.vue, src/views/pipeline/ReportsView.vue, src/components/TodayQueue.vue, src/components/TodayQueue.spec.js, src/components/pipeline/reports.vue
Adds the list to dashboard and pipeline reports, and delegates the waiting-queue column to it. TodayQueue retains the failing-pipeline queue. Removes the separate aggregate pull-request list from the reports page; per-report action links remain.

SCM filter refresh

Layer / File(s) Summary
Shared filter request construction
src/composables/filter.js, src/composables/filter.spec.js, src/components/scm/_summary.vue
Adds filterRequestBody for conditional date, label, and result fields, then uses it to build SCM dashboard search filters. Tests cover mapped and omitted fields.
SCM label refresh lifecycle
src/components/scm/_filter.vue, src/components/scm/_filter.spec.js
Refreshes label keys and selected-key values on live refreshes and date-range changes. Ignores stale responses and tests failure handling for unchanged and changed date ranges.

Activity chart template comments

Layer / File(s) Summary
Template comment placement
src/components/pipeline/activityChart.vue
Moves explanatory comments inside their matching template branches. The branch behavior remains unchanged.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant DashboardView
  participant PullRequestList
  participant ActionsAPI
  DashboardView->>PullRequestList: pass filter and list options
  PullRequestList->>ActionsAPI: request filtered, paginated actions
  ActionsAPI->>PullRequestList: return actions and count
  PullRequestList->>DashboardView: render pull-request rows and pagination
Loading

Merge Risk: ⚪ Minimal · up to 7ecb9

No actionable merge-blocking issue is established by the available evidence. The API response contract remains unverified, but that uncertainty alone does not prevent merging.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 7ecb9

The inspected flows retain existing credential handling and safe-link controls. No introduced security regression was established, but server-side response and access rules, and parts of the before-and-after comparison, remain unverified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The inspected exposure is action and pipeline metadata rendered across the frontend views, with navigation to external actions and internal reports. Maximum independently accessible asset or tenant scope cannot be determined without backend authorization and response-filtering evidence.

Trust Boundaries and Controls

  • observed — Returned action URLs pass through a parser that permits only HTTP and HTTPS. Other schemes remain non-navigable text. External links use noopener and noreferrer, and returned titles and metadata use Vue text interpolation rather than raw HTML rendering.

Resilience and Maintainability Implications

  • observed — Unmount stops live-refresh subscriptions and the SCM debounce timer, but does not cancel already issued requests. Late list success can still update the shared freshness timestamp. The inspected state transitions do not make credential or authorization decisions from that timestamp or the label-option cache.
🚥 Pre-merge checks | ✅ 3 | ❌ 1 | ❓ 1

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 53.85% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 13 functions across 6 files. (7 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title says “Various bugfixes,” which does not identify the main changes: listing pull requests once and refreshing filter labels. Replace the title with a concise description of the main change, such as “List unique pull requests and refresh filter labels.”
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 53.85% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 13 functions across 6 files. (7 skipped: 7 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@olblak olblak added the bug Something isn't working label Oct 3, 2026
@olblak
olblak merged commit eee0815 into updatecli:main Oct 3, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant