| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| wekan_10.14_amd64.snap | 2026-07-22 | 395.9 MB | |
| wekan_10.14_arm64.snap | 2026-07-22 | 304.2 MB | |
| wekan-10.14-riscv64.zip | 2026-07-22 | 310.9 MB | |
| wekan-10.14-s390x.zip | 2026-07-22 | 313.1 MB | |
| wekan-10.14-ppc64le.zip | 2026-07-22 | 312.2 MB | |
| wekan-10.14-sandstorm.spk | 2026-07-22 | 168.5 MB | |
| wekan-10.14-win64.zip | 2026-07-22 | 295.2 MB | |
| wekan-10.14-mac-arm64.zip | 2026-07-22 | 305.9 MB | |
| wekan-10.14-amd64.zip | 2026-07-22 | 307.1 MB | |
| wekan-10.14-arm64.zip | 2026-07-22 | 309.9 MB | |
| README.md | 2026-07-22 | 4.4 kB | |
| v10.14 source code.tar.gz | 2026-07-22 | 32.6 MB | |
| v10.14 source code.zip | 2026-07-22 | 33.7 MB | |
| Totals: 13 Items | 3.1 GB | 0 | |
v10.14 2026-07-22 WeKan ® release
This release fixes the following SECURITY ISSUES found by GitHub CodeQL code scanning:
- SpliceBleed: incomplete multi-character
sanitization when stripping exploit markup from a filename (GitHub CodeQL code scanning
alert [#425], rule
js/incomplete-multi-character-sanitization, CWE-116 Improper Encoding or Escaping of Output;imports/lib/fileNameDisplay.js).stripExploitPatterns()removed HTML/script/XML/template markup from a shown filename in a single pass — so an input crafted with nested or interleaved fragments (for example<scr<x>ipt>or<scr{{y}}ipt>) could have its inner part removed and the two surviving outer fragments SPLICED together into a fresh<script>token that the single pass no longer re-examined (CodeQL: "this string may still contain<script"). - Fixed by applying the removals REPEATEDLY until the string stops changing (a fixpoint
loop). Each pass only ever deletes text, so the string strictly shrinks and the loop always
terminates; any dangerous token an earlier removal reveals is then removed too. Blaze
{{ }}already HTML-escapes every rendered filename, so this is defence-in-depth on the displayed text rather than a live XSS, but the incomplete single-pass strip was genuinely wrong. -
Thanks to GitHub CodeQL (code scanning alert [#425]) and xet7 (fix).
-
IdentityBleed: identity string replacement (a no-op
replace) (GitHub CodeQL code scanning alert [#424], rulejs/identity-replacement, CWE-116 Improper Encoding or Escaping of Output;tests/securityLog.test.cjs). A test built a menu-id regex withid.replace('report-', 'report-')— replacing a substring with itself, a no-op that CodeQL flags because it is almost always a mistake for a real transformation. - Fixed by dropping the dead
replaceand matching'js-' + iddirectly. Test-only code with no runtime exposure, but the no-op was removed for correctness. - Thanks to GitHub CodeQL (code scanning alert [#424]) and xet7 (fix).
This release also resolves the following GitHub Dependabot alerts in the rspack build-toolchain
dev dependencies, without touching the rspack major version so builds are unaffected (both
packages enter only via @rspack/dev-server — the rspack serve dev server — and are not used by
meteor build):
- webpack-dev-server 5.2.5 → 5.2.6 (npm
overrides): fixes CVE-2026-14631 (DoS via a malformed Host/Origin header, alert [#113]) and CVE-2026-14620 (CSRF via the internal/webpack-dev-server/open-editorand/invalidateendpoints, alert [#114]). Patch release in the same major line. - http-proxy-middleware 2.0.9 → 2.0.10 (npm
overrides): fixes CVE-2026-55602 (a host+path router key matched by unanchored substring, so a crafted Host header could route to an unintended backend, alert [#107]). Patch release in the same major line. - The lock resolves with only those two entries changed;
@rspack/cliand@rspack/corestay at 1.7.11.elliptic(alert [#55], CVE-2025-14505) is left pinned because no fixed version is published upstream (latest is still 6.6.1, dev-only, Low). The@rspack/cli1→2 (PR [#6497]) and@babel/parser7→8 (PR [#6484], a runtime dependency) major bumps are deferred pending build/ runtime testing. - Thanks to GitHub Dependabot and xet7.
This release also fixes the following bug:
- Case-insensitive
#label autocomplete in the card title (#5116). Typing#testin the add-card / edit-card-title field did not suggest a label namedTesting— the label search matched with a case-sensitivelabel.name.indexOf(term), so only#Testmatched. The match now lowercases both the typed term and the label name/color (matching the@member autocomplete), extracted into a pure, unit-testedmodels/lib/labelAutocomplete.js. Thanks to rjl9 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.