Files
Lumotia/src/lib/utils/localStorageMigration.ts
Jake ab5f6ab995 agent: code-atomiser-fix — repair sed-scar provenance from 26c7307
The Magnotia->Lumotia rebrand commit 26c7307 ran a too-greedy
s/magnotia/lumotia/g across comments that already had the correct
legacy/target distinction. The commit author caught one case in
src-tauri/src/lib.rs ("magnotia era" -> "lumotia era" restored) but
missed four others, plus a duplicated word in a Cargo description
from an earlier two-name sed.

Fixed sites:
  * crates/storage/src/database.rs        — migrate_legacy_setting_keys docstring
  * src/lib/utils/localStorageMigration.ts — file-level docstring
  * src/lib/utils/settingsMigrations.ts    — historical-key comment
  * crates/cloud-providers/Cargo.toml      — description duplication
  * src-tauri/src/lib.rs                   — data-dir migration log + doc

None of the underlying code paths were wrong; the lies were
docstring-only. Risk: future maintainer reading any of these
comments at incident time could invert the migration direction or
conclude no migration ran.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:27:24 +01:00

50 lines
1.7 KiB
TypeScript

/**
* Phase 7 of the magnotia -> lumotia rebrand cascade. Persisted UI state
* survives the rename via one-shot key migrations run at module-load
* inside the stores that own each key.
*
* `migrateLocalStorageKey` is idempotent and crash-safe:
* - If the new key already exists, the old (magnotia) key is removed
* silently — the new (lumotia) value is authoritative; the legacy
* (magnotia) key is removed.
* - If only the old key exists, its value is copied to the new key and
* the old key is removed.
* - If neither exists, this is a no-op.
*/
const STORAGE_NS = "lumotia-rebrand-migration";
export function migrateLocalStorageKey(oldKey: string, newKey: string): void {
if (typeof localStorage === "undefined") return;
try {
const newValue = localStorage.getItem(newKey);
if (newValue !== null) {
if (localStorage.getItem(oldKey) !== null) {
localStorage.removeItem(oldKey);
}
return;
}
const oldValue = localStorage.getItem(oldKey);
if (oldValue === null) return;
localStorage.setItem(newKey, oldValue);
localStorage.removeItem(oldKey);
} catch (err) {
// Quota / disabled-storage / DOMException — silently no-op. The store
// will fall back to the old key on next read (or fail there with a
// visible error). Logging is intentionally silent to avoid polluting
// dev-console output on every page in the multi-window flow.
void err;
}
}
/**
* Run a batch of migrations. Used by stores that own multiple keys.
*/
export function migrateLocalStorageKeys(pairs: Array<[string, string]>): void {
for (const [oldKey, newKey] of pairs) {
migrateLocalStorageKey(oldKey, newKey);
}
}
void STORAGE_NS;