Compare commits

...
149 Commits
Author SHA1 Message Date
github-actions[bot] 379a92846e v8.98 2026-04-16 12:33:19 +00:00
Lauri Ojansivu bb6163a70f Prepare v8.98 release 2026-04-16 15:32:31 +03:00
Lauri Ojansivu 10f009f5b1 Release scripts: Fix indentation at release-all.yml.
Thanks to xet7 !
2026-04-16 15:30:13 +03:00
Lauri Ojansivu 19c882ed2f Prepare v8.98 release 2026-04-16 15:23:37 +03:00
Lauri Ojansivu e7cb6ac6f0 Updated ChangeLog. 2026-04-16 15:20:40 +03:00
Lauri Ojansivu 38e488ee4a Moved Helm Charts from helm directory to docs/wekan and docs/charts to be at wekan.fi/wekan and wekan.fi/charts.
Thanks to xet7 !
2026-04-16 15:18:14 +03:00
Lauri Ojansivu 589fa30fd1 Updated ChangeLog. 2026-04-16 15:05:44 +03:00
Lauri Ojansivu 64d351d835 Commented out requirement to update website manually.
Thanks to xet7 !
2026-04-16 15:04:19 +03:00
Lauri Ojansivu 4151ecb7e7 Release scripts: Update versions at wekan.fi/install/ as part of GitHub Actions builds.
Thanks to xet7 !
2026-04-16 15:01:10 +03:00
Lauri Ojansivu f4b5e5f07d Updated ChangeLog. 2026-04-16 14:51:42 +03:00
Lauri Ojansivu c1639ea589 Update markdown docs links from docs to docs2.
Thanks to xet7 !
2026-04-16 14:50:12 +03:00
Lauri Ojansivu 21b0ab064c Updated ChangeLog. 2026-04-16 14:38:32 +03:00
Lauri Ojansivu 1c0d8e9964 Moved docs to docs2, and wekan.fi to docs, to be able publish with GitHub Pages.
Thanks to xet7 !
2026-04-16 14:36:10 +03:00
Lauri Ojansivu 8a7949a8ab Updated ChangeLog. 2026-04-16 14:30:01 +03:00
Lauri Ojansivu 3c36db33e9 Moved website from repo wekan/wekan.fi to wekan/wekan/docs/wekan.fi .
Thanks to xet7 !
2026-04-16 14:28:15 +03:00
Lauri Ojansivu 59d0cfc457 Updated ChangeLog. 2026-04-16 14:06:21 +03:00
Lauri Ojansivu 72f6d96dbc Release scripts: Detect newest MongoDB 7.x stable version and update to use it.
Thanks to xet7 !
2026-04-16 14:03:51 +03:00
Lauri Ojansivu 49c81f5426 Updated ChangeLog. 2026-04-16 13:44:42 +03:00
Lauri Ojansivu 08ed1705b1 Release scripts: Update versions at website with release-website.sh script.
Thanks to xet7 !
2026-04-16 13:44:42 +03:00
Lauri Ojansivu 47088c30c0 Release scripts: Detect newest Node.js 24.x version.
Thanks to xet7 !
2026-04-16 13:44:42 +03:00
github-actions[bot] 539dbdc034 Helm chart 8.97.0 2026-04-16 10:43:18 +00:00
github-actions[bot] 129af0bad9 v8.97 2026-04-16 10:02:21 +00:00
Lauri Ojansivu a9d95dd6b7 Prepare v8.97 release 2026-04-16 13:01:42 +03:00
Lauri Ojansivu 6d0978d0ed Release Scripts: Clean GitHub Cache. Part 3.
Thanks to xet7 !
2026-04-16 13:00:39 +03:00
Lauri Ojansivu 13cdf08e22 Release Scripts: Clean GitHub Cache. Part 2.
Thanks to xet7 !
2026-04-16 12:56:52 +03:00
Lauri Ojansivu e59bc9cd86 Release Scripts: Clean GitHub Cache.
Thanks to xet7 !
2026-04-16 12:53:42 +03:00
Lauri Ojansivu 6478d27d1c Fix GitHub Actions builds.
Thanks to xet7 !
2026-04-16 12:49:37 +03:00
Lauri Ojansivu 76d1800ec7 Prepare v8.96 release 2026-04-16 12:46:15 +03:00
Lauri Ojansivu 03ba747bc0 Fix GitHub Actions builds.
Thanks to xet7 !
2026-04-16 12:43:35 +03:00
Lauri Ojansivu 9eb3889d51 Prepare v8.95 release 2026-04-16 12:33:53 +03:00
Lauri Ojansivu 5d4bc7a886 Updated ChangeLog. 2026-04-16 12:31:58 +03:00
Lauri Ojansivu 135af977af Helm Chart: Use current Finland time for created field at index.yaml for newest built Helm Chart release.
Thanks to xet7 !
2026-04-16 12:26:44 +03:00
Lauri Ojansivu 6dfe81cbcb Fix Cannot find module /build/main.js error in latest Docker image.
Thanks to s8321414 and xet7 !

Fixes #6291
2026-04-16 12:16:58 +03:00
Lauri Ojansivu 3ec2821058 Updated ChangeLog. 2026-04-16 12:04:27 +03:00
Lauri Ojansivu 1c5ac8efba Merge pull request #6292 from titver968/helm-improvements
helm: add single-node ReplicaSet support with auto MONGO_OPLOG_URL
2026-04-16 12:00:01 +03:00
titver968 ce7fa0e314 helm: add single-node ReplicaSet support with auto MONGO_OPLOG_URL
- mongodb.url template now appends ?replicaSet=<name> for single-replica
  setups when mongodb.replicaSet.name is set, eliminating the need for
  a secretEnv workaround
- New mongodb.oplog.url helper generates MONGO_OPLOG_URL automatically
  when a ReplicaSet is configured (single-node or multi-node)
- deployment.yaml injects MONGO_OPLOG_URL env var when the oplog URL
  helper produces a non-empty value
- values.yaml documents the replicaSet.name option with example config
2026-04-16 09:58:44 +02:00
github-actions[bot] 0f464b21a3 Helm chart 8.94.0 2026-04-16 02:34:48 +00:00
github-actions[bot] 7169da8dae v8.94 2026-04-16 02:15:31 +00:00
Lauri Ojansivu 0f56e2dfc3 Prepare v8.94 release 2026-04-16 05:14:48 +03:00
Lauri Ojansivu 1b086c80a7 Updated ChangeLog. 2026-04-16 05:12:42 +03:00
Lauri Ojansivu c27d5d0412 Updated dompurify.
Thanks to developers of dompurify !
2026-04-16 05:10:59 +03:00
Lauri Ojansivu 7b3043bf46 Updated ChangeLog. 2026-04-16 05:09:46 +03:00
Lauri Ojansivu da19160e87 Fix Can't start latest docker image because of MongoDB Index errors.
Thanks to s8321414 and xet7 !

Fixes #6290
2026-04-16 05:09:46 +03:00
github-actions[bot] 790a801f30 Helm chart 8.93.0 2026-04-16 02:07:36 +00:00
github-actions[bot] b08c66a483 v8.93 2026-04-16 01:48:41 +00:00
Lauri Ojansivu 524aa9124d Prepare v8.93 release 2026-04-16 04:48:01 +03:00
Lauri Ojansivu df85b5ac45 Updated ChangeLog. 2026-04-16 04:44:04 +03:00
Lauri Ojansivu c009ddc915 Fix SSO Login broken. Part 2.
Thanks to xet7 !

Fixes #6276
2026-04-16 04:44:04 +03:00
github-actions[bot] 5407e4533c Helm chart 8.92.0 2026-04-16 01:08:11 +00:00
github-actions[bot] 98088c7734 v8.92 2026-04-16 00:49:02 +00:00
Lauri Ojansivu 0d6fb33043 Prepare v8.92 release 2026-04-16 03:48:15 +03:00
Lauri Ojansivu 1dbad1b454 Updated ChangeLog. 2026-04-16 03:44:46 +03:00
Lauri Ojansivu 2c8a6c8ec6 GitHub Actions: Added missing sudo to snap build.
Thanks to xet7 !
2026-04-16 03:42:56 +03:00
Lauri Ojansivu 06b9946dd8 Updated ChangeLog. 2026-04-16 03:36:32 +03:00
Lauri Ojansivu dbcdf15244 Updated Helm Charts versions.
Thanks to xet7 !
2026-04-16 03:36:32 +03:00
github-actions[bot] 7e2067d0b1 v8.91 2026-04-16 00:21:29 +00:00
Lauri Ojansivu 7489f720ea Prepare v8.91 release 2026-04-16 03:02:50 +03:00
Lauri Ojansivu 140e844238 Updated Helm Chart URL at readme.
Thanks to xet7 !
2026-04-16 03:02:50 +03:00
Lauri Ojansivu de55d5afbe Fix building Snap at GitHub Actions.
Thanks to xet7 !
2026-04-16 03:02:50 +03:00
github-actions[bot] c5fccb52cc Helm chart 8.90.0 2026-04-15 23:50:03 +00:00
github-actions[bot] 507ca57a50 v8.90 2026-04-15 23:28:22 +00:00
Lauri Ojansivu b2e072e02c Prepare v8.90 release 2026-04-16 02:27:44 +03:00
Lauri Ojansivu 357f63d01f Release scripts: Moved more steps to GitHub Actions.
Thanks to xet7 !
2026-04-16 02:24:17 +03:00
Lauri Ojansivu e6422d842a Updated ChangeLog. 2026-04-16 02:02:33 +03:00
Lauri Ojansivu 99519af83a Changed ArtifactHub from wekan/charts repo to wekan/wekan repo.
Thanks to xet7 !
2026-04-16 02:00:47 +03:00
Lauri Ojansivu 514ce6ad24 Updated ChangeLog. 2026-04-16 01:52:33 +03:00
Lauri Ojansivu f57ce52198 Added GitHub Actions for Docker and Snap. Moved Helm Charts from charts repo to wekan repo.
Thanks to xet7 !
2026-04-16 01:49:42 +03:00
Lauri Ojansivu 2a9c921ba6 Updated ChangeLog. 2026-04-16 00:54:13 +03:00
Lauri Ojansivu 0dd924f148 Removed jam:offline jam:method jam:pub-sub, because they are not used, and they cause too much database usage.
Thanks to xet7 !
2026-04-16 00:50:58 +03:00
Lauri Ojansivu 678eb0896d v8.89 2026-04-15 23:01:39 +03:00
Lauri Ojansivu 233c1c8e81 Updated ChangeLog. 2026-04-15 22:57:58 +03:00
Lauri Ojansivu f6a851a3d8 Disable jam:offline keepAll BEFORE any collections are created. Part 2.
Thanks to xet7 !
2026-04-15 22:56:01 +03:00
Lauri Ojansivu 4fba9d7802 v8.88 2026-04-15 21:45:44 +03:00
Lauri Ojansivu d41ecb054c Updated ChangeLog. 2026-04-15 21:37:09 +03:00
Lauri Ojansivu ec0c1bc9af Disable jam:offline keepAll to prevent full-collection COLLSCAN queries and Ensure standard GridFS index on attachments.chunks for efficient chunk lookups.
Disable jam:offline keepAll to prevent full-collection COLLSCAN queries.
WeKan uses modifiedAt (not updatedAt) and archived (not deleted),
so the default offline sync generates queries on non-existent fields
causing massive collection scans on every sync cycle.

