# Changelog All notable changes to this repository will be documented in this file. Sections: - Added - Changed - Fixed - Removed - Security --- ## [0.6.6] - 2026-01-18 ### Added - Source filter to limit repositories by origin: BCS Official, HACS, or Custom. - Visual source badges for repositories (BCS Official, HACS, Custom). - Restored HACS enable/disable toggle in the Store UI. ### Changed - HACS repositories now display human-readable names and descriptions based on official HACS metadata. - Improved Store usability on mobile devices by fixing back navigation from repository detail view. ### Fixed - Fixed missing HACS toggle after UI updates. - Fixed mobile browser back button exiting the Store instead of returning to the repository list. ## [0.6.5] - 2026-01-18 ### Added - Separate handling of HACS official repositories with an enable/disable toggle in the Store UI. - HACS repositories are now loaded independently from the main store index. ### Changed - Store index can remain minimal and curated; HACS repositories are no longer required in store.yaml. - Improved Store performance and clarity by clearly separating repository sources. ### Fixed - Browser cache issues resolved by proper panel cache-busting for UI updates. ### Internal - No changes to install, update, backup, or restore logic. - Fully backward compatible with existing installations and configurations. ## [0.6.4] - 2026-01-18 ### Fixed - Fixed long Home Assistant startup times caused by background repository enrichment running too early. ### Changed - Background repository enrichment is now started only after Home Assistant has fully started. - Repository cache updates now run fully asynchronous without blocking Home Assistant startup. ### Internal - Improved alignment with Home Assistant startup lifecycle. - No functional changes to store behavior or UI. ## [0.6.3] - 2026-01-18 ### Changed - Improved Store performance for large indexes by avoiding full metadata enrichment during list refresh. - Repository details are loaded on demand, reducing initial load time and network requests. - Index refresh is skipped when the index content has not changed. ## [0.6.2] - 2026-01-18 ### Added - Selectable install/update version per repository (install older releases/tags to downgrade when needed). - New API endpoint to list available versions for a repository: `GET /api/bcs/versions?repo_id=...`. ## [0.6.1] - 2026-01-18 ### Fixed - Restored integrations now correctly report the restored version instead of the latest installed version. - Update availability is correctly recalculated after restoring a backup, allowing updates to be applied again. - Improved restore compatibility with backups created before version metadata was introduced. ## [0.6.0] - 2026-01-18 ### Added - Restore feature with selection of the last available backups (up to 5 per domain). - New API endpoints to list and restore backups: - `GET /api/bcs/backups?repo_id=...` - `POST /api/bcs/restore?repo_id=...&backup_id=...` ### Safety - Restoring a backup triggers a “restart required” prompt to apply the recovered integration state. ### Notes - This is a major release milestone consolidating install/update/uninstall, backup/rollback, and restore workflows. ## [0.5.11] - 2026-01-18 ### Added - Automatic backup of existing custom components before install or update. - Backup retention with a configurable limit per domain. ### Safety - Automatic rollback is triggered if an install or update fails after a backup was created. ## [0.5.10] - 2026-01-17 ### Added - Store view controls: Filter and Sort dropdowns alongside the existing Category selector. ### Fixed - Search input focus is preserved while typing (cursor no longer jumps out after re-render). ## [0.5.9] - 2026-01-17 ### Changed - README is now collapsible with a preview by default (Show more / Show less). - Improved mobile readability by keeping long README content contained without affecting the page layout. ## [0.5.8] - 2026-01-17 ### Changed - Mobile UI layout stabilized to prevent horizontal shifting. - README rendering no longer expands the page width on mobile devices. - Tables and code blocks inside README now scroll within their container. - Floating action buttons removed to avoid UI overlap on small screens. - Header icon buttons improved for better visibility in light and dark mode. ## [0.5.7] - 2026-01-17 ### Changed - Mobile UI improvements: removed floating action buttons to prevent overlay issues. - Improved responsive layout to avoid horizontal overflow (badges, URLs, descriptions). - README rendering on mobile is more stable (better wrapping and image scaling). - Header icon buttons are more readable in both light and dark mode. ## [0.5.6] - 2026-01-17 ### Added - Repository uninstall support directly from the Store UI. - New backend API endpoint: `POST /api/bcs/uninstall`. - Automatic **reconcile**: repositories are marked as not installed when their `custom_components` directories are removed manually. ### Changed - Installation & Updates section extended with an Uninstall button. - Store state now remains consistent even after manual file system changes. ### Fixed - Repositories remained marked as installed after manual deletion of their domains. - UI cache issues caused by outdated static assets. ## [0.5.5] - 2026-01-16 ### Fixed - Update entities now refresh their displayed name after store refreshes, so repository names replace fallback IDs (e.g. `index:1`) reliably. ## [0.5.4] - 2026-01-16 ### Added - Native **Repair fix flow** for restart-required situations. - “Restart required” issues are now **fixable** and provide a confirmation dialog with a real restart action. ### Changed - Restart-required issues are automatically cleared after Home Assistant restarts. - Update entities now fully align with official Home Assistant behavior (Updates screen + Repairs integration). ### Fixed - Fixed integration startup issues caused by incorrect file placement. - Resolved circular import and missing setup errors during Home Assistant startup. - Ensured YAML-based setup remains fully supported. ## [0.5.3] - 2026-01-16 ### Added - Native Home Assistant Update entities for installed repositories (shown under **Settings → System → Updates**). - Human-friendly update names based on repository name (instead of internal repo IDs like `index:1`). ### Changed - Update UI now behaves like official Home Assistant integrations (update action is triggered via the HA Updates screen). ## [0.5.2] - 2026-01-16 ### Added - Install and update backend endpoints (`POST /api/bcs/install`, `POST /api/bcs/update`) to install repositories into `/config/custom_components`. - Installed version tracking based on the actually installed ref (tag/release/branch), stored persistently to support repositories with outdated/`0.0.0` manifest versions. - API fields `installed_version` (installed ref) and `installed_manifest_version` (informational) to improve transparency in the UI. ### Changed - Update availability is now evaluated using the stored installed ref (instead of `manifest.json` version), preventing false-positive updates when repositories do not maintain manifest versions. ### Fixed - Repositories with `manifest.json` version `0.0.0` (or stale versions) no longer appear as constantly requiring updates after installing the latest release/tag. ## [0.5.0] - 2026-01-15 ### Added - Manual refresh button that triggers a full backend refresh (store index + provider data). - Unified refresh pipeline: startup, timer and UI now use the same refresh logic. - Cache-busting for store index requests to always fetch the latest store.yaml. ### Improved - Logging for store index loading and parsing. - Refresh behavior now deterministic and verifiable via logs. ### Fixed - Refresh button previously only reloaded cached data. - Store index was not always reloaded immediately on user action. ## [0.4.1] - 2026-01-15 ### Fixed - Fixed GitLab README loading by using robust raw file endpoints. - Added support for nested GitLab groups when resolving README paths. - Added fallback handling for multiple README filenames (`README.md`, `README`, `README.rst`, etc.). - Added branch fallback logic for README loading (`default`, `main`, `master`). - Improved error resilience so README loading failures never break the store core. - No behavior change for GitHub and Gitea providers. ## [0.4.0] - 2026-01-15 ### Added - Initial public release of the Bahmcloud Store integration. - Sidebar panel with repository browser UI. - Support for loading repositories from a central `store.yaml` index. - Support for custom repositories added by the user. - Provider abstraction for GitHub, GitLab and Gitea: - Fetch repository information (name, description, default branch). - Resolve latest version from: - Releases - Tags - Fallback mechanisms. - Repository metadata support via: - `bcs.yaml` - `hacs.yaml` - `hacs.json` - README loading and rendering pipeline: - Fetch raw README files. - Server-side Markdown rendering. - Sanitized HTML output for the panel UI. - Auto refresh mechanism for store index and repository metadata. - API endpoints: - List repositories - Add custom repository - Remove repository Persisted via Home Assistant storage (`.storage/bcs_store`). - Public static asset endpoint for panel JS (`/api/bahmcloud_store_static/...`) without auth (required for HA custom panels). - Initial API namespace: - `GET /api/bcs` list merged repositories (index + custom) - `POST /api/bcs` add custom repository - `DELETE /api/bcs/custom_repo` remove custom repository ### Changed - Repository cards are now clickable to open the detail view. ## [0.3.2] - 2026-01-15 ### Added - Metadata resolver: - Reads `bcs.yaml` (preferred), then `hacs.yaml`, then `hacs.json` from repository root. - Extracts `name`, `description`, `category`, `author`, `maintainer` (best-effort). - UI now prefers metadata description over provider description. - Provider repository name is now only used as a fallback if no metadata name is provided. ### Changed - Repo display name priority: 1) metadata (`bcs.yaml` / `hacs.*`) 2) store index name (store.yaml) 3) provider repo name 4) repository URL ## [0.3.1] - 2026-01-15 ### Fixed - Panel header version is now derived from `manifest.json` via backend API (no more hardcoded version strings). - Mobile navigation/header visibility improved by explicitly disabling iframe embedding for the custom panel. - When adding a custom repository without a display name, the name is now fetched from the git provider (GitHub/Gitea) and shown automatically. ## [0.3.0] - 2026-01-15 ### Added - Repository enrichment for the Store UI: - GitHub: fetch owner and description via GitHub REST API. - Gitea: fetch owner and description via Gitea REST API (`/api/v1`). - Provider detection for GitHub/GitLab/Gitea (best-effort). - Automatic UI description line populated from provider data (when available). ### Changed - Panel module URL cache-busting updated to avoid stale frontend assets. ### Fixed - Store "Refresh" now triggers immediate backend refresh (from 0.2.0). - Avoided circular imports by using TYPE_CHECKING for type references. ### Notes - Installation/README details view/update entities will be added in later versions. ## [0.2.0] - 2026-01-15 ### Added - Foundation architecture for BCS (Bahmcloud Component Store) inside a Home Assistant custom component. - Custom panel (no iframe) using `hass.callApi()` to avoid authentication issues. - Store index loader (`store.yaml`) with periodic refresh (data only). - Manual repository management: - Add repository - List repositories - Remove repository Persisted via Home Assistant storage (`.storage/bcs_store`). - Public static asset endpoint for panel JS (`/api/bahmcloud_store_static/...`) without auth (required for HA custom panels). - Initial API namespace: - `GET /api/bcs` list merged repositories (index + custom) - `POST /api/bcs` add custom repository - `DELETE /api/bcs/custom_repo` remove custom repository ### Changed - Store API/UI terminology standardized to "BCS" (Bahmcloud Component Store), while integration domain remains `bahmcloud_store` for compatibility. ### Notes - Installation, README rendering, provider enrichment (GitHub/Gitea/GitLab), and Update entities will be implemented in later versions.