{"record":{"id":"811d17ed7e7fac68","repo":"Devolutions/UniGetUI","slug":"the-manager-parameter-is-required-when-removing-an","errorCode":null,"errorMessage":"The manager parameter is required when removing an ignored update for a package that is not currently discoverable.","messagePattern":"The manager parameter is required when removing an ignored update for a package that is not currently discoverable\\.","errorType":"validation","errorClass":"InvalidOperationException","httpStatus":400,"severity":"error","filePath":"src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs","lineNumber":430,"sourceCode":"            Message = $\"Ignored updates for {package.Id}.\",\n        };\n    }\n\n    public static async Task<IpcCommandResult> RemoveIgnoredUpdateAsync(\n        IpcPackageActionRequest request\n    )\n    {\n        ArgumentNullException.ThrowIfNull(request);\n\n        var package = TryFindPackageForStateMutation(request);\n        if (package is not null)\n        {\n            await package.RemoveFromIgnoredUpdatesAsync();\n        }\n        else\n        {\n            var manager = GetManagers(request.ManagerName).FirstOrDefault()\n                ?? throw new InvalidOperationException(\n                    \"The manager parameter is required when removing an ignored update for a package that is not currently discoverable.\"\n                );\n            IgnoredUpdatesDatabase.Remove($\"{manager.Properties.Name.ToLowerInvariant()}\\\\{request.PackageId}\");\n        }\n\n        await RefreshUpgradablePackagesSnapshotAsync();\n        return IpcCommandResult.Success(\"unignore-package\");\n    }\n\n    private static async Task<IpcPackageOperationResult> ExecuteOperationAsync(\n        string command,\n        IPackage package,\n        IpcPackageActionRequest request,\n        Func<IPackage, InstallOptions, AbstractOperation> operationFactory\n    )\n    {\n        var options = await InstallOptionsFactory.LoadApplicableAsync(package);\n        ApplyRequestOptions(options, request);","sourceCodeStart":412,"sourceCodeEnd":448,"githubUrl":"https://github.com/Devolutions/UniGetUI/blob/9b1d7d0eab91620fc15c86b36676532095936ae3/src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs#L412-L448","documentation":"RemoveIgnoredUpdateAsync throws when the package is not currently discoverable (absent from both the upgradable and installed snapshots) AND no ManagerName is supplied. To delete an ignored-update entry for an undiscoverable package, the manager must be named explicitly so the database key 'manager\\\\id' can be built.","triggerScenarios":"Unignoring a package that is no longer installed/installed-out-of-snapshot while omitting ManagerName from the request.","commonSituations":"Package was uninstalled but still listed in the ignored-updates database; client assumes the manager can be inferred from the package alone.","solutions":["Always include request.ManagerName when unignoring a package that may no longer be installed","First resolve the package via search to obtain its manager, then call unignore with that manager","Track the originating manager when the ignore entry is created so unignore can repeat it"],"exampleFix":"// before\nawait IpcPackageApi.RemoveIgnoredUpdateAsync(\n    new IpcPackageActionRequest { PackageId = \"old-pkg\" });\n// after\nawait IpcPackageApi.RemoveIgnoredUpdateAsync(\n    new IpcPackageActionRequest { PackageId = \"old-pkg\", ManagerName = \"winget\" });","handlingStrategy":"validation","validationCode":"// Require a manager for any unignore that may target an absent package\nif (string.IsNullOrWhiteSpace(request.ManagerName)\n    && TryFindPackageForStateMutation(request) is null)\n    throw new ArgumentException(\"ManagerName is required for undiscoverable packages\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Persist managerName alongside ignored entries","Validate that at least one resolution path (installed/upgradable/search) exists before unignore"],"tags":["ipc","ignored-updates","package-lookup"],"backgroundTag":null,"analyzedSha":"9b1d7d0eab91620fc15c86b36676532095936ae3","analyzedAt":"2026-08-13T12:19:18.278Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}