feat: modules and resources domains, drop removed domains, regenerated models
This commit is contained in:
+36
-28
@@ -1,38 +1,46 @@
|
||||
# Changelog
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Login and token refresh send `platform: 'web'` and, when the new optional
|
||||
`appVersion` client option is set, `appVersion`. The backend stores them on
|
||||
the player for segment rules (`player.platform`, `player.appVersion`).
|
||||
|
||||
## 2.0.0
|
||||
|
||||
Breaking change — major bump, required by the backend environments release.
|
||||
Every project now has exactly two environments, `staging` and `prod`, and the
|
||||
SDK key passed as `projectKey` decides which one the player belongs to. The
|
||||
environment never appears in the client API: it is resolved at login and
|
||||
carried inside the access and refresh tokens. Tokens issued before this
|
||||
release have no environment claim and are rejected with 401, so the first call
|
||||
after the backend upgrade refreshes, fails, clears the token store and emits
|
||||
Breaking change — kernel surface. Module-specific client methods are removed.
|
||||
The SDK now exposes the kernel only: auth, player (including wallets), catalog
|
||||
currencies, storage, project storage, revision sync,
|
||||
`client.modules.call(module, fn, args)`, and `client.resources(slug)`.
|
||||
|
||||
### Removed
|
||||
|
||||
- `client.battlePass` / `BattlePassService`
|
||||
- `client.quests` / `QuestsService` / `QuestMetrics`
|
||||
- `client.leaderboards` / `LeaderboardsService` / `LeaderboardHandle`
|
||||
- `client.stores` / `StoresDomain` / `ShopHandle` / `OfferHandle`
|
||||
- `client.inventory` / `InventoryDomain`
|
||||
- `client.remoteConfig` / `ConfigDomain` / `RemoteConfigState`
|
||||
- Scenario runtime (`ScenarioService`, login-event trigger, pending poll)
|
||||
- Module-specific effects: `onStoreOffer`, `onLeaderboard`, `onQuest`,
|
||||
`onBattlePass`, `onBattlePassLevel`, `onConfigChanged`
|
||||
- Generated wire types for battle pass, quests, stores, inventory,
|
||||
leaderboards, remote config, and scenarios
|
||||
|
||||
Call module functions with `client.modules.call(module, fn, args)` and read or
|
||||
write resource rows with `client.resources(slug)` (`list` / `get` / `create` /
|
||||
`update` / `delete`).
|
||||
|
||||
Also required by the backend environments release: every project now has
|
||||
exactly two environments, `staging` and `prod`, and the SDK key passed as
|
||||
`projectKey` decides which one the player belongs to. The environment never
|
||||
appears in the client API: it is resolved at login and carried inside the
|
||||
access and refresh tokens. Tokens issued before this release have no
|
||||
environment claim and are rejected with 401, so the first call after the
|
||||
backend upgrade refreshes, fails, clears the token store and emits
|
||||
`'signed-out'` to every `onAuthStateChange` listener. Log the player in again
|
||||
with `client.auth.loginWithDevice()` / `loginWithCustom()`.
|
||||
|
||||
Quests, scenarios and offers are addressed by their slug instead of their id,
|
||||
because ids differ between staging and prod while slugs are stable. Renamed
|
||||
accordingly: `Quest.id` is now `Quest.slug`, `client.quests.claim()` takes a
|
||||
quest slug, `reportProgress()` resolves to the slugs of the completed quests
|
||||
(`ReportQuestProgressResponse.completedQuestSlugs`),
|
||||
`client.stores.purchase(storeSlug, offerSlug, options?)` takes an offer slug
|
||||
and `OfferHandle` carries a `slug` alongside its `id`,
|
||||
`QuestMetrics.purchaseOffer(offerSlug)` builds its metric from the offer slug,
|
||||
and every scenario-scoped type exposes `scenarioSlug` instead of `scenarioId` —
|
||||
`PendingEffect`, `ScenarioCompletedEffect`, `ScenarioFailedEffect`, the battle
|
||||
pass requests and `client.battlePass.getProgress(scenarioSlug, nodeId)`.
|
||||
`offer.buy()` is unchanged; it now binds the slug for you. Leaderboards, items
|
||||
and stores already used slugs and are untouched.
|
||||
|
||||
Also shipped here, previously committed but never published: the effects client
|
||||
reconciles against every `GET /sdk/v1/scenarios/pending` response, so a run
|
||||
that disappears server-side (finished elsewhere, expired after a promote) now
|
||||
emits `onScenarioCompleted` instead of lingering; and `run_not_active` joins
|
||||
`unknown_run` and `run_expired` as a terminal rejection that drops the run and
|
||||
emits `onScenarioFailed`.
|
||||
|
||||
## 1.0.0
|
||||
|
||||
- Scenario execution moved server-side. The SDK no longer walks a local DAG
|
||||
|
||||
Reference in New Issue
Block a user