adaptive-lighting/custom_components/adaptive_lighting/strings.json
Casey bb3b8b81f4 Groups 8 + 9: strings, services.yaml, README, CHANGELOG (37/53)
strings.json + translations/en.json:
- Rewritten from scratch with plain-language labels and one-sentence
  framers per section (Targets / Daytime curve / Sun schedule / Light
  control / Advanced / Diagnostics).
- Per-field `data_description` for every visible option in the options
  flow.
- New translations for `yaml_managed` abort and the version-incompatible
  error.
- Removed every key for the 21 dropped fields and the sleep switch.
- Services section updated for the trimmed surface: dropped
  `set_manual_control` entirely, removed all sleep / take-over /
  sunrise-sunset-time keys from `change_switch_settings`.

services.yaml: rewritten by hand (was auto-generated upstream). Now
matches the fork's actual service surface: `apply` and
`change_switch_settings` only, with native HA selectors and units.

README: added a CDiT preamble at the top covering the five core
differences from upstream, the strict-version-break warning, the
recommended Sun2 companion, and the minimum HA version pin. Crucially,
also added a "🙏 Huge thanks to the upstream team" block that names
@basnijholt and the 130+ upstream contributors, points users at the
upstream repo for the canonical install, and routes core-curve / light-
handling bugs to upstream's tracker. Open-source credit done right.

CHANGELOG.md: new file. Header credits upstream up front; v2.0.0-cdit.1
section lists every Added / Changed / Removed item by name, the
migration / upgrade steps in numbered form, internal refactors, and
known limitations (Manager bridge stubs, locale drift, astral as
transitive dep).

tasks.md: 8.1-8.6 and 9.1-9.3 marked complete; 9.4 (GitHub repo
description) deferred to a separate `gh repo edit` step.

openspec validate cdit-config-redesign --strict: green.
JSON + YAML syntax: validated.
Module import: clean.
2026-05-16 14:59:09 +02:00

247 lines
11 KiB
JSON

