chore: rebrand from Kon/Corbie to Magnotia

Replace all instances of the legacy product names "Kon" and "Corbie" with
"Magnotia" across user-facing copy, code identifiers, package names, bundle
ids, file paths, and documentation. Preserves the unrelated "konsole" (KDE
terminal) reference and the parent CORBEL company name.

- Renames 10 Rust crates (kon-* → magnotia-*) and the tauri binary
- Updates package.json, tauri.conf.json (productName + identifier)
- Renames CSS classes (kon-rh-* → magnotia-rh-*) and animations
- Renames brand and roadmap docs
- Regenerates Cargo.lock and package-lock.json

Verified: svelte-check passes; pure-rust crates compile under new names.
This commit is contained in:
Claude
2026-04-30 13:06:55 +00:00
parent 749403697a
commit 89c63891fa
186 changed files with 1297 additions and 1297 deletions

View File

@@ -36,10 +36,10 @@ export const page = $state<PageState>({
taskSidebarOpen: false,
});
const SETTINGS_KEY = "kon_settings";
const PROFILES_KEY = "kon_profiles";
const TASK_LISTS_KEY = "kon_task_lists";
const TEMPLATES_KEY = "kon_templates";
const SETTINGS_KEY = "magnotia_settings";
const PROFILES_KEY = "magnotia_profiles";
const TASK_LISTS_KEY = "magnotia_task_lists";
const TEMPLATES_KEY = "magnotia_templates";
const defaults: SettingsState = {
engine: "whisper",
@@ -102,8 +102,8 @@ function loadSettings(): SettingsState {
queueMicrotask(() => {
toasts.warn(
"Settings reset",
"Your saved settings couldn't be read, so Kon fell back to defaults. "
+ "Earlier Kon builds can still read your old data.",
"Your saved settings couldn't be read, so Magnotia fell back to defaults. "
+ "Earlier Magnotia builds can still read your old data.",
);
});
}
@@ -117,7 +117,7 @@ export const settings = $state<SettingsState>(loadSettings());
export function saveSettings() {
if (!canUseStorage()) return;
// Versioned envelope {version, data}. Older Kon builds that used
// Versioned envelope {version, data}. Older Magnotia builds that used
// the bare-object layout can still spread the `data` key over
// their defaults — they will just silently drop fields they don't
// know about, which is the same behaviour as today.
@@ -459,7 +459,7 @@ export async function deleteTask(id: string) {
tasks.splice(idx, 1);
broadcastTasks();
if (typeof window !== "undefined") {
window.dispatchEvent(new CustomEvent("kon:task-deleted", { detail: { id } }));
window.dispatchEvent(new CustomEvent("magnotia:task-deleted", { detail: { id } }));
}
}
} catch (err) {
@@ -477,7 +477,7 @@ export async function completeTask(id: string) {
// to this to clear micro-step-idle timers for the completed task
// and, later, to drive Phase 7 "after a task completes" rules.
if (typeof window !== "undefined") {
window.dispatchEvent(new CustomEvent("kon:task-completed", { detail: { id } }));
window.dispatchEvent(new CustomEvent("magnotia:task-completed", { detail: { id } }));
}
} catch (err) {
toasts.error("Couldn't complete task", errorMessage(err));
@@ -491,7 +491,7 @@ export async function uncompleteTask(id: string) {
await invoke("uncomplete_task_cmd", { id });
applyLocalTaskUpdate(id, { done: false, doneAt: null });
if (typeof window !== "undefined") {
window.dispatchEvent(new CustomEvent("kon:task-uncompleted", { detail: { id } }));
window.dispatchEvent(new CustomEvent("magnotia:task-uncompleted", { detail: { id } }));
}
} catch (err) {
toasts.error("Couldn't uncomplete task", errorMessage(err));
@@ -504,7 +504,7 @@ interface TaskChannelMessage {
}
const taskChannel = typeof BroadcastChannel !== "undefined"
? new BroadcastChannel("kon_task_sync")
? new BroadcastChannel("magnotia_task_sync")
: null;
if (taskChannel) {
@@ -654,7 +654,7 @@ interface TaskListChannelMessage {
}
const taskListChannel = typeof BroadcastChannel !== "undefined"
? new BroadcastChannel("kon_task_lists")
? new BroadcastChannel("magnotia_task_lists")
: null;
if (taskListChannel) {