1 Commits

Author SHA1 Message Date
6c68f9bfbd chore: migrate AV Tools to LocalToolBox 2026-07-27 15:50:55 +02:00
20 changed files with 108 additions and 73 deletions

2
.npmrc
View File

@@ -1 +1 @@
@add-ideas:registry=https://git.add-ideas.de/api/packages/zemion/npm/ @add-ideas:registry=https://git.add-ideas.de/api/packages/lotobo/npm/

View File

@@ -3,6 +3,17 @@
All notable changes to av-tools are documented here. The project follows All notable changes to av-tools are documented here. The project follows
semantic versioning once a first release is legally publishable. semantic versioning once a first release is legally publishable.
## 0.2.1 — 2026-07-27
- Move the canonical source, manifest schema links, and package registry from
the personal `zemion` namespace to the `lotobo` (LocalToolBox) Gitea
organization.
- Upgrade the Toolbox contract, React shell, and validation testkit to 0.2.3,
republished from the organization-owned registry without functional shell
changes.
- Replace the generic starter favicon with original add·ideas
audio/video file artwork.
## 0.2.0 — 2026-07-27 ## 0.2.0 — 2026-07-27
- Allow recognized local audio/video to begin native browser playback while - Allow recognized local audio/video to begin native browser playback while

View File

