Skip to content

Releases: kylebegeman/comet

Comet 0.4.4

Choose a tag to compare

@kylebegeman kylebegeman released this 29 Jun 02:38

Added

  • URLSessionTransport now imports FoundationNetworking where available, so the core Comet target can build and run live HTTP requests on server-side Swift.
  • CI now builds the core Comet target in a Swift 6.2 Linux container.

Changed

  • URLSessionTransport.stream keeps true incremental streaming on Apple platforms and emits buffered stream events on server Swift builds.
  • Server transport docs now mark HTTP live transport as supported and keep URLSessionWebSocketTransport scoped to Apple platforms.

Comet 0.4.3

Choose a tag to compare

@kylebegeman kylebegeman released this 29 Jun 02:09

Added

  • OpenAPI reusable component references now resolve for parameters, request bodies, and responses.
  • OpenAPI request generation now covers JSON bodies without schemas, plain-text bodies, form URL-encoded bodies, and multipart form-data bodies backed by HTTPBody.multipartFormData.
  • OpenAPI error responses now generate typed JSON, string, or raw data serializers from the declared response content.
  • OpenAPI schema generation now covers free-form additionalProperties dictionaries through CometOpenAPIJSONValue and oneOf or anyOf union enums.
  • OpenAPI discriminator metadata now generates discriminator-aware decoding for component union schemas.
  • OpenAPI security requirements now populate generated request metadata tags.
  • HTTPBody.MultipartPart and HTTPBody.multipartFormData for constructing multipart form-data requests.
  • Stale-while-revalidate background refreshes now emit request lifecycle activity and completed RequestTrace values for refresh successes and failures.

Changed

  • Generated Swift type names now preserve uppercase acronym words in component and operation names.

Comet 0.4.2

Choose a tag to compare

@kylebegeman kylebegeman released this 28 Jun 19:52

Patch release for expanded OpenAPI schema model generation.

Added

  • OpenAPI component schemas can now alias local component $refs.
  • Component object properties with inline object schemas now generate nested Swift structs.
  • Arrays whose items are inline object schemas now generate nested Item structs.

Fixed

  • Local schema $ref lookup now preserves raw OpenAPI component keys before generating Swift type names, so references such as #/components/schemas/pet-alias resolve correctly.

Verification

  • git diff --check
  • swift test --disable-xctest
  • .github/scripts/check-api-breaking-changes.sh v0.4.1

Comet 0.4.0

Choose a tag to compare

@kylebegeman kylebegeman released this 28 Jun 16:51

Comet 0.4.0 expands the V3 foundation with schema-aware OpenAPI generation, YAML input, optional SQLiteData persistence, TCA playground coverage, and cache and middleware hardening.

Breaking change:

  • CometTCA request effects now use the public Effect<Action> return type instead of the underscored _Effect<Action> spelling.

Highlights:

  • Schema-aware OpenAPI generation for component models, local $refs, typed JSON success serializers, and typed error-response hooks.
  • YAML OpenAPI input support through Yams.
  • New CometSQLiteData product for persisted activity events and generated artifacts.
  • Playground saved activity history and reducer-backed TCA demo flows.
  • Cache, streaming, middleware, authentication, and WebSocket hardening.

Validation:

  • swift test --disable-xctest
  • .github/scripts/check-api-breaking-changes.sh after tagging v0.4.0
  • .github/scripts/fresh-client-smoke.sh
  • XcodeBuildMCP simulator smoke for CometPlaygroundApp, 5 tests passed on iPhone 16 Pro, iOS 18.5

Comet 0.3.0

Choose a tag to compare

@kylebegeman kylebegeman released this 28 Jun 05:56

Added

  • 0.3.0 release train plan in Markdown and static HTML, with patch milestones from 0.2.x through the final minor release.
  • Fresh external client smoke script for validating package adoption outside this repository.
  • TraceContext and TracePropagationMiddleware for W3C traceparent propagation.
  • Propagated trace IDs on RequestMetadata and completed RequestTrace values.
  • Playground raw-response proof that shows the outbound trace header in mock mode.
  • HTTPCachePolicy, HTTPCacheKey, CachedHTTPResponse, HTTPCacheStore, and MemoryHTTPCacheStore.
  • HTTPCacheControl and HTTPCacheMetadata for typed Cache-Control, Expires, ETag, and Last-Modified parsing.
  • CacheMiddleware for opt-in safe-method response caching.
  • HTTP cache revalidation with conditional If-None-Match and If-Modified-Since requests, 304 Not Modified merge behavior, and replacement storage for refreshed 200 responses.
  • Cache-only, network-only, return-cache-else-load, reload-ignoring-cache, and revalidate request policies.
  • Cache hit, miss, bypass, stale, revalidate, update, store, and skipped-store events on completed RequestTrace values.
  • FileHTTPCacheStore and FileHTTPCacheStoreConfiguration for namespace-isolated persistent cache entries with size limits, oldest-entry pruning, and corrupted-entry cleanup.
  • Stale-if-error cache fallback through HTTPCachePolicy(allowsStaleIfError:).
  • Playground cache lab scenario covering first load, fresh cache hit, stale revalidation, offline stale fallback, and clear cache.
  • ContractExpectation, ContractTransport, ContractReport, and MockServer for strict request contract testing and JSON report export.
  • Cassette-to-contract conversion for turning recorded fixtures into strict transport expectations.
  • CometOpenAPIGenerator and comet-openapi-generate for dependency-free JSON OpenAPI request generation.
  • ReachabilitySnapshot, ReachabilityHintProvider, and StaticReachabilityHintProvider for app-owned reachability hints.
  • CometRequestState for lightweight TCA request loading, value, and failure state.
  • Playground contract server scenario covering strict expectation matching and clean contract reports.

