openvibers/openvibe.games Commits

Fix content pack typings and the digest-less hello test assertion

OP OpenVibers committed 4 Oct 2026 · d329c8a31f · 3 files, +5 −4

Requested by finish-f1. Handed to the local harness by the cloud job pr-OpenVibe.Games-4; done by Claude opus.

Changes

ddiff --git a/apps/server/src/mods/contentPack.ts b/apps/server/src/mods/contentPack.ts
iindex 17df852..4c0f7f7 100644
---- a/apps/server/src/mods/contentPack.ts
++++ b/apps/server/src/mods/contentPack.ts
@@@ -56,7 +56,7 @@ export interface ContentProp {
export interface ContentPack {
/** Definitions, deep-validated by `mergePackDefs`; the schema only bounds them. */
defs?: NonNullable<ContentPackV2['defs']>
-- map?: ContentPackV2['map']
++ map?: NonNullable<ContentPackV2['map']>
announcements?: ContentAnnouncement[]
props?: ContentProp[]
}
ddiff --git a/packages/content/src/index.ts b/packages/content/src/index.ts
iindex 7ba0c36..576c759 100644
---- a/packages/content/src/index.ts
++++ b/packages/content/src/index.ts
@@@ -22,7 +22,7 @@ export * from './defs/skills.js'
export * from './defs/resources.js'
export * from './packs/scraplandia.js'
--import { ContentRegistry } from './registry.js'
++import { ContentRegistry, type ContentDefs } from './registry.js'
import { mergePackDefs, type ContentPackV2 } from './pack.js'
import { SCRAPLANDIA_PACK } from './packs/scraplandia.js'
import { CROPS } from './defs/crops.js'
@@@ -42,7 +42,7 @@ import { SKILLS } from './defs/skills.js'
* immutable: packs take effect when it is built, i.e. at the next start.
*/
export function createContent(packs: ContentPackV2[] = []): ContentRegistry {
-- const { defs, errors } = mergePackDefs(
++ const { defs, errors } = mergePackDefs<ContentDefs>(
{
items: ITEMS,
recipes: RECIPES,
ddiff --git a/packages/protocol/src/codec.test.ts b/packages/protocol/src/codec.test.ts
iindex 17938d1..74a241e 100644
---- a/packages/protocol/src/codec.test.ts
++++ b/packages/protocol/src/codec.test.ts
@@@ -48,7 +48,8 @@ describe('protocol codec', () => {
t: 'hello', v: PROTOCOL_VERSION - 1, slot: 0, name: 'Old',
appearance: defaultAppearance(),
}))
-- expect(old).toMatchObject({ t: 'hello', contentDigest: undefined })
++ expect(old).toMatchObject({ t: 'hello' })
++ expect(old).not.toHaveProperty('contentDigest')
expect(decodeClientMessage(JSON.stringify({
t: 'hello', v: PROTOCOL_VERSION, contentDigest: 'garbage',
slot: 0, name: 'Bad', appearance: defaultAppearance(),