Skip to content

Implemented include releases functionality with query parameter handling - #678

Open
stijnpotters1 wants to merge 18 commits into
masterfrom
feat/include-specific-releases
Open

Implemented include releases functionality with query parameter handling#678
stijnpotters1 wants to merge 18 commits into
masterfrom
feat/include-specific-releases

Conversation

@stijnpotters1

@stijnpotters1 stijnpotters1 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Options to include specific releases or the whole batch
image

When included all releases for example:
image

@stijnpotters1 stijnpotters1 self-assigned this Jul 30, 2026
@stijnpotters1 stijnpotters1 linked an issue Jul 30, 2026 that may be closed by this pull request
@stijnpotters1
stijnpotters1 marked this pull request as ready for review August 3, 2026 12:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds “included releases” filtering to the release graph by introducing a ?range= query parameter (Maven version-range syntax), persisting it through OAuth redirects, and exposing UI affordances to widen the active range from the “skipped versions” modal.

Changes:

  • Introduces release-range parsing/serialization + range operations and integrates them into graph filtering.
  • Adds range state handling in GraphStateService/AppComponent/ReleaseGraphComponent (URL sync, defaults, reset).
  • Extends the skipped-versions modal with “include” actions (include whole skipped lines or selected pending versions) and a new pill-button icon.

Reviewed changes

Copilot reviewed 26 out of 27 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/main/frontend/src/app/services/graph-state.service.ts Stores release-range state and includes range in graph query params + OAuth temp storage.
src/main/frontend/src/app/services/graph-state.service.spec.ts Tests for range query param + OAuth temp storage behavior.
src/main/frontend/src/app/pipes/release-range.ts New version-range parsing/serialization + range operations (merge, coverage, membership).
src/main/frontend/src/app/pipes/release-range.spec.ts Unit tests for parsing, serialization, and range operations.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/release-skipped-versions.ts Adds include/pending logic and emits requested ranges to widen the graph range.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/release-skipped-versions.spec.ts Tests include/pending behaviors and “already included” logic.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/release-skipped-versions.scss Adds styling for include-related UI (but currently duplicates/unused styling).
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/release-skipped-versions.html Renders include buttons per version and include-actions footer.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/include-version-button/include-version-button.component.ts New include button component (included/pending states, click behavior).
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/include-version-button/include-version-button.component.scss Styles for include version button.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/include-version-button/include-version-button.component.html Markup for include version button.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/include-actions/include-actions.component.ts New include-actions footer component for include-all + apply-pending.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/include-actions/include-actions.component.scss Styles for include-actions footer.
src/main/frontend/src/app/pages/release-graph/release-skipped-versions/include-actions/include-actions.component.html Markup for include-actions footer + range hint text.
src/main/frontend/src/app/pages/release-graph/release-node.service.ts Applies range visibility to branches and master trimming; computes default ranges.
src/main/frontend/src/app/pages/release-graph/release-node.service.spec.ts Adds/updates tests for range filtering and default range computation.
src/main/frontend/src/app/pages/release-graph/release-graph.component.ts Reads/writes range query param, applies default ranges, range error UI, and range reset.
src/main/frontend/src/app/pages/release-graph/release-graph.component.spec.ts Tests URL/default range behavior, rebuild triggers, errors, and reset flow.
src/main/frontend/src/app/pages/release-graph/release-graph.component.scss Styles for range error UI and reset button.
src/main/frontend/src/app/pages/release-graph/release-graph.component.html Adds range error panel and “Default range” pill button; wires range inputs/outputs.
src/main/frontend/src/app/pages/header/header.component.ts Persists range to OAuth temp storage before redirect.
src/main/frontend/src/app/pages/header/header.component.spec.ts Updates header tests for new GraphStateService calls.
src/main/frontend/src/app/components/pill-button/pill-button.component.ts Adds a new list icon type.
src/main/frontend/src/app/components/pill-button/pill-button.component.scss Adds CSS for the new list icon.
src/main/frontend/src/app/components/pill-button/icons/list.svg New list icon SVG asset.
src/main/frontend/src/app/app.component.ts Restores range state after OAuth and syncs range from URL on graph routes.
src/main/frontend/cypress/e2e/release-details.cy.ts Updates E2E assertions to tolerate query params on /graph.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/frontend/src/app/pipes/release-range.ts Outdated
stijnpotters1 and others added 3 commits August 3, 2026 15:34
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@stijnpotters1
stijnpotters1 requested a review from Matthbo August 3, 2026 17:45
Comment thread src/main/frontend/src/app/pages/release-graph/release-graph.component.ts Outdated
@sonarqubecloud

sonarqubecloud Bot commented Aug 4, 2026

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 28 out of 29 changed files in this pull request and generated no new comments.

Suppressed comments (1)

src/main/frontend/src/app/pipes/release-range.ts:230

  • parseBoundary only rejects boundaries where toBoundaryKey(...) returns a negative key. For an exclusive lower bound at the maximum allowed version (e.g. (99999,) with MAX_SEGMENT = 99_999), upperKeyOfToken(version) + 1 overflows into a bound that exceeds MAX_SEGMENT, effectively creating a range that can include out-of-range versions instead of being treated as empty/invalid.

Consider also rejecting keys that exceed the maximum representable key derived from MAX_SEGMENT so exclusive bounds at the top end correctly fail as “no version at all”.

  const key = toBoundaryKey(version, isInclusive, side);
  if (key < 0) return failure(entry, 'it holds no version at all');

  return { bound: toBound(key) };

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add include release window

3 participants