Changed

  • Playground test target now links HTTPTypes directly to match the app target and reduce Xcode dependency-scan ambiguity.

v0.2.0

Choose a tag to compare

@kylebegeman kylebegeman released this 28 Jun 02:22

Added

  • Playground response viewer snapshots for demo output, HTTP metadata, failure bodies, and socket transcript results.
  • Playground socket monitor snapshots for realtime frames, transports, subprotocols, and close codes.
  • Playground cassette viewer exports deterministic mock HTTP scenarios as CometTesting cassette JSON.
  • WebSocketConnection.messages() for consuming socket frames as an AsyncThrowingStream.
  • Playground trace timeline panels group request and socket activity by demo.
  • Playground cassette replay verification checks exported mock cassettes with ReplayTransport.
  • HTTPClient.traces emits completed RequestTrace values with attempts, retry delays, timings, bytes, metadata, and final outcomes.
  • AuthenticationCoordinator and AuthenticationMiddleware provide token reads, refresh de-duplication, and safe 401 replay.
  • Streaming and transfer primitives with HTTPClient.stream, HTTPClient.lines, HTTPClient.serverSentEvents, HTTPStreamingTransport, and progress-aware sendRaw.
  • WebSocketSession adds a resilient actor wrapper with lifecycle events, message streams, and bounded reconnect attempts.

Comet 0.1.5

Choose a tag to compare

@kylebegeman kylebegeman released this 28 Jun 00:34

Added

  • Typed API error decoding with ErrorResponseSerializer, APIRequestWithErrorResponse, APIClientError, and HTTPClient.sendWithTypedErrors.
  • cURL command options for pretty-printed JSON request bodies and configurable verbose logging output.
  • A CI API stability gate that fails on public API breaks against the latest release tag.
  • DocC workflow tutorials for authenticated JSON, retries and activity, typed errors, testing and cassettes, WebSockets, and TCA integration.
  • Playground failure-gallery scenarios for timeout, 401 typed errors, 429 retry, 500 errors, malformed JSON, cancellation, and WebSocket close diagnostics.
  • HTTPClient.prepare(_:) plus playground request inspectors and structured activity detail screens.

Comet 0.1.4

Choose a tag to compare

@kylebegeman kylebegeman released this 27 Jun 18:31

Added

  • Query item helpers for optional values, boolean flags, repeated items, joined collections, and date encodings.
  • Diagnostic computed properties on NetworkEvent for event kind, metadata, status, duration, retry details, and summaries.
  • cURL command formatting styles for multiline and compact output.

Changed

  • QueryItemsBuilder now accepts arrays of optional query items and drops absent values.

Verification

  • swift test
  • git diff --check
  • swift package diagnose-api-breaking-changes v0.1.3

Comet 0.1.3

Choose a tag to compare

@kylebegeman kylebegeman released this 27 Jun 18:19

Patch release on the 0.1.x public-prep line.

Highlights:

  • Adds a real Comet app icon set to the iOS playground.
  • Restores the XcodeGen app icon compiler setting to AppIcon.
  • Updates README, contribution docs, and brand asset notes for the 0.1.3 patch line.

Validation:

  • swift package clean, then swift test
  • swift package diagnose-api-breaking-changes v0.1.2
  • iOS playground smoke tests on iPhone 16 Pro simulator
  • git diff --check
  • Public docs punctuation scan
  • Secret-pattern scan reviewed with only expected docs, test, and redaction references

Comet 0.1.2

Choose a tag to compare

@kylebegeman kylebegeman released this 27 Jun 17:59

Patch release on the 0.1.x public-prep line.

Highlights:

  • Adds first-party SVG brand assets under Resources/Brand.
  • Refreshes the README with the Comet mark, badges, clearer package positioning, and 0.1.2 install instructions.
  • Adds the Comet gradient icon to the playground app through an asset catalog.
  • Updates playground and architecture docs to reference the brand assets and current layout.

Validation:

  • swift test
  • swift package diagnose-api-breaking-changes v0.1.1
  • iOS playground smoke tests on iPhone 16 Pro simulator
  • Playground app launch and screenshot inspection
  • git diff --check
  • Public docs punctuation scan
  • Secret-pattern scan reviewed with only expected docs, test, and redaction references