This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+2 more
Affected surfaces
Summary
AI summaryUpdates https://github.com/wekan/wekan/commit/18153cbc556823318a31766935dd3d718a88eaee, https://github.com/wekan/wekan/commit/af6ed501c6f341c3c1fbceade704ef0ae69a5669, and https://github.com/wekan/wekan/commit/b4a83462c39fb4be2e1c33aa7c90e690abffc79e across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | High |
Fixes register/forgot‑password links reappearing after a failed login when disabled. Fixes register/forgot‑password links reappearing after a failed login when disabled. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes board background not updating when switching boards via favorites bar. Fixes board background not updating when switching boards via favorites bar. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes "Due this week" and "Next week" filters to respect configured start day of week. Fixes "Due this week" and "Next week" filters to respect configured start day of week. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes calendar week numbers to respect the defined start day of week. Fixes calendar week numbers to respect the defined start day of week. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes filter by card title to work for renamed linked cards. Fixes filter by card title to work for renamed linked cards. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes activity feed showing "edited/deleted comment undefined". Fixes activity feed showing "edited/deleted comment undefined". Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes new swimlane REST API to append swimlanes at the end and honor explicit sort. Fixes new swimlane REST API to append swimlanes at the end and honor explicit sort. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes copying a card to also copy its subtasks' checklists. Fixes copying a card to also copy its subtasks' checklists. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes LDAP usernames with hyphens from being incorrectly converted to dots. Fixes LDAP usernames with hyphens from being incorrectly converted to dots. Source: llm_adapter@2026-07-16 Confidence: low |
— |
| Bugfix | Medium |
Fixes board creation from a template breaking subtasks. Fixes board creation from a template breaking subtasks. Source: llm_adapter@2026-07-16 Confidence: low |
— |
| Bugfix | Low |
Automated rule actions can now move or link cards to boards the creator does not own. Automated rule actions can now move or link cards to boards the creator does not own. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
| Bugfix | Low |
LDAP usernames with hyphens are no longer converted to dots when UTF-8 slugify is enabled. LDAP usernames with hyphens are no longer converted to dots when UTF-8 slugify is enabled. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
| Bugfix | Low |
Creating a board from a template no longer breaks subtasks by mis‑pointing default IDs. Creating a board from a template no longer breaks subtasks by mis‑pointing default IDs. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
| Bugfix | Low |
List scrollbars are always visible on desktop and mobile browsers across all engines. List scrollbars are always visible on desktop and mobile browsers across all engines. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
| Bugfix | Low |
Typing a card title in RTL languages no longer garbles other lists' minicard titles. Typing a card title in RTL languages no longer garbles other lists' minicard titles. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
| Bugfix | Low |
Playwright CI test failures introduced by recent fixes are resolved. Playwright CI test failures introduced by recent fixes are resolved. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
| Bugfix | Low |
Enter key adds a new line in the card title, consistent with the description field. Enter key adds a new line in the card title, consistent with the description field. Source: granite4.1:30b@2026-07-16-audit Confidence: low |
— |
Full changelog
v9.82 2026-07-09 WeKan ® release
This release fixes the following bugs:
- Fix #5536: automated rule can now move/link a card to a different board:
The rules "move card to top/bottom of a list on another board" and "link
card to another board" actions failed for boards the rule creator did not
own. The action showed BLANK after creating the rule (the wizard's optimistic
client inserts landed in minimongo limbo / were rejected by allow-deny for
non-owner members) — these now create the rule through the server
rules.createRulemethod, keeping the action's destination boardId. And
execution crashed with an "Internal Server Error" because the destination
swimlane fallback dereferenced._idon a possibly-undefined swimlane titled
exactlyDefault(renamed/translated/deleted on the destination board);
resolution now uses the board's real default swimlane via a Meteor-free
resolvermodels/lib/ruleActionResolve.js, unit tested in
tests/ruleActionResolve.test.cjs. Thanks to DarthKillian and xet7. - Fix #4978: board background updates when switching boards via the favorites bar:
Switching directly between two boards via the favorites bar reused the same
boardBody template instance, so the one-shotsetBackgroundImage()in
onRendered never re-ran and the previous board's background stuck. It is now
applied inside a reactive autorun and clears any stale inline background when
the new board has no image. The decision is a Meteor-free helper
models/lib/boardBackground.js, unit tested intests/boardBackground.test.cjs.
Thanks to dasarne and xet7. - Fix #4881: Due this week / next week filter respects the start day of week:
The "Due this week" filter selected next week's cards and ignored the
configured start weekday, because it derived its window from
startOf(now(), 'week')— which the native dateUtils never implemented, so
it returned the date unchanged. A new Meteor-free helper
models/lib/weekStart.jscomputes the correct week window for any start day
of week; the this/next-week buttons now toggle per week too. Unit tested in
tests/weekStart.test.cjs. Thanks to mimZD and xet7. - Fix #4946: calendar week numbers respect the defined start day of week:
In the Calendar view the week-number column was numbered from Sunday
regardless of the start-day-of-week setting. The calendar now computes the
number withweekNumberByFirstDay()(inmodels/lib/weekStart.js) from the
same firstDay used to lay out the grid, unit tested in
tests/weekStart.test.cjs. Thanks to helioguardabaxo and xet7. - Fix #4653: LDAP username with a hyphen no longer becomes a dot:
WithLDAP_UTF8_NAMES_SLUGIFYenabled,limax(text, { separator: '.' })
turned every non-alphanumeric run — hyphens included — into., so an LDAP
username likep.parta-partbbecamep.parta.partband the user could not
log in. The username is now slugified per hyphen-separated segment and
rejoined with-, preserving hyphens while still transliterating UTF-8. Pure
helperpackages/wekan-ldap/server/usernameSlug.js, unit tested in
tests/ldapUsernameSlug.test.cjs. Thanks to RowhamD and xet7. - Fix #4236: Enter adds a new line in the card title, consistent with the description:
The card title textarea submitted on plain Enter (only Shift+Enter made a new
line), unlike the description field which inserts a new line on Enter and
saves on Ctrl/Cmd+Enter. The title now uses the same shared, Meteor-free rule
isSubmitKey()(models/lib/editorSubmitKey.js): submit only on
Ctrl/Cmd+Enter, newline otherwise. Unit tested in
tests/editorSubmitKey.test.cjs. Thanks to listenerri and xet7. - Fix #4055: ISO week-number regression test (already correct in current code):
#4055 reported the week number was one/two weeks too high for 2021-10-25..31
(ISO week 43). That was the old moment-based math; the current native,
DST-safegetISOWeek()computes it correctly. Added
tests/isoWeek.test.cjspinning the reported dates so it cannot regress.
Thanks to marcungeschikts and xet7. - Fix #4394: Register / Forgot Password links stay hidden after a failed login:
Security. With registration / forgot-password disabled in the Admin Panel, the
links were hidden by a one-shot.hide()that a useraccounts form re-render
(e.g. an LDAP failed login) dropped, so the links reappeared. The disable
state is now a class on the stable<body>ancestor with matching CSS, so the
links are re-hidden on every re-render. Thanks to Alsterdetektive1 and xet7. - Fix #4494: creating a board from a template no longer breaks subtasks:
A board created from a template inherited the template's
subtasksDefaultBoardId / dateSettingsDefaultBoardId; when those pointed at the
template board itself, subtasks created on the new board were dropped onto the
TEMPLATE board and linked back across boards. Board.copy() now repoints such
self-referential defaults to the copy and clears the paired list id so it
self-heals on the new board. Pure helpermodels/lib/boardCopyDefaults.js,
unit tested intests/boardCopyDefaults.test.cjs. Thanks to Xilef11 and xet7. - Fix #4249: filter by card title now works for renamed linked cards:
Renaming a linked card wrote the new title only to the linked target, leaving
the linking card's own title field stale; filter-by-title queries the own
field, so linked cards dropped out of title filters after a rename.
Card.setTitle() now also writes the linking card's own title. Pure helper
models/lib/linkedCardTitle.js, unit tested in
tests/linkedCardTitle.test.cjs. Thanks to Ben0it-T and xet7. - Fix #3606: activity feed no longer shows "edited/deleted comment undefined":
The feed passed the comment id (absent on old activities, and gone for a
deleted comment) into the activity string. Edit/delete activities now store
the comment text and render it viaActivities.commentDisplayText(), which
falls back to the live comment text and then to an empty string — never
"undefined". Pure helpermodels/lib/commentActivity.js, unit tested in
tests/commentActivity.test.cjs. Thanks to janchuelo and xet7. - Fix #3624: new_swimlane REST API appends the swimlane last and accepts a sort:
POST /api/boards/:boardId/swimlanesset the sort to the swimlane count, so a
new swimlane appeared FIRST when existing sort values were non-contiguous. It
now appends at max(existing sort)+1 and honors an optional explicitsortin
the body. Pure helpermodels/lib/swimlaneSort.js, unit tested in
tests/swimlaneSort.test.cjs. Thanks to tamasberesoebb and xet7. - Fix #3185: copying a card (or template) now copies its subtasks' checklists:
Copying a card inserted each subtask as a bare card document, so the subtasks'
checklists (and items) were dropped and the copied subtasks came out empty.
Card.copy() now copies each subtask's checklists onto the new subtask. Pure
helpermodels/lib/subtaskCopy.js, unit tested intests/subtaskCopy.test.cjs.
Thanks to ramses345 and xet7. - Fix #5439: list scrollbar is always visible on desktop and mobile browsers:
List bodies usedoverflow-y: auto, so overlay scrollbars (macOS/iOS/Android/
Firefox) auto-hid. The list body now keeps a scrollbar visible across all
engines —overflow-y: scroll,::-webkit-scrollbar(Chrome/Safari/Edge/
mobile WebKit),scrollbar-width/scrollbar-color(Firefox/Gecko) and
scrollbar-gutter: stable. Cross-browser rules inmodels/lib/scrollbarCss.js,
applied inclient/components/lists/list.css, unit tested (builder contract +
applied CSS, positive + negative) intests/scrollbarCss.test.cjs. Thanks to xet7. - Fix #6444: RTL — typing a card title no longer garbles other lists' minicard titles:
In an RTL language (e.g. Arabic) the board root isdir="rtl", and both the
minicard title (adir="auto".viewer) and the add-card composer textarea
weredir="auto"with no bidi isolation, so they shared the surrounding
bidirectional context. Typing a strong RTL character into one list's composer
re-resolved that shared context and visibly reflowed the displayed minicard
titles of the OTHER lists (no data change, reverted on refresh). Each title and
the composer now useunicode-bidi: isolate. Locked in (positive + negative)
bytests/minicardBidiIsolation.test.cjs; browser RTL behaviour is covered by
tests/playwright/specs/18-rtl-layout.e2e.js. Thanks to xet7. - Fix the Playwright CI test failures introduced by the #3624 and #4236 fixes above:
Two browser tests failed on Chromium, Firefox and WebKit after this release's
changes. (1)23-rest-api-more.e2e.js:209(swimlanes CRUD): the #3624 change
pulledmodels/lib/swimlaneSortin via a function-scoped
require('/models/lib/swimlaneSort'); unlike the file's top-level
app-absoluteimports, that new module was not statically bundled, so
POST /api/boards/:boardId/swimlanesthrew, was swallowed by itstry/catch,
and returned an error object with no_id— the test then read.titleoff a
nullswimlane. Fixed by importingnextSwimlaneSortat the top of
server/models/swimlanes.js(same convention as its other imports); the
behaviour is unchanged. (2)02-cards-open-view.e2e.js:93(editing the card
title): #4236 deliberately made plain Enter insert a newline in the card title
(Ctrl/Cmd+Enter saves), but theCardPagepage object still saved with plain
Enter, so the title never persisted and the read timed out — updated to save
withControl+Enter. The server-side Mocha, import-regression and Node E2E
jobs were already green; this makes the Playwright jobs green too. Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
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]