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

@@ -4,12 +4,12 @@ use serde::Serialize;
use crate::types::ModelId;
/// Structured error type for Kon.
/// Structured error type for Magnotia.
///
/// Implements `Serialize` so errors can be sent to the frontend as
/// structured JSON rather than opaque strings.
#[derive(Debug, thiserror::Error, Serialize)]
pub enum KonError {
pub enum MagnotiaError {
#[error("model not found: {0}")]
ModelNotFound(ModelId),
@@ -57,4 +57,4 @@ fn serialize_io_error<S: serde::Serializer>(
s.serialize_str(&err.to_string())
}
pub type Result<T> = std::result::Result<T, KonError>;
pub type Result<T> = std::result::Result<T, MagnotiaError>;

View File

@@ -19,7 +19,7 @@ pub struct CpuInfo {
}
/// Runtime-detected CPU feature flags relevant to the speech-to-text
/// and LLM backends Kon ships. All whisper.cpp / llama.cpp / ggml
/// and LLM backends Magnotia ships. All whisper.cpp / llama.cpp / ggml
/// kernels degrade roughly two tiers without AVX2, which is why we
/// surface it separately: when AVX2 is absent, the UI should warn the
/// user that performance will be a fraction of what they would see

View File

@@ -7,7 +7,7 @@ pub mod process_watch;
pub mod recommendation;
pub mod types;
pub use error::{KonError, Result};
pub use error::{MagnotiaError, Result};
pub use types::{
AudioSamples, DownloadProgress, EngineName, Megabytes, ModelId, Segment, Transcript,
TranscriptionOptions,

View File

@@ -19,7 +19,7 @@ impl AppPaths {
}
pub fn database_path(&self) -> PathBuf {
self.app_data_dir.join("kon.db")
self.app_data_dir.join("magnotia.db")
}
pub fn recordings_dir(&self) -> PathBuf {
@@ -67,7 +67,7 @@ fn resolve_app_data_dir() -> PathBuf {
#[cfg(target_os = "windows")]
{
let local_app_data = std::env::var("LOCALAPPDATA").unwrap_or_else(|_| ".".to_string());
return PathBuf::from(local_app_data).join("kon");
return PathBuf::from(local_app_data).join("magnotia");
}
#[cfg(target_os = "macos")]
@@ -76,28 +76,28 @@ fn resolve_app_data_dir() -> PathBuf {
return PathBuf::from(home)
.join("Library")
.join("Application Support")
.join("Kon");
.join("Magnotia");
}
#[cfg(target_os = "linux")]
{
let home = std::env::var("HOME").unwrap_or_else(|_| "/tmp".to_string());
let legacy = PathBuf::from(&home).join(".kon");
let legacy = PathBuf::from(&home).join(".magnotia");
if legacy.exists() {
return legacy;
}
if let Ok(xdg) = std::env::var("XDG_DATA_HOME") {
if !xdg.is_empty() {
return PathBuf::from(xdg).join("kon");
return PathBuf::from(xdg).join("magnotia");
}
}
PathBuf::from(home).join(".local").join("share").join("kon")
PathBuf::from(home).join(".local").join("share").join("magnotia")
}
#[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))]
{
let home = std::env::var("HOME").unwrap_or_else(|_| "/tmp".to_string());
PathBuf::from(home).join(".kon")
PathBuf::from(home).join(".magnotia")
}
}
@@ -110,16 +110,16 @@ mod tests {
#[test]
fn derives_all_paths_from_one_base() {
let paths = AppPaths {
app_data_dir: PathBuf::from("/tmp/kon-test"),
app_data_dir: PathBuf::from("/tmp/magnotia-test"),
};
assert_eq!(paths.database_path(), PathBuf::from("/tmp/kon-test/kon.db"));
assert_eq!(paths.database_path(), PathBuf::from("/tmp/magnotia-test/magnotia.db"));
assert_eq!(
paths.speech_model_dir(&ModelId::new("whisper-base-en")),
PathBuf::from("/tmp/kon-test/models/whisper-base-en")
PathBuf::from("/tmp/magnotia-test/models/whisper-base-en")
);
assert_eq!(
paths.llm_models_dir(),
PathBuf::from("/tmp/kon-test/models/llm")
PathBuf::from("/tmp/magnotia-test/models/llm")
);
}
}

View File

@@ -184,7 +184,7 @@ mod tests {
fn parakeet_is_top_recommendation_when_hardware_supports_it() {
// Any machine that fits Parakeet in RAM should see it ranked first —
// Parakeet-TDT is English-only but beats Whisper on English at lower
// latency, so it's Kon's default recommendation when eligible.
// latency, so it's Magnotia's default recommendation when eligible.
// (Users on non-English languages adjust manually — handled at the
// settings-UI level, not at the scoring level for now.)
let profile = profile_with_ram(Megabytes(16384));