Skip to content

Added ability to see changelog from the add-on store and Updatable add-ons dialog#18816

Merged
seanbudd merged 65 commits intonvaccess:masterfrom
nvdaes:addonChangelog
Sep 25, 2025
Merged

Added ability to see changelog from the add-on store and Updatable add-ons dialog#18816
seanbudd merged 65 commits intonvaccess:masterfrom
nvdaes:addonChangelog

Conversation

@nvdaes
Copy link
Copy Markdown
Collaborator

@nvdaes nvdaes commented Aug 26, 2025

Link to issue number:

Fixes #14041

Summary of the issue:

Users may want to see changes included in the current version of add-ons, especially to decide if they want to update them, and to get an idea of new features, bug fixes and so on.

Description of user facing changes:

  • In the add-on store, a new action allows to see changes for the current version of add-ons which specify this information.
  • In the Updatable add-ons dialog, the virtual list used in other tabs of the store is presented, instead of the old small list, so that the changelog, if available, can be opened from the context menu to decide if add-ons should be updated to the available version.
    List of changes will be shown in browse mode. If changes are writen in markdown, they will be rendered in formatted HTML. The title of that message will show the add-on version name, and buttons will be available to copy the info and close the browseable message.

Description of developer facing changes:

  • Add-on models have a new changelog property.
  • The self.addonsList of the UpdatableAddonsDialog class is a subclass of the AddonVirtualList.

Description of development approach:

  • Created a new action to show the changelog, when available, similar to other actions.
  • Added changelog to add-on models.
  • In the Updatable add-ons dialog, the same list used in the store dialog is presented, so that changelog can be opened from the context menu.

Testing strategy:

  • Add list of changes to manifest.ini and json file corresponding to the urlShortener add-on. Check that changes can be shown from the context menu of the store, and that this action is not available for other add-ons.
  • Downgrade version of urlShortener to make an updatable add-on. In source/addonStore/models/addon.py, in the _createStoreCollectionFromJson function, add the following code just for testing:

	for addon in data:
		if addon["addonId"] == "urlShortener":
			addon["changelog"] = "changes"

Check that changelog can be shown just for this add-on.

Also, changelog in markdown has been created in the manifest and in the store collection, to check that markdown is properly rendered in HTML in the store and in the Updatable add-ons dialog.

	changelog = """
* A.
* b
"""
	addonCollection = _createAddonGUICollection()

	for addon in data:
		addon["changelog"] = changelog

Tests have been done with the resourceMonitor add-on to check that the context menu can be used from the Updatable add-ons dialog.

Known issues with pull request:

Sometimes, NVDA says thw word "panel" when the changelog is opened.

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Aug 26, 2025

I'm also working locally modifying files of the addon-datastore-validation repo. Also this would need to be added to the documentation (metadata) of the addon-datastore repo. I'll work on this if the direction of this PR is right.

@seanbudd
Copy link
Copy Markdown
Member

I think the most useful place to read the change log would be from the add-on update dialog. I think from the add-on store lists, it should be a button like Help or Homepage that opens a dialog, with the changelog rendered from markdown to HTML

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Aug 27, 2025

@seanbudd, I'm trying to convert markdown to HTML with the markdown.markdown function, but the manifest model doesn't support the strip method, and the conversion is not performed. I have displayed the browseable message with a button from the context menu, but seems that markdown conversion is difficult to achieve with the manifest.
Please let me know if you have any suggestions for this. I have though about creating a named temporary file to write the manifest changelog. Anyway, the changelog should be translatable, and markdown may need to have a document to be managed by translators, instead of using gettext, which is used to translate add-on summary and descriptions included in manifests.

@seanbudd
Copy link
Copy Markdown
Member

@nvdaes wouldn't calling str() on the change log entry convert it to a string that can be used in markdown converter?

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Aug 27, 2025

Sean wrote:

wouldn't calling str() on the change log entry convert it to a string that can be used in markdown converter?

Thanks! It works now.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Aug 27, 2025

Now we can see the changelog from the installed add-ons list using Actions or the context menu, and when updatable add-ons are found, from the Update add-ons dialog.
But I'm struggling with two issues:

  • I've writen a changelog in urlShortener.json, but instead of the changelog, the add-on description is displayed.
  • I would like to press enter to display the changelog without tabbing to the button, but using an event associated to keycode return, it doesn't work.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Aug 29, 2025

Descriptions were presented instead of changelogs in the updatable add-ons dialog, since I used the description key for testing. @seanbudd , when I try to use the changelog key, errors are raised since changelog is not available from data. Perhaps would be better to add changelog to addon-datastore-validation before finishing this PR?

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Aug 29, 2025

I think that we can finish this PR before working in addon-datastore-validation. Now I don't get errors.

Comment thread source/gui/addonStoreGui/controls/messageDialogs.py
Comment thread user_docs/en/changes.md Outdated
Comment thread user_docs/en/userGuide.md Outdated
Comment thread user_docs/en/userGuide.md Outdated
Comment thread source/gui/addonStoreGui/controls/messageDialogs.py
@seanbudd seanbudd marked this pull request as draft September 23, 2025 03:18
Comment thread source/gui/addonStoreGui/controls/messageDialogs.py Outdated
@seanbudd seanbudd marked this pull request as ready for review September 24, 2025 05:17
Copilot AI review requested due to automatic review settings September 24, 2025 05:17
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 changelog viewing functionality to the NVDA add-on store and updatable add-ons dialog. Users can now view changelog information for add-ons when available, helping them make informed decisions about updates and understand what features or fixes are included in new versions.

  • Added changelog property to add-on models and store data structures
  • Created a new "What's new" action in the add-on store to display changelog in browse mode with markdown support
  • Replaced the simple list in the updatable add-ons dialog with the full store virtual list to enable context menu access

Reviewed Changes

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

Show a summary per file
File Description
user_docs/en/userGuide.md Added documentation section explaining the new changelog feature
user_docs/en/changes.md Added changelog entry and updated developer documentation about markdown support
source/gui/addonStoreGui/viewModels/store.py Added new "What's new" action with markdown rendering and UI display logic
source/gui/addonStoreGui/controls/messageDialogs.py Replaced simple list with full virtual list in updatable add-ons dialog
source/addonStore/models/addon.py Added changelog property to add-on model classes
projectDocs/dev/developerGuide/developerGuide.md Updated developer documentation to mention markdown formatting support

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread source/gui/addonStoreGui/controls/messageDialogs.py
Comment thread source/gui/addonStoreGui/controls/messageDialogs.py
Comment thread source/addonStore/models/addon.py
Comment thread source/addonStore/models/addon.py
Comment thread source/addonStore/models/addon.py
Comment thread source/gui/addonStoreGui/controls/messageDialogs.py
Comment thread source/gui/addonStoreGui/controls/messageDialogs.py
@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Sep 24, 2025

@seanbudd , thanks for fixing the size of the new add-ons list. I think that all is done here.
About adding changelog to the json schema for the store, let me know if I should create a PR in the addon-store-validation repo, or if you plan to do it yourself, for example when other work is merged.

Comment thread user_docs/en/changes.md Outdated
Copy link
Copy Markdown
Member

@Qchristensen Qchristensen left a comment

Choose a reason for hiding this comment

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

This will be helpful, thank you.

@seanbudd seanbudd enabled auto-merge (squash) September 24, 2025 23:38
@seanbudd
Copy link
Copy Markdown
Member

@nvdaes - yes please update the schema in the validation repo when you can

@seanbudd seanbudd merged commit 236626c into nvaccess:master Sep 25, 2025
74 of 77 checks passed
@github-actions github-actions Bot added this to the 2026.1 milestone Sep 25, 2025
seanbudd added a commit that referenced this pull request Sep 25, 2025
Fixes #18991
Fixes a bad merge conflict fix between #18816 and #18974
Summary of the issue:

add-on store cannot open
Description of user facing changes:

add-on store can open again
Description of developer facing changes:

none
Description of development approach:

fix merge conflict
Testing strategy:

add-on store can open again
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Changelog on addons updates

7 participants