ecosyste-ms / roadmap

Planning and roadmap for future Ecosyste.ms development
GNU Affero General Public License v3.0
9 stars 1 forks source link

Support for release notes and changelogs per version #14

Open andrew opened 8 months ago

andrew commented 8 months ago

For a given version of a package, I'd like to be able to display the relevant section of the changelog or release notes.

There's a few moving parts here:

Upvote & Fund

Fund with Polar

andrew commented 8 months ago

Forked and updated changelog parser library here: https://github.com/ecosyste-ms/vandamme

andrew commented 8 months ago

Deployed the changelog parser to the archives service, example: https://archives.ecosyste.ms/api/v1/archives/changelog?url=https://github.com/splitrb/split/archive/refs/heads/main.zip

Looks like it's working well:

{
  "name": "CHANGELOG.md",
  "raw": "# 4.0.2 (December 2nd, 2022)\n\nBugfixes:\n- Stop crashing on non-hash json (@knarewski, #697)\n- Handle when Rails is partially loaded as a Gem (@TSMMark, #687)\n...",
  ...
  "parsed": {
    "4.0.2": " (December 2nd, 2022)\n\nBugfixes:\n- Stop crashing on non-hash json (@knarewski, #697)\n- Handle when Rails is partially loaded as a Gem (@TSMMark, #687)\n\nFeatures:\n- Add support for redis-client, which does not automatically cast types to strings (@knarewski, #696)\n- Add ability to initialize experiments (@robin-phung, #673)\n\nMisc:\n- Fix default branch name and gem metadata indentation (@ursm, #693)\n- Update actions/checkout to v3 (@andrehjr, #683)\n- Enforce double quotes (@andrehjr, #682)\n- Fix Rubocop Style/* Offenses (@andrehjr, #681)\n- Enable rubocop on Github Actions (@andrehjr, #680)\n- Fix all Layout issues on the project (@andrehjr, #679)\n- Fix Style/HashSyntax offenses (@andrehjr, #678)\n- Remove usage of deprecated implicit block expectation from specs (@andrehjr, #677)\n- Remove appraisals configuration (@andrehjr, #676)\n- Add Ruby 3.1 (@andrehjr, #675)\n- Encapsulate Split::Algorithms at our own module to avoid explicit calling rubystats everywhere (@andrehjr, #674)",
    "1.2.0": " (January 24th, 2015)\n\nFeatures:\n\n  - Configure redis using environment variables if available (@saratovsource , #293)\n  - Store metadata on experiment configuration (@dekz, #291)\n\nBugfixes:\n\n - Revert the Trial#complete! public API to support noargs (@dekz, #292)",
    "1.1.0": " (January 9th, 2015)\n\nChanges:\n\n  - Public class methods on `Split::Experiment` (e.g., `find_or_create`)\n    have been moved to `Split::ExperimentCatalog`.\n\nFeatures:\n\n  - Decouple trial from Split::Helper (@joshdover, #286)\n  - Helper method for Active Experiments (@blahblahblah-, #273)\n\nMisc:\n\n  - Use the new travis container based infrastructure for tests (@andrew, #280)",
    "1.0.0": " (October 12th, 2014)\n\nChanges:\n\n  - Remove support for Ruby 1.8.7 and Rails 2.3 (@qpowell, #271)",
    "0.8.0": " (September 25th, 2014)\n\nFeatures:\n\n  - Added new way to calculate the probability an alternative is the winner (@caser, #266, #251)\n  - support multiple metrics per experiment (@stevenou, #260)\n\nBugfixes:\n\n  - Avoiding call to params in EncapsulatedHelper (@afn, #257)",
    "0.7.3": " (September 16th, 2014)\n\nFeatures:\n\n  - Disable all split tests via a URL parameter (@hwartig, #263)\n\nBugfixes:\n\n  - Correctly escape experiment names on dashboard (@ecaron, #265)\n  - Handle redis connection exception error properly (@andrew, #245)",
    "0.7.2": " (June 12th, 2014)\n\nFeatures:\n\n  -  Show metrics on the dashboard (@swrobel, #241)\n\nBugfixes:\n\n  - Avoid nil error with ExperimentCatalog when upgrading (@danielschwartz, #253)\n  - [SECURITY ISSUE] Only allow known alternatives as query param overrides (@ankane, #255)",
    "0.7.1": " (March 20th, 2014)\n\nFeatures:\n\n  - You can now reopen experiment from the 
    "0.1.1": " (May 18, 2011)\n\nBugfixes:\n\n  - More Robust conversion rate display on dashboard\n  - Ensure `Split::Version` is available everywhere, fixed dashboard",
    "0.1.0": " (May 17, 2011)\n\nInitial Release"
  },
  "extension": ".md",
  "language": "Markdown"
}