| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| wekan_10.48_amd64.snap | 2026-07-28 | 397.4 MB | |
| wekan-10.48-riscv64.zip | 2026-07-28 | 312.7 MB | |
| wekan_10.48_arm64.snap | 2026-07-28 | 305.7 MB | |
| wekan-10.48-ppc64le.zip | 2026-07-28 | 314.1 MB | |
| wekan-10.48-s390x.zip | 2026-07-28 | 315.0 MB | |
| wekan-10.48-sandstorm.spk | 2026-07-28 | 170.2 MB | |
| wekan-10.48-mac-arm64.zip | 2026-07-28 | 307.8 MB | |
| wekan-10.48-amd64.zip | 2026-07-28 | 309.0 MB | |
| wekan-10.48-arm64.zip | 2026-07-28 | 311.7 MB | |
| README.md | 2026-07-28 | 4.9 kB | |
| v10.48 source code.tar.gz | 2026-07-28 | 33.4 MB | |
| v10.48 source code.zip | 2026-07-28 | 34.6 MB | |
| Totals: 12 Items | 2.8 GB | 0 | |
v10.48 2026-07-28 WeKan ® release
This release fixes the following bug:
Moving a card no longer pans the board at the same time. Thanks to mueschel and xet7.
On a board large enough to have scrollbars in both directions, dragging a card sometimes moved the card, sometimes scrolled the list, sometimes scrolled the board, and often several of those at once — so a card could not be dropped where it was aimed. A board runs THREE drag-scroll implementations over the same pointer: the dragscroll library, bound separately to `.board-canvas`, to every swimlane and to every lane; the lane pan in `swimlanes.js`; and jQuery UI sortable, the one that is supposed to move the card. Nothing stood any of them down while a drag was in progress. `swimlanes.js` did try, for list drags, but reset the library FIRST and removed the class afterwards — a reset binds to whatever carries the class at that moment, so every listener stayed — and it left the canvas tagged anyway. The lane pan ignored the `nodragscroll` marker the library honours, so pressing a minicard, which carries that marker exactly because it is the card's drag handle, started a horizontal pan that ran alongside the card drag. Drag-scrolling is now suspended for the whole drag — class off, THEN reset — and exactly the elements it was taken from get it back, so a board route does not gain panning it deliberately turned off. Every sortable on the board (cards, lists, swimlanes) suspends when a drag starts and resumes when it stops, a window mouseup / touchend / dragend restores in case a drag never reaches its stop handler, and a swimlane re-rendered mid-drag does not re-arm panning under the pointer. The lane pan refuses to start on a drag source, and gives way if a drag begins after the press. The drag handles themselves are marked `nodragscroll`: a press on a handle moves the item, it never pans the board underneath it. A guard pins the order of the two steps, the restore-what-was-suspended rule, the safety net, the suspend/resume in every sortable and the two markers; a browser test drags a card sideways on a 12-list board and pins that neither the lane nor the canvas scrolls while it moves, and that panning is back afterwards.and has the following developer-facing changes:
Every CHANGELOG commit link points at a commit that exists, and the repair no longer breaks good ones. Thanks to xet7.
106 of the 3014 commit links in this file pointed at nothing: a rebase, amend or squash after the entry was written, or a 40-character hash whose first nine characters were right and whose tail was invented. Clicking one gave GitHub's 404 with no way to tell which change it had meant. Each was resolved against the history — by subject and author date, by prefix, or by reading the entry's own text against the commit messages of the release it sits in — and every link now resolves to a commit in the repository. `releases/fix-changelog-hashes.sh`, which build.sh runs after a rebase and release-all.sh runs before a release, decided a link was stale when its commit was not an ancestor of HEAD. A commit that lives only in an old release tag is not on this branch, yet GitHub serves it fine, so that rule repointed working links to a DIFFERENT change — two 2019-era links were repaired that way and had to be put back. Staleness is now "no ref in this clone reaches it", the replacement is matched on subject AND author date (a rebase keeps the author date), then on the patch itself, then by prefix, and a subject shared by several commits is never used to pick one. `--all-sections` checks the whole file rather than the section being released.Fix the last two guards of the full test run, one of which was right about the changelog. Thanks to xet7.
The 18:10 run: 267 node suites with 2 failures, all three browsers clean, Mocha 500 passing, FerretDB unit and integration green, and the conformance run has all four backends — SQLite, PostgreSQL, MySQL and MariaDB — answering identically. `changelogFormat` was right, and about the entries written that day: two lines START with `#`, which markdown renders as a heading and which splits the version list. The issue numbers are escaped and the lines rewrapped so none begins with one. `boardsVisibilitySettings` pinned a save handler that no longer saves the display toggle — that toggle writes itself from its own click handler — so the guard now checks what the code actually does.Thanks to above GitHub users for their contributions and translators for their translations.