From 1712c7a12b45cda782dd528cf1c641d8d03d3210 Mon Sep 17 00:00:00 2001 From: Thomas Degueule Date: Tue, 15 Sep 2026 23:54:16 +0200 Subject: [PATCH 1/3] Add API Compatibility category (japicmp, Revapi, Roseau) --- README_SOURCE.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README_SOURCE.md b/README_SOURCE.md index 12ab52b4..c94071af 100644 --- a/README_SOURCE.md +++ b/README_SOURCE.md @@ -11,6 +11,14 @@ Use absolute HTTPS canonical links and submit one project or resource per pull r ## Projects +### API Compatibility + +_Tools for tracking API evolution and detecting breaking changes between library versions._ + +* [japicmp](https://github.com/siom79/japicmp) - Compares two library JARs and reports source- and binary-incompatible changes. +* [Revapi](https://github.com/revapi/revapi) - Extensible API analysis and change tracking with configurable source, binary and semantic compatibility checks. +* [Roseau](https://github.com/alien-tools/roseau) - Detects source- and binary-breaking changes by comparing library versions from JAR files or source code. + ### Architecture _Frameworks and libraries that help implementing and verifying design and architecture concepts._ From 482f9eea27172cd372ac3829bf0bf03a36dbd95a Mon Sep 17 00:00:00 2001 From: Thomas Degueule Date: Wed, 16 Sep 2026 00:16:55 +0200 Subject: [PATCH 2/3] fix: itemize with '-', not '*' --- README_SOURCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README_SOURCE.md b/README_SOURCE.md index c94071af..40c27eff 100644 --- a/README_SOURCE.md +++ b/README_SOURCE.md @@ -15,9 +15,9 @@ Use absolute HTTPS canonical links and submit one project or resource per pull r _Tools for tracking API evolution and detecting breaking changes between library versions._ -* [japicmp](https://github.com/siom79/japicmp) - Compares two library JARs and reports source- and binary-incompatible changes. -* [Revapi](https://github.com/revapi/revapi) - Extensible API analysis and change tracking with configurable source, binary and semantic compatibility checks. -* [Roseau](https://github.com/alien-tools/roseau) - Detects source- and binary-breaking changes by comparing library versions from JAR files or source code. +- [japicmp](https://github.com/siom79/japicmp) - Compares two library JARs and reports source- and binary-incompatible changes. +- [Revapi](https://github.com/revapi/revapi) - Extensible API analysis and change tracking with configurable source, binary and semantic compatibility checks. +- [Roseau](https://github.com/alien-tools/roseau) - Detects source- and binary-breaking changes by comparing library versions from JAR files or source code. ### Architecture From d4d515ca115cc367fd8465d7ca38020043207470 Mon Sep 17 00:00:00 2001 From: Andreas Kull Date: Sat, 19 Sep 2026 11:32:36 +0400 Subject: [PATCH 3/3] feat: generate collapsible contents links --- .github/scripts/GenerateReadme.java | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/.github/scripts/GenerateReadme.java b/.github/scripts/GenerateReadme.java index 2eb76ae3..0eb740e7 100644 --- a/.github/scripts/GenerateReadme.java +++ b/.github/scripts/GenerateReadme.java @@ -532,6 +532,19 @@ private static String render(Catalog source, StatsCache cache, LocalDate today, .append("License chips use GitHub SPDX metadata when available.\n\n") .append("Entries spanning several repositories combine their stars, use the most recent push for activity ") .append("and show a license only when all repositories agree.\n\n") + .append("
\n") + .append("Contents\n\n") + .append("Projects\n\n"); + + source.categories().stream() + .sorted(Comparator.comparing(category -> category.name, TEXT_ORDER)) + .forEach(category -> out.append("- [").append(category.name).append("](#") + .append(slug(category.name)).append(")\n")); + + out.append("\nResources\n\n"); + source.resources().forEach(resource -> out.append("- [").append(resource.name).append("](#") + .append(slug(resource.name)).append(")\n")); + out.append("\n
\n\n") .append("## Projects\n\n"); source.categories().stream() @@ -947,7 +960,7 @@ private static void selfTest() throws Exception { "license":{"spdx_id":"NOASSERTION"}} """); require(unknownLicense.license() == null, 0, "Unknown API license parsing"); - var category = new Category("Test"); + var category = new Category("API Compatibility"); category.description = "Test projects."; category.items.add(umbrella); var catalog = new Catalog("# Test", "Test.", List.of(category), List.of()); @@ -963,6 +976,14 @@ private static void selfTest() throws Exception { today, "test" ); + require( + rendered.contains("- [API Compatibility](#api-compatibility)") + && rendered.contains("
") + && rendered.contains("- [Links](#links)") + && rendered.contains("
"), + 0, + "Contents links" + ); require(rendered.contains("Suggest a project or resource"), 0, "Contribution CTA"); require(rendered.contains("CC BY-SA 4.0") && rendered.contains("[MIT](LICENSE-CODE)"), 0, "License footer");