The idempotency guard used SocialService as its sentinel, but that was registered mid-cascade, so a run that crashed part-way could leave a half-built container the next run would reuse (or hit 'already registered' on) — intermittently falling back to the inventory-only look with market/chat/profile greyed out. - Guard on a dedicated _DepsReady marker registered LAST, so the sentinel means the WHOLE container is wired, never a partial one. - Reset a half-wired container (crashed prior run) before rebuilding, instead of reusing it. Safe: main aborts before runApp on a partial run. - Make the social key derivation non-fatal: on failure the app opens on inventory (social hidden) rather than blanking. main tolerates an absent SocialService. |
||
|---|---|---|
| .. | ||
| data | ||
| db | ||
| di | ||
| domain | ||
| i18n | ||
| security | ||
| services | ||
| state | ||
| ui | ||
| app.dart | ||
| main.dart | ||