Skip to content

Comments

feat(changelog): update changelog ui#4733

Open
Jahnavi314 wants to merge 3 commits intowebex:nextfrom
Jahnavi314:changelog-ui
Open

feat(changelog): update changelog ui#4733
Jahnavi314 wants to merge 3 commits intowebex:nextfrom
Jahnavi314:changelog-ui

Conversation

@Jahnavi314
Copy link

@Jahnavi314 Jahnavi314 commented Feb 22, 2026

COMPLETES https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-747985

This pull request addresses

The need for a clear and user-friendly changelog comparison interface that allows users to compare different SDK versions and view package-level changes and commit history. The existing implementation required UI improvements to better visualize version comparisons and related changelog data.

by making the following changes

  • Added a main comparison interface for selecting two SDK versions
  • Implemented side-by-side package comparison UI
  • Displayed changed package list with version details
  • Displayed commit history related to selected versions
  • Integrated UI with existing JSON-based changelog data structure

Change Type

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Tooling change
  • Internal code refactor

The following scenarios were tested

https://app.vidcast.io/share/ab8925cf-de62-4437-a686-4200b6f748a3

The GAI Coding Policy And Copyright Annotation Best Practices

  • GAI was not used (or, no additional notation is required)

  • Code was generated entirely by GAI

  • GAI was used to create a draft that was subsequently customized or modified

  • Coder created a draft manually that was non-substantively modified by GAI

  • Tool used for AI assistance (GitHub Copilot / Other - specify)

  • Github Copilot

  • Other - ChatGPT

  • This PR is related to

    • Feature
    • Defect fix
    • Tech Debt
    • Automation

I certified that

  • I have read and followed contributing guidelines
  • I discussed changes with code owners prior to submitting this pull request
  • I have not skipped any automated checks
  • All existing and new tests passed
  • I have updated the documentation accordingly

@Jahnavi314 Jahnavi314 requested a review from a team as a code owner February 22, 2026 16:33
@Shreyas281299 Shreyas281299 added the validated If the pull request is validated for automation. label Feb 23, 2026
@rarajes2 rarajes2 changed the title feat: update changelog UI feat(changelog): update changelog ui Feb 23, 2026
Copy link
Contributor

@rarajes2 rarajes2 left a comment

Choose a reason for hiding this comment

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

Please update the vidcast showing the working of Single Version View as well after addressing the comments. Confirm with Shreyas and Kesava if we need to call it "Single Version View"

Comment on lines 116 to 123
select {
-webkit-appearance: none;
appearance: none;
padding-right: 2.5em;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23555' d='M6 8L2 4h8z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.5em center;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Let's avoid adding common styles to all the select elements

Comment on lines 184 to 195
.select-with-clear {
display: flex;
gap: 8px;
align-items: center;
}
.select-with-clear .full-width {
flex: 1;
min-width: 0;
}
.select-with-clear .btn-clear-select {
flex-shrink: 0;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

nitpick: Leave a newline between classes. Applicable everywhere in this file

Comment on lines 1081 to 1092
const getAllPackagesFromChangelogs = (changelogs) => {
const allPackages = new Set();
(changelogs || []).forEach(changelog => {
if (changelog && typeof changelog === 'object') {
Object.keys(changelog).forEach(pkg => allPackages.add(pkg));
}
});
const specialPackages = ['webex', '@webex/calling'];
const filtered = [...allPackages].filter(pkg => !specialPackages.includes(pkg));
filtered.sort();
return [...specialPackages.filter(pkg => allPackages.has(pkg)), ...filtered];
};
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do we need to create this method? Methods for business logic should have been there

/**
* Populate package dropdown with full list (used when we already have the package array)
*/
const populateComparisonPackageDropdown = (allPackages) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

same here

/**
* Load initial package list for comparison mode: fetch ALL versions and show union of ALL packages from the start
*/
const populateComparisonPackagesInitial = async () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

same here


/**
* Check and update comparison button state based on form selections
* Package is required; Base and Target versions are required after package is selected.
Copy link
Contributor

Choose a reason for hiding this comment

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

Please fix the comments. Applicable everywhere

Comment on lines 1695 to 1706
if (!selectedPackage) {
compareButton.disabled = true;
return;
}
if (!stableA || !stableB) {
compareButton.disabled = true;
return;
}
if (stableA === stableB) {
compareButton.disabled = true;
return;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we combine them ?

Comment on lines 1816 to 1823
if (versionASelect) {
versionASelect.disabled = true;
versionASelect.value = '';
}
if (versionBSelect) {
versionBSelect.disabled = true;
versionBSelect.value = '';
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Looks repetitive

*/
const validateComparisonInputs = (stableA, stableB, selectedPackage, versionASpecific, versionBSpecific) => {
if (!selectedPackage) {
alert('Please select a package');
Copy link
Contributor

Choose a reason for hiding this comment

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

Add a full stop at the end of sentence. Please take care of all the user facing messages

<select id="comparison-package-select" class="full-width" required>
<option value="">Select a package (required)</option>
</select>
<span class="help-text" style="font-weight: normal; font-size: 12px; color: #666;">Choose a package first; then Base and Target versions will be enabled.</span>
Copy link
Contributor

Choose a reason for hiding this comment

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

Let's avoid inline styles. Applicable everywhere

@rarajes2
Copy link
Contributor

@codex review

@chatgpt-codex-connector
Copy link

To use Codex here, create a Codex account and connect to github.

@rarajes2
Copy link
Contributor

@codex review

@chatgpt-codex-connector
Copy link

To use Codex here, create a Codex account and connect to github.

@Jahnavi314
Copy link
Author

@codex review

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3a8b5394ee

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1987 to 1989
if (versionAPrereleaseSelect) versionAPrereleaseSelect.value = enhancedParams.versionA;
if (versionBPrereleaseSelect) versionBPrereleaseSelect.value = enhancedParams.versionB;
handlePackageChange();

Choose a reason for hiding this comment

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

P2 Badge Apply package change before restoring prerelease URL values

When loading an enhanced comparison permalink, this code sets versionAPrereleaseSelect/versionBPrereleaseSelect and then calls handlePackageChange(), but handlePackageChange() immediately clears both prerelease selects. That means the form no longer reflects the versions encoded in the URL, and a user re-submitting can compare different (defaulted) versions than the shared link intended.

Useful? React with 👍 / 👎.

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

Labels

validated If the pull request is validated for automation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants