Skip to content

Conversation

@balloob
Copy link
Member

@balloob balloob commented Nov 30, 2025

Breaking change

Proposed change

This copies the add-on panel from the supervisor UI into Home Assistant as a built-in panel. The UI is copied as-is.

Initially generated by Claude. I've manually clicked around doing all the actions and comparing the UI between the Supervisor hosted panel and the new panel.

Changes:

  • Rename add-on to app
  • Config panel now links to "Apps" instead of "add-ons"
  • New custom elements are prefixed with supervisor-app- instead of hassio-addon-, and live under config panel.
  • When adding/deleting an add-on repository, automatically reload the data (this annoyed me during testing 😅)
  • New URLs:
    • /config/apps/installed
    • /config/apps/available
    • /config/app/a0d7b954_ssh/info

Note: ingress is still done by the supervisor panel. That migration is done in #28214

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New feature (thank you!)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Example configuration

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue or discussion:
  • Link to documentation pull request:

Checklist

  • The code change is tested and works locally.
  • There is no commented out code in this PR.
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:


Note

Introduce a built‑in Apps panel (formerly Supervisor add-ons) with browse/manage, config, logs, docs, and repo/registry management, plus new routes and redirects.

  • Apps panel (built-in)
    • New Settings entry at /config/apps with pages: installed, available.
    • App detail router at /config/app/<slug>/{info,documentation,config,logs}.
  • App detail UI
    • supervisor-app-info with status, actions (install/start/stop/restart/uninstall), metrics, changelog, update card.
    • Configuration tabs: options editor (UI/YAML), network ports, audio devices; restart prompt on changes.
    • Logs tab with filter; Documentation tab (markdown fetch/display).
  • Store management
    • Repository dialog (add/remove; auto-refresh collections) and Docker registries dialog (add/remove credentials).
    • Repository listing/cards with search/filtering and availability/update indicators.
  • Navigation/redirects
    • Config dashboard now links to Apps (replacing legacy /hassio entry).
    • ha-panel-my adds redirects for supervisor_* to new Apps routes; supports path-based addon URLs.
    • ha-panel-config registers new routes: apps, app.
  • Localization/style
    • Extensive new en.json strings for Apps UI; shared styles and card components added.

Written by Cursor Bugbot for commit bb624f4. This will update automatically on new commits. Configure here.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is being reviewed by Cursor Bugbot

Details

Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

@balloob balloob requested a review from Copilot December 1, 2025 02:44
Copilot finished reviewing on behalf of balloob December 1, 2025 02:46
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a built-in Apps panel that mirrors the Supervisor add-on management UI, moving functionality from the supervisor panel directly into Home Assistant's config panel. The changes include comprehensive add-on management features with new routes, dialogs, configuration interfaces, and full translation support.

Summary: Add Apps panel as a built-in feature with complete add-on lifecycle management
Key Changes:

  • Renamed "Add-ons" to "Apps" throughout the UI with new routing structure (/config/apps)
  • Added dialogs for managing repositories and Docker registries
  • Implemented per-app pages (Info, Documentation, Configuration, Logs) with system-managed app support

Reviewed changes

Copilot reviewed 29 out of 29 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/translations/en.json Added comprehensive translation keys for apps panel, dialogs, configuration options, and error messages
src/panels/my/ha-panel-my.ts Added supervisor redirect routes for app store, addons list, and individual addon pages with optional parameters
src/panels/config/ha-panel-config.ts Updated apps route path from /hassio to /config/apps and registered new config panel routes
src/panels/config/apps/supervisor-apps-repository.ts Repository card component displaying add-ons grouped by repository with filtering
src/panels/config/apps/resources/supervisor-apps-style.ts Shared styling for apps components including card grid layouts and typography
src/panels/config/apps/ha-config-apps.ts Router for apps panel with installed/available tabs
src/panels/config/apps/ha-config-apps-installed.ts Installed apps list view with search, refresh, and navigation to app store
src/panels/config/apps/ha-config-apps-available.ts Available apps store view with repository filtering and management dialogs
src/panels/config/apps/ha-config-app-dashboard.ts Individual app dashboard with tabs for info, docs, config, and logs
src/panels/config/apps/dialogs/repositories/show-dialog-repositories.ts Helper function to display repository management dialog
src/panels/config/apps/dialogs/repositories/dialog-repositories.ts Dialog for adding/removing add-on repositories with auto-refresh
src/panels/config/apps/dialogs/registries/show-dialog-registries.ts Helper function to display Docker registry management dialog
src/panels/config/apps/dialogs/registries/dialog-registries.ts Dialog for managing Docker registry credentials
src/panels/config/apps/components/supervisor-apps-filter.ts Fuzzy search filtering utility using Fuse.js
src/panels/config/apps/components/supervisor-apps-card-content.ts Reusable card content component with icon, title, description, and status indicators
src/panels/config/apps/app-view/util/supervisor-app.ts Utility functions for architecture support check and changelog extraction
src/panels/config/apps/app-view/supervisor-app-router.ts Router for individual app views (info, documentation, config, logs tabs)
src/panels/config/apps/app-view/log/supervisor-app-log-tab.ts App logs view with search filtering
src/panels/config/apps/app-view/info/supervisor-app-system-managed.ts Warning banner for system-managed apps with take control button
src/panels/config/apps/app-view/info/supervisor-app-info.ts Comprehensive app information view with capabilities, metrics, options, and actions
src/panels/config/apps/app-view/info/supervisor-app-info-tab.ts Wrapper tab component for app info view
src/panels/config/apps/app-view/documentation/supervisor-app-documentation-tab.ts App documentation view fetching and rendering markdown
src/panels/config/apps/app-view/dialogs/suggestSupervisorAppRestart.ts Helper to prompt user for app restart after configuration changes
src/panels/config/apps/app-view/config/supervisor-app-network.ts Network port configuration interface with validation and restart prompt
src/panels/config/apps/app-view/config/supervisor-app-config.ts Main app configuration editor supporting UI form and YAML modes
src/panels/config/apps/app-view/config/supervisor-app-config-tab.ts Configuration tab wrapper coordinating options, network, and audio sections
src/panels/config/apps/app-view/config/supervisor-app-audio.ts Audio input/output device selection interface
src/panels/config/apps/app-view/components/supervisor-app-update-available-card.ts Update card showing changelog and backup option before updating
src/panels/config/apps/app-view/components/supervisor-app-metric.ts CPU/RAM usage metric display with color-coded progress bars

@balloob
Copy link
Member Author

balloob commented Dec 1, 2025

@copilot open a new pull request to apply changes based on the comments in this thread. Also fix the lint error by running prettier

Copy link
Contributor

Copilot AI commented Dec 1, 2025

@balloob I've opened a new pull request, #28246, to work on those changes. Once the pull request is ready, I'll request review from you.

…ethod, use spacing tokens (#28246)

* Initial plan

* Address PR review comments: localize error messages, replace substr with substring, use spacing tokens

Co-authored-by: balloob <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: balloob <[email protected]>
Co-authored-by: Norbert Rittel <[email protected]>
"ui.panel.config.apps.dashboard.visit_addon_page",
{
name: html`<a
href=${this.addon.url!}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Non-null assertion on nullable URL creates broken link

The addon.url property is typed as string | null, but the code uses this.addon.url! with a non-null assertion when rendering the "visit addon page" link. If an addon doesn't have a URL defined, this would render a link with href="null", creating a broken link that navigates to an invalid URL when clicked. The link or the entire section containing it needs a null check before rendering.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants