Description
The selected default identity does not persist across browsers or survive clearing site data, even though all other per-account settings sync correctly. The value appears to live only in the browser-local identity-storage store and is never written to the server-side encrypted settings, so there is no cross-device/server persistence.
Steps to Reproduce
- Create an alias for your account in Stalwart.
- In Bulwark, navigate to Settings > Identities
- Click Manage Identities
- Click the ⭐️ next to the non-default (alias) identity.
- Confirm it sticks in the current browser by composing a message (alias identity should be default in message From field).
- Clear site data (or open Bulwark in a different browser / private window).
- Compose a message. The From field defaults to to the Stalwart account default.
- Navigate to Settings > About & Data. Click Export to export settings as JSON.
- Inspect JSON file and observe lack of identity settings.
Expected Behavior
I expect my selected default sender identity to sync across browsers and survive clearing site data. I expect this selection to appear in exported JSON settings.
Actual Behavior
The default identity is not persisted server-side. It lives only in browser localStorage under identity-storage (a Zustand persist store):
- Before setting a default identity:
{"state":{"subAddress":{"recentTags":[],"tagSuggestions":{}},"preferredPrimaryId":null},"version":0}
- After choosing a default:
{"state":{"subAddress":{"recentTags":[],"tagSuggestions":{}},"preferredPrimaryId":"b"},"version":0}
- After clearing site data:
{"state":{"subAddress":{"recentTags":[],"tagSuggestions":{}},"preferredPrimaryId":null},"version":0}
There is no corresponding field in the exported settings JSON.
Bulwark Version
1.7.5
Stalwart Mail Server Version
0.16.10
Browser
Chrome / Chromium (Brave)
Operating System
macOS
Additional Context
SETTINGS_SYNC_ENABLED=true
SESSION_SECRET is set
SETTINGS_DATA_DIR is on a persistent volume
Description
The selected default identity does not persist across browsers or survive clearing site data, even though all other per-account settings sync correctly. The value appears to live only in the browser-local
identity-storagestore and is never written to the server-side encrypted settings, so there is no cross-device/server persistence.Steps to Reproduce
Expected Behavior
I expect my selected default sender identity to sync across browsers and survive clearing site data. I expect this selection to appear in exported JSON settings.
Actual Behavior
The default identity is not persisted server-side. It lives only in browser localStorage under
identity-storage(a Zustandpersiststore):{"state":{"subAddress":{"recentTags":[],"tagSuggestions":{}},"preferredPrimaryId":null},"version":0}{"state":{"subAddress":{"recentTags":[],"tagSuggestions":{}},"preferredPrimaryId":"b"},"version":0}{"state":{"subAddress":{"recentTags":[],"tagSuggestions":{}},"preferredPrimaryId":null},"version":0}There is no corresponding field in the exported settings JSON.
Bulwark Version
1.7.5
Stalwart Mail Server Version
0.16.10
Browser
Chrome / Chromium (Brave)
Operating System
macOS
Additional Context
SETTINGS_SYNC_ENABLED=trueSESSION_SECRETis setSETTINGS_DATA_DIRis on a persistent volume