diff --git a/docs/configuration/cameras/README.md b/docs/configuration/cameras/README.md
index c65068fc..a4166b9c 100644
--- a/docs/configuration/cameras/README.md
+++ b/docs/configuration/cameras/README.md
@@ -420,7 +420,7 @@ cameras:
| ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event_type` | | The Home Assistant event type to subscribe to (e.g. `zha_event`, `deconz_event`, or a custom event name fired by one of your automations). Same field name and meaning as in HA automation YAML. May be a single string or a list of strings to match any of them. |
| `event_data` | | Optional dictionary of key/value pairs the event's payload must contain for this entry to trigger. Mirrors Home Assistant's `event_data` matching exactly: the top-level keys you list must be present in the payload (extra payload keys are ignored), and nested objects are matched the same way -- list only the keys you care about and extra nested keys are ignored. Omit entirely to trigger on every fire of this `event_type`. |
-| `context` | | Optional filter on the event's `context` object. Recognised fields: `id`, `user_id`, `parent_id`. Each field may be a single value (equality) or a list (membership). All listed fields must match. |
+| `context` | | Optional filter on the event's `context` object. Recognized fields: `id`, `user_id`, `parent_id`. Each field may be a single value (equality) or a list (membership). All listed fields must match. |
> [!TIP] Shared `event_type` values like `zha_event` and `deconz_event` fire for **every** device on that integration. Without an `event_data` filter the camera would trigger on any Zigbee/deCONZ device press in your home. Use `event_data` to narrow down to the specific device you care about; you can copy values straight out of **Developer tools → Events** in Home Assistant.
diff --git a/docs/configuration/conditions-triggers.md b/docs/configuration/conditions-triggers.md
index e310920c..9deb0266 100644
--- a/docs/configuration/conditions-triggers.md
+++ b/docs/configuration/conditions-triggers.md
@@ -229,7 +229,7 @@ triggers:
| `trigger` | Must be `event`. |
| `event_type` | The Home Assistant event type to subscribe to (e.g. `zha_event`, `deconz_event`, or a custom event fired by one of your automations). May be a single string or a list of strings to match any of them. |
| `event_data` | Optional dictionary of key/value pairs the event's payload must contain for this entry to match. Mirrors Home Assistant's `event_data` matching exactly: the top-level keys you list must be present in the payload (extra payload keys are ignored), and nested objects are matched the same way -- list only the keys you care about and extra nested keys are ignored. Omit entirely to match every fire of `event_type`. |
-| `context` | Optional filter on the event's `context` object. Recognised fields: `id`, `user_id`, `parent_id`. Each field may be a single value (equality) or a list (membership). All listed fields must match. |
+| `context` | Optional filter on the event's `context` object. Recognized fields: `id`, `user_id`, `parent_id`. Each field may be a single value (equality) or a list (membership). All listed fields must match. |
The fired event is exposed to action templates as `trigger.event.*`, matching HA's event trigger template surface (`trigger.event.event_type`, `trigger.event.data`, `trigger.event.context`, `trigger.event.origin`, `trigger.event.time_fired`).
diff --git a/docs/configuration/folders.md b/docs/configuration/folders.md
index 0082c4e1..cb757be8 100644
--- a/docs/configuration/folders.md
+++ b/docs/configuration/folders.md
@@ -64,7 +64,7 @@ folders:
```
> [!TIP]
-> To match everything at a given level whilst parsing nothing would simply be
+> To match everything at a given level while parsing nothing would simply be
> represented by an empty object `{}`
#### Matchers
diff --git a/docs/configuration/live.md b/docs/configuration/live.md
index 8d54fbb6..4030bfcd 100644
--- a/docs/configuration/live.md
+++ b/docs/configuration/live.md
@@ -61,7 +61,7 @@ live:
| `enabled` | `true` | Whether the on-screen call controls are shown during a call. Set to `false` to hide them and drive calls from the [`menu`](./menu.md) instead. When hiding the controls, be sure to also remove `call` from `menu.auto_hide` so the menu stays visible allowing the call to be controlled. See [Driving calls from the menu](../examples.md?id=driving-calls-from-the-menu) for a complete example. |
| `lock` | `true` | Whether to lock the rest of the card controls/actions while a call is in progress. Prevents an accidental tap, swipe or action mid-call. Set to `false` to allow interactions regardless of call state. |
| `ringtone` | | The audible chime played while an inbound call (e.g. one started by [`view.triggers.actions.trigger: call`](./view.md?id=trigger-action-configuration)) is ringing. Stops as soon as the call is answered or ended. Manual calls never ring. See [`ringtone`](#ringtone). |
-| `unanswered_timeout_seconds` | `60` | The number of seconds an inbound call may ring unanswered before it is automatically ended. The timer is cancelled the moment the call is answered. Set to `0` to disable the timeout. |
+| `unanswered_timeout_seconds` | `60` | The number of seconds an inbound call may ring unanswered before it is automatically ended. The timer is canceled the moment the call is answered. Set to `0` to disable the timeout. |
> [!NOTE] Browser autoplay restrictions may prevent the ringtone from playing
> until the page has received a user gesture (e.g. a tap or click). When that
diff --git a/docs/configuration/menu.md b/docs/configuration/menu.md
index efb4bd9a..5a0073a6 100644
--- a/docs/configuration/menu.md
+++ b/docs/configuration/menu.md
@@ -64,7 +64,7 @@ menu:
| `alignment` | `matching` | Whether this menu item should have an alignment that is `matching` the menu alignment or `opposing` the menu alignment. Can be used to create two separate groups of buttons on the menu. The `priority` option orders buttons within a given `alignment`. |
| `enabled` | `true` for `call`, `camera_ui`, `cameras`, `display_mode`, `download`, `folders`, `fullscreen`, `gallery`, `info`, `iris`, `live`, `media_player`, `set_review`, `substreams` and `timeline`. `false` for `clips`, `expand`, `image`, `microphone`, `mute`, `pip`, `play`, `ptz_controls`, `ptz_home`, `recordings`, `reviews`, `screenshot` and `snapshots`. | Whether or not to show the button. |
| `icon` | | An icon to overriding the default for that button, e.g. `mdi:camera-front`. See also [custom icons](../usage/custom-icons.md). |
-| `inert` | `false` | If `true` the button is shown but rendered as inert (greyed out, non-interactive). Differs from `enabled: false`, which removes the button entirely. |
+| `inert` | `false` | If `true` the button is shown but rendered as inert (grayed out, non-interactive). Differs from `enabled: false`, which removes the button entirely. |
| `permanent` | `false` | If `false` the menu item is hidden when the menu has the `hidden` style and the menu is closed, otherwise it is shown (and sorted to the front). |
| `priority` | `50` | The menu item priority. Higher priority items are ordered closer to the start of the menu alignment (i.e. a button with priority `70` will order further to the left than a button with priority `60`). Priority applies separately to `matching` and `opposing` groups (see `alignment` above). Minimum `0`, maximum `100`. |
| `state_color` | `true` | Whether to colorize the button based on the state of a related entity (where applicable). |
diff --git a/docs/configuration/overrides.md b/docs/configuration/overrides.md
index 486ce426..f94f6413 100644
--- a/docs/configuration/overrides.md
+++ b/docs/configuration/overrides.md
@@ -11,7 +11,10 @@ overrides:
```
> [!WARNING]
-> Whilst all configuration parameters are theoretically overridable, in some instances a configuration variable may only be consulted on startup or changing its value may negatively impact behavior -- override results may vary!
+> While all configuration parameters are theoretically overridable, in some
+> instances a configuration variable may only be consulted on startup or
+> changing its value may negatively impact behavior -- override results may
+> vary!
> [!WARNING]
> Avoid an override whose `conditions` depend on a value that the override itself
diff --git a/docs/configuration/timeline-pan-mode.md b/docs/configuration/timeline-pan-mode.md
index be7fbd86..af2ea30a 100644
--- a/docs/configuration/timeline-pan-mode.md
+++ b/docs/configuration/timeline-pan-mode.md
@@ -2,9 +2,9 @@
The behavior of the timeline during seeking/dragging can be controlled by means of the icon on the bottom-right of the timeline, or by using the `pan_mode` configuration variable for the relevant timeline controls (e.g. `live.controls.timeline.pan_mode`).
-| Configuration name | UI Icon | Behavior |
-| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `pan` | | Dragging the timeline will pan only without selected or seeking any media. |
-| `seek-in-camera` | | Dragging the timeline will seek / select across all available media from the selected camera only, selecting the media item with the longest duration. |
-| `seek-in-media` | | Dragging the timeline will seek within the selected media item only. |
-| `seek` | | Dragging the timeline will seek / select across all available media from all cameras, selecting the media item with the longest duration whilst favoring (but not limited to) the currently selected camera. |
+| Configuration name | UI Icon | Behavior |
+| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `pan` | | Dragging the timeline will pan only without selected or seeking any media. |
+| `seek-in-camera` | | Dragging the timeline will seek / select across all available media from the selected camera only, selecting the media item with the longest duration. |
+| `seek-in-media` | | Dragging the timeline will seek within the selected media item only. |
+| `seek` | | Dragging the timeline will seek / select across all available media from all cameras, selecting the media item with the longest duration while favoring (but not limited to) the currently selected camera. |
diff --git a/docs/examples.md b/docs/examples.md
index 676239e7..47519421 100644
--- a/docs/examples.md
+++ b/docs/examples.md
@@ -376,7 +376,7 @@ elements:
The [`doorbell` profile](configuration/profiles.md?id=doorbell) turns a dashboard into a phone-like ringer when somebody presses the doorbell, by setting [`view.triggers.actions.trigger: call`](configuration/view.md?id=triggers) and auto-discovering [HA `event.*` entities](https://www.home-assistant.io/integrations/event/#device-class) with `device_class: doorbell` on the camera's device (Ring, UniFi Protect, Nest, DoorBird, Reolink, etc.). The intended deployment is a wall-mounted tablet sitting on the dashboard.
-A doorbell press is instantaneous, so the card synthesises a ring window from [`view.triggers.event_hold_seconds`](configuration/view.md?id=triggers) (default `30`s) -- long enough for a typical phone-style answer window. `untrigger_delay_seconds` then lingers past that, same as for any stateful trigger.
+A doorbell press is instantaneous, so the card synthesizes a ring window from [`view.triggers.event_hold_seconds`](configuration/view.md?id=triggers) (default `30`s) -- long enough for a typical phone-style answer window. `untrigger_delay_seconds` then lingers past that, same as for any stateful trigger.
`triggers.motion`, `triggers.occupancy`, and `triggers.media_events` are off by default -- only the explicit doorbell press triggers the call, so casual motion won't make the card ring.
@@ -506,7 +506,7 @@ automations:
> [!WARNING]
> This example is only relevant to those doorbells with a design flaw
-> that prevents the doorbell being rung whilst a 2-way channel is enabled. This
+> that prevents the doorbell being rung while a 2-way channel is enabled. This
> means simply watching the stream, when you might _in future_ hold a 2-way
> conversation on that stream, can disable the actual whole point of a doorbell --
> to ring!
diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
index 3aaa65b1..2ace6f11 100644
--- a/docs/troubleshooting.md
+++ b/docs/troubleshooting.md
@@ -55,7 +55,7 @@ To resolve it:
1. Re-create each entry under it in the current format (see the relevant
configuration documentation in the sidebar). An upgrade usually fails this
way when a feature has been retired, or changed enough that the migration
- needs human judgement.
+ needs human judgment.
1. Once you're happy with the result, delete the `__UPGRADE_FAILURE__` key.
The notification clears once the `__UPGRADE_FAILURE__` key is gone.
diff --git a/docs/usage/url-actions.md b/docs/usage/url-actions.md
index b0e03fa2..de27f6f8 100644
--- a/docs/usage/url-actions.md
+++ b/docs/usage/url-actions.md
@@ -12,7 +12,7 @@ The Advanced Camera Card will execute these actions in the following circumstanc
- On 'tab' change in a dashboard.
- When a `navigate` [action](https://www.home-assistant.io/dashboards/actions/)
is called on the dashboard (e.g. a button click requests navigation).
-- When the user uses the `back` / `forward` browser buttons whilst viewing a
+- When the user uses the `back` / `forward` browser buttons while viewing a
dashboard.
## Instructions
diff --git a/src/card-controller/actions/actions-manager.ts b/src/card-controller/actions/actions-manager.ts
index 73148fd8..8fe0a289 100644
--- a/src/card-controller/actions/actions-manager.ts
+++ b/src/card-controller/actions/actions-manager.ts
@@ -96,7 +96,7 @@ export class ActionsManager implements ActionsExecutor {
ev: Event | CustomEvent,
): Promise => {
if (!('detail' in ev)) {
- // The event may or may not be a CustomEvent object. For example, whilst
+ // The event may or may not be a CustomEvent object. For example, while
// this card doesn't use custom-card-helpers, embedded elements may:
// https://github.com/custom-cards/custom-card-helpers/blob/master/src/fire-event.ts#L70
return;
diff --git a/src/card-controller/templates/types.ts b/src/card-controller/templates/types.ts
index 654c34e6..fb4fa5aa 100644
--- a/src/card-controller/templates/types.ts
+++ b/src/card-controller/templates/types.ts
@@ -1,7 +1,7 @@
import type { AdvancedCameraCardConfig } from '../../config/schema/types';
// The card state exposed via the `acc` namespace AND as the
-// `trigger.from_acc`/`to_acc` before/after snapshots (the card analogue of HA's
+// `trigger.from_acc`/`to_acc` before/after snapshots (the card analog of HA's
// full `trigger.from_state`/`to_state`).
export interface TemplateAdvancedCameraCardState {
camera?: string;
diff --git a/src/card-controller/view/modifiers/substream.ts b/src/card-controller/view/modifiers/substream.ts
index 5cfdccec..fbd2a97f 100644
--- a/src/card-controller/view/modifiers/substream.ts
+++ b/src/card-controller/view/modifiers/substream.ts
@@ -25,7 +25,7 @@ export class SubstreamViewModifier implements ViewModifier {
return;
}
// A stream equal to the camera itself is semantically "no substream";
- // normalise it to a cleared override so the map doesn't carry self-
+ // normalize it to a cleared override so the map doesn't carry self-
// referential entries.
if (!this._options.stream || this._options.stream === cameraID) {
view.context?.live?.overrides?.delete(cameraID);
diff --git a/src/components-lib/editor/form-labels.ts b/src/components-lib/editor/form-labels.ts
index 179e6497..75cd94e5 100644
--- a/src/components-lib/editor/form-labels.ts
+++ b/src/components-lib/editor/form-labels.ts
@@ -20,7 +20,7 @@ export const getLocalizationKeyForPath = (path: ConfigPath): string =>
* Compute the label for a form field. Intended for use as an `ha-form`
* `computeLabel` callback. A field is named for the setting it edits, which for
* a bound field is wherever that setting is stored rather than where the field
- * sits in the form. Container nodes are labelled by their explicit title, never
+ * sits in the form. Container nodes are labeled by their explicit title, never
* by configuration path (their headers already render the title).
* @param form The form the field belongs to.
* @param schema The field's schema.
@@ -37,7 +37,7 @@ export const computeFormLabel = (
return schema.label;
}
if (!isFormFieldSchema(schema)) {
- // Only an expandable has a title: a grid lays out fields that are labelled
+ // Only an expandable has a title: a grid lays out fields that are labeled
// individually, and shows nothing of its own.
return (schema.type === 'expandable' ? schema.title : null) ?? schema.name ?? '';
}
diff --git a/src/components-lib/editor/mode.ts b/src/components-lib/editor/mode.ts
index 34f034a9..dfe56e35 100644
--- a/src/components-lib/editor/mode.ts
+++ b/src/components-lib/editor/mode.ts
@@ -20,7 +20,7 @@ const getShownPaths = (forms: EditorForm[]): Set =>
// What the full editor shows and the simple editor does not. Configuration
// outside this is either something the simple editor shows too, or something
-// neither shows (`elements`, `debug`, anything the card does not recognise at
+// neither shows (`elements`, `debug`, anything the card does not recognize at
// all), which the full editor would be no better at showing.
const getFullOnlyPaths = (): Set => {
const simplePaths = getShownPaths([
diff --git a/src/components-lib/live/providers/go2rtc-experimental/sources/mse.ts b/src/components-lib/live/providers/go2rtc-experimental/sources/mse.ts
index d6482a73..c14733cc 100644
--- a/src/components-lib/live/providers/go2rtc-experimental/sources/mse.ts
+++ b/src/components-lib/live/providers/go2rtc-experimental/sources/mse.ts
@@ -34,7 +34,7 @@ import { isWebKitUserAgent } from '../utils/user-agent';
// MSE Tuning
// ===========================================================================
-// These are judgement-based budgets (time, buffered seconds, staged bytes)
+// These are judgment-based budgets (time, buffered seconds, staged bytes)
// balancing latency and resilience, not derived values. The retained-buffer
// window and the staged-bytes cap follow go2rtc's reference web client; the
// negotiation timeout has no counterpart there and is added by this
diff --git a/src/components-lib/media-dimensions-container-controller.ts b/src/components-lib/media-dimensions-container-controller.ts
index 0da396ef..c251314b 100644
--- a/src/components-lib/media-dimensions-container-controller.ts
+++ b/src/components-lib/media-dimensions-container-controller.ts
@@ -89,7 +89,7 @@ export class MediaDimensionsContainerController implements ReactiveController {
private _mediaLoadedHandler = (ev: CustomEvent): void => {
const info = ev.detail.info;
// Only resize if the media dimensions have changed (otherwise the loading
- // image whilst waiting for the stream, will trigger aresize every second).
+ // image while waiting for the stream, will trigger aresize every second).
if (
this._mediaDimensions?.width === info.width &&
this._mediaDimensions.height === info.height
diff --git a/src/components/image-updating-player.ts b/src/components/image-updating-player.ts
index 361943bf..2599c5ac 100644
--- a/src/components/image-updating-player.ts
+++ b/src/components/image-updating-player.ts
@@ -186,7 +186,7 @@ export class AdvancedCameraCardImageUpdatingPlayer
livenessOptions: {
// Frames are only due while the refresh timer runs. A snapshot with
// refreshing switched off shows one picture forever, which is the
- // configured behaviour and never a stall.
+ // configured behavior and never a stall.
isFrameExpected: () => this._cachedValueController.hasTimer(),
// Allow a whole refresh interval to pass, plus the standard window, so
diff --git a/src/components/live/provider.ts b/src/components/live/provider.ts
index b4579cbd..3b33c987 100644
--- a/src/components/live/provider.ts
+++ b/src/components/live/provider.ts
@@ -154,7 +154,7 @@ export class AdvancedCameraCardLiveProvider extends LitElement implements MediaP
/**
* Determine if a camera image should be shown in lieu of the real stream
- * whilst loading.
+ * while loading.
* @returns`true` if an image should be shown.
*/
private _shouldShowImageDuringLoading(): boolean {
@@ -287,7 +287,7 @@ export class AdvancedCameraCardLiveProvider extends LitElement implements MediaP
private _getNotification(failure: StreamFailure | null): TemplateResult | null {
// If a card *re*-initializes (e.g. was already initialized and then there's
// a use of the editor to change the config), cameras will re-initialize in
- // place, which means they might be asked to render (here) whilst not yet
+ // place, which means they might be asked to render (here) while not yet
// being initialized. This can cause spurious errors (e.g. lack of resolved
// endpoints). Instead, simply never render uninitialized cameras.
if (!this.camera?.isInitialized()) {
diff --git a/src/condition-trigger/conditions/conditions/state.ts b/src/condition-trigger/conditions/conditions/state.ts
index 23ee812c..6e1582e1 100644
--- a/src/condition-trigger/conditions/conditions/state.ts
+++ b/src/condition-trigger/conditions/conditions/state.ts
@@ -5,9 +5,10 @@ import type { ConditionsEvaluationResult, ConditionState } from '../types';
import type { ConditionEvaluator, ConditionOfType, EvaluatorContext } from './types';
// Home Assistant resolves an expected value that names an `input_*` helper to
-// that helper's current state (its Lovelace state-condition behaviour), on both
+// that helper's current state (its Lovelace state-condition behavior), on both
// the state and the attribute path; only these helper domains are resolved.
-// Regexp directly from: https://github.com/home-assistant/core/blob/dev/homeassistant/helpers/condition.py
+// Regexp directly from:
+// https://github.com/home-assistant/core/blob/dev/homeassistant/helpers/condition.py
const INPUT_ENTITY_ID =
/^input_(?:select|text|number|boolean|datetime)\.(?!.+__)(?!_)[\da-z_]+(? {
// composite the user wrote empty is kept; only one the recursion emptied
// is dropped.
if (inner.length || !children.length) {
- // `arrayify` has already normalised `children`, so rebuilding a
+ // `arrayify` has already normalized `children`, so rebuilding a
// composite the recursion left alone would rewrite Home Assistant's
// single-condition spelling (`or: `) into a list the user
// never wrote.
@@ -672,7 +672,7 @@ const getAutomationList = (
plural: string,
singular: string,
): { key: string; items: unknown[] } => {
- // Mirroring the schema's rename, the singular key is honoured only when the
+ // Mirroring the schema's rename, the singular key is honored only when the
// plural is absent; an automation with neither is written under the plural.
const key = singular in automation && !(plural in automation) ? singular : plural;
return { key, items: arrayify(automation[key]) };
diff --git a/src/config/schema/common/preprocess-to-array.ts b/src/config/schema/common/preprocess-to-array.ts
index c56a5f1c..ca28b5dc 100644
--- a/src/config/schema/common/preprocess-to-array.ts
+++ b/src/config/schema/common/preprocess-to-array.ts
@@ -2,7 +2,7 @@ import { z } from 'zod';
import { arrayify } from '../../../utils/basic';
-// Normalise a single item to an array like Home Assistant's `cv.ensure_list` (a
+// Normalize a single item to an array like Home Assistant's `cv.ensure_list` (a
// key written with no value is a list of nothing). The schema output is always
// the list, so the rest of the code only ever sees the canonical form. An
// absent value is passed through so that an optional field stays absent rather
diff --git a/src/ha/connection/subscription-health-monitor.ts b/src/ha/connection/subscription-health-monitor.ts
index 0d7cb86c..64fc586c 100644
--- a/src/ha/connection/subscription-health-monitor.ts
+++ b/src/ha/connection/subscription-health-monitor.ts
@@ -10,7 +10,7 @@ export interface SubscriptionFailure {
failureCount?: number;
}
-// Recoverable health of a set of keyed subscriptions. A named specialisation
+// Recoverable health of a set of keyed subscriptions. A named specialization
// for readability and the extension point for any subscription-specific health
// surface later.
export type SubscriptionHealthInterface = RecoverableHealthInterface<
diff --git a/src/ha/event-match.ts b/src/ha/event-match.ts
index 77e3bed9..7593ca38 100644
--- a/src/ha/event-match.ts
+++ b/src/ha/event-match.ts
@@ -88,7 +88,7 @@ const matchesSchemaValue = (expected: unknown, actual: unknown): boolean => {
// HA-faithful match for the event `context` object: every defined filter field
// must match the event's corresponding field by equality (scalar filter) or
// list-membership (array filter). A null event-side field never satisfies an
-// explicit filter, mirroring HA's behaviour.
+// explicit filter, mirroring HA's behavior.
// https://www.home-assistant.io/docs/automation/trigger/#event-trigger
export const matchesEventContext = (
filter: HAEventContextFilter,
diff --git a/src/scss/editor.scss b/src/scss/editor.scss
index 9393fd2d..3872af7e 100644
--- a/src/scss/editor.scss
+++ b/src/scss/editor.scss
@@ -55,11 +55,11 @@
}
// Each top-level section is an HA expansion panel. An open section draws its
-// own outline, which would otherwise sit directly against the neighbouring
+// own outline, which would otherwise sit directly against the neighboring
// sections, so every section is spaced whether it is open or not: a gap that
-// appeared only on opening would move the sections below as the panel grew.
-// The margins of two adjacent sections collapse together, so the gap is the
-// same wherever it falls.
+// appeared only on opening would move the sections below as the panel grew. The
+// margins of two adjacent sections collapse together, so the gap is the same
+// wherever it falls.
.section {
display: block;
diff --git a/src/scss/live-carousel.scss b/src/scss/live-carousel.scss
index 5dee442f..534200f0 100644
--- a/src/scss/live-carousel.scss
+++ b/src/scss/live-carousel.scss
@@ -38,12 +38,12 @@
// Triggered and transmitting cameras are highlighted with a soft inset glow,
// drawn by an overlay stacked above the camera feed. The overlays come before
-// the carousel controls in source order, so they stack above the feed but
-// below the controls; `pointer-events: none` keeps them inert. The glow is an
+// the carousel controls in source order, so they stack above the feed but below
+// the controls; `pointer-events: none` keeps them inert. The glow is an
// interior effect, so it coexists with the grid selection border (see
// media-grid.scss) without competing for the `border` property.
//
-// The two states differ by colour and rhythm: triggered is an amber glow that
+// The two states differ by color and rhythm: triggered is an amber glow that
// pulses fully out and back (a "something happened" beacon), transmitting is a
// red glow that breathes gently without ever fully fading ("you are live").
// Transmitting wins: while it is active the trigger overlay is faded out.
@@ -82,7 +82,7 @@
// Hidden by default; activation/deactivation is a plain opacity fade. Each
// overlay carries its own static box-shadow (not scoped to the
// `[triggered]`/`[transmitting]` selectors) so the glow stays painted in its
- // own colour throughout the fade-out, after its animation has been removed.
+ // own color throughout the fade-out, after its animation has been removed.
opacity: 0;
transition: opacity 0.5s ease-in-out;
}
diff --git a/src/scss/thumbnail-feature-thumbnail.scss b/src/scss/thumbnail-feature-thumbnail.scss
index a76faf7a..19374d69 100644
--- a/src/scss/thumbnail-feature-thumbnail.scss
+++ b/src/scss/thumbnail-feature-thumbnail.scss
@@ -26,8 +26,7 @@ img {
border-radius: var(--advanced-camera-card-border-radius-final);
// Not 'contain' as some thumbnails may vary in aspect-ratio slightly and
- // should be clipped to fill the thumbnail div whilst maintaining
- // aspect-ratio.
+ // should be clipped to fill the thumbnail div while maintaining aspect-ratio.
object-fit: cover;
}
diff --git a/src/utils/task.ts b/src/utils/task.ts
index 68a87942..224d67c8 100644
--- a/src/utils/task.ts
+++ b/src/utils/task.ts
@@ -10,7 +10,7 @@ import { errorToConsole } from './basic';
* @param host The host object.
* @param task The Lit task.
* @param completeFunc The function to call with the result.
- * @param inProgressFunc The function to call whilst in progress.
+ * @param inProgressFunc The function to call while in progress.
* @returns A template.
*/
export const renderTask = (
diff --git a/tests/browser/dom.ts b/tests/browser/dom.ts
index 58aa1fd6..12babf5b 100644
--- a/tests/browser/dom.ts
+++ b/tests/browser/dom.ts
@@ -92,7 +92,7 @@ export const tabUntil = async (
/**
* Click an element with a real pointer, which is the only kind that carries the
- * browser's own behaviour: the press moves focus, and an element that stops the
+ * browser's own behavior: the press moves focus, and an element that stops the
* press doing so leaves it where it was.
*/
export const clickElement = async (element: Element): Promise =>
diff --git a/tests/browser/fake-hass.ts b/tests/browser/fake-hass.ts
index c2e8ee84..5210e9b8 100644
--- a/tests/browser/fake-hass.ts
+++ b/tests/browser/fake-hass.ts
@@ -92,12 +92,12 @@ const createRegistryEntry = (entityID: string, overrides?: Partial): Ent
* A driveable stand-in for the `hass` object the card is handed by Home
* Assistant.
*
- * Home Assistant updates immutably, and that is the behaviour reproduced here:
- * a change hands consumers a new top-level object and a new `states` map
- * holding a new state object for the entity that changed, while every other
- * entity keeps the object it already had. Anything the card can observe about
- * a real `hass` it must be able to observe about this one, so a divergence here
- * is a bug in the fake rather than a shortcut worth taking.
+ * Home Assistant updates immutably, and that is the behavior reproduced here: a
+ * change hands consumers a new top-level object and a new `states` map holding
+ * a new state object for the entity that changed, while every other entity
+ * keeps the object it already had. Anything the card can observe about a real
+ * `hass` it must be able to observe about this one, so a divergence here is a
+ * bug in the fake rather than a shortcut worth taking.
*/
export class FakeHASS {
private _hass: HomeAssistant;
diff --git a/tests/browser/ha-element-stubs.ts b/tests/browser/ha-element-stubs.ts
index c7bd656d..eed57468 100644
--- a/tests/browser/ha-element-stubs.ts
+++ b/tests/browser/ha-element-stubs.ts
@@ -40,8 +40,8 @@ class HAPlayerStandIn extends LitElement {
}
/**
- * A stand-in that renders its children and nothing else. Behaviour is added
- * only for elements the card is observed to depend on.
+ * A stand-in that renders its children and nothing else. Behavior is added only
+ * for elements the card is observed to depend on.
*/
class HAElementStub extends LitElement {
static styles = css`
diff --git a/tests/browser/mounted-card.ts b/tests/browser/mounted-card.ts
index 8ccaa745..fadc32be 100644
--- a/tests/browser/mounted-card.ts
+++ b/tests/browser/mounted-card.ts
@@ -158,11 +158,11 @@ interface EventEntry {
target: EventTarget | null;
}
-interface LabelledElement extends Element {
+interface LabeledElement extends Element {
label?: string;
}
-const hasLabel = (element: Element): element is LabelledElement => 'label' in element;
+const hasLabel = (element: Element): element is LabeledElement => 'label' in element;
/**
* What a control calls itself to the user. The card titles the controls it
diff --git a/tests/browser/style.ts b/tests/browser/style.ts
index 9f5a4698..2d3a582d 100644
--- a/tests/browser/style.ts
+++ b/tests/browser/style.ts
@@ -36,7 +36,7 @@ const HOME_ASSISTANT_THEME = `
color: var(--primary-text-color);
}
- /* A dashboard sits the card on the background colour with room around it. */
+ /* A dashboard sits the card on the background color with room around it. */
body {
background: var(--primary-background-color);
margin: 0;
diff --git a/tests/browser/test-media.ts b/tests/browser/test-media.ts
index f86d957c..2555718f 100644
--- a/tests/browser/test-media.ts
+++ b/tests/browser/test-media.ts
@@ -87,13 +87,13 @@ export const getTestMediaRequestCount = (url: string): number => {
/**
* Serves a fixture at `/test-media/`, behaving as the query asks:
*
- * token Which counter the request belongs to, so that a test's
- * behaviour does not depend on what ran before it.
- * responses The status to answer each request with, in order: `200` serves
- * the file and anything else is sent as an empty error.
- * repeat What to do once the `responses` list is exhausted: answer every
- * request after it as the last one was, or never answer again
- * (i.e. camera going quiet).
+ * token Which counter the request belongs to, so that a test's behavior
+ * does not depend on what ran before it. responses The status to
+ * answer each request with, in order: `200` serves the file and
+ * anything else is sent as an empty error. repeat What to do
+ * once the `responses` list is exhausted: answer every request
+ * after it as the last one was, or never answer again (i.e. camera
+ * going quiet).
*
* Answered from within the page rather than by a server, because a request the
* page is still waiting on holds one of the handful of connections a browser
diff --git a/tests/card-controller/call/manager.test.ts b/tests/card-controller/call/manager.test.ts
index 4859ad02..6d23f732 100644
--- a/tests/card-controller/call/manager.test.ts
+++ b/tests/card-controller/call/manager.test.ts
@@ -1373,8 +1373,8 @@ describe('answer', () => {
expect(getRingtone().stop).toHaveBeenCalled();
- // Timer was armed and should now be cancelled: advancing past the
- // timeout must not end the (now-answered) call.
+ // Timer was armed and should now be canceled: advancing past the timeout
+ // must not end the (now-answered) call.
vi.advanceTimersByTime(60_000);
expect(manager.isActive()).toBe(true);
} finally {
diff --git a/tests/card-controller/call/tones/custom.test.ts b/tests/card-controller/call/tones/custom.test.ts
index 75668589..213d8a4a 100644
--- a/tests/card-controller/call/tones/custom.test.ts
+++ b/tests/card-controller/call/tones/custom.test.ts
@@ -12,8 +12,8 @@ interface AudioMocks {
}
// Uses real jsdom HTMLAudioElement instances and only stubs the parts jsdom
-// can't fulfil (`play()` / `pause()` -- no audio backend). Tests then exercise
-// observable behaviour: registered listeners fire via `dispatchEvent`, property
+// can't fulfill (`play()` / `pause()` -- no audio backend). Tests then exercise
+// observable behavior: registered listeners fire via `dispatchEvent`, property
// writes round-trip on the element, etc.
//
// Called once at module load. The `beforeEach`/`afterEach` calls inside this
diff --git a/tests/card-controller/camera-triggers-manager.test.ts b/tests/card-controller/camera-triggers-manager.test.ts
index 3c633369..7bace79c 100644
--- a/tests/card-controller/camera-triggers-manager.test.ts
+++ b/tests/card-controller/camera-triggers-manager.test.ts
@@ -538,7 +538,8 @@ describe('CameraTriggersManager', () => {
vi.runOnlyPendingTimers();
await flushPromises();
- // Should still be triggered because the second 'new' event should have cancelled the first timer.
+ // Should still be triggered because the second 'new' event should have
+ // canceled the first timer.
expect(manager.isTriggered()).toBeTruthy();
expect(api.getViewManager().setViewDefaultWithNewQuery).not.toHaveBeenCalled();
});
diff --git a/tests/card-controller/initialization/session-manager.test.ts b/tests/card-controller/initialization/session-manager.test.ts
index 34a32efe..f75d2a86 100644
--- a/tests/card-controller/initialization/session-manager.test.ts
+++ b/tests/card-controller/initialization/session-manager.test.ts
@@ -245,7 +245,7 @@ describe('SessionManager', () => {
});
});
- // The user-facing behaviour the machine exists for, driven through the real
+ // The user-facing behavior the machine exists for, driven through the real
// schema, trigger factory and evaluator rather than hand-written state.
describe('should drive the initialized trigger', () => {
it('should fire once per session and not when a session ends', () => {
diff --git a/tests/card-controller/issues/issue-manager.test.ts b/tests/card-controller/issues/issue-manager.test.ts
index c88751c0..cf5166e7 100644
--- a/tests/card-controller/issues/issue-manager.test.ts
+++ b/tests/card-controller/issues/issue-manager.test.ts
@@ -873,7 +873,7 @@ describe('IssueManager', () => {
// The attempt is now in flight: the problem is still unresolved
// (needsRetry) but cannot be retried right now (canRetryNow). The running
- // timer is cancelled and no further attempt fires, however long we wait.
+ // timer is canceled and no further attempt fires, however long we wait.
canRetryNow.mockReturnValue(false);
manager.evaluate();
vi.advanceTimersByTime(RETRY_EXPONENTIAL_MAX_SECONDS * 1000);
diff --git a/tests/card-controller/issues/issues/media-unavailable.browser.test.ts b/tests/card-controller/issues/issues/media-unavailable.browser.test.ts
index 89aeebe3..bda19426 100644
--- a/tests/card-controller/issues/issues/media-unavailable.browser.test.ts
+++ b/tests/card-controller/issues/issues/media-unavailable.browser.test.ts
@@ -488,7 +488,7 @@ describe('MediaUnavailableIssue', () => {
await card.events.waitForFirst('advanced-camera-card:issue:trigger');
- // The status bar only summarises. Everything a user can do about the
+ // The status bar only summarizes. Everything a user can do about the
// failure is behind it, which is the point of the issue report being
// clickable.
await card.clickControl(MEDIA_ISSUE_TITLE);
diff --git a/tests/card-controller/style-manager.browser.test.ts b/tests/card-controller/style-manager.browser.test.ts
index 785e9f84..f49bbdcc 100644
--- a/tests/card-controller/style-manager.browser.test.ts
+++ b/tests/card-controller/style-manager.browser.test.ts
@@ -7,9 +7,9 @@ import {
createStillImageCardConfig,
} from '../browser/test-utils';
-// A colour the dark theme sets and the card carries no other way. Reading it
-// back proves the stylesheet reached the card rather than merely compiling.
-// See src/scss/themes/dark.scss .
+// A color the dark theme sets and the card carries no other way. Reading it
+// back proves the stylesheet reached the card rather than merely compiling. See
+// src/scss/themes/dark.scss .
const DARK_PRIMARY_BACKGROUND = '#111111';
const mountThemed = async (themes: ThemeName[]) =>
diff --git a/tests/components-lib/editor/form-labels.test.ts b/tests/components-lib/editor/form-labels.test.ts
index 984493fc..a7304de3 100644
--- a/tests/components-lib/editor/form-labels.test.ts
+++ b/tests/components-lib/editor/form-labels.test.ts
@@ -118,7 +118,7 @@ describe('computeFormLabel', () => {
});
it('should return an empty label for a grid', () => {
- // The fields a grid lays out are labelled individually; the grid itself
+ // The fields a grid lays out are labeled individually; the grid itself
// shows nothing.
expect(computeFormLabel(createForm([]), { type: 'grid', schema: [] })).toBe('');
});
diff --git a/tests/condition-trigger/triggers/triggers/numeric-state.test.ts b/tests/condition-trigger/triggers/triggers/numeric-state.test.ts
index 16a3e02d..4c8ce21c 100644
--- a/tests/condition-trigger/triggers/triggers/numeric-state.test.ts
+++ b/tests/condition-trigger/triggers/triggers/numeric-state.test.ts
@@ -379,7 +379,7 @@ describe('NumericStateTrigger', () => {
setHass(stateManager, { [SENSOR]: { state: '25' } });
vi.advanceTimersByTime(3000);
- // Leaves the range before the hold elapses: cancelled.
+ // Leaves the range before the hold elapses: canceled.
setHass(stateManager, { [SENSOR]: { state: '10' } });
vi.advanceTimersByTime(5000);
expect(callback).not.toHaveBeenCalled();
diff --git a/tests/config/schema/common/preprocess-to-array.test.ts b/tests/config/schema/common/preprocess-to-array.test.ts
index 3a190761..651dc8ba 100644
--- a/tests/config/schema/common/preprocess-to-array.test.ts
+++ b/tests/config/schema/common/preprocess-to-array.test.ts
@@ -14,7 +14,7 @@ describe('preprocessToArray', () => {
});
});
- it('should normalise a single item to a list', () => {
+ it('should normalize a single item to a list', () => {
expect(schema.parse({ items: { name: 'office' } })).toEqual({
items: [{ name: 'office' }],
});
diff --git a/tests/config/types.test.ts b/tests/config/types.test.ts
index e858ea0f..5267a021 100644
--- a/tests/config/types.test.ts
+++ b/tests/config/types.test.ts
@@ -1389,7 +1389,7 @@ describe('conditions should accept Home Assistant composite shorthand', () => {
});
});
- it('should normalise a single shorthand condition to a list', () => {
+ it('should normalize a single shorthand condition to a list', () => {
expect(
conditionSchema.parse({ or: { condition: 'fullscreen', fullscreen: true } }),
).toMatchObject({
@@ -1760,7 +1760,7 @@ describe('should lazy evaluate schemas', () => {
).toBeFalsy();
});
- it('should normalise single if/then/else items to lists', () => {
+ it('should normalize single if/then/else items to lists', () => {
const result = actionConfigSchema.parse({
if: { condition: 'state', entity_id: 'light.office', state: 'on' },
then: {
@@ -1912,7 +1912,7 @@ describe('automations should require actions', () => {
});
describe('automations should accept Home Assistant input shorthands', () => {
- it('should normalise singular keys and single items to lists', () => {
+ it('should normalize singular keys and single items to lists', () => {
const result = automationsSchema.parse([
{
trigger: { trigger: 'state', entity_id: 'binary_sensor.door', to: 'on' },
diff --git a/tests/dist/dist.browser.test.ts b/tests/dist/dist.browser.test.ts
index 394dcd6e..ce47a49c 100644
--- a/tests/dist/dist.browser.test.ts
+++ b/tests/dist/dist.browser.test.ts
@@ -227,7 +227,7 @@ describe('the built card', () => {
// only through the accessors `@property` installs. Were the decorator
// output wrong, writes would land on plain instance fields and none of this
// would work. This verifies the build's treatment of decorators rather than
- // the card's behaviour per se (already well covered in other tests).
+ // the card's behavior per se (already well covered in other tests).
await mounted.events.waitForFirst('advanced-camera-card:media:loaded');
expect(isLiveMediaShowing(mounted.card)).toBe(true);
diff --git a/vite.config.ts b/vite.config.ts
index e3d4aebe..b85f7220 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -46,12 +46,13 @@ export default defineConfig(({ mode }) => {
},
resolve: {
- // Same as Vite's default, minus the trailing `jsnext:main` and `jsnext`: an
- // early convention for naming an ES module build that `module` replaced.
- // `moment` is the one dependency still shipping it, and honouring it hands
- // out moment as an ES module, which `vis-timeline`'s CommonJS build cannot
- // then use -- causing timeline views to throw an error. Requiring an ES
- // module yields the namespace object rather than moment itself.
+ // Same as Vite's default, minus the trailing `jsnext:main` and `jsnext`:
+ // an early convention for naming an ES module build that `module`
+ // replaced. `moment` is the one dependency still shipping it, and
+ // honoring it hands out moment as an ES module, which `vis-timeline`'s
+ // CommonJS build cannot then use -- causing timeline views to throw an
+ // error. Requiring an ES module yields the namespace object rather than
+ // moment itself.
mainFields: ['browser', 'module'],
},
diff --git a/vitest.browser.config.ts b/vitest.browser.config.ts
index 18d86221..144f4f7b 100644
--- a/vitest.browser.config.ts
+++ b/vitest.browser.config.ts
@@ -24,7 +24,7 @@ export default defineConfig({
resolve: {
// Several dependencies declare their own Lit. Two copies in one page do not
- // recognise each other's directives and template results, which surfaces as
+ // recognize each other's directives and template results, which surfaces as
// "Multiple versions of Lit loaded" followed by render-time type errors.
// The build gets one copy from its own resolver; the tests have to be told.
dedupe: ['lit', 'lit-html', 'lit-element', '@lit/reactive-element'],