Changelog

All notable changes to iiisight are documented here. The format follows Keep a Changelog, and the project aims to follow Semantic Versioning. The version is derived from the git tag by setuptools-scm; there is no hand-maintained version string.

Unreleased

0.4 - 2026-07-06

Added

  • Change Discovery (client.fetch_changes / client.iter_activities, iiisight changes) — consume a repository’s Activity Streams OrderedCollection to discover changed resources. iter_activities walks the pages (newest-first by default, or oldest-first) and supports incremental harvesting via since; each Activity.reference plugs into client.resolve. Exposes Activity, ActivityPage, and ChangeCollection.

0.3 - 2026-07-06

Added

  • Image API conformance probe (client.check_compliance, iiisight probe) — loads info.json, issues the requests appropriate to the claimed compliance level, and verifies the returned image’s pixel dimensions (read from the JPEG/PNG/GIF header — no image-decoding dependency). Returns a ConformanceReport; the probe CLI command exits non-zero on non-conformance.

  • iiisight.image_size(data) — read (width, height) from image bytes without decoding.

  • Descriptive properties are now parsed onto every resource: provider (Agent), thumbnail (ContentResource), homepage/rendering/seeAlso (Link), partOf (Reference), and requiredStatement (MetadataEntry).

  • .raw on every normalized resource — the source JSON it was built from, preserved for consumers that need the document verbatim.

Fixed

  • The JPEG header size reader missed an SOF marker ending exactly at the end of the buffer (off-by-one loop bound).

0.2 - 2026-07-06

Added

  • Command-line interface — installing the package now registers the iiisight command (stdlib-only, no extra needed) with lint, info, and tiles subcommands. Each accepts a manifest/collection URL or a local JSON file; lint exits non-zero on errors (--strict also on warnings); lint/info support --json.

0.1 - 2026-07-05

First public release. iiisight is a tolerant, async (and sync) Python client for consuming IIIF. This is a pre-1.0 line — the public API may still change before 1.0.

Added

  • Tolerant normalization of IIIF Presentation documents into a typed, frozen model (normalize), with structured Diagnostics for every repair — it never raises on spec-imperfect input.

  • Presentation v2 → v3 upgrade run before parsing, so v2 and v3 documents normalize to one model.

  • Async and sync fetch clients (AsyncClient / Client) over httpx, with fetch / fetch_manifest / fetch_collection / resolve / expand, plus module-level convenience functions.

  • Image API tile-aware retrieval: parse_info (info.json → ImageService), and ImageService.url / thumbnail_url / tile_grid / tile_pyramid, with the v2/v3 full-vs-max size handling. client.load_info / fetch_region.

  • Content Search (client.search, find_search_service) returning hit annotations.

  • Content State decode/encode (iiisight.content_state).

  • Authorization Flow 2.0 metadata + non-interactive probe/token exchange (iiisight.auth, client.probe, client.access_token).

  • Consumer lint over normalization diagnostics (iiisight.lint).

  • Generic Service model (with preserved raw JSON) parsed from resource-level service blocks.