Rename the app to Keynectr

- Crate/binary: nostr-manager-backend -> keynectr
- Data directory: nost-feed-manager -> keynectr, migrated automatically
  on first data_dir() call (existing vaults, settings and backups move)
- Electron extraResources/spawn path, executableName, productName,
  window title and CLI usage strings updated to match
- Deliberately unchanged: crypto.rs KDF verifier string, so previously
  encrypted vault backups remain decryptable

Verified live: existing vault with two profiles migrated to
~/.local/share/keynectr and loads correctly.
This commit is contained in:
Avi 2026-08-23 10:22:25 -05:00
commit 7c6a085bf1
13 changed files with 108 additions and 264 deletions

View file

@ -11,7 +11,7 @@ describe('SettingsScreen', () => {
renderWithApp(<SettingsScreen />);
expect(
await screen.findByText('/home/user/.local/share/nost-feed-manager/profiles_vault.json'),
await screen.findByText('/home/user/.local/share/keynectr/profiles_vault.json'),
).toBeInTheDocument();
expect(screen.getByText('Storage is not encrypted')).toBeInTheDocument();
});

View file

@ -35,8 +35,8 @@ export function makeState(overrides?: Partial<AppState>): AppState {
};
return {
version: '0.1.0',
vault_path: '/home/user/.local/share/nost-feed-manager/profiles_vault.json',
settings_path: '/home/user/.local/share/nost-feed-manager/settings.json',
vault_path: '/home/user/.local/share/keynectr/profiles_vault.json',
settings_path: '/home/user/.local/share/keynectr/settings.json',
encrypted_storage: false,
vault_locked: false,
migrated_from: null,
@ -188,7 +188,7 @@ export function createApiMock(initial: AppState = makeState()): ApiMock {
},
),
backupNow: vi.fn(async () => ({
backup_path: '/home/user/.local/share/nost-feed-manager/profiles_vault.json.backup-1',
backup_path: '/home/user/.local/share/keynectr/profiles_vault.json.backup-1',
})),
setVaultPassword: vi.fn(async () => ({
...state,