Devolutions/UniGetUI · warning · InvalidOperationException
Unsupported page \"{page}\". Supported pages: {string.Join("
Error message
Unsupported page \"{page}\". Supported pages: {string.Join(", ", SupportedPages)}. What it means
IpcAppPages.NormalizePageName lower-cases and trims the input, then matches it against the twelve supported page names (discover, updates, installed, bundles, settings, managers, own-log, manager-log, operation-history, help, release-notes, about). Any input that does not exactly match one of these after normalization throws InvalidOperationException, listing the full set of supported pages in the message.
Source
Thrown at src/UniGetUI.Interface.IpcApi/IpcAppApi.cs:59
{
ArgumentException.ThrowIfNullOrWhiteSpace(page);
string normalized = page.Trim().ToLowerInvariant();
return normalized switch
{
"discover" => normalized,
"updates" => normalized,
"installed" => normalized,
"bundles" => normalized,
"settings" => normalized,
"managers" => normalized,
"own-log" => normalized,
"manager-log" => normalized,
"operation-history" => normalized,
"help" => normalized,
"release-notes" => normalized,
"about" => normalized,
_ => throw new InvalidOperationException(
$"Unsupported page \"{page}\". Supported pages: {string.Join(", ", SupportedPages)}."
),
};
}
public static string ToPageName(string? pageTypeName)
{
if (string.IsNullOrWhiteSpace(pageTypeName))
{
return "";
}
return pageTypeName switch
{
"Discover" => "discover",
"Updates" => "updates",
"Installed" => "installed",
"Bundles" => "bundles",View on GitHub (pinned to 9b1d7d0eab)
Solutions
- Use one of the exact supported page keys: discover, updates, installed, bundles, settings, managers, own-log, manager-log, operation-history, help, release-notes, about.
- Before navigating, fetch IpcAppPages.SupportedPages (exposed via AppInfoProvider) and validate the input.
- If using a PascalCase type name, route it through ToPageName first, which returns the canonical lowercase key.
- Fix typos: the correct plural forms are "updates", "managers".
Example fix
// before: wrong page name
await ipc.NavigateAppAsync("home");
// after: use a supported page name
await ipc.NavigateAppAsync("discover"); Defensive patterns
Strategy: validation
Validate before calling
string page = "discover";
if (!IpcAppPages.SupportedPages.Contains(page.Trim().ToLowerInvariant()))
throw new ArgumentException($"Unknown page: {page}"); Type guard
static bool IsValidPage(string page) =>
IpcAppPages.SupportedPages.Contains(page.Trim().ToLowerInvariant(), StringComparer.OrdinalIgnoreCase); Try / catch
try { IpcAppPages.NormalizePageName(page); }
catch (InvalidOperationException ex) { Logger.Warn(ex.Message); /* show supported list to user */ } Prevention
- Populate navigation UI from IpcAppPages.SupportedPages rather than hardcoding page names.
- Use ToPageName to convert PascalCase type names to canonical keys before normalizing.
- Watch for singular/plural mismatches ("updates" not "update").
When it happens
Trigger: An IPC client sends a navigate command with a page name not in the supported set — e.g. "packages", "log", "home", "dashboard", or a typo like "update" (singular). NormalizePageName is also reachable when a client sends a PascalCase type name that ToPageName did not map.
Common situations: A client uses a page name from an older or newer version where the supported set differs. A typo in the page string. A client sends a human-readable label instead of the canonical key. A third-party integration guesses page names rather than consulting SupportedPages.
Related errors
- The current UniGetUI session is running headless and cannot
- The current UniGetUI session is running headless and has no
- The cloud backup \"{key}\" was not found.
- The backup key is required.
- Exactly one of content or path must be supplied when importi
AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13).
Data as JSON: /api/errors/d13a37a7ff443eb5.
Report an issue: GitHub.