Feature: Portable Client Settings and Server List #51
Labels
No labels
area:api
area:core
area:docs
area:infra
area:ux
dependencies
documentation
duplicate
good first issue
help wanted
invalid
question
rust
status:complete
status:partial
status:planned
type:bug
type:design
type:feature
type:infra
type:refactor
type:research
type:ux
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
icub3d/decentcom#51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Migrated from GitHub issue icub3d/decentcom#72
Original Author: @icub3d
Original Date: 2026-04-17T01:35:16Z
Feature: Portable Client Settings and Server List
Overview
When a user imports an existing identity (via seed phrase or backup), they currently start with a fresh client state: an empty server list, default theme, and default app settings. This is because this metadata is stored only in the client's
localStorageand is not currently included in the identity recovery process. This feature aims to make the client experience portable by allowing users to export/import their "app state" alongside their identity.Background
client/src/stores/appStore.tsuseszustand/middleware/persistto save theserversrecord andthemetolocalStorage, namespaced by the active public key. While this handles multi-account support on a single device, it doesn't help when moving to a new device. Decentralization means there's no central registry of servers a user has joined, so the client must explicitly "remember" these addresses.Requirements
scripts/test-setup.py.Design
API / Interface Changes
src-tauri/src/lib.rsto handle the extended backup format.client/src/services/identity.tsto handle serialization of app state.Data Model Changes
.dckb(DecentCom Key Backup) format to include an optional encrypted payload for app settings.Component Changes
client/src/stores/appStore.ts: Add methods to serialize/deserialize the store state.client/src/components/backup/KeyExport.tsx: Add a checkbox to "Include server list and settings" in the backup.client/src/pages/Setup.tsx: Update the "Restore from Backup" flow to automatically rehydrate the app store if settings are found in the file.Task List
Phase 1: Core Logic
appStore.tswithgetStateForBackup()andloadFromBackup()methods.Phase 2: UI & UX
KeyExportUI.Setuppage restore logic.Phase 3: Developer Tooling & Testing
test-setupaccounts (Alice, Bob, etc.) that match their seeded pubkeys..dckbbackup files containing Alice's server list.scripts/test-setup.pywith a Rust binary attools/test-setup/using clap, anyhow, rusqlite, and keyring.Test List
Open Questions