chore: prepare av-tools 0.3.0 release
This commit is contained in:
17
CHANGELOG.md
17
CHANGELOG.md
@@ -3,6 +3,23 @@
|
||||
All notable changes to av-tools are documented here. The project follows
|
||||
semantic versioning once a first release is legally publishable.
|
||||
|
||||
## 0.3.0 — 2026-07-27
|
||||
|
||||
- Make imported media and browser-native duration/dimensions available without
|
||||
loading FFmpeg, so recognized files can start playback immediately.
|
||||
- Move authoritative codec, stream, chapter and tag inspection to explicit or
|
||||
operation-driven demand; keep playback usable after inspection failure and
|
||||
expose bounded retry controls.
|
||||
- Inspect automatically when Quick Convert, preview proxies, timeline renders
|
||||
or advanced tools require authoritative details, while preserving
|
||||
deterministic multi-file timeline order.
|
||||
- Recover Firefox probes with a fresh same-mode core, safe MT-to-ST fallback
|
||||
and operation reservations that prevent concurrent mounts or preference
|
||||
changes.
|
||||
- Add Chromium and Firefox evidence proving the supplied 153 MB, 43-minute
|
||||
lecture plays before detailed inspection and retains the same media element
|
||||
afterward.
|
||||
|
||||
## 0.2.1 — 2026-07-27
|
||||
|
||||
- Move the canonical source, manifest schema links, and package registry from
|
||||
|
||||
@@ -8,8 +8,8 @@ telemetry, runtime CDN, remote-media fetch or third-party script.
|
||||
It is also a Toolbox SDK application. The same static build runs directly or
|
||||
under Toolbox Portal with shared shell, theme, help and app switching.
|
||||
|
||||
> **Release status:** 0.2.1 is licensed GPL-3.0-or-later. Its canonical
|
||||
> release consists of the exact reviewed `v0.2.1` source, production
|
||||
> **Release status:** 0.3.0 is licensed GPL-3.0-or-later. Its canonical
|
||||
> release consists of the exact reviewed `v0.3.0` source, production
|
||||
> ZIP/checksum and Corresponding Source bundle published together. See
|
||||
> [Licensing](#licensing).
|
||||
|
||||
@@ -23,7 +23,7 @@ Two workflows keep the product intentionally smaller than a nonlinear editor:
|
||||
- **Edit:** a media bin and sequential non-overlapping clip timeline with
|
||||
non-destructive settings, one export at a time.
|
||||
|
||||
The 0.2 release covers typed/capability-gated conversion and remux,
|
||||
The 0.3 release covers typed/capability-gated conversion and remux,
|
||||
fast/accurate trim, split, compatible/normalized concatenate, reorder, crop,
|
||||
resize, frame-rate change, audio extraction/stream removal, waveform,
|
||||
peak/two-pass loudness normalization, gain, audio/video fades, metadata,
|
||||
|
||||
14
SOURCE.md
14
SOURCE.md
@@ -1,6 +1,6 @@
|
||||
# Source and reproducibility record
|
||||
|
||||
This file identifies the source corresponding to av-tools 0.2.1. It is not a
|
||||
This file identifies the source corresponding to av-tools 0.3.0. It is not a
|
||||
substitute for satisfying a component's licence or for delivering complete
|
||||
Corresponding Source with an object-code release.
|
||||
|
||||
@@ -9,9 +9,9 @@ Corresponding Source with an object-code release.
|
||||
- Canonical repository:
|
||||
`git@git.add-ideas.de:lotobo/av-tools.git`
|
||||
- Browser source: `https://git.add-ideas.de/lotobo/av-tools`
|
||||
- Version: `0.2.1`
|
||||
- Release source identity: immutable annotated tag `v0.2.1`
|
||||
(`refs/tags/v0.2.1`) in the canonical repository.
|
||||
- Version: `0.3.0`
|
||||
- Release source identity: immutable annotated tag `v0.3.0`
|
||||
(`refs/tags/v0.3.0`) in the canonical repository.
|
||||
- Application licence: `GPL-3.0-or-later`; full GPL version 3 terms in
|
||||
`LICENSE`.
|
||||
- Copyright: Copyright © 2026 Albrecht Degering.
|
||||
@@ -22,10 +22,10 @@ the tag exists, is annotated, points to the reviewed release commit and is
|
||||
available without authentication:
|
||||
|
||||
```sh
|
||||
test "$(git cat-file -t v0.2.1)" = tag
|
||||
git rev-parse v0.2.1^{commit}
|
||||
test "$(git cat-file -t v0.3.0)" = tag
|
||||
git rev-parse v0.3.0^{commit}
|
||||
git ls-remote --tags \
|
||||
https://git.add-ideas.de/lotobo/av-tools.git refs/tags/v0.2.1
|
||||
https://git.add-ideas.de/lotobo/av-tools.git refs/tags/v0.3.0
|
||||
```
|
||||
|
||||
The Toolbox manifest names the canonical repository and SPDX licence. Publish
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Third-party notices
|
||||
|
||||
av-tools 0.2.1 is Copyright © 2026 Albrecht Degering and licensed
|
||||
av-tools 0.3.0 is Copyright © 2026 Albrecht Degering and licensed
|
||||
GPL-3.0-or-later; see the root `LICENSE`. This inventory describes third-party
|
||||
inputs. It is informational, not legal advice, and does not replace their
|
||||
terms. Files under `LICENSES/` reproduce available terms. A packaged ZIP also
|
||||
|
||||
@@ -5,7 +5,7 @@ extensions or this document. The app queries muxers, demuxers, decoders,
|
||||
encoders and filters; a preset is disabled with missing components listed.
|
||||
Browser playback is a separate capability checked with MIME/media APIs.
|
||||
|
||||
## 0.2.1 release fixture matrix
|
||||
## 0.3.0 release fixture matrix
|
||||
|
||||
All 15 files are generated and re-probed with native FFmpeg 7.1.3 for test
|
||||
preparation and pass the checksum/probe verifier. That proves fixture
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Known limitations
|
||||
|
||||
This is the conservative 0.2.1 release baseline. A capability appearing in
|
||||
This is the conservative 0.3.0 release baseline. A capability appearing in
|
||||
FFmpeg output does not remove these product/browser/resource limits.
|
||||
|
||||
## Functional
|
||||
@@ -82,7 +82,7 @@ FFmpeg output does not remove these product/browser/resource limits.
|
||||
verification against the live container.
|
||||
- The application is GPL-3.0-or-later and its native legal files and pinned
|
||||
source identities are included in the release record. Publish the production
|
||||
ZIP/checksum, exact `v0.2.1` source and FFmpeg Corresponding Source bundle
|
||||
ZIP/checksum, exact `v0.3.0` source and FFmpeg Corresponding Source bundle
|
||||
together; development-only smoke artifacts must not be distributed.
|
||||
- Chromium covers a broad real pinned-core ST operation matrix, a real MT
|
||||
H.264/AAC conversion, MT-to-ST fallback, nested static/Toolbox-context
|
||||
|
||||
@@ -11,7 +11,7 @@ The repository already declares the application licence and immutable
|
||||
third-party source identities. Before any distribution:
|
||||
|
||||
1. commit the reviewed GPL-3.0-or-later source;
|
||||
2. create and verify annotated tag `v0.2.1` at that exact commit;
|
||||
2. create and verify annotated tag `v0.3.0` at that exact commit;
|
||||
3. push the commit and tag to the canonical public repository;
|
||||
4. assemble, review and publish corresponding source and exact external
|
||||
notices for both reviewed core profiles and linked libraries;
|
||||
@@ -57,8 +57,8 @@ npm run package:release -- --allow-unlicensed-development-smoke
|
||||
Pass `--force` only to replace the exact same-version ZIP and sidecar. Output:
|
||||
|
||||
```text
|
||||
release/av-tools-0.2.1.zip
|
||||
release/av-tools-0.2.1.zip.sha256
|
||||
release/av-tools-0.3.0.zip
|
||||
release/av-tools-0.3.0.zip.sha256
|
||||
release/ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz
|
||||
release/ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz.sha256
|
||||
```
|
||||
@@ -68,7 +68,7 @@ Verify independently:
|
||||
```sh
|
||||
node scripts/checksum-release.mjs
|
||||
(cd release && sha256sum -c ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz.sha256)
|
||||
unzip -l release/av-tools-0.2.1.zip
|
||||
unzip -l release/av-tools-0.3.0.zip
|
||||
tar -tJf release/ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz
|
||||
```
|
||||
|
||||
@@ -96,7 +96,7 @@ exact `HEAD` and clones that revision into a temporary directory:
|
||||
|
||||
```sh
|
||||
npm run portal:smoke -- \
|
||||
--artifact release/av-tools-0.2.1.zip \
|
||||
--artifact release/av-tools-0.3.0.zip \
|
||||
--portal-root ../toolbox-portal
|
||||
```
|
||||
|
||||
@@ -123,7 +123,7 @@ for `v0.6.0` and must not suppress review of new gaps. See
|
||||
|
||||
## 5. Publish only reviewed bytes
|
||||
|
||||
From a clean `v0.2.1` checkout, rerun all checks, create the ZIP once, verify
|
||||
From a clean `v0.3.0` checkout, rerun all checks, create the ZIP once, verify
|
||||
the sidecar, assemble that exact ZIP through Portal, and publish the immutable
|
||||
ZIP, `.zip.sha256`, manifest, changelog, Corresponding Source and notices. Put
|
||||
its exact lowercase digest/version/id/target in a reviewed Portal lock. Never
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "av-tools",
|
||||
"version": "0.2.1",
|
||||
"version": "0.3.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "av-tools",
|
||||
"version": "0.2.1",
|
||||
"version": "0.3.0",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@add-ideas/toolbox-contract": "0.2.3",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "av-tools",
|
||||
"private": true,
|
||||
"version": "0.2.1",
|
||||
"version": "0.3.0",
|
||||
"description": "Local-first browser audio and video conversion and light editing with ffmpeg.wasm.",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"author": "Albrecht Degering",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"schemaVersion": 1,
|
||||
"id": "de.add-ideas.av-tools",
|
||||
"name": "Audio & Video Tools",
|
||||
"version": "0.2.1",
|
||||
"version": "0.3.0",
|
||||
"description": "Convert and lightly edit audio and video locally in the browser.",
|
||||
"entry": "./",
|
||||
"icon": "./favicon.svg",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"schemaVersion": 1,
|
||||
"id": "de.add-ideas.av-tools",
|
||||
"name": "Audio & Video Tools",
|
||||
"version": "0.2.1",
|
||||
"version": "0.3.0",
|
||||
"description": "Convert and lightly edit audio and video locally in the browser.",
|
||||
"entry": "./",
|
||||
"icon": "./favicon.svg",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export const APP_VERSION = '0.2.1';
|
||||
export const APP_VERSION = '0.3.0';
|
||||
export const FFMPEG_WRAPPER_VERSION = '0.12.15';
|
||||
export const FFMPEG_UTIL_VERSION = '0.12.2';
|
||||
export const FFMPEG_CORE_VERSION = '0.12.10';
|
||||
|
||||
@@ -165,30 +165,30 @@ describe('licence release gate', () => {
|
||||
describe('release checksum', () => {
|
||||
it('formats and parses the portable sidecar form', () => {
|
||||
const digest = 'a'.repeat(64);
|
||||
const line = checksumLine(digest, 'av-tools-0.2.1.zip');
|
||||
expect(line).toBe(`${digest} av-tools-0.2.1.zip\n`);
|
||||
const line = checksumLine(digest, 'av-tools-0.3.0.zip');
|
||||
expect(line).toBe(`${digest} av-tools-0.3.0.zip\n`);
|
||||
expect(parseChecksumLine(line)).toEqual({
|
||||
archiveName: 'av-tools-0.2.1.zip',
|
||||
archiveName: 'av-tools-0.3.0.zip',
|
||||
digest,
|
||||
});
|
||||
});
|
||||
|
||||
it('writes and verifies a checksum sidecar', async () => {
|
||||
const directory = await temporaryDirectory();
|
||||
const archive = path.join(directory, 'av-tools-0.2.1.zip');
|
||||
const archive = path.join(directory, 'av-tools-0.3.0.zip');
|
||||
await writeFile(archive, 'deterministic bytes');
|
||||
const result = await writeChecksum(archive);
|
||||
expect(await verifyChecksum(archive, result.sidecarPath)).toBe(
|
||||
result.digest
|
||||
);
|
||||
expect(await readFile(result.sidecarPath, 'utf8')).toContain(
|
||||
' av-tools-0.2.1.zip'
|
||||
' av-tools-0.3.0.zip'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects checksum mismatches', async () => {
|
||||
const directory = await temporaryDirectory();
|
||||
const archive = path.join(directory, 'av-tools-0.2.1.zip');
|
||||
const archive = path.join(directory, 'av-tools-0.3.0.zip');
|
||||
const sidecar = `${archive}.sha256`;
|
||||
await writeFile(archive, 'changed');
|
||||
await mkdir(path.dirname(sidecar), { recursive: true });
|
||||
|
||||
Reference in New Issue
Block a user