2677 Commits
Author SHA1 Message Date
flan dc427c1fcb docs: Use a plain semver line for fork releases
CI / Check / HACS (push) Failing after 1m37s
CI / Test / Unit (push) Successful in 2m37s
CI / Test / Dist / Firefox (push) Successful in 1m44s
CI / Test / Dist / WebKit (push) Successful in 1m10s
Manage labels / Labeler (push) Successful in 19s
CI / Test / Browser / Firefox (push) Successful in 5m25s
CI / Check / Code (push) Successful in 2m46s
CI / Test / Dist / Chromium (push) Successful in 1m7s
CI / Test / Browser / Chromium (push) Successful in 4m39s
CI / Build (push) Failing after 42s
CI / Test / Browser / WebKit (push) Successful in 3m36s
Semantic Release / get-next-version (push) Successful in 51s
Semantic Release / release (push) Skipped
v8.1.0
2026-09-04 18:03:37 +00:00
flan b57fd0675a docs: Add fork notes, changelog and notice 2026-09-04 17:59:21 +00:00
flan 88e1fba401 feat: Add cameras[].media.severities to filter review media by severity
Review queries were issued without a severity filter, so the thumbnail
bar, gallery and timeline showed every Frigate review item -- alerts and
detections alike -- regardless of what a camera is configured to alert
on. Severity could only be narrowed interactively, in the media filter
drawer, and that choice did not persist.

`media.severities` resolves into the default query the same way
`media.reviewed` does, and is overridden by an explicit severity filter
so the media filter drawer keeps working. Unset means all severities, so
existing behaviour is unchanged.

    cameras:
      - camera_entity: camera.office
        media:
          severities:
            - high
