All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog. Versions follow Semantic Versioning. Each package in this monorepo maintains its own version; breaking changes in any package are recorded here under the relevant section.
How to update this file: When your PR introduces a user-visible change, add a bullet under the
[Unreleased]section in the appropriate package block. Use the category that fits:Added,Changed,Deprecated,Removed,Fixed,Security. See CONTRIBUTING.md for the full workflow.
- API versioning via URI path (
/api/v1/*) with centralized bootstrap configuration. - Optional unversioned compatibility route (
/api/*) rewriting to/api/v1/*, withDeprecation: trueand optionalSunsetheaders. - Idempotency + replay protection on
POST /shop/purchase— clients must sendIdempotency-Keyheader or receive400. - Prometheus metrics endpoint (
/metrics) controlled byMETRICS_ENABLED. - Graceful shutdown with configurable
SHUTDOWN_TIMEOUT_MS(default 15 000 ms). - Privacy erasure pipeline (GDPR right-to-erasure) in the users module.
- Redis-backed idempotency helper shared across shop, uploads, and webhook modules.
- Ledger reconciliation drift exported as a Prometheus gauge with Grafana panel.
- Admin role verification guard (
AdminGuard) applied to all/admin/*routes.
API_PREFIXnow represents the base prefix (api) not a versioned segment.POST /shop/purchaseproxies writes toshop-api; the backend no longer writes directly — see ADR-001.
- Auth tokens validated for key-name consistency (
accessTokenvsaccess_token).
- NEAR wallet connect/disconnect flow (
NearWalletConnect.tsx,frontend/src/lib/near/). - Keyboard shortcuts panel with focus-trap accessibility.
- Shop grid with CLS/LCP budget enforcement and TypeScript strict-null guards.
- MSW handlers for shop, auth, hero, and join-room API mocking in tests.
- Storybook baseline + Chromatic visual-regression snapshots.
- Bundle size CI gate enforced by
.size-limit.json.
- All "Stellar Network" UI copy replaced with "NEAR wallet" per ADR-003.
- Join-room endpoint wired to live backend WebSocket; MSW mock retained for tests.
- Footer Telegram icon rendering.
- Login auth DTO field mismatch.
- New NestJS microservice owning all purchase writes (
POST /purchases). - Idempotency + replay protection:
Idempotency-Keyheader required on all purchase requests; concurrent in-flight requests return409; completed keys replay the cached response. QueryRunnertransaction wrapping purchase creation and idempotency state machine.- PostgreSQL migration
1714000000000-CreateIdempotencyAndPurchases— addsidempotency_recordsandpurchasestables.
⚠ Breaking change (shop-api v0 → v1):
POST /purchasesnow requires anIdempotency-Key: <uuid>header.
Requests without this header receive400 Bad Request.
Coordinate deployment with client teams before rolling out.
- Soroban workspace with seven crates:
tycoon-main-game,tycoon-game,tycoon-token,tycoon-reward-system,tycoon-collectibles,tycoon-boost-system,tycoon-lib. Makefilewithdev,ci,ci-full,wasm-check,wasm-hashestargets.- WASM size budget enforcement via
contract/ci/wasm-size-budget.json. - CI artifact upload: WASM binaries +
wasm-hashes.txt+wasm-size-report.md.
Note: No Soroban contracts are deployed to testnet or mainnet yet. All crates are scaffolding. See docs/WALLET_STRATEGY.md for the gate criteria before any Stellar UI copy may ship.
- Breaking API changes must be introduced via a new API version (e.g.
/api/v2/*) and documented in this file under theBackendsection with a⚠ Breaking changecallout. - Contract hash bumps (new WASM deployed to testnet or mainnet) must be recorded
under the
Contractsection with the old and new SHA-256 hashes and the deployment transaction ID. - Schema migrations must reference the migration filename and the tables affected.