This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+2 more
Summary
AI summaryFixed drag‑and‑drop custom board sorting, minicard checklist add button, label filter across swimlanes, and flaky i18n test.
Full changelog
v9.79 2026-07-06 WeKan ® release
This release fixes the following bugs:
-
Fix #6439: Custom (drag order) sort on All Boards page now reorders via drag-and-drop:
On the All Boards page the jQuery-ui sortable that reordered boards in the "Custom (drag order)"
mode was removed when the page switched to HTML5 drag-and-drop for workspaces, and nothing
replaced it, so dragging a board showed a not-allowed cursor and never updated
profile.boardSortIndex. Added HTML5dragover/dropreorder handlers on the board tiles in
client/components/boards/boardsList.js(active only in the custom sort mode), a
setBoardSortIndexeshelper inmodels/users.jsto persist the new order in one write, a
drop-hint style inclient/components/boards/boardsList.css, and extracted the reorder
decision/index math into the pure, unit-testedmodels/lib/boardSortReorder.js. Covered by
tests/boardSortReorder.test.cjs.
Thanks to jullbo and xet7. -
Fix #6440: '+' add-item button on minicard checklist does nothing:
On the minicard the checklist add-item<form>is rendered inside thea.minicard-wrapper
anchor, so the native formsubmitevent never reached the Blaze event map — the #5565
minicard-checklist work wired only asubmit .js-add-checklist-itemhandler (which never fires
there) and gave the Save button no click handler, so clicking "+" Save did nothing. Added an
explicitclick .js-submit-add-checklist-item-formhandler in
client/components/cards/minicard.js(mirroring the working edit-item button) that inserts the
item, with the blank-input guard and title parsing extracted into the pure, Meteor-free
models/lib/checklistItemTitles.js. Card-detail checklists are unaffected. Covered by
tests/checklistItemTitles.test.cjs.
Thanks to jullbo and xet7. -
Fix #6441: label filter now applies board-wide across all swimlanes:
A label filter hid non-matching cards in one swimlane (e.g. "Focus") but left another swimlane
(e.g. "Background") unfiltered. Each list scopes its cards to the current swimlane while also
showing shared/orphaned cards that have no swimlane; that fallback was written as a bare
top-level$or, which competes with the board Filter's own top-level$or(label/member
criteria) when the two selectors are combined — dropping the label criterion in every swimlane
except the default one. The swimlane-membership fallback is now a single
swimlaneId: { $in: [id, null, ''] }clause (the same form already used insidebarFilters.js,
cardDetails.jsanddialogWithBoardSwimlaneList.js), extracted to the pure, unit-tested
models/lib/swimlaneFilter.jsand used byclient/components/lists/listBody.jsand
models/lists.js, so no second$orexists and the filter is always$and-combined and applied
board-wide. Covered bytests/swimlaneFilter.test.cjs.
Thanks to jullbo and xet7. -
Fix flaky server-side Mocha test (i18n zh-CN "is not a spy"):
The server-side Mocha suite intermittently reported "1 failing" on the #5756
imports/i18n/i18n.test.jsregion-tag test withTypeError: [Function] is not a spy. The
assertion re-readTAPi18n.i18n.addResourceBundle, and the sinon-chai matcher (routed through
chai-as-promised) could evaluate after this suite'safterEachhad already run
sinon.restore()— at which point the property is the original function, not the stub. The
.loadLanguagetests now assert on the captured stub reference (restore unwraps the property but
leaves the spy intact), which is deterministic. Reproduced and verified with a standalone
sinon/chai script.
Thanks to xet7.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About wekan
The Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . New English strings for new features at imports/i18n/data/en.i18n.json . Non-English translations at https://app.transifex.com/wekan/wekan only.
Related context
Related tools
Beta — feedback welcome: [email protected]