{"record":{"id":"79b3e2a88f51df10","repo":"spacedriveapp/spacedrive","slug":"library-merging-is-not-yet-implemented","errorCode":null,"errorMessage":"Library merging is not yet implemented","messagePattern":"Library merging is not yet implemented","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"warning","filePath":"apps/cli/src/domains/library/mod.rs","lineNumber":404,"sourceCode":"\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\t.collect();\n\n\t\t\tlet remote_lib_idx = select(\"Select remote library to join\", &remote_lib_choices)?;\n\t\t\tlet remote_library = &discovery_out.libraries[remote_lib_idx];\n\n\t\t\tprintln!(\"\\n✓ Will join remote library: {}\\n\", remote_library.name);\n\n\t\t\t(\n\t\t\t\tLibrarySyncAction::JoinRemoteLibrary {\n\t\t\t\t\tremote_library_id: remote_library.id,\n\t\t\t\t\tremote_library_name: remote_library.name.clone(),\n\t\t\t\t},\n\t\t\t\tSome(remote_library.id),\n\t\t\t)\n\t\t}\n\t\t2 => {\n\t\t\tanyhow::bail!(\"Library merging is not yet implemented\");\n\t\t}\n\t\t_ => unreachable!(),\n\t};\n\n\t// Leader device is always local for now (deprecated concept but still in input struct)\n\tlet leader_device_id = local_device_id;\n\n\tOk(LibrarySyncSetupInput {\n\t\tlocal_device_id,\n\t\tremote_device_id,\n\t\tlocal_library_id,\n\t\tremote_library_id: action.1,\n\t\taction: action.0,\n\t\tleader_device_id,\n\t})\n}\n","sourceCodeStart":386,"sourceCodeEnd":421,"githubUrl":"https://github.com/spacedriveapp/spacedrive/blob/6dfeccf2113039e35f2ce735f945e70dc3e4ea45/apps/cli/src/domains/library/mod.rs#L386-L421","documentation":"Thrown by the library sync wizard when the user selects option 2, 'Merge libraries (combine two libraries)', which is explicitly labeled '[NOT YET IMPLEMENTED]' in the menu. This is a deliberate guard, not a runtime failure: the merge action has no implementation yet, so the wizard bails immediately instead of pretending to proceed.","triggerScenarios":"Selecting index 2 in the 'Select sync action' menu of 'sd library sync'. Any other path is unreachable (_ => unreachable!()).","commonSituations":"A user ignores the [NOT YET IMPLEMENTED] label and tries merge anyway; a script drives the wizard and picks the last option.","solutions":["Use 'Share my library' or 'Join remote library' to achieve a single shared library between the two devices","If you truly need merged contents, manually move/copy files into one library and let indexing run","Track the upstream repository for merge support before selecting that option"],"exampleFix":"// before: the wizard offers an option that always bails\nlet action_idx = select(\"Select sync action\", &[\n    \"Share my library to remote device (create shared library from local)\".to_string(),\n    \"Join remote library (use their existing library)\".to_string(),\n    \"Merge libraries (combine two libraries) [NOT YET IMPLEMENTED]\".to_string(),\n])?;\n\n// after: don't offer unimplemented actions\nlet action_idx = select(\"Select sync action\", &[\n    \"Share my library to remote device (create shared library from local)\".to_string(),\n    \"Join remote library (use their existing library)\".to_string(),\n])?;","handlingStrategy":"fallback","validationCode":"// Hide unimplemented options instead of letting users hit the bail\nlet choices: Vec<String> = vec![\n    \"Share my library to remote device (create shared library from local)\".into(),\n    \"Join remote library (use their existing library)\".into(),\n];\nassert!(choices.iter().all(|c| !c.contains(\"NOT YET IMPLEMENTED\")));","typeGuard":"fn is_implemented_choice(choice: &str) -> bool {\n    !choice.contains(\"NOT YET IMPLEMENTED\")\n}","tryCatchPattern":null,"preventionTips":["Read menu labels - [NOT YET IMPLEMENTED] means the branch always bails","In scripted flows, pin the option index to a supported action (0 or 1)","Watch upstream releases if merge support is a requirement for your workflow"],"tags":["cli","sync","library","not-implemented"],"backgroundTag":null,"analyzedSha":"6dfeccf2113039e35f2ce735f945e70dc3e4ea45","analyzedAt":"2026-08-16T11:26:17.074Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}