Wekan logo

Wekan

Open source kanban board application built with Meteor

Alternative to: trello


About Versions (218)

v10.84

2026-08-12

Binaries in these bundles

Each bundle carries a Node.js, a FerretDB and the MongoDB Database Tools. Which source has a given CPU varies from release to release - nodejs.org builds some architectures, unofficial-builds others, and the wekan/node-patches build the ones neither of them does - and not every source publishes a checksum. This is what went into this release, and which downloads were checked against a published SHA256.

BundleBinaryFromVersionCheckedSHA256
amd64FerretDBwekan/FerretDBv1.49.0verified7c74941ff043f26a…
amd64Node.jsnodejs.orgv24.19.0verified14b342e71204f811…
arm64FerretDBwekan/FerretDBv1.49.0verified092132531555a39e…
arm64Node.jsnodejs.orgv24.19.0verified01443c1e1a29e531…
armhfFerretDBwekan/FerretDBv1.49.0verified144404fb9793dc8e…
armhfNode.jswekan/node-patchesv24.19.0verifiedb55350f3071b765a…
armv6FerretDBwekan/FerretDBv1.49.0verified7c27b2c15448709a…
armv6Node.jswekan/node-patchesv24.19.0verified128ded0cda638c1f…
armv7FerretDBwekan/FerretDBv1.49.0verified144404fb9793dc8e…
armv7Node.jswekan/node-patchesv24.19.0verified8dbe0a9aa8550ad5…
i386FerretDBwekan/FerretDBv1.49.0verified1f70cb1687411b2a…
i386Node.jswekan/node-patchesv24.19.0verified3b0b3bbfe27daf58…
mac-arm64FerretDBwekan/FerretDBv1.49.0verified576364db59dfce3b…
mac-arm64Node.jsnodejs.orgv24.19.0verified3f1cf157479c1480…
mac-x64FerretDBwekan/FerretDBv1.49.0verified37d70cd90aad6d38…
mac-x64Node.jsnodejs.orgv24.19.0verifiedd35e95230f46f6f0…
ppc64leFerretDBwekan/FerretDBv1.49.0verified7c61d4853d5163ad…
ppc64leNode.jsnodejs.orgv24.19.0verifiedc510c6ce12f07010…
riscv64FerretDBwekan/FerretDBv1.49.0verifiedbd4912da70f5e6c1…
riscv64Node.jsunofficial-builds.nodejs.orgv24.19.0verifiedcd1f14af28121480…
s390xFerretDBwekan/FerretDBv1.49.0verified62900110fc3e8165…
s390xNode.jsnodejs.orgv24.19.0verifieda4792e65962ffa0a…
win-arm64FerretDBwekan/FerretDBv1.49.0verified792166623e774b0a…
win-arm64Node.jsnodejs.orgv24.19.0verified8502f4a50b458d4c…
win64FerretDBwekan/FerretDBv1.49.0verifiedf42c50aa84095a96…
win64Node.jsnodejs.orgv24.19.0verified57f71ab3652e797d…

A row saying no checksum published is not a failed check - it is a source that publishes nothing to check against. Those are the ones worth fixing at the source.

v10.84 2026-08-12 WeKan ® release

In short: one fix, to the snap, and it is a fix to the previous release’s fix. The guard v10.82 added so an out-of-date FerretDB copy could not be served had the opposite failure of the bug it fixed: it decided which copy was newer by comparing MongoDB’s file timestamps against the migration marker, and STARTING mongod rewrites those files - so a single service start during a refresh made a frozen MongoDB look newer than the FerretDB that had been live for two weeks, and the snap was switched onto the frozen one. It now asks the question of BOTH copies, and when both have been written to since the migration it switches nothing and says so, because a timestamp says when a file was touched and not how much is in it. Below that, the three newest interface strings are translated into 133 languages. The binaries below are v10.83’s: nothing here rebuilds them.