Ensure standard GridFS index on attachments.chunks for efficient chunk lookups.
Without this, queries like find({files_id: ObjectId}) do full collection scans.
2026-04-15 21:33:18 +03:00
Lauri Ojansivu 05b77d24fa v8.87 2026-04-15 17:39:22 +03:00
Lauri Ojansivu 4535303807 Updated ChangeLog. 2026-04-15 17:37:33 +03:00
Lauri Ojansivu f232fdc30b Merge pull request #6287 from FlorentDotMe/fix_quick-access-scroll
ui: enable the horizontal scroll in the quick access menu boards list
2026-04-15 17:36:24 +03:00
Lauri Ojansivu dab72d80dc Updated ChangeLog. 2026-04-15 17:35:55 +03:00
Lauri Ojansivu 6f83464b24 Merge pull request #6286 from FlorentDotMe/fix_rooturl-as-env-variable
improve handling of ROOT_URL as an environement variable
2026-04-15 17:34:48 +03:00
Lauri Ojansivu 41cd0a8925 Updated ChangeLog. 2026-04-15 17:34:35 +03:00
Lauri Ojansivu fc02a15753 Try to fix Snap.
Thanks to xet7 !
2026-04-15 17:31:09 +03:00
Florent Bervas bd9c5a058a improve handling of ROOT_URL as an environement variable 2026-04-15 13:47:28 +00:00
Lauri Ojansivu c1692cc6b9 v8.86 2026-04-15 16:29:44 +03:00
Florent Bervas 5259c09a5c ui: enable the horizontal scroll in the quick access menu boards list 2026-04-15 13:28:08 +00:00
Lauri Ojansivu 10f801d31b Try to fix Snap.
Thanks to xet7 !
2026-04-15 16:25:06 +03:00
Lauri Ojansivu 28d19db328 v8.85 2026-04-15 16:02:59 +03:00
Lauri Ojansivu 0e13bfc50e Try to fix Snap.
Thanks to xet7 !
2026-04-15 16:00:33 +03:00
Lauri Ojansivu 4f4aa22ca1 v8.84 2026-04-15 15:29:15 +03:00
Lauri Ojansivu 6bec01198d Updated ChangeLog. 2026-04-15 15:27:02 +03:00
Lauri Ojansivu 5dbceb43b4 Updated ChangeLog. 2026-04-15 15:17:14 +03:00
Lauri Ojansivu bc92978fa9 Try to fix Snap Candidate.
Thanks to xet7 !
2026-04-15 15:16:02 +03:00
Lauri Ojansivu 893f83b79e Updated ChangeLog. 2026-04-15 15:09:53 +03:00
Lauri Ojansivu bde23f6c4d Merge pull request #6284 from cloudron-io/oidc-login-fix
Use local content variable in error case
2026-04-15 15:05:53 +03:00
Johannes Zellner e6d4b38c64 Use local content variable in error case 2026-04-15 10:27:53 +02:00
Lauri Ojansivu 23264044e6 v8.83 2026-04-14 21:39:23 +03:00
Lauri Ojansivu d51a381a79 Updated ChangeLog. 2026-04-14 21:32:31 +03:00
Lauri Ojansivu da4459304f Changed start-wekan.sh and start-wekan.bat to not use Change Streams.
Thanks to xet7 !
2026-04-14 21:31:08 +03:00
Lauri Ojansivu 085699f202 Updated ChangeLog. 2026-04-14 01:12:42 +03:00
Lauri Ojansivu 2c43aa463a Release scripts: Fix Node.js 24.x download URL for Snap builds.
Thanks to xet7 !
2026-04-14 01:09:26 +03:00
Lauri Ojansivu 41db7b4ad1 Release scripts: Docker not for armhf, no official Node.js binary for it.
Thanks to xet7 !
2026-04-14 00:58:35 +03:00
Lauri Ojansivu d0a9fa9a71 Release scripts: Removed armhf, there is no official Node.js binary for it.
Thanks to xet7 !
2026-04-14 00:38:55 +03:00
Lauri Ojansivu ed0675aaff v8.82 2026-04-14 00:37:28 +03:00
Lauri Ojansivu cad8f58468 Merge pull request #6282 from wekan/dependabot/github_actions/docker/build-push-action-7.1.0
Bump docker/build-push-action from 7.0.0 to 7.1.0
2026-04-14 00:31:12 +03:00
Lauri Ojansivu 819d58cf31 Merge pull request #6281 from wekan/dependabot/github_actions/softprops/action-gh-release-3
Bump softprops/action-gh-release from 2 to 3
2026-04-14 00:30:43 +03:00
dependabot[bot] b951515e3e Bump docker/build-push-action from 7.0.0 to 7.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/d08e5c354a6adb9ed34480a06d141179aa583294...bcafcacb16a39f128d818304e6c9c0c18556b85f)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 21:24:10 +00:00
dependabot[bot] 4c3265bca5 Bump softprops/action-gh-release from 2 to 3
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 21:24:05 +00:00
Lauri Ojansivu 11672a13f7 Release scripts: Added script for deleting repo git tag.
Thanks to xet7 !
2026-04-14 00:19:15 +03:00
Lauri Ojansivu 9a8141a0eb v8.81 2026-04-14 00:16:28 +03:00
Lauri Ojansivu 5462fb0647 Release scripts: Comment out build for armhf because no official Node.js 24.x binaries exist for armhf (arm/v7).
Thanks to xet7 !
2026-04-14 00:10:51 +03:00
Lauri Ojansivu 6b74b8f770 v8.81 2026-04-13 22:57:32 +03:00
Lauri Ojansivu 99fff1a1a1 Updated ChangeLog. 2026-04-13 20:25:00 +03:00
Lauri Ojansivu 645f233b83 Merge pull request #6279 from kolaente/patch-1
fix(exporter): attachments always empty in board JSON export
2026-04-13 20:22:38 +03:00
kolaente 643e2738bd fix(exporter): attachments always empty in board JSON export 2026-04-13 18:15:48 +02:00
Lauri Ojansivu cd356a29ce Updated translations. 2026-04-13 17:16:10 +03:00
Lauri Ojansivu 341be982f9 Updated ChangeLog. 2026-04-13 17:14:21 +03:00
Lauri Ojansivu 2e7565f9eb Docs: Added History of Schema Migration Systems.
Thanks to xet7 !
2026-04-13 17:13:00 +03:00
Lauri Ojansivu 1637a9c938 Updated dependencies.
Thanks to developers of dependencies !
2026-04-13 17:11:04 +03:00
Lauri Ojansivu 67c2be1858 Updated ChangeLog. 2026-04-13 16:25:14 +03:00
Lauri Ojansivu b8d4c01e60 Updated ChangeLog. 2026-04-13 16:23:41 +03:00
Lauri Ojansivu e259ab86f7 Updated dependencies.
Thanks to developers of dependencies !
2026-04-13 16:23:41 +03:00
Lauri Ojansivu 029b3523cb Merge pull request #6275 from KhaoulaMaleh/fix/export
Fix: include historical comments and activities in board exports
2026-04-13 16:21:02 +03:00
KhaoulaMaleh f4657ad817 Fix: include historical comments and activities in board exports 2026-04-13 00:12:57 -11:00
Lauri Ojansivu 5efddff154 Updated translations. 2026-04-12 17:35:51 +03:00
Lauri Ojansivu 25efe93507 Updated ChangeLog. 2026-04-12 17:31:27 +03:00
Lauri Ojansivu a393e67ef8 Merge pull request #6262 from Raawen-dev/first-fix
Fix Issue #6069: Add migration for v7.95 due dates
2026-04-12 17:29:21 +03:00
Lauri Ojansivu 7f6758cbe9 Merge pull request #6268 from YosserDerbali/fix/board-drag-tooltip-clarification
Clarify board drag tooltip text in Remaining and Workspaces
2026-04-12 17:28:48 +03:00
Lauri Ojansivu c5644a3321 Updated ChangeLog. 2026-04-12 17:28:38 +03:00
Lauri Ojansivu 4fec03101f Updated ChangeLog. 2026-04-12 17:27:32 +03:00
Lauri Ojansivu 10fed0a85c Merge pull request #6271 from YosserDerbali/fix/readme-node-version-and-changes-made
Fix/readme node version and changes made
2026-04-12 17:25:51 +03:00
Lauri Ojansivu fff6316192 Updated ChangeLog. 2026-04-12 17:23:19 +03:00
Lauri Ojansivu 61623f50b1 Merge pull request #6273 from AymenHassini19/solve-white-container-“Link-Card”-dialog
Fix Link Card modal overflow in Docker environment
2026-04-12 17:21:59 +03:00
Lauri Ojansivu 9f626407cf Updated ChangeLog. 2026-04-12 17:20:26 +03:00
Lauri Ojansivu 3a51678495 Merge pull request #6272 from snowsky/fix-activities-not-showing
Fix activities are not showing
2026-04-12 17:14:02 +03:00
Aymen Hassini c730a0e733 Add missing Meteor test dependencies 2026-04-12 10:17:18 +01:00
Aymen Hassini 80a9971508 solving white container "Link Card" 2026-04-12 09:31:49 +01:00
Hao Wang 85788e1d7d Fix activities are not showing 2026-04-11 19:39:27 +00:00
Yosser Derbali 23680547ea docs: update README to Node.js 24.x and remove Rosetta mention 2026-04-11 14:30:04 +01:00
Yosser Derbali 9767ead9f3 docs: update README Node.js version and setup guidance 2026-04-10 22:26:16 +01:00
Yosser Derbali 910c9a7f1f docs: improve README with first-time setup guide and fix typos 2026-04-10 22:24:40 +01:00
Yosser Derbali 0bc6c6abb6 docs: fix typos and grammar in SECURITY.md
- Fix capitalization: 'About Money', 'QA About PubSub', etc.
- Add missing articles ('the', 'a')
- Fix spelling: 'Wordwide' -> 'Worldwide', 'logics' -> 'logic'
- Remove duplicate 'by' and extra spaces
- Fix grammar and sentence structure for clarity
- Improve consistency with WeKan capitalization
2026-04-10 22:24:40 +01:00
Yosser Derbali 6361e16dba Clarify board drag tooltip text 2026-04-10 18:21:04 +01:00
Lauri Ojansivu 8572cbd761 v8.80 2026-04-10 11:56:56 +03:00
Lauri Ojansivu 1c0b91c5f4 Updated translations. 2026-04-10 11:56:25 +03:00
Lauri Ojansivu 2ebefdd0bf Try to fix GitHub Actions builds with custom newer bcrypt.
Thanks to xet7 !
2026-04-10 11:53:09 +03:00
Lauri Ojansivu 29f1384945 v8.79 2026-04-09 16:00:52 +03:00
Lauri Ojansivu 334e569fda Updated translations. 2026-04-09 15:58:41 +03:00
Lauri Ojansivu 2d4170a9bf Fix 8.78: WeKan build Error: Could not find rspack config. Using MongoDB Change Streams at start-wekan.sh start-wekan.bat bundle, docker-compose.yml and Snap Candidate.
Thanks to nachocodoner and xet7 !

Fixes #6264
2026-04-09 15:42:05 +03:00
RAWEN KHEFIFI 74966a0bc7 Fix Issue #6069: Add migration for v7.95 due dates
- Add migration script to convert dueDate to dueAt
- Convert string dates to Date objects
- Add missing userId and members fields
- Fix invalid board/list/swimlane references

This fixes cards not appearing in Due Cards view after migration from v7.95 to v8.20
2026-04-08 16:44:19 +01:00
1243 changed files with 2058369 additions and 1510 deletions

No files matched your search

