Troubleshooting Playbook¶
Use this page to diagnose common integration failures when adding custom games.
Game card does not appear in catalog¶
Symptoms:
- game is installed but missing in games overview
Checks:
- provider object type exists in
objectType.xml definitionnameisde.softcreatr.wsc.yabfs.game- provider class namespace/path matches file
Fix:
- correct object type entry, rebuild package, clear cache
JS language phrase is missing at runtime¶
Symptoms:
Language.getPhrase(...)returns key instead of translation
Checks:
templateListener.xmlincludesgamesPlayeventyabfsGamePlayLanguageItems- language template file name matches provider return value (
getPlayLanguageTemplateName) - language item exists in XML and package was rebuilt
Fix:
- fix listener/template naming mismatch and reinstall/update package
Game module not loaded in play page¶
Symptoms:
- base page loads but game board stays empty
Checks:
- provider
getFrontendModuleName()matches compiled AMD module name - TypeScript output exists in package
files/js/... - module calls
registerGameModule(...)
Fix:
- fix module name mismatch and rebuild TypeScript artifacts
Invite/move endpoint returns validation or permission errors¶
Symptoms:
400/403or move silently rejected
Checks:
- current user is participant of match
- match is in expected state before action
- runtime payload validation covers all required fields
Fix:
- add explicit runtime validation and clear error responses (
UserInputException, permission checks)
Accept/decline/cancel buttons missing or wrong¶
Symptoms:
- action buttons not rendered as expected
Checks:
- returned match payload includes generic flags:
canAcceptInvitecanDeclineInvitecanCancelInvitecanMove
Fix:
- always compute and return generic flags in
toMatchPayload(...)
Polling updates do not reflect newest move¶
Symptoms:
- move succeeds but second browser/user remains stale
Checks:
lastActionTimeupdated on every state-changing action- list and single-match snapshot responses include proper
unchangedsemantics
Fix:
- update timestamps consistently and verify snapshot comparison logic
TypeScript compile errors for shared contracts¶
Symptoms:
- cannot resolve
Contracts/Registryimports
Checks:
- package depends on
@softcreatr/yabfs-games-types - local
Contracts.tsre-exports shared types - local
Registry.tsbridges to host registry module
Fix:
- restore local bridge files and dependency declaration