PlatformBinaryFromVersionSHA256
amd64Node.jsnodejs.orgv24.19.014b342e71204f811bde6153be8e04b62aef63c236fef92b55f9c83154b409647
amd64FerretDBwekan/FerretDBv1.49.07c74941ff043f26aa4411ef5065d6b2d0766e369fc2a4458364c2f5571c12762
arm64Node.jsnodejs.orgv24.19.001443c1e1a29e531ccad5a46fefa6df490d2189c49f7955904aecdbb0fe86fdc
arm64FerretDBwekan/FerretDBv1.49.0092132531555a39eac12566240a5f1ed02f62148b2dca0540a74c68e5957f6b5
armhfNode.jswekan/node-patchesv24.19.0b55350f3071b765a98ed66fdc410657ff168a937935057077fd7ab33cb30b9aa
armhfFerretDBwekan/FerretDBv1.49.0144404fb9793dc8e039874812f4e2cb3e6d8b1df0ffdbe50254e7790a342a2f4
armv6Node.jswekan/node-patchesv24.19.0128ded0cda638c1f144eadb23ad249889515df017d298fd49c8faf3db110f0f1
armv6FerretDBwekan/FerretDBv1.49.07c27b2c15448709a24eace9b3c951c62fbe33413f7d20d56cb5520f4436efe2d
armv7Node.jswekan/node-patchesv24.19.08dbe0a9aa8550ad5275c5538ebf868eb2037f0c4d9cccbe319f63b7e5854cd45
armv7FerretDBwekan/FerretDBv1.49.0144404fb9793dc8e039874812f4e2cb3e6d8b1df0ffdbe50254e7790a342a2f4
i386Node.jswekan/node-patchesv24.19.03b0b3bbfe27daf583b3a0f432efacc508407a012cdd9e8847250e7c015565bac
i386FerretDBwekan/FerretDBv1.49.01f70cb1687411b2a0fa9ac3b5bfc8c4ed9ce25ec2ddfa17e6fd3efb38136a39c
mac-arm64Node.jsnodejs.orgv24.19.03f1cf157479c1480352083105e13faf9d008ede98e7e157746b6df940d197b94
mac-arm64FerretDBwekan/FerretDBv1.49.0576364db59dfce3ba564b9a3e484496eb57f95d76d2007b9f83241acdbd2f4fa
mac-x64Node.jsnodejs.orgv24.19.0d35e95230f46f6f0751df497c56622c6735e05d5e1fb1630996a005b9d328fe4
mac-x64FerretDBwekan/FerretDBv1.49.037d70cd90aad6d3867b6686507ff1888f1edf6791818c31d014d130e8f39fc14
ppc64leNode.jsnodejs.orgv24.19.0c510c6ce12f07010f771e6edb22a3fe23f4f2e6f40b1ffd4941aed0646a0d8b3
ppc64leFerretDBwekan/FerretDBv1.49.07c61d4853d5163ad8761449d693fd458ebbb8611a2351c718014876242c5b1fb
riscv64Node.jsunofficial-builds.nodejs.orgv24.19.0cd1f14af2812148002f58b58a5f9af512a50e3b8e8c148e0db44019dcb68edfd
riscv64FerretDBwekan/FerretDBv1.49.0bd4912da70f5e6c1475ab989668c76b4ab7db4ee06c44357693df64f5e1d0e0b
s390xNode.jsnodejs.orgv24.19.0a4792e65962ffa0af42627aacf1122a60c3c88dbf4e4184f06820d66f9da8ba4
s390xFerretDBwekan/FerretDBv1.49.0no checksum published
win-arm64Node.jsnodejs.orgv24.19.08502f4a50b458d4cc38ed8f2001556c2cd239d464920f74017926ccb1e1c157f
win-arm64FerretDBwekan/FerretDBv1.49.0792166623e774b0af2aced31ed3ae39f545ca5268dc4c2b8d1a329228ff52cbc
win64Node.jsnodejs.orgv24.19.057f71ab3652e797d84acddc79c81cc9ff1c6ddb2a1974cdb83f00fee9bff4c73
win64FerretDBwekan/FerretDBv1.49.0f42c50aa84095a9616b00f27a584c66b7bf79e3b109450c62a5f146ba3c85478

This release fixes the following bug:

Snap: a started mongod is not a used mongod, so stop calling the live copy stale. Thanks to lukechao, markusst1982 and xet7.

The staleness guard added for #6583 had the opposite failure of the bug it fixed:

A couple of weeks ago, I did a snap revert … but then completed the migration successfully. Today, my database suddenly reverted to an old version from what looks like weeks ago. Upgrading to 10.83 did not fix the problem automatically.

Their FerretDB was the live database and had been for two weeks; MongoDB was the frozen one. The guard decided otherwise because it compared exactly two things: the newest mtime under the MongoDB data directory, and the migration marker. Starting mongod rewrites those files - recovery, and the checkpoint it writes on startup - so one service start during a refresh put MongoDB’s newest mtime at today against a marker from two weeks ago. The guard called the live copy stale, wekan-control set database=mongodb, and what came up was the data as it stood on the day of the migration. Upgrading could not help, because the upgrade was the cause: this runs at every start, so every start re-applied it.

An mtime cannot tell somebody used this database from this database was started, so asking it of one copy cannot answer the question. Asking it of both can, because the case the guard exists for has a shape the mistaken one does not. The migrated copy untouched since the migration while MongoDB moved on is STALE - nothing has been using FerretDB. The migrated copy moved on while MongoDB did not is CURRENT, the normal state after a successful switch. Both moved on is AMBIGUOUS: two databases have been written to since they were copies of each other, and there is no answer there, only a choice, and it is the admin’s.

Only the first may be acted on automatically. The ambiguous case switches nothing, prints both databases’ last-written times and the two commands to look at each, and says that nothing was changed or deleted - both copies live in $SNAP_COMMON, which snap revert does not roll back. That restraint matters most in the branch of mongodb-control that DELETES files/db to migrate again when mongod cannot start at all: on ambiguity the SQLite holds work of its own, so wiping it would destroy the very copy in doubt.

The message has no database=ferretdb condition on it, deliberately. An instance the old guard already moved to database=mongodb is sitting on the wrong copy now and that setting persists, so speaking up only when FerretDB is selected would leave it there silently. Whichever side is selected, the admin hears that the other one holds writes of its own.

tests/ferretdbMigrationStale.test.cjs gains the reported regression - a two-week-old migration, a FerretDB written to a minute ago, a mongod started an hour ago - and pins that ambiguity can never reach the deletion.

and improves the translations:

The three new Version-pane and checklist strings, in 133 languages. Thanks to xet7.

invalid-year, collapse-checklist and expand-checklist shipped in en.i18n.json with the card-date fix and the collapsible checklists; every other language file carried them as English placeholders. Translated directly, as CLAUDE.md requires - no external translation service, API or key - from each language’s OWN existing strings, so the wording matches what that file already says rather than being invented beside it.

Three anchors did most of the work. checklist and collapse / uncollapse give each language its established terms, and invalid-domain is the same shape of sentence as the new one - a rejection, then an instruction with an example - so its phrasing, punctuation and register carried over directly.

Where an anchor was itself wrong the correct term was used instead of copying the mistake forward. Several files have terms that drifted in from another language: Italian Non collassare in the Greek and Romanian files, Russian in the Georgian and Mongolian ones, Vietnamese in the Thai one, Serbian in the Slovenian and Bulgarian ones. Others use a literal sense of “collapse” that is not the UI one - Azerbaijani Yıxılma, Estonian Kokkupõrge, Khmer ដួលរលំ and Chinese 崩溃 are structural collapse, a building falling down. The new strings use the folding sense each language actually uses for this control.

Nine languages are deliberately left as English placeholders rather than guessed at: Klingon, Volapük, Tamazight, Walloon, Wolof, Uzbek in Arabic script, and the three ve files, whose contents disagree with their own locale tags - ve-CC reads as Venetian and ve-PP as Veps, so which language to write is a question about the file, not about the string. A placeholder says “nobody has translated this yet”, which is true; a fabrication would say something false in a shipped product.

Applied with fill-translations.mjs --apply, which writes ONLY into placeholders: every language reported filled 3, skipped 0 existing human translation(s), so no human translation was touched. Key order and the 2-space indent are preserved, all 154 files still parse, and verify-human-preference.mjs passes 10/10.

Thanks to above GitHub users for their contributions and translators for their translations.