After the previous round of fixes, two issues remained:
1. Feed fetch returned 401 against `mana-api.mana.how`. The new
`authHeader()` helper called `authStore.getAccessToken()`, which
just reads `@auth/appToken` from localStorage and is happy to return
null/stale. The unified sync engine in `sync.ts` uses
`authStore.getValidToken()`, which routes through the tokenManager
and refreshes if needed. Switched the news client to the same.
2. `Cannot read properties of undefined (reading 'emoji')` from
`TOPIC_LABELS[topic]`. When the vault is briefly locked at boot,
`decryptRecord` deliberately leaves the encrypted blob string in
place — so `local.selectedTopics` can be a string. The `?? []`
fallback in `toPreferences` doesn't catch it, and `{#each
prefs.selectedTopics}` iterates the blob char-by-char. Force the
three array fields (and the two map fields) back to their expected
shapes with `Array.isArray` / object checks.