From 803397ff52976265cfaa6838638d1905777c44e8 Mon Sep 17 00:00:00 2001
From: Albrecht Degering
Date: Thu, 23 Jul 2026 01:57:52 +0200
Subject: [PATCH] fix: reverse Toolbox header orientation
---
.env.example | 4 +-
Containerfile.release | 4 +-
README.md | 28 +++++-----
compose.example.yaml | 2 +-
compose.yaml | 6 +--
package-lock.json | 22 ++++----
package.json | 6 +--
public/SOURCE.md | 4 +-
release/toolbox.lock.example.json | 22 ++++----
release/toolbox.lock.json | 22 ++++----
scripts/assembler.test.ts | 2 +-
src/App.test.tsx | 42 +++++++++++----
src/App.tsx | 4 +-
src/components/PreferencesPanel.tsx | 44 +++-------------
src/styles.css | 79 -----------------------------
src/test/fixtures.ts | 6 +--
16 files changed, 105 insertions(+), 192 deletions(-)
diff --git a/.env.example b/.env.example
index 1558509..7d3cb97 100644
--- a/.env.example
+++ b/.env.example
@@ -4,5 +4,5 @@ TRAEFIK_NETWORK=internal
TRAEFIK_CERT_RESOLVER=netcup
# Keep these two values paired when deploying a newer published toolbox release.
-TOOLBOX_RELEASE_VERSION=0.4.1
-TOOLBOX_RELEASE_SHA256=7d8907990a8b91c2bfda48d007fd8136e95222858db8f51780cd10f4165e9124
+TOOLBOX_RELEASE_VERSION=0.4.2
+TOOLBOX_RELEASE_SHA256=20c1eacbcf03a9c8f0beeb53d2326a963e54dd9ca93e4f0118f95f10aec45389
diff --git a/Containerfile.release b/Containerfile.release
index cf8c830..7c1a1c3 100644
--- a/Containerfile.release
+++ b/Containerfile.release
@@ -2,8 +2,8 @@ ARG NGINX_IMAGE=nginxinc/nginx-unprivileged:1.31.3-alpine@sha256:18d67281256ded3
FROM ${NGINX_IMAGE} AS release
-ARG TOOLBOX_RELEASE_VERSION=0.4.1
-ARG TOOLBOX_RELEASE_SHA256=7d8907990a8b91c2bfda48d007fd8136e95222858db8f51780cd10f4165e9124
+ARG TOOLBOX_RELEASE_VERSION=0.4.2
+ARG TOOLBOX_RELEASE_SHA256=20c1eacbcf03a9c8f0beeb53d2326a963e54dd9ca93e4f0118f95f10aec45389
ARG TOOLBOX_RELEASE_BASE_URL=https://git.add-ideas.de/zemion/toolbox-portal/releases/download
RUN set -eu; \
diff --git a/README.md b/README.md
index 59d934d..97d57f3 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# add·ideas Toolbox Portal
`toolbox-portal` is the static launcher and release assembler for the add·ideas
-browser toolbox. Version `0.2.1` reads one same-origin catalogue, shows each app
+browser toolbox. Version `0.2.2` reads one same-origin catalogue, shows each app
as a full-page launch tile, and keeps personal pins, drag-and-drop ordering,
visibility, and appearance in the current browser. Pinned tools have their own
section; search, category, and clickable tag filters stay close to the tool
@@ -30,7 +30,7 @@ npm run build
npm run dev
```
-The package lock resolves the `^0.2.1` SDK ranges to the published `0.2.1`
+The package lock resolves the `^0.2.2` SDK ranges to the published `0.2.2`
packages. A sibling SDK checkout is only needed when intentionally developing
the SDK and portal together.
@@ -68,7 +68,7 @@ privacy and executable-code warning. Light, dark, and system modes are supported
## Production deployment behind Traefik
The committed `compose.yaml` is the shortest production path. Its release
-container downloads the immutable Toolbox 0.4.1 ZIP during the image build,
+container downloads the immutable Toolbox 0.4.2 ZIP during the image build,
verifies SHA-256 before extracting it, and then copies only the verified static
files into the pinned unprivileged nginx image. Node.js and a local portal
assembly are not required on the deployment host.
@@ -119,8 +119,8 @@ The app release should also publish a matching `.sha256` sidecar. The manifest
must declare the pinned reverse-DNS id and version. Application and portal
versions are independent.
-`release/toolbox.lock.json` is the reviewed v0.4.1 lock. Its URLs and checksums
-pin the published PDF Tools 0.4.1, XSLT Tools 0.4.1, and OneNote Tools 0.3.1
+`release/toolbox.lock.json` is the reviewed v0.4.2 lock. Its URLs and checksums
+pin the published PDF Tools 0.4.2, XSLT Tools 0.4.2, and OneNote Tools 0.3.2
release bytes. Use
`release/toolbox.lock.example.json` as the template for a future release and
verify every downloaded asset before committing updated values. Artifacts may be:
@@ -142,7 +142,7 @@ npm run assemble -- \
--lock release/toolbox.lock.json \
--portal-dist dist \
--output build/toolbox \
- --archive build/add-ideas-toolbox-0.4.1.zip
+ --archive build/add-ideas-toolbox-0.4.2.zip
```
Existing output is refused. Pass `--force` only when replacing those exact
@@ -162,8 +162,8 @@ build/toolbox/
├── xslt/
└── onenote/
-build/add-ideas-toolbox-0.4.1.zip
-build/add-ideas-toolbox-0.4.1.zip.sha256
+build/add-ideas-toolbox-0.4.2.zip
+build/add-ideas-toolbox-0.4.2.zip.sha256
```
The assembler verifies SHA-256 before opening an artifact, validates every app
@@ -184,7 +184,7 @@ directory separately:
```sh
npm run package:static -- \
--input build/toolbox \
- --output artifacts/add-ideas-toolbox-0.4.1.zip
+ --output artifacts/add-ideas-toolbox-0.4.2.zip
```
This also emits a `.sha256` sidecar.
@@ -201,9 +201,9 @@ normal local XML/XSLT transformations do not require that permission.
```sh
podman build -f Containerfile \
- -t git.add-ideas.de/zemion/toolbox:0.4.1 .
+ -t git.add-ideas.de/zemion/toolbox:0.4.2 .
podman run --rm -p 8080:8080 \
- git.add-ideas.de/zemion/toolbox:0.4.1
+ git.add-ideas.de/zemion/toolbox:0.4.2
```
For a direct-port local deployment after assembly, use the separate example:
@@ -220,7 +220,7 @@ docker login git.add-ideas.de
docker buildx build \
--platform linux/amd64,linux/arm64 \
--file Containerfile.release \
- --tag git.add-ideas.de/zemion/toolbox:0.4.1 \
+ --tag git.add-ideas.de/zemion/toolbox:0.4.2 \
--tag git.add-ideas.de/zemion/toolbox:0.4 \
--push .
```
@@ -246,8 +246,8 @@ permission to push code, releases, and container packages.
all three apps, switch between them, and confirm the encoded `toolbox`
context.
5. Verify the distribution with
- `(cd build && sha256sum -c add-ideas-toolbox-0.4.1.zip.sha256)`.
-6. Commit the reviewed lock, tag the toolbox release (for example `v0.4.1`), and
+ `(cd build && sha256sum -c add-ideas-toolbox-0.4.2.zip.sha256)`.
+6. Commit the reviewed lock, tag the toolbox release (for example `v0.4.2`), and
push the branch and tag to Gitea.
7. In Gitea, open **Releases → New release**, select the tag, and upload the
static ZIP plus its `.sha256` file. Do not use a mutable “latest” URL in a
diff --git a/compose.example.yaml b/compose.example.yaml
index e9560d2..95d140a 100644
--- a/compose.example.yaml
+++ b/compose.example.yaml
@@ -3,7 +3,7 @@ services:
build:
context: .
dockerfile: Containerfile
- image: git.add-ideas.de/zemion/toolbox:0.4.1
+ image: git.add-ideas.de/zemion/toolbox:0.4.2
restart: unless-stopped
read_only: true
ports:
diff --git a/compose.yaml b/compose.yaml
index 14157a5..b5220f6 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -6,9 +6,9 @@ services:
context: .
dockerfile: Containerfile.release
args:
- TOOLBOX_RELEASE_VERSION: "${TOOLBOX_RELEASE_VERSION:-0.4.1}"
- TOOLBOX_RELEASE_SHA256: "${TOOLBOX_RELEASE_SHA256:-7d8907990a8b91c2bfda48d007fd8136e95222858db8f51780cd10f4165e9124}"
- image: "git.add-ideas.de/zemion/toolbox:${TOOLBOX_RELEASE_VERSION:-0.4.1}"
+ TOOLBOX_RELEASE_VERSION: "${TOOLBOX_RELEASE_VERSION:-0.4.2}"
+ TOOLBOX_RELEASE_SHA256: "${TOOLBOX_RELEASE_SHA256:-20c1eacbcf03a9c8f0beeb53d2326a963e54dd9ca93e4f0118f95f10aec45389}"
+ image: "git.add-ideas.de/zemion/toolbox:${TOOLBOX_RELEASE_VERSION:-0.4.2}"
restart: unless-stopped
read_only: true
tmpfs:
diff --git a/package-lock.json b/package-lock.json
index 8744af5..323f611 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,16 +1,16 @@
{
"name": "@add-ideas/toolbox-portal",
- "version": "0.2.1",
+ "version": "0.2.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@add-ideas/toolbox-portal",
- "version": "0.2.1",
+ "version": "0.2.2",
"license": "AGPL-3.0-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",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
@@ -44,18 +44,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",
diff --git a/package.json b/package.json
index 437e49a..340bfb7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@add-ideas/toolbox-portal",
- "version": "0.2.1",
+ "version": "0.2.2",
"license": "AGPL-3.0-only",
"private": true,
"type": "module",
@@ -21,8 +21,8 @@
"package:static": "node scripts/package-static.mjs"
},
"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",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
diff --git a/public/SOURCE.md b/public/SOURCE.md
index 9806cdb..0be31ae 100644
--- a/public/SOURCE.md
+++ b/public/SOURCE.md
@@ -1,8 +1,8 @@
# Corresponding source
-The source code corresponding to add·ideas Toolbox Portal 0.2.1 is available at:
+The source code corresponding to add·ideas Toolbox Portal 0.2.2 is available at:
-https://git.add-ideas.de/zemion/toolbox-portal/src/tag/v0.4.1
+https://git.add-ideas.de/zemion/toolbox-portal/src/tag/v0.4.2
Each bundled application contains its own `SOURCE.md`, license, and third-party
license materials. The application sources are also linked from the portal.
diff --git a/release/toolbox.lock.example.json b/release/toolbox.lock.example.json
index fc2bfb7..f136486 100644
--- a/release/toolbox.lock.example.json
+++ b/release/toolbox.lock.example.json
@@ -1,8 +1,8 @@
{
"$schema": "./toolbox-release-lock.schema.json",
"schemaVersion": 1,
- "releaseVersion": "0.4.1",
- "portalVersion": "0.2.1",
+ "releaseVersion": "0.4.2",
+ "portalVersion": "0.2.2",
"catalogue": {
"id": "de.add-ideas.toolbox",
"name": "add·ideas Toolbox",
@@ -15,23 +15,23 @@
"apps": [
{
"id": "de.add-ideas.pdf-tools",
- "version": "0.4.1",
- "artifact": "https://git.add-ideas.de/zemion/pdf-tools/releases/download/v0.4.1/pdf-tools-0.4.1.zip",
- "sha256": "a7313e1fc709ec1fd3c09d46f7de84e07c299bd98f36fcba839ca0d6c8afc467",
+ "version": "0.4.2",
+ "artifact": "https://git.add-ideas.de/zemion/pdf-tools/releases/download/v0.4.2/pdf-tools-0.4.2.zip",
+ "sha256": "ebb6711e149a59abf51eddc0927debba9118205bde91faf7dded132478bc23d0",
"target": "pdf"
},
{
"id": "de.add-ideas.xslt-tools",
- "version": "0.4.1",
- "artifact": "https://git.add-ideas.de/zemion/xslt-tools/releases/download/v0.4.1/xslt-tools-0.4.1.zip",
- "sha256": "0f24480b8a3f007d8e330592e598babf5982306e1e9566325c9ca60441deb2fb",
+ "version": "0.4.2",
+ "artifact": "https://git.add-ideas.de/zemion/xslt-tools/releases/download/v0.4.2/xslt-tools-0.4.2.zip",
+ "sha256": "daaa821c10c6c6285f97128ba3d923e48efa24449f1fb0a21bf478abaf27499f",
"target": "xslt"
},
{
"id": "de.add-ideas.onenote-tools",
- "version": "0.3.1",
- "artifact": "https://git.add-ideas.de/zemion/onenote-tools/releases/download/v0.3.1/onenote-tools-0.3.1.zip",
- "sha256": "52d0443698ae875438f01bb6b7735722d511bc99d4b9ca5060727ebb41276665",
+ "version": "0.3.2",
+ "artifact": "https://git.add-ideas.de/zemion/onenote-tools/releases/download/v0.3.2/onenote-tools-0.3.2.zip",
+ "sha256": "c07e6909ae57bd7681f26ec29c7a4e927b6919123ef9e28aa2d8c55b842b65d2",
"target": "onenote"
}
]
diff --git a/release/toolbox.lock.json b/release/toolbox.lock.json
index fc2bfb7..f136486 100644
--- a/release/toolbox.lock.json
+++ b/release/toolbox.lock.json
@@ -1,8 +1,8 @@
{
"$schema": "./toolbox-release-lock.schema.json",
"schemaVersion": 1,
- "releaseVersion": "0.4.1",
- "portalVersion": "0.2.1",
+ "releaseVersion": "0.4.2",
+ "portalVersion": "0.2.2",
"catalogue": {
"id": "de.add-ideas.toolbox",
"name": "add·ideas Toolbox",
@@ -15,23 +15,23 @@
"apps": [
{
"id": "de.add-ideas.pdf-tools",
- "version": "0.4.1",
- "artifact": "https://git.add-ideas.de/zemion/pdf-tools/releases/download/v0.4.1/pdf-tools-0.4.1.zip",
- "sha256": "a7313e1fc709ec1fd3c09d46f7de84e07c299bd98f36fcba839ca0d6c8afc467",
+ "version": "0.4.2",
+ "artifact": "https://git.add-ideas.de/zemion/pdf-tools/releases/download/v0.4.2/pdf-tools-0.4.2.zip",
+ "sha256": "ebb6711e149a59abf51eddc0927debba9118205bde91faf7dded132478bc23d0",
"target": "pdf"
},
{
"id": "de.add-ideas.xslt-tools",
- "version": "0.4.1",
- "artifact": "https://git.add-ideas.de/zemion/xslt-tools/releases/download/v0.4.1/xslt-tools-0.4.1.zip",
- "sha256": "0f24480b8a3f007d8e330592e598babf5982306e1e9566325c9ca60441deb2fb",
+ "version": "0.4.2",
+ "artifact": "https://git.add-ideas.de/zemion/xslt-tools/releases/download/v0.4.2/xslt-tools-0.4.2.zip",
+ "sha256": "daaa821c10c6c6285f97128ba3d923e48efa24449f1fb0a21bf478abaf27499f",
"target": "xslt"
},
{
"id": "de.add-ideas.onenote-tools",
- "version": "0.3.1",
- "artifact": "https://git.add-ideas.de/zemion/onenote-tools/releases/download/v0.3.1/onenote-tools-0.3.1.zip",
- "sha256": "52d0443698ae875438f01bb6b7735722d511bc99d4b9ca5060727ebb41276665",
+ "version": "0.3.2",
+ "artifact": "https://git.add-ideas.de/zemion/onenote-tools/releases/download/v0.3.2/onenote-tools-0.3.2.zip",
+ "sha256": "c07e6909ae57bd7681f26ec29c7a4e927b6919123ef9e28aa2d8c55b842b65d2",
"target": "onenote"
}
]
diff --git a/scripts/assembler.test.ts b/scripts/assembler.test.ts
index 258c083..1e7d7e8 100644
--- a/scripts/assembler.test.ts
+++ b/scripts/assembler.test.ts
@@ -83,7 +83,7 @@ function makeLock(artifact: string, sha256: string) {
return {
schemaVersion: 1,
releaseVersion: '0.1.0',
- portalVersion: '0.2.1',
+ portalVersion: '0.2.2',
catalogue: {
id: 'de.add-ideas.toolbox',
name: 'Test Toolbox',
diff --git a/src/App.test.tsx b/src/App.test.tsx
index 9d02e7c..d0c689d 100644
--- a/src/App.test.tsx
+++ b/src/App.test.tsx
@@ -39,7 +39,7 @@ describe('portal UI', () => {
).toHaveAttribute('rel', 'noopener noreferrer');
expect(
sourceLinks.find((link) =>
- link.getAttribute('href')?.endsWith('/toolbox-portal/src/tag/v0.4.1')
+ link.getAttribute('href')?.endsWith('/toolbox-portal/src/tag/v0.4.2')
)
).toBeDefined();
expect(
@@ -229,16 +229,33 @@ describe('portal UI', () => {
const brand = within(header).getByRole('link', {
name: 'add·ideas Toolbox',
});
+ const controls = within(header).getByRole('group', {
+ name: 'Toolbox controls',
+ });
expect(
- personalize.compareDocumentPosition(apps) &
- Node.DOCUMENT_POSITION_FOLLOWING
- ).toBeTruthy();
+ Array.from(controls.children, (element) =>
+ element.getAttribute('aria-label')
+ )
+ ).toEqual(['Help', 'Toolbox source on Gitea', 'Apps', 'Personalize']);
+ expect(help.compareDocumentPosition(source)).toBe(
+ Node.DOCUMENT_POSITION_FOLLOWING
+ );
+ expect(source.compareDocumentPosition(apps)).toBe(
+ Node.DOCUMENT_POSITION_FOLLOWING
+ );
+ expect(apps.compareDocumentPosition(personalize)).toBe(
+ Node.DOCUMENT_POSITION_FOLLOWING
+ );
expect(
- apps.compareDocumentPosition(source) & Node.DOCUMENT_POSITION_FOLLOWING
- ).toBeTruthy();
- expect(
- source.compareDocumentPosition(help) & Node.DOCUMENT_POSITION_FOLLOWING
- ).toBeTruthy();
+ Array.from(
+ header.querySelector('.toolbox-shell__bar')?.children ?? [],
+ (element) => element.className
+ )
+ ).toEqual([
+ 'toolbox-shell__brand',
+ 'toolbox-shell__identity',
+ 'toolbox-shell__controls',
+ ]);
expect(brand.querySelector('img')).toHaveAttribute('src', './favicon.svg');
});
@@ -412,6 +429,13 @@ describe('portal UI', () => {
});
const popover = screen.getByRole('dialog', { name: 'Personalize Toolbox' });
expect(popover).toContainElement(heading);
+ expect(popover).toContainElement(screen.getByText('On this device'));
+ expect(
+ within(popover).getByRole('group', { name: 'Appearance' })
+ ).toBeInTheDocument();
+ expect(
+ popover.querySelector('.toolbox-shell__preferences-content')
+ ).toBeInTheDocument();
expect(popover).not.toHaveAttribute('aria-modal');
expect(container.querySelector('.site-shell')).not.toHaveAttribute('inert');
expect(screen.getByText(/does not transmit them/i)).toHaveTextContent(
diff --git a/src/App.tsx b/src/App.tsx
index 12a976f..d2342e5 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -473,9 +473,9 @@ export default function App() {
- Portal v0.2.1 ·{' '}
+ Portal v0.2.2 ·{' '}
diff --git a/src/components/PreferencesPanel.tsx b/src/components/PreferencesPanel.tsx
index a8ce36a..ebe07a6 100644
--- a/src/components/PreferencesPanel.tsx
+++ b/src/components/PreferencesPanel.tsx
@@ -1,10 +1,10 @@
import { useRef, useState, type ChangeEvent } from 'react';
+import { ToolboxPersonalizePanel } from '@add-ideas/toolbox-shell-react';
import {
defaultPreferences,
parsePreferences,
type Preferences,
} from '../preferences';
-import type { ThemeMode } from '../types';
interface PreferencesPanelProps {
preferences: Preferences;
@@ -20,10 +20,6 @@ export function PreferencesPanel({
const fileInput = useRef(null);
const [message, setMessage] = useState('');
- function setTheme(theme: ThemeMode) {
- onChange({ ...preferences, theme });
- }
-
function exportPreferences() {
const blob = new Blob([`${JSON.stringify(preferences, null, 2)}\n`], {
type: 'application/json',
@@ -55,39 +51,11 @@ export function PreferencesPanel({
}
return (
- onChange({ ...preferences, theme })}
+ storageAvailable={storageAvailable}
>
-
-
On this device
-
Personalize your toolbox
-
-
- {!storageAvailable && (
-
- Browser storage is unavailable. Changes will last only until this page
- closes.
-
- )}
-
-
-
{preferences.pinned.length}
@@ -139,6 +107,6 @@ export function PreferencesPanel({
{message}
-
+
);
}
diff --git a/src/styles.css b/src/styles.css
index 278f378..fb0df20 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -690,38 +690,6 @@ main {
margin-bottom: 0.5rem;
}
-.portal-header .toolbox-shell__personalize-popover {
- width: min(26rem, calc(100vw - 1.5rem));
- max-height: calc(100vh - 5.5rem);
- overflow: auto;
-}
-
-.preferences-content {
- padding: 0.35rem;
- color: var(--toolbox-text, var(--text));
-}
-
-.preferences-heading {
- margin-bottom: 0.9rem;
-}
-
-.preferences-content h2 {
- margin: 0;
- font-family: Inter, Avenir, 'Segoe UI', sans-serif;
- font-size: 1rem;
- letter-spacing: -0.025em;
-}
-
-.portal-header .preferences-kicker {
- margin: 0 0 0.3rem;
- padding: 0;
- color: var(--toolbox-accent, var(--brand));
- font-size: 0.68rem;
- font-weight: 750;
- letter-spacing: 0.1em;
- text-transform: uppercase;
-}
-
.help-steps {
display: grid;
gap: 0.85rem;
@@ -750,44 +718,6 @@ main {
font-size: 1.3rem;
}
-.theme-choice {
- margin: 1rem 0;
- padding: 0;
- border: 0;
-}
-
-.theme-choice legend {
- margin-bottom: 0.6rem;
- color: var(--muted);
- font-size: 0.78rem;
- font-weight: 700;
- text-transform: uppercase;
-}
-
-.theme-choice > div {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: 0.45rem;
- padding: 0.35rem;
- border-radius: 0.75rem;
- background: var(--surface-soft);
-}
-
-.theme-choice button {
- padding: 0.62rem;
- border: 0;
- border-radius: 0.5rem;
- background: transparent;
- cursor: pointer;
-}
-
-.theme-choice button.is-selected {
- background: var(--surface);
- color: var(--brand);
- box-shadow: 0 2px 8px rgba(20, 30, 60, 0.09);
- font-weight: 700;
-}
-
.preference-summary {
display: grid;
grid-template-columns: repeat(3, 1fr);
@@ -846,15 +776,6 @@ main {
font-size: 0.78rem;
}
-.portal-header .inline-warning {
- margin: 0 0 0.75rem;
- padding: 0.7rem 0.8rem;
- border-radius: 0.6rem;
- background: color-mix(in srgb, var(--danger) 8%, var(--surface));
- color: var(--danger);
- font-size: 0.82rem;
-}
-
.visually-hidden {
position: absolute !important;
width: 1px !important;
diff --git a/src/test/fixtures.ts b/src/test/fixtures.ts
index 1749151..b5dba95 100644
--- a/src/test/fixtures.ts
+++ b/src/test/fixtures.ts
@@ -7,7 +7,7 @@ export const pdfManifest: ToolboxAppManifest = {
schemaVersion: 1,
id: 'de.add-ideas.pdf-tools',
name: 'PDF Workbench',
- version: '0.4.1',
+ version: '0.4.2',
description: 'Page-level PDF operations performed locally in the browser.',
entry: './',
icon: './favicon.svg',
@@ -39,7 +39,7 @@ export const xsltManifest: ToolboxAppManifest = {
...pdfManifest,
id: 'de.add-ideas.xslt-tools',
name: 'XSLT Workbench',
- version: '0.4.1',
+ version: '0.4.2',
description: 'Transform XML locally with XSLT in the browser.',
icon: './xslt.svg',
categories: ['documents', 'developer'],
@@ -54,7 +54,7 @@ export const onenoteManifest: ToolboxAppManifest = {
...pdfManifest,
id: 'de.add-ideas.onenote-tools',
name: 'OneNote Reader',
- version: '0.3.1',
+ version: '0.3.2',
description: 'Inspect OneNote packages locally in the browser.',
icon: './onenote.svg',
categories: ['documents', 'notes'],