Skip to content

[FEATURE] Generic beta-features opt-in mechanism for the stable addon #986

Description

@kingpanther13

What would you like to see?

A first-class "beta features" opt-in path for the stable addon, so operators can enable individual unstable features without switching to the dev addon channel and without setting environment variables manually.

Proposed by @julienld in #942 (comment) as a follow-up to moving ha_config_set_yaml out of the main addon UI:

As a follow-up, we could open a separate PR to add a generic beta features mechanism to the stable addon: a free-form text field with instructions pointing to docs/beta.md for users who want to opt in.

Two reasonable shapes for the implementation, not mutually exclusive:

  1. Addon config text field — a single beta_features: "" field in homeassistant-addon/config.yaml's options:/schema:, parsed by homeassistant-addon/start.py into the corresponding ENABLE_* env vars before the server starts. Values would be a comma-separated list of beta feature names documented in docs/beta.md (e.g., beta_features: "yaml_config_editing").
  2. Web UI integration with feat: web-based settings UI for per-tool enable/disable/pin #960 — the settings UI from feat: web-based settings UI for per-tool enable/disable/pin #960 already renders feature-gated tool stubs (ha_config_set_yaml, filesystem tools) with locked toggles and a note explaining which flag is required. A "Beta features" section at the top of /settings could expose those gates as opt-in checkboxes that, when enabled, persist to tool_config.json (or a sibling beta_config.json) and unlock the corresponding tool stubs on next restart. This keeps stable addon operators on the stable channel while still letting them opt into individual unstable tools through a UI path, and avoids the env-var-fiddling that julienld's first paragraph in refactor(addon): move ha_config_set_yaml to dev channel only (breaking — stable toggle removed, set ENABLE_YAML_CONFIG_EDITING or use dev add-on) #942 was trying to spare them.

Pairing both gives users two compatible entry points: the addon config field for operators who never open the web UI, and the /settings UI for everyone else. Both would write to the same persistence file so they stay coherent.

Why do you need this?

In #942, julienld proposed moving ha_config_set_yaml out of the stable addon's main toggle list and into a beta status — accessible only via env var or via the dev channel addon. That solves the "this should not be one click away on stable" problem for that specific tool, but leaves a gap for any operator who wants to opt in:

  • Stable addon users can't easily set arbitrary env vars (HA Supervisor only honors options listed in the addon's schema:).
  • Switching to the dev channel addon to get one beta feature pulls in every dev change, which is more risk than they signed up for.
  • The non-addon (pip / Docker direct / uv) env var path works but excludes the addon-using majority.

A generic beta opt-in mechanism solves the "I want exactly this one risky feature on stable" case for ha_config_set_yaml today, and gives future risky-but-useful features a stable home that doesn't require either a dev channel switch or a new toggle slot in the main addon UI for every one of them.

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions