diff --git a/.npmrc b/.npmrc index 90e6041..7e977af 100644 --- a/.npmrc +++ b/.npmrc @@ -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/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e50844..6a879aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to av-tools are documented here. The project follows 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 - Allow recognized local audio/video to begin native browser playback while diff --git a/README.md b/README.md index a262ca6..550d4d0 100644 --- a/README.md +++ b/README.md @@ -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.0 is licensed GPL-3.0-or-later. Its canonical -> release consists of the exact reviewed `v0.2.0` source, production +> **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 > ZIP/checksum and Corresponding Source bundle published together. See > [Licensing](#licensing). @@ -167,7 +167,7 @@ the conditional native command-plan integration suite; it is not a production runtime dependency. ```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 npm ci npm run dev diff --git a/SOURCE.md b/SOURCE.md index a8c70e3..c597b58 100644 --- a/SOURCE.md +++ b/SOURCE.md @@ -1,17 +1,17 @@ # 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 Corresponding Source with an object-code release. ## av-tools - Canonical repository: - `git@git.add-ideas.de:zemion/av-tools.git` -- Browser source: `https://git.add-ideas.de/zemion/av-tools` -- Version: `0.2.0` -- Release source identity: immutable annotated tag `v0.2.0` - (`refs/tags/v0.2.0`) in the 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. - 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.0)" = tag -git rev-parse v0.2.0^{commit} +test "$(git cat-file -t v0.2.1)" = tag +git rev-parse v0.2.1^{commit} 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 diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 9dd5a26..2620e18 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -1,6 +1,6 @@ # 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 inputs. It is informational, not legal advice, and does not replace their 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 | | -------------------------------- | -------------------------- | ------------------------- | --------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------------- | -| `@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-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-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.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/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 | @@ -73,7 +73,7 @@ shipped in the static ZIP: | 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 | | `@playwright/test` | 1.61.1 | Apache-2.0 | browser tests | | `@testing-library/jest-dom` | 6.9.1 | MIT | DOM assertions | diff --git a/docs/FORMAT_SUPPORT.md b/docs/FORMAT_SUPPORT.md index 8da105a..7065e9a 100644 --- a/docs/FORMAT_SUPPORT.md +++ b/docs/FORMAT_SUPPORT.md @@ -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.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 preparation and pass the checksum/probe verifier. That proves fixture diff --git a/docs/KNOWN_LIMITATIONS.md b/docs/KNOWN_LIMITATIONS.md index 07d40c6..8ace317 100644 --- a/docs/KNOWN_LIMITATIONS.md +++ b/docs/KNOWN_LIMITATIONS.md @@ -1,6 +1,6 @@ # 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. ## Functional @@ -79,7 +79,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.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. - 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 diff --git a/docs/REFERENCE_IMPLEMENTATIONS.md b/docs/REFERENCE_IMPLEMENTATIONS.md index c07522e..332116a 100644 --- a/docs/REFERENCE_IMPLEMENTATIONS.md +++ b/docs/REFERENCE_IMPLEMENTATIONS.md @@ -9,9 +9,9 @@ working tree. Revisions are full immutable commit ids. | 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 | -| 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 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 | +| 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/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/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 | For the **pinned** package set, the more specific upstream release tag diff --git a/docs/RELEASE.md b/docs/RELEASE.md index cf3095f..2e24017 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -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.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; 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.0.zip -release/av-tools-0.2.0.zip.sha256 +release/av-tools-0.2.1.zip +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.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.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 ``` @@ -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.0.zip \ + --artifact release/av-tools-0.2.1.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.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 ZIP, `.zip.sha256`, manifest, changelog, Corresponding Source and notices. Put its exact lowercase digest/version/id/target in a reviewed Portal lock. Never diff --git a/package-lock.json b/package-lock.json index 4bf73a0..d07e4ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "av-tools", - "version": "0.2.0", + "version": "0.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "av-tools", - "version": "0.2.0", + "version": "0.2.1", "license": "GPL-3.0-or-later", "dependencies": { - "@add-ideas/toolbox-contract": "0.2.2", - "@add-ideas/toolbox-shell-react": "0.2.2", + "@add-ideas/toolbox-contract": "0.2.3", + "@add-ideas/toolbox-shell-react": "0.2.3", "@ffmpeg/ffmpeg": "0.12.15", "@ffmpeg/util": "0.12.2", "fflate": "0.8.3", @@ -18,7 +18,7 @@ "react-dom": "19.2.7" }, "devDependencies": { - "@add-ideas/toolbox-testkit": "0.2.2", + "@add-ideas/toolbox-testkit": "0.2.3", "@eslint/js": "10.0.1", "@playwright/test": "1.61.1", "@testing-library/jest-dom": "6.9.1", @@ -44,18 +44,18 @@ } }, "node_modules/@add-ideas/toolbox-contract": { - "version": "0.2.2", - "resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-contract/-/0.2.2/toolbox-contract-0.2.2.tgz", - "integrity": "sha512-VcZ8j4O2PgFaIYgxs6r9u0uPxA+hHKwhCW+omfeVCtbjAAYhH2KhRlBGm0ERVVYcK5kchyzZLXrC4LKWRotVzg==", + "version": "0.2.3", + "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-T0PVSuMT40GjTDfQJhEEY3ZawQq8zz1/ry95JdKI6W39CdLacaRXdGnEpDCMHt+jUbf1Jz7Nat/M5dFCgKVM9A==", "license": "Apache-2.0" }, "node_modules/@add-ideas/toolbox-shell-react": { - "version": "0.2.2", - "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", - "integrity": "sha512-w/xbLCd50a2Jq7vQ9Z9ygUOuqlOCRkIYlk4vSJx0mf4REJNeMYi3PE2MbaLUC4DkQWyrmatsa5HNT89o0l91BA==", + "version": "0.2.3", + "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-DT5lQDH48BFkFcmFLZnQh7+Cm73JzBPcmp5WzUXypfkUXpEyDYHzaXgmW4kZ0edSwh4RK4sPmx+JPtK0X4aKCQ==", "license": "Apache-2.0", "dependencies": { - "@add-ideas/toolbox-contract": "0.2.2" + "@add-ideas/toolbox-contract": "0.2.3" }, "peerDependencies": { "react": ">=18 <20", @@ -63,13 +63,13 @@ } }, "node_modules/@add-ideas/toolbox-testkit": { - "version": "0.2.2", - "resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-testkit/-/0.2.2/toolbox-testkit-0.2.2.tgz", - "integrity": "sha512-ZxrRYiJI/j5aXwcd3mQItgDl1iOJ6N26+MpIG18qVZNwKKFCTCfSTzgzRooPt8rRc1MQYTPo4c+l/QpOWuTXxA==", + "version": "0.2.3", + "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-sq1MwhKWfFKen+N+124hl74qQimRSvmQ9sOU7jdcI+2qCKZ67+2B8rWyezeV80uTFu4Jv6deHksfYQ/tKNV6XQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@add-ideas/toolbox-contract": "0.2.2" + "@add-ideas/toolbox-contract": "0.2.3" }, "bin": { "toolbox-check": "dist/cli.js" diff --git a/package.json b/package.json index c586e6a..48882bc 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { "name": "av-tools", "private": true, - "version": "0.2.0", + "version": "0.2.1", "description": "Local-first browser audio and video conversion and light editing with ffmpeg.wasm.", "license": "GPL-3.0-or-later", "author": "Albrecht Degering", "repository": { "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": { - "url": "https://git.add-ideas.de/zemion/av-tools/issues" + "url": "https://git.add-ideas.de/lotobo/av-tools/issues" }, "type": "module", "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" }, "dependencies": { - "@add-ideas/toolbox-contract": "0.2.2", - "@add-ideas/toolbox-shell-react": "0.2.2", + "@add-ideas/toolbox-contract": "0.2.3", + "@add-ideas/toolbox-shell-react": "0.2.3", "@ffmpeg/ffmpeg": "0.12.15", "@ffmpeg/util": "0.12.2", "fflate": "0.8.3", @@ -60,7 +60,7 @@ "react-dom": "19.2.7" }, "devDependencies": { - "@add-ideas/toolbox-testkit": "0.2.2", + "@add-ideas/toolbox-testkit": "0.2.3", "@eslint/js": "10.0.1", "@playwright/test": "1.61.1", "@testing-library/jest-dom": "6.9.1", diff --git a/public/favicon.svg b/public/favicon.svg index 6893eb1..c7b8847 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1 +1,25 @@ - \ No newline at end of file + + Audio & Video Tools + + Original add·ideas clapperboard and play artwork, Copyright 2026 Albrecht + Degering, GPL-3.0-or-later. + + + + + + + + + + + + + + + + + + + + diff --git a/public/toolbox-app.json b/public/toolbox-app.json index f0c83c2..987c071 100644 --- a/public/toolbox-app.json +++ b/public/toolbox-app.json @@ -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, "id": "de.add-ideas.av-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.", "entry": "./", "icon": "./favicon.svg", @@ -44,14 +44,14 @@ "telemetry": false }, "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" }, "actions": [ { "id": "source", "label": "Source", - "url": "https://git.add-ideas.de/zemion/av-tools" + "url": "https://git.add-ideas.de/lotobo/av-tools" } ], "assets": [ diff --git a/scripts/generate-toolbox-manifest.mjs b/scripts/generate-toolbox-manifest.mjs index 84025a3..310d8dd 100644 --- a/scripts/generate-toolbox-manifest.mjs +++ b/scripts/generate-toolbox-manifest.mjs @@ -23,7 +23,7 @@ if (source.version !== packageJson.version) { } 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' ) { throw new Error( diff --git a/scripts/package-release.mjs b/scripts/package-release.mjs index 890c0be..bcbd3f7 100644 --- a/scripts/package-release.mjs +++ b/scripts/package-release.mjs @@ -23,9 +23,9 @@ const zipEpoch = new Date(1980, 0, 1, 0, 0, 0); const maximumEntryBytes = 256 * 1024 * 1024; const maximumArchiveBytes = 2 * 1024 * 1024 * 1024; 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 = - 'git+https://git.add-ideas.de/zemion/av-tools.git'; + 'git+https://git.add-ideas.de/lotobo/av-tools.git'; const requiredNativeLegalFiles = [ 'LICENSES/native/FFmpeg-LICENSE.md', 'LICENSES/native/FreeType-LICENSE.txt', diff --git a/src/components/HelpDialog.tsx b/src/components/HelpDialog.tsx index aceab69..b18bac7 100644 --- a/src/components/HelpDialog.tsx +++ b/src/components/HelpDialog.tsx @@ -196,7 +196,7 @@ export function HelpDialog({ open, onClose }: HelpDialogProps) {