From cde19704b352bd47910ca2049abf35497c368413 Mon Sep 17 00:00:00 2001 From: Edouard Vanbelle Date: Thu, 18 Jun 2026 02:01:27 +0200 Subject: [PATCH 1/3] chore(ci): fix ci.yml --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f584e87e..075ddcac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -201,7 +201,9 @@ jobs: - name: Fail if fixtures are stale (rebuild + commit them) run: git diff --exit-code tests/fixtures/plugins/ - name: Run plugin runtime tests - run: cargo test --features plugins plugins:: + # Quote: the trailing `::` confuses GitHub's YAML parser (mapping + # values not allowed) and aborts the whole workflow at load time. + run: 'cargo test --features plugins plugins::' rust-test: name: Server Unit and Functionnal Tests From e11e172769931a5489858f3c140339a016a3bf07 Mon Sep 17 00:00:00 2001 From: Edouard Vanbelle Date: Thu, 18 Jun 2026 02:03:04 +0200 Subject: [PATCH 2/3] feat(plugins): add missing icons in admin section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit % ./tools/check-icons.py Found 116 distinct FA icon(s) referenced in static/ Registry has 128 icon(s) in OxiIcons 4 missing icon(s): • clock-rotate-left used in: static/admin.html ✓ viewBox=0 0 576 512 • puzzle-piece used in: static/admin.html, static/admin.html, static/admin.html, static/admin.html ✓ viewBox=0 0 512 512 • sync used in: static/admin.html ✓ viewBox=0 0 512 512 • upload used in: static/admin.html, static/admin.html ✓ viewBox=0 0 448 512 ✓ Added 4 icon(s) to static/js/core/icons.js --- static/js/core/icons.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/static/js/core/icons.js b/static/js/core/icons.js index 13219e4c..5fcc41d1 100644 --- a/static/js/core/icons.js +++ b/static/js/core/icons.js @@ -524,7 +524,24 @@ const OxiIcons = { 'M384 96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-70.7-57.3-128-128-128S320 25.3 320 96l0 64-160 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64l-32 0 0-64z' ], - adjust: [512, 'M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z'] + adjust: [512, 'M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z'], + + 'clock-rotate-left': [ + 576, + 'M288 64c106 0 192 86 192 192S394 448 288 448c-65.2 0-122.9-32.5-157.6-82.3-10.1-14.5-30.1-18-44.6-7.9s-18 30.1-7.9 44.6C124.1 468.6 201 512 288 512 429.4 512 544 397.4 544 256S429.4 0 288 0C202.3 0 126.5 42.1 80 106.7L80 80c0-17.7-14.3-32-32-32S16 62.3 16 80l0 112c0 17.7 14.3 32 32 32l24.6 0c.5 0 1 0 1.5 0l86 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-38.3 0C154.9 102.6 217 64 288 64zm24 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1z' + ], + 'puzzle-piece': [ + 512, + 'M224 0c35.3 0 64 21.5 64 48 0 10.4-4.4 20-12 27.9-6.6 6.9-12 15.3-12 24.9 0 15 12.2 27.2 27.2 27.2l44.8 0c26.5 0 48 21.5 48 48l0 44.8c0 15 12.2 27.2 27.2 27.2 9.5 0 18-5.4 24.9-12 7.9-7.5 17.5-12 27.9-12 26.5 0 48 28.7 48 64s-21.5 64-48 64c-10.4 0-20.1-4.4-27.9-12-6.9-6.6-15.3-12-24.9-12-15 0-27.2 12.2-27.2 27.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2 0-9.2 5.8-17.3 13.2-22.8 11.6-8.7 18.8-20.7 18.8-34 0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34 7.4 5.5 13.2 13.5 13.2 22.8 0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2c0-12.8 10.4-23.2 23.2-23.2 9.2 0 17.3 5.8 22.8 13.2 8.7 11.6 20.7 18.8 34 18.8 26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8-5.5 7.4-13.5 13.2-22.8 13.2-12.8 0-23.2-10.4-23.2-23.2L0 176c0-26.5 21.5-48 48-48l108.8 0c15 0 27.2-12.2 27.2-27.2 0-9.5-5.4-18-12-24.9-7.5-7.9-12-17.5-12-27.9 0-26.5 28.7-48 64-48z' + ], + sync: [ + 512, + 'M65.9 228.5c13.3-93 93.4-164.5 190.1-164.5 53 0 101 21.5 135.8 56.2 .2 .2 .4 .4 .6 .6l7.6 7.2-47.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.4-11.3-10.7C390.5 28.6 326.5 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1zm443.5 64c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-53 0-101-21.5-135.8-56.2-.2-.2-.4-.4-.6-.6l-7.6-7.2 47.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320c-8.5 0-16.7 3.4-22.7 9.5S-.1 343.7 0 352.3l1 127c.1 17.7 14.6 31.9 32.3 31.7S65.2 496.4 65 478.7l-.4-51.5 10.7 10.1c46.3 46.1 110.2 74.7 180.7 74.7 129 0 235.7-95.4 253.4-219.5z' + ], + upload: [ + 448, + 'M256 109.3L256 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-210.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 109.3zM224 400c44.2 0 80-35.8 80-80l80 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64l80 0c0 44.2 35.8 80 80 80zm144 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z' + ] }; // Icon CSS is now in /css/components/icons.css (loaded via main.css). From f095baf26b2e89afa7cc669c516df85552102dce Mon Sep 17 00:00:00 2001 From: Edouard Vanbelle Date: Thu, 18 Jun 2026 02:32:11 +0200 Subject: [PATCH 3/3] chore(ci): translation and icons will warn only --- .github/workflows/ci.yml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 075ddcac..f58fdef1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,20 +94,19 @@ jobs: - name: Check locale files are at parity with en.json # Python 3 stdlib only — no setup step needed. - # `--check-only` keeps the CI log terse; failures still surface - # via exit code (the script returns 1 when any non-English - # locale is missing a key present in en.json). Mirrors the - # `--check-only` flag on `tools/check-icons.py` below. - # Run locally without --check-only to see the missing keys. + # **Advisory** (non-blocking via `continue-on-error`): a failed + # exit code paints the step red but does not fail the job, so + # unrelated PRs still merge. Re-arm by removing + # `continue-on-error`. Run locally without `--check-only` to see + # the missing keys. + continue-on-error: true run: python3 tools/check-missing-translations.py --check-only - name: Check FA icons referenced in static/ are registered - # `--check-only` skips the Font-Awesome clone and the icons.js - # patch — it just scans `fas fa-` references and diffs - # them against OxiIcons. Exit 1 if any used icon is absent - # from the registry. Run locally without --check-only to - # auto-add missing entries from a checked-out Font-Awesome - # source. + # **Advisory** (non-blocking via `continue-on-error`). Run + # locally without `--check-only` to auto-add missing entries + # from a checked-out Font-Awesome source. + continue-on-error: true run: python3 tools/check-icons.py --check-only rust-fmt: