This feature proposal consists of two parts:1. Ability to view changelog
(only available if component supports it)Usage: Preferences
>Right-Click on Component
>View changelogPossible implementations:
1. A new SDK API, which allows to register the callback void GetComponentChangelog(const pfc::string8& description, const pfc::string8& urlToFullDescription)
. This callback will be called on View changelog
and will display a popup with description and an url to the full description. The url to full description might be needed if the changelog is too big or if there is a need for a non-trivial formatting of text (like urls, lists, collapsibles and etc).
2. Add an ability to upload through internal components page
either formatted changelog (e.g. BBCode formatted) or a short unformatted changelog with the optional url to the full description. View changelog
will then open the page with this changelog.Reasoning:
Currently there is no way for a user to know of new features or breaking changes introduced in the component update other than finding the component through https://www.foobar2000.org/components, clicking on Homepage
and then trying to figure out where the changelog is.
This feature will allow users to view changelog straight from fb2k while skipping all those steps.2. Display changelog before updating component + option to abort update
(only available if component supports it)Description:
0.1. Works best with Implementation 2.
from the above proposal.
0.2. An option to disable the new behaviour and suppress changelog popups?
iterates through all components and checks if update available.
2. If update is available, check for the changelog availability.
3.1. If changelog is not available, continue updating like usual.
3.2. If changelog is available, display a popup with changelog and buttons Continue updating
3.2.1. If Continue updating
is clicked continue updating like usual, otherwise stop the component update and keep the previous version.Reasoning:
Sometimes new versions of component might introduce breaking changes, which will break the user's current setup (e.g. API change or database format change) or might require additional actions on user side after an update (which user might not want to do or might not have time to do). In the current fb2k component update scenario, the only way for user to know of such changes is to search for the component changelog, but even then Get Updates
will update all the components even if the user does want to skip a specific one, thus requiring user to find, download and install the previous version of the said component.
This feature will help users to make an informed choice when updating components and will allow them to maintain the current fb2k setup even if some component update contains some breaking changes.