2026-09-04 17:56:20 +00:00
Shane Sewellanddermotduffy 54e261fd54 fix: Restore iPadOS 15 compatibility by removing unsupported regex (#2756)
## Summary

Removes an unsupported negative regex lookbehind from input-helper
entity ID validation.

Advanced Camera Card v8 fails to load on Safari/iPadOS 15 because the
browser cannot parse `(?<!_)`. This prevents the `advanced-camera-card`
custom element from registering.

The replacement preserves the existing validation behavior without
lookbehind:

- Accepts valid `input_*` helper entity IDs.
- Rejects object IDs beginning or ending with `_`.
- Rejects object IDs containing `__`.
- Restores compatibility with Safari versions before 16.4.

This closes #2753 

## Testing

- Added regression coverage for valid and invalid input-helper entity
IDs.
- TypeScript typecheck passes.
- ESLint passes for the changed files.
- Build succeeds.
- Confirmed the generated distribution contains no negative lookbehind
syntax.
- Direct validation of the replacement regex passes.

## Reproduction

- Device: iPad mini 4
- OS: iPadOS 15.8.8
- Last working release: v7.27.4
- Affected releases: v8.0.0 and v8.0.1
- Browser error:

```text
SyntaxError: Invalid regular expression: invalid group specifier name
Safari and Safari on iOS did not support regex lookbehind until version 16.4.

---------

Co-authored-by: dermotduffy <dermot.duffy@gmail.com>
2026-09-01 16:53:34 -07:00
Dermot Duffy 95b85bf608 fix: Send the WebRTC player's error text to the media_unavailable notification (#2741)
- Closes: #2723
2026-08-30 19:08:03 -07:00
Matthijsanddermotduffy 299973a1fa fix: size a newly selected grid cell in a single layout pass (#2730)
Selecting a camera in `live.display.mode: grid` lands in two visible
passes: the cell gets its 2-column width immediately but keeps its 1-row
height for ~400 ms, and the rest of the grid only settles ~700 ms after
the click (measured per-frame on `main`; v7.27.4 has the same two
passes, v8's early position resolution just leaves the late height
correction standing out as a lone vertical jump).

**Cause:** a grid cell's height follows its content in the same style
recalculation as its width (intrinsic media ratio,
`dimensions.aspect_ratio`, or the unsized 16:9 reservation), but the
slotted carousel carries an inline `max-height` from
`MediaHeightController` (debounced 0.3 s + 0.1 s transition; it sizes
the card outside grids). In a grid that cap can only ever delay growth:
it pins the freshly widened cell at its old height until the debounce
fires, and the correction then also rides the 300 ms `_throttledLayout`.
`selectCell()`'s existing `forceReflow()` + `layout()` was already
positioned to do this in one pass; the cap starves it of the final
height.

**Fix:** neutralize the cap on grid cells (`max-height: none
!important`; important is needed to beat the inline style). Covers the
live and viewer grids; non-grid behaviour is untouched. This also stops
the cap clipping cells by their border width (it was measured on the
slide's content box but applied to the cell's border box).

**Trade-off worth flagging:** in the *viewer* grid a cell's carousel
holds all of one camera's media. If those slides do not share one ratio,
the cell now sizes to its tallest slide (letterboxing shorter ones, no
re-layout per swipe) instead of tracking the selected one after a
debounce. If you would rather leave the viewer untouched, the rule can
be scoped to `::slotted(advanced-camera-card-live-carousel)` instead
(live grid cells always hold exactly one slide); say so and I will
rework the PR that way.

**Verification:**

- New browser test `tests/components/live/grid.browser.test.ts`: fails
on any frame where the newly selected cell is selected-wide but still
unselected-high. On `main` it fails with 22 such frames; with this
change there are none: the click settles in a single frame (~28 ms),
every cell at its final size and position.
- `yarn run test`, `yarn run test:browser` (chromium, firefox and webkit
for the new test), `yarn run lint`, `yarn run typecheck` pass.
- No resize oscillation in a cramped viewport with an
appearing/disappearing ancestor scrollbar (the #2306 scenario), on
window resizes, or under a narrow-screen `grid_columns: 2` override;
verified against a live HA 2026.8.3 dashboard (6 go2rtc cameras).

---------

Co-authored-by: dermotduffy <dermot.duffy@gmail.com>
2026-08-30 17:33:48 -07:00
Dermot Duffy fe7ac89982 test: Avoid test flakiness by waiting for request count (#2740) 2026-08-30 16:39:39 -07:00
Dermot Duffy bb6794ac49 fix: Give media that is still loading a grace period before rebuilding (#2739)
- Related: #2718
2026-08-30 15:40:24 -07:00
Dermot Duffy 04c2da6379 fix: Do not use bare ha-icon for call controls (#2738)
- Closes: #2735
2026-08-30 14:31:33 -07:00
Matthijsanddermotduffy e6bb0eb0e0 fix: claim pointer focus without a visible focus ring (#2733)
Since f240646 (#2639, first released in v8.0.0) the card claims focus on
any `pointerdown` inside it, so that `key` triggers receive their
keyboard events (`keyboard-state-manager.ts`). The claim is a script
call, `element.focus({ preventScroll: true })`, and script-initiated
focus comes with the browser's focus indicator: after a pointer press
while focus was outside the card, the card matches `:focus-visible` and
Chromium draws its default ring around the entire card (measured:
`outline: auto 1px rgb(238, 238, 238)`, a bright line on a dark
dashboard). The ring then persists until focus leaves the card, which
users experience as a white border that appears intermittently when they
click or tap the card.

Ordinary dashboard cards are unaffected because they rely on the
browser's native pointer focus, which shows no indicator. Isolated in
the same browser, a plain `tabindex` element gains focus from a click
without matching `:focus-visible`, while `focus()` from script does
match it. v7 did not claim focus at all, so it never showed this.

**Change:** pass the intent along with the claim: `element.focus({
preventScroll: true, focusVisible: false })`. This code path only runs
for pointer interaction, where no indicator is wanted. Keyboard focus
does not pass through it: tabbing to the card keeps its ring, and the
`key` trigger support from #2639 is unchanged. Browsers without
`FocusOptions.focusVisible` ignore the option and simply keep today's
behaviour. (`focusVisible` is not yet in the bundled TypeScript DOM
types, hence the small global augmentation.)

**Verification:**

- Unit test asserts the focus claim carries `focusVisible: false`.
- Measured in Chromium 152 on a live dashboard: before, a pointer press
on the card leaves it `:focus-visible` with the UA default ring; after,
the same press focuses the card without one, and reaching the card with
Tab still shows the ring. In the same browser, `focus({ focusVisible:
false })` verifiably suppresses `:focus-visible` where a plain `focus()`
sets it.
- `yarn run test`, `yarn run test:browser` (chromium and firefox), `yarn
run lint` and `yarn run typecheck` pass. The webkit browser run fails
one focus test in this local environment, identically on unmodified
`main`, so it is unrelated to this change.

---------

Co-authored-by: dermotduffy <dermot.duffy@gmail.com>
2026-08-30 14:04:40 -07:00
Dermot Duffy f2e8681daf fix: Default advanced-camera-card-icon to display: block (#2737)
- Inspired by @tieskuh and #2734
2026-08-30 13:40:35 -07:00
Matthijsanddermotduffy fc7e09952f fix: vertically center icons within icon buttons (#2734)
Menu icons sit visibly high inside their round buttons in the iOS
companion app, and one pixel high everywhere else. The card's icon
wrapper (`advanced-camera-card-icon`) is slotted into `ha-icon-button`,
whose label renders slotted content inside a plain `<span>`. The wrapper
is an `inline-block`, so it rides the text baseline and leaves the
font's descender space underneath it: the span grows taller than the
icon (measured: 24.5px around a 22.5px icon under Roboto), the button's
flex layout centers the *span*, and the icon lands high by half the
descent.

That descent is a property of the active font, which is why the offset
differs per platform: about 1px under Roboto, and about 2px when the
font stack resolves to a system font, as on iOS, where it is clearly
visible inside the round menu button background. Slotted Home Assistant
icons do not show this because they are laid out block-level via
`--ha-icon-display`, which the card already sets; the card's own wrapper
element reintroduces the inline-block one level up.

**Change:** lay the wrapper out block-level wherever it is slotted into
`ha-icon-button` (`button.scss`, which also covers the submenu and
next/previous controls). Block layout has no baseline, so the label span
shrinks to exactly the icon and the icon centers.

**Verification:**

- The structure (flex button, label span, slotted icon) rebuilt
standalone in Playwright Chromium and WebKit: with an inline-block icon
the offset is 1px under Roboto and 1.75 to 2px under system fonts, in
both engines; with a block icon it is 0.0px in every engine, font, and
button size tried.
- Measured on a live HA 2026.8.3 dashboard (45px menu buttons): before,
every menu icon center sat 1px above its button center; after, 0.0px for
both a standard menu button and a conditional
`advanced-camera-card-menu-icon` element.
- `yarn run test`, `yarn run test:browser` (chromium), `yarn run lint`,
`yarn run typecheck` pass.

---------

Co-authored-by: dermotduffy <dermot.duffy@gmail.com>
2026-08-30 12:11:10 -07:00
Dermot Duffy d24771db64 fix: Stop reporting a stall when a live provider replaces its media element (#2728)
- Related: #2718
2026-08-30 11:39:56 -07:00
Dermot Duffy c9290fc6be fix: Remove bare method call for mp4 in go2rtc (#2727)
- Closes: #2721
2026-08-29 14:40:56 -07:00
Dermot Duffy 82b7effba3 docs: Clarify integration version minimum (#2725)
- Closes: #2722
2026-08-29 14:24:31 -07:00
Dermot Duffy 1135dd8ec0 fix: go2rtc live provider should work with non-proxied absolute URLs (#2724)
- Closes: #2719
2026-08-29 14:08:48 -07:00
Dermot Duffy 4b101545cc fix: Prevent premature reinitialization when stale HA reconnects (#2717)
- Closes: #2714
2026-08-29 13:47:38 -07:00
Dermot Duffy fb53681978 fix: Cache 2-way audio detection to avoid re-probing (#2716)
- Closes: #2299
2026-08-28 21:23:49 -07:00
Dermot Duffy 8ee69be58b fix: Download recordings with a video file extension (#2712)
- Closes: #2711
2026-08-27 19:17:15 -07:00
Filip Pytlounanddermotduffy 3ee6b6059e feat: Add microphone audio processing constraints (#2708)
## Summary

- add optional microphone constraints for echo cancellation, noise
suppression, automatic gain control, and channel count
- request configured values as non-mandatory `ideal` constraints
- expose privacy-safe microphone capabilities, requested constraints,
and applied settings in card diagnostics
- document the new configuration and add schema, microphone manager, and
diagnostics tests

## Motivation

The card currently calls `getUserMedia()` with `audio: true`. This
leaves echo cancellation, noise suppression, automatic gain control, and
channel count implicit.

Browser and device behavior differs. Explicit processing defaults can
regress microphone gain or amplify noise on some devices. This change
therefore keeps all processing constraints optional and configurable.

## Configuration

```yaml
live:
  microphone:
    constraints:
      echo_cancellation: true
      noise_suppression: true
      auto_gain_control: false
      channel_count: 1
```

Configured values use `ideal` constraints. A browser can ignore
unsupported values. Card diagnostics show the browser capabilities, the
requested constraints, and the reported applied settings.

## Backward compatibility

- existing configurations still use `audio: true`
- no audio-processing defaults are added
- explicit `false` values are preserved
- diagnostic output excludes device and group identifiers

## Validation

- focused microphone, schema, and diagnostics tests: 46 passed
- full test suite: 7,177 passed
- lint passed
- format check passed
- typecheck passed
- unused-code check passed
- production build passed

The optional constraints were also tested successfully with an iOS Home
Assistant Companion client and a go2rtc-based full-duplex intercom. This
is a client microphone-processing change only. It does not add backend
audio denoise.

---------

Co-authored-by: dermotduffy <dermot.duffy@gmail.com>
2026-08-24 07:38:33 -07:00
Dermot Duffy 543e5d0fcf fix: Report a go2rtc backchannel offer error as a failure rather than a missing capability (#2710) 2026-08-23 21:54:20 -07:00
Dermot Duffy e6b93d53e9 fix: Reduce visual clutter on startup (#2709)
- Closes: #2584
2026-08-23 12:25:44 -07:00
Dermot Duffy 03d9df8282 chore: Standardize code, comments and docs on US-English spelling (#2707) 2026-08-23 08:57:41 -07:00
Dermot Duffy 965f2b4c9d fix: Keep the notification popup open while its text is selected (#2706) 2026-08-22 21:29:04 -07:00
Dermot Duffy b2f3243f3e fix: Size the gallery fallback icon frame to fill the thumbnail box (#2705)
- Closes: #2701
2026-08-22 15:02:28 -07:00
Dermot Duffy 60e01cf537 chore: Migrate from @lit-labs/task to @lit/task (#2704)
- Closes: #2703
2026-08-22 14:15:07 -07:00
Dermot Duffy 0aebf3c484 fix: Keep the notification popup visible / centered (#2702)
- Closes: #2693
2026-08-22 08:36:42 -07:00
Dermot Duffy 2f74889bcb fix: Cancel the pending debounced resize when the media dimensions container disconnects (#2700)
- Closes: #2699
2026-08-21 20:45:31 -07:00
Dermot Duffy 11cc543406 fix: Hold the 2-way audio backchannel open for the shortest possible time (#2697)
The card claimed a camera's ONVIF audio backchannel in two places that
had
nothing to do with a call: the capability probe at camera init
(`&microphone`),
and a pre-armed `sendonly` audio transceiver on every live WebRTC offer.
Merely
looking at a dashboard occupied the camera's speaker line. Outbound
audio now
travels on its own audio-only WebRTC connection, opened when a call is
answered
and closed when it ends.

- The backchannel is claimed only for the duration of a call. Idle
viewing
  claims nothing.
- Two-way audio now works in `mse`, `mp4` and `mjpeg` modes (note: the
outbound
  audio still traverses WebRTC).
- No renegotiation and no video blink at call start or end.
- A call that cannot carry audio now reports it and ends, instead of
showing a
  live microphone that goes nowhere.
- `live.microphone.always_connected` is now purely about the browser
microphone
  permission prompt.
- Call setup measured at 66ms (LAN) and ~260ms (cellular) for ICE and
DTLS, plus
  ~300ms for `go2rtc` to open an RTSP backchannel.

Verified against a live Frigate + `go2rtc` instance, and by unit tests
at 100%
coverage.

 - Closes #2691
 - Closes #2039
 - Closes #2178

Ref #2299 -- the probe no longer opens a backchannel, but it still runs
per
camera on every load and reconnect, and still dials the camera on the
direct-`go2rtc` path. Caching remains to be done.

Ref AlexxIT/go2rtc#1860 -- once a call has opened a backchannel,
`go2rtc` keeps
that media set up on the camera's RTSP session for the life of the
producer.

Diagnoses #2678
2026-08-21 20:13:58 -07:00
Dermot Duffy 2d7c86c93c refactor: Convert the build scripts to TypeScript and group them (#2696)
- Closes: #2695
2026-08-21 14:18:37 -07:00
Dermot Duffy 1e03e6a3d9 fix: Stop the automatic upgrade from discarding valid configuration (#2692)
- Closes #2689
2026-08-19 17:02:46 -07:00
Dermot Duffy 84b90bcc7e fix: Remove the unnecessary item limit from folder media (#2688)
- Fixed: #2573
2026-08-17 21:49:11 -07:00
Dermot Duffy 858c5d0610 fix: Move upgrade button to top of editor (#2687) 2026-08-14 21:13:10 -07:00
Dermot Duffy c2f25861ea fix: Remove the microphone selection conditions (#2686)
- Closes: #2679

BREAKING CHANGE: `selected` and `unselected` are removed from
`live.microphone.auto_unmute` / `auto_mute`. A camera change ends any
call and the microphone only carries audio during a call, so neither
were useful.
2026-08-14 18:16:39 -07:00
Dermot Duffy 85d6811761 fix: Release the microphone to the browser when a call ends (#2685)
The microphone is connected when a call needs it and released the moment
that
call ends, so the browser stops reporting it as in use at hangup rather
than
`disconnect_seconds` later.

Existing configurations are migrated automatically by the visual editor.

 - Closes: #2681 

BREAKING CHANGE: `live.microphone.disconnect_seconds` is removed. The
microphone is released when a call ends, so there is no idle countdown
to
configure. Use `live.microphone.always_connected` to hold it open
instead.

BREAKING CHANGE: The `microphone_connect` and `microphone_disconnect`
actions
are removed. The card owns the microphone lifecycle; `microphone_mute`
and
`microphone_unmute` remain.

BREAKING CHANGE: `call` is removed from `live.microphone.auto_mute`,
whose
default is now `[]`. The microphone is muted when a call ends regardless
of
this option.

BREAKING CHANGE: `microphone_unmute` has no effect outside a call.
Nothing
carries the audio at any other time, so the request is ignored rather
than
opening the microphone.
2026-08-14 16:17:31 -07:00
dermotduffy 65bc52d18e Merge remote-tracking branch 'origin/main' into dev 2026-08-10 21:32:41 -07:00
68b10622c5 chore: Merge branch 'main' into dev (#2676)
Co-authored-by: verjager <78507418+verjager@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-10 21:26:54 -07:00
Dermot Duffy 70ca0a9af4 fix: Stop a released PTZ key ending another held key's movement (#2675)
- Closes: #2668
2026-08-10 20:22:39 -07:00
Dermot Duffy 3808a1b030 fix: Stop PTZ movement and browser key handling from fighting (#2674)
- Closes: #2623
2026-08-10 14:49:50 -07:00
Dermot Duffy a8aa9ec7c2 fix: Should recover from an interrupted initialization (#2673) 2026-08-10 14:27:40 -07:00
Dermot Duffy 98a0084e7a fix: Stop the live media frame collapsing while a stream loads (#2671)
- Closes: #2574
2026-08-09 21:17:06 -07:00
Dermot Duffy 45f88a86a4 fix: Restore picture element actions on Home Assistant 2026.8+ (#2670)
- Closes: #2663
2026-08-09 20:58:15 -07:00
Dermot Duffy a8ce6acb44 chore: Enable noImplicitAny across the codebase (#2667) 2026-08-09 13:22:57 -07:00
dependabot[bot] 6807fd7690 chore(deps): bump release-drafter/release-drafter from 7.6.0 to 7.7.0 (#2636)
Bumps
[release-drafter/release-drafter](https://github.com/release-drafter/release-drafter)
from 7.6.0 to 7.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-drafter/release-drafter/releases">release-drafter/release-drafter's
releases</a>.</em></p>
<blockquote>
<h2>v7.7.0</h2>
<h1>What's Changed</h1>
<h2>New</h2>
<ul>
<li>feat: no new contributor template (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1687">#1687</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
<li>feat: categorize PRs based on conventional title (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1556">#1556</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
<li>feat: log all config sources (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1674">#1674</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
</ul>
<h2>Dependency Updates</h2>
<!-- raw HTML omitted -->
<ul>
<li>build(deps-dev): bump postcss from 8.5.17 to 8.5.23 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1683">#1683</a>)
<a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a></li>
<li>chore(deps): update npm tool constraint to 12.0.1 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1668">#1668</a>)
<a
href="https://github.com/apps/renovate"><code>@​renovate[bot]</code></a>,
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
<li>chore(deps): update npm tool constraint to 11.18.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1665">#1665</a>)
<a
href="https://github.com/apps/renovate"><code>@​renovate[bot]</code></a>,
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
<li>chore(deps): update node.js to v24.18.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1664">#1664</a>)
<a
href="https://github.com/apps/renovate"><code>@​renovate[bot]</code></a></li>
<li>build(deps): support GraphQL 17 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1678">#1678</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
<li>build(deps-dev): Update js-yaml to 4.3.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1677">#1677</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
<li>build(deps-dev): bump shell-quote from 1.8.4 to 1.10.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1676">#1676</a>)
<a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a></li>
<li>build(deps): bump immutable from 5.1.5 to 5.1.9 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1675">#1675</a>)
<a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a></li>
<li>build(deps-dev): bump brace-expansion from 5.0.6 to 5.0.7 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1672">#1672</a>)
<a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a></li>
</ul>
<!-- raw HTML omitted -->
<h2>Bug Fixes</h2>
<ul>
<li>fix: preserve proxy-aware fetch in octokit client (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1682">#1682</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
</ul>
<h2>Maintenance</h2>
<ul>
<li>chore: update references to branch master to main (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1686">#1686</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
<li>ci: rely on conventional pr titles (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1685">#1685</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li>No new contributors</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-drafter/release-drafter/compare/v7.6.0...v7.7.0">https://github.com/release-drafter/release-drafter/compare/v7.6.0...v7.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/34d80673e067bdc0c24568d3af899c216adcfaa9"><code>34d8067</code></a>
chore: release v7.7.0</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/cd773d2b9b75f7513ef1d92c9bfe760e0d138c59"><code>cd773d2</code></a>
style: format and lint docs</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/14d2d94a63c5f6d5c41bb4efefbefe2f8d48b56e"><code>14d2d94</code></a>
feat: no new contributor template (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1687">#1687</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/94daa9e59c22253f20710d0b481d278a7f40c444"><code>94daa9e</code></a>
chore: update references to branch master to main (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1686">#1686</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/b195e66e4241f7da6ba6eb63d44a37ce6a53794d"><code>b195e66</code></a>
ci: rely on conventional pr titles (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1685">#1685</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/246878a94cb0e795d863c2de806b0752cde1480f"><code>246878a</code></a>
build(deps-dev): bump postcss from 8.5.17 to 8.5.23 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1683">#1683</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/c3acaa78fc5d92281d94d01a7e91439fbd5f9a2d"><code>c3acaa7</code></a>
fix: preserve proxy-aware fetch in octokit client (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1682">#1682</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/22a22c894a8fa53b0dceb19263a406cff84e0787"><code>22a22c8</code></a>
chore(deps): update npm tool constraint to 12.0.1 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1668">#1668</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/133e592abf06796a6194d6a7d6e0c6c7b859b4ae"><code>133e592</code></a>
chore(deps): update npm tool constraint to 11.18.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1665">#1665</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/b806fc00898d1967c32e93cd4a68f34b48ce4b6b"><code>b806fc0</code></a>
chore(deps): update node.js to v24.18.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1664">#1664</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/release-drafter/release-drafter/compare/v7.6.0...v7.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-drafter/release-drafter&package-manager=github_actions&previous-version=7.6.0&new-version=7.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-09 13:19:26 -07:00
dependabot[bot] fc8f95800c chore(deps): bump actions/upload-artifact from 6 to 7 (#2655)
Bumps
[actions/upload-artifact](https://github.com/actions/upload-artifact)
from 6 to 7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>v7 What's new</h2>
<h3>Direct Uploads</h3>
<p>Adds support for uploading single files directly (unzipped). Callers
can set the new <code>archive</code> parameter to <code>false</code> to
skip zipping the file during upload. Right now, we only support single
files. The action will fail if the glob passed resolves to multiple
files. The <code>name</code> parameter is also ignored with this
setting. Instead, the name of the artifact will be the name of the
uploaded file.</p>
<h3>ESM</h3>
<p>To support new versions of the <code>@actions/*</code> packages,
we've upgraded the package to ESM.</p>
<h2>What's Changed</h2>
<ul>
<li>Add proxy integration test by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li>
<li>Upgrade the module to ESM and bump dependencies by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/762">actions/upload-artifact#762</a></li>
<li>Support direct file uploads by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/764">actions/upload-artifact#764</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Link"><code>@​Link</code></a>- made
their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v6...v7.0.0">https://github.com/actions/upload-artifact/compare/v6...v7.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-artifact/commit/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a"><code>043fb46</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/797">#797</a>
from actions/yacaovsnc/update-dependency</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/634250c1388765ea7ed0f053e636f1f399000b94"><code>634250c</code></a>
Include changes in typespec/ts-http-runtime 0.3.5</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/e454baaac2be505c9450e11b8f3215c6fc023ce8"><code>e454baa</code></a>
Readme: bump all the example versions to v7 (<a
href="https://redirect.github.com/actions/upload-artifact/issues/796">#796</a>)</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/74fad66b98a6d799dc004d3353ccd0e6f6b2530e"><code>74fad66</code></a>
Update the readme with direct upload details (<a
href="https://redirect.github.com/actions/upload-artifact/issues/795">#795</a>)</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f"><code>bbbca2d</code></a>
Support direct file uploads (<a
href="https://redirect.github.com/actions/upload-artifact/issues/764">#764</a>)</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/589182c5a4cec8920b8c1bce3e2fab1c97a02296"><code>589182c</code></a>
Upgrade the module to ESM and bump dependencies (<a
href="https://redirect.github.com/actions/upload-artifact/issues/762">#762</a>)</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/47309c993abb98030a35d55ef7ff34b7fa1074b5"><code>47309c9</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/754">#754</a>
from actions/Link-/add-proxy-integration-tests</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/02a8460834e70dab0ce194c64360c59dc1475ef0"><code>02a8460</code></a>
Add proxy integration test</li>
<li>See full diff in <a
href="https://github.com/actions/upload-artifact/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-09 13:19:14 -07:00
Dermot Duffy 5e199b5612 fix: Report media failures once per failure (#2666) 2026-08-09 10:48:17 -07:00
Dermot Duffy 8d8d486afa test: Split browser test-utils (#2662)
- Closes: #2660
2026-08-07 16:27:28 -07:00
Dermot Duffy 673d8fe133 test: Add browser tests for the media viewing gallery and viewer (#2661) 2026-08-07 16:08:56 -07:00
Dermot Duffy 567690831c feat: Show the build date on the loading banner of unreleased builds (#2659) 2026-08-05 22:15:00 -07:00
Dermot Duffy c137f4c00c fix: Report and retry media failures for every camera in a grid (#2658)
- Closes: #2637
 - Related: #2099
2026-08-05 21:35:47 -07:00