All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
@xstreamroll/contract-testsworkspace package (tests/contracts) with a custom consumer/provider contract test suite covering thestreamsandauthendpoints:api/src/contract-provider.spec.tsverifies the API satisfies each contract,xstreamroll-sdk/__tests__/contract.consumer.test.tsverifies the SDK sends/parses what each contract describes. CI fails if either suite fails (#399).@xstreamroll/typesworkspace package (packages/types) as the single source of truth for domain types (User,Stream,StreamEvent, pagination, and API error shapes) shared byapi,app, andxstreamroll-sdk(#376).- Kubernetes deployment manifests for API, App, Processing Worker, and PostgreSQL (
#217). - Health check endpoints (
/api/health,/livez,/healthz) to support container orchestrator probes. SECURITY.mdpolicy covering supported versions, SLAs, and private vulnerability reporting.- Comprehensive
CONTRIBUTING.mdguide covering monorepo setup, conventional commits, and PR expectations. - PostgreSQL-backed
TagsDbRepositoryandStreamsDbRepositoryfor secure, parameterized data access. - User registration page (
/auth/register) in the Next.js frontend with Zod schema validation.
- Breaking (api):
StreamandUserid/userIdfields are now serialized as strings in JSON responses instead of numbers, resolving theStream.id: number(API) vs.Stream.id: string(SDK) contract mismatch. Internal storage (PostgresSERIALcolumns) and request-side route params are unaffected — the change is at the response boundary only. - Breaking (xstreamroll-sdk):
User,Stream,CreateStreamDto,UpdateStreamDto,StreamEvent,StreamEventRecord, and the pagination/error types are now re-exported from@xstreamroll/typesinstead of being defined locally, and no longer include fields the API never actually implemented (User.role,User.displayName,Stream.visibility).CreateUserDtonow matches the realPOST /auth/registercontract (usernameinstead ofdisplayName) — previously anyregister()call would fail server-side validation. app's server-side stream cache (lib/cache/streams.ts) now uses the sharedStream/PaginatedResponsetypes instead of a locally-definedStreamSummary/StreamListResultwhose field names (items) had drifted from the real API response shape (data).StreamOwnershipServicein API backend now safely queries the PostgreSQL database via parameterized queries instead of relying on demo environment variables.- Prepared
AdminStatsServicefor database integration to aggregate platform-wide stats. - Breaking (xstreamroll-sdk):
StreamingClientnow uses the fetch-basedHttpClient(with sharedwithRetry) instead of axios. Theaxiosdependency has been removed from@stellar/streaming-sdk. Callers that relied on axios-specific error shapes (AxiosError,error.isAxiosError, axios interceptors on the client instance) must switch toApiError/HttpRequestError. The publicStreamingClientmethod surface is unchanged.
- UI
ConfirmDialogcomponent now properly handles async states and prevents dialog dismissal while action promises are pending.
1.0.0 - 2024-05-24
- Initial release of the XStreamRoll platform.
app: Next.js 16 user-facing web frontend.api: NestJS 10 REST and WebSocket backend.xstreamroll-sdk: Lightweight, isomorphic TypeScript client for publishing events and API interaction.xstreamroll-processing: Dedicated Node.js and TypeScript worker for real-time stream data processing.database: Initial PostgreSQL schema and migrations.