chore: migrate PDF Tools to LocalToolBox

This commit is contained in:
2026-07-27 15:43:53 +02:00
parent b76886e3ec
commit a2b34572a9
11 changed files with 51 additions and 35 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

@@ -4,6 +4,14 @@ All notable changes to `pdf-tools` are documented here.
The project follows a pragmatic versioning scheme while the app is still below `1.0.0`: minor versions mark coherent user-facing milestones; patch versions mark fixes and small improvements.
## 0.4.4 — LocalToolBox organization migration
### Changed
- Moved canonical repository, Toolbox schema, corresponding-source, and package-registry URLs from the personal `zemion` namespace to the `lotobo` LocalToolBox organization.
- Upgraded the Toolbox contract, React shell, and validation testkit to `0.2.3` from the organization-owned registry.
- Bumped the app/package version to `0.4.4`.
## 0.4.3 — Aligned Toolbox content width
### Changed

View File

@@ -4,7 +4,7 @@
Current hosted version: <https://pdftools.add-ideas.de>
Current development release: **v0.4.3aligned Toolbox content width**. See [`CHANGELOG.md`](CHANGELOG.md) for milestone history.
Current development release: **v0.4.4LocalToolBox organization migration**. See [`CHANGELOG.md`](CHANGELOG.md) for milestone history.
Active work is tracked in Gitea issues. Durable project context is mirrored into the Gitea wiki from repository docs, including [`ROADMAP.md`](ROADMAP.md).
@@ -122,9 +122,9 @@ browser <-- HTTPS --> static web server / reverse proxy --> built app assets
There is no application server to operate. Administrators only need to host the built files from `dist/`.
The production build is relocatable and can also be assembled into an
[Add Ideas Toolbox](https://git.add-ideas.de/zemion/toolbox-portal) deployment.
[Add Ideas Toolbox](https://git.add-ideas.de/lotobo/toolbox-portal) deployment.
`toolbox-app.json` describes this app through the framework-independent
[Toolbox App Contract](https://git.add-ideas.de/zemion/toolbox-sdk). The same
[Toolbox App Contract](https://git.add-ideas.de/lotobo/toolbox-sdk). The same
artifact remains fully usable on its own.
The shared first-party shell always provides help, source, and appearance
@@ -257,10 +257,10 @@ The application version shown in the header is defined in `src/version.ts`. The
The current development baseline is:
```text
v0.4.3aligned Toolbox content width and light/dark/system themes
v0.4.4LocalToolBox organization migration
```
This branch preserves the browser-only workspace baseline and PDF.js compatibility setup while using Toolbox SDK `0.2.2`. The displayed app/package version is `0.4.3`; the shared header keeps the Toolbox icon and `add·ideas Toolbox` label in a fixed far-left block, the app title and one tagline centered, and Help, the PDF source link, Apps, and Personalize in a fixed far-right cluster. The PDF workspace now shares the shell bar's `90rem` maximum width. Workspace state, thumbnail handling, generated download URLs, page-grid components, tests, type-checking, linting, and formatting remain separated enough to support additional feature work without turning `App.tsx` back into a monolith.
This branch preserves the browser-only workspace baseline and PDF.js compatibility setup while using Toolbox SDK `0.2.3` from the `lotobo` package registry. The displayed app/package version is `0.4.4`; canonical source, schema, and release links use the LocalToolBox organization. The shared header keeps the Toolbox icon and `add·ideas Toolbox` label in a fixed far-left block, the app title and one tagline centered, and Help, the PDF source link, Apps, and Personalize in a fixed far-right cluster. The PDF workspace shares the shell bar's `90rem` maximum width. Workspace state, thumbnail handling, generated download URLs, page-grid components, tests, type-checking, linting, and formatting remain separated enough to support additional feature work without turning `App.tsx` back into a monolith.
## Project structure

32
package-lock.json generated
View File

@@ -1,16 +1,16 @@
{
"name": "pdf-tools",
"version": "0.4.3",
"version": "0.4.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pdf-tools",
"version": "0.4.3",
"version": "0.4.4",
"license": "AGPL-3.0-only",
"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",
"fflate": "^0.8.3",
"pdf-lib": "^1.17.1",
"pdfjs-dist": "^5.7.284",
@@ -18,7 +18,7 @@
"react-dom": "^19.2.6"
},
"devDependencies": {
"@add-ideas/toolbox-testkit": "^0.2.2",
"@add-ideas/toolbox-testkit": "^0.2.3",
"@eslint/js": "^10.0.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
@@ -40,18 +40,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",
@@ -59,13 +59,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"

View File

@@ -1,6 +1,6 @@
{
"name": "pdf-tools",
"version": "0.4.3",
"version": "0.4.4",
"private": true,
"license": "AGPL-3.0-only",
"type": "module",
@@ -23,8 +23,8 @@
"check": "npm run manifest:check && npm run typecheck && npm run lint && npm run test && npm run build && npm run test:toolbox"
},
"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",
"fflate": "^0.8.3",
"pdf-lib": "^1.17.1",
"pdfjs-dist": "^5.7.284",
@@ -32,7 +32,7 @@
"react-dom": "^19.2.6"
},
"devDependencies": {
"@add-ideas/toolbox-testkit": "^0.2.2",
"@add-ideas/toolbox-testkit": "^0.2.3",
"@eslint/js": "^10.0.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
@@ -52,5 +52,13 @@
"vite": "^8.0.13",
"vitest": "^4.1.6"
},
"description": "Browser-only, self-hostable PDF workbench for page-level PDF operations."
"description": "Browser-only, self-hostable PDF workbench for page-level PDF operations.",
"repository": {
"type": "git",
"url": "git+https://git.add-ideas.de/lotobo/pdf-tools.git"
},
"homepage": "https://git.add-ideas.de/lotobo/pdf-tools",
"bugs": {
"url": "https://git.add-ideas.de/lotobo/pdf-tools/issues"
}
}

View File

@@ -1,5 +1,5 @@
{
"$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.pdf-tools",
"name": "PDF Workbench",
@@ -25,8 +25,8 @@
"telemetry": false
},
"source": {
"repository": "https://git.add-ideas.de/zemion/pdf-tools",
"repository": "https://git.add-ideas.de/lotobo/pdf-tools",
"license": "AGPL-3.0-only"
},
"version": "0.4.3"
"version": "0.4.4"
}

View File

@@ -40,7 +40,7 @@ if (sourceVersion !== packageJson.version) {
const manifest = {
$schema:
'https://git.add-ideas.de/zemion/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json',
'https://git.add-ideas.de/lotobo/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json',
schemaVersion: 1,
...definition,
version: packageJson.version,

View File

@@ -45,7 +45,7 @@ files['SOURCE.md'] = Buffer.from(
'',
`The source code corresponding to PDF Tools ${packageJson.version} is available at:`,
'',
`https://git.add-ideas.de/zemion/pdf-tools/src/tag/v${packageJson.version}`,
`https://git.add-ideas.de/lotobo/pdf-tools/src/tag/v${packageJson.version}`,
'',
'Third-party components remain available under the separate terms reproduced in LICENSES/.',
'',

View File

@@ -23,7 +23,7 @@
"telemetry": false
},
"source": {
"repository": "https://git.add-ideas.de/zemion/pdf-tools",
"repository": "https://git.add-ideas.de/lotobo/pdf-tools",
"license": "AGPL-3.0-only"
}
}

View File

@@ -10,7 +10,7 @@ describe('toolbox app definition', () => {
it('uses repository metadata for the shared source control', () => {
expect(toolboxApp.source?.repository).toBe(
'https://git.add-ideas.de/zemion/pdf-tools'
'https://git.add-ideas.de/lotobo/pdf-tools'
);
expect(toolboxApp.actions).toBeUndefined();
});

View File

@@ -1 +1 @@
export const APP_VERSION = '0.4.3';
export const APP_VERSION = '0.4.4';