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>
50 lines
1.7 KiB
TypeScript
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;
|