From 038afb3f9ccbec10c26f8373ab19f19fa3f4eecc Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Thu, 23 Jul 2026 01:53:47 +0200 Subject: [PATCH] fix: reverse Toolbox header orientation --- CHANGELOG.md | 11 +++++++++++ README.md | 13 +++++++------ SOURCE.md | 4 ++-- THIRD_PARTY_NOTICES.md | 4 ++-- docs/FORMAT_SUPPORT.md | 2 +- docs/REFERENCE_IMPLEMENTATIONS.md | 4 ++-- package-lock.json | 32 +++++++++++++++---------------- package.json | 8 ++++---- public/toolbox-app.json | 2 +- src/AppShell.test.tsx | 32 ++++++++++++++++++++++++++++++- src/version.ts | 2 +- tests/release-archive.test.ts | 4 ++-- 12 files changed, 80 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3caf9b2..11013ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 0.3.2 - 2026-07-23 + +- Upgrade the Toolbox contract, React shell, and validation testkit to 0.2.2, + pinned to SDK revision `53c40a61ba1581246f65773fcbb1c1cfd31ac98e`. +- Move the Toolbox icon and `add·ideas Toolbox` label to the fixed far-left + block and place Help, the OneNote-specific Gitea source link, Apps, and + Personalize in that order in the fixed far-right cluster while retaining the + centered app title and tagline. +- Use the shared portal-style Personalize appearance panel; catalogue counts + and preference import/export remain portal-only controls. + ## 0.3.1 - 2026-07-23 - Upgrade the Toolbox contract, React shell, and validation testkit to 0.2.1. diff --git a/README.md b/README.md index 2562cb9..56bc9d7 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,13 @@ It is also an independent application in the add·ideas Toolbox contract. The source uses the Toolbox SDK shell and manifest, builds with Vite `base: './'`, and is delivered to Toolbox Portal as a checksummed static ZIP. -Version 0.3.1 uses the stable shared top bar, with Personalize, Apps, the -OneNote source link, and Help in a fixed left cluster; the app title and one -tagline centered; and the Toolbox icon with the `add·ideas Toolbox` label in a -fixed far-right block. +Version 0.3.2 uses the stable shared top bar, with the Toolbox icon and +`add·ideas Toolbox` label in a fixed far-left block; the app title and one +tagline centered; and Help, the OneNote source link, Apps, and Personalize in a +fixed far-right cluster. Personalize uses the shared portal-style appearance +panel while catalogue counts and preference import/export stay in the portal. -## What version 0.3.1 supports +## What version 0.3.2 supports - Desktop revision-store and unfragmented FSSHTTPB package-store `.one` sections from the tested producer families. @@ -85,7 +86,7 @@ supplied through the SDK's `?toolbox=` context mechanism. The app uses the SDK ```sh npm run release:artifact -(cd release && sha256sum -c onenote-tools-0.3.1.sha256) +(cd release && sha256sum -c onenote-tools-0.3.2.sha256) ``` The ZIP root contains the built static app and manifest plus the changelog, diff --git a/SOURCE.md b/SOURCE.md index 03ba261..a118263 100644 --- a/SOURCE.md +++ b/SOURCE.md @@ -1,8 +1,8 @@ # Corresponding source -The corresponding source for OneNote Tools 0.3.1 is the `v0.3.1` tag: +The corresponding source for OneNote Tools 0.3.2 is the `v0.3.2` tag: -https://git.add-ideas.de/zemion/onenote-tools/src/tag/v0.3.1 +https://git.add-ideas.de/zemion/onenote-tools/src/tag/v0.3.2 Build the release from that tag with Node.js 22 or newer: diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 5d3e67e..b3b7a0b 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -2,8 +2,8 @@ The production application uses: -- `@add-ideas/toolbox-contract` 0.2.1, Apache-2.0; -- `@add-ideas/toolbox-shell-react` 0.2.1, Apache-2.0; +- `@add-ideas/toolbox-contract` 0.2.2, Apache-2.0; +- `@add-ideas/toolbox-shell-react` 0.2.2, Apache-2.0; - fflate 0.8.3, MIT; - React, React DOM, and Scheduler, MIT. diff --git a/docs/FORMAT_SUPPORT.md b/docs/FORMAT_SUPPORT.md index 0b87547..820705d 100644 --- a/docs/FORMAT_SUPPORT.md +++ b/docs/FORMAT_SUPPORT.md @@ -1,6 +1,6 @@ # Format support -## Version 0.3.1 support matrix +## Version 0.3.2 support matrix | Input or feature | Status | Tested evidence and boundary | | -------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------- | diff --git a/docs/REFERENCE_IMPLEMENTATIONS.md b/docs/REFERENCE_IMPLEMENTATIONS.md index b09cbf1..ecfde47 100644 --- a/docs/REFERENCE_IMPLEMENTATIONS.md +++ b/docs/REFERENCE_IMPLEMENTATIONS.md @@ -1,10 +1,10 @@ # Specifications and pinned references -Version 0.3.1 records these immutable implementation revisions: +Version 0.3.2 records these immutable implementation revisions: | Repository | Exact revision | Use | | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------- | -| [`toolbox-sdk`](https://git.add-ideas.de/zemion/toolbox-sdk/src/commit/c296281f899608d5df7fae1d83d442675d1104a2) | `c296281f899608d5df7fae1d83d442675d1104a2` | App contract, React shell, manifest schema/testkit, and nested-path behavior | +| [`toolbox-sdk`](https://git.add-ideas.de/zemion/toolbox-sdk/src/commit/53c40a61ba1581246f65773fcbb1c1cfd31ac98e) | `53c40a61ba1581246f65773fcbb1c1cfd31ac98e` | App contract, React shell, manifest schema/testkit, and nested-path behavior | | [`toolbox-portal`](https://git.add-ideas.de/zemion/toolbox-portal/src/commit/d46f1b61fb85a18299b6b8af2148dcd991ef6b05) | `d46f1b61fb85a18299b6b8af2148dcd991ef6b05` | Reviewed ZIP shape, exact checksum lock, independent-app assembly, and nginx deployment model | | [`onenote.rs`](https://github.com/msiemens/onenote.rs/tree/5138a39a3f4e72b840932f9872fecde52fa9da60) | `5138a39a3f4e72b840932f9872fecde52fa9da60` | Selected desktop/FSSHTTPB OneStore and MS-ONE structures adapted into TypeScript | | [`rust-cab`](https://github.com/mdsteele/rust-cab/tree/c5839f5fdfa4c4e7cc9b22f570c79c96af0560e2) | `c5839f5fdfa4c4e7cc9b22f570c79c96af0560e2` | CAB structures, checksum, enumeration/extraction, MSZIP history, and unit fixtures | diff --git a/package-lock.json b/package-lock.json index 64d57a5..3d5a8a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,22 @@ { "name": "onenote-tools", - "version": "0.3.1", + "version": "0.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "onenote-tools", - "version": "0.3.1", + "version": "0.3.2", "license": "MPL-2.0 AND LGPL-2.1-only", "dependencies": { - "@add-ideas/toolbox-contract": "0.2.1", - "@add-ideas/toolbox-shell-react": "0.2.1", + "@add-ideas/toolbox-contract": "0.2.2", + "@add-ideas/toolbox-shell-react": "0.2.2", "fflate": "^0.8.3", "react": "^19.2.6", "react-dom": "^19.2.6" }, "devDependencies": { - "@add-ideas/toolbox-testkit": "0.2.1", + "@add-ideas/toolbox-testkit": "0.2.2", "@eslint/js": "^10.0.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", @@ -42,18 +42,18 @@ } }, "node_modules/@add-ideas/toolbox-contract": { - "version": "0.2.1", - "resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-contract/-/0.2.1/toolbox-contract-0.2.1.tgz", - "integrity": "sha512-NmwV41+ZS0qBWUnI9vflm0PcsiqITmxpSQQ5vMVaToFZuSSIJupgM43tuV9G4OJ1En0eTdYNxbsd3nsYhju2kw==", + "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==", "license": "Apache-2.0" }, "node_modules/@add-ideas/toolbox-shell-react": { - "version": "0.2.1", - "resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-shell-react/-/0.2.1/toolbox-shell-react-0.2.1.tgz", - "integrity": "sha512-slpz9ODVbk27b+uvG3WeCmNa71Q6guabyVHT+jyGLT6ENLSbwmoEFZ0mKNJDxemltpt9KY8I7z47uNBsQ7yKYg==", + "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==", "license": "Apache-2.0", "dependencies": { - "@add-ideas/toolbox-contract": "0.2.1" + "@add-ideas/toolbox-contract": "0.2.2" }, "peerDependencies": { "react": ">=18 <20", @@ -61,13 +61,13 @@ } }, "node_modules/@add-ideas/toolbox-testkit": { - "version": "0.2.1", - "resolved": "https://git.add-ideas.de/api/packages/zemion/npm/%40add-ideas%2Ftoolbox-testkit/-/0.2.1/toolbox-testkit-0.2.1.tgz", - "integrity": "sha512-0Nfs92r2M5I6hvP8TM776XG08StCBNS40sWt+t4wiMroRMS0aWk/hYqU6+I/VK1lzTLbtxSi0k33trJat3io6Q==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@add-ideas/toolbox-contract": "0.2.1" + "@add-ideas/toolbox-contract": "0.2.2" }, "bin": { "toolbox-check": "dist/cli.js" diff --git a/package.json b/package.json index a62a0cf..4d15a22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "onenote-tools", - "version": "0.3.1", + "version": "0.3.2", "description": "A local-first browser reader and exporter for OneNote files.", "license": "MPL-2.0 AND LGPL-2.1-only", "private": true, @@ -27,14 +27,14 @@ "check": "npm run manifest:check && npm run typecheck && npm run lint && npm run format:check && npm run test && npm run build && npm run toolbox:check" }, "dependencies": { - "@add-ideas/toolbox-contract": "0.2.1", - "@add-ideas/toolbox-shell-react": "0.2.1", + "@add-ideas/toolbox-contract": "0.2.2", + "@add-ideas/toolbox-shell-react": "0.2.2", "fflate": "^0.8.3", "react": "^19.2.6", "react-dom": "^19.2.6" }, "devDependencies": { - "@add-ideas/toolbox-testkit": "0.2.1", + "@add-ideas/toolbox-testkit": "0.2.2", "@eslint/js": "^10.0.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", diff --git a/public/toolbox-app.json b/public/toolbox-app.json index f61e642..a7223f2 100644 --- a/public/toolbox-app.json +++ b/public/toolbox-app.json @@ -40,5 +40,5 @@ "repository": "https://git.add-ideas.de/zemion/onenote-tools", "license": "MPL-2.0 AND LGPL-2.1-only" }, - "version": "0.3.1" + "version": "0.3.2" } diff --git a/src/AppShell.test.tsx b/src/AppShell.test.tsx index 08e5290..e2e04da 100644 --- a/src/AppShell.test.tsx +++ b/src/AppShell.test.tsx @@ -21,6 +21,27 @@ describe('Toolbox application shell', () => { name: 'Source for OneNote Tools on Gitea', }) ).toHaveAttribute('href', 'https://git.add-ideas.de/zemion/onenote-tools'); + expect( + Array.from( + screen.getByRole('group', { name: 'Toolbox controls' }).children, + (element) => element.getAttribute('aria-label') + ) + ).toEqual([ + 'Help', + 'Source for OneNote Tools on Gitea', + 'Apps', + 'Personalize', + ]); + expect( + Array.from( + document.querySelector('.toolbox-shell__bar')?.children ?? [], + (element) => element.className + ) + ).toEqual([ + 'toolbox-shell__brand', + 'toolbox-shell__identity', + 'toolbox-shell__controls', + ]); await user.click(screen.getByRole('button', { name: 'Help' })); expect( @@ -32,7 +53,16 @@ describe('Toolbox application shell', () => { const user = userEvent.setup(); const { container } = render(); - await user.click(screen.getByText('Personalize')); + await user.click(screen.getByRole('button', { name: 'Personalize' })); + expect( + screen.getByRole('heading', { name: 'Personalize your toolbox' }) + ).toBeInTheDocument(); + expect( + screen.getByRole('group', { name: 'Appearance' }) + ).toBeInTheDocument(); + expect( + screen.queryByRole('button', { name: 'Export JSON' }) + ).not.toBeInTheDocument(); await user.click(screen.getByRole('button', { name: 'Dark' })); expect(container.querySelector('.toolbox-shell')).toHaveAttribute( diff --git a/src/version.ts b/src/version.ts index 1006439..61b737a 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const APP_VERSION = '0.3.1'; +export const APP_VERSION = '0.3.2'; diff --git a/tests/release-archive.test.ts b/tests/release-archive.test.ts index 2a2415a..1fd165d 100644 --- a/tests/release-archive.test.ts +++ b/tests/release-archive.test.ts @@ -53,8 +53,8 @@ describe('release archive', () => { 'react', ]); const text = bundle.toString('utf8'); - expect(text).toContain('@add-ideas/toolbox-contract@0.2.1'); - expect(text).toContain('@add-ideas/toolbox-shell-react@0.2.1'); + expect(text).toContain('@add-ideas/toolbox-contract@0.2.2'); + expect(text).toContain('@add-ideas/toolbox-shell-react@0.2.2'); expect(text).toContain('react@'); expect(createHash('sha256').update(bundle).digest('hex')).toMatch( /^[a-f0-9]{64}$/