Skip to content

Commit bf455fd

Browse files
committed
Merge branch 'develop' of https://github.com/public-ui/kolibri into fix/9699-table-in-accordion
2 parents adade32 + 909cda3 commit bf455fd

File tree

176 files changed

+1686
-1834
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

176 files changed

+1686
-1834
lines changed

.github/workflows/benchmark.baseline.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313
steps:
1414
- name: Create GitHub App Token
15-
uses: actions/create-github-app-token@v2
15+
uses: actions/create-github-app-token@v3
1616
id: app-token
1717
with:
1818
app-id: ${{ secrets.APP_ID }}

.github/workflows/benchmark.monitoring.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-latest
1818
steps:
1919
- name: Create GitHub App Token
20-
uses: actions/create-github-app-token@v2
20+
uses: actions/create-github-app-token@v3
2121
id: app-token
2222
with:
2323
app-id: ${{ secrets.APP_ID }}

.github/workflows/cla.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313
steps:
1414
- name: 'Create GitHub app token'
15-
uses: actions/create-github-app-token@v2
15+
uses: actions/create-github-app-token@v3
1616
id: app-token
1717
with:
1818
app-id: ${{ secrets.APP_ID }}

.github/workflows/draft-deploy.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ jobs:
5151
run: pnpm i --no-frozen-lockfile --no-verify-store-integrity
5252

5353
- name: Build
54-
run: pnpm --filter @public-ui/sample-react... build
54+
run: pnpm --filter @public-ui/presentation... build
5555

56-
- name: Attest sample react build
56+
- name: Attest presentation build
5757
uses: actions/attest-build-provenance@v4
5858
with:
59-
subject-path: packages/samples/react/dist
59+
subject-path: packages/samples/presentation/dist
6060

6161
- name: Netlify Deploy
6262
uses: netlify/actions/cli@master
@@ -65,7 +65,7 @@ jobs:
6565
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
6666
NETLIFY_SITE_ID: ${{ vars.NETLIFY_SITE_ID }}
6767
with:
68-
args: deploy --no-build --filter=@public-ui/sample-react -d packages/samples/react/dist
68+
args: deploy --no-build --filter=@public-ui/presentation -d packages/samples/presentation/dist
6969

7070
- name: Find comment
7171
uses: peter-evans/find-comment@v4

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
if: github.repository == 'public-ui/kolibri'
4444
runs-on: ubuntu-latest
4545
steps:
46-
- uses: actions/create-github-app-token@v2
46+
- uses: actions/create-github-app-token@v3
4747
id: app-token
4848
with:
4949
app-id: ${{ secrets.APP_ID }}

.github/workflows/test-deploy.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ jobs:
5252
run: pnpm i --no-frozen-lockfile --no-verify-store-integrity
5353

5454
- name: Build
55-
run: pnpm --filter @public-ui/sample-react... build
55+
run: pnpm --filter @public-ui/presentation... build
5656

57-
- name: Attest sample react build
57+
- name: Attest presentation build
5858
uses: actions/attest-build-provenance@v4
5959
with:
60-
subject-path: packages/samples/react/dist
60+
subject-path: packages/samples/presentation/dist
6161

6262
- name: Netlify Deploy
6363
uses: netlify/actions/cli@master
@@ -66,4 +66,4 @@ jobs:
6666
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
6767
NETLIFY_SITE_ID: ${{ vars.NETLIFY_SITE_ID }}
6868
with:
69-
args: deploy --no-build --filter=@public-ui/sample-react -d packages/samples/react/dist --alias="$GITHUB_REF_NAME" # Netlify conveniently sanitizes the alias for us. E.g. `release/1.7` becomes `release-1-7`
69+
args: deploy --no-build --filter=@public-ui/presentation -d packages/samples/presentation/dist --alias="$GITHUB_REF_NAME" # Netlify conveniently sanitizes the alias for us. E.g. `release/1.7` becomes `release-1-7`

.github/workflows/update-snapshots.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
update-snapshots:
1818
runs-on: ubuntu-latest
1919
steps:
20-
- uses: actions/create-github-app-token@v2
20+
- uses: actions/create-github-app-token@v3
2121
id: app-token
2222
with:
2323
app-id: ${{ secrets.APP_ID }}
@@ -83,10 +83,14 @@ jobs:
8383
- name: Display git status (after test-update)
8484
run: git status
8585

86+
- name: Stage snapshot changes
87+
run: |
88+
shopt -s globstar
89+
git add packages/**/__snapshots__/** packages/**/snapshots/**
90+
8691
- name: Commit and push changes
8792
uses: stefanzweifel/git-auto-commit-action@v7
8893
with:
8994
commit_message: Update all snapshots
90-
file_pattern: 'packages/**/__snapshots__/** packages/**/snapshots/**'
9195
commit_user_name: '${{ steps.app-token.outputs.app-slug }}[bot]'
9296
commit_user_email: '${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com'

.github/workflows/visual-tests-base.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ concurrency:
77
group: 'workflow-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}'
88
cancel-in-progress: true
99

10+
permissions:
11+
contents: write
12+
pull-requests: write
13+
1014
jobs:
1115
visual-tests-snapshots:
1216
strategy:
@@ -88,3 +92,53 @@ jobs:
8892
name: base-snapshots-${{ matrix.package }}
8993
path: /tmp/snapshots/${{ matrix.package }}
9094
if-no-files-found: ignore
95+
96+
- name: Determine report path
97+
id: report-path
98+
if: always() && github.event.pull_request.head.repo.fork == false
99+
run: |
100+
PACKAGE="${{ matrix.package }}"
101+
if [[ "${PACKAGE}" == 'test-tag-name-transformer' ]]; then
102+
REPORT_DIR="packages/test-tag-name-transformer/playwright-report"
103+
else
104+
THEME_DIR="${PACKAGE#theme-}"
105+
REPORT_DIR="packages/themes/${THEME_DIR}/playwright-report"
106+
fi
107+
echo "path=${REPORT_DIR}" >> $GITHUB_OUTPUT
108+
if [ -d "${REPORT_DIR}" ]; then
109+
echo "exists=true" >> $GITHUB_OUTPUT
110+
else
111+
echo "exists=false" >> $GITHUB_OUTPUT
112+
fi
113+
114+
- name: Deploy report to GitHub Pages
115+
if: always() && github.event.pull_request.head.repo.fork == false && steps.report-path.outputs.exists == 'true'
116+
uses: JamesIves/github-pages-deploy-action@v4
117+
with:
118+
folder: ${{ steps.report-path.outputs.path }}
119+
target-folder: pr-${{ github.event.pull_request.number }}/${{ matrix.package }}
120+
branch: gh-pages
121+
clean: false
122+
123+
- name: Find existing PR comment
124+
if: always() && github.event.pull_request.head.repo.fork == false
125+
uses: peter-evans/find-comment@v4
126+
id: fc
127+
with:
128+
issue-number: ${{ github.event.pull_request.number }}
129+
comment-author: 'github-actions[bot]'
130+
body-includes: '<!-- visual-test-report-${{ matrix.package }} -->'
131+
132+
- name: Post PR comment with report link
133+
if: always() && github.event.pull_request.head.repo.fork == false
134+
uses: peter-evans/create-or-update-comment@v5
135+
with:
136+
comment-id: ${{ steps.fc.outputs.comment-id }}
137+
issue-number: ${{ github.event.pull_request.number }}
138+
edit-mode: replace
139+
body: |
140+
<!-- visual-test-report-${{ matrix.package }} -->
141+
## Visual Test Report — `${{ matrix.package }}`
142+
[Open Playwright Report](https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/pr-${{ github.event.pull_request.number }}/${{ matrix.package }}/)
143+
144+
Run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Visual Tests Report Cleanup
2+
3+
on:
4+
pull_request:
5+
types: [closed]
6+
7+
permissions:
8+
contents: write
9+
10+
jobs:
11+
cleanup:
12+
if: github.event.pull_request.head.repo.fork == false
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v6
16+
with:
17+
ref: gh-pages
18+
persist-credentials: true
19+
20+
- name: Remove PR report directory
21+
run: |
22+
PR_DIR="pr-${{ github.event.pull_request.number }}"
23+
if [ -d "$PR_DIR" ]; then
24+
git config user.name "github-actions[bot]"
25+
git config user.email "github-actions[bot]@users.noreply.github.com"
26+
git rm -rf "$PR_DIR"
27+
git commit -m "chore: remove visual test report for PR #${{ github.event.pull_request.number }}"
28+
git push
29+
else
30+
echo "No report directory found for PR #${{ github.event.pull_request.number }}, skipping."
31+
fi

docs/CVE_OVERVIEW.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030

3131
| Severity | v4 | v3 | v2 | v1 |
3232
| -------- | --: | --: | --: | --: |
33-
| critical | 3 | 3 | 3 | 1 |
34-
| high | 18 | 18 | 28 | 21 |
35-
| moderate | 2 | 2 | 14 | 1 |
33+
| critical | 4 | 4 | 4 | 2 |
34+
| high | 25 | 24 | 35 | 23 |
35+
| moderate | 7 | 7 | 19 | 1 |
3636
| low | 3 | 3 | 8 | 0 |
3737
| info | 0 | 0 | 0 | 0 |
3838
| unknown | 0 | 0 | 0 | 0 |
@@ -44,17 +44,21 @@
4444
| basic-ftp | critical | CVE-2026-27699 | v4, v3, v2 | Basic FTP has Path Traversal Vulnerability in its downloadToDir() method |
4545
| fast-xml-parser | critical | CVE-2026-25896 | v4, v3, v2 | fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE ent |
4646
| locutus | critical | CVE-2026-25521 | v4, v3, v2, v1 | locutus is vulnerable to Prototype Pollution |
47+
| locutus | critical | CVE-2026-32304 | v4, v3, v2, v1 | Locutus vulnerable to RCE via unsanitized input in create_function() |
4748
| @angular/common | high | CVE-2025-66035 | v1 | Angular is Vulnerable to XSRF Token Leakage via Protocol-Relative URLs in Angula |
4849
| @angular/compiler | high | CVE-2025-66412 | v1 | Angular Stored XSS Vulnerability via SVG Animation, SVG URL and MathML Attribute |
4950
| @angular/compiler | high | CVE-2026-22610 | v1 | Angular has XSS Vulnerability via Unsanitized SVG Script Attributes |
51+
| @angular/compiler | high | CVE-2026-32635 | v1 | Angular vulnerable to XSS in i18n attribute bindings |
5052
| @angular/core | high | CVE-2026-22610 | v1 | Angular has XSS Vulnerability via Unsanitized SVG Script Attributes |
5153
| @angular/core | high | CVE-2026-27970 | v1 | Angular i18n vulnerable to Cross-Site Scripting |
54+
| @angular/core | high | CVE-2026-32635 | v1 | Angular vulnerable to XSS in i18n attribute bindings |
5255
| @hono/node-server | high | CVE-2026-29087 | v2 | @hono/node-server has authorization bypass for protected static paths via encode |
5356
| axios | high | CVE-2026-25639 | v3, v2 | Axios is Vulnerable to Denial of Service via **proto** Key in mergeConfig |
5457
| braces | high | CVE-2024-4068 | v4, v3, v2, v1 | Uncontrolled resource consumption in braces |
5558
| express-rate-limit | high | CVE-2026-30827 | v2 | express-rate-limit: IPv4-mapped IPv6 addresses bypass per-client rate limiting o |
5659
| fast-xml-parser | high | CVE-2026-25128 | v4, v3, v2 | fast-xml-parser has RangeError DoS Numeric Entities Bug |
5760
| fast-xml-parser | high | CVE-2026-26278 | v4, v3, v2 | fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansio |
61+
| flatted | high | CVE-2026-32141 | v4, v3, v2 | flatted vulnerable to unbounded recursion DoS in parse() revive phase |
5862
| hono | high | CVE-2026-29045 | v2 | Hono vulnerable to arbitrary file access via serveStatic vulnerability |
5963
| immutable | high | CVE-2026-29063 | v2 | Immutable is vulnerable to Prototype Pollution |
6064
| locutus | high | CVE-2026-29091 | v4, v3, v2, v1 | locutus call_user_func_array vulnerable to Remote Code Execution (RCE) due to Co |
@@ -66,12 +70,15 @@
6670
| semver | high | CVE-2022-25883 | v2 | semver vulnerable to Regular Expression Denial of Service |
6771
| serialize-javascript | high | GHSA-5c6j-r48x-rmvq | v4, v3, v2, v1 | Serialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.to |
6872
| svgo | high | CVE-2026-29074 | v4, v3, v2, v1 | SVGO DoS through entity expansion in DOCTYPE (Billion Laughs) |
69-
| tar | high | CVE-2026-23950 | v1 | Race Condition in node-tar Path Reservations via Unicode Ligature Collisions on |
7073
| tar | high | CVE-2026-24842 | v1 | node-tar Vulnerable to Arbitrary File Creation/Overwrite via Hardlink Path Trave |
7174
| tar | high | CVE-2026-23745 | v1 | node-tar is Vulnerable to Arbitrary File Overwrite and Symlink Poisoning via Ins |
72-
| tar | high | CVE-2026-26960 | v4, v3, v1 | Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in no |
75+
| tar | high | CVE-2026-26960 | v4, v1 | Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in no |
7376
| tar | high | CVE-2026-29786 | v4, v3, v2, v1 | tar has Hardlink Path Traversal via Drive-Relative Linkpath |
7477
| tar | high | CVE-2026-31802 | v4, v3, v2, v1 | node-tar Symlink Path Traversal via Drive-Relative Linkpath |
78+
| tar | high | CVE-2026-23950 | v1 | Race Condition in node-tar Path Reservations via Unicode Ligature Collisions on |
79+
| undici | high | CVE-2026-1528 | v4, v3, v2 | Undici: Malicious WebSocket 64-bit length overflows parser and crashes the clien |
80+
| undici | high | CVE-2026-1526 | v4, v3, v2 | Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompre |
81+
| undici | high | CVE-2026-2229 | v4, v3, v2 | Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_win |
7582
| ajv | moderate | CVE-2025-69873 | v3, v2 | ajv has ReDoS when using `$data` option |
7683
| ejs | moderate | CVE-2024-33883 | v2 | ejs lacks certain pollution protection |
7784
| esbuild | moderate | GHSA-67mh-4wv8-2f99 | v2 | esbuild enables any website to send any requests to the development server and r |
@@ -84,6 +91,9 @@
8491
| nanoid | moderate | CVE-2024-55565 | v2 | Predictable results in nanoid generation when given non-integer values |
8592
| qs | moderate | CVE-2025-15284 | v2 | qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion |
8693
| serialize-javascript | moderate | CVE-2024-11831 | v2 | Cross-site Scripting (XSS) in serialize-javascript |
94+
| undici | moderate | CVE-2026-1525 | v4, v3, v2 | Undici has an HTTP Request/Response Smuggling issue |
95+
| undici | moderate | CVE-2026-1527 | v4, v3, v2 | Undici has CRLF Injection in undici via `upgrade` option |
96+
| undici | moderate | CVE-2026-2581 | v4, v3, v2 | Undici has Unbounded Memory Consumption in its DeduplicationHandler via Response |
8797
| webpack | moderate | CVE-2024-43788 | v2 | Webpack's AutoPublicPathRuntimeModule has a DOM Clobbering Gadget that leads to |
8898
| webpack-dev-server | moderate | CVE-2025-30360 | v2 | webpack-dev-server users' source code may be stolen when they access a malicious |
8999
| webpack-dev-server | moderate | CVE-2025-30359 | v2 | webpack-dev-server users' source code may be stolen when they access a malicious |

0 commit comments

Comments
 (0)