Skip to content

Releases: DejavuMoe/edgeTTS

edgeTTS 0.9.6

Choose a tag to compare

@github-actions github-actions released this 11 Oct 03:13
v0.9.6
c7cf10b

Changes

Fixed

  • Keep synthesis running when Escape dismisses the interface language menu. An unhandled Escape still cancels the active request.
  • Block synthesis while a TXT import is pending, including keyboard shortcuts, so the request and editor cannot refer to different text. Preserve edits and clears that supersede a read.
  • Clear an unavailable active voice when a refreshed catalog is empty, and allow the favorites filter to be turned off after its last matching voice disappears.
  • Remove the UTF-8 import BOM exactly once, preserving a leading U+FEFF in the actual content and enforcing the 20,000-code-point limit against the preserved text.
  • Preserve idle timeout failures between audio reads instead of reporting a successful end. Cancel abandoned WebSocket initialization and ignore delayed close events from replaced sockets.
  • Map upstream failures on the first audio read to HTTP 502 for both speech APIs, before streaming headers are committed.
  • Apply immutable caching only to assets inside the web root; a parent directory named assets no longer causes the HTML entry point to be cached for a year.
  • Use the configured PORT in the container healthcheck, retaining 8080 as the default.
  • Recheck the highest published stable version before writing a GitHub release, so a delayed older release cannot move GitHub's latest marker backward.
  • Give Nginx proxy test runs unique container names and clean up only resources they created.
  • Discard and close segmented audio that arrives after iterator return, and preserve cancellation errors in non-segmented streams while releasing concurrency permits exactly once.
  • Share an in-flight voice catalog refresh without sharing callers' failure policies: ordinary reads may use the cached catalog, while forced refreshes still report upstream failures.
  • Keep reading the complete audio response when the browser's MediaSource quota is exhausted. Preserve buffered preview playback, then switch to the full downloadable recording while retaining playback position and paused state.

Compatibility

  • Existing API shapes, authentication, configuration and text limits are unchanged. The fixes include regression coverage for all 16 confirmed audit findings and the MediaSource quota case.

See the changelog for details.

Upgrade

Check the changes above for compatibility notes. Update your Compose image to ghcr.io/dejavumoe/edgetts:0.9.6, retain your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Use the immutable digest below for reproducible deployment and rollback.

Verification

  • Tag v0.9.6 points to commit c7cf10baa055177b7f3d7aea05f709c52650bc51.
  • Tag CI passed quality, Docker runtime, Nginx proxy and multi-architecture publication checks.
  • Registry checks confirmed linux/amd64, linux/arm64, SLSA provenance and SPDX SBOM attestations. The sha-c7cf10baa055177b7f3d7aea05f709c52650bc51, 0.9.6 and latest references resolve to the same OCI index.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.9.6
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:2ae9711b4d8dfc7cffea6dc39e9755a9d41983e77fbc5a3ba25e3bf156a20cc0
  • linux/amd64: sha256:b809870c601c6d28a8e9bc9041e1fd3948d962d3805171695ce6569a1a21d3df
  • linux/arm64: sha256:336b0b9cddeeafdea944d0adb936464f25ed42836adf801a85d70e3bd458ccde

edgeTTS 0.9.5

Choose a tag to compare

@github-actions github-actions released this 05 Oct 16:05
v0.9.5
7148b5f

Changes

Changed

  • Switch the production container and healthcheck to Bun 1.4.2, pinned by image digest. Keep Node.js and pnpm for source builds and bare-metal deployments. Preserve API contracts, environment variables, port 8080 and the existing non-root UID/GID 1000.
  • Reduce the amd64 container root filesystem from about 160 MiB to 97 MiB with the Bun musl runtime and pruned dependency tests, examples and documentation. Preserve ICU, TLS, runtime and package licenses, the WebUI and both speech APIs; enforce a 105 MiB image budget in CI.
  • Build the platform-independent JavaScript once on the builder's native CPU, reuse the build cache in CI, and compress published layers with gzip level 9. Both target architectures run an offline final-image contract check, including real HTTP streaming, disconnect cancellation and queue release, before publication completes. CI also verifies graceful SIGTERM shutdown.
  • Avoid allocating Unicode offset tables when short text already fits in a single segment.

Security

  • Authenticate protected routes before reading or parsing request bodies. Missing or invalid credentials take precedence over malformed or oversized bodies; authenticated request validation and the public health/WebUI routes are unchanged.
  • Make container application code and assets root-owned so the non-root service cannot replace them, and exclude nested environment and npm configuration files from the build context.
  • Update Fastify to 5.12.5, fast-uri to 3.1.8 / 4.2.1, and ip-address to 10.7.3 within existing dependency ranges, resolving the six known production dependency audit findings.

See the changelog for details.

Upgrade

Check the changes above for compatibility notes. Update your Compose image to ghcr.io/dejavumoe/edgetts:0.9.5, retain your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Use the immutable digest below for reproducible deployment and rollback.

Verification

  • Tag v0.9.5 points to commit 7148b5f854839554d3ff3b00f127787fca7c6de9.
  • Tag CI passed quality, Docker runtime, Nginx proxy and multi-architecture publication checks.
  • Registry checks confirmed linux/amd64, linux/arm64, SLSA provenance and SPDX SBOM attestations. The sha-7148b5f854839554d3ff3b00f127787fca7c6de9, 0.9.5 and latest references resolve to the same OCI index.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.9.5
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:9af0ad3c6a1b743d9b97702913b255cc60050efea3185659946680eec24d9cc6
  • linux/amd64: sha256:8dcc65a7924b8ac16ab6c3f55ccedcec6bab863564a499fb8fdeb464f678ab78
  • linux/arm64: sha256:7d8fff7370cf9ac4afdb2cf0eb4f5d9abd2166a14dfc3f9628a8b5e48507e3de

edgeTTS 0.9.4

Choose a tag to compare

@DejavuMoe DejavuMoe released this 05 Oct 12:43
v0.9.4
758ebb4

Changes

Added

  • STranslate integration instructions in the English, Chinese and Japanese guides, with links to the edgeTTS plugin and its installation package. The guides cover API token authentication, automatic voice discovery, and native and OpenAI-compatible speech APIs.

Changed

  • Stable tag builds now create the GitHub release after the container image passes verification. Release notes include the changelog, upgrade instructions, and immutable multi-architecture image references.

Security

  • Update transitive brace-expansion dependencies from 5.0.9 to 5.0.12 and from 1.1.18 to 1.1.21, addressing recursion denial-of-service advisories and restoring the production dependency audit without advisory exclusions.

See the changelog for details.

Upgrade

Check the changes above for compatibility notes. Update your Compose image to ghcr.io/dejavumoe/edgetts:0.9.4, retain your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Use the immutable digest below for reproducible deployment and rollback.

Verification

  • This release entry was created manually after a missing executable permission blocked the automatic step. The script permission fix is on main; the verified release tag and image digests are unchanged.

  • Tag v0.9.4 points to commit 758ebb4af126a6ad27a086436928ea55642416a2.

  • Tag CI passed quality, Docker runtime, Nginx proxy and multi-architecture publication checks.

  • Registry checks confirmed linux/amd64, linux/arm64, SLSA provenance and SPDX SBOM attestations. The sha-758ebb4af126a6ad27a086436928ea55642416a2, 0.9.4 and latest references resolve to the same OCI index.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.9.4
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:f780306adc39c5bb3a58f9e45632010085aee0995b7c1b285fd061fca0fbe1f2
  • linux/amd64: sha256:6fe79d582c4255fd9ba6af1a5eb1f41971c27d2418fbc4ad84d1026e32b4cf07
  • linux/arm64: sha256:c83de52828232f4c447d8efb866d984b1faf07e301c5c33b30bd7e8621575989

edgeTTS 0.9.2

Choose a tag to compare

@DejavuMoe DejavuMoe released this 29 Sep 15:52
v0.9.2
10fd249

Changes

Added

  • Every voice has a portrait, drawn locally with DiceBear's Dylan style. The locale picks skin tones and hair colours common where the voice's language is spoken, and the gender picks the haircut; the voice ID seeds the choice, so each voice keeps its face. Portraits load in their own chunk after the first paint, with the monogram in their place until then.
  • The web app has a favicon, Apple touch icon, web app manifest, description and Open Graph metadata, and the page title follows the interface language.

Changed

  • The logo is redrawn as lines of text, one of them breaking into a waveform.
  • The container image is built on Alpine: the runtime stage is plain alpine:3.24 with the Node binary and libstdc++ only, without npm, npx, Yarn or Corepack, and source maps, type declarations and Markdown files are pruned from its dependencies. The unpacked image shrinks from about 280 MB to 168 MB, and the compressed download from 85 MB to 55 MB. The node user keeps UID/GID 1000.

Fixed

  • The finished take's waveform now draws when the web app is served by edgeTTS. The Content Security Policy blocked the browser from reading the take back from its local Blob URL, so the plain timeline was always shown; connect-src now allows blob: alongside the page's origin.

See the changelog for details.

Upgrade

Check the changes above for compatibility notes. Update your Compose image to ghcr.io/dejavumoe/edgetts:0.9.2, retain your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Use the immutable digest below for reproducible deployment and rollback.

Verification

  • Tag v0.9.2 points to commit 10fd249b388d803cd8c4c9880c4fc50028279c80.
  • Tag CI passed quality, Docker runtime, Nginx proxy and multi-architecture publication checks.
  • Registry checks confirmed linux/amd64, linux/arm64, SLSA provenance and SPDX SBOM attestations. The sha-10fd249b388d803cd8c4c9880c4fc50028279c80, 0.9.2 and latest references resolve to the same OCI index.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.9.2
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:e188d86b2a933b4306d4657dc26c5fb445c77d0f9cce041900addfc284661197
  • linux/amd64: sha256:d0a6cd57f2fba2976b5ebbdf5af9a48b5fb22dde780c14968d619fd3925f90f5
  • linux/arm64: sha256:053b1b7baf0613da1e8dd6987a86d0c9bd84d335e9b95f56171d6c93cbfebe3b

edgeTTS 0.9.1

Choose a tag to compare

@DejavuMoe DejavuMoe released this 26 Sep 03:54
v0.9.1
11dfd95

Changes

  • Cancelled non-segmented synthesis now closes late upstream audio and returns AbortError instead of an empty successful stream.
  • Voice discovery timeouts now abort the underlying HTTP request, so abandoned requests do not accumulate across retries.
  • Completed audio above 12 MiB skips an unnecessary Blob read before waveform decoding. Playback and the plain timeline are unchanged.

See the changelog for details.

Upgrade

The HTTP API, configuration, authentication and audio formats are unchanged. Update your Compose image to ghcr.io/dejavumoe/edgetts:0.9.1, retain your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Use the immutable digest below for reproducible deployment and rollback.

Verification

  • Signed tag v0.9.1 points to commit 11dfd95f9f3dfbe9d5cbaf61fdd65e0e7fa5a9d4.
  • Tag CI passed quality, Docker runtime, Nginx proxy and multi-architecture publication checks.
  • Registry checks confirmed linux/amd64, linux/arm64, SLSA provenance and SPDX SBOM attestations. The tested sha-11dfd95f9f3dfbe9d5cbaf61fdd65e0e7fa5a9d4, 0.9.1 and latest references resolve to the same OCI index.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.9.1
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:ff9643bcd0ec27a1b35574c7791c042631430cf5fa2697b078d9fb4381be06f1
  • linux/amd64: sha256:376f5389cd53cf9bfc9f6c513f7326f4d81d88f91c733f2d2c27734c1cf769f2
  • linux/arm64: sha256:da52b9c80ab9b83fe9721b519577778ae50dcd07c0b83f8bc684af9bc3008104

edgeTTS 0.9.0

Choose a tag to compare