{
"config": {
"step": {
"user": {
"title": "Name this Adaptive Lighting profile",
"description": "Each profile controls one set of lights. You'll be able to add more profiles later for other rooms or scenes.",
"data": {
"name": "Profile name"
},
"data_description": {
"name": "A short label like \"Kitchen\" or \"Living room\"."
}
}
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"no_data": "Cannot import without configuration data."
},
"error": {
"incompatible_version": "This entry was created with an older, incompatible version of Adaptive Lighting. Delete the entry and create a new one."
}
},
"options": {
"step": {
"init": {
"title": "Adaptive Lighting options",
"description": "Tune how this profile adjusts its lights through the day. Hover labels for more detail; the Advanced and Diagnostics sections are collapsed because most households never need to touch them.",
"sections": {
"targets": {
"name": "Targets",
"description": "Which lights this profile controls.",
"data": {
"lights": "Lights"
},
"data_description": {
"lights": "Pick every light that should follow this profile's curve."
}
},
"daytime_curve": {
"name": "Daytime curve",
"description": "How bright these lights get, and how warm or cool they feel, between sunrise and sunset.",
"data": {
"min_brightness": "Minimum brightness",
"max_brightness": "Maximum brightness",
"min_color_temp": "Warmest color temperature",
"max_color_temp": "Coolest color temperature",
"prefer_rgb_color": "Prefer RGB color"
},
"data_description": {
"min_brightness": "Brightness at the lowest point of the day (deep night).",
"max_brightness": "Brightness at the peak of the day (mid-day).",
"min_color_temp": "The night-time tone — lower numbers are warmer (more orange).",
"max_color_temp": "The mid-day tone — higher numbers are cooler (more blue).",
"prefer_rgb_color": "When a light supports both color temperature and RGB, send RGB."
}
},
"sun_schedule": {
"name": "Sun schedule",
"description": "When morning and evening start. Defaults to your home's sunrise and sunset; point these at Sun2 sensors for civil, nautical, or astronomical twilight.",
"data": {
"sunrise_entity": "Sunrise entity",
"sunset_entity": "Sunset entity"
},
"data_description": {
"sunrise_entity": "Any sensor that returns the next sunrise timestamp.",
"sunset_entity": "Any sensor that returns the next sunset timestamp."
}
},
"light_control": {
"name": "Light control",
"description": "How this integration talks to your lights when you turn them on by hand or by voice.",
"data": {
"intercept": "Intercept light.turn_on calls",
"multi_light_intercept": "Intercept multi-light calls"
},
"data_description": {
"intercept": "Apply the curve the moment a light turns on, instead of waiting up to one interval.",
"multi_light_intercept": "Also intercept calls that target several lights at once. Requires the option above."
}
},
"advanced": {
"name": "Advanced",
"description": "Timing knobs. Most households never need to touch these.",
"data": {
"interval": "Update interval (s)",
"transition": "Transition time (s)",
"initial_transition": "First-on fade (s)",
"adapt_delay": "Delay before adapting (s)",
"separate_turn_on_commands": "Split brightness and color into separate calls",
"send_split_delay": "Pause between split calls (ms)",
"skip_redundant_commands": "Skip redundant commands"
},
"data_description": {
"interval": "How often to recompute and re-apply the curve.",
"transition": "Fade time for each scheduled curve update.",
"initial_transition": "Fade time when a light first turns on.",
"adapt_delay": "Wait this long after a light reports 'on' before applying the curve. Helps lights that report state before they have settled.",
"separate_turn_on_commands": "Required by lights that cannot accept brightness and color in the same call.",
"send_split_delay": "Only used when the option above is on.",
"skip_redundant_commands": "Don't send a command if the light is already at the target state."
}
},
"diagnostics": {
"name": "Diagnostics",
"description": "Verbose entity attributes for debugging.",
"data": {
"include_config_in_attributes": "Expose all options as switch attributes"
},
"data_description": {
"include_config_in_attributes": "Useful for templating and dashboards that read the integration's state."
}
}
}
}
},
"abort": {
"yaml_managed": "This Adaptive Lighting profile is managed by YAML. To change its options, edit configuration.yaml."
},
"error": {
"option_error": "One of the options has an invalid value.",
"entity_missing": "One or more of the selected light entities are not currently registered in Home Assistant."
}
},
"services": {
"apply": {
"name": "Apply settings",
"description": "Apply this profile's current curve values to its lights immediately, without waiting for the next scheduled update.",
"fields": {
"entity_id": {
"name": "Master switch",
"description": "The master switch entity whose profile settings to apply."
},
"lights": {
"name": "Lights",
"description": "Lights to apply the settings to. If empty, applies to all lights the profile controls."
},
"transition": {
"name": "Transition time (s)",
"description": "Fade time for this one application."
},
"adapt_brightness": {
"name": "Adapt brightness",
"description": "Adjust brightness on supporting lights."
},
"adapt_color": {
"name": "Adapt color",
"description": "Adjust color temperature on supporting lights."
},
"prefer_rgb_color": {
"name": "Prefer RGB",
"description": "Send RGB when the light supports both color temperature and RGB."
},
"turn_on_lights": {
"name": "Turn on lights that are off",
"description": "If true, also turn on lights that are currently off before applying."
}
}
},
"change_switch_settings": {
"name": "Change profile settings",
"description": "Change one or more of this profile's settings at runtime. The change persists until the next options-flow save or HA restart.",
"fields": {
"entity_id": {
"name": "Master switch",
"description": "The master switch entity whose profile to update."
},
"use_defaults": {
"name": "Defaults source",
"description": "Where to pull unsupplied values from: 'current' keeps existing values, 'factory' resets to documented defaults, 'configuration' reverts to the profile's configured defaults."
},
"include_config_in_attributes": {
"name": "Expose config in attributes",
"description": "Show all options as attributes on the master switch."
},
"turn_on_lights": {
"name": "Turn on lights that are off",
"description": "If true, also turn on lights that are currently off before applying."
},
"initial_transition": {
"name": "First-on fade (s)",
"description": "Fade time when a light first turns on."
},
"max_brightness": {
"name": "Maximum brightness",
"description": "Brightness at the peak of the day."
},
"max_color_temp": {
"name": "Coolest color temperature",
"description": "The mid-day tone."
},
"min_brightness": {
"name": "Minimum brightness",
"description": "Brightness during the night."
},
"min_color_temp": {
"name": "Warmest color temperature",
"description": "The night-time tone."
},
"prefer_rgb_color": {
"name": "Prefer RGB",
"description": "When a light supports both, send RGB."
},
"separate_turn_on_commands": {
"name": "Split brightness and color into separate calls",
"description": "Required by some lights."
},
"send_split_delay": {
"name": "Pause between split calls (ms)",
"description": "Only used when the option above is on."
},
"sunrise_entity": {
"name": "Sunrise entity",
"description": "Any sensor that returns the next sunrise timestamp."
},
"sunset_entity": {
"name": "Sunset entity",
"description": "Any sensor that returns the next sunset timestamp."
},
"transition": {
"name": "Transition time (s)",
"description": "Fade time for each scheduled curve update."
},
"adapt_delay": {
"name": "Delay before adapting (s)",
"description": "Wait this long after a light reports 'on' before applying."
},
"skip_redundant_commands": {
"name": "Skip redundant commands",
"description": "Don't send a command if the light is already at the target state."
},
"intercept": {
"name": "Intercept light.turn_on calls",
"description": "Apply the curve the moment a light turns on."
},
"multi_light_intercept": {
"name": "Intercept multi-light calls",
"description": "Also intercept calls that target several lights at once."
}
}
}
},
"exceptions": {
"incompatible_version": {
"message": "Adaptive Lighting v{current_version} (CDiT fork) is incompatible with the existing config entry (version {entry_version}). Delete the entry from Settings → Devices & Services and create a new one."
}
}
}