Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jsonrainbow/json-schema
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 6.8.2
Choose a base ref
...
head repository: jsonrainbow/json-schema
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 6.9.0
Choose a head ref
  • 10 commits
  • 13 files changed
  • 6 contributors

Commits on May 27, 2026

  1. fix: allow "#", "?", and "?#" as valid URI references per RFC 3986 (#910

    )
    
    ## Summary
    
    - Removes two incorrect checks in `RelativeReferenceValidator` that
    rejected `#`, `?`, and `?#` as invalid relative references
    - Moves these values to the valid test data provider and adds additional
    valid cases (`#section`, `?query#fragment`)
    
    Per [RFC 3986 Section
    4.2](https://www.rfc-editor.org/rfc/rfc3986#section-4.2), these are
    valid relative-references composed of `path-empty` + fragment and/or
    query. The grammar allows zero-length paths, queries, and fragments.
    
    This is a real-world issue: Drupal's
    [Canvas](https://drupal.org/project/canvas) component builder and
    [Byte](https://drupal.org/project/byte) theme use `format:
    uri-reference` for link props in SDC (Single Directory Components), and
    `href="#"` is common in HTML.
    
    Fixes #909
    
    ---------
    
    Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
    Co-authored-by: Danny van der Sluijs <danny.vandersluijs@icloud.com>
    Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
    4 people authored May 27, 2026
    Configuration menu
    Copy the full SHA
    e444d9d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    00de879 View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2026

  1. feat: add bin/run-test-case to run a single test suite case by descri…

    …ption (#914)
    
    ## Description
    
    Adds a CLI tool that runs one test case from the official JSON Schema
    Test Suite by filename and human-readable description, making it faster
    to debug spec compliance without running the full 6928-test suite.
    
    ## Related Issue
    
    N/A
    
    ## Type of Change
    
    - [ ] Bug fix (non-breaking change which fixes an issue)
    - [X] New feature (non-breaking change which adds functionality)
    - [ ] Breaking change (fix or feature that would cause existing
    functionality to not work as expected)
    - [ ] Documentation update
    - [ ] Code refactoring
    - [ ] Other (please describe):
    
    ## Checklist
    
    <!-- Mark completed items with an "x" -->
    
    - [X] I have read the [CONTRIBUTING](CONTRIBUTING.md) guidelines
    - [X] My code follows the code style of this project
    - [ ] I have added tests that prove my fix is effective or that my
    feature works
    - [ ] All new and existing tests pass
    - [ ] I have updated the documentation accordingly
    - [ ] My changes generate no new warnings
    
    ## Additional Notes
    
    <!-- Add any additional information that might be helpful for reviewers
    -->
    
    Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
    DannyvdSluijs and claude authored Jun 3, 2026
    Configuration menu
    Copy the full SHA
    3cf163a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    fa5cd81 View commit details
    Browse the repository at this point in the history
  3. fix: annotate resolved schemas with dialect-aware id keyword (#912)

    ## Summary
    
    - `UriRetriever::retrieve()` now reads the root schema's `$schema`
    keyword to determine whether to annotate with `id` (Draft-3/4) or `$id`
    (Draft-6+)
    - Schemas without a `$schema` keyword default to `$id`, matching the
    library's Draft-6 default dialect
    - Updated `testRetrieveSchemaFromPackage` to assert structure instead of
    a brittle md5 hash
    
    ## Context
    
    `UriRetriever::retrieve()` unconditionally stamped `$jsonSchema->id =
    $resolvedUri` on every resolved schema. Draft-6 [renamed `id` to
    `$id`](https://json-schema.org/draft-06/json-schema-release-notes#backwards-incompatible-changes),
    but the annotation was never updated. This leaks a Draft-4 keyword into
    schemas resolved under Draft-6/7, causing errors in strict validators
    (e.g. Ajv: `NOT SUPPORTED: keyword "id", use "$id" for schema ID`).
    
    The dialect is detected from the root schema *before* pointer
    resolution, so sub-schemas inherit the correct keyword from their parent
    document.
    
    Internally safe — `SchemaStorage::findSchemaIdInObject()` already reads
    both `id` and `$id`.
    
    ## Test plan
    
    - [x] Full test suite passes (6928 tests, 0 failures)
    - [x] Verified Draft-04 meta-schema → `id`, Draft-07 → `$id`, no
    `$schema` → `$id`
    
    Fixes #911
    
    ---------
    
    Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
    penyaskito and claude authored Jun 3, 2026
    Configuration menu
    Copy the full SHA
    a10f275 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f45aaa1 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    4499dfa View commit details
    Browse the repository at this point in the history

Commits on Jun 5, 2026

  1. fix: treat optional JSON Schema test suite cases as real tests (#913) (

    …#915)
    
    * fix: treat optional JSON Schema test suite cases as real tests (#913)
    
    Previously, any optional test that threw an exception or produced the
    wrong validation result was silently skipped via markTestSkipped, making
    regressions in optional test coverage invisible in CI.
    
    Remove the two dynamic markTestSkipped blocks so optional tests are
    treated identically to required tests. The 76 currently-failing optional
    tests are added explicitly to the $skip allowlist with comments
    explaining why each group is not yet supported (bignum, float-overflow,
    ecmascript-regex, cross-draft, idn-email, idn-hostname, iri,
    iri-reference, regex format, relative-json-pointer).
    
    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
    
    * fix: Correct for +00:00 and zulu inputs
    
    * refactor: Allow run-test-case without tes, running all test from group
    
    * test: Skip more optional failling tests
    
    * fix: Correct for zulu when used with PHP > 8.0
    
    ---------
    
    Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
    DannyvdSluijs and claude authored Jun 5, 2026
    Configuration menu
    Copy the full SHA
    eeef76b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    91eb113 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    bd1bda2 View commit details
    Browse the repository at this point in the history
Loading