@DejavuMoe DejavuMoe released this 25 Sep 16:36
v0.9.0
31170ca

Changes

  • A workbench laid out in working order. The synthesize button ends the text, next to the character count, like a send button. The result appears directly below the text, and voice and delivery settings fill a full-height panel on the right. On phones the page reads top to bottom (text, synthesize, result, settings) with nothing pinned over the content.
  • See the take you made. The finished audio is drawn as its own waveform, decoded locally in your browser, with the played part in the accent colour and a time readout under the pointer. Click or drag to seek; keyboard, touch and screen readers use the same slider as before. Nothing is uploaded. Takes above 12 MiB, or in browsers that cannot decode them, keep the plain timeline.
  • A clear result line. The take shows the short voice name and its settings (Xiaoxiao · 标准 · 1.00× · 2 段 · 573 KiB); the full voice name and ID are in its tooltip.
  • Voices you can tell apart. Every voice has a monogram in its own stable colour, and while a take is synthesizing, a row of bars shows the voice forming.
  • Polish throughout. Quality options are vertically centred, sliders show label and value above a full-width track with a compact reset, hover and focus states are consistent across controls, and stray accent lines and side stripes are gone. Phone and laptop layouts were fixed so nothing overlaps or gets cut off.

See the changelog for details.

Upgrade

The HTTP API, configuration variables, authentication, audio formats, download filenames and browser-stored preferences and favorites are unchanged. Update the image reference in your compose.yaml to ghcr.io/dejavumoe/edgetts:0.9.0, keep your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Pin the verified OCI digest below for reproducible deployment and rollback.

Verification

  • Linux build, typecheck, lint, 762 application/package tests, 47 architecture checks, 40 documentation checks, 61 release governance checks and formatting passed; pnpm audit --prod reports no known high or critical advisories.
  • The workbench was reviewed at desktop, laptop and phone sizes in light and dark schemes, in Chinese, English and Japanese, with synthesis against the live Microsoft service.
  • The upstream integration is unchanged since 0.7.0, so the live smoke tests were not rerun.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.9.0
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:b880d70357e0e83d9a7ace76f6b1c1d7176d3e33f9cb80252c7ac48d4cfb9fbf

edgeTTS 0.8.0

Choose a tag to compare

@DejavuMoe DejavuMoe released this 25 Sep 05:45
v0.8.0
73facb0

Changes

  • Redesigned web workbench. A full-height text sheet sits beside an inspector for voice and delivery settings, with a transport bar pinned to the bottom. The synthesize action, live progress, player and download stay in view, so results no longer appear below the fold.
  • Voice list instead of a dropdown. All voices are browsable in one list, grouped by region with names in your interface language, favorites pinned at the top, short speaker names ("Xiaoxiao") and full keyboard navigation.
  • Quicker controls. Quality is a two-way choice. Speed, pitch and volume each take one row and offer a reset only when changed.
  • New visual style. Warm neutral colors with a single accent, a full dark mode, and WCAG AA text contrast in both schemes, enforced by tests.
  • Repository layout. Guides now live in docs/en/, docs/zh-CN/ and docs/ja/. Production templates are real files, deploy/compose/compose.yaml and deploy/systemd/edgetts.service, and the guides are kept identical to them by tests.
  • The README Quick Start Compose file now matches the deployment guide: configurable host binding (EDGETTS_BIND_ADDRESS, EDGETTS_HOST_PORT) and the fail-closed REQUIRE_API_KEY default.

See the changelog for details.

Upgrade

The HTTP API, configuration variables, authentication, audio formats and browser-stored preferences and favorites are unchanged. Your existing compose.yaml keeps working: update the image reference to ghcr.io/dejavumoe/edgetts:0.8.0, keep your .env, then run:

docker compose pull edgetts
docker compose up -d edgetts

Documentation URLs changed. For example, docs/deployment.md is now docs/en/deployment.md; update any bookmarks. A single-instance replacement can interrupt active streams. Pin the verified OCI digest below for reproducible deployment and rollback.