+1 -1
View File
@@ -55,7 +55,7 @@ jobs:
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
+464 -179
View File
@@ -1,36 +1,185 @@
name: Release All Platforms
# Triggered when maintainer pushes a version tag, e.g.: git tag v8.43 && git push --tags
# Does not work:
# Required GitHub Secrets:
# QUAY_USERNAME - Quay.io username
# QUAY_PASSWORD - Quay.io password or token
# DOCKERHUB_USERNAME - Docker Hub username
# DOCKERHUB_TOKEN - Docker Hub access token
# SNAP_STORE_LOGIN - Snapcraft store credentials: run 'snapcraft export-login --snaps wekan --channels stable -' and base64-encode the output
# Triggered manually via GitHub CLI or Actions UI.
# Usage:
# gh workflow run release-all.yml -f old_version=8.42 -f new_version=8.43
#
# Or use the convenience script (commits pending changes, pushes, and triggers):
# ./releases/release-all.sh 8.42 8.43
#
# Required GitHub Secrets:
# GHCR_AUTH - base64(username:token) for ghcr.io
# DOCKERHUB_AUTH - base64(username:token) for Docker Hub
# QUAY_AUTH - base64(username:token) for Quay.io
# SNAP_AUTH - Snapcraft store credentials
on:
push:
tags:
- 'v*.*'
workflow_dispatch:
inputs:
old_version:
description: 'Previous version number (e.g. 8.42, without v prefix)'
required: true
type: string
new_version:
description: 'New version number (e.g. 8.43, without v prefix)'
required: true
type: string
permissions:
contents: write
packages: write
pages: write
id-token: write
jobs:
# ─── 0. Version bump, docs rebuild, and tag creation ────────────────────────
# Runs update-node-version.sh, rebuild-docs.sh, and sed-release-versions.sh,
# then commits, pushes, and creates the version tag.
# Skipped on re-run if the tag already exists.
version-bump:
runs-on: ubuntu-latest
outputs:
node_version: ${{ steps.detect_node.outputs.node_version }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Check if tag already exists
id: check
run: |
if git ls-remote --tags origin | grep -q "refs/tags/v${{ inputs.new_version }}$"; then
echo "existed=true" >> $GITHUB_OUTPUT
echo "Tag v${{ inputs.new_version }} already exists. Skipping version bump."
else
echo "existed=false" >> $GITHUB_OUTPUT
fi
- name: Detect latest Node.js 24.x version
id: detect_node
run: |
NODE_VER=$(curl -fsSL https://nodejs.org/dist/latest-v24.x/ \
| grep -o 'node-v24\.[0-9][0-9]*\.[0-9][0-9]*-linux-x64\.tar\.gz' \
| head -1 \
| sed 's/node-v\(.*\)-linux-x64\.tar\.gz/\1/')
if [ -z "$NODE_VER" ]; then
echo "Error: could not determine latest Node.js 24.x version." >&2
exit 1
fi
echo "node_version=$NODE_VER" >> $GITHUB_OUTPUT
echo "Detected latest Node.js 24.x: $NODE_VER"
- name: Detect latest MongoDB 7.x version and update snapcraft.yaml
id: detect_mongodb
run: |
set -e
# Fetch all available Ubuntu versions for MongoDB 7.x
MONGO_LINE=$(curl -fsSL https://www.mongodb.com/try/download/community | grep -o 'mongodb-linux-x86_64-ubuntu[0-9]\+-7\.[0-9][0-9]*\.[0-9][0-9]*\.tgz' | sort -u | sort -t- -k4,4nr | head -1)
if [ -z "$MONGO_LINE" ]; then
echo "Error: could not determine latest MongoDB 7.x version." >&2
exit 1
fi
# Extract Ubuntu version and MongoDB version
UBUNTU_VER=$(echo "$MONGO_LINE" | sed -E 's/.*ubuntu([0-9]+)-7\..*/\1/')
MONGO_VER=$(echo "$MONGO_LINE" | sed -E 's/.*-7/7/' | sed 's/\.tgz$//')
echo "mongodb_ubuntu=$UBUNTU_VER" >> $GITHUB_OUTPUT
echo "mongodb_version=$MONGO_VER" >> $GITHUB_OUTPUT
echo "Detected latest MongoDB 7.x: $MONGO_VER for Ubuntu $UBUNTU_VER"
# Update snapcraft.yaml source URL (replace any ubuntu version)
sed -i "s|mongodb-linux-x86_64-ubuntu[0-9]\+-7\\.[0-9][0-9]*\\.[0-9][0-9]*|mongodb-linux-x86_64-ubuntu${UBUNTU_VER}-$MONGO_VER|g" snapcraft.yaml
- uses: actions/setup-node@v6
if: steps.check.outputs.existed == 'false'
with:
node-version: '${{ steps.detect_node.outputs.node_version }}'
- name: Install Python dependencies for API doc generation
if: steps.check.outputs.existed == 'false'
run: python3 -m pip install --break-system-packages esprima
- name: Delete GitHub Actions caches
if: steps.check.outputs.existed == 'false'
env:
GH_TOKEN: ${{ github.token }}
run: gh cache delete --all || true
- name: Update Node.js to latest 24.x
if: steps.check.outputs.existed == 'false'
run: ./releases/update-node-version.sh
- name: Rebuild API docs
if: steps.check.outputs.existed == 'false'
run: ./releases/rebuild-docs.sh "${{ inputs.new_version }}"
- name: Update version numbers in release files
if: steps.check.outputs.existed == 'false'
run: ./releases/sed-release-versions.sh "${{ inputs.old_version }}" "${{ inputs.new_version }}"
- name: Update website install/index.html versions
if: steps.check.outputs.existed == 'false'
run: |
set -e
# Update MongoDB version (and Ubuntu version) in docs/install/index.html from snapcraft.yaml
MONGO_LINE=$(grep -o 'mongodb-linux-x86_64-ubuntu[0-9]\+-7\.[0-9][0-9]*\.[0-9][0-9]*' snapcraft.yaml | head -1)
if [ -n "$MONGO_LINE" ]; then
UBUNTU_VER=$(echo "$MONGO_LINE" | sed -E 's/.*ubuntu([0-9]+)-7\..*/\1/')
MONGODB_VERSION=$(echo "$MONGO_LINE" | sed -E 's/.*-7/7/')
sed -i "s|MongoDB 7\\.x|MongoDB $MONGODB_VERSION Ubuntu $UBUNTU_VER|g" docs/install/index.html
fi
# Update Meteor, Node.js, and NPM versions in docs/install/index.html
METEOR_VERSION=$(grep -o 'METEOR@[^ "\\]*' .meteor/release | head -1)
NODE_VERSION=$(grep -o 'NODE_VERSION=[^ \\]*' Dockerfile | head -1 | cut -d= -f2 | tr -d '"')
NPM_VERSION=$(grep -o 'NPM_VERSION=[^ \\]*' Dockerfile | head -1 | cut -d= -f2 | tr -d '"')
sed -i "s|<span id=\"meteor-version\">[^<]*</span>|<span id=\"meteor-version\">$METEOR_VERSION</span>|g" docs/install/index.html
sed -i "s|<span id=\"node-version\">[^<]*</span>|<span id=\"node-version\">$NODE_VERSION</span>|g" docs/install/index.html
sed -i "s|<span id=\"npm-version\">[^<]*</span>|<span id=\"npm-version\">$NPM_VERSION</span>|g" docs/install/index.html
# Update WeKan version in docs/install/index.html
sed -i "s|<span class=\"version-number\">v${{ inputs.old_version }}</span>|<span class=\"version-number\">v${{ inputs.new_version }}</span>|g" docs/install/index.html
# Update Meteor and Node.js versions in the <h2 class=\"fw-bold\"> line
sed -i "s|\(Meteor \)[^,]*,|\1${METEOR_VERSION},|g" docs/install/index.html
sed -i "s|\(Node\.js \)[0-9][0-9]*\.[x0-9a-zA-Z.-]*|\1${NODE_VERSION}|g" docs/install/index.html
- name: Commit and push version bump
if: steps.check.outputs.existed == 'false'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add --all
# GITHUB_TOKEN cannot push workflow file changes; exclude them
git reset HEAD -- .github/workflows/ || true
git checkout -- .github/workflows/ || true
if git diff --cached --quiet; then
echo "No changes to commit."
else
git commit -m "v${{ inputs.new_version }}"
fi
git push
- name: Create and push tag
if: steps.check.outputs.existed == 'false'
run: |
git tag -a "v${{ inputs.new_version }}" -m "v${{ inputs.new_version }}"
git push origin "v${{ inputs.new_version }}"
# ─── 1. Extract version and release notes ───────────────────────────────────
prepare:
needs: version-bump
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
changelog: ${{ steps.changelog.outputs.content }}
node_version: ${{ needs.version-bump.outputs.node_version }}
steps:
- uses: actions/checkout@v6
with:
ref: refs/tags/v${{ inputs.new_version }}
- name: Extract version from tag
- name: Set version from input
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
run: |
VERSION="${{ inputs.new_version }}"
VERSION="${VERSION#v}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Extract release notes from CHANGELOG.md
id: changelog
@@ -65,15 +214,18 @@ jobs:
# Therefore the full Meteor build always runs here on x86_64.
# All other Linux architectures then rebuild only the native npm modules
# from this bundle (much faster than a full Meteor build).
# Node.js version must match what Meteor 3.5-beta.7 bundles: 24.14.1 (ABI 143).
# Node.js version must match what Meteor 3.5-beta.7 bundles (detected automatically).
build-amd64:
needs: prepare
runs-on: ubuntu-24.04
timeout-minutes: 180
env:
VERSION: ${{ needs.prepare.outputs.version }}
NODE_VERSION: ${{ needs.prepare.outputs.node_version }}
steps:
- uses: actions/checkout@v6
with:
ref: refs/tags/v${{ inputs.new_version }}
- name: Cache Meteor installation
uses: actions/cache@v5
@@ -93,11 +245,11 @@ jobs:
sudo apt-get update
sudo apt-get install -y build-essential g++ make python3 curl wget zip unzip
# Pin to Node 24.14.1 — the exact version bundled by Meteor 3.5-beta.7.
# Pin to detected latest Node.js 24.x — must match Meteor's bundled version.
# Using the same version for build and npm rebuild ensures consistent native module ABI.
- uses: actions/setup-node@v6
with:
node-version: '24.14.1'
node-version: '${{ needs.prepare.outputs.node_version }}'
- name: Install Meteor
run: |
@@ -108,15 +260,10 @@ jobs:
- name: Build WeKan bundle
run: |
rm -rf .build node_modules .meteor/local/bundler-cache
meteor npm install
rm -rf .build node_modules .meteor/local
(meteor update --npm 2>/dev/null || true) && meteor npm install
meteor build .build --directory
- name: Install dependencies in bundle
run: |
cd .build/bundle/programs/server
meteor npm install
- name: Create amd64 zip
run: |
cd .build
@@ -147,7 +294,7 @@ jobs:
- uses: actions/setup-node@v6
with:
node-version: '24.14.1'
node-version: '${{ needs.prepare.outputs.node_version }}'
- name: Download amd64 bundle
uses: actions/download-artifact@v8
@@ -157,6 +304,20 @@ jobs:
- name: Rebuild native modules for arm64
run: |
unzip wekan-${VERSION}-amd64.zip
# Fix: bcrypt 5.0.1 (Meteor accounts-password) ships node-addon-api@3
# which fails to compile on Node.js 24. Replace with bcrypt 6.0.0.
BCRYPT_DIR="$(pwd)/bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/bcrypt"
if [ -d "$BCRYPT_DIR" ]; then
rm -rf "$BCRYPT_DIR"
TMP=$(mktemp -d)
pushd "$TMP" > /dev/null
npm pack bcrypt@6.0.0
mkdir bcrypt && tar xzf bcrypt-*.tgz --strip-components=1 -C bcrypt
cd bcrypt && npm install --ignore-scripts && cd ..
cp -a bcrypt "$BCRYPT_DIR"
popd > /dev/null
rm -rf "$TMP"
fi
cd bundle/programs/server
rm -rf node_modules
npm install
@@ -175,14 +336,14 @@ jobs:
# ─── 4. Build s390x bundle (rebuild native modules via QEMU container) ───────
# Meteor 3.5-beta.7 does NOT support s390x (installer exits with error on that arch).
# GitHub Actions has no native s390x runners.
# Solution: QEMU emulation + node:24.14.1-slim (s390x variant) for npm rebuild.
# node:24.14.1-slim is pinned to match Meteor 3.5-beta.7's bundled Node.js version exactly.
# Solution: QEMU emulation + node:<version>-slim (s390x variant) for npm rebuild.
build-s390x:
needs: [prepare, build-amd64]
runs-on: ubuntu-latest
timeout-minutes: 90
env:
VERSION: ${{ needs.prepare.outputs.version }}
NODE_VERSION: ${{ needs.prepare.outputs.node_version }}
steps:
- name: Set up QEMU for s390x
uses: docker/setup-qemu-action@v4
@@ -201,11 +362,25 @@ jobs:
run: |
unzip wekan-${VERSION}-amd64.zip
rm -rf bundle/programs/server/node_modules
# node:24.14.1-slim s390x — same Node.js version as Meteor 3.5-beta.7 bundled
# Fix: bcrypt 5.0.1 (Meteor accounts-password) ships node-addon-api@3
# which fails to compile on Node.js 24. Replace with bcrypt 6.0.0.
BCRYPT_DIR="$(pwd)/bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/bcrypt"
if [ -d "$BCRYPT_DIR" ]; then
rm -rf "$BCRYPT_DIR"
TMP=$(mktemp -d)
pushd "$TMP" > /dev/null
npm pack bcrypt@6.0.0
mkdir bcrypt && tar xzf bcrypt-*.tgz --strip-components=1 -C bcrypt
cd bcrypt && npm install --ignore-scripts && cd ..
cp -a bcrypt "$BCRYPT_DIR"
popd > /dev/null
rm -rf "$TMP"
fi
# node:$NODE_VERSION-slim s390x — same Node.js version as Meteor bundled
docker run --rm --platform linux/s390x \
-v "$(pwd)/bundle:/bundle" \
-w /bundle/programs/server \
node:24.14.1-slim \
node:${NODE_VERSION}-slim \
sh -c "apt-get update -qq && apt-get install -y -q build-essential python3 && npm install"
- name: Clean up and create s390x zip
@@ -221,13 +396,14 @@ jobs:
# ─── 4b. Build ppc64le bundle (rebuild native modules via QEMU container) ────
# Meteor 3.5-beta.7 does NOT support ppc64le (installer exits with error on that arch).
# GitHub Actions has no native ppc64le runners.
# Solution: QEMU emulation + node:24.14.1-slim (ppc64le variant) for npm rebuild.
# Solution: QEMU emulation + node:<version>-slim (ppc64le variant) for npm rebuild.
build-ppc64le:
needs: [prepare, build-amd64]
runs-on: ubuntu-latest
timeout-minutes: 90
env:
VERSION: ${{ needs.prepare.outputs.version }}
NODE_VERSION: ${{ needs.prepare.outputs.node_version }}
steps:
- name: Set up QEMU for ppc64le
uses: docker/setup-qemu-action@v4
@@ -246,11 +422,25 @@ jobs:
run: |
unzip wekan-${VERSION}-amd64.zip
rm -rf bundle/programs/server/node_modules
# node:24.14.1-slim ppc64le — same Node.js version as Meteor 3.5-beta.7 bundled
# Fix: bcrypt 5.0.1 (Meteor accounts-password) ships node-addon-api@3
# which fails to compile on Node.js 24. Replace with bcrypt 6.0.0.
BCRYPT_DIR="$(pwd)/bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/bcrypt"
if [ -d "$BCRYPT_DIR" ]; then
rm -rf "$BCRYPT_DIR"
TMP=$(mktemp -d)
pushd "$TMP" > /dev/null
npm pack bcrypt@6.0.0
mkdir bcrypt && tar xzf bcrypt-*.tgz --strip-components=1 -C bcrypt
cd bcrypt && npm install --ignore-scripts && cd ..
cp -a bcrypt "$BCRYPT_DIR"
popd > /dev/null
rm -rf "$TMP"
fi
# node:$NODE_VERSION-slim ppc64le — same Node.js version as Meteor bundled
docker run --rm --platform linux/ppc64le \
-v "$(pwd)/bundle:/bundle" \
-w /bundle/programs/server \
node:24.14.1-slim \
node:${NODE_VERSION}-slim \
sh -c "apt-get update -qq && apt-get install -y -q build-essential python3 && npm install"
- name: Clean up and create ppc64le zip
@@ -263,51 +453,62 @@ jobs:
path: wekan-${{ needs.prepare.outputs.version }}-ppc64le.zip
retention-days: 1
# ─── 4c. Build armhf bundle (rebuild native modules via QEMU container) ──────
# Meteor 3.5-beta.7 does NOT support arm/v7 (armhf). Installer explicitly rejects it.
# GitHub Actions has no native arm/v7 runners.
# Solution: QEMU emulation + node:24.14.1-slim (arm/v7 variant) for npm rebuild.
# arm/v7 under QEMU is slowest — timeout set to 120 min.
build-armhf:
needs: [prepare, build-amd64]
runs-on: ubuntu-latest
timeout-minutes: 120
env:
VERSION: ${{ needs.prepare.outputs.version }}
steps:
- name: Set up QEMU for arm/v7
uses: docker/setup-qemu-action@v4
with:
platforms: arm
- name: Install unzip/zip
run: sudo apt-get update && sudo apt-get install -y unzip zip
- name: Download amd64 bundle
uses: actions/download-artifact@v8
with:
name: bundle-amd64
- name: Rebuild native modules for armhf in container
run: |
unzip wekan-${VERSION}-amd64.zip
rm -rf bundle/programs/server/node_modules
# node:24.14.1-slim arm/v7 — same Node.js version as Meteor 3.5-beta.7 bundled
docker run --rm --platform linux/arm/v7 \
-v "$(pwd)/bundle:/bundle" \
-w /bundle/programs/server \
node:24.14.1-slim \
sh -c "apt-get update -qq && apt-get install -y -q build-essential python3 && npm install"
- name: Clean up and create armhf zip
run: |
zip -r wekan-${VERSION}-armhf.zip bundle
- uses: actions/upload-artifact@v7
with:
name: bundle-armhf
path: wekan-${{ needs.prepare.outputs.version }}-armhf.zip
retention-days: 1
# ─── 4c. Build armhf bundle — COMMENTED OUT ─────────────────────────────────
# No official Node.js binaries exist for armhf (arm/v7).
#build-armhf:
# needs: [prepare, build-amd64]
# runs-on: ubuntu-latest
# timeout-minutes: 120
# env:
# VERSION: ${{ needs.prepare.outputs.version }}
# steps:
# - name: Set up QEMU for arm/v7
# uses: docker/setup-qemu-action@v4
# with:
# platforms: arm
#
# - name: Install unzip/zip
# run: sudo apt-get update && sudo apt-get install -y unzip zip
#
# - name: Download amd64 bundle
# uses: actions/download-artifact@v8
# with:
# name: bundle-amd64
#
# - name: Rebuild native modules for armhf in container
# run: |
# unzip wekan-${VERSION}-amd64.zip
# rm -rf bundle/programs/server/node_modules
# # Fix: bcrypt 5.0.1 (Meteor accounts-password) ships node-addon-api@3
# # which fails to compile on Node.js 24. Replace with bcrypt 6.0.0.
# BCRYPT_DIR="$(pwd)/bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/bcrypt"
# if [ -d "$BCRYPT_DIR" ]; then
# rm -rf "$BCRYPT_DIR"
# TMP=$(mktemp -d)
# pushd "$TMP" > /dev/null
# npm pack bcrypt@6.0.0
# mkdir bcrypt && tar xzf bcrypt-*.tgz --strip-components=1 -C bcrypt
# cd bcrypt && npm install --ignore-scripts && cd ..
# cp -a bcrypt "$BCRYPT_DIR"
# popd > /dev/null
# rm -rf "$TMP"
# fi
# # node:<version>-slim arm/v7 — same Node.js version as Meteor bundled
# docker run --rm --platform linux/arm/v7 \
# -v "$(pwd)/bundle:/bundle" \
# -w /bundle/programs/server \
# node:${NODE_VERSION}-slim \
# sh -c "apt-get update -qq && apt-get install -y -q build-essential python3 && npm install"
#
# - name: Clean up and create armhf zip
# run: |
# zip -r wekan-${VERSION}-armhf.zip bundle
#
# - uses: actions/upload-artifact@v7
# with:
# name: bundle-armhf
# path: wekan-${{ needs.prepare.outputs.version }}-armhf.zip
# retention-days: 1
# ─── 5. Build win64 bundle (rebuild native modules on Windows) ───────────────
build-win64:
@@ -319,7 +520,7 @@ jobs:
steps:
- uses: actions/setup-node@v6
with:
node-version: '24.14.1'
node-version: '${{ needs.prepare.outputs.node_version }}'
## With Node 24 these are already preinstalled at GitHub Windows runners
#- name: Install node-gyp and build tools
@@ -334,10 +535,28 @@ jobs:
with:
name: bundle-amd64
- name: Fix bcrypt for Node.js 24
shell: bash
run: |
7z x wekan-${VERSION}-amd64.zip
# Fix: bcrypt 5.0.1 (Meteor accounts-password) ships node-addon-api@3
# which fails to compile on Node.js 24. Replace with bcrypt 6.0.0.
BCRYPT_DIR="$(pwd)/bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/bcrypt"
if [ -d "$BCRYPT_DIR" ]; then
rm -rf "$BCRYPT_DIR"
TMP=$(mktemp -d)
pushd "$TMP" > /dev/null
npm pack bcrypt@6.0.0
mkdir bcrypt && tar xzf bcrypt-*.tgz --strip-components=1 -C bcrypt
cd bcrypt && npm install --ignore-scripts && cd ..
cp -r bcrypt "$BCRYPT_DIR"
popd > /dev/null
rm -rf "$TMP"
fi
- name: Rebuild native modules for Windows
shell: cmd
run: |
7z x wekan-%VERSION%-amd64.zip
cd bundle\programs\server
rmdir /s /q node_modules
npm install
@@ -355,7 +574,7 @@ jobs:
# ─── 6. Create GitHub Release and upload all bundles ────────────────────────
release:
needs: [prepare, build-amd64, build-arm64, build-s390x, build-ppc64le, build-armhf, build-win64]
needs: [prepare, build-amd64, build-arm64, build-s390x, build-ppc64le, build-win64]
runs-on: ubuntu-latest
env:
VERSION: ${{ needs.prepare.outputs.version }}
@@ -367,8 +586,9 @@ jobs:
merge-multiple: true
- name: Create GitHub Release with all bundles
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
tag_name: v${{ needs.prepare.outputs.version }}
name: v${{ needs.prepare.outputs.version }}
body: ${{ needs.prepare.outputs.changelog }}
files: |
@@ -376,106 +596,171 @@ jobs:
wekan-${{ needs.prepare.outputs.version }}-arm64.zip
wekan-${{ needs.prepare.outputs.version }}-s390x.zip
wekan-${{ needs.prepare.outputs.version }}-ppc64le.zip
wekan-${{ needs.prepare.outputs.version }}-armhf.zip
wekan-${{ needs.prepare.outputs.version }}-win64.zip
# ─── 7. Build and push multi-platform Docker image ──────────────────────────
#docker:
# needs: [prepare, release]
# runs-on: ubuntu-latest
# env:
# VERSION: ${{ needs.prepare.outputs.version }}
# steps:
# - uses: actions/checkout@v6
#
# - name: Set up QEMU
# uses: docker/setup-qemu-action@v4
#
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
#
# - name: Log in to Docker Hub
# uses: docker/login-action@v4
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
#
# - name: Log in to Quay.io
# uses: docker/login-action@v4
# with:
# registry: quay.io
# username: ${{ secrets.QUAY_USERNAME }}
# password: ${{ secrets.QUAY_PASSWORD }}
#
# - name: Log in to GitHub Container Registry
# uses: docker/login-action@v4
# with:
# registry: ghcr.io
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}
#
# - name: Build and push Docker image to all registries
# uses: docker/build-push-action@v7
# with:
# context: .
# platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/ppc64le,linux/s390x
# push: true
# build-args: VERSION=${{ needs.prepare.outputs.version }}
# tags: |
# #wekanteam/wekan:v${{ needs.prepare.outputs.version }}
# #wekanteam/wekan:latest
# quay.io/wekan/wekan:v${{ needs.prepare.outputs.version }}
# quay.io/wekan/wekan:latest
# ghcr.io/wekan/wekan:v${{ needs.prepare.outputs.version }}
# ghcr.io/wekan/wekan:latest
# cache-from: type=gha
# cache-to: type=gha,mode=max
docker:
needs: [prepare, release]
runs-on: ubuntu-latest
env:
VERSION: ${{ needs.prepare.outputs.version }}
steps:
- uses: actions/checkout@v6
with:
ref: refs/tags/v${{ inputs.new_version }}
# ─── 8. Build and publish snap packages (all architectures via Launchpad) ────
# Uses snapcraft remote-build on Launchpad's native builders (more reliable
# than QEMU for snap builds). Each architecture bundles its own database:
# amd64, arm64 — MongoDB 7.x prebuilt native binary
# armhf, s390x, ppc64el — MongoDB 7.x amd64 binary run via qemu-x86_64-static
# (no prebuilt MongoDB binaries exist for these arches)
#snap:
# needs: [prepare, release]
# runs-on: ubuntu-latest
# env:
# VERSION: ${{ needs.prepare.outputs.version }}
# steps:
# - uses: actions/checkout@v6
#
# - name: Install snapcraft
# run: sudo snap install snapcraft --classic
#
# - name: Remote-build snap for all architectures via Launchpad
# env:
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
# run: |
# snapcraft remote-build \
# --build-for=amd64,arm64,armhf,s390x,ppc64el \
# --launchpad-accept-public-upload
#
# - name: Upload all snap files as artifacts
# uses: actions/upload-artifact@v7
# with:
# name: snaps-all-arches
# path: "*.snap"
# retention-days: 30
#
# # Publish to edge — NOT stable.
# # Stable channel holds the old WeKan version until database migrations are ready.
# # Promote to stable manually via the Snap Store dashboard when migrations exist.
# - name: Publish all snaps to Snap Store (candidate, beta, edge)
# env:
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
# run: |
# for snap_file in *.snap; do
# echo "Publishing $snap_file ..."
# snapcraft upload --release=edge "$snap_file"
# done
#
# - name: Upload all snaps to GitHub Release
# uses: softprops/action-gh-release@v2
# with:
# files: "*.snap"
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Create Docker config with registry credentials
run: |
mkdir -p ~/.docker
cat > ~/.docker/config.json <<EOF
{
"auths": {
"ghcr.io": {
"auth": "${{ secrets.GHCR_AUTH }}"
},
"https://index.docker.io/v1/": {
"auth": "${{ secrets.DOCKERHUB_AUTH }}"
},
"quay.io": {
"auth": "${{ secrets.QUAY_AUTH }}"
}
}
}
EOF
- name: Create and use buildx builder
run: |
docker buildx create --name mybuilder --driver docker-container --use
docker buildx inspect --bootstrap
- name: Build and push Docker image to all registries
run: |
docker buildx build \
--platform linux/amd64,linux/arm64,linux/s390x,linux/ppc64le \
-t wekanteam/wekan:v${VERSION} \
-t wekanteam/wekan:latest \
-t quay.io/wekan/wekan:v${VERSION} \
-t quay.io/wekan/wekan:latest \
-t ghcr.io/wekan/wekan:v${VERSION} \
-t ghcr.io/wekan/wekan:latest \
--push .
# ─── 8. Build and publish snap packages ──────────────────────────────────────
# Build snap with snapcraft pack (like releases/snap-build.sh) using LXD,
# then push to Snap Store edge channel (like releases/snap-push-to-store.sh).
# Promote to stable manually via the Snap Store dashboard when ready.
snap:
needs: [prepare, release]
runs-on: ubuntu-latest
env:
VERSION: ${{ needs.prepare.outputs.version }}
steps:
- uses: actions/checkout@v6
with:
ref: refs/tags/v${{ inputs.new_version }}
- name: Install snapcraft
run: sudo snap install snapcraft --classic
- name: Build snap
run: sudo snapcraft pack --destructive-mode
- name: Upload snap files as artifacts
uses: actions/upload-artifact@v7
with:
name: snaps
path: "*.snap"
retention-days: 30
- name: Push all snaps to Snap Store edge channel
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_AUTH }}
run: |
for snap_file in *.snap; do
echo "Publishing $snap_file ..."
snapcraft upload --release=edge "$snap_file"
done
- name: Upload all snaps to GitHub Release
uses: softprops/action-gh-release@v3
with:
tag_name: v${{ needs.prepare.outputs.version }}
files: "*.snap"
# ─── 9. Update Helm charts and deploy to GitHub Pages ─────────────────────────
# Chart source is in helm/wekan/, published packages + index.yaml in docs/wekan/.
# GitHub Pages deploys docs/wekan/ via Actions, serving at https://wekan.fi/wekan/
helm:
needs: [prepare, docker]
runs-on: ubuntu-latest
env:
VERSION: ${{ needs.prepare.outputs.version }}
steps:
- uses: actions/checkout@v6
with:
ref: refs/tags/v${{ inputs.new_version }}
- name: Install Helm
run: |
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- name: Update Chart.yaml and values.yaml with new version
run: |
cd helm/wekan
# Chart.yaml: update appVersion and version
sed -i "s/^appVersion: .*/appVersion: \"${VERSION}\"/" Chart.yaml
sed -i "s/^version: .*/version: ${VERSION}.0/" Chart.yaml
# values.yaml: update image tag
sed -i "s/^ tag: v.*/ tag: v${VERSION}/" values.yaml
- name: Build Helm dependencies
run: |
cd helm/wekan
helm repo add mongo https://groundhog2k.github.io/helm-charts/
helm dependency update
helm dependency build
- name: Package chart and update index
run: |
mkdir -p docs/wekan/
helm package helm/wekan -d docs/wekan/
helm repo index docs/wekan/ --url https://wekan.fi/wekan/
- name: Update created time to Finland time
run: |
FINLAND_TIME=$(TZ='Europe/Helsinki' date '+%Y-%m-%dT%H:%M:%S.000000000%:z')
sed -i "0,/^ created: .*/s/^ created: .*/ created: \"${FINLAND_TIME}\"/" docs/wekan/index.yaml
- name: Commit updated chart
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add docs/wekan/
git commit -m "Helm chart ${VERSION}.0"
git push origin HEAD:refs/heads/main
- name: Upload docs/wekan/ as Pages artifact
uses: actions/upload-pages-artifact@v4
with:
path: docs/wekan/
# ─── 10. Deploy Helm chart to GitHub Pages ───────────────────────────────────
deploy-pages:
needs: helm
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+1 -1
View File
@@ -127,7 +127,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '24.14.1'
node-version: '24.15.0'
- name: Setup meteor
uses: meteorengineer/setup-meteor@v3
-8
View File
@@ -18,14 +18,6 @@ aldeed:schema-index@4.0.0-beta.5
reywood:publish-composite
mongo@2.3.0-beta350.7
# The holy trifecta - this is a replacement for subs-manager
# for IndexedDB persistence and auto-sync
jam:offline
# for optimistic methods with offline queuing
jam:method
# global subscription caching
jam:pub-sub
# Account system
accounts-password@3.2.3-beta350.7
communitypackages:core
-3
View File
@@ -45,9 +45,6 @@ htmljs@2.0.1
http@1.4.4
id-map@1.2.0
inter-process-messaging@0.1.2
jam:method@1.9.1
jam:offline@0.4.1
jam:pub-sub@0.5.1
jquery@3.0.2
lai:collection-extensions@1.0.0
localstorage@1.2.1
+278 -4
View File
@@ -4,9 +4,9 @@ Newest WeKan at these platforms:
- [Upgrade WeKan](https://wekan.fi/upgrade/)
- [bundle zip at releases](https://github.com/wekan/wekan/releases), docs at
- [Linux amd64, arm64, s390x](https://github.com/wekan/wekan/blob/main/docs/Platforms/FOSS/RaspberryPi/Raspberry-Pi.md)
- [Windows amd64, works also at Windows arm64](https://github.com/wekan/wekan/blob/main/docs/Platforms/Propietary/Windows/Offline.md)
- [Mac amd64, works also with Rosetta2 at Apple Silicon](https://github.com/wekan/wekan/blob/main/docs/Platforms/Propietary/Mac.md)
- [Linux amd64, arm64, s390x](https://github.com/wekan/wekan/blob/main/docs2/Platforms/FOSS/RaspberryPi/Raspberry-Pi.md)
- [Windows amd64, works also at Windows arm64](https://github.com/wekan/wekan/blob/main/docs2/Platforms/Propietary/Windows/Offline.md)
- [Mac amd64, works also with Rosetta2 at Apple Silicon](https://github.com/wekan/wekan/blob/main/docs2/Platforms/Propietary/Mac.md)
- https://wekan.fi/install/
- Snap Candidate amd64
- Docker amd64/arm64/s390x
@@ -17,7 +17,7 @@ Newest WeKan at these platforms:
Versions:
- WeKan 8.75 and newer uses Meteor 3.5-beta.7, [Node.js 24.x](https://nodejs.org/dist/latest-v24.x/),
MongoDB 7.x (or 6.x), or [FerretDB2/PostgreSQL](https://github.com/wekan/wekan/blob/main/docs/Databases/FerretDB2-PostgreSQL.md)
MongoDB 7.x (or 6.x), or [FerretDB2/PostgreSQL](https://github.com/wekan/wekan/blob/main/docs2/Databases/FerretDB2-PostgreSQL.md)
- WeKan 8.43 upgraded to Meteor 3.x, huge thanks to harryadel:
- https://harryadel.com/dev-diary-24/
- https://harryadel.com/dev-diary-25/
@@ -26,6 +26,280 @@ Versions:
- WeKan 8.00-8.06 had wrong raw database directory setting /var/snap/wekan/common/wekan and some cards were not visible,
it was fixed at WeKan 8.07 where database directory is back to /var/snap/wekan/common and all cards are visible.
# v8.98 2026-04-16 WeKan ® release
This release adds the following updates:
- [Release scripts: Detect newest Node.js 24.x version](https://github.com/wekan/wekan/commit/fde59148dc8bd712e30cbf969d4007b2a7f01e6f).
Thanks to xet7.
- [Release scripts: Update versions at website with release-website.sh script](https://github.com/wekan/wekan/commit/9174001862f1545626730b9a51754ab77b645338).
Thanks to xet7.
- [Release scripts: Detect newest MongoDB 7.x stable version and update to use it](https://github.com/wekan/wekan/commit/72f6d96dbc3becc2767eb6f88b0f218679d1ac78).
Thanks to xet7.
- [Moved website from repo wekan/wekan.fi to wekan/wekan/docs](https://github.com/wekan/wekan/commit/3c36db33e91e504722edc60faec5d6b4aa301850).
Thanks to xet7.
- [Moved docs to docs2, and wekan.fi to docs, to be able publish with GitHub Pages](https://github.com/wekan/wekan/commit/1c0d8e9964af40be91eda9668dfeebd01b3a5720).
Thanks to xet7.
- [Update markdown docs links from docs to docs2](https://github.com/wekan/wekan/commit/c1639ea58973efcae0758385cc5d8d7ffbf1e8d9).
Thanks to xet7.
- [Commented out requirement to update website manually](https://github.com/wekan/wekan/commit/64d351d835628dad80062e3c362701b35ae5bb33).
Thanks to xet7.
- [Moved Helm Charts from helm directory to docs/wekan and docs/charts to be at wekan.fi/wekan and wekan.fi/charts](https://github.com/wekan/wekan/commit/38e488ee4a63d61159d8efcddb6e454347bce91a).
Thanks to xet7.
- [Release scripts: Fix indentation at release-all.yml](https://github.com/wekan/wekan/commit/10f009f5b15fd077577a71504b0e0c89c4e6fd95).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.97 2026-04-16 WeKan ® release
This release adds the following updates:
- Release Scripts: Clean GitHub Cache.
[Part 1](https://github.com/wekan/wekan/commit/e59bc9cd86cc16333e24b2e7e8e5d5cf72f81e3e),
[Part 2](https://github.com/wekan/wekan/commit/13cdf08e223e83ef9a2f36417c11ad002e884f29),
[Part 3](https://github.com/wekan/wekan/commit/6d0978d0ede8316a1d9ac6afc0ecf7f02d9193d6).
Thanks to xet7.
and fixes the following bugs:
- [Fix GitHub Actions builds](https://github.com/wekan/wekan/commit/6478d27d1ca2f6e27c025e0cc97b618bc255083f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.96 2026-04-16 WeKan ® release
This release fixes the following bugs:
- [Fix GitHub Actions builds](https://github.com/wekan/wekan/commit/03ba747bc073f3993d933b814d35c7380fea745d).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.95 2026-04-16 WeKan ® release
This release adds the following new features:
- [Helm Chart: Add single-node ReplicaSet support with auto MONGO_OPLOG_URL](https://github.com/wekan/wekan/pull/6292).
Thanks to titver968.
- [Helm Chart: Use current Finland time for created field at index.yaml for newest built Helm Chart release](https://github.com/wekan/wekan/commit/135af977af4a1c598d2e067de0facb6eae8f8de1).
Thanks to xet7.
and fixes the following bugs:
- [Fix Cannot find module /build/main.js error in latest Docker image](https://github.com/wekan/wekan/commit/6dfe81cbcb0c6e2003b1984586d56042a6408e70).
Thanks to s8321414 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.94 2026-04-16 WeKan ® release
This release adds the following updates:
- [Updated dompurify](https://github.com/wekan/wekan/commit/c27d5d04124f3eec659bbe5187a625c43176fc4f).
Thanks to developers of dompurify.
and fixes the following bugs:
- [Fix Can't start latest docker image because of MongoDB Index errors](https://github.com/wekan/wekan/commit/d537b7c9f3505fd4c1653f87d5f86d7e7729a514).
Thanks to s8321414 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.93 2026-04-16 WeKan ® release
This release fixes the following bugs:
- [Fix SSO Login broken. Part 2](https://github.com/wekan/wekan/commit/4aa7b6aa2034f27efeb67d5dfa8f6acbe0005786).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.92 2026-04-16 WeKan ® release
This release adds the following updates:
- [Updated Helm Charts versions](https://github.com/wekan/wekan/commit/24ebb4ba45344ad152747c31e7df76217e5b8909).
Thanks to xet7.
- [GitHub Actions: Added missing sudo to snap build](https://github.com/wekan/wekan/commit/2c8a6c8ec6e24b6b6bb153da3edd089e0f0087cc).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.91 2026-04-16 WeKan ® release
This release fixes the following bugs:
- [Fix building Snap at GitHub Actions](https://github.com/wekan/wekan/commit/89de05ee91612cef4f13fa8ad32d112dca5bdb43).
Thanks to xet7.
- [Updated Helm Chart URL at readme](https://github.com/wekan/wekan/commit/529e0d25ef2ea84953d1c1e6a23b5798d34583fb).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.90 2026-04-16 WeKan ® release
This release adds the following updates:
- [Added GitHub Actions builds for Docker and Snap. Moved Helm Charts from charts repo to wekan repo](https://github.com/wekan/wekan/commit/f57ce521984f6f358410863c71fcaee342bb8107).
Thanks to xet7.
- [Changed ArtifactHub from wekan/charts repo to wekan/wekan repo](https://github.com/wekan/wekan/commit/99519af83adc45eca7beb40a4e82f5b73764b7fc).
Thanks to xet7.
- [Release scripts: Moved more steps to GitHub Actions](https://github.com/wekan/wekan/commit/357f63d01fc013ea412501dabbdd977e5f1efa61).
Thanks to xet7.
and fixes the following bugs:
- [Removed jam:offline jam:method jam:pub-sub, because they are not used, and they cause too much database usage](https://github.com/wekan/wekan/commit/0dd924f14889100e74fbd5e8d17bb3a7209025ca).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.89 2026-04-15 WeKan ® release
This release fixes the following bugs:
- [Disable jam:offline keepAll BEFORE any collections are created. Part 2](https://github.com/wekan/wekan/commit/f6a851a3d887ce9fa2fa5f62aad2a2ecf326c863).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.88 2026-04-15 WeKan ® release
This release fixes the following bugs:
- [Disable jam:offline keepAll to prevent full-collection COLLSCAN queries and Ensure standard GridFS index on attachments.chunks for efficient chunk lookups](https://github.com/wekan/wekan/commit/ec0c1bc9afd6e3fd8b60f9f17f96dc5df52dbfc2).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.87 2026-04-15 WeKan ® release
This release fixes the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/fc02a15753badc8d06d020aa97daae28ac05a310).
Thanks to xet7.
- [Improve handling of ROOT_URL as an environement variable](https://github.com/wekan/wekan/pull/6286).
Thanks to FlorentDotMe.
- [UI: Enable the horizontal scroll in the quick access menu boards list](https://github.com/wekan/wekan/pull/6287).
Thanks to FlorentDotMe.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.86 2026-04-15 WeKan ® release
This release fixes the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/10f801d31b7e2b1a8c562bf24f65c4cc6efe6013).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.85 2026-04-15 WeKan ® release
This release fixes the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/0e13bfc50eadc72adccfe785a1b47c30d0ba5429).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.84 2026-04-15 WeKan ® release
This release adds the following new features:
- [Helm Chart: Make readiness, liveness and startup probes configurable](https://github.com/wekan/charts/pull/51).
Thanks to snowsky.
and fixes the following bugs:
- [Fix SSO Login OIDC and OpenID Connect](https://github.com/wekan/wekan/pull/6284).
Thanks to sbaecker and nebulade.
- [Try to fix Snap Candidate](https://github.com/wekan/wekan/commit/bc92978fa9c9373947de40fe9ca584e133825610).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.83 2026-04-14 WeKan ® release
This release adds the following updates:
- [Release scripts: Removed armhf, there is no official Node.js binary for it](https://github.com/wekan/wekan/commit/d0a9fa9a71029a5586cf5bc87488619c7db9d0e3).
Thanks to xet7.
- [Release scripts: Docker not for armhf, no official Node.js binary for it](https://github.com/wekan/wekan/commit/41db7b4ad18359283602b8bfdb42b15acf51782d).
Thanks to xet7.
- [Release scripts: Fix Node.js 24.x download URL for Snap builds](https://github.com/wekan/wekan/commit/2c43aa463a0baadcae3db9f34066a9ddf6e77594).
Thanks to xet7.
- [Changed start-wekan.sh and start-wekan.bat to not use Change Streams](https://github.com/wekan/wekan/commit/da4459304fe7d068b1db91938f7fd4ffd04c5bcb).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.82 2026-04-14 WeKan ® release
This release adds the following updates:
- [Release scripts: Added script for deleting repo git tag](https://github.com/wekan/wekan/commit/11672a13f7b102b764978600a8fce2f757c9401a).
Thanks to xet7.
- [Bump softprops/action-gh-release from 2 to 3](https://github.com/wekan/wekan/pull/6281).
Thanks to dependabot.
- [Bump docker/build-push-action from 7.0.0 to 7.1.0](https://github.com/wekan/wekan/pull/6282).
Thanks to dependabot.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.81 2026-04-14 WeKan ® release
This release adds the following updates:
- Updated dependencies
[Part 1](https://github.com/wekan/wekan/commit/7b91439b0f9ec0e409c14ecebab389d41b40a990),
[Part 2](https://github.com/wekan/wekan/commit/1637a9c938134ef26846ba3c0cd53c065f434e3e).
Thanks to developers of dependencies.
- [Docs: Added History of Schema Migration Systems](https://github.com/wekan/wekan/commit/2e7565f9eb744bc59e454745e06fd43a85a02f97).
Thanks to xet7.
- [Release scripts: Comment out build for armhf because no official Node.js 24.x binaries exist for armhf (arm/v7)](https://github.com/wekan/wekan/commit/5462fb06477bc3a83f1d5c754ecd60ebe7643ee6).
Thanks to xet7.
and fixes the following bugs:
- [Fix activities are not showing](https://github.com/wekan/wekan/pull/6272).
Thanks to snowsky.
- [Fix Link Card modal overflow in Docker environment](https://github.com/wekan/wekan/pull/6273).
Thanks to AymenHassini19.
- [Fix/readme node version and changes made](https://github.com/wekan/wekan/pull/6271).
Thanks to YosserDerbali.
- [Clarify board drag tooltip text in Remaining and Workspaces](https://github.com/wekan/wekan/pull/6268).
Thanks to YosserDerbali.
- [Add migration for v7.95 due dates](https://github.com/wekan/wekan/pull/6262).
Thanks to Raawen-dev.
- [Fix: include historical comments and activities in board exports](https://github.com/wekan/wekan/pull/6275).
Thanks to KhaoulaMaleh.
- [Fix Exporter: Attachments always empty in board JSON export](https://github.com/wekan/wekan/pull/6279).
Thanks to kolaente.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.80 2026-04-10 WeKan ® release
This release fixes the following bugs:
- [Try to fix GitHub Actions builds with custom newer bcrypt](https://github.com/wekan/wekan/commit/2ebefdd0bf1cf482548319e130baf2b633ba259b).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.79 2026-04-09 WeKan ® release
This release fixes the following bugs:
- [Fix 8.78: WeKan build Error: Could not find rspack config. Using MongoDB Change Streams
at start-wekan.sh start-wekan.bat bundle, docker-compose.yml and Snap Candidate](https://github.com/wekan/wekan/commit/2d4170a9bfc58b8e6504abf122aea505e55802ef).
Thanks to nachocodoner and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.78 2026-04-09 WeKan ® release
This release adds the the following updates:
+2 -2
View File
@@ -34,7 +34,7 @@ and click send PR.
## Contributing code
[Building WeKan and sending PR](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md).
[Building WeKan and sending PR](https://github.com/wekan/wekan/blob/main/docs2/DeveloperDocs/Build-and-Create-Pull-Request.md).
WeKan code contributors Hall of Fame is at ChangeLog, where
GitHub usernames are mentioned with changes added:
@@ -47,7 +47,7 @@ Closed issues are already fixed or implemented.
Also see other docs:
https://github.com/wekan/wekan/tree/main/docs/DeveloperDocs
https://github.com/wekan/wekan/tree/main/docs2/DeveloperDocs
Do not use code formatting or linting like eslist or prettier.
+4 -4
View File
@@ -7,14 +7,14 @@ LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
# TARGETARCH and TARGETVARIANT are automatically provided by Docker Buildx
ARG TARGETARCH
ARG TARGETVARIANT
ARG VERSION=8.78
ARG VERSION=8.94
ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils gnupg wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3 unzip"
ENV \
DEBUG=false \
NODE_VERSION=v24.14.1 \
NODE_VERSION=v24.15.0 \
METEOR_RELEASE=METEOR@3.5-beta.7 \
USE_EDGE=false \
NPM_VERSION=11.11.0 \
@@ -190,7 +190,7 @@ rm -f "node-${NODE_VERSION}-linux-${NODE_ARCH}.tar.gz" SHASUMS256.txt.asc
ln -s "/usr/local/bin/node" "/usr/local/bin/nodejs"
# NPM configuration
npm install -g npm@${NPM_VERSION} --production
npm install -g npm@${NPM_VERSION}
chown --recursive wekan:wekan /home/wekan/
# Temporary Tar swap for Meteor bundle
@@ -203,7 +203,7 @@ cd /home/wekan/app
wget "https://github.com/wekan/wekan/releases/download/v${VERSION}/wekan-${VERSION}-${WEKAN_ARCH}.zip"
unzip "wekan-${VERSION}-${WEKAN_ARCH}.zip"
rm "wekan-${VERSION}-${WEKAN_ARCH}.zip"
npm install --production --no-audit --prefix ./bundle/programs/server
npm install --prefix ./bundle/programs/server
mv /home/wekan/app/bundle /build
# Restore original tar
+77 -13
View File
@@ -37,7 +37,7 @@ It's better than at chat where details get lost when chat scrolls up.
## Discussions
[IRC](https://github.com/wekan/wekan/blob/main/docs/FAQ/IRC-FAQ.md)
[IRC](https://github.com/wekan/wekan/blob/main/docs2/FAQ/IRC-FAQ.md)
## Docker: Latest tag has newest release
@@ -47,12 +47,13 @@ See bottom of https://github.com/wekan/wekan/issues/3874
## FAQ
**NOTE**:
- Please read the [FAQ](https://github.com/wekan/wekan/blob/main/docs/FAQ/FAQ.md) first
- Please don't feed the [trolls](https://github.com/wekan/wekan/blob/main/docs/FAQ/FAQ.md#why-am-i-called-a-troll) and [spammers](https://github.com/wekan/wekan/blob/main/docs/FAQ/FAQ.md#why-am-i-called-a-spammer) that are mentioned in the FAQ :)
- Please read the [FAQ](https://github.com/wekan/wekan/blob/main/docs2/FAQ/FAQ.md) first
- Please don't feed the [trolls](https://github.com/wekan/wekan/blob/main/docs2/FAQ/FAQ.md#why-am-i-called-a-troll) and [spammers](https://github.com/wekan/wekan/blob/main/docs2/FAQ/FAQ.md#why-am-i-called-a-spammer) that are mentioned in the FAQ :)
## About WeKan ®
WeKan ® is an completely [Open Source][open_source] and [Free software][free_software]
WeKan ® is a completely [Open Source][open_source] and [Free software][free_software]
collaborative kanban board application with MIT license.
Whether you’re maintaining a personal todo list, planning your holidays with some friends,
@@ -76,15 +77,15 @@ that by providing one-click installation on various platforms.
- 1 GB RAM minimum free for WeKan ®. Production server should have minimum total 4 GB RAM.
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/main/docker-compose.yml): 3 frontend servers,
each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
- Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted.
- Enough disk space and alerts about low disk space. If you run out of disk space, MongoDB database gets corrupted.
- SECURITY: Updating to newest WeKan ® version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off.
Old versions have security issues because of old versions Node.js etc. Only newest WeKan ® is supported.
WeKan ® on Sandstorm is not usually affected by any Standalone WeKan ® (Snap/Docker/Source) security issues.
- [Reporting all new bugs immediately](https://github.com/wekan/wekan/issues).
New features and fixes are added to WeKan ® [many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md).
- [Backups](https://github.com/wekan/wekan/blob/main/docs/Backup/Backup.md) of WeKan ® database once a day miminum.
- [Backups](https://github.com/wekan/wekan/blob/main/docs2/Backup/Backup.md) of WeKan ® database once a day minimum.
Bugs, updates, users deleting list or card, harddrive full, harddrive crash etc can eat your data. There is no undo yet.
Some bug can cause WeKan ® board to not load at all, requiring manual fixing of database content.
Some bugs can cause WeKan ® board to not load at all, requiring manual fixing of database content.
## Roadmap and Demo
@@ -92,7 +93,7 @@ that by providing one-click installation on various platforms.
[Developer Documentation][dev_docs]
- There is many companies and individuals contributing code to WeKan ®, to add features and bugfixes
- There are many companies and individuals contributing code to WeKan ®, to add features and bugfixes
[many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md).
- [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues).
- [Commercial Support](https://wekan.fi/commercial-support/).
@@ -102,15 +103,78 @@ By working directly with WeKan ® you get the benefit of active maintenance and
## Getting Started with Development
The default branch uses [Meteor 2 with Node.js 14](https://wekan.fi/install/).
The default branch uses Meteor 3.5-beta.7 with Node.js 24.x.
See [CHANGELOG.md](https://github.com/wekan/wekan/blob/main/CHANGELOG.md) for the latest runtime updates.
To contribute, [create a fork](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#2-create-fork-of-httpsgithubcomwekanwekan-at-github-web-page) and run `./rebuild-wekan.sh` (or `./rebuild-wekan.bat` on Windows) as detailed [here](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#3-select-option-1-to-install-dependencies-and-then-enter). Once you're ready, please test your code and [submit a pull request (PR)](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#7-test).
To contribute, [create a fork](https://github.com/wekan/wekan/blob/main/docs2/DeveloperDocs/Build-and-Create-Pull-Request.md#2-create-fork-of-httpsgithubcomwekanwekan-at-github-web-page) and run `./rebuild-wekan.sh` (or `./rebuild-wekan.bat` on Windows) as detailed [here](https://github.com/wekan/wekan/blob/main/docs2/DeveloperDocs/Build-and-Create-Pull-Request.md#3-select-option-1-to-install-dependencies-and-then-enter). Once you're ready, please test your code and [submit a pull request (PR)](https://github.com/wekan/wekan/blob/main/docs2/DeveloperDocs/Build-and-Create-Pull-Request.md#7-test).
Please refer to the [developer documentation](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Developer-Documentation.md) for more information.
Please refer to the [developer documentation](https://github.com/wekan/wekan/blob/main/docs2/DeveloperDocs/Developer-Documentation.md) for more information.
## First-Time Setup for Development
### Prerequisites
Before building WeKan from source, ensure you have:
- **Git** - for cloning the repository
- **Node.js 24.x** - WeKan requires Node.js 24.x
- **Meteor** - the JavaScript framework WeKan is built with
### Installing Node.js 24.x
```bash
# Using nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.zshrc # or ~/.bashrc
nvm install 24
nvm use 24
```
### Installing Meteor
```bash
curl https://install.meteor.com/ | sh
```
### Building WeKan
The `rebuild-wekan.sh` script guides you through a three-stage process:
1. **Install dependencies (Option 1)** - Downloads all required Meteor packages and npm modules
2. **Build WeKan (Option 2)** - Compiles the application
3. **Run WeKan (Option 3)** - Starts the development server at http://localhost:4000
```bash
# Clone your fork
git clone git@github.com:YOUR_USERNAME/wekan.git
cd wekan
# Make the script executable
chmod +x rebuild-wekan.sh
# Step 1: Install dependencies
./rebuild-wekan.sh
# Press 1 and Enter
# Step 2: Build WeKan (after dependencies complete)
./rebuild-wekan.sh
# Press 2 and Enter
# Step 3: Run WeKan in development mode
./rebuild-wekan.sh
# Press 3 and Enter
```
### WSL Users
WSL users can use Snap Candidate. See [install docs](https://wekan.fi/install/).
The development server will start at http://localhost:4000. Any changes you make to the source code will automatically trigger a rebuild and refresh your browser.
## Screenshot
[More screenshots at Features page](https://github.com/wekan/wekan/tree/main/docs/Features)
[More screenshots at Features page](https://github.com/wekan/wekan/tree/main/docs2/Features)
[![Screenshot of WeKan ®][screenshot_wekan]][roadmap_wekan]
@@ -119,7 +183,7 @@ Please refer to the [developer documentation](https://github.com/wekan/wekan/blo
WeKan ® is released under the very permissive [MIT license](LICENSE), and made
with [Meteor](https://www.meteor.com).
[dev_docs]: https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Developer-Documentation.md
[dev_docs]: https://github.com/wekan/wekan/blob/main/docs2/DeveloperDocs/Developer-Documentation.md
[screenshot_wekan]: https://wekan.fi/wekan-dark-mode.png
[features]: https://github.com/wekan/wekan/wiki/Features
[roadmap_wekan]: https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license
+42 -44
View File
@@ -1,4 +1,4 @@
## About money
## About Money
See [CONTRIBUTING](CONTRIBUTING.md)
@@ -8,13 +8,13 @@ See [CONTRIBUTING](CONTRIBUTING.md)
2. Send info about security issue ONLY to security@wekan.fi . NOT TO ANYWHERE ELSE. NO CC, NO BCC.
3. Wait for new WeKan release that fixes security issue to appear to top of
https://github.com/wekan/wekan/blob/main/CHANGELOG.md
4. We will thank you by adding you to Hall of Fame: https://wekan.fi/hall-of-fame/
4. We will thank you by adding you to Hall the of Fame: https://wekan.fi/hall-of-fame/
5. All vulnerability details will be private to security@wekan.fi ,
unless you help all WeKan platforms to have a way to upgrade, like sending
database migrations code to security@wekan.fi or PRs to https://github.com/wekan/wekan/pulls .
There is no benefit to Wordwide Security Community to have more details about vulnerabilities,
There is no benefit to the Wordwide Security Community to have more details about vulnerabilities,
if Worldwide Security Community does not help to make upgrades possible.
6. If there some day becomes available a way to upgrade all WeKan platforms,
6. If some day a way becomes available to upgrade all WeKan platforms,
this page will be updated to add permission for security researchers
to request new GHSA or CVE ID and publish your vulnerability details at your blog, talks, etc,
and send that info also to security@wekan.fi to be added to
@@ -32,7 +32,7 @@ See [CONTRIBUTING](CONTRIBUTING.md)
- If you forget to include vulnerability details.
- If you send info about security issue to somewhere else than security@wekan.fi
## How should reports be formatted?
## How Should Reports Be Formatted?
```
Name: %name
@@ -57,13 +57,13 @@ added to the WeKan Hall of Fame https://wekan.fi/hall-of-fame/
No public domains, because all those are donated to Wekan Open Source project,
and we don't have any permissions to do security scans on those donated servers.
Please don't perform research that could impact other users. Secondly, please keep
the reports short and succinct. If we fail to understand the logics of your bug, we will tell you.
Please don't perform research that could impact other users. Second, please keep
the reports short and succinct. If we fail to understand the logic of your bug, we will tell you.
You can [Install Wekan](https://github.com/wekan/wekan/releases) to your own computer
You can [Install Wekan](https://github.com/wekan/wekan/releases) on your own computer
and scan it's vulnerabilities there.
## About Wekan versions
## About Wekan Versions
There are only 2 versions of Wekan: Standalone Wekan, and Sandstorm Wekan.
@@ -74,8 +74,8 @@ like Snap and Docker have their own specific sandboxing etc features.
Standalone Wekan by default does not load any files from Internet, like fonts, CSS, etc.
This also means all Standalone Wekan functionality works in offline local networks.
WeKan is used at most countries of the world https://snapcraft.io/wekan
and by by companies that have 30k users.
WeKan is used in most countries of the world https://snapcraft.io/wekan
and by companies that have 30k users.
- Wekan private board attachments are not accessible without logging in.
- There is feature to set board public, so that board is visible without logging in in readonly mode, with realtime updates.
@@ -90,19 +90,19 @@ and by by companies that have 30k users.
## XSS
- Dompurify https://www.npmjs.com/package/dompurify
- WeKan uses dompurify npm package to filter for XSS at fields like cards, as you can see from
- DOMpurify https://www.npmjs.com/package/dompurify
- WeKan uses DOMpurify npm package to filter for XSS at fields like cards, as you can see from
[package.json](https://github.com/wekan/wekan/blob/main/package.json). Other used versions can be seen from
[Meteor versions file](https://github.com/wekan/wekan/blob/main/.meteor/versions).
- Forms can include markdown links, html, image tags etc like you see at https://wekan.github.io .
- It's possible to add attachments to cards, and markdown/html links to files.
- Dompurify cleans up viewed code, so Javascript in input fields does not execute
- Dompurify cleans up viewed code, so JavaScript in input fields does not execute
- https://wekan.github.io/hall-of-fame/fieldbleed/
- Reaction in comment is now checked, that it does not have extra added code
- https://wekan.github.io/hall-of-fame/reactionbleed/
- https://github.com/wekan/wekan/blob/main/packages/markdown/src/template-integration.js#L76
## QA about PubSub
## QA About PubSub
Q:
@@ -115,32 +115,32 @@ A:
## PubSub
- It is not security issue to show some text or image, that user has permission to see. It is a security issue, if browserside is some text or image that user should not see.
- Meteor has browserside minimongo database, made with Javascript, updated with Publish/Subscribe, PubSub.
- It is not a security issue to show text or images that the user has permission to see. It is a security issue, if browserside is some text or image that user should not see.
- Meteor has browserside minimongo database, made with JavaScript, updated with Publish/Subscribe, PubSub.
- Publish/Subscribe means, that realtime web framework reads database changes stream, and then immediately updates webpage,
like like dashboards, chat, kanban. That is the point in any realtime web framework in any programming language.
like like dashboards, chat, kanban. That is the point of any realtime web framework in any programming language.
- Yes, you should check with Meteor DevTools Evolved Chromium/Firefox extension that at minimongo is only text that user has permission to see.
- Do checking as logged in user, and logged out user.
- Check as a logged-in user and as a logged-out user.
- Check permissions and sanitize before allowing some change, because someone could modify content of input field,
PubSub/websocket data (for example with Burp Suite Community Edition), etc.
- If you have REST API, also check that only those that have login token, and have permission, can view or edit text
- If you have a REST API, also check that only those who have a login token and permission can view or edit text.
- You should not include any data user is not allowed to see. Not to webpage text, not to websockets/PubSub, etc.
- Minimongo should not have password hashes PubSub https://wekan.github.io/hall-of-fame/userbleed/
- PubSub uses Websockets, so you need those to be enabled at webserver like Caddy/Nginx/Apache etc, examples of settings
- PubSub uses WebSockets, so you need those to be enabled on the webserver like Caddy/Nginx/Apache etc, examples of settings
at right menu of https://github.com/wekan/wekan/wiki
- Clientside https://github.com/wekan/wekan/tree/main/client/components subscribes to
- Clientside https://github.com/wekan/wekan/tree/main/client/components subscribes to
PubSub https://github.com/wekan/wekan/tree/main/server/publications or calls meteor methods at https://github.com/wekan/wekan/tree/main/models
- For Admin:
- You can have input field for password https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- You can save password to database https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- Check that only current user or Admin can change password https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- Note that currentUser uses code like Meteor.user() in .js file
- Do not have password hashes in PubSub https://github.com/wekan/wekan/blob/main/server/publications/users.js
- Do not include password hashes in PubSub https://github.com/wekan/wekan/blob/main/server/publications/users.js
- Only show Admin Panel to Admin https://github.com/wekan/wekan/blob/main/client/components/settings/settingBody.jade#L3
- If there is a lot of data, use pagination https://github.com/wekan/wekan/blob/main/client/components/settings/peopleBody.js
- Only have limited amount of data published in PubSub. Limit in MongoDB query in publications how much is published. Too much could make browser too slow.
- Use Environment variables for any email etc passwords.
- But what if you would like to remove minimongo? And only use Meteor methods for saving? In that case, you don't have realtime updates,
- If there is a large amount of data, use pagination https://github.com/wekan/wekan/blob/main/client/components/settings/peopleBody.js
- Only publish a limited amount of data in PubSub. Limit in MongoDB query in publications how much is published. Too much could make browser too slow.
- Environment variables for email and other passwords.
- But what if you would like to remove Minimongo and only use Meteor methods for saving? In that case, you don't have realtime updates,
and you need to write much more code to load and save data yourself, handle any multi user data saving conflicts yourself,
and many Meteor Atmospherejs.com PubSub using packages would not work anymore https://github.com/wekan/we
@@ -152,10 +152,10 @@ A:
## Permissions and Roles
- For any user permissions, it's best to use Meteor package package https://github.com/Meteor-Community-Packages/meteor-roles .
- Currently WeKan has custom hardcoded permissions, WeKan does not yet use that meteor-roles package.
- For any user permissions, it's best to use Meteor package https://github.com/Meteor-Community-Packages/meteor-roles .
- Currently, WeKan has custom hardcoded permissions and does not yet use the meteor-roles package.
- Using permissions at WeKan sidebar https://github.com/wekan/wekan/blob/main/client/components/sidebar/sidebar.js#L1854-L1875
- List of roles https://github.com/wekan/wekan/wiki/REST-API-Role . Change at board or Admin Panel. Also Organizations/Teams.
- List of roles: https://github.com/wekan/wekan/wiki/REST-API-Role . Change at board or Admin Panel. Also Organizations/Teams.
- Worker role: https://github.com/wekan/wekan/issues/2788
- Not implemented yet: Granular Roles https://github.com/wekan/wekan/issues/3022
- Check is user logged in, with `if (Meteor.user()) {`
@@ -164,8 +164,8 @@ A:
## Environment variables
- For any passwords, use environment variables, those are serverside
- Do not copy environment variable to public variable that is visible browserside https://github.com/wekan/wekan/blob/main/server/max-size.js
- For any passwords, use environment variables; those are serverside
- Do not copy environment variables to public variables that are visible on the browserside https://github.com/wekan/wekan/blob/main/server/max-size.js
```
Meteor.startup(() => {
@@ -176,13 +176,13 @@ Meteor.startup(() => {
```
- For serverside, you can set Meteor.settings.variablename, without text public
- For WeKan kanban, there is feature for setting board public, it can be viewed by anyone, there is realtime updates. But
- For WeKan kanban, there is a feature for setting a board to public; it can be viewed by anyone, with realtime updates. But
- Some of those permissions are checked at users.js models at https://github.com/wekan/wekan/tree/main/models
- Environment variables are used for email server passwords, etc, at all platforms https://github.com/wekan/wekan/commit/a781c0e7dcfdbe34c1483ee83cec12455b7026f7
## Escape HTML comment tags so that HTML comments are visible
- Someone reported, that it is problem that content of HTML comments in edit mode, are not visible at at view mode, so this makes HTML comments visible.
- Someone reported that it was a problem that the content of HTML comments in edit mode was not visible in view mode, so this change makes HTML comments visible.
- https://github.com/wekan/wekan/commit/167863d95711249e69bb3511175d73b34acbbdb3
- https://wekan.github.io/hall-of-fame/invisiblebleed/
@@ -249,18 +249,16 @@ Meteor.startup(() => {
### Sandstorm Wekan Security
On Sandstorm platform using environment variable Standalone Wekan features like Admin Panel etc are
turned off, because Sandstorm platform provides SSO for all apps running on Sandstorm.
On the Sandstorm platform, Standalone WeKan features like the Admin Panel are turned off using environment variables, because Sandstorm platform provides SSO for all apps running on Sandstorm.
[Sandstorm](https://sandstorm.io) is separate Open Source platform that has been
[Sandstorm](https://sandstorm.io) is a separate Open Source platform that has been
[security audited](https://sandstorm.io/news/2017-03-02-security-review) and found bugs fixed.
Sandstorm also has passwordless login, LDAP, SAML, Google etc auth options already.
At Sandstorm code is read-only and signed by app maintainers, only grain content can be modified.
Wekan at Sandstorm runs in sandboxed grain, it does not have access elsewhere without user-visible
PowerBox request or opening randomly-generated API key URL.
Sandstorm also has passwordless login, LDAP, SAML, Google, and other auth options already.
On Sandstorm, code is read-only and signed by app maintainers; only grain content can be modified.
WeKan on Sandstorm runs in a sandboxed grain; it does not have access elsewhere without a user-visible PowerBox request or opening a randomly-generated API key URL.
Also read [Sandstorm Security Practices](https://docs.sandstorm.io/en/latest/using/security-practices/) and
[Sandstorm Security non-events](https://docs.sandstorm.io/en/latest/using/security-non-events/).
For Sandstorm specific security issues you can contact [kentonv](https://github.com/kentonv) by email.
For Sandstorm specific security issues you can contact [kentonv](https://github.com/kentonv) by email.
## What Wekan bugs are eligible?
@@ -276,14 +274,14 @@ a security issue, we'd like to know about it, and also how to fix it:
## What Wekan bugs are NOT eligible?
Typical already known or "no impact" bugs such as:
Typical already-known or 'no impact' bugs such as:
- [Wekan API old tokens not replaced correctly](https://github.com/wekan/wekan/issues/1437)
- Missing Cookie flags on non-session cookies or 3rd party cookies
- Logout CSRF
- Social engineering
- Denial of service
- SSL BEAST/CRIME/etc. Wekan does not have SSL built-in, it uses Caddy/Nginx/Apache etc at front.
- SSL BEAST/CRIME/etc. WeKan does not have SSL built-in; it uses Caddy/Nginx/Apache, etc., on the front end.
Integrated Caddy support is updated often.
- Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server.
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v8.78.0"
appVersion: "v8.94.0"
files:
userUploads:
- README.md
+3 -3
View File
@@ -130,7 +130,7 @@ template(name="boardList")
if BoardMultiSelection.isActive
.materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
span.board-handle(title="{{_ 'drag-board'}}")
span.board-handle(title="{{boardWorkspaceDragHint}}")
span.emoji-icon
i.fa.fa-arrows
@@ -158,13 +158,13 @@ template(name="boardList")
if BoardMultiSelection.isActive
.materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
span.board-handle(title="{{_ 'drag-board'}}")
span.board-handle(title="{{boardWorkspaceDragHint}}")
span.emoji-icon
i.fa.fa-arrows
a.js-open-board(href="{{pathFor 'board' id=_id slug=slug}}")
span.details
span.board-list-item-name(title="{{_ 'board-drag-drop-reorder-or-click-open'}}")
span.board-list-item-name(title="{{boardOpenAndMoveHint}}")
+viewer
= title
unless currentSetting.hideBoardMemberList
+20
View File
@@ -539,6 +539,26 @@ Template.boardList.helpers({
hasBoardsSelected() {
return BoardMultiSelection.count() > 0;
},
boardWorkspaceDragHint() {
const drag = TAPi18n.__('drag-board') || 'Drag board';
const remaining = TAPi18n.__('allboards.remaining') || 'Remaining';
const workspaces = TAPi18n.__('allboards.workspaces') || 'Workspaces';
return `${drag}: ${remaining} <-> ${workspaces}`;
},
boardOpenAndMoveHint() {
const remaining = TAPi18n.__('allboards.remaining') || 'Remaining';
const workspaces = TAPi18n.__('allboards.workspaces') || 'Workspaces';
return (
TAPi18n.__(
'board-open-and-move-between-remaining-and-workspaces',
{
remaining,
workspaces,
},
) ||
`Click board icon to open board. Drag board between ${remaining} and ${workspaces}.`
);
},
});
Template.workspaceTree.helpers({
+5 -4
View File
@@ -177,7 +177,6 @@
}
#header-quick-access ul.header-quick-access-list {
transition: opacity 0.2s;
overflow: hidden;
white-space: nowrap;
padding: 10px;
margin: -10px;
@@ -185,16 +184,18 @@
min-width: 0; /* Allow shrinking below content size */
display: flex; /* Use flexbox for better control */
align-items: center;
overflow-x: auto;
scrollbar-color: white #2573a7;
}
/* Hide scrollbar completely */
#header-quick-access ul.header-quick-access-list::-webkit-scrollbar {
display: none;
display: flex;
}
#header-quick-access ul.header-quick-access-list {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
-ms-overflow-style: thin; /* IE and Edge */
scrollbar-width: thin; /* Firefox */
}
#header-quick-access ul.header-quick-access-list li {
display: inline-block; /* Keep inline-block for proper spacing */
-4
View File
@@ -70,10 +70,6 @@ template(name="header")
else
li.current.empty(title="{{_ 'quick-access-description'}}")
| {{_ 'quick-access-description'}}
#header-new-board-icon
// Next line is used only for spacing at header,
// there is no visible clickable icon.
#header-new-board-icon
//
Hide duplicate create board button,
//
+12 -2
View File
@@ -78,23 +78,32 @@
overflow-x: hidden;
}
/* Allow dynamic max-height to override default constraint */
/* Bounded height: flex column + clip so inline max-height cannot spill past the shell.
Class pop-over--bounded matches popup.tpl.jade when max-height is set (more reliable
than attribute substring matching on the style attribute alone). */
.pop-over.pop-over--bounded,
.pop-over[style*='max-height'] {
overflow: hidden;
display: flex;
flex-direction: column;
min-height: 0;
box-sizing: border-box;
}
.pop-over.pop-over--bounded .header,
.pop-over[style*='max-height'] .header {
flex: 0 0 auto;
}
.pop-over.pop-over--bounded .content-wrapper,
.pop-over[style*='max-height'] .content-wrapper {
flex: 1 1 auto;
/* 0% basis: use remaining space under header, scroll inside (not past white bg) */
flex: 1 1 0%;
min-height: 0;
max-height: none;
overflow-y: auto;
overflow-x: hidden;
background: inherit;
}
.pop-over .content-container {
width: 100%;
@@ -103,6 +112,7 @@
}
/* Allow dynamic max-height to override default constraint for content-container */
.pop-over.pop-over--bounded .content-container,
.pop-over[style*='max-height'] .content-container {
max-height: none;
}
+1
View File
@@ -2,6 +2,7 @@
class="{{#unless title}}miniprofile{{/unless}}"
class=currentBoard.colorClass
class="{{#unless title}}no-title{{/unless}}"
class="{{#if offset.maxHeight}}pop-over--bounded{{/if}}"
data-popup="{{popupName}}"
style="left:{{offset.left}}px; top:{{offset.top}}px;{{#if offset.maxHeight}} max-height:{{offset.maxHeight}}px;{{/if}}")
.header
+19 -17
View File
@@ -1,14 +1,14 @@
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#---------------------------------------------------------------------------------------------------------
# ==== CREATING USERS AND LOGGING IN TO WEKAN ====
# https://github.com/wekan/wekan/blob/main/docs/Login/Adding-users.md
# https://github.com/wekan/wekan/blob/main/docs2/Login/Adding-users.md
#---------------------------------------------------------------------------------------------------------
# ==== FORGOT PASSWORD ====
# https://github.com/wekan/wekan/blob/main/docs/Login/Forgot-Password.md
# https://github.com/wekan/wekan/blob/main/docs2/Login/Forgot-Password.md
#---------------------------------------------------------------------------------------------------------
# ==== Upgrading Wekan to new version =====
# NOTE: MongoDB has changed from 3.x to 4.x, in that case you need backup/restore with --noIndexRestore
# see https://github.com/wekan/wekan/tree/main/docs/Backup
# see https://github.com/wekan/wekan/tree/main/docs2/Backup
# 1) Stop Wekan:
# docker compose stop
# 2) Remove old Wekan app (wekan-app only, not that wekan-db container that has all your data)
@@ -46,7 +46,7 @@
# docker compose stop
# ----------------------------------------------------------------------------------
# ===== INSIDE DOCKER CONTAINERS, AND BACKUP/RESTORE ====
# https://github.com/wekan/wekan/tree/main/docs/Backup
# https://github.com/wekan/wekan/tree/main/docs2/Backup
# If really necessary, repair MongoDB: https://github.com/wekan/wekan-mongodb/issues/6#issuecomment-424004116
# 1) Going inside containers:
# a) Wekan app, does not contain data
@@ -171,7 +171,7 @@ services:
# Leave it unset or empty to skip migration.
#-------------------------------------------------------------------------------------
#wekan-migrate:
# image: node:24.14.1-slim
# image: node:24.15.0-slim
# container_name: wekan-migrate
# restart: "no"
# networks:
@@ -289,7 +289,9 @@ services:
# remove port mapping if you use nginx reverse proxy, port 8080 is already exposed to wekan-tier network
- 80:8080
environment:
#-------------------- CHANGE STREAMS --------------------
#-------------------- USING MONGODB CHANGE STREAMS WITH REPLICA SETS AT CURRENT DATABASE --------------------
# If you would not like to use Change Streams and replica set for improving speed, change to use polling:
#- METEOR_REACTIVITY_ORDER=polling
# https://forums.meteor.com/t/meteor-3-5-beta-change-streams-performance-improvements/64461#change-streams-setup-3
# https://github.com/meteor/meteor/blob/release-3.5/v3-docs/docs/performance/change-streams-observer-driver.md#choosing-the-reactivity-driver-order
- METEOR_REACTIVITY_ORDER=changeStreams,oplog,polling
@@ -327,7 +329,7 @@ services:
# ==== EMAIL SETTINGS ====
# Email settings are only at MAIL_URL and MAIL_FROM.
# Admin Panel has test button, but it's not used for settings.
# see https://github.com/wekan/wekan/blob/main/docs/Email/Troubleshooting-Mail.md
# see https://github.com/wekan/wekan/blob/main/docs2/Email/Troubleshooting-Mail.md
# For SSL in email, change smtp:// to smtps://
# NOTE: Special characters need to be url-encoded in MAIL_URL.
# You can encode those characters for example at: https://www.urlencoder.org
@@ -370,7 +372,7 @@ services:
#- APM_APP_SECRET=
#---------------------------------------------------------------
# ==== OPTIONAL: LOGS AND STATS ====
# https://github.com/wekan/wekan/blob/main/docs/Features/Logs.md
# https://github.com/wekan/wekan/blob/main/docs2/Features/Logs.md
#
# Daily export of Wekan changes as JSON to Logstash and ElasticSearch / Kibana (ELK)
# https://github.com/wekan/wekan-logstash
@@ -394,7 +396,7 @@ services:
#---------------------------------------------------------------
# ==== WEKAN API AND EXPORT BOARD ====
# Wekan Export Board works when WITH_API=true.
# https://github.com/wekan/wekan/blob/main/docs/API/REST-API.md
# https://github.com/wekan/wekan/blob/main/docs2/API/REST-API.md
# https://github.com/wekan/wekan-gogs
# If you disable Wekan API with false, Export Board does not work.
- WITH_API=true
@@ -503,7 +505,7 @@ services:
#- TRUSTED_URL=https://intra.example.com
#-----------------------------------------------------------------
# ==== METRICS ALLOWED IP ADDRESSES ====
# https://github.com/wekan/wekan/blob/main/docs/Features/Metrics.md
# https://github.com/wekan/wekan/blob/main/docs2/Features/Metrics.md
#- METRICS_ALLOWED_IP_ADDRESSES=192.168.0.100,192.168.0.200
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
@@ -514,14 +516,14 @@ services:
#- DEBUG=true
#---------------------------------------------
# ==== AUTOLOGIN WITH OIDC/OAUTH2 ====
# https://github.com/wekan/wekan/blob/main/docs/Login/autologin.md
# https://github.com/wekan/wekan/blob/main/docs2/Login/autologin.md
#- OIDC_REDIRECTION_ENABLED=true
#-----------------------------------------------------------------
# ==== OAUTH2 ORACLE on premise identity manager OIM ====
#- ORACLE_OIM_ENABLED=true
#-----------------------------------------------------------------
# ==== OAUTH2 AZURE ====
# https://github.com/wekan/wekan/blob/main/docs/Login/Azure/Azure.md
# https://github.com/wekan/wekan/blob/main/docs2/Login/Azure/Azure.md
# 1) Register the application with Azure. Make sure you capture
# the application ID as well as generate a secret key.
# 2) Configure the environment variables. This differs slightly
@@ -581,7 +583,7 @@ services:
#- OAUTH2_EMAIL_MAP=email
#-----------------------------------------------------------------
# ==== OAUTH2 KEYCLOAK ====
# https://github.com/wekan/wekan/blob/main/docs/Login/Keycloak/Keycloak.md <== MAPPING INFO, REQUIRED
# https://github.com/wekan/wekan/blob/main/docs2/Login/Keycloak/Keycloak.md <== MAPPING INFO, REQUIRED
#- OAUTH2_ENABLED=true
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
@@ -599,10 +601,10 @@ services:
#-----------------------------------------------------------------
# ==== OAUTH2 DOORKEEPER ====
# https://github.com/wekan/wekan/issues/1874
# https://github.com/wekan/wekan/blob/main/docs/Login/OAuth2.md2
# https://github.com/wekan/wekan/blob/main/docs2/Login/OAuth2.md2
# Enable the OAuth2 connection
#- OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/blob/main/docs/Login/OAuth2.md
# OAuth2 docs: https://github.com/wekan/wekan/blob/main/docs2/Login/OAuth2.md
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# OAuth2 Client ID.
@@ -632,8 +634,8 @@ services:
#- OAUTH2_EMAIL_MAP=
#-----------------------------------------------------------------
# ==== LDAP: UNCOMMENT ALL TO ENABLE LDAP ====
# https://github.com/wekan/wekan/blob/main/docs/Login/LDAP.md
# For Snap settings see https://github.com/wekan/wekan/blob/main/docs/Platforms/FOSS/Snap/Supported-settings-keys.md
# https://github.com/wekan/wekan/blob/main/docs2/Login/LDAP.md
# For Snap settings see https://github.com/wekan/wekan/blob/main/docs2/Platforms/FOSS/Snap/Supported-settings-keys.md
# Most settings work both on Snap and Docker below.
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#
+1
View File
@@ -0,0 +1 @@
wekan.fi
+21
View File
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Lauri Ojansivu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+2 -276
View File
@@ -1,277 +1,3 @@
<img src="https://wekan.fi/wekan-logo.svg" width="60%" alt="Wekan logo" />
## wekan.fi website
Wekan is an open-source [kanban board][] which allows a card-based task and to-do management.
Wekan allows to create **Boards**, on which **Cards** can be moved around between a number of **Columns**. Boards can have many members, allowing for easy collaboration, just add everyone that should be able to work with you on the board to it, and you are good to go! You can assign colored **Labels** to cards to facilitate grouping and filtering, additionally you can add members to a card, for example to assign a task to someone.
## What is special about Wekan?
Wekan is distributed under the [MIT License], allowing anyone to easily work with it and modify it. It is perfect for anyone that needs a slick kanban board but doesn't want to use third party services, which are out of user control. Wekan can be hosted on your own server with very little effort, guaranteeing that you have all the time full control over your data and can make sure no one else has access to it and that it won't just vanish from one day to another, that is, if you do backups.
<a name="Wekan"></a>Wekan
# Install
* https://wekan.fi/install/
# SaaS
* https://wekan.fi/saas/
# Support
* Free Public Open Source Support, bugs and feature requests: https://github.com/wekan/wekan/issues
* [Debugging](DeveloperDocs/Debugging.md)
* Paid Private Commercial Support, paid features/fixes/support/hosting: https://wekan.fi/commercial-support/
# <a name="General"></a>General
* Current Meteor 2 WeKan Features: [Deep Dive Into WeKan](DeveloperDocs/Deep-Dive-Into-WeKan.md)
* [WeKan Roadmap kanban board](https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license) - board at Wekan demo
* Future WeKan prototypes: [Multiverse WeKan Roadmap](FAQ/WeKan-Multiverse-Roadmap.md)
* [Change Language](Translations/Change-Language.md)
* [Forgot Password](Login/Forgot-Password.md)
* [WeKan Design Principles](Design/Design-Principles.md)
* [FAQ](FAQ/FAQ.md)
* [IRC FAQ](FAQ/IRC-FAQ.md) - answers to questions asked at IRC
* [Team](FAQ/Team.md)
* [Press](FAQ/Press.md)
* [Blog](https://wekan.fi/blog)
* [Wekan vs Trello vs Restyaboard](ImportExport/trello/Wekan-vs-Trello-vs-Restyaboard.md)
* [Results of Survey 2020-01](https://wekan.fi/blog/2020/06/results-of-wekan-survey-2020-01/)
# <a name="NotWeKan"></a>Fake: Not WeKan kanban
* [Hall of Shame: Fake companies that are NOT WeKan kanban](FAQ/Hall-of-Shame.md)
* [Others NOT related to WeKan kanban](FAQ/NOT-related-to-Wekan.md)
# <a name="Security"></a>Security
* [Allow private boards only: Disable Public Boards](Features/Allow-private-boards-only.md)
* [Security Disclosure and details of Security in Wekan](../SECURITY.md)
* [Password Hashing](Login/Password-Hashing.md)
# <a name="Scaling"></a>Scaling
* [Cron: Hourly restart WeKan, because of memory leaks](Webserver/Cron.md)
* [Maybe: Add more RAM to Node.js to prevent crash](https://github.com/wekan/wekan/issues/3585)
* [Clustering AWS etc](Platforms/Propietary/Cloud/AWS.md)
* [Scaling](Webserver/Scaling.md)
* Kubernetes
* Helm Chart https://artifacthub.io/packages/helm/wekan/wekan
* Issues https://github.com/wekan/charts/issues
* Pull Requests https://github.com/wekan/charts/pulls
* [Redis Oplog](https://github.com/cult-of-coders/redis-oplog)
* [Scaling at Meteor forums](https://forums.meteor.com/t/meteor-scaling-performance-best-practices/52886/16)
# <a name="Migrating"></a>Migrating
* [From Previous Export, paste big WeKan JSON](ImportExport/From-Previous-Export.md)
* [Progress: Import/Export/Sync](ImportExport/Sync.md)
* [From CSV/TSV](ImportExport/CSV/CSV.md)
* [From Trello](ImportExport/trello/Migrating-from-Trello.md)
* [From Jira](ImportExport/Jira.md)
* [From Asana](ImportExport/asana/Asana.md)
* [From Zenkit](ImportExport/ZenKit.md)
* [From old Wekan manually](ImportExport/Migrating-from-old-Wekan-manually.md)
# Backup
* [Backup and Restore](Backup/Backup.md)
* [Rclone: Store attachments to cloud storage like S3, MinIO, etc](Backup/Rclone.md)
# <a name="Repair"></a>Repair
* [Repair MongoDB](Backup/Repair-MongoDB.md)
* [Using Meteor MongoDB to repair files](Platforms/FOSS/Sandstorm/Export-from-Wekan-Sandstorm-grain-.zip-file.md)
* [If board does not open and keeps loading](Features/If-board-does-not-open-and-keeps-loading.md)
* [Repair Docker](Platforms/FOSS/Docker/Repair-Docker.md)
# <a name="Themes"></a> Themes
* [Themes](Theme/Custom-CSS-themes.md)
* [Dark Mode](Theme/Dark-Mode.md)
* [Converting Meteor Stylus to CSS](Theme/Converting-Meteor-Stylus-to-CSS.md)
# <a name="MarkdownSyntax"></a>Markdown Syntax
* [Wekan Markdown](Features/Wekan-Markdown.md)
* [Emoji](Features/Emoji.md)
* [Mermaid Diagram](Features/Mermaid-Diagram.md) DOES NOT WORK ANYMORE
* [Numbered text](Features/Numbered-text.md)
# <a name="LoginAuth"></a>Login Auth
* [Automatic login](Login/autologin.md)
* [Disable Password Login](Login/Disable-Password-Login.md)
* [Forgot Password](Login/Forgot-Password.md)
* [Admin: Impersonate user](Login/Impersonate-user.md)
* [Adding Users](Login/Adding-users.md)
* [Active users Presence](https://github.com/wekan/wekan/issues/3734)
* [Accounts Lockout: Brute force login protection](Login/Accounts-Lockout.md)
* [LDAP](Login/LDAP.md)
* [LDAP AD Simple Auth](Login/LDAP-AD-Simple-Auth.md)
* [Keycloak](Login/Keycloak/Keycloak.md)
* [Google login](Login/Google-login.md)
* [Azure](Login/Azure/Azure.md)
* [OAuth2](Login/OAuth2.md), Auth0, GitLab, RocketChat
* [Oracle OIM on premise using OAuth2](Login/Oracle-OIM.md)
* [ADFS 4.0 using OAuth2 and OpenID](Login/ADFS.md)
* [Azure AD B2C using OAuth2](Login/B2C.md)
* [Nextcloud](Login/Nextcloud.md)
* [CAS](Login/CAS.md) Please test
* [SAML](Login/SAML.md) Please test
* [Zitadel](Login/Zitadel.md)
# <a name="Logs"></a>Metrics, Logs, Stats
* [Metrics](Features/Metrics)
* [Logs](Features/Logs.md)
* [Stats](Features/Features.md#stats)
# <a name="Integrations"></a>Integrations
* [IFTTT](ImportExport/IFTTT.md)
* [n8n Wekan docs](https://docs.n8n.io/nodes/n8n-nodes-base.wekan/#example-usage) - [n8n GitHub](https://github.com/n8n-io/n8n)
* [Integrations](ImportExport/Integrations.md)
* [Gogs](https://github.com/wekan/wekan-gogs)
# <a name="Time"></a>Time
* [Time Tracking](Date/Time-Tracking.md)
* [Gantt Chart](Features/Gantt.md)
* [Due Date](Date/Due-Date.md)
* [Day of week start](Date/Day-of-week-start.md)
* [Calendar](Calendar.md)
# <a name="Features"></a>Features
* [Multiline](Features/Multiline.md)
* [Linked Cards](Features/Linked-Cards.md)
* [Drag Drop](Features/DragDrop/Drag-Drop.md) on Mobile and Desktop
* [Python based features](Features/Python.md)
* [Burndown and Velocity Chart](Features/Burndown-and-Velocity-Chart.md)
* [Wait Spinners](Features/Wait-Spinners.md)
* [Translations](Translations/Translations.md)
* [Customize Translations](Customize-Translations.md)
* [Default Language for All Users](https://github.com/wekan/wekan/issues/3927)
* [Features](Features/Features.md)
* [Planning Poker](Features/Planning-Poker.md)
* [Scaling](Webserver/Scaling.md)
* [Custom Logo](Features/Custom-Logo.md)
* [Subtasks](Features/Subtasks.md)
* [Templates](Features/Templates.md)
* [Card Cover Image](Features/Cover.md)
* [Archive and Delete](Features/Archive-and-Delete.md)
* [Custom Fields](Features/Custom-Fields.md)
* [Fix Export board menu not visible on some boards](https://github.com/wekan/wekan/issues/1060)
* [RAM usage](https://github.com/wekan/wekan/issues/1088#issuecomment-311843230)
* [Swimlanes](Features/Swimlanes.md)
# <a name="Email"></a>Email
* [Email](Email/Troubleshooting-Mail.md)
# <a name="Settings"></a>Required Settings
* [Requirements](FAQ/Requirements.md)
* [Ports, hostsfile, how Internet works](https://gitub.com/wekan/wekan/issues/2896)
* [ROOT_URL Settings](Webserver/Settings.md)
# <a name="Webservers"></a>Webservers
* [Caddy](Webserver/Caddy.md)
* [Nginx](Webserver/Nginx.md)
* [Apache](Webserver/Apache.md)
* [OpenLiteSpeed](https://github.com/wekan/wekan/issues/3334#issuecomment-723651328)
* [Local self signed TLS](Webserver/Local-self-signed-TLS.md)
* [Let's Encrypt and Google Auth](Webserver/Lets-Encrypt-and-Google-Auth.md)
* [TLS with Node.js](https://github.com/wekan/wekan/issues/916)
* [Traefik and self-signed SSL certs](Webserver/Traefik-and-self-signed-SSL-certs.md)
# <a name="API"></a>REST API Docs
* API docs https://wekan.fi/docs/
* PHP Webhook receiver to WeKan API Python https://github.com/wekan/webhook/blob/main/public/index.php#L46
* API clients
* Python
* https://github.com/wekan/wekan/blob/main/api.py
* https://github.com/wekan/wekan-python-api-client
* https://github.com/wekan/python-wekan
* Other Python features https://github.com/wekan/wekan/blob/main/docs/Features/Python.md
* Go https://github.com/wekan/wego
* Other API
* [REST API Code](API/Code.md)
* [Login](API/REST-API.md)
* [User](API/User.md)
* [Role](API/Role.md)
* [Boards](API/Boards.md)
* [Lists](API/Lists.md)
* [Cards](API/Cards.md)
* [Checklists](API/Checklists.md)
* [Swimlanes](API/Swimlanes.md)
* [Custom Fields](API/Custom-Fields.md)
* [Integrations](API/Integrations.md)
# <a name="api-issue"></a>REST API issue
* [REST API Issue](https://github.com/wekan/wekan/issues/1037)
# <a name="api-client-code"></a>REST API client code
* [Example: New card with Python3 and REST API](API/New-card-with-Python3-and-REST-API.md)
* [Python client to REST API](https://github.com/wekan/wekan-python-api-client)
* [Go client to REST API](https://github.com/wekan/wego)
* [Wekan Sandstorm cards to CSV using Python](Platforms/FOSS/Sandstorm/Wekan-Sandstorm-cards-to-CSV-using-Python.md)
* [Excel and VBA](ImportExport/Excel-and-VBA.md)
# <a name="Webhooks"></a>Webhooks
* Per-board events sending at board right sidebar / Board Settings / Webhooks
* Check that webhook immediately responds with HTTP 200 OK, otherwise WeKan slows down
* [Global Webhook](https://github.com/wekan/wekan/pull/2665)
* PHP Webhook receiver to WeKan API Python https://github.com/wekan/webhook/blob/main/public/index.php#L46
* [Limiting Webhook data](https://github.com/wekan/wekan/issues/2830)
* [Receiving Webhooks](Webhooks/Receiving-Webhooks)
* [Java Webhooks](Webhooks/Java.md)
* [Outgoing Webhook to Discord/Slack/RocketChat/Riot](Webhooks/Outgoing-Webhook-to-Discord.md)
* [Outgoing Webhook to NodeRed](https://github.com/wekan/wekan/issues/2017)
* [Outgoing Webhook to PowerShell](https://github.com/wekan/wekan/issues/2518)
* [Outgoing Webhooks, CA and Let's Encrypt](Webhooks/WebHook-And-CA.md)
* [Outgoing Webhooks Data](Webhooks/Webhook-data.md)
* Outgoing Webhooks [Original Pull Request](https://github.com/wekan/wekan/pull/1119), [multiple Webhooks](https://github.com/wekan/wekan/pull/1199), [more parameters and response order](https://github.com/wekan/wekan/pull/1263)
# <a name="Development"></a>Development
* [Kadira integration](https://github.com/wekan/wekan/issues/2152)
* [Debugging](DeveloperDocs/Debugging.md)
* [Developer Docs for Standalone Wekan](DeveloperDocs/Developer-Documentation.md)
* [Developer Docs for Sandstorm Wekan](https://github.com/wekan/wekan/tree/main/docs/Platforms/FOSS/Sandstorm)
* [Adding new Snap setting to code](DeveloperDocs/Adding-new-Snap-settings-to-code.md)
* [Directory Structure](DeveloperDocs/Directory-Structure.md)
* [Beginner](https://github.com/wekan/wekan/labels/Beginner)
* [Maintainer FAQ](https://github.com/wekan/wekan-maintainer/wiki/FAQ)
# <a name="Issues"></a>Issues
* [Bugs](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3ABug)
* [Feature requests](https://github.com/wekan/wekan/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20feature)
* [Import / Export](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3AImport-export)
* [Drag and Drop](https://github.com/wekan/wekan/labels/Feature%3ADrag-and-drop)
* [Accessibility](https://github.com/wekan/wekan/labels/Accessibility)
* [Navigation:Keyboard](https://github.com/wekan/wekan/labels/Navigation%3AKeyboard)
* [Targets:Mobile-web](https://github.com/wekan/wekan/labels/Targets%3AMobile-web)
* [REST API](https://github.com/wekan/wekan/labels/API%3AREST)
* [Admin Panel](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3AAdmin-Panel)
* [Encryption](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3AEncryption)
* [Permissions](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3AUser-accounts%3APermissions)
* [Logs](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3ALogs)
* [Notifications](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3ANotifications)
* [Filters](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3AFilters)
* [Checklists](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3ACards%3AChecklists)
* [Swimlanes](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3ACards%3ASwimlanes)
* [LibreJS](https://github.com/wekan/wekan/issues/1040)
* [Markdown](https://github.com/wekan/wekan/issues?q=is%3Aissue+is%3Aopen+label%3AFeature%3AMarkdown)
[kanban board]: https://en.wikipedia.org/wiki/Kanban_board
[mit license]: https://github.com/wekan/wekan/blob/main/LICENSE
[sandstorm app demo]: https://demo.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h#
At https://wekan.fi
+17
View File
@@ -0,0 +1,17 @@
<html>
<head>
<meta charset="UTF-8">
<title>API: Wekan — Open-Source kanban</title>
<link rel="icon" href="../wekan-favicon.png">
<link rel="stylesheet" type="text/css" href="main.css">
<link href='https://fonts.googleapis.com/css?family=Droid+Sans' rel='stylesheet' type='text/css'>
</head>
<body>
<h1>Wekan API</h1>
<br />
<h2><a href="v7.93/">v7.93</a></h2>
</body>
</html>
Binary file not shown.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Loaded 100 of 1243 files, more files were not shown because too many files have changed in this diff. Show more