Skip to content

Commit f09c152

Browse files
committed
Merge branch 'develop' into feature/9851-ecl-ec-theme
2 parents 03a8a3b + ebfb56c commit f09c152

35 files changed

+394
-479
lines changed

.github/workflows/manage-npm-tags.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
- '@public-ui/theme-default'
5757
- '@public-ui/theme-ecl'
5858
- '@public-ui/theme-kern'
59-
- '@public-ui/stylelint-rules'
59+
# - '@public-ui/stylelint-rules'
6060
- '@public-ui/themes'
6161
- '@public-ui/visual-tests'
6262
- '@public-ui/vue'
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
name: 04 - Update pnpm Lock
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
target_branch:
7+
description: 'Branch that should receive a refreshed pnpm-lock.yaml'
8+
required: true
9+
type: string
10+
11+
concurrency:
12+
group: 'workflow-${{ github.workflow }}-${{ inputs.target_branch }}'
13+
cancel-in-progress: true
14+
15+
jobs:
16+
validate-branch:
17+
runs-on: ubuntu-latest
18+
outputs:
19+
target_branch: ${{ steps.validate.outputs.target_branch }}
20+
steps:
21+
- name: Validate target branch
22+
id: validate
23+
run: |
24+
RAW_TARGET_BRANCH='${{ inputs.target_branch }}'
25+
TARGET_BRANCH="${RAW_TARGET_BRANCH#refs/heads/}"
26+
TARGET_BRANCH="${TARGET_BRANCH#origin/}"
27+
28+
if [ -z "$TARGET_BRANCH" ]; then
29+
echo 'The workflow requires a target branch.' >&2
30+
exit 1
31+
fi
32+
33+
if [ "${TARGET_BRANCH#refs/}" != "$TARGET_BRANCH" ]; then
34+
echo "Use a branch name instead of a ref: '$RAW_TARGET_BRANCH'." >&2
35+
exit 1
36+
fi
37+
38+
if ! LC_ALL=C printf '%s' "$TARGET_BRANCH" | grep -Eq '^[ -~]+$'; then
39+
echo "Branch '$TARGET_BRANCH' must only contain printable ASCII characters." >&2
40+
exit 1
41+
fi
42+
43+
if ! git check-ref-format --branch "$TARGET_BRANCH" >/dev/null 2>&1; then
44+
echo "Branch '$TARGET_BRANCH' is not a valid branch name." >&2
45+
exit 1
46+
fi
47+
48+
case "$TARGET_BRANCH" in
49+
develop|release/*)
50+
echo "The workflow must not run for branch '$TARGET_BRANCH'." >&2
51+
exit 1
52+
;;
53+
esac
54+
55+
echo "target_branch=$TARGET_BRANCH" >> "$GITHUB_OUTPUT"
56+
57+
update:
58+
needs: validate-branch
59+
runs-on: ubuntu-latest
60+
outputs:
61+
changed: ${{ steps.detect.outputs.changed }}
62+
steps:
63+
- name: Checkout target branch
64+
uses: actions/checkout@v6
65+
with:
66+
ref: ${{ needs.validate-branch.outputs.target_branch }}
67+
persist-credentials: false
68+
69+
- name: Install pnpm
70+
uses: pnpm/action-setup@v5
71+
with:
72+
version: 10
73+
run_install: false
74+
75+
- name: Use Node.js
76+
uses: actions/setup-node@v6
77+
with:
78+
node-version: 24
79+
cache: pnpm
80+
81+
- name: Refresh pnpm lock file
82+
run: pnpm install --ignore-scripts --lockfile-only --no-frozen-lockfile
83+
84+
- name: Git status after lock file refresh
85+
run: git status
86+
87+
- name: Check for lock file changes
88+
id: detect
89+
run: |
90+
if git diff --quiet -- pnpm-lock.yaml; then
91+
echo "changed=false" >> "$GITHUB_OUTPUT"
92+
else
93+
echo "changed=true" >> "$GITHUB_OUTPUT"
94+
fi
95+
96+
- name: Upload lock file artifact
97+
if: steps.detect.outputs.changed == 'true'
98+
uses: actions/upload-artifact@v7
99+
with:
100+
name: pnpm-lock-${{ github.run_id }}
101+
path: pnpm-lock.yaml
102+
if-no-files-found: error
103+
retention-days: 1
104+
105+
push:
106+
needs: [validate-branch, update]
107+
if: needs.update.outputs.changed == 'true'
108+
runs-on: ubuntu-latest
109+
steps:
110+
- uses: actions/create-github-app-token@v3
111+
id: app-token
112+
with:
113+
app-id: ${{ secrets.APP_ID }}
114+
private-key: ${{ secrets.PRIVATE_KEY }}
115+
116+
- name: Get GitHub App User ID
117+
id: get-user-id
118+
run: echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT"
119+
env:
120+
GH_TOKEN: ${{ steps.app-token.outputs.token }}
121+
122+
- name: Checkout target branch
123+
uses: actions/checkout@v6
124+
with:
125+
ref: ${{ needs.validate-branch.outputs.target_branch }}
126+
token: ${{ steps.app-token.outputs.token }}
127+
128+
- name: Download lock file artifact
129+
uses: actions/download-artifact@v8
130+
with:
131+
name: pnpm-lock-${{ github.run_id }}
132+
path: lockfile-artifact
133+
134+
- name: Apply lock file update
135+
run: cp lockfile-artifact/pnpm-lock.yaml pnpm-lock.yaml
136+
137+
- name: Stage lock file
138+
run: git add pnpm-lock.yaml
139+
140+
- name: Git status after staging
141+
run: git status
142+
143+
- name: Commit and push changes
144+
uses: stefanzweifel/git-auto-commit-action@v7
145+
with:
146+
commit_message: 'chore: update pnpm-lock.yaml'
147+
# Disable internal git add so that only the file staged above is committed.
148+
file_pattern: ''
149+
commit_user_name: '${{ steps.app-token.outputs.app-slug }}[bot]'
150+
commit_user_email: '${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com'

docs/CVE_OVERVIEW.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
| Severity | v4 | v3 | v2 | v1 |
3333
| -------- | --: | --: | --: | --: |
3434
| critical | 5 | 5 | 5 | 3 |
35-
| high | 35 | 33 | 45 | 29 |
36-
| moderate | 18 | 19 | 28 | 8 |
35+
| high | 33 | 31 | 43 | 29 |
36+
| moderate | 17 | 19 | 34 | 8 |
3737
| low | 4 | 4 | 9 | 1 |
3838
| info | 0 | 0 | 0 | 0 |
3939
| unknown | 0 | 0 | 0 | 0 |
@@ -96,9 +96,11 @@
9696
| undici | high | CVE-2026-1528 | v4, v3, v2 | Undici: Malicious WebSocket 64-bit length overflows parser and crashes the clien |
9797
| undici | high | CVE-2026-1526 | v4, v3, v2 | Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompre |
9898
| undici | high | CVE-2026-2229 | v4, v3, v2 | Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_win |
99-
| vite | high | GHSA-v2wj-q39q-566r | v4, v3, v2, v1 | Vite: `server.fs.deny` bypassed with queries |
100-
| vite | high | CVE-2026-39363 | v4, v3, v2, v1 | Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket |
99+
| vite | high | CVE-2026-39364 | v1 | Vite: `server.fs.deny` bypassed with queries |
100+
| vite | high | CVE-2026-39363 | v1 | Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket |
101+
| @hono/node-server | moderate | CVE-2026-39406 | v2 | @hono/node-server: Middleware bypass via repeated slashes in serveStatic |
101102
| ajv | moderate | CVE-2025-69873 | v3, v2 | ajv has ReDoS when using `$data` option |
103+
| axios | moderate | CVE-2026-39865 | v3, v2 | Axios HTTP/2 Session Cleanup State Corruption Vulnerability |
102104
| brace-expansion | moderate | CVE-2026-33750 | v4, v3, v2 | brace-expansion: Zero-step sequence causes process hang and memory exhaustion |
103105
| ejs | moderate | CVE-2024-33883 | v2 | ejs lacks certain pollution protection |
104106
| esbuild | moderate | GHSA-67mh-4wv8-2f99 | v2 | esbuild enables any website to send any requests to the development server and r |
@@ -109,6 +111,11 @@
109111
| hono | moderate | CVE-2026-29086 | v2 | Hono Vulnerable to Cookie Attribute Injection via Unsanitized domain and path in |
110112
| hono | moderate | CVE-2026-29085 | v2 | Hono Vulnerable to SSE Control Field Injection via CR/LF in writeSSE() |
111113
| hono | moderate | GHSA-v8w9-8mx6-g223 | v2 | Hono vulnerable to Prototype Pollution possible through **proto** key allowed in |
114+
| hono | moderate | GHSA-26pp-8wgv-hjvm | v2 | Hono missing validation of cookie name on write path in setCookie() |
115+
| hono | moderate | CVE-2026-39410 | v2 | Hono: Non-breaking space prefix bypass in cookie name handling in getCookie() |
116+
| hono | moderate | CVE-2026-39409 | v2 | Hono has incorrect IP matching in ipRestriction() for IPv4-mapped IPv6 addresses |
117+
| hono | moderate | CVE-2026-39408 | v2 | Hono: Path traversal in toSSG() allows writing files outside the output director |
118+
| hono | moderate | CVE-2026-39407 | v2 | Hono: Middleware bypass via repeated slashes in serveStatic |
112119
| js-yaml | moderate | CVE-2025-64718 | v2 | js-yaml has prototype pollution in merge (<<) |
113120
| locutus | moderate | CVE-2026-33993 | v4, v3, v2, v1 | Locutus has Prototype Pollution via **proto** Key Injection in unserialize() |
114121
| lodash | moderate | CVE-2026-2950 | v4, v3 | lodash vulnerable to Prototype Pollution via array path bypass in `_.unset` and |
@@ -122,7 +129,7 @@
122129
| undici | moderate | CVE-2026-1525 | v4, v3, v2 | Undici has an HTTP Request/Response Smuggling issue |
123130
| undici | moderate | CVE-2026-1527 | v4, v3, v2 | Undici has CRLF Injection in undici via `upgrade` option |
124131
| undici | moderate | CVE-2026-2581 | v4, v3 | Undici has Unbounded Memory Consumption in its DeduplicationHandler via Response |
125-
| vite | moderate | GHSA-4w7w-66w2-5vf9 | v4, v3, v2, v1 | Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling |
132+
| vite | moderate | CVE-2026-39365 | v1 | Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling |
126133
| webpack | moderate | CVE-2024-43788 | v2 | Webpack's AutoPublicPathRuntimeModule has a DOM Clobbering Gadget that leads to |
127134
| webpack-dev-server | moderate | CVE-2025-30360 | v2 | webpack-dev-server users' source code may be stolen when they access a malicious |
128135
| webpack-dev-server | moderate | CVE-2025-30359 | v2 | webpack-dev-server users' source code may be stolen when they access a malicious |

docs/arc42/07-deployment-view.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ graph LR
143143
| ------------------------ | ---------------------------- | --------------------------------------- |
144144
| **ci.yml** | Push, Pull Request | Run tests, linting, builds |
145145
| **publish.yml** | Tag creation | Publish packages to npm with provenance |
146+
| **update-pnpm-lock.yml** | Manual trigger | Refresh `pnpm-lock.yaml` for a branch |
146147
| **update-snapshots.yml** | Manual trigger | Update visual regression test snapshots |
147148
| **codeql.yml** | Push, Pull Request, Schedule | Security scanning with CodeQL |
148149

docs/arc42_de/07-deployment-view.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ graph LR
143143
| ------------------------ | ---------------------------- | ---------------------------------------------- |
144144
| **ci.yml** | Push, Pull Request | Tests, Linting, Builds ausführen |
145145
| **publish.yml** | Tag-Erstellung | Pakete zu npm mit Provenance veröffentlichen |
146+
| **update-pnpm-lock.yml** | Manueller Trigger | `pnpm-lock.yaml` für einen Branch erneuern |
146147
| **update-snapshots.yml** | Manueller Trigger | Visual Regression Test Snapshots aktualisieren |
147148
| **codeql.yml** | Push, Pull Request, Schedule | Sicherheits-Scanning mit CodeQL |
148149

0 commit comments

Comments
 (0)