Joinup 2.10.0 Switch to the latest release
Published on: 13/03/2026
New features
- ISAICP-10351: Validation of publiccode.yml:
- ISAICP-10304: [analysis] Validation of publiccode.yml
- ISAICP-10318: Add publiccode-parser-php service
- ISAICP-10319: Add Validation Form (optional)
- ISAICP-10320: Add Validation Status Tracking
- ISAICP-10321: Queue-Based Validation for Existing Solutions
- ISAICP-10325: An issue occurred during creating the translation job
- ISAICP-10326: Create 'OSS validator' role
- ISAICP-10330: Integrate Validation into OSS Sync Process
- ISAICP-10331: Update README.md
- ISAICP-10393: Add modal displaying oss_validation_errors details
- ISAICP-10439: Improve display of publiccode
- ISAICP-10448: Merge OSS validation status and modal link of publiccode.yml errors
- ISAICP-10473: OSS solutions without publiccode.yml
- ISAICP-10474: Review validation errors
- ISAICP-10496: Update publiccode-parser-php
- ISAICP-10522: Reintroduce logos and screenshots for publiccode tests
- ISAICP-10645: publiccode.yml Validation Alternatives
- ISAICP-10646: Update EPIC-10351 with the latest code
- ISAICP-10889: https://github.com/italia/publiccode-validator-api
- ISAICP-10938: Integrate external publiccode.yml validation API into PublicCodeValidator
- ISAICP-10946: Update endpoint URL
- ISAICP-10950: Drop publiccode_yml.schema.yml
- ISAICP-10952: external-checks param
- ISAICP-10953: Validation errors
- ISAICP-10957: Remove workarounds handling invalid publiccode.yml
- ISAICP-11005: Merge latest code
Improvements
- ISAICP-10596: Re-order the entries under the Solution Classification filter
- ISAICP-10816: Update API (post) request examples
- ISAICP-10818: Extend usage of rabbit_hole
- ISAICP-10828: Switch to a stable version of drupal/flag
- ISAICP-10877: Countries list enhancement in concerned public services of a Binding requirement
- ISAICP-10905: Allow simple users to delete their own assessment reports
- ISAICP-10936: Add European Union as a country option for Solution owners contact details
- ISAICP-10944: Multiple solutions with the same name
- ISAICP-10999: Update the label for the German catalogue
- ISAICP-10977: Increase the upload file size for Solution distribution to 64MB
- ISAICP-10976: Delete assets of deleted reports
- ISAICP-10966: Select an interoperability solution option should not show archived solutions - API
- ISAICP-10951: Select an interoperabilty solution option should not show archived solutions
Bug fixes
- ISAICP-10833: 'Apply' button position
- ISAICP-10835: Handle another type of exceptions in API
- ISAICP-10838: EIF Perspective page
- ISAICP-10852: Assessments sent from API do not appear in advanced search
- ISAICP-10876: Assessment report needs correction
- ISAICP-10885: Subscribers report
- ISAICP-10886: Error: Call a member function isNew() on null
- ISAICP-10969: QA and adopt https://www.drupal.org/i/3576074
- ISAICP-10964: The Explore section is polluted by migrated solutions
- ISAICP-10956: Handle exception for oauth/token
- ISAICP-10939: Intermittent phpunit failures from AssessmentReportResourceTest::testValidPostDataAndStatus
Security, technical debt
- ISAICP-10716: Theme Negotiation by Rules - Moderately critical - Cross-site request forgery - SA-CONTRIB-2026-012
- ISAICP-10743: PHPUnit assertions inside Behat are not allowed
- ISAICP-10745: PHPUnit supports attributes
- ISAICP-10797: Refactor JoinupOssCatalogueImagecacheWarmerTest
- ISAICP-10843: Finish tests in https://www.drupal.org/i/3303889
- ISAICP-10943: Delete or update collection_content view
- ISAICP-10947: Unnecessary hook implementations
- ISAICP-11014: Replace references of old URLs from Gitlab