Verification

  • Linux build, typecheck, lint, 748 application/package tests, 47 architecture checks, 40 documentation checks, 61 release governance checks and formatting passed.
  • The new interface was reviewed in a browser against the live Microsoft service at desktop, laptop and phone sizes, in light and dark schemes.
  • pnpm audit --prod reports no known vulnerabilities. The upstream integration is unchanged since 0.7.0, so the live smoke tests were not rerun.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.8.0
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:5e7d9df60402f291b462b253c865025fd2c0a75f85e0476404191af1f8c8eac7

edgeTTS 0.7.0

Choose a tag to compare

@DejavuMoe DejavuMoe released this 25 Sep 01:56
v0.7.0
0831f33

Changes

  • Faster long-text synthesis: all segments of a request now share one upstream connection. In live measurements, median delivery time for an 8-segment text fell from 21.7 s to 11.2 s, and upstream connections from 8 to 1.
  • 400 UNKNOWN_VOICE for voices absent from a fresh cached voice catalog. The check never fetches the catalog, so synthesis never waits on voice discovery.
  • New configuration: SPEECH_RATE_LIMIT_SCOPE=ip (per-address speech budget), TRUST_PROXY, and capacity/timeout tuning (SYNTHESIS_MAX_CONCURRENT, SYNTHESIS_MAX_QUEUED, VOICE_CACHE_TTL_MS, EDGE_*_TIMEOUT_MS).
  • Optional Prometheus metrics at /api/metrics behind the API key (METRICS_ENABLED=true).
  • Generated OpenAPI description: docs/openapi.json.
  • Startup validates every environment variable at once and lists all problems. Invalid-request logs no longer contain rejected values.
  • Internal: lint-enforced architecture boundaries, type-aware linting, a refactored web workbench, multilingual documentation checks, and a production dependency audit in CI. See the architecture decisions and the changelog.

Upgrade

API fields, authentication requirements, default concurrency limits and MP3 formats are unchanged. Two defaults are stricter:

  • An unrecognized SERVE_STATIC value now aborts startup instead of being ignored. Use true or false, or leave it unset.
  • Request bodies are limited to 256 KiB (previously 1 MiB). Every valid request still fits, including 20,000 code points of fully escaped text.

Preserve your existing .env, update the image reference to ghcr.io/dejavumoe/edgetts:0.7.0, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Pin the verified OCI digest below for reproducible deployment and rollback.

Verification

  • Linux build, typecheck, lint, 728 application/package tests, 47 architecture checks, 29 documentation checks, 61 release governance checks and formatting passed.
  • Live Microsoft smoke tests passed for the provider, the service and the HTTP server.
  • pnpm audit --prod reports no known vulnerabilities.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.7.0
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:a1bbc6ceff83a683514b2a3d9841df0405e61166700908ca6852a82356229d4c

edgeTTS 0.6.0

Choose a tag to compare

@DejavuMoe DejavuMoe released this 22 Sep 01:35
v0.6.0
af34fd1

Changes

  • Fix crashes caused by late Edge WebSocket frames arriving after synthesis cancellation, with regression coverage against the real dependency and a local WebSocket server.
  • Add reproducible ablation experiments and fixed-load checks for voice caching, request coalescing, bounded queues and playback progress throttling.
  • Remove an unused rate-limit option while preserving the shared speech quota across both endpoints.
  • Make disconnect-test cleanup deterministic on Linux and await localization-test initialization without React update warnings.
  • Add architecture diagrams to the English, Chinese and Japanese READMEs, simplify deployment/API documentation, and enforce LF text checkout rules.

Upgrade

API fields, authentication requirements, concurrency limits and MP3 formats remain unchanged. Preserve your existing .env, update the image reference to ghcr.io/dejavumoe/edgetts:0.6.0, then run:

docker compose pull edgetts
docker compose up -d edgetts

A single-instance replacement can interrupt active streams. Pin the verified OCI digest below for reproducible deployment and rollback.