@@ -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 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. under Toolbox Portal with shared shell, theme, help and app switching.
> **Release status:** 0.2.0 is licensed GPL-3.0-or-later. Its canonical > **Release status:** 0.2.1 is licensed GPL-3.0-or-later. Its canonical
> release consists of the exact reviewed `v0.2.0` source, production > release consists of the exact reviewed `v0.2.1` source, production
> ZIP/checksum and Corresponding Source bundle published together. See > ZIP/checksum and Corresponding Source bundle published together. See
> [Licensing](#licensing). > [Licensing](#licensing).
@@ -167,7 +167,7 @@ the conditional native command-plan integration suite; it is not a production
runtime dependency. runtime dependency.
```sh ```sh
git clone git@git.add-ideas.de:zemion/av-tools.git git clone git@git.add-ideas.de:lotobo/av-tools.git
cd av-tools cd av-tools
npm ci npm ci
npm run dev npm run dev

View File

@@ -1,17 +1,17 @@
# Source and reproducibility record # Source and reproducibility record
This file identifies the source corresponding to av-tools 0.2.0. It is not a This file identifies the source corresponding to av-tools 0.2.1. It is not a
substitute for satisfying a component's licence or for delivering complete substitute for satisfying a component's licence or for delivering complete
Corresponding Source with an object-code release. Corresponding Source with an object-code release.
## av-tools ## av-tools
- Canonical repository: - Canonical repository:
`git@git.add-ideas.de:zemion/av-tools.git` `git@git.add-ideas.de:lotobo/av-tools.git`
- Browser source: `https://git.add-ideas.de/zemion/av-tools` - Browser source: `https://git.add-ideas.de/lotobo/av-tools`
- Version: `0.2.0` - Version: `0.2.1`
- Release source identity: immutable annotated tag `v0.2.0` - Release source identity: immutable annotated tag `v0.2.1`
(`refs/tags/v0.2.0`) in the canonical repository. (`refs/tags/v0.2.1`) in the canonical repository.
- Application licence: `GPL-3.0-or-later`; full GPL version 3 terms in - Application licence: `GPL-3.0-or-later`; full GPL version 3 terms in
`LICENSE`. `LICENSE`.
- Copyright: Copyright © 2026 Albrecht Degering. - 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: available without authentication:
```sh ```sh
test "$(git cat-file -t v0.2.0)" = tag test "$(git cat-file -t v0.2.1)" = tag
git rev-parse v0.2.0^{commit} git rev-parse v0.2.1^{commit}
git ls-remote --tags \ git ls-remote --tags \
https://git.add-ideas.de/zemion/av-tools.git refs/tags/v0.2.0 https://git.add-ideas.de/lotobo/av-tools.git refs/tags/v0.2.1
``` ```
The Toolbox manifest names the canonical repository and SPDX licence. Publish The Toolbox manifest names the canonical repository and SPDX licence. Publish

View File

@@ -1,6 +1,6 @@
# Third-party notices # Third-party notices
av-tools 0.2.0 is Copyright © 2026 Albrecht Degering and licensed av-tools 0.2.1 is Copyright © 2026 Albrecht Degering and licensed
GPL-3.0-or-later; see the root `LICENSE`. This inventory describes third-party 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 inputs. It is informational, not legal advice, and does not replace their
terms. Files under `LICENSES/` reproduce available terms. A packaged ZIP also terms. Files under `LICENSES/` reproduce available terms. A packaged ZIP also
@@ -11,8 +11,8 @@ receives licence files shipped by installed runtime npm packages under
| Package | Version | Licence declared upstream | Project source | Role | Distribution | | Package | Version | Licence declared upstream | Project source | Role | Distribution |
| -------------------------------- | -------------------------- | ------------------------- | --------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------------- | | -------------------------------- | -------------------------- | ------------------------- | --------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------------- |
| `@add-ideas/toolbox-contract` | 0.2.2 | Apache-2.0 | `https://git.add-ideas.de/zemion/toolbox-sdk` | typed manifest/context contract | shipped, bundled | | `@add-ideas/toolbox-contract` | 0.2.3 | Apache-2.0 | `https://git.add-ideas.de/lotobo/toolbox-sdk` | typed manifest/context contract | shipped, bundled |
| `@add-ideas/toolbox-shell-react` | 0.2.2 | Apache-2.0 | `https://git.add-ideas.de/zemion/toolbox-sdk` | shared Toolbox application shell | shipped, bundled | | `@add-ideas/toolbox-shell-react` | 0.2.3 | Apache-2.0 | `https://git.add-ideas.de/lotobo/toolbox-sdk` | shared Toolbox application shell | shipped, bundled |
| `@ffmpeg/ffmpeg` | 0.12.15 | MIT | `https://github.com/ffmpegwasm/ffmpeg.wasm` | browser worker and high-level FFmpeg API | shipped, bundled | | `@ffmpeg/ffmpeg` | 0.12.15 | MIT | `https://github.com/ffmpegwasm/ffmpeg.wasm` | browser worker and high-level FFmpeg API | shipped, bundled |
| `@ffmpeg/util` | 0.12.2 | MIT | `https://github.com/ffmpegwasm/ffmpeg.wasm` | byte/blob helpers | shipped, bundled | | `@ffmpeg/util` | 0.12.2 | MIT | `https://github.com/ffmpegwasm/ffmpeg.wasm` | byte/blob helpers | shipped, bundled |
| `@ffmpeg/types` | 0.12.4 | MIT | `https://github.com/ffmpegwasm/ffmpeg.wasm` | transitive runtime API types | shipped as compiled/bundled references | | `@ffmpeg/types` | 0.12.4 | MIT | `https://github.com/ffmpegwasm/ffmpeg.wasm` | transitive runtime API types | shipped as compiled/bundled references |
@@ -73,7 +73,7 @@ shipped in the static ZIP:
| Package | Exact version | Licence | Role | | Package | Exact version | Licence | Role |
| ----------------------------- | ------------- | ---------- | ------------------------------------- | | ----------------------------- | ------------- | ---------- | ------------------------------------- |
| `@add-ideas/toolbox-testkit` | 0.2.2 | Apache-2.0 | manifest and nested-path test helpers | | `@add-ideas/toolbox-testkit` | 0.2.3 | Apache-2.0 | manifest and nested-path test helpers |
| `@eslint/js` | 10.0.1 | MIT | lint rules | | `@eslint/js` | 10.0.1 | MIT | lint rules |
| `@playwright/test` | 1.61.1 | Apache-2.0 | browser tests | | `@playwright/test` | 1.61.1 | Apache-2.0 | browser tests |
| `@testing-library/jest-dom` | 6.9.1 | MIT | DOM assertions | | `@testing-library/jest-dom` | 6.9.1 | MIT | DOM assertions |

View File

@@ -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. encoders and filters; a preset is disabled with missing components listed.
Browser playback is a separate capability checked with MIME/media APIs. Browser playback is a separate capability checked with MIME/media APIs.
## 0.2.0 release fixture matrix ## 0.2.1 release fixture matrix
All 15 files are generated and re-probed with native FFmpeg 7.1.3 for test 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 preparation and pass the checksum/probe verifier. That proves fixture

View File

@@ -1,6 +1,6 @@
# Known limitations # Known limitations
This is the conservative 0.2.0 release baseline. A capability appearing in This is the conservative 0.2.1 release baseline. A capability appearing in
FFmpeg output does not remove these product/browser/resource limits. FFmpeg output does not remove these product/browser/resource limits.
## Functional ## Functional
@@ -79,7 +79,7 @@ FFmpeg output does not remove these product/browser/resource limits.
verification against the live container. verification against the live container.
- The application is GPL-3.0-or-later and its native legal files and pinned - 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 source identities are included in the release record. Publish the production
ZIP/checksum, exact `v0.2.0` source and FFmpeg Corresponding Source bundle ZIP/checksum, exact `v0.2.1` source and FFmpeg Corresponding Source bundle
together; development-only smoke artifacts must not be distributed. together; development-only smoke artifacts must not be distributed.
- Chromium covers a broad real pinned-core ST operation matrix, a real MT - 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 H.264/AAC conversion, MT-to-ST fallback, nested static/Toolbox-context

View File

@@ -9,9 +9,9 @@ working tree. Revisions are full immutable commit ids.
| Repository | Revision inspected | Used for | Copied or adapted | | Repository | Revision inspected | Used for | Copied or adapted |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| av-tools, `git@git.add-ideas.de:zemion/av-tools.git` | no revision: canonical `main` was unborn and had no commits | canonical destination and licence/history check | the empty repository was scaffolded in place; no prior code existed | | av-tools, `git@git.add-ideas.de:lotobo/av-tools.git` | no revision: canonical `main` was unborn and had no commits | canonical destination and licence/history check | the empty repository was scaffolded in place; no prior code existed |
| Toolbox SDK, `https://git.add-ideas.de/zemion/toolbox-sdk.git` | `53c40a61ba1581246f65773fcbb1c1cfd31ac98e` (SDK 0.2.2) | manifest schema/definition, `AppShell`, context behavior, shared styles, token-free registry, nested-path checks and toolchain baseline | published 0.2.2 packages are direct dependencies; documented usage patterns were followed; no SDK source file was copied | | Toolbox SDK, `https://git.add-ideas.de/lotobo/toolbox-sdk.git` | `ef2dab4b46c61812c9a877d8a19fe497b4a4630a` (SDK 0.2.3) | manifest schema/definition, `AppShell`, context behavior, shared styles, token-free registry, nested-path checks and toolchain baseline | published 0.2.3 packages are direct dependencies; documented usage patterns were followed; no SDK source file was copied |
| Toolbox Portal, `https://git.add-ideas.de/zemion/toolbox-portal.git` | `bda9da044d61c109afd9969d357cc27f76648938` initially; `5c052bc6d1073a66600cfddc44c0e16da34bede8` for final integration | release ZIP/sidecar/lock formats, independent assembly, catalogue behavior, path security, nested deployment and production headers | no portal application source was copied; the AV smoke harness consumes only an exact cloned Portal revision; the separate Portal worktree contains its own reviewed integration patch | | Toolbox Portal, `https://git.add-ideas.de/lotobo/toolbox-portal.git` | `bda9da044d61c109afd9969d357cc27f76648938` initially; `5c052bc6d1073a66600cfddc44c0e16da34bede8` for final integration | release ZIP/sidecar/lock formats, independent assembly, catalogue behavior, path security, nested deployment and production headers | no portal application source was copied; the AV smoke harness consumes only an exact cloned Portal revision; the separate Portal worktree contains its own reviewed integration patch |
| ffmpeg.wasm, `https://github.com/ffmpegwasm/ffmpeg.wasm.git` | `f876f907c7e9b9bf51d4ed0b913a855a63ae63fc`; pinned release baseline `71aa99d37c02a7b4c435275ca9ef50e612f6efa1` | current API, worker lifecycle, filesystem, loading, ST/MT behavior, licence documentation and build layout | no reference-worktree source was copied; wrapper/util remain exact npm dependencies, while the five core assets are rebuilt from the recorded source/toolchain/patch profile and verified against the build lock | | ffmpeg.wasm, `https://github.com/ffmpegwasm/ffmpeg.wasm.git` | `f876f907c7e9b9bf51d4ed0b913a855a63ae63fc`; pinned release baseline `71aa99d37c02a7b4c435275ca9ef50e612f6efa1` | current API, worker lifecycle, filesystem, loading, ST/MT behavior, licence documentation and build layout | no reference-worktree source was copied; wrapper/util remain exact npm dependencies, while the five core assets are rebuilt from the recorded source/toolchain/patch profile and verified against the build lock |
For the **pinned** package set, the more specific upstream release tag For the **pinned** package set, the more specific upstream release tag

View File

@@ -11,7 +11,7 @@ The repository already declares the application licence and immutable
third-party source identities. Before any distribution: third-party source identities. Before any distribution:
1. commit the reviewed GPL-3.0-or-later source; 1. commit the reviewed GPL-3.0-or-later source;
2. create and verify annotated tag `v0.2.0` at that exact commit; 2. create and verify annotated tag `v0.2.1` at that exact commit;
3. push the commit and tag to the canonical public repository; 3. push the commit and tag to the canonical public repository;
4. assemble, review and publish corresponding source and exact external 4. assemble, review and publish corresponding source and exact external
notices for both reviewed core profiles and linked libraries; 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: Pass `--force` only to replace the exact same-version ZIP and sidecar. Output:
```text ```text
release/av-tools-0.2.0.zip release/av-tools-0.2.1.zip
release/av-tools-0.2.0.zip.sha256 release/av-tools-0.2.1.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
release/ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz.sha256 release/ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz.sha256
``` ```
@@ -68,7 +68,7 @@ Verify independently:
```sh ```sh
node scripts/checksum-release.mjs node scripts/checksum-release.mjs
(cd release && sha256sum -c ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz.sha256) (cd release && sha256sum -c ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz.sha256)
unzip -l release/av-tools-0.2.0.zip unzip -l release/av-tools-0.2.1.zip
tar -tJf release/ffmpeg-core-0.12.10-reviewed-stack5m.1-corresponding-source.tar.xz 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 ```sh
npm run portal:smoke -- \ npm run portal:smoke -- \
--artifact release/av-tools-0.2.0.zip \ --artifact release/av-tools-0.2.1.zip \
--portal-root ../toolbox-portal --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 ## 5. Publish only reviewed bytes
From a clean `v0.2.0` checkout, rerun all checks, create the ZIP once, verify From a clean `v0.2.1` checkout, rerun all checks, create the ZIP once, verify
the sidecar, assemble that exact ZIP through Portal, and publish the immutable the sidecar, assemble that exact ZIP through Portal, and publish the immutable
ZIP, `.zip.sha256`, manifest, changelog, Corresponding Source and notices. Put ZIP, `.zip.sha256`, manifest, changelog, Corresponding Source and notices. Put
its exact lowercase digest/version/id/target in a reviewed Portal lock. Never its exact lowercase digest/version/id/target in a reviewed Portal lock. Never

32
package-lock.json generated
View File

@@ -1,16 +1,16 @@
{ {
"name": "av-tools", "name": "av-tools",
"version": "0.2.0", "version": "0.2.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "av-tools", "name": "av-tools",
"version": "0.2.0", "version": "0.2.1",
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
"dependencies": { "dependencies": {
"@add-ideas/toolbox-contract": "0.2.2", "@add-ideas/toolbox-contract": "0.2.3",
"@add-ideas/toolbox-shell-react": "0.2.2", "@add-ideas/toolbox-shell-react": "0.2.3",
"@ffmpeg/ffmpeg": "0.12.15", "@ffmpeg/ffmpeg": "0.12.15",
"@ffmpeg/util": "0.12.2", "@ffmpeg/util": "0.12.2",
"fflate": "0.8.3", "fflate": "0.8.3",
@@ -18,7 +18,7 @@
"react-dom": "19.2.7" "react-dom": "19.2.7"
}, },
"devDependencies": { "devDependencies": {
"@add-ideas/toolbox-testkit": "0.2.2", "@add-ideas/toolbox-testkit": "0.2.3",
"@eslint/js": "10.0.1", "@eslint/js": "10.0.1",
"@playwright/test": "1.61.1", "@playwright/test": "1.61.1",
"@testing-library/jest-dom": "6.9.1", "@testing-library/jest-dom": "6.9.1",
@@ -44,18 +44,18 @@
} }
}, },
"node_modules/@add-ideas/toolbox-contract": { "node_modules/@add-ideas/toolbox-contract": {
"version": "0.2.2", "version": "0.2.3",
"resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-contract/-/0.2.2/toolbox-contract-0.2.2.tgz", "resolved": "https://git.add-ideas.de/api/packages/lotobo/npm/%40add-ideas%2Ftoolbox-contract/-/0.2.3/toolbox-contract-0.2.3.tgz",
"integrity": "sha512-VcZ8j4O2PgFaIYgxs6r9u0uPxA+hHKwhCW+omfeVCtbjAAYhH2KhRlBGm0ERVVYcK5kchyzZLXrC4LKWRotVzg==", "integrity": "sha512-T0PVSuMT40GjTDfQJhEEY3ZawQq8zz1/ry95JdKI6W39CdLacaRXdGnEpDCMHt+jUbf1Jz7Nat/M5dFCgKVM9A==",
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/@add-ideas/toolbox-shell-react": { "node_modules/@add-ideas/toolbox-shell-react": {
"version": "0.2.2", "version": "0.2.3",
"resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-shell-react/-/0.2.2/toolbox-shell-react-0.2.2.tgz", "resolved": "https://git.add-ideas.de/api/packages/lotobo/npm/%40add-ideas%2Ftoolbox-shell-react/-/0.2.3/toolbox-shell-react-0.2.3.tgz",
"integrity": "sha512-w/xbLCd50a2Jq7vQ9Z9ygUOuqlOCRkIYlk4vSJx0mf4REJNeMYi3PE2MbaLUC4DkQWyrmatsa5HNT89o0l91BA==", "integrity": "sha512-DT5lQDH48BFkFcmFLZnQh7+Cm73JzBPcmp5WzUXypfkUXpEyDYHzaXgmW4kZ0edSwh4RK4sPmx+JPtK0X4aKCQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@add-ideas/toolbox-contract": "0.2.2" "@add-ideas/toolbox-contract": "0.2.3"
}, },
"peerDependencies": { "peerDependencies": {
"react": ">=18 <20", "react": ">=18 <20",
@@ -63,13 +63,13 @@
} }
}, },
"node_modules/@add-ideas/toolbox-testkit": { "node_modules/@add-ideas/toolbox-testkit": {
"version": "0.2.2", "version": "0.2.3",
"resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-testkit/-/0.2.2/toolbox-testkit-0.2.2.tgz", "resolved": "https://git.add-ideas.de/api/packages/lotobo/npm/%40add-ideas%2Ftoolbox-testkit/-/0.2.3/toolbox-testkit-0.2.3.tgz",
"integrity": "sha512-ZxrRYiJI/j5aXwcd3mQItgDl1iOJ6N26+MpIG18qVZNwKKFCTCfSTzgzRooPt8rRc1MQYTPo4c+l/QpOWuTXxA==", "integrity": "sha512-sq1MwhKWfFKen+N+124hl74qQimRSvmQ9sOU7jdcI+2qCKZ67+2B8rWyezeV80uTFu4Jv6deHksfYQ/tKNV6XQ==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@add-ideas/toolbox-contract": "0.2.2" "@add-ideas/toolbox-contract": "0.2.3"
}, },
"bin": { "bin": {
"toolbox-check": "dist/cli.js" "toolbox-check": "dist/cli.js"

View File

@@ -1,17 +1,17 @@
{ {
"name": "av-tools", "name": "av-tools",
"private": true, "private": true,
"version": "0.2.0", "version": "0.2.1",
"description": "Local-first browser audio and video conversion and light editing with ffmpeg.wasm.", "description": "Local-first browser audio and video conversion and light editing with ffmpeg.wasm.",
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
"author": "Albrecht Degering", "author": "Albrecht Degering",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://git.add-ideas.de/zemion/av-tools.git" "url": "git+https://git.add-ideas.de/lotobo/av-tools.git"
}, },
"homepage": "https://git.add-ideas.de/zemion/av-tools", "homepage": "https://git.add-ideas.de/lotobo/av-tools",
"bugs": { "bugs": {
"url": "https://git.add-ideas.de/zemion/av-tools/issues" "url": "https://git.add-ideas.de/lotobo/av-tools/issues"
}, },
"type": "module", "type": "module",
"engines": { "engines": {
@@ -51,8 +51,8 @@
"release:artifact": "npm run check && npm run vendor:verify && npm run test:opus-regression && npm run test:browser && npm run package:release" "release:artifact": "npm run check && npm run vendor:verify && npm run test:opus-regression && npm run test:browser && npm run package:release"
}, },
"dependencies": { "dependencies": {
"@add-ideas/toolbox-contract": "0.2.2", "@add-ideas/toolbox-contract": "0.2.3",
"@add-ideas/toolbox-shell-react": "0.2.2", "@add-ideas/toolbox-shell-react": "0.2.3",
"@ffmpeg/ffmpeg": "0.12.15", "@ffmpeg/ffmpeg": "0.12.15",
"@ffmpeg/util": "0.12.2", "@ffmpeg/util": "0.12.2",
"fflate": "0.8.3", "fflate": "0.8.3",
@@ -60,7 +60,7 @@
"react-dom": "19.2.7" "react-dom": "19.2.7"
}, },
"devDependencies": { "devDependencies": {
"@add-ideas/toolbox-testkit": "0.2.2", "@add-ideas/toolbox-testkit": "0.2.3",
"@eslint/js": "10.0.1", "@eslint/js": "10.0.1",
"@playwright/test": "1.61.1", "@playwright/test": "1.61.1",
"@testing-library/jest-dom": "6.9.1", "@testing-library/jest-dom": "6.9.1",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1,9 +1,9 @@
{ {
"$schema": "https://git.add-ideas.de/zemion/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json", "$schema": "https://git.add-ideas.de/lotobo/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json",
"schemaVersion": 1, "schemaVersion": 1,
"id": "de.add-ideas.av-tools", "id": "de.add-ideas.av-tools",
"name": "Audio & Video Tools", "name": "Audio & Video Tools",
"version": "0.2.0", "version": "0.2.1",
"description": "Convert and lightly edit audio and video locally in the browser.", "description": "Convert and lightly edit audio and video locally in the browser.",
"entry": "./", "entry": "./",
"icon": "./favicon.svg", "icon": "./favicon.svg",
@@ -44,14 +44,14 @@
"telemetry": false "telemetry": false
}, },
"source": { "source": {
"repository": "https://git.add-ideas.de/zemion/av-tools", "repository": "https://git.add-ideas.de/lotobo/av-tools",
"license": "GPL-3.0-or-later" "license": "GPL-3.0-or-later"
}, },
"actions": [ "actions": [
{ {
"id": "source", "id": "source",
"label": "Source", "label": "Source",
"url": "https://git.add-ideas.de/zemion/av-tools" "url": "https://git.add-ideas.de/lotobo/av-tools"
} }
], ],
"assets": [ "assets": [

View File

@@ -23,7 +23,7 @@ if (source.version !== packageJson.version) {
} }
if ( if (
source.source?.repository !== 'https://git.add-ideas.de/zemion/av-tools' || source.source?.repository !== 'https://git.add-ideas.de/lotobo/av-tools' ||
source.source?.license !== 'GPL-3.0-or-later' source.source?.license !== 'GPL-3.0-or-later'
) { ) {
throw new Error( throw new Error(

View File

@@ -23,9 +23,9 @@ const zipEpoch = new Date(1980, 0, 1, 0, 0, 0);
const maximumEntryBytes = 256 * 1024 * 1024; const maximumEntryBytes = 256 * 1024 * 1024;
const maximumArchiveBytes = 2 * 1024 * 1024 * 1024; const maximumArchiveBytes = 2 * 1024 * 1024 * 1024;
const applicationLicenseSpdx = 'GPL-3.0-or-later'; const applicationLicenseSpdx = 'GPL-3.0-or-later';
const canonicalRepository = 'https://git.add-ideas.de/zemion/av-tools'; const canonicalRepository = 'https://git.add-ideas.de/lotobo/av-tools';
const canonicalPackageRepository = const canonicalPackageRepository =
'git+https://git.add-ideas.de/zemion/av-tools.git'; 'git+https://git.add-ideas.de/lotobo/av-tools.git';
const requiredNativeLegalFiles = [ const requiredNativeLegalFiles = [
'LICENSES/native/FFmpeg-LICENSE.md', 'LICENSES/native/FFmpeg-LICENSE.md',
'LICENSES/native/FreeType-LICENSE.txt', 'LICENSES/native/FreeType-LICENSE.txt',

View File

@@ -196,7 +196,7 @@ export function HelpDialog({ open, onClose }: HelpDialogProps) {
</aside> </aside>
<footer> <footer>
<a <a
href="https://git.add-ideas.de/zemion/av-tools" href="https://git.add-ideas.de/lotobo/av-tools"
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
> >

View File

@@ -1,9 +1,9 @@
{ {
"$schema": "https://git.add-ideas.de/zemion/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json", "$schema": "https://git.add-ideas.de/lotobo/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json",
"schemaVersion": 1, "schemaVersion": 1,
"id": "de.add-ideas.av-tools", "id": "de.add-ideas.av-tools",
"name": "Audio & Video Tools", "name": "Audio & Video Tools",
"version": "0.2.0", "version": "0.2.1",
"description": "Convert and lightly edit audio and video locally in the browser.", "description": "Convert and lightly edit audio and video locally in the browser.",
"entry": "./", "entry": "./",
"icon": "./favicon.svg", "icon": "./favicon.svg",
@@ -37,14 +37,14 @@
"telemetry": false "telemetry": false
}, },
"source": { "source": {
"repository": "https://git.add-ideas.de/zemion/av-tools", "repository": "https://git.add-ideas.de/lotobo/av-tools",
"license": "GPL-3.0-or-later" "license": "GPL-3.0-or-later"
}, },
"actions": [ "actions": [
{ {
"id": "source", "id": "source",
"label": "Source", "label": "Source",
"url": "https://git.add-ideas.de/zemion/av-tools" "url": "https://git.add-ideas.de/lotobo/av-tools"
} }
], ],
"assets": [ "assets": [

View File

@@ -1,4 +1,4 @@
export const APP_VERSION = '0.2.0'; export const APP_VERSION = '0.2.1';
export const FFMPEG_WRAPPER_VERSION = '0.12.15'; export const FFMPEG_WRAPPER_VERSION = '0.12.15';
export const FFMPEG_UTIL_VERSION = '0.12.2'; export const FFMPEG_UTIL_VERSION = '0.12.2';
export const FFMPEG_CORE_VERSION = '0.12.10'; export const FFMPEG_CORE_VERSION = '0.12.10';

View File

@@ -112,7 +112,7 @@ export async function startNestedStaticServer(): Promise<NestedStaticServer> {
}; };
const catalog = { const catalog = {
$schema: $schema:
'https://git.add-ideas.de/zemion/toolbox-sdk/raw/branch/main/schemas/toolbox-catalog.v1.schema.json', 'https://git.add-ideas.de/lotobo/toolbox-sdk/raw/branch/main/schemas/toolbox-catalog.v1.schema.json',
schemaVersion: 1, schemaVersion: 1,
id: 'de.add-ideas.browser-test-toolbox', id: 'de.add-ideas.browser-test-toolbox',
name: 'Browser Test Toolbox', name: 'Browser Test Toolbox',

View File

@@ -165,30 +165,30 @@ describe('licence release gate', () => {
describe('release checksum', () => { describe('release checksum', () => {
it('formats and parses the portable sidecar form', () => { it('formats and parses the portable sidecar form', () => {
const digest = 'a'.repeat(64); const digest = 'a'.repeat(64);
const line = checksumLine(digest, 'av-tools-0.2.0.zip'); const line = checksumLine(digest, 'av-tools-0.2.1.zip');
expect(line).toBe(`${digest} av-tools-0.2.0.zip\n`); expect(line).toBe(`${digest} av-tools-0.2.1.zip\n`);
expect(parseChecksumLine(line)).toEqual({ expect(parseChecksumLine(line)).toEqual({
archiveName: 'av-tools-0.2.0.zip', archiveName: 'av-tools-0.2.1.zip',
digest, digest,
}); });
}); });
it('writes and verifies a checksum sidecar', async () => { it('writes and verifies a checksum sidecar', async () => {
const directory = await temporaryDirectory(); const directory = await temporaryDirectory();
const archive = path.join(directory, 'av-tools-0.2.0.zip'); const archive = path.join(directory, 'av-tools-0.2.1.zip');
await writeFile(archive, 'deterministic bytes'); await writeFile(archive, 'deterministic bytes');
const result = await writeChecksum(archive); const result = await writeChecksum(archive);
expect(await verifyChecksum(archive, result.sidecarPath)).toBe( expect(await verifyChecksum(archive, result.sidecarPath)).toBe(
result.digest result.digest
); );
expect(await readFile(result.sidecarPath, 'utf8')).toContain( expect(await readFile(result.sidecarPath, 'utf8')).toContain(
' av-tools-0.2.0.zip' ' av-tools-0.2.1.zip'
); );
}); });
it('rejects checksum mismatches', async () => { it('rejects checksum mismatches', async () => {
const directory = await temporaryDirectory(); const directory = await temporaryDirectory();
const archive = path.join(directory, 'av-tools-0.2.0.zip'); const archive = path.join(directory, 'av-tools-0.2.1.zip');
const sidecar = `${archive}.sha256`; const sidecar = `${archive}.sha256`;
await writeFile(archive, 'changed'); await writeFile(archive, 'changed');
await mkdir(path.dirname(sidecar), { recursive: true }); await mkdir(path.dirname(sidecar), { recursive: true });