diff --git a/src/panels/my/ha-panel-my.ts b/src/panels/my/ha-panel-my.ts index bc40bb725d..260e42da99 100644 --- a/src/panels/my/ha-panel-my.ts +++ b/src/panels/my/ha-panel-my.ts @@ -330,6 +330,15 @@ export const getMyRedirects = (): Redirects => ({ supervisor_addons: { redirect: "/config/apps", }, + supervisor_app: { + redirect: "/config/app", + params: { + app: "string", + }, + optional_params: { + repository_url: "url", + }, + }, supervisor_addon: { redirect: "/config/app", params: { @@ -525,12 +534,16 @@ class HaPanelMy extends LitElement { private _createRedirectUrl(): string { const params = extractSearchParamsObject(); - // Special case for supervisor_addon: use path-based URL - if (params.addon && this._redirect!.redirect === "/config/app") { - const addon = params.addon; - delete params.addon; - const optionalParams = this._createOptionalParams(params); - return `/config/app/${addon}/info${optionalParams}`; + // Special case for supervisor_app/supervisor_addon: use path-based URL + // Support both "app" (new) and "addon" (legacy) parameters + if (this._redirect!.redirect === "/config/app") { + const appSlug = params.app || params.addon; + if (appSlug) { + delete params.app; + delete params.addon; + const optionalParams = this._createOptionalParams(params); + return `/config/app/${appSlug}/info${optionalParams}`; + } } const resultParams = this._createRedirectParams(); diff --git a/src/state/quick-bar-mixin.ts b/src/state/quick-bar-mixin.ts index 34df400102..cfb3e9baea 100644 --- a/src/state/quick-bar-mixin.ts +++ b/src/state/quick-bar-mixin.ts @@ -164,6 +164,8 @@ export default >(superClass: T) => } if (redirect.redirect === "/config/integrations/integration") { myParams.append("domain", targetPath.split("/")[4]); + } else if (redirect.redirect === "/config/app") { + myParams.append("app", targetPath.split("/")[3]); } else if (redirect.redirect === "/hassio/addon") { myParams.append("addon", targetPath.split("/")[3]); }