Skip to content

Releases: caplaz/PatternSpaceSDK

0.5.1

17 Jun 03:09

Choose a tag to compare

Added

  • Convenience preset ID constants for sdrReferenceP3D65Gamma22 and sdrReferenceP3D65Gamma26
  • Open-string convenience constants for OutputColorPresetTransfer.proPhotoROMM and OutputColorPresetInputEncoding.proPhotoROMM

Changed

  • PatternSpaceProtocolMetadata.sdkVersion is now 0.5.1; PatternSpace JSON protocol remains 1.2

0.5.0

17 Jun 02:41

Choose a tag to compare

Added

  • display.getOutputColorPreset server route, client namespace method, delegate hook, params, and result schemas
  • OutputColorPresetSummary for lightweight discovery and OutputColorPresetConfig for full self-describing preset configuration
  • catalogRevision on both list and get preset responses, defined as an opaque host-catalog cache token
  • Open-string preset metadata wrappers for family, gamut, white point, transfer, input encoding, dynamic range, tone mapping, measurement range, and implementation status

Changed

  • PatternSpace JSON protocol version is now 1.2
  • PatternSpaceProtocolMetadata.sdkVersion is now 0.5.0
  • display.listOutputColorPresets now returns lightweight summaries only; clients should call display.getOutputColorPreset when they need full color-science configuration
  • Hosts must return full config for known presets even when the current display does not support them; unknown IDs remain outputColorPresetUnsupported

Removed

  • Legacy closed color-management mode API: ColorManagementMode, mode list/set schemas, delegate hooks, client methods, dispatcher routes, capability flag, and colorManagementModeUnsupported
  • Legacy color-management fields from DeviceStatus and DisplayEntry; use output preset fields instead

Migration

  • Replace display.listColorManagementModes and display.setColorManagementMode with the output preset catalog flow: list summaries, fetch config for a selected ID, then set the preset
  • Treat preset IDs and metadata values as open strings; SDK constants are conveniences, not a closed catalog
  • Cache full configs by (presetId, catalogRevision) when useful
  • Continue using notAuthorized (-32009) for Pro entitlement failures

0.4.1

16 Jun 03:44

Choose a tag to compare

Added

  • Flexible output color preset schemas: OutputColorPresetID, OutputColorPreset, OutputColorPresetList, SetOutputColorPresetParams, and SetOutputColorPresetResult
  • Additive DisplayEntry fields for outputColorPresetId, supportedOutputColorPresetIds, and outputColorPresetImplementationStatus
  • Additive DeviceStatus fields for selected output preset and HDR diagnostics: EDR headroom, reference white, and clip-onset values
  • display.listOutputColorPresets and display.setOutputColorPreset server routes and client display namespace methods
  • CapabilityFeatures.outputColorPresets
  • PSErrorCode.outputColorPresetUnsupported

Changed

  • PatternSpaceProtocolMetadata.sdkVersion is now 0.4.1
  • PatternSpaceServerDelegate has default unsupported implementations for output preset routes, so existing hosts can adopt 0.4.1 without immediately implementing the new API

Notes

  • Preset IDs are open strings; clients should discover presets from the server instead of hardcoding a closed enum
  • Unknown preset IDs reach outputColorPresetUnsupported instead of failing JSON parameter decoding
  • Pro entitlement failures should continue to use notAuthorized (-32009)
  • Legacy color-management fields remain optional and can be null/omitted when an HDR output preset has no ColorManagementMode equivalent

0.4.0

16 Jun 03:43

Choose a tag to compare

Added

  • PatternSpaceProtocolMetadata with protocol version 1.1 and SDK version 0.4.0
  • capabilities.list route and PatternSpaceClient.capabilities.list() for protocol, app, SDK, namespace, feature, platform, and auth discovery
  • Bonjour TXT metadata for protocolVersion and authRequired
  • Richer optional DeviceStatus metadata: selected source/display, color-management state, profile resolution, auth mode, client count, app version/build, SDK version, and protocol version
  • Color-management schemas: ColorManagementMode, ColorManagementModeEntry, ColorManagementModeList, SetColorManagementModeParams, and SetColorManagementModeResult
  • Additive DisplayEntry color-management fields, with forward-compatible decoding for unknown keys and absent mode arrays
  • display.listColorManagementModes and display.setColorManagementMode server routes and client display namespace methods
  • PSErrorCode.colorManagementModeUnsupported and .displaySelectionMismatch
  • Route-manifest coverage to keep capabilities.list namespaces aligned with dispatcher routes

Changed

  • PatternSpace JSON protocol version is now 1.1
  • PatternSpaceServerDelegate adds capabilities(), listColorManagementModes(displayId:), and setColorManagementMode(_:) host hooks — source-breaking for server delegate conformers

Notes

  • capabilities.list, display.listColorManagementModes, and display.setColorManagementMode do not require the JSON source to be active after a WebSocket connection is established
  • Unknown color-management mode strings return JSON-RPC invalidParams; known but unsupported modes return colorManagementModeUnsupported
  • Display color-management writes are host-scoped in this release, so hosts should return the selected display that actually changed

0.3.0

03 Jun 18:13

Choose a tag to compare

Added

  • display.list — returns display inventory and selected display metadata
  • display.setPeakWhite — sets Peak White for one display (authenticated, Pro-gated)
  • display.changed — notification broadcast on display inventory, selection, or Peak White changes
  • DisplayEntry, DisplayListResult, PeakWhiteRange, SetPeakWhiteParams Codable models in PatternSpaceSDKCore
  • PSErrorCode.displayNotFound, .peakWhiteOutOfRange, .notAuthorized typed error codes
  • PatternSpaceClient.display namespace with list() and setPeakWhite(displayId:peakWhite:)
  • PatternSpaceEvent.displayChanged(DisplayListResult)source-breaking for exhaustive switches; minor version bump signals this
  • PatternSpaceServerDelegate.listDisplays() and setPeakWhite(_:) host hooks — source-breaking for server delegate conformers
  • Protocol documentation and README examples for the display.* methods

Notes

  • display.list and display.setPeakWhite do not require the JSON source to be active
  • peakWhite and effectivePeakWhite can differ when the stored value exceeds current display capability (non-destructive clamping)
  • display.setPeakWhite returns the updated DisplayEntry directly, not a wrapper object

0.2.0

19 May 03:34

Choose a tag to compare

Changed

  • Replaced pattern.displayRectangle with pattern.displayPatch.
  • Replaced pixel rectangle coordinates with normalized display-space coordinates.
  • Added multi-rectangle patch support with one shared background color.
  • Added optional CalMAN-style area percentage size to pattern.displayColor.
  • Removed currentResolution from PatternSpaceServerDelegate; patch placement no longer depends on client-visible screen resolution.

0.1.0

19 May 00:21

Choose a tag to compare

Added

  • Initial Swift Package Manager package.
  • PatternSpaceSDKCore product with JSON-RPC envelopes, JSON values, error codes, pattern models, device schemas, and events.
  • PatternSpaceSDKClient product with Bonjour discovery, WebSocket transport, request correlation, reconnection, and typed pattern/device namespaces.
  • PatternSpaceSDKServer product with TCP listener, WebSocket upgrade handling, manual frame codec, JSON-RPC dispatch, input validation, auth rejection, rate limiting, and event broadcast.
  • Swift Testing coverage for core models, validation, dispatch, WebSocket upgrade, and WebSocket frames.