Verification

  • Linux build, typecheck, lint, 635 application/package tests and formatting passed.
  • Windows pnpm test passed, including 57 release governance checks.
  • Existing Microsoft integration contracts are covered by local deterministic tests; this release does not claim new live Microsoft synthesis qualification.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.6.0
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:e8a9975393c217609b39f8346f3789a720bfa979d65ffeff02a3ea90551fb6fe
  • linux/amd64: sha256:2846a94413d0881d785ed2dca611f27ac1dcbde4a89adbce71e313d265463099
  • linux/arm64: sha256:e819598f272ff7639c16c331d1dfd7c370dd10b99c6f4f2295d4bc8c93c81e75
  • The version and latest aliases resolve to the same verified index, including both runtime architectures and provenance/SBOM attestations.
  • Release commit: af34fd15b4f191b2a0e04c102e8b2c5f3d7305ab
  • Successful release CI: quality, Docker image contract, deterministic Nginx contract, and multi-architecture publication all passed.

Full changelog: v0.5.0...v0.6.0

edgeTTS 0.5.0

Choose a tag to compare

@DejavuMoe DejavuMoe released this 16 Sep 11:04
v0.5.0
e896e96

Changes

  • Require an API key by default when NODE_ENV=production, while keeping explicit external-auth mode and local development available.
  • Add browser security headers and a Content Security Policy compatible with the workbench's controls and Blob audio playback.
  • Normalize framework and unexpected HTTP errors into the documented JSON envelope without exposing internal error details.
  • Limit voice discovery to 60 authenticated requests per minute per process, independently of the shared speech budget.
  • Expire synthesis queue waits after 30 seconds with 503 SERVER_BUSY, while preserving admitted streams and cleaning up cancellation timers.
  • Fix browser cancellation after response headers, including Blob fallback downloads, and keep JSON timeouts active through response-body reads.
  • Clarify Microsoft online text transmission in all four UI languages and align the English, Chinese and Japanese deployment and API documentation.
  • Fix source-deployment API key generation, move systemd keys out of public unit files, and leave container shutdown time for the server to exit.
  • Remove obsolete audit material, duplicate documentation and unused code; include release guard checks in the standard test command.

Upgrade notes

  • Production authentication: set a valid API_KEY before upgrading. If authentication is provided by a trusted external gateway, explicitly set REQUIRE_API_KEY=false and leave API_KEY unset. Setting this flag to false does not disable verification of an existing key.
  • Preserve the existing .env file and change the deployment image to ghcr.io/dejavumoe/edgetts:0.5.0, then run docker compose pull edgetts and docker compose up -d edgetts.
  • Both speech routes still share a process-wide admission budget; this release does not introduce per-tenant quotas. Audio request fields and MP3 output remain unchanged.
  • Queued clients can now receive 503 SERVER_BUSY after 30 seconds. A single-instance upgrade may interrupt active audio streams.

Verification

  • Build, typecheck, lint, formatting and diff checks passed.
  • 624 tests and 57 release guard checks passed locally.
  • This release does not claim new live Microsoft synthesis qualification. The preceding fixes were checked with desktop MediaSource and mobile-sized Blob playback in Chromium against a local simulated service.

Container distribution

  • Version: ghcr.io/dejavumoe/edgetts:0.5.0
  • Latest: ghcr.io/dejavumoe/edgetts:latest
  • Immutable OCI index: ghcr.io/dejavumoe/edgetts@sha256:0f7b63eef9d013202207e4eb67a3a980a1e8a2ef47046977e0a0bc4bb1468264
  • linux/amd64: sha256:79980478645c2bebc787184fab5a6850b0f6d07d331d7c4e591ecb376f00a25c
  • linux/arm64: sha256:8492cd072d64c75e5a19697b8392d12b79acb352331528c8e0ac7835b24fd1c9
  • Both runtime architectures include SLSA provenance and SPDX SBOM attestations. The version and latest aliases resolve to the same verified index.
  • Release commit: e896e9626de2d710c08278da15257fc7a8f66225
  • Successful release CI

Full changelog: v0.4.0...v0.5.0