{"record":{"id":"ef1564a307c0929d","repo":"jdx/mise","slug":"daemon-presets-are-not-supported-on-windows-yet","errorCode":null,"errorMessage":"daemon presets are not supported on Windows yet","messagePattern":"daemon presets are not supported on Windows yet","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/daemons/presets.rs","lineNumber":180,"sourceCode":"        \"postgres\" => output.trim().strip_prefix(\"postgres (PostgreSQL) \"),\n        \"redis\" => output\n            .split_whitespace()\n            .find_map(|part| part.strip_prefix(\"v=\")),\n        _ => None,\n    }\n    .ok_or_else(|| eyre::eyre!(\"unrecognized {preset} version output: {output}\"))?;\n    let major = version.split('.').next().unwrap_or_default();\n    if major.is_empty() || !major.chars().all(|c| c.is_ascii_digit()) {\n        bail!(\"unrecognized {preset} version: {version}\");\n    }\n    Ok(major.into())\n}\n\npub(crate) fn initialize(preset_name: &str, data: &Path, database: &str) -> Result<()> {\n    crate::config::Settings::get().ensure_experimental(\"daemon presets\")?;\n    crate::config::Settings::ensure_not_safe(\"initializing daemon data\")?;\n    if cfg!(windows) {\n        bail!(\"daemon presets are not supported on Windows yet\");\n    }\n    let preset = preset(preset_name)?;\n    let parent = data\n        .parent()\n        .ok_or_else(|| eyre::eyre!(\"daemon data must have a parent directory\"))?;\n    std::fs::create_dir_all(parent)?;\n    let _lock = crate::lock_file::LockFile::new(data).lock()?;\n    let output = Command::new(&preset.binary).arg(\"--version\").output()?;\n    if !output.status.success() {\n        bail!(\"unable to determine {} version\", preset.binary);\n    }\n    let major = major(preset_name, &String::from_utf8(output.stdout)?)?;\n    let marker = format!(\"{preset_name}:{major}\\n\");\n    if data.exists() {\n        let existing = std::fs::read_to_string(data.join(\".mise-daemon-version\"))\n            .wrap_err(\"daemon data was not initialized completely; inspect it and migrate or reset it explicitly\")?;\n        if existing != marker {\n            bail!(","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/daemons/presets.rs#L162-L198","documentation":"Daemon preset initialization (creating data directories, running initdb, etc.) is not yet implemented on Windows; initialize bails out early with this message when compiled for/running on Windows, after the experimental and safe-mode checks.","triggerScenarios":"Calling initialize (e.g. via `mise daemon` preset setup) on a Windows platform, regardless of configuration correctness.","commonSituations":"Windows developer running the same mise.toml daemon presets as Linux teammates; CI on Windows runners hitting a config that works on Linux.","solutions":["Run daemon presets on Linux/macOS (e.g. WSL) instead of native Windows","Wait for Windows support in a future mise release","Disable the daemon preset config on Windows via os-specific config"],"exampleFix":"null","handlingStrategy":"fallback","validationCode":"if (process.platform === 'win32') console.log('daemon presets unsupported on Windows');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Guard daemon-preset config behind OS checks on mixed teams","Use WSL for daemon presets on Windows","Track mise releases for Windows support"],"tags":["daemon","windows","unsupported-platform","preset"],"backgroundTag":"unsupported-platform","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}