Compare commits

...

260 commits
v7.90 ... main

Author SHA1 Message Date
Lauri Ojansivu
93f0e0b125 Updated ChangeLog.
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
2025-09-21 15:01:17 +03:00
Lauri Ojansivu
730bb6d166 Fixed find.sh script errors about unmatched single quotes and binary files that are now ignored.
Thanks to xet7 !
2025-09-21 14:59:00 +03:00
Lauri Ojansivu
855bac59bf Updated ChangeLog.
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-09-19 23:46:32 +03:00
Lauri Ojansivu
870900b92a
Merge pull request #5882 from Skylark13/main
Fix links in docker-compose.yml to point to doc in repo
2025-09-19 23:45:09 +03:00
Jean-Sébastien Guay
a1d5802d36 Fix links in docker-compose.yml to point to doc in repo 2025-09-19 15:26:53 -04:00
Lauri Ojansivu
6e16fa3992 Updated ChangeLog.
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
2025-09-19 16:35:59 +03:00
Lauri Ojansivu
ee3b49ce59 Updated ChangeLog.
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
2025-09-19 03:08:40 +03:00
Lauri Ojansivu
3253dd5010 Updated to MongoDB 7.0.24 at Snap Candidate.
Thanks to MongoDB developers !
2025-09-19 03:06:06 +03:00
Lauri Ojansivu
a10d8e0438 Updated ChangeLog. 2025-09-19 01:56:18 +03:00
Lauri Ojansivu
5151814e98 Added missing mobile drag drop image to docs from wekan.github.io git history.
Thanks to xet7 !
2025-09-19 01:54:01 +03:00
Lauri Ojansivu
2e2a0f01f4 Updated ChangeLog.
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
2025-09-18 23:11:33 +03:00
Lauri Ojansivu
dec9b82da0 Updated release script for new command of uploading snap package to Snap Store.
Thanks to xet7 !
2025-09-18 23:09:03 +03:00
Lauri Ojansivu
33f4db5871 v7.95 2025-09-18 21:59:50 +03:00
Lauri Ojansivu
9a086c0397 Updated translations 2025-09-18 21:43:38 +03:00
Lauri Ojansivu
013ddb8978 Updated ChangeLog. 2025-09-18 21:34:15 +03:00
Lauri Ojansivu
c4161c5ce6 Updated dependencies.
Thanks to developers of dependencies !
2025-09-18 21:29:36 +03:00
Lauri Ojansivu
2fad0099e4 Reorganized docs
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-08-27 16:11:15 +03:00
Lauri Ojansivu
454416b0bd Updated ChangeLog.
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-08-26 15:15:44 +03:00
Lauri Ojansivu
dd80b7308b Added PGP public key for sending encrypted email.
Thanks to xet7 !
2025-08-26 15:14:19 +03:00
Lauri Ojansivu
fe5c5f1bdc Updated ChangeLog. 2025-08-21 13:11:51 +03:00
Lauri Ojansivu
79074deb34
Merge pull request #5872 from sowwos/docs/windows-offline-clarify
This adds two actionable Windows notes to docs/Platforms/Propietary/Windows/Offline.md:  - Explain that WRITABLE_PATH and ATTACHMENTS_STORE_PATH must be set before start to avoid the attachments error   (“The 'path' argument must be of type string. Received undefined” from models/attachments.js). - Show how to expose the dev server on LAN on Windows (BIND_IP=0.0.0.0 + ROOT_URL=http://<LAN-IP>:4000).  Tested on Windows 11 with Meteor dev server. Follow-up to #5871 (closed as wrong file).
2025-08-21 13:07:59 +03:00
sowwos
db0294c95e docs(windows): clarify WRITABLE_PATH/attachments + LAN bind instructions (nits) 2025-08-21 07:19:13 +03:00
Lauri Ojansivu
8f0fa88eac Updates 2025-08-20 03:20:49 +03:00
Lauri Ojansivu
946f7045e9 Added missing image to WeKan Multiverse page.
Thanks to xet7 !
2025-08-20 03:19:26 +03:00
Lauri Ojansivu
dda8c90d44 Updated ChangeLog. 2025-08-20 02:26:20 +03:00
Lauri Ojansivu
701485d76a More info about ToroDB, FerretDB, Turso, TigerBeetle, PostgreSQL, SQLite etc.
Thanks to xet7 !
2025-08-20 02:24:38 +03:00
Lauri Ojansivu
b25198b87e Updated ChangeLog. 2025-08-20 00:58:58 +03:00
Lauri Ojansivu
ad7e3774c2 Fixed image link at docs.
Thanks to xet7 !
2025-08-20 00:57:40 +03:00
Lauri Ojansivu
ee67dea96c Updated ChangeLog. 2025-08-20 00:43:26 +03:00
Lauri Ojansivu
b3d3bf1593 Updated upgrade link.
Thanks to xet7 !
2025-08-20 00:41:22 +03:00
Lauri Ojansivu
53726fed24 Updated WeKan version to Dockerfile.
Thanks to xet7 !
2025-08-18 19:01:19 +03:00
Lauri Ojansivu
7d2ca2c811 v7.94 2025-08-18 18:54:35 +03:00
Lauri Ojansivu
c0d10a0ec3 Updated ChangeLog. 2025-08-18 18:35:09 +03:00
Lauri Ojansivu
8e01e3c762 Upgraded to MongoDB 7.0.23 at Snap Candidate.
Thanks to MongoDB developers !
2025-08-18 18:30:21 +03:00
Lauri Ojansivu
04be599893 Updates 2025-08-18 18:15:51 +03:00
Lauri Ojansivu
f6cb7fddf1 Updated ChangeLog. 2025-08-13 05:34:28 +03:00
Lauri Ojansivu
a662283b7d Updates to design docs. 2025-08-13 05:32:26 +03:00
Lauri Ojansivu
f34490fe28 Reorganized Design Docs 2025-08-13 05:30:35 +03:00
Lauri Ojansivu
1a98c86a37 Updated ChangeLog. 2025-08-12 16:55:06 +03:00
Lauri Ojansivu
97b5931a4f Updated dependencies.
Thanks to developers of dependencies !
2025-08-12 16:53:34 +03:00
Lauri Ojansivu
2a4dd9b693 Updated ChangeLog. 2025-08-12 16:04:41 +03:00
Lauri Ojansivu
ecf31c3675 Updated MongoDB to 7.0.22.
Thanks to MongoDB developers !
2025-08-12 16:03:28 +03:00
Lauri Ojansivu
9b0d0a2b7c Updated ChangeLog. 2025-08-12 15:59:18 +03:00
Lauri Ojansivu
e2ffca2e39
Merge pull request #5865 from wekan/dependabot/github_actions/actions/download-artifact-5
Bump actions/download-artifact from 4 to 5
2025-08-12 15:58:29 +03:00
Lauri Ojansivu
a8435879cf Updated translations 2025-08-12 15:56:52 +03:00
Lauri Ojansivu
e16695585a Updated ChangeLog. 2025-08-12 15:03:27 +03:00
Lauri Ojansivu
a7bcfc6db7 Added docs for Windows SSL/TLS. Part 6.
Thanks to xet7 !

Related #5866
2025-08-12 15:01:56 +03:00
Lauri Ojansivu
21bed98d69 Updated ChangeLog. 2025-08-12 15:00:23 +03:00
Lauri Ojansivu
044793cc44 Added docs for Windows SSL/TLS. Part 5.
Thanks to xet7 !

Related #5866
2025-08-12 14:59:20 +03:00
Lauri Ojansivu
083a7050b9 Updated ChangeLog. 2025-08-12 14:55:13 +03:00
Lauri Ojansivu
cc78e19740 Added docs for Windows SSL/TLS. Part 4.
Thanks to xet7 !

Related #5866
2025-08-12 14:53:09 +03:00
Lauri Ojansivu
ee01a07b0a Added docs for Windows SSL/TLS. Part 3.
Thanks to xet7 !

Related #5866
2025-08-12 14:44:34 +03:00
Lauri Ojansivu
ce528b1826 Added docs for Windows SSL/TLS. Part 2.
Thanks to xet7 !

Related #5866
2025-08-12 14:40:33 +03:00
Lauri Ojansivu
92c0543614 Added docs for Windows SSL/TLS.
Thanks to xet7 !

Related #5866
2025-08-12 14:33:55 +03:00
dependabot[bot]
b6638f4a29
Bump actions/download-artifact from 4 to 5
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 07:34:46 +00:00
Lauri Ojansivu
96be56a620
Merge pull request #5864 from wekan/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-08-12 10:33:51 +03:00
dependabot[bot]
2e555e420a
Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 03:02:57 +00:00
Lauri Ojansivu
a849951c53 Update LXD docs 2025-08-09 23:03:09 +03:00
Lauri Ojansivu
435cb04717 Update PWA docs 2025-08-09 21:14:30 +03:00
Lauri Ojansivu
25a375261e Move docs PWA to Browsers directory 2025-08-09 21:09:27 +03:00
Lauri Ojansivu
1a1a44616f Revert accessibility changes temporarily.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5857
2025-08-09 14:23:40 +03:00
Lauri Ojansivu
e6347a305c Updated ChangeLog. 2025-08-09 12:00:39 +03:00
Lauri Ojansivu
b137108ae1 Fixed uppercase K of WeKan.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5857
2025-08-09 11:55:50 +03:00
Lauri Ojansivu
4ce7ff7cef
Merge pull request #5857 from seve12/main
Accessibility:
- Added product name to page titles, settings and global search.
- More accessible header and layout templates, modal dialogs, DOM structure, color contrast.
2025-08-09 11:33:50 +03:00
seve12
184415a026 Enhance color contrast and accessibility for various UI elements 2025-08-09 04:29:30 +03:00
Lauri Ojansivu
3977adcb8f Updated translations 2025-08-08 12:38:15 +03:00
Lauri Ojansivu
1c47f98f59 Feature: Added brute force login protection settings to Admin Panel/People/Locked Users. Part 2.
Thanks to xet7 !
2025-08-08 12:36:17 +03:00
seve12
9f0c37352e Enhance accessibility for modal dialogs and improve DOM structure 2025-08-07 23:59:34 +03:00
seve12
7a20fa4805 Merge branch 'main' of https://github.com/seve12/wekan 2025-08-06 19:29:25 +03:00
seve12
6a713d9e8d Refactor header and layout templates for improved accessibility and consistency 2025-08-06 19:18:01 +03:00
Lauri Ojansivu
51b0544752 Updated translations. 2025-08-06 08:17:02 +03:00
seve12
1022a7aa3a
Update settingBody.js 2025-08-05 20:23:52 +03:00
seve12
c048678844
Update router.js 2025-08-05 20:22:09 +03:00
seve12
f9fb02457c Merge branch 'main' of https://github.com/seve12/wekan 2025-08-05 20:07:50 +03:00
seve12
ce419ce64e
Merge pull request #1 from seve12/severi
Improves accessibility by disabling custom Tab handling
2025-08-05 20:05:39 +03:00
severi12345
ecb6ff57fc Update page titles to include product name in settings and global search 2025-08-05 19:59:33 +03:00
Lauri Ojansivu
663866562f Updated ChangeLog. 2025-08-05 12:57:00 +03:00
Lauri Ojansivu
dfdd0b6cbb Added info about Sandstorm Radicale Calendar and Contacts.
Thanks to xet7 !
2025-08-05 12:55:29 +03:00
Lauri Ojansivu
c81ca82822 Updated translations. 2025-08-05 12:02:36 +03:00
Lauri Ojansivu
66b067eb49 Updated translations. 2025-08-05 11:26:23 +03:00
Lauri Ojansivu
4e9f2dc46a Updated ChangeLog. 2025-08-05 11:24:34 +03:00
Lauri Ojansivu
f02d8b61b5
Merge pull request #5856 from wekan/dependabot/github_actions/docker/login-action-3.5.0
Bump docker/login-action from 3.4.0 to 3.5.0
2025-08-05 11:18:16 +03:00
Lauri Ojansivu
088de1877c
Merge pull request #5855 from wekan/dependabot/github_actions/docker/metadata-action-5.8.0
Bump docker/metadata-action from 5.7.0 to 5.8.0
2025-08-05 11:17:59 +03:00
dependabot[bot]
4611abffed
Bump docker/login-action from 3.4.0 to 3.5.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](74a5d14239...184bdaa072)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 03:24:07 +00:00
dependabot[bot]
f206f2f45c
Bump docker/metadata-action from 5.7.0 to 5.8.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.7.0 to 5.8.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](902fa8ec7d...c1e51972af)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 03:17:28 +00:00
Lauri Ojansivu
9c5f5757be Updated translations. 2025-08-05 00:50:29 +03:00
Lauri Ojansivu
ec2e0f6fed Updated ChangeLog. 2025-08-05 00:33:46 +03:00
Lauri Ojansivu
ae0d059b6f Feature: Added brute force login protection settings to Admin Panel/People/Locked Users.
Added filtering of Admin Panel/People/People: All Users/Locked Users Only/Active/Not Active.
Added visual indicators: red lock icon for locked users, green check for active users, and red X for inactive users.
Added "Unlock All" button to quickly unlock all brute force locked users.
Added ability to toggle user active status directly from the People page.
Moved lockout settings from environment variables to database so admins can configure the lockout thresholds directly in the UI.

Thanks to xet7.
2025-08-05 00:31:43 +03:00
Lauri Ojansivu
0132b801b2 Updated translations. 2025-08-04 21:34:33 +03:00
Lauri Ojansivu
06ca564ec2 Updated ChangeLog. 2025-08-04 21:26:51 +03:00
Lauri Ojansivu
d83ce5e633 Feature: Accessibility page at /accessibility. Settings at Admin Panel. When enabled, link at right sidebar.
Thanks to xet7 !
2025-08-04 21:22:14 +03:00
Lauri Ojansivu
5287319fde Updated translations. 2025-08-04 19:53:31 +03:00
Lauri Ojansivu
c75a23e693 Updated ChangeLog. 2025-08-04 19:49:59 +03:00
Lauri Ojansivu
180bf930c1 Updated translations. 2025-08-04 19:46:24 +03:00
Lauri Ojansivu
c16e99ba1e Added FerretDB/PostgreSQL to changelog. 2025-08-04 19:21:16 +03:00
Lauri Ojansivu
b9887fc917 Fixed link at OpenShift docs.
Thanks to xet7 !

Related #5854
2025-08-04 19:17:17 +03:00
Lauri Ojansivu
96b36bd8ef Updated ChangeLog. 2025-08-04 18:24:27 +03:00
Lauri Ojansivu
0e32f666eb Comment out not used Tab code at accessibility related changes.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5853
2025-08-04 18:17:24 +03:00
Lauri Ojansivu
1341fc6a98
Merge pull request #5853 from seve12/severi
Improves accessibility by disabling custom Tab handling
2025-08-04 18:12:46 +03:00
seve12
81c9e96bf3 Improves accessibility by disabling custom Tab handling
Comments out custom Tab key behavior to allow default browser focus movement, enhancing accessibility for keyboard users and assistive technologies.
2025-08-04 17:45:53 +03:00
Lauri Ojansivu
20f91ef893 Updated ChangeLog. 2025-08-01 02:29:49 +03:00
Lauri Ojansivu
1187254573 Updated security email address.
Thanks to xet7 !
2025-08-01 02:28:15 +03:00
Lauri Ojansivu
f22fb4f4a9 Updated translations 2025-07-28 23:28:36 +03:00
Lauri Ojansivu
a14762e005 Updated ChangeLog. 2025-07-19 20:16:31 +03:00
Lauri Ojansivu
9a91214043
Update CHANGELOG.md 2025-07-19 05:14:56 +03:00
Lauri Ojansivu
30795a46cf
Update CHANGELOG.md 2025-07-19 05:10:55 +03:00
Lauri Ojansivu
b0865c8d06
Update CHANGELOG.md 2025-07-19 05:03:37 +03:00
Lauri Ojansivu
c2aabbc6db
Update CHANGELOG.md 2025-07-19 05:02:01 +03:00
Lauri Ojansivu
4aad3dafd4
Update CHANGELOG.md 2025-07-19 04:58:25 +03:00
Lauri Ojansivu
62269a9902
Update CHANGELOG.md 2025-07-19 04:54:59 +03:00
Lauri Ojansivu
4bc2fd4a7f
Update CHANGELOG.md 2025-07-19 04:52:48 +03:00
Lauri Ojansivu
0e43a08689
Update CHANGELOG.md platforms info at top. Thanks to xet7! 2025-07-19 04:51:15 +03:00
Lauri Ojansivu
77b1416413 Updated ChangeLog. 2025-07-19 01:29:59 +03:00
Lauri Ojansivu
200545822c Fixes for building at Mac M1 Air.
Thanks to xet7 !
2025-07-18 22:31:17 +03:00
Lauri Ojansivu
ac33f2164f Removed not needed files. 2025-07-18 19:04:25 +03:00
Lauri Ojansivu
e82ca8a1f4 Updated ChangeLog. 2025-07-18 15:19:57 +03:00
Lauri Ojansivu
f894f9ef6d Fixed building Docker image. Pushed new Docker image to Docker Hub, Quay and GitHub.
Thanks to xet7 !

Fixes #5835
2025-07-18 15:17:36 +03:00
Lauri Ojansivu
ccfd8ef566 Updated ChangeLog. 2025-07-18 08:55:51 +03:00
Lauri Ojansivu
6c6b66c802 Updated release website script.
Thanks to xet7 !
2025-07-18 08:53:41 +03:00
Lauri Ojansivu
2cb2e7cb10 v7.93 2025-07-18 08:30:28 +03:00
Lauri Ojansivu
8744f47a0e Updated ChangeLog. 2025-07-17 01:25:27 +03:00
Lauri Ojansivu
b742b25f96
Merge pull request #5832 from Atry/edit_list
Add REST API endpoint to edit a list with various properties
2025-07-17 01:21:06 +03:00
Yang, Bo
6d7c20f397 Add API endpoint to edit a list with various properties 2025-07-16 22:09:58 +00:00
Lauri Ojansivu
f3d384c1dd Updated ChangeLog. 2025-07-17 00:52:34 +03:00
Lauri Ojansivu
69ce79a7b9 Fixed Snap local build script.
Thanks to xet7 !
2025-07-17 00:50:18 +03:00
Lauri Ojansivu
1cd191f76b Updated ChangeLog. 2025-07-16 01:10:59 +03:00
Lauri Ojansivu
afc3c29341
Merge pull request #5829 from Atry/get_card_by_id
Avoid calling `ReactiveCache.getCard` twice
2025-07-16 01:08:27 +03:00
Lauri Ojansivu
fedb3040d1 Updated ChangeLog. 2025-07-16 00:59:16 +03:00
Yang, Bo
0a969c59d3
Avoid calling ReactiveCache.getCard twice 2025-07-15 14:58:21 -07:00
Lauri Ojansivu
d9fb9f49fd
Merge pull request #5828 from Atry/get-card-by-id
Add a REST API endpoint to retrieve a card by ID
2025-07-16 00:53:42 +03:00
Yang, Bo
fc77d0d201 Add REST API endpoint to retrieve a card by ID 2025-07-15 21:40:43 +00:00
Lauri Ojansivu
56700d1d06 Updated ChangeLog. 2025-07-10 05:22:38 +03:00
Lauri Ojansivu
84259c5116
Merge pull request #5826 from Atry/rest-api-custom-field-return-type
fix: correct return type in API documentation for custom fields
2025-07-09 19:14:13 +03:00
Yang, Bo
6cc746df8b fix: correct return type in API documentation for custom fields 2025-07-09 15:43:20 +00:00
Lauri Ojansivu
b3ad06692f Updated ChangeLog. 2025-07-08 14:18:54 +03:00
Lauri Ojansivu
bb0814bb11
Update Python.md 2025-07-08 14:16:49 +03:00
Lauri Ojansivu
722faf8aaa Updated ChangeLog. 2025-07-07 23:06:17 +03:00
Lauri Ojansivu
159324858b Fixed release script of building Snap locally at Ubuntu.
Thanks to xet7 !
2025-07-07 23:03:36 +03:00
Lauri Ojansivu
f73a370719 Updated ChangeLog. 2025-07-07 22:42:12 +03:00
Lauri Ojansivu
dfc658b910 Added release script to switch between using kvm, snapcraft.io/multipass, waydroid and virtualbox.
Thanks to xet7 !
2025-07-07 22:41:15 +03:00
Lauri Ojansivu
0a52f470b7 Updated ChangeLog. 2025-07-07 22:19:44 +03:00
Lauri Ojansivu
e4822d8bc4 Updated issue template about pull requests for fixes to docs.
Thanks to xet7 !
2025-07-07 22:17:57 +03:00
Lauri Ojansivu
9d1cab3ac2 Updated ChangeLog. 2025-07-07 22:15:18 +03:00
Lauri Ojansivu
6d16ec238a Updated image links at Azure docs 2025-07-07 20:29:48 +03:00
Lauri Ojansivu
e0284f225b Updated Keycloak link 2025-07-07 20:25:59 +03:00
Lauri Ojansivu
a5acd0801a Updated Azure link 2025-07-07 20:24:34 +03:00
Lauri Ojansivu
d59337ae47 Updated docs 2025-07-07 19:44:24 +03:00
Lauri Ojansivu
2f27a3f839 Updated docs about migrating manually. Part 2. 2025-07-07 19:27:54 +03:00
Lauri Ojansivu
450b33f98a Updated docs about migrating manually 2025-07-07 19:26:43 +03:00
Lauri Ojansivu
9adf5027fa Updated docs about importing from Asana 2025-07-07 19:21:27 +03:00
Lauri Ojansivu
1610b84845 Updated docs about importing from Trello. Part 3. 2025-07-07 19:18:29 +03:00
Lauri Ojansivu
40b2cf88fc Updated docs about importing from Trello. Part 2. 2025-07-07 19:17:41 +03:00
Lauri Ojansivu
55ef6c0c56 Updated docs about importing from Trello 2025-07-07 19:15:51 +03:00
Lauri Ojansivu
a9c67ac200 Fix docs link about CSV. Part 2. 2025-07-07 19:09:57 +03:00
Lauri Ojansivu
3892be47ac Fix docs link about CSV 2025-07-07 19:07:48 +03:00
Lauri Ojansivu
a2654b2e29 Removed not working link from docs 2025-07-07 19:05:49 +03:00
Lauri Ojansivu
a052cc8fa5 Updated docs about Kubernetes 2025-07-07 19:04:05 +03:00
Lauri Ojansivu
5d09100cb6 Update info about hashing 2025-07-07 19:00:10 +03:00
Lauri Ojansivu
76769d1b85 Fixed not working link 2025-07-07 18:56:34 +03:00
Lauri Ojansivu
2cf57250e8 Fix link to image at docs 2025-07-07 18:54:56 +03:00
Lauri Ojansivu
5d0a0c931f Removed old link Test Edge from docs index. 2025-07-07 18:50:56 +03:00
Lauri Ojansivu
fa1adfec76 Formatting 2025-07-07 18:43:26 +03:00
Lauri Ojansivu
9271b07383 Fix link to image about PWA app icon install.
Thanks to stevenroose and xet7 !

Fixes #5824
2025-07-07 18:40:52 +03:00
Lauri Ojansivu
4fe955650a Added most often used links 2025-07-07 18:36:39 +03:00
Lauri Ojansivu
6b401000b9 Updated Snap platforms setting. 2025-07-05 20:11:13 +03:00
Lauri Ojansivu
aa681cde88 Updated building Snap 2025-07-05 16:59:33 +03:00
Lauri Ojansivu
0921c6ea53 Updated ChangeLog. 2025-07-05 16:09:33 +03:00
Lauri Ojansivu
2df73bedee Updated rebuild-wekan.sh install deps for macOS. Part 2. 2025-07-05 15:30:12 +03:00
Lauri Ojansivu
938fe49b2c Update rebuild-wekan.sh install deps for macOS 2025-07-05 15:27:11 +03:00
Lauri Ojansivu
7e2e649a8e Updated ChangeLog. 2025-07-05 14:16:02 +03:00
Lauri Ojansivu
6e11aa27f8 Reorganized docs to fix building WeKan 2025-07-04 04:08:41 +03:00
Lauri Ojansivu
57ee624398 Updated issue template. 2025-07-04 03:18:44 +03:00
Lauri Ojansivu
3cba95b60a Updated issue template. 2025-07-01 19:08:43 +03:00
Lauri Ojansivu
bd796ce642 Updated links at readme 2025-06-28 14:22:01 +03:00
Lauri Ojansivu
3a8473e632 Fix image link 2025-06-28 14:10:41 +03:00
Lauri Ojansivu
89480b61ce wekan.github.io to wekan.fi, and blog.wekan.team to wekan.fi/blog 2025-06-28 14:08:57 +03:00
Lauri Ojansivu
c5e5bb613e Moved images from wekan.github.io to docs 2025-06-28 11:50:55 +03:00
Lauri Ojansivu
b52d1ca6c4 wekan.team to wekan.fi 2025-06-28 10:59:38 +03:00
Lauri Ojansivu
790bafbb09 wekan.team to wekan.fi 2025-06-27 21:37:17 +03:00
Lauri Ojansivu
c256ce6968
Update Browser-compatibility-matrix.md about Servo 2025-06-26 20:29:48 +03:00
Lauri Ojansivu
85465e0dfb Updated ChangeLog. 2025-06-26 05:45:11 +03:00
Lauri Ojansivu
b7409c1d0b Removed old broken snap files.
Thanks to xet7 !
2025-06-26 05:43:30 +03:00
Lauri Ojansivu
4060d33bbc Updated ChangeLog. 2025-06-26 05:42:34 +03:00
Lauri Ojansivu
6526d99123 Upgraded Snap Candidate to have base core24, MongoDB 7 and Caddy 2.
Thanks to xet7 !
2025-06-26 05:39:37 +03:00
Lauri Ojansivu
1b44c848ad Updated ChangeLog. 2025-06-26 03:47:57 +03:00
Lauri Ojansivu
e6980be061 Updated dependencies.
Thanks to developers of dependencies !
2025-06-26 03:46:39 +03:00
Lauri Ojansivu
81c77650b4 Updated translations. 2025-06-26 03:08:38 +03:00
Lauri Ojansivu
791e37dd9c Updated ChangeLog. 2025-06-26 03:01:59 +03:00
Lauri Ojansivu
f926448bbb Added docs about using MongoDB at unsupported CPUs with Qemu.
Thanks to xet7 !

Related #4321,
related #5814
2025-06-26 03:00:04 +03:00
Lauri Ojansivu
7128f067d0 Updated ChangeLog. 2025-06-26 02:48:12 +03:00
Lauri Ojansivu
59ab6c1cd8 Snap Candidate: If CPU does not support AVX, use Qemu that supports AVX, so that MongoDB 6 works. Part 3.
Thanks to xet7 !

Fixes #4321
2025-06-26 02:41:11 +03:00
Lauri Ojansivu
89105b6e72 Updated ChangeLog. 2025-06-26 01:20:41 +03:00
Lauri Ojansivu
51e43f1c25 Specify meteor version, otherwise the latest meteor version is not compatible with node14. Part 2.
Thanks to xet7 !
2025-06-26 01:19:06 +03:00
Lauri Ojansivu
9b24d644a4
Merge pull request #5815 from Atry/board-rest-api-doc
feat: enhance API documentation and add board-related endpoints
2025-06-26 01:09:42 +03:00
Lauri Ojansivu
2549e0e4c8
Merge pull request #5816 from dassio/main
specify meteor version, otherwise the lastes meteor version is not compatible with node14
2025-06-26 01:08:43 +03:00
xiangbin.li
d974fa638c specify meteor version, otherwise the lastes version is not compatiable with node_14 2025-06-24 03:36:20 +00:00
Yang, Bo
f399b5119f feat: enhance API documentation and add board-related endpoints
Previously, boards.js contains a `?.` operator, which is not supported by esprima, therefore boards.js is skipped.

This PR fixes the API generation for borads.js by removing `?.`.

See https://github.com/jquery/esprima/issues/2112
2025-06-23 20:01:38 +00:00
Lauri Ojansivu
12d3fabdb7 Updates 2025-06-18 17:12:53 +03:00
Lauri Ojansivu
d5727f5b15 Updated github issue template 2025-06-18 17:08:49 +03:00
Lauri Ojansivu
1908d04fd4 Updates 2025-06-18 17:04:59 +03:00
Lauri Ojansivu
c7f8c828cb Updates 2025-06-18 17:01:38 +03:00
Lauri Ojansivu
054d0913fd Updates 2025-06-18 16:56:37 +03:00
Lauri Ojansivu
ca7dc69c85 Fix links and add more info 2025-06-18 16:53:29 +03:00
Lauri Ojansivu
b2ff51d99c Updates 2025-06-18 16:48:33 +03:00
Lauri Ojansivu
abd4b6bd87 Updates 2025-06-18 16:45:04 +03:00
Lauri Ojansivu
b92d07c9a6 Updated translations 2025-06-18 11:30:37 +03:00
Lauri Ojansivu
c6204417a3 Updated translations 2025-06-18 11:27:23 +03:00
Lauri Ojansivu
3a23401443 Updated ChangeLog. 2025-06-18 11:07:15 +03:00
Lauri Ojansivu
12e6e46924
Update Browser-compatibility-matrix.md 2025-06-17 00:19:33 +03:00
Lauri Ojansivu
be1b959519
Update Browser-compatibility-matrix.md 2025-06-17 00:18:04 +03:00
Lauri Ojansivu
7841c9e801
Update Browser-compatibility-matrix.md 2025-06-17 00:15:23 +03:00
Lauri Ojansivu
bc486e2a7d Updated ChangeLog. 2025-06-16 14:58:15 +03:00
Lauri Ojansivu
d01885e2ad Updated ChangeLog. 2025-06-16 14:47:50 +03:00
Lauri Ojansivu
358ffe0601
Merge pull request #5805 from walster001/main
CleanDark Theme Fixes
2025-06-16 14:45:19 +03:00
walster001
8d0bf1b758
Fix invisible scrollbar on CleanDark cards
Found that scrollbars were blending in with the card background largely due to transparency on the main board.
2025-06-16 00:39:10 +09:30
walster001
c7961cf2f4
Fix spacing 2025-06-16 00:22:20 +09:30
walster001
2ac374e578
Fix font colour contrast CleanDark
Fixes the visibility of card titles when card is opened for CleanDark theme as was inheriting black title from CleanLight theme. 
Title now is white to match and heavily contrast theme.
2025-06-16 00:18:50 +09:30
Lauri Ojansivu
ad3306e19e
Update Browser-compatibility-matrix.md 2025-06-14 22:37:10 +03:00
Lauri Ojansivu
f54cbac370 Updated docs 2025-06-13 23:05:01 +03:00
Lauri Ojansivu
4bfc0140be Updated docs links 2025-06-13 22:36:59 +03:00
Lauri Ojansivu
cc7459b983 Updated docs: Fixed links 2025-06-13 22:15:36 +03:00
Lauri Ojansivu
11415cd517 Updated Docs: Updated deep dive link 2025-06-13 21:45:38 +03:00
Lauri Ojansivu
9aa028f32d Updates 2025-06-13 21:39:46 +03:00
Lauri Ojansivu
2a415cbd26 Updated docs: Moved content from Home.md to README.md 2025-06-13 21:38:12 +03:00
Lauri Ojansivu
40a52da2d3 Updated docs: Removed footer 2025-06-13 21:34:45 +03:00
Lauri Ojansivu
31e043c1d7 Updated docs 2025-06-13 21:32:36 +03:00
Lauri Ojansivu
985afafed0 Snap Candidate back to MongoDB 6.0.24 2025-06-12 21:22:16 +03:00
Lauri Ojansivu
3a4d20ecb2 Updates 2025-06-12 20:28:52 +03:00
Lauri Ojansivu
35b524f179 Updated ChangeLog. 2025-06-12 20:15:19 +03:00
Lauri Ojansivu
d2f17ef140 Upgrade to MongoDB 7.0.21 2025-06-12 20:13:49 +03:00
Lauri Ojansivu
d99864ca95 v7.92 2025-06-12 19:30:59 +03:00
Lauri Ojansivu
e6e1191f8a Updated ChangeLog. 2025-06-12 15:50:06 +03:00
Lauri Ojansivu
1f10c20874 Updated dependencies.
Thanks to developers of dependencies !
2025-06-12 15:48:55 +03:00
Lauri Ojansivu
c699f7a940 Updated ChangeLog. 2025-06-12 15:47:50 +03:00
Lauri Ojansivu
7115c292c7 Updated dependencies.
Thanks to developers of dependencies !
2025-06-12 15:46:44 +03:00
Lauri Ojansivu
7744b14b48 Updated ChangeLog. 2025-06-12 15:44:50 +03:00
Lauri Ojansivu
6fed9e73d8
Merge pull request #5801 from Atry/fix-login-openapi
fix: properly document `/users/login`
2025-06-12 15:43:09 +03:00
Yang, Bo
e14a3f9c2d fix: properly document /users/login 2025-06-12 02:18:19 +00:00
Lauri Ojansivu
7bf75b1ff7 Updated ChangeLog. 2025-06-11 19:54:05 +03:00
Lauri Ojansivu
6905e24199 Updated to MongoDB 6.0.24 at Snap Candidate.
Thanks to MongoDB developers!
2025-06-11 19:52:13 +03:00
Lauri Ojansivu
9eb25c09da Updated ChangeLog. 2025-06-06 03:58:51 +03:00
Lauri Ojansivu
c97f5ffca3 Updated ChangeLog. 2025-06-03 01:11:26 +03:00
Lauri Ojansivu
eb19168b5f
Merge pull request #5795 from wekan/dependabot/github_actions/docker/build-push-action-6.18.0
Bump docker/build-push-action from 6.17.0 to 6.18.0
2025-06-03 01:09:31 +03:00
dependabot[bot]
e421b68766
Bump docker/build-push-action from 6.17.0 to 6.18.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.17.0 to 6.18.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](1dc7386353...263435318d)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 20:16:16 +00:00
Lauri Ojansivu
6b86625c56 Updated ChangeLog. 2025-06-02 19:15:46 +03:00
Lauri Ojansivu
254b6dd5c7
Merge pull request #5793 from walster001/main
Allow selection of card text via webkit/user-select attributes
2025-06-02 19:13:18 +03:00
walster001
7b545d12c7
Allow selection of card text via webkit/user-select attributes
Fixes open issue around webkit/user-select attributes. Modifies values to allow "text" values to be selected in cards and on the board.
2025-06-02 22:03:16 +09:30
Lauri Ojansivu
01ed20b400 v7.91 2025-05-25 01:05:10 +03:00
Lauri Ojansivu
fad930833a Updated translations. 2025-05-25 00:31:15 +03:00
Lauri Ojansivu
9192fbee44 Updated ChangeLog. 2025-05-25 00:30:11 +03:00
Lauri Ojansivu
aaa5f9885d Reverted https://github.com/wekan/wekan/pull/5774 about due date changes.
Thanks to xet7 !

Fixes #5782
2025-05-25 00:22:47 +03:00
Lauri Ojansivu
1979b1692d Reverted date format changes.
Thanks to xet7 !
2025-05-25 00:11:09 +03:00
valhalla-creator
fc31eeca88
Update cardDate.js 2025-05-22 21:20:20 +01:00
valhalla-creator
6d4de76a9a
Update datepicker.js 2025-05-22 21:19:39 +01:00
valhalla-creator
9245ba4a5b
Update utils.js 2025-05-22 21:18:52 +01:00
valhalla-creator
973a788c21
Update datepicker.js 2025-05-22 21:13:22 +01:00
valhalla-creator
0d5df8d3cf
Update cardDate.js 2025-05-22 21:12:44 +01:00
valhalla-creator
b67a236657
Update utils.js 2025-05-22 21:11:28 +01:00
Lauri Ojansivu
170617d457
Merge pull request #5780 from wekan/dependabot/github_actions/docker/build-push-action-6.17.0
Bump docker/build-push-action from 6.16.0 to 6.17.0
2025-05-19 23:12:48 +03:00
dependabot[bot]
cc2f359b6c
Bump docker/build-push-action from 6.16.0 to 6.17.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](14487ce63c...1dc7386353)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 20:08:52 +00:00
432 changed files with 17980 additions and 2185 deletions

View file

@ -1,257 +0,0 @@
name: wekan
version: 0
version-script: git describe --tags | cut -c 2-
summary: The open-source kanban
description: |
Wekan is an open-source and collaborative kanban board application.
Whether youre maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
Depending on target environment, some configuration settings might need to be adjusted.
For full list of configuration options call:
$ wekan.help
confinement: strict
grade: stable
architectures:
- amd64
plugs:
mongodb-plug:
interface: content
target: $SNAP_DATA/shared
hooks:
configure:
plugs:
- network
- network-bind
slots:
mongodb-slot:
interface: content
write:
- $SNAP_DATA/share
apps:
wekan:
command: wekan-control
daemon: simple
plugs: [network, network-bind]
mongodb:
command: mongodb-control
daemon: simple
plugs: [network, network-bind]
caddy:
command: caddy-control
daemon: simple
plugs: [network, network-bind]
help:
command: wekan-help
database-backup:
command: mongodb-backup
plugs: [network, network-bind]
database-list-backups:
command: ls -al $SNAP_COMMON/db-backups/
database-restore:
command: mongodb-restore
plugs: [network, network-bind]
parts:
mongodb:
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.6.tgz
plugin: dump
stage-packages: [libssl1.0.0, libcurl3]
filesets:
mongo:
- usr
- bin
- lib
stage:
- $mongo
prime:
- $mongo
wekan:
source: .
plugin: nodejs
node-engine: 14.21.3
node-packages:
- node-gyp
- node-pre-gyp
- fibers
build-packages:
- ca-certificates
- apt-utils
- python
- python3
- g++
- capnproto
- curl
- libcurl3
- execstack
- nodejs
- npm
stage-packages:
- libfontconfig1
override-build: |
echo "Cleaning environment first"
rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
# Create the OpenAPI specification
rm -rf .build
## Use Meteor 1.8.x on Snap
#rm -rf .meteor
#mv .snap-meteor-1.8/.meteor .
#mv .snap-meteor-1.8/package.json .
#mv .snap-meteor-1.8/package-lock.json .
## Meteor 1.9.x has changes to Buffer() => Buffer.alloc(), so reverting those
#mv .snap-meteor-1.8/cfs_access-point.txt fix-download-unicode/
#mv .snap-meteor-1.8/export.js models/
#mv .snap-meteor-1.8/wekanCreator.js models/
#mv .snap-meteor-1.8/ldap.js packages/wekan-ldap/server/ldap.js
#mv .snap-meteor-1.8/oidc_server.js packages/wekan-oidc/oidc_server.js
rm -rf .snap-meteor-1.8
#mkdir -p .build/python
#cd .build/python
#git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
#cd esprima-python
#python3 setup.py install
#cd ../../..
#mkdir -p ./public/api
#python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
# we temporary need api2html and mkdirp
#npm install -g api2html@0.3.0
#npm install -g mkdirp
#api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
#npm uninstall -g mkdirp
#npm uninstall -g api2html
# Node Fibers 100% CPU usage issue:
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
# https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
# https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
# Also see beginning of wekan/server/authentication.js
# import Fiber from "fibers";
# Fiber.poolSize = 1e9;
# OLD: Download node version 8.12.0 prerelease build => Official node 8.12.0 has been released
# Description at https://releases.wekan.team/node.txt
##echo "375bd8db50b9c692c0bbba6e96d4114cd29bee3770f901c1ff2249d1038f1348 node" >> node-SHASUMS256.txt.asc
##curl https://releases.wekan.team/node -o node
# Verify Fibers patched node authenticity
##echo "Fibers 100% CPU issue patched node authenticity:"
##grep node node-SHASUMS256.txt.asc | shasum -a 256 -c -
##rm -f node-SHASUMS256.txt.asc
##chmod +x node
##mv node `which node`
# DOES NOT WORK: paxctl fix.
# Removed from build-packages: - paxctl
#echo "Applying paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303"
#paxctl -mC `which node`
#echo "Installing npm"
#curl -L https://www.npmjs.com/install.sh | sh
echo "Installing meteor"
curl https://install.meteor.com/ -o install_meteor.sh
#sed -i "s|RELEASE=.*|RELEASE=\"1.8.1-beta.0\"|g" install_meteor.sh
chmod +x install_meteor.sh
sh install_meteor.sh
rm install_meteor.sh
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
#if [ ! -d "packages" ]; then
# mkdir packages
#fi
#if [ ! -d "packages/kadira-flow-router" ]; then
# cd packages
# git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
# cd ..
#fi
#if [ ! -d "packages/meteor-useraccounts-core" ]; then
# cd packages
# git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' meteor-useraccounts-core/package.js
# cd ..
#fi
#if [ ! -d "packages/meteor-accounts-cas" ]; then
# cd packages
# git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git meteor-accounts-cas
# cd ..
#fi
#if [ ! -d "packages/wekan-ldap" ]; then
# cd packages
# git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
# cd ..
#fi
#if [ ! -d "packages/wekan-scrollbar" ]; then
# cd packages
# git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
# cd ..
#fi
#if [ ! -d "packages/wekan_accounts-oidc" ]; then
# cd packages
# git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
# mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan-accounts-oidc
# mv meteor-accounts-oidc/packages/switch_oidc wekan-oidc
# rm -rf meteor-accounts-oidc
# cd ..
#fi
#if [ ! -d "packages/markdown" ]; then
# cd packages
# git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
# cd ..
#fi
rm -rf .build
meteor add standard-minifier-js --allow-superuser
meteor npm install --allow-superuser
meteor npm install --allow-superuser --save babel-runtime
meteor build .build --directory --allow-superuser
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
#cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
#rm -rf node_modules/bcrypt
#meteor npm install --save bcrypt
# Change from npm-bcrypt directory back to .build/bundle/programs/server directory.
#cd ../../../../
# Change to directory .build/bundle/programs/server
cd .build/bundle/programs/server
npm install
npm install --allow-superuser --save babel-runtime
#meteor npm install --save bcrypt
# Change back to Wekan source directory
cd ../../../..
cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
rm -f $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
rm -f $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/tar/lib/.mkdir.js.swp
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-gyp/node_modules/tar/lib/.mkdir.js.swp
# Meteor 1.8.x additional .swp remove
rm -f $SNAPCRAFT_PART_INSTALL/programs/server/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
organize:
README: README.wekan
prime:
- -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
helpers:
source: snap-src
plugin: dump
caddy:
plugin: dump
source: https://caddyserver.com/download/linux/amd64?license=personal&telemetry=off
source-type: tar
organize:
caddy: bin/caddy
CHANGES.txt: CADDY_CHANGES.txt
EULA.txt: CADDY_EULA.txt
LICENSES.txt: CADDY_LICENSES.txt
README.txt: CADDY_README.txt
stage:
- -init

View file

@ -1,198 +0,0 @@
#!/bin/bash
echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8"
echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
echo " You can still use any other locale as your main locale."
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
#NODE_VERSION=12.21.0
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
function pause(){
read -p "$*"
}
function cprec(){
if [[ -d "$1" ]]; then
if [[ ! -d "$2" ]]; then
sudo mkdir -p "$2"
fi
for i in $(ls -A "$1"); do
cprec "$1/$i" "$2/$i"
done
else
sudo cp "$1" "$2"
fi
}
# sudo npm doesn't work right, so this is a workaround
function npm_call(){
TMPDIR="/tmp/tmp_npm_prefix"
if [[ -d "$TMPDIR" ]]; then
rm -rf $TMPDIR
fi
mkdir $TMPDIR
NPM_PREFIX="$(npm config get prefix)"
npm config set prefix $TMPDIR
npm "$@"
npm config set prefix "$NPM_PREFIX"
echo "Moving files to $NPM_PREFIX"
for i in $(ls -A $TMPDIR); do
cprec "$TMPDIR/$i" "$NPM_PREFIX/$i"
done
rm -rf $TMPDIR
}
#function wekan_repo_check(){
## UNCOMMENTING, IT'S NOT REQUIRED THAT /HOME/USERNAME IS /HOME/WEKAN
# git_remotes="$(git remote show 2>/dev/null)"
# res=""
# for i in $git_remotes; do
# res="$(git remote get-url $i | sed 's/.*wekan\/wekan.*/wekan\/wekan/')"
# if [[ "$res" == "wekan/wekan" ]]; then
# break
# fi
# done
#
# if [[ "$res" != "wekan/wekan" ]]; then
# echo "$PWD is not a wekan repository"
# exit;
# fi
#}
echo
PS3='Please enter your choice: '
options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for dev on http://localhost:4000" "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000" "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Install Wekan dependencies")
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
# Debian, Ubuntu, Mint
sudo apt-get install -y build-essential gcc g++ make git curl wget
# npm nodejs
#sudo npm -g install npm
curl -0 -L https://npmjs.org/install.sh | sudo sh
sudo chown -R $(id -u):$(id -g) $HOME/.npm
sudo npm -g install n
sudo n 12.21.0
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
elif [[ "$OSTYPE" == "cygwin" ]]; then
# POSIX compatibility layer and Linux environment emulation for Windows
echo "TODO: Add Cygwin";
exit;
elif [[ "$OSTYPE" == "msys" ]]; then
# Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
echo "TODO: Add msys on Windows";
exit;
elif [[ "$OSTYPE" == "win32" ]]; then
# I'm not sure this can happen.
echo "TODO: Add Windows";
exit;
elif [[ "$OSTYPE" == "freebsd"* ]]; then
echo "TODO: Add FreeBSD";
exit;
else
echo "Unknown"
echo ${OSTYPE}
exit;
fi
## Latest npm with Meteor 1.8.x
npm_call -g install npm
npm_call -g install node-gyp
# Latest fibers for Meteor 1.8.x
sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
npm_call -g install fibers
# Install Meteor, if it's not yet installed
curl https://install.meteor.com | bash
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
break
;;
"Build Wekan")
echo "Building Wekan."
#wekan_repo_check
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
#rm -rf packages/kadira-flow-router packages/meteor-useraccounts-core packages/meteor-accounts-cas packages/wekan-ldap packages/wekan-ldap packages/wekan-scrfollbar packages/meteor-accounts-oidc packages/markdown
#mkdir packages
#cd packages
#git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
#git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git
#git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
#git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
#git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
#mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc
#mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc
#rm -rf meteor-accounts-oidc
#if [[ "$OSTYPE" == "darwin"* ]]; then
# echo "sed at macOS";
# sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#else
# echo "sed at ${OSTYPE}"
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#fi
#cd ..
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
rm -rf node_modules .meteor/local
npm install
rm -rf .build
meteor build .build --directory
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
rm -rf .build/bundle/programs/web.browser.legacy
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
#cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
#rm -rf node_modules/bcrypt
#meteor npm install bcrypt
cd .build/bundle/programs/server
rm -rf node_modules
npm install
#meteor npm install bcrypt
cd ../../../..
echo Done.
break
;;
"Run Meteor for dev on http://localhost:4000")
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
break
;;
"Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000")
IPADDRESS=$(ip a | grep 'noprefixroute' | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1)
echo "Your IP address is $IPADDRESS"
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
break
;;
"Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT")
ip address
echo "From above list, what is your IP address?"
read IPADDRESS
echo "On what port you would like to run Wekan?"
read PORT
echo "ROOT_URL=http://$IPADDRESS:$PORT"
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:$PORT meteor run --exclude-archs web.browser.legacy,web.cordova --port $PORT
break
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done

View file

@ -1,155 +0,0 @@
name: wekan
version: git
summary: The open-source kanban
description: |
Wekan is an open-source and collaborative kanban board application.
Whether youre maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
Depending on target environment, some configuration settings might need to be adjusted.
For full list of configuration options call:
$ wekan.help
confinement: strict
grade: stable
base: core18
architectures:
- amd64
plugs:
mongodb-plug:
interface: content
target: $SNAP_DATA/shared
hooks:
configure:
plugs:
- network
- network-bind
slots:
mongodb-slot:
interface: content
write:
- $SNAP_DATA/share
apps:
wekan:
command: wekan-control
daemon: simple
plugs: [network, network-bind]
mongodb:
command: mongodb-control
daemon: simple
plugs: [network, network-bind]
caddy:
command: caddy-control
daemon: simple
plugs: [network, network-bind]
help:
command: wekan-help
database-backup:
command: mongodb-backup
plugs: [network, network-bind]
database-list-backups:
command: ls -al $SNAP_COMMON/db-backups/
database-restore:
command: mongodb-restore
plugs: [network, network-bind]
parts:
mongodb:
source: https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-server_4.2.2_amd64.deb
#https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.14.tgz
#https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.22.tgz
plugin: dump
stage-packages: [libssl1.0.0, libcurl3]
filesets:
mongo:
- usr
- bin
- lib
stage:
- $mongo
prime:
- $mongo
wekan:
source: .
plugin: nodejs
node-engine: 14.19.0
node-packages:
- node-gyp
- node-pre-gyp
- fibers
build-packages:
- ca-certificates
- apt-utils
- build-essential
- python
- python3
- g++
- capnproto
- curl
- libcurl3
- execstack
- nodejs
- npm
stage-packages:
- libfontconfig1
override-build: |
echo "Cleaning environment first"
rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
rm -rf .build
echo "Installing meteor"
curl https://install.meteor.com/ -o install_meteor.sh
chmod +x install_meteor.sh
sh install_meteor.sh
rm install_meteor.sh
rm -rf .build
meteor add standard-minifier-js --allow-superuser
meteor npm install --allow-superuser
meteor npm install --allow-superuser --save babel-runtime
meteor build .build --directory --allow-superuser
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
cd .build/bundle/programs/server
npm install
npm install --allow-superuser --save babel-runtime
# Change back to Wekan source directory
cd ../../../..
cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
rm -f $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
rm -f $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/tar/lib/.mkdir.js.swp
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-gyp/node_modules/tar/lib/.mkdir.js.swp
rm -f $SNAPCRAFT_PART_INSTALL/programs/server/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
organize:
README: README.wekan
prime:
- -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
helpers:
source: snap-src
plugin: dump
caddy:
plugin: dump
source: https://caddyserver.com/download/linux/amd64?license=personal&telemetry=off
source-type: tar
organize:
caddy: bin/caddy
CHANGES.txt: CADDY_CHANGES.txt
EULA.txt: CADDY_EULA.txt
LICENSES.txt: CADDY_LICENSES.txt
README.txt: CADDY_README.txt
stage:
- -init

View file

@ -1,183 +0,0 @@
name: wekan
version: '6.21'
base: core20
summary: Open Source kanban
description: |
WeKan ® is an Open Source and collaborative kanban board application.
Whether youre maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
Depending on target environment, some configuration settings might need to be adjusted.
For full list of configuration options call:
$ wekan.help
confinement: strict
grade: stable
architectures:
- build-on: amd64
run-on: amd64
- build-on: arm64
run-on: arm64
- build-on: ppc64el
run-on: ppc64el
- build-on: s390x
run-on: s390x
plugs:
mongodb-plug:
interface: content
target: $SNAP_DATA/shared
hooks:
configure:
plugs:
- network
- network-bind
slots:
mongodb-slot:
interface: content
write:
- $SNAP_DATA/share
apps:
wekan:
command: wekan-control
daemon: simple
plugs: [network, network-bind, mount-observe, system-observe, bluetooth-control]
restart-condition: on-failure
mongodb:
command: mongodb-control
daemon: simple
plugs: [network, network-bind, mount-observe, system-observe, bluetooth-control]
restart-condition: on-failure
caddy:
command: caddy-control
daemon: simple
plugs: [network, network-bind]
help:
command: wekan-help
database-backup:
command: mongodb-backup
plugs: [network, network-bind, mount-observe, system-observe, bluetooth-control]
database-list-backups:
command: ls -al $SNAP_COMMON/db-backups/
database-restore:
command: mongodb-restore
plugs: [network, network-bind, mount-observe, system-observe, bluetooth-control]
parts:
mongodb:
plugin: dump
source:
- on amd64: https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-amd64/mongodb-org-server_4.4.13_amd64.deb
- on arm64: https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-arm64/mongodb-org-server_4.4.13_arm64.deb
- on ppc64el: https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-ppc64el/mongodb-org-server_4.4.13_ppc64el.deb
- on s390x: https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-s390x/mongodb-org-server_4.4.13_s390x.deb
stage-packages:
- libssl1.1
- libcurl3-dev
- libcurl4-openssl-dev
filesets:
mongo:
- usr
- bin
- lib
stage:
- $mongo
prime:
- $mongo
wekan:
#plugin: npm
plugin: dump
source:
# Fixed URLs to some allowed GitHub releases URL.
# Non-GitHub build server file urls are not allowed at 2022-03-02 and later.
- on amd64: https://github.com/wekan/wekan/releases/download/v6.20/wekan-6.20-amd64.zip
- on arm64: https://github.com/wekan/wekan/releases/download/v6.20/wekan-6.20-arm64.zip
- on ppc64el: https://github.com/wekan/wekan/releases/download/v6.20/wekan-6.20-ppc64el.zip
- on s390x: https://github.com/wekan/wekan/releases/download/v6.20/wekan-6.20-s390x.zip
# npm-node-version: 14.19.1
# node-packages:
# - node-gyp
# - node-pre-gyp
# - fibers
# build-packages:
# - npm
# - build-essential
# - ca-certificates
# - apt-utils
# - python
# - python3
# - g++
# - capnproto
# - curl
# - execstack
# - nodejs
# - npm
# - p7zip-full
# stage-packages:
# - libfontconfig1
override-build: |
cp -r bundle/* $SNAPCRAFT_PART_INSTALL/
cp bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
snapcraftctl build
organize:
README: README.wekan
prime:
- -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
- -lib/node_modules/weka*
helpers:
source: snap-src
plugin: dump
caddy:
plugin: dump
## Caddy v1 is not developed anymore. TODO: Sometime migrate to Caddy v2.
## https://caddy.community/t/caddyfile-v1-adapter/9129
## https://github.com/caddyserver/caddy/tree/v1
#source: https://caddyserver.com/download/linux/amd64?license=personal&telemetry=off
#source-type: tar
# Using last working binary that was downloaded from above URL to Wekan Snap,
# and .txt files from https://github.com/caddyserver/caddy/tree/v1/dist
source: https://wekan.github.io/caddy-v1-linux-amd64.7z
source-type: 7z
organize:
caddy: bin/caddy
CHANGES.txt: CADDY_CHANGES.txt
EULA.txt: CADDY_EULA.txt
LICENSES.txt: CADDY_LICENSES.txt
README.txt: CADDY_README.txt
stage:
- -init
caddy2:
plugin: dump
source:
# Fixed URLs to some allowed GitHub releases URL.
# Non-GitHub build server file urls are not allowed at 2022-03-02 and later.
- on amd64: https://github.com/wekan/wekan/releases/download/v6.20/caddy-v2-amd64.zip
- on arm64: https://github.com/wekan/wekan/releases/download/v6.20/caddy-v2-arm64.zip
- on ppc64el: https://github.com/wekan/wekan/releases/download/v6.20/caddy-v2-ppc64el.zip
- on s390x: https://github.com/wekan/wekan/releases/download/v6.20/caddy-v2-s390x.zip
source-type: zip
organize:
caddy: bin/caddy
CHANGES.txt: CADDY_CHANGES.txt
EULA.txt: CADDY_EULA.txt
LICENSES.txt: CADDY_LICENSES.txt
README.txt: CADDY_README.txt
stage:
- -init

2
.github/FUNDING.yml vendored
View file

@ -1,3 +1,3 @@
# These are supported funding model platforms
custom: ['https://wekan.team/commercial-support/']
custom: ['https://wekan.fi/commercial-support/']

View file

@ -1,5 +1,9 @@
## Issue
UPGRADE: https://wekan.fi/upgrade/
Pull requests welcome to fix any broken links at docs directory, and organizing docs/Features and their screenshots to subdirectories of each feature.
Please report these issues elsewhere:
- SECURITY ISSUES, PGP EMAIL: https://github.com/wekan/wekan/blob/main/SECURITY.md
@ -7,9 +11,6 @@ Please report these issues elsewhere:
If WeKan Snap is slow, try this: https://github.com/wekan/wekan/wiki/Cron
**[PLEASE UPGRADE](https://github.com/wekan/wekan/wiki/Backup)** to the newest
WeKan ® before reporting an issue, if possible.
Please search existing Open and Closed issues, most questions have already been answered.
If you can not login for any reason: https://github.com/wekan/wekan/wiki/Forgot-Password

View file

@ -9,6 +9,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 'Dependency Review'
uses: actions/dependency-review-action@v4

View file

@ -32,13 +32,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@ -48,14 +48,14 @@ jobs:
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# 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@14487ce63c7a62a4a324b0bfb37086795e31c6c1
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
with:
context: .
push: ${{ github.event_name != 'pull_request' }}

View file

@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Build the Docker image
run: docker build . --file Dockerfile --tag wekan:$(date +%s)

View file

@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0

View file

@ -18,7 +18,7 @@ jobs:
# runs-on: ubuntu-latest
# steps:
# - name: checkout
# uses: actions/checkout@v4
# uses: actions/checkout@v5
#
# - name: setup node
# uses: actions/setup-node@v1
@ -42,7 +42,7 @@ jobs:
# needs: [lintcode]
# steps:
# - name: checkout
# uses: actions/checkout@v4
# uses: actions/checkout@v5
#
# - name: setup node
# uses: actions/setup-node@v1
@ -65,7 +65,7 @@ jobs:
# needs: [lintcode,lintstyle]
# steps:
# - name: checkout
# uses: actions/checkout@v4
# uses: actions/checkout@v5
#
# - name: setup node
# uses: actions/setup-node@v1
@ -90,7 +90,7 @@ jobs:
# CHECKOUTS
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
# CACHING
- name: Install Meteor
@ -147,10 +147,10 @@ jobs:
needs: [tests]
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Download coverage
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: coverage-folder
path: .coverage/

View file

@ -1,19 +1,307 @@
[Mac ChangeLog](https://github.com/wekan/wekan/wiki/Mac)
Newest WeKan at these amd64 platforms:
Newest WeKan at these platforms:
- Windows and Linux bundle
- Snap Candidate
- Docker
- Kubernetes
- [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)
- https://wekan.fi/install/
- Snap Candidate amd64
- Docker amd64
- Kubernetes Docker amd64
- Bitnami MongoDB Docker images do not exist anymore. [MongoDump/MongoRestore to groundhog2k MongoDB images](https://github.com/wekan/charts/issues/45)
Fixing other platforms In Progress.
- Install info at Server part of webpage https://wekan.github.io
- Newest Node.js is at https://github.com/wekan/node-v14-esm/releases/tag/v14.21.4
- MongoDB 6.x
- Node.js 14.x at https://github.com/wekan/node-v14-esm/releases/tag/v14.21.4 and https://nodejs.org/dist/latest-v14.x/
- MongoDB 6.x and 7.x, or FerretDB/PostgreSQL https://blog.ferretdb.io/building-project-management-stack-wekan-ferretdb/
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
[Upgrade WeKan](https://wekan.fi/upgrade/)
# Upcoming WeKan ® release
This release adds the following updates:
- [Updated release script for new command of uploading snap package to Snap Store](https://github.com/wekan/wekan/commit/dec9b82da0d700aafd7e2b2063b5d5b07dd383c3).
Thanks to xet7.
- [Updated to MongoDB 7.0.24 at Snap Candidate](https://github.com/wekan/wekan/commit/3253dd501067c617aec272efec1c4c2bb9861983).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Added missing mobile drag drop image to docs from wekan.github.io git history](https://github.com/wekan/wekan/commit/5151814e98599c22fff98dc7c42fbf634004ab20).
Thanks to xet7.
- [Fix links in docker-compose.yml to point to doc in repo](https://github.com/wekan/wekan/pull/5882).
Thanks to Skylark13.
- [Fixed find.sh script errors about unmatched single quotes and binary files that are now ignored](https://github.com/wekan/wekan/commit/730bb6d166baa5530cc75b4c94ae46c8077884b0).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.95 2025-09-18 WeKan ® release
This release adds the following updates:
- [Updated upgrade link at repo readme](https://github.com/wekan/wekan/commit/b3d3bf159376d56048361a385f0b295667e2319c).
Thanks to xet7.
- [Fixed image link at docs](https://github.com/wekan/wekan/commit/ad7e3774c2b29265a8fbefdde7b9b83822af6def).
Thanks to xet7.
- [More info about ToroDB, FerretDB, Turso, TigerBeetle, PostgreSQL, SQLite etc](https://github.com/wekan/wekan/commit/701485d76aded5ee4fa17967d94918132a821af6).
Thanks to xet7.
- [Added missing image to WeKan Multiverse page](https://github.com/wekan/wekan/commit/946f7045e92e26bbe8d182634844ee5eebf73564).
Thanks to xet7.
- [Added more info to Windows Offline docs about WRITABLE_PATH and ATTACHMENTS_STORE_PATH](https://github.com/wekan/wekan/pull/5872).
Thanks to sowwos.
- [Added PGP public key for sending encrypted email](https://github.com/wekan/wekan/commit/dd80b7308bb6c66113c8e6009c442a44a29e477a).
Thanks to xet7.
- [Updated dependencies](https://github.com/wekan/wekan/commit/c4161c5ce69a35c76364b13bcc456905f6335162).
Thanks to developers of dependencies.
- [Replace bitnami mongodb Helm chart by groundhog2k one](https://github.com/wekan/charts/pull/44).
Thanks to ariep.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.94 2025-08-18 WeKan ® release
This release adds the following new features:
- [Feature: Accessibility page at /accessibility. Settings at Admin Panel. When enabled, link at right sidebar](https://github.com/wekan/wekan/commit/d83ce5e6335c175f2f4a384f6090c18c7f860555).
Thanks to xet7.
- [Feature: Added brute force login protection settings to Admin Panel/People/Locked Users](https://github.com/wekan/wekan/commit/ae0d059b6feb38a438ca21aa154c63b410641763).
Added filtering of Admin Panel/People/People: All Users/Locked Users Only/Active/Not Active.
Added visual indicators: red lock icon for locked users, green check for active users, and red X for inactive users.
Added "Unlock All" button to quickly unlock all brute force locked users.
Added ability to toggle user active status directly from the People page.
Moved lockout settings from environment variables to database so admins can configure the lockout thresholds directly in the UI.
Thanks to xet7.
- Added docs for Windows SSL/TLS.
[Part 1](https://github.com/wekan/wekan/commit/92c0543614fb92cf8217d8cc24a367296f3ade37),
[Part 2](https://github.com/wekan/wekan/commit/ce528b1826255ebf3ac9533dd8ed91bec8bbe8b1),
[Part 3](https://github.com/wekan/wekan/commit/ee01a07b0ac7c6b06054b3d7bfac8c38161adf19),
[Part 4](https://github.com/wekan/wekan/commit/cc78e19740ae1bf42f2bbb17f801fe2d4dac135d),
[Part 5](https://github.com/wekan/wekan/commit/044793cc4473bebc8eefa64a0df9e9a20115d049),
[Part 6](https://github.com/wekan/wekan/commit/a7bcfc6db7cc78892ed20cdf0d03f84094853687).
Thanks to xet7.
and adds the following updates:
- Update CHANGELOG.md platforms info at top.
[Part 1](https://github.com/wekan/wekan/commit/0e43a08689c0d47c816ce781e93650f0c37efe28),
[Part 2](https://github.com/wekan/wekan/commit/4bc2fd4a7fc166041a5c483aad73bf8079c3ae45),
[Part 3](https://github.com/wekan/wekan/commit/62269a99024744c789ac931921c96d5edae9d79e),
[Part 4](https://github.com/wekan/wekan/commit/4aad3dafd4530cc7779072fc9a550d8732f32558),
[Part 5](https://github.com/wekan/wekan/commit/c2aabbc6db9ffbb73d9f06edb73a15a9f4838df4),
[Part 6](https://github.com/wekan/wekan/commit/b0865c8d06a31d07b5b5df719871c298e1cf4ad8),
[Part 7](https://github.com/wekan/wekan/commit/30795a46cfb5f37837206a6de653913bfb631595),
[Part 8](https://github.com/wekan/wekan/commit/9a91214043d93307074cf33e54d40cb43c14ad62).
- [Updated security email address](https://github.com/wekan/wekan/commit/11872545734db82229e873b48f122d826457fec3).
Thanks to xet7.
- Updated GitHub Docker Actions.
[Part 1](https://github.com/wekan/wekan/pull/5855),
[Part 2](https://github.com/wekan/wekan/pull/5856),
[Part 3](https://github.com/wekan/wekan/pull/5864),
[Part 4](https://github.com/wekan/wekan/pull/5865).
Thanks to Dependabot.
- [Added info about Sandstorm Radicale Calendar and Contacts](https://github.com/wekan/wekan/commit/dfdd0b6cbbbb60bf6dba7a61f34dc52e74f98b41).
Thanks to xet7.
- [Updated dependencies](https://github.com/wekan/wekan/commit/97b5931a4f717541631dde55f2b834d037e1d82d).
Thanks to developers of dependencies.
- Reorganized Design Docs.
[Part 1](https://github.com/wekan/wekan/commit/f34490fe2820352c8303f0bac47ad7158592e8f0),
[Part 2](https://github.com/wekan/wekan/commit/a662283b7de91c0ef63195691e06b5cbc6cdff6c).
Thanks to xet7.
- [Added related link to design docs](https://github.com/wekan/wekan/commit/a662283b7de91c0ef63195691e06b5cbc6cdff6c).
Thanks to xet7.
- [Upgraded to MongoDB 7.0.23 at Snap Candidate](https://github.com/wekan/wekan/commit/8e01e3c762748269c2e60f9f349dac30f30971d7).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Fixes for building at macOS](https://github.com/wekan/wekan/commit/200545822c5c778521f76525938fe777ed9666f0).
Thanks to xet7.
- [Improves accessibility by disabling custom Tab handling](https://github.com/wekan/wekan/pull/5853).
Thanks to seve12, co-maintainer of WeKan.
- [Comment out not used Tab code at accessibility related changes](https://github.com/wekan/wekan/commit/0e32f666eb30cc254177119907e6eae3c09ce0ca).
Thanks to xet7.
- [Fixed link at OpenShift docs](https://github.com/wekan/wekan/commit/b9887fc91758edb31259a8df7770a1d992bc9251).
Thanks to xet7.
- [Added FerretDB/PostgreSQL to changelog](https://github.com/wekan/wekan/commit/c16e99ba1ec7bc25a4e0449ea463ea8f4b02da11).
Thanks to xet7.
- [Accessibility](https://github.com/wekan/wekan/pull/5857):
Added product name to page titles, settings and global search.
More accessible header and layout templates, modal dialogs, DOM structure, color contrast.
Thanks to seve12.
- [Fixed uppercase K of WeKan](https://github.com/wekan/wekan/commit/b137108ae15a9c5685cca5f45cfa9480ec7d3510).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.93 2025-07-18 WeKan ® release
This release adds the following new features:
- [Enhance API documentation and add board-related endpoints](https://github.com/wekan/wekan/pull/5815).
Thanks to Atry.
- Snap Candidate: If CPU does not support AVX, use Qemu that supports AVX, so that MongoDB 6 works.
[Part 1](https://github.com/wekan/migratemongo/commit/e7ca69584f021c4de16062f7074f177cca7ab25c),
[Part 2](https://github.com/wekan/migratemongo/commit/e34efeeced9e293ff6ea12bf36486eab3ce3a3f5),
[Part 3](https://github.com/wekan/wekan/commit/59ab6c1cd8ca3d71616201b02de6536b15b2303d).
Thanks to xet7.
- [Added docs about using MongoDB at unsupported CPUs with Qemu](https://github.com/wekan/wekan/commit/f926448bbbbd570ad1e6a1015c755b12c6b229c0).
Thanks to xet7.
- [Helm Chart: Add podAnnotations support](https://github.com/wekan/charts/pull/42).
Thanks to adalinesimonian.
- [Added release script to switch between using kvm, snapcraft.io/multipass, waydroid and virtualbox](https://github.com/wekan/wekan/commit/dfc658b910f038fa6d6ae2e06c190eb8e6205a78).
Thanks to xet7.
- [Add a REST API endpoint to retrieve a card by ID](https://github.com/wekan/wekan/pull/5828).
Thanks to Atry.
- [Avoid calling ReactiveCache.getCard twice](https://github.com/wekan/wekan/pull/5829).
Thanks to Atry.
- [Add REST API endpoint to edit a list with various properties](https://github.com/wekan/wekan/pull/5832).
Thanks to Atry.
and adds the following major updates to links of WeKan websites, blog and docs:
- These changes are because most people at Finland expect Finnish company to be at .fi domain.
- It did take too much time at local computer shop to explain about domain being .team
- Most content have been moved to wekan.fi . For app stores https://wekan.fi/app/ there is still wekan.team used for app.
- Many wikis and images from wekan.github.io have been moved to wekan repo docs directory
- Pull requests welcome to fix any broken links at docs directory, and organizing docs/Features and their screenshots to subdirectories of each feature.
- [Updated issue template about pull requests for fixes to docs](https://github.com/wekan/wekan/commit/e4822d8bc4dd0c200b63983013625d2c3677e9f9).
Thanks to xet7.
- wekan.team to wekan.fi.
[Part 1](https://github.com/wekan/wekan/commit/790bafbb096a606cdb34a1d942478ae53174ff1c),
[Part 2](https://github.com/wekan/wekan/commit/b52d1ca6c47fbeeb3c5f93111809a1863478b833).
Thanks to xet7.
- [Moved images from wekan.github.io to repo wekan/docs](https://github.com/wekan/wekan/commit/c5e5bb613e9d0e8652bce24a1cecb620dd8e7cd4).
Thanks to xet7.
- [wekan.github.io to wekan.fi, and blog.wekan.team to wekan.fi/blog](https://github.com/wekan/wekan/commit/89480b61ce98d5a344108ad7c2ce9b3577fd3d7e>
Thanks to xet7.
- Update Browser-compatibility-matrix.md about
[Servo](https://github.com/wekan/wekan/commit/c256ce69688e47675245bf68f13d3025b2a7d7ab),
[uWolf](https://github.com/wekan/wekan/commit/ad3306e19e422b9b8ce70a13e862bc107fec1eba),
[TUI webbrowsers](https://github.com/wekan/wekan/commit/7841c9e801c737aab07e9bd68f8d84f9e4becc3e),
[Chawan](https://github.com/wekan/wekan/commit/be1b9595196e2072ec2259de9b81bc3b823722eb) and
[Elinks](https://github.com/wekan/wekan/commit/12e6e469249c9392181df20f51bcc684e2656960).
Thanks to xet7.
- Updated links, after moving many wikis to wekan repo docs directory:
[Part 1: Updated docs](https://github.com/wekan/wekan/commit/31e043c1d7c0d4031054234241f6a1b7479f2134),
[Part 2: Removed footer](https://github.com/wekan/wekan/commit/40a52da2d3fd472847b9bfd2696f3f9a72021b52),
[Part 3: Moved content from Home.md to README.md](https://github.com/wekan/wekan/commit/2a415cbd2661bd210fdd18626f1e606f73334bd2),
[Part 4: Updated links at readme](https://github.com/wekan/wekan/commit/9aa028f32dc7c186d55ada422b73a7e331de2cbb),
[Part 5: Updated deep dive link](https://github.com/wekan/wekan/commit/11415cd51781bde20375c6d98fccde17227136fd),
[Part 6: Fixed links](https://github.com/wekan/wekan/commit/cc7459b98395f15fd2c97992f74c279a93f8956a),
[Part 7: Updated links](https://github.com/wekan/wekan/commit/4bfc0140bef8504ba24b237a9c5c525a5bf3fb7d),
[Part 8: Reorganized docs file locations](https://github.com/wekan/wekan/commit/f54cbac37008fc99f19fb20930d2fa5ecb535a69),
[Part 9: Fix Discord image link and WeKan API link](https://github.com/wekan/wekan/commit/3a8473e6326bff2f17ada1bb48f0c7f38b356721),
[Part 10: Fix links about docs that were moved from wiki to readme](https://github.com/wekan/wekan/commit/bd796ce64248dc58ff4a192ca58796096dbef019),
[Part 11: Updated building Snap](https://github.com/wekan/wekan/commit/aa681cde88d17ee0fd957233c52297e9ab0047ce),
[Part 12: Updated Snap platforms setting](https://github.com/wekan/wekan/commit/6b401000b91dc46b810dfc27964246891b7cd68c),
[Part 13: Fix link to image about PWA app icon install. Thanks to stevenroose and xet7](https://github.com/wekan/wekan/commit/9271b07383c3544bd1368f95e79a7d4d637d5922),
[Part 14: Formatting](https://github.com/wekan/wekan/commit/fa1adfec768ad1d34f3fbd45e6332c6c0db87b05),
[Part 15: Removed old link Test Edge from docs index](https://github.com/wekan/wekan/commit/5d0a0c931f3d4ea2e65fcc412f1eeaa6cc2107d5),
[Part 16: Fix link to image at docs](https://github.com/wekan/wekan/commit/2cf57250e8bc6f6f220f0a0f8dc85a5196f80138),
[Part 17: Fixed not working link](https://github.com/wekan/wekan/commit/76769d1b855032ef17aeae3c82558cd301e2da0d),
[Part 18: Added most often used links](https://github.com/wekan/wekan/commit/4fe955650a11d77a06a319a2e707ae97d77b471f),
[Part 19: Update info about hashing](https://github.com/wekan/wekan/commit/5d09100cb6cf0cc686112587327c8cb993a559e4),
[Part 20: Updated docs about Kubernetes](https://github.com/wekan/wekan/commit/a052cc8fa5bffad652cf585cf5cab84e13afa442),
[Part 21: Removed not working link from docs](https://github.com/wekan/wekan/commit/a2654b2e2950974cf25e6acaa36a6d5a4285564c),
[Part 22: Fix docs link about CSV. Part 1](https://github.com/wekan/wekan/commit/3892be47ac0fc0ff3bdafcf44ce818eea47fe6b0),
[Part 23: Fix docs link about CSV. Part 2](https://github.com/wekan/wekan/commit/a9c67ac2006592ac575a5cb68fe575d8ac3f4d6a),
[Part 24: Updated docs about importing from Trello. Part 1](https://github.com/wekan/wekan/commit/55ef6c0c56b3b383edeb2984bcdfbf2ab7e74e6d),
[Part 25: Updated docs about importing from Trello. Part 2](https://github.com/wekan/wekan/commit/40b2cf88fc7c8a94fd9ad8690ca4ca68add68d5f),
[Part 26: Updated docs about importing from Trello. Part 3](https://github.com/wekan/wekan/commit/1610b84845f332eabc8e204a917ca5daa284d24d),
[Part 27: Updated docs about importing from Asana](https://github.com/wekan/wekan/commit/9adf5027fafbb9f44507dcc703a38de9b6215287),
[Part 28: Updated docs about migrating manually. Part 1](https://github.com/wekan/wekan/commit/450b33f98a8527423e6c5cee98bb5020a77e113f),
[Part 29: Updated docs about migrating manually. Part 2](https://github.com/wekan/wekan/commit/2f27a3f839a26a773b3a2cf8e7f93d3930b01b1a),
[Part 30: Updated docs](https://github.com/wekan/wekan/commit/d59337ae47876396c2571aa803bd57236abfc328),
[Part 31: Updated Azure link](https://github.com/wekan/wekan/commit/a5acd0801aa55b49243bdc1c001c226546537cb3),
[Part 32: Updated Keycloak link](https://github.com/wekan/wekan/commit/e0284f225b6567eb90ac0224fd348cf8e4e87229),
[Part 33: Updated image links at Azure docs](https://github.com/wekan/wekan/commit/6d16ec238a00f456494c84e08ea13eb166e42f6e),
[Part 34: Updated Python docs](https://github.com/wekan/wekan/commit/bb0814bb11bf00e73c3c48c9954792c6ca09e3be).
Thanks to xet7.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/e6980be061a6ab54d592cd86f1079a7672a3e081).
Thanks to developers of dependencies.
- [Upgraded Snap Candidate to have base core24, MongoDB 7 and Caddy 2](https://github.com/wekan/wekan/commit/6526d99123b047fe4dfcf8f60a23f65d1261324c).
Thanks to xet7.
- [Removed old broken not used snap configuration files](https://github.com/wekan/wekan/commit/b7409c1d0b574b77f0fa95f7289d815671c1e224).
Thanks to xet7.
- [Updated release website script](https://github.com/wekan/wekan/commit/6c6b66c802e88e8dcc7d9215b9caad4c269861c5).
Thanks to xet7.
and fixes the following bugs:
- [CleanDark Theme Fixes](https://github.com/wekan/wekan/pull/5805).
Thanks to walster001.
- Specify meteor version, otherwise the latest meteor version is not compatible with node14.
[Part 1](https://github.com/wekan/wekan/pull/5816),
[Part 2](https://github.com/wekan/wekan/commit/51e43f1c254abee7ee12e8fdab8c52695e858fa2).
Thanks to dassio and xet7.
- [Reorganized docs to fix building WeKan](https://github.com/wekan/wekan/commit/6e11aa27f896e41c57980b45b59dc8248259421f).
Thanks to xet7.
- Fixed rebuild-wekan.sh install deps for macOS.
[Part 1](https://github.com/wekan/wekan/commit/938fe49b2c0dd523e3402b514b13ba5b605dac2b),
[Part 2](https://github.com/wekan/wekan/commit/2df73bedeebf6e6da2e4003bd236668e185f6701).
Thanks to xet7.
- [Fixed release script of building Snap locally at Ubuntu](https://github.com/wekan/wekan/commit/159324858bb2a72761082265558329eee0c0863d).
Thanks to xet7.
- [Fix: Correct return type in API documentation for Custom Fields](https://github.com/wekan/wekan/pull/5826).
Thanks to Atry.
- [Fixed Snap local build script](https://github.com/wekan/wekan/commit/69ce79a7b9e86b60482d42455701b58ae9926c69).
Thanks to xet7.
- [Fixed building Docker image. Pushed new Docker image to Docker Hub, Quay and GitHub](https://github.com/wekan/wekan/commit/f894f9ef6d8bad47260d0b648f18c36a5b208517).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.92 2025-06-12 WeKan ® release
This release adds the following updates:
- [Updated Docker build push action](https://github.com/wekan/wekan/pull/5795).
Thanks to dependabot.
- [Updated to MongoDB 6.0.24 at Snap Candidate](https://github.com/wekan/wekan/commit/6905e24199186274f37d8bbdfac313f957fdd54f).
Thanks to MongoDB developers.
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/commit/7115c292c7066d8d00778fa738bb11c2db467895),
[Part 2](https://github.com/wekan/wekan/commit/1f10c208744ec45e062db08a179b6e9a3b1bcd2e).
Thanks to developers of dependencies.
- [Upgrade to MongoDB 7.0.21](https://github.com/wekan/wekan/commit/d2f17ef1402335e4b3bd9de8864c68f97714febf).
Thanks to MongoDB developers.
- [Snap Candidate back to MongoDB 6.0.24, because 7.0.21 did not work](https://github.com/wekan/wekan/commit/985afafed0eb608fb95d4e54f846836b1fb0e800).
Thanks to xet7.
and fixes the following bugs:
- [Allow selection of card text via webkit/user-select attributes](https://github.com/wekan/wekan/pull/5793).
Thanks to walster001.
- [Helm Chart: Fix: quote host names](https://github.com/wekan/charts/pull/41).
Thanks to Atry.
- [Fix: properly document /users/login API](https://github.com/wekan/wekan/pull/5801).
Thanks to Atry.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.91 2025-05-25 WeKan ® release
This release adds the following updates:
- [Updated Docker build push action](https://github.com/wekan/wekan/pull/5780).
Thanks to dependabot.
and fixes the following bugs:
- Reverted due date fixes.
[Part 1](https://github.com/wekan/wekan/commit/1979b1692dcaf6fd909cabfb894635f1e6a66fa8),
[Part 2](https://github.com/wekan/wekan/commit/aaa5f9885d37a369606e61a759af37f444ec606d).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.90 2025-05-14 WeKan ® release
@ -2150,7 +2438,7 @@ This release adds the following new features:
- [Count of attachments on minicard. (Badges renamed to Count of attachments)](https://github.com/wekan/wekan/pull/4940).
Thanks to helioguardabaxo.
- [Renamed Badge to Count of attachments on minicard. Changed icons to Cover image on minicard](https://github.com/wekan/wekan/commit/825742359ef0738b110ed0904853c604bdbd1bac).
Thanks to xet7.
Thanks to xet7.
- [Added conditional to show after list field only if board has at least one list. Now after list shows the last list by default](https://github.com/wekan/wekan/pull/4941).
Thanks to helioguardabaxo.
- [Changed Add List to be at left. Before it was at right](https://github.com/wekan/wekan/commit/467835192fbcd9d4016674fa2ee406258cc106e7).

View file

@ -11,7 +11,7 @@ Not paid:
Paid by customers of WeKan Team:
- Commercial Support at https://wekan.team/commercial-support/
- Commercial Support at https://wekan.fi/commercial-support/
- Support
- Private Chat
- Features

View file

@ -13,7 +13,7 @@ LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
# to Quay to avoid Docker Hub rate limits.
ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3"
ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3 unzip"
ENV \
DEBUG=false \
@ -167,7 +167,7 @@ ENV \
#---------------------------------------------------------------------
# Copy the app to the image
COPY ${SRC_PATH} /home/wekan/app
#COPY ${SRC_PATH} /home/wekan/app
# Install OS
RUN <<EOR
@ -188,58 +188,73 @@ ln -sf $(which bsdtar) $(which tar)
cd /tmp
# Download nodejs
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz"
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt"
#wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz"
wget "https://github.com/wekan/node-v14-esm/releases/download/v14.21.4/node-v14.21.4-linux-x64.tar.gz"
#wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt"
wget "https://github.com/wekan/node-v14-esm/releases/download/v14.21.4/SHASUMS256.txt"
# Verify nodejs authenticity
grep "node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
#grep "node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
grep "node-v14.21.4-linux-x64.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
rm -f "SHASUMS256.txt"
# Install Node
tar xzf "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
rm "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" "SHASUMS256.txt"
#tar xzf "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
tar xzf "node-v14.21.4-linux-x64.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
#rm "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" "SHASUMS256.txt"
rm "node-v14.21.4-linux-x64.tar.gz" "SHASUMS256.txt"
ln -s "/usr/local/bin/node" "/usr/local/bin/nodejs"
mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/${NODE_VERSION} /home/wekan/.config"
#mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/${NODE_VERSION} /home/wekan/.config"
#mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/v14.21.4 /home/wekan/.config"
# Install node dependencies
npm install -g npm@${NPM_VERSION} --production
#npm install -g npm@${NPM_VERSION} --production
npm install -g npm@$6.14.17 --production
chown --recursive wekan:wekan /home/wekan/.config
# Install Meteor
cd /home/wekan
chown --recursive wekan:wekan /home/wekan
echo "Starting meteor ${METEOR_RELEASE} installation... \n"
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh
mv /root/.meteor /home/wekan/
chown --recursive wekan:wekan /home/wekan/.meteor
#gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh
# Specify Meteor version 2.14 to be compatible: https://github.com/wekan/wekan/pull/5816/files
#gosu wekan:wekan npm -g install meteor@2.14 --unsafe-perm
#mv /root/.meteor /home/wekan/
#chown --recursive wekan:wekan /home/wekan/.meteor
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
cd /home/wekan/.meteor
gosu wekan:wekan /home/wekan/.meteor/meteor -- help
#sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
#cd /home/wekan/.meteor
#gosu wekan:wekan /home/wekan/.meteor/meteor -- help
# Build app (Production)
#cd /home/wekan/app
mkdir -p /home/wekan/app
cd /home/wekan/app
mkdir -p /home/wekan/.npm
chown --recursive wekan:wekan /home/wekan/.npm
chmod u+w *.json
gosu wekan:wekan meteor npm install --production
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build
cd /home/wekan/app_build/bundle/programs/server/
chmod u+w *.json
gosu wekan:wekan meteor npm install --production
cd node_modules/fibers
node build.js
cd ../..
#mkdir -p /home/wekan/.npm
#chown --recursive wekan:wekan /home/wekan/.npm
#chmod u+w *.json
#gosu wekan:wekan meteor npm install --production
#gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build
#cd /home/wekan/app_build/bundle/programs/server/
#chmod u+w *.json
#gosu wekan:wekan meteor npm install --production
#cd node_modules/fibers
#node build.js
#cd ../..
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy
mv /home/wekan/app_build/bundle /build
#rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy
#mv /home/wekan/app_build/bundle /build
wget "https://github.com/wekan/wekan/releases/download/v7.95/wekan-7.95-amd64.zip"
unzip wekan-7.95-amd64.zip
rm wekan-7.95-amd64.zip
mv /home/wekan/app/bundle /build
# Put back the original tar
mv $(which tar)~ $(which tar)
# Cleanup
apt-get remove --purge --assume-yes ${BUILD_DEPS}
npm uninstall -g api2html
#npm uninstall -g api2html
apt-get autoremove --assume-yes
apt-get clean --assume-yes
rm -Rf /tmp/*

View file

@ -1,10 +1,8 @@
[Gitpod Ready-to-Code](https://gitpod.io/#https://github.com/wekan/wekan)
# WeKan ® - Open Source kanban
## Downloads
https://wekan.github.io / Install WeKan ® Server
https://wekan.fi/install/
## Docker Containers
@ -16,7 +14,7 @@ docker-compose.yml at https://github.com/wekan/wekan/blob/main/docker-compose.ym
## Standards
- [WeKan and Standard for Public Code](https://wekan.github.io/standard-for-public-code/) assessment was made at 2023-11.
- [WeKan and Standard for Public Code](https://wekan.fi/standard-for-public-code/) assessment was made at 2023-11.
Currently Wekan meets 8 out of 16 criteria out of the box.
Some others could be met with small changes.
@ -27,21 +25,19 @@ docker-compose.yml at https://github.com/wekan/wekan/blob/main/docker-compose.ym
- [Open Hub](https://www.openhub.net/p/wekan)
- [OSS Insight](https://ossinsight.io/analyze/wekan/wekan)
## [Translate WeKan ® at Transifex](https://app.transifex.com/wekan/)
## Translate WeKan ® at Transifex
Translations to non-English languages are accepted only at [Transifex](https://app.transifex.com/wekan/wekan) using webbrowser.
New English strings of new features can be added as PRs to master branch file wekan/imports/i18n/data/en.i18n.json .
## [WeKan ® feature requests and bugs](https://github.com/wekan/wekan/issues)
## WeKan ® feature requests and bugs
Please add most of your questions as GitHub issue: [WeKan ® Feature Requests and Bugs](https://github.com/wekan/wekan/issues).
It's better than at chat where details get lost when chat scrolls up.
## Chat
## Discussions
[Discussions][discussions] - WeKan Community GitHub Discussions, that are not [Feature Requests and Bugs](https://github.com/wekan/wekan/issues).
[WeKan IRC FAQ](https://github.com/wekan/wekan/wiki/IRC-FAQ)
[IRC](https://github.com/wekan/wekan/blob/main/docs/FAQ/IRC-FAQ.md)
## Docker: Latest tag has newest release
@ -51,8 +47,8 @@ See bottom of https://github.com/wekan/wekan/issues/3874
## FAQ
**NOTE**:
- Please read the [FAQ](https://github.com/wekan/wekan/wiki/FAQ) first
- Please don't feed the [trolls](https://github.com/wekan/wekan/wiki/FAQ#why-am-i-called-a-troll) and [spammers](https://github.com/wekan/wekan/wiki/FAQ#why-am-i-called-a-spammer) that are mentioned in the FAQ :)
- 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 :)
## About WeKan ®
@ -72,14 +68,11 @@ that by providing one-click installation on various platforms.
- WeKan ® largest user has 30k users using WeKan ® in their company.
- WeKan ® has been [translated](https://app.transifex.com/wekan/) to about 105 languages.
- [Features][features]: WeKan ® has real-time user interface.
- [Platforms][platforms]: WeKan ® supports many platforms.
- [Platforms](https://wekan.fi/install/): WeKan ® supports many platforms.
WeKan ® is critical part of new platforms Wekan is currently being integrated to.
## Requirements
- 64bit: Linux [Snap](https://github.com/wekan/wekan-snap/wiki/Install) or [Sandstorm](https://sandstorm.io) /
[Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows).
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
- 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.
@ -89,7 +82,7 @@ that by providing one-click installation on various platforms.
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/wiki/Backup) of WeKan ® database once a day miminum.
- [Backups](https://github.com/wekan/wekan/blob/main/docs/Backup/Backup.md) of WeKan ® database once a day miminum.
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.
@ -102,22 +95,22 @@ that by providing one-click installation on various platforms.
- There is 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.team/commercial-support/).
- [Commercial Support](https://wekan.fi/commercial-support/).
We also welcome sponsors for features and bugfixes.
By working directly with WeKan ® you get the benefit of active maintenance and new features added by growing WeKan ® developer community.
## Getting Started with Development
The default branch uses [Meteor 2 with Node.js 14](https://wekan.github.io/install/).
The default branch uses [Meteor 2 with Node.js 14](https://wekan.fi/install/).
To contribute, [create a fork](https://github.com/wekan/wekan/wiki/Emoji#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/wiki/Emoji#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/wiki/Emoji#7-test).
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).
Please refer to the [developer documentation](https://github.com/wekan/wekan/wiki/Developer-Documentation) for more information.
Please refer to the [developer documentation](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Developer-Documentation.md) for more information.
## Screenshot
[More screenshots at Features page](https://github.com/wekan/wekan/wiki/Features)
[More screenshots at Features page](https://github.com/wekan/wekan/tree/main/docs/Features)
[![Screenshot of WeKan ®][screenshot_wekan]][roadmap_wekan]
@ -126,16 +119,12 @@ Please refer to the [developer documentation](https://github.com/wekan/wekan/wik
WeKan ® is released under the very permissive [MIT license](LICENSE), and made
with [Meteor](https://www.meteor.com).
[platforms]: https://github.com/wekan/wekan/wiki/Platforms
[dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation
[screenshot_wekan]: https://wekan.github.io/wekan-dark-mode.png
[dev_docs]: https://github.com/wekan/wekan/blob/main/docs/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
[wekan_issues]: https://github.com/wekan/wekan/issues
[wekan_issues]: https://github.com/wekan/wekan/issues
[docker_image]: https://hub.docker.com/r/wekanteam/wekan/
[wekan_wiki]: https://github.com/wekan/wekan/wiki
[translate_wekan]: https://app.transifex.com/wekan/
[translate_wekan]: https://app.transifex.com/wekan/wekan/
[open_source]: https://en.wikipedia.org/wiki/Open-source_software
[free_software]: https://en.wikipedia.org/wiki/Free_software
[discussions]: https://github.com/wekan/wekan/discussions

View file

@ -1,11 +1,12 @@
About money, see [CONTRIBUTING.md](CONTRIBUTING.md)
Security is very important to us. If you discover any issue regarding security, please disclose
the information responsibly by sending an email to security@wekan.team and not by
creating a GitHub issue. We will respond swiftly to fix verifiable security issues.
the information responsibly by sending an email from Protonmail to security@wekan.fi
that is Protomail email address, or by using this PGP key
[security-at-wekan.fi.asc](security-at-wekan.fi.asc) to security@wekan.fi
and not by creating a GitHub issue. We will respond swiftly to fix verifiable security issues.
We thank you with a place at our hall of fame page, that is
at https://wekan.github.io/hall-of-fame
We thank you with a place at our hall of fame page, that is at https://wekan.fi/hall-of-fame
## How should reports be formatted?

View file

@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v7.90.0"
appVersion: "v7.95.0"
files:
userUploads:
- README.md

View file

@ -2811,6 +2811,7 @@ THEME - Clean Dark
.board-color-cleandark .card-details {
background: #23232B;
scrollbar-color: #ffffff #2e2e39;
border-radius: 20px;
box-shadow: none;
}
@ -3492,7 +3493,7 @@ THEME - Clean Light
.board-color-cleandark .card-details-header {
background: #2E2E39 !important;
color: rgba(255, 255, 255, 1);
color: #FFF !important;
}
.board-color-cleanlight .card-details-header .card-details-title,

View file

@ -1,4 +1,3 @@
import { Utils } from '/client/lib/utils';
import moment from 'moment/min/moment-with-locales';
import { TAPi18n } from '/imports/i18n';
import { DatePicker } from '/client/lib/datepicker';

View file

@ -314,7 +314,8 @@ BlazeComponent.extendComponent({
// Pressing Tab should open the form of the next column, and Maj+Tab go
// in the reverse order
} else if (evt.keyCode === 9) {
evt.preventDefault();
// Prevent custom focus movement on Tab key for accessibility
// evt.preventDefault();
const isReverse = evt.shiftKey;
const list = $(`#js-list-${this.data().listId}`);
const listSelector = '.js-list:not(.js-list-composer)';
@ -413,13 +414,16 @@ BlazeComponent.extendComponent({
// or `Enter` to validation the auto-completion. We also need to stop the
// event propagation to prevent the card from submitting (on `Enter`) or
// going on the next column (on `Tab`).
/*
onKeydown(evt, commands) {
if (evt.keyCode === 9 || evt.keyCode === 13) {
evt.stopPropagation();
return commands.KEY_ENTER;
}
// Prevent custom focus movement on Tab key for accessibility
// if (evt.keyCode === 9 || evt.keyCode === 13) {
// evt.stopPropagation();
// return commands.KEY_ENTER;
//}
return null;
},
*/
},
);
},

View file

@ -72,3 +72,28 @@
border-radius: 5px;
margin-right: 5px;
}
/* Accessibility page styles */
.accessibility-page {
padding: 20px;
max-width: 800px;
margin: 0 auto;
}
.accessibility-page h2 {
font-size: 24px;
margin-bottom: 20px;
color: #4d4d4d;
}
.accessibility-page-content {
background-color: #fff;
padding: 20px;
border-radius: 3px;
box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}
.accessibility-page-content p {
margin-bottom: 16px;
line-height: 1.6;
}

View file

@ -1,8 +1,18 @@
template(name="accessibilityHeaderBar")
if currentUser
h1
| {{_ 'accessibility-title'}}
if isAccessibilityEnabled
= accessibilityTitle
else
| {{_ 'accessibility'}}
template(name="accessibility")
if currentUser
| {{_ 'accessibility-content'}}
.accessibility-page
if isAccessibilityEnabled
.accessibility-page-content
+viewer
| {{accessibilityContent}}
else
.accessibility-page-content
| {{_ 'accessibility-info-not-added-yet'}}

View file

@ -1,11 +1,38 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
// Shared helpers for both accessibility templates
const accessibilityHelpers = {
accessibilityTitle() {
const setting = AccessibilitySettings.findOne({});
return setting && setting.title ? setting.title : TAPi18n.__('accessibility-title');
},
accessibilityContent() {
const setting = AccessibilitySettings.findOne({});
return setting && setting.body ? setting.body : TAPi18n.__('accessibility-content');
},
isAccessibilityEnabled() {
const setting = AccessibilitySettings.findOne({});
return setting && setting.enabled;
}
};
// Main accessibility page component
BlazeComponent.extendComponent({
onCreated() {
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
Meteor.subscribe('setting');
Meteor.subscribe('accessibilitySettings');
},
...accessibilityHelpers
}).register('accessibility');
// Header bar component
BlazeComponent.extendComponent({
onCreated() {
Meteor.subscribe('accessibilitySettings');
},
...accessibilityHelpers
}).register('accessibilityHeaderBar');

View file

@ -59,8 +59,8 @@ button {
html {
font-size: 100%;
max-height: 100%;
-webkit-user-select: none;
user-select: none;
-webkit-user-select: text;
user-select: text;
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
@ -192,7 +192,7 @@ strong {
font-weight: bold;
}
p {
-webkit-user-select: none;
-webkit-user-select: text;
user-select: text;

View file

@ -0,0 +1,47 @@
.text-red {
color: #e74c3c;
}
td i.fa-lock.text-red,
li i.fa-lock.text-red {
margin-right: 5px;
}
.locked-users-table {
width: 100%;
border-collapse: collapse;
margin: 15px 0;
}
.locked-users-table th,
.locked-users-table td {
padding: 8px;
text-align: left;
border-bottom: 1px solid #ddd;
}
.locked-users-table th {
background-color: #f2f2f2;
font-weight: bold;
}
.locked-users-table tr:hover {
background-color: #f5f5f5;
}
.loading-indicator {
padding: 10px;
text-align: center;
}
.loading-indicator i {
margin-right: 5px;
}
.locked-users-settings {
padding: 0 10px;
}
button.js-unlock-all-users {
margin-bottom: 20px;
}

View file

@ -0,0 +1,175 @@
import { ReactiveCache } from '/imports/reactiveCache';
import LockoutSettings from '/models/lockoutSettings';
BlazeComponent.extendComponent({
onCreated() {
this.lockedUsers = new ReactiveVar([]);
this.isLoadingLockedUsers = new ReactiveVar(false);
// Don't load immediately to prevent unnecessary spinner
// The data will be loaded when the tab is selected in peopleBody.js switchMenu
},
refreshLockedUsers() {
// Set loading state initially, but we'll hide it if no users are found
this.isLoadingLockedUsers.set(true);
Meteor.call('getLockedUsers', (err, users) => {
if (err) {
this.isLoadingLockedUsers.set(false);
const reason = err.reason || '';
const message = `${TAPi18n.__(err.error)}\n${reason}`;
alert(message);
return;
}
// If no users are locked, don't show loading spinner and set empty array
if (!users || users.length === 0) {
this.isLoadingLockedUsers.set(false);
this.lockedUsers.set([]);
return;
}
// Format the remaining time to be more human-readable
users.forEach(user => {
if (user.remainingLockTime > 60) {
const minutes = Math.floor(user.remainingLockTime / 60);
const seconds = user.remainingLockTime % 60;
user.remainingTimeFormatted = `${minutes}m ${seconds}s`;
} else {
user.remainingTimeFormatted = `${user.remainingLockTime}s`;
}
});
this.lockedUsers.set(users);
this.isLoadingLockedUsers.set(false);
});
},
unlockUser(event) {
const userId = $(event.currentTarget).data('user-id');
if (!userId) return;
if (confirm(TAPi18n.__('accounts-lockout-confirm-unlock'))) {
Meteor.call('unlockUser', userId, (err, result) => {
if (err) {
const reason = err.reason || '';
const message = `${TAPi18n.__(err.error)}\n${reason}`;
alert(message);
return;
}
if (result) {
alert(TAPi18n.__('accounts-lockout-user-unlocked'));
this.refreshLockedUsers();
}
});
}
},
unlockAllUsers() {
if (confirm(TAPi18n.__('accounts-lockout-confirm-unlock-all'))) {
Meteor.call('unlockAllUsers', (err, result) => {
if (err) {
const reason = err.reason || '';
const message = `${TAPi18n.__(err.error)}\n${reason}`;
alert(message);
return;
}
if (result) {
alert(TAPi18n.__('accounts-lockout-user-unlocked'));
this.refreshLockedUsers();
}
});
}
},
saveLockoutSettings() {
// Get values from form
const knownFailuresBeforeLockout = parseInt($('#known-failures-before-lockout').val(), 10) || 3;
const knownLockoutPeriod = parseInt($('#known-lockout-period').val(), 10) || 60;
const knownFailureWindow = parseInt($('#known-failure-window').val(), 10) || 15;
const unknownFailuresBeforeLockout = parseInt($('#unknown-failures-before-lockout').val(), 10) || 3;
const unknownLockoutPeriod = parseInt($('#unknown-lockout-period').val(), 10) || 60;
const unknownFailureWindow = parseInt($('#unknown-failure-window').val(), 10) || 15;
// Update the database
LockoutSettings.update('known-failuresBeforeLockout', {
$set: { value: knownFailuresBeforeLockout },
});
LockoutSettings.update('known-lockoutPeriod', {
$set: { value: knownLockoutPeriod },
});
LockoutSettings.update('known-failureWindow', {
$set: { value: knownFailureWindow },
});
LockoutSettings.update('unknown-failuresBeforeLockout', {
$set: { value: unknownFailuresBeforeLockout },
});
LockoutSettings.update('unknown-lockoutPeriod', {
$set: { value: unknownLockoutPeriod },
});
LockoutSettings.update('unknown-failureWindow', {
$set: { value: unknownFailureWindow },
});
// Reload the AccountsLockout configuration
Meteor.call('reloadAccountsLockout', (err, ret) => {
if (!err && ret) {
const message = TAPi18n.__('accounts-lockout-settings-updated');
alert(message);
} else {
const reason = err?.reason || '';
const message = `${TAPi18n.__(err?.error || 'error-updating-settings')}\n${reason}`;
alert(message);
}
});
},
knownFailuresBeforeLockout() {
return LockoutSettings.findOne('known-failuresBeforeLockout')?.value || 3;
},
knownLockoutPeriod() {
return LockoutSettings.findOne('known-lockoutPeriod')?.value || 60;
},
knownFailureWindow() {
return LockoutSettings.findOne('known-failureWindow')?.value || 15;
},
unknownFailuresBeforeLockout() {
return LockoutSettings.findOne('unknown-failuresBeforeLockout')?.value || 3;
},
unknownLockoutPeriod() {
return LockoutSettings.findOne('unknown-lockoutPeriod')?.value || 60;
},
unknownFailureWindow() {
return LockoutSettings.findOne('unknown-failureWindow')?.value || 15;
},
lockedUsers() {
return this.lockedUsers.get();
},
isLoadingLockedUsers() {
return this.isLoadingLockedUsers.get();
},
events() {
return [
{
'click button.js-refresh-locked-users': this.refreshLockedUsers,
'click button#refreshLockedUsers': this.refreshLockedUsers,
'click button.js-unlock-user': this.unlockUser,
'click button.js-unlock-all-users': this.unlockAllUsers,
'click button.js-lockout-save': this.saveLockoutSettings,
},
];
},
}).register('lockedUsersGeneral');

View file

@ -89,3 +89,94 @@ table tr:nth-child(even) {
#deleteAction {
margin-left: 5% !important;
}
.divLockedUsersFilter {
display: flex;
align-items: center;
margin: 0 15px;
}
.divLockedUsersFilter .flex-container {
display: flex;
align-items: center;
gap: 8px;
}
.divLockedUsersFilter .people-filter {
margin-bottom: 0;
color: #777;
line-height: 34px;
}
.divLockedUsersFilter .user-filter {
border: 1px solid #ccc;
border-radius: 2px;
padding: 4px 8px;
background-color: white;
}
.unlock-all-btn {
margin-left: 15px;
background-color: white;
color: #4d4d4d;
border: 1px solid rgba(0,0,0,.15);
border-radius: 2px;
padding: 0 10px;
cursor: pointer;
display: flex;
align-items: center;
gap: 5px;
height: 28px;
min-width: 90px;
/* box-shadow: 0 1px 6px rgba(0,0,0,.3); */
}
.unlock-all-btn:hover {
background-color: #f2f2f2;
}
.account-active-status {
width: 20px;
text-align: center;
}
.js-toggle-active-status {
cursor: pointer;
}
.unlock-all-success {
position: fixed;
top: 10%;
left: 50%;
transform: translateX(-50%);
background-color: #27ae60;
color: white;
padding: 10px 20px;
border-radius: 4px;
z-index: 9999;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
animation: fadeOut 3s ease-in forwards;
}
@keyframes fadeOut {
0% { opacity: 1; }
70% { opacity: 1; }
100% { opacity: 0; }
}
.account-status {
width: 20px;
text-align: center;
}
.text-green {
color: #27ae60;
}
.js-toggle-lock-status {
cursor: pointer;
}
.unlock-all-btn .fa {
color: #4d4d4d;
}

View file

@ -38,12 +38,28 @@ template(name="people")
button#searchButton
i.fa.fa-search
| {{_ 'search'}}
.divLockedUsersFilter
.flex-container
span.people-filter {{_ 'admin-people-filter-show'}}
select.user-filter#userFilterSelect
option(value="all") {{_ 'admin-people-filter-all'}}
option(value="locked") {{_ 'admin-people-filter-locked'}}
option(value="active") {{_ 'admin-people-filter-active'}}
option(value="inactive") {{_ 'admin-people-filter-inactive'}}
button#unlockAllUsers.unlock-all-btn
i.fa.fa-unlock
| {{_ 'accounts-lockout-unlock-all'}}
.ext-box-right
span {{#unless isMiniScreen}}{{_ 'people-number'}}{{/unless}} #{peopleNumber}
.divAddOrRemoveTeam#divAddOrRemoveTeam
button#addOrRemoveTeam
i.fa.fa-edit
| {{_ 'add'}} / {{_ 'delete'}} {{_ 'teams'}}
else if lockedUsersSetting.get
span
i.fa.fa-lock.text-red
unless isMiniScreen
| {{_ 'accounts-lockout-locked-users'}}
.content-body
.side-menu
@ -60,6 +76,10 @@ template(name="people")
a.js-people-menu(data-id="people-setting")
i.fa.fa-user
| {{_ 'people'}}
li
a.js-locked-users-menu(data-id="locked-users-setting")
i.fa.fa-lock.text-red
| {{_ 'accounts-lockout-locked-users'}}
.main-body
if loading.get
+spinner
@ -69,6 +89,8 @@ template(name="people")
+teamGeneral
else if peopleSetting.get
+peopleGeneral
else if lockedUsersSetting.get
+lockedUsersGeneral
template(name="orgGeneral")
@ -114,6 +136,8 @@ template(name="peopleGeneral")
tr
th
+selectAllUser
th {{_ 'accounts-lockout-status'}}
th {{_ 'admin-people-active-status'}}
th {{_ 'username'}}
th {{_ 'fullname'}}
th {{_ 'initials'}}
@ -232,8 +256,20 @@ template(name="peopleRow")
else
td
input.selectUserChkBox(type="checkbox", id="{{userData._id}}")
td.account-status
if isUserLocked
i.fa.fa-lock.text-red.js-toggle-lock-status(data-user-id=userData._id, data-is-locked="true", title="{{_ 'accounts-lockout-click-to-unlock'}}")
else
i.fa.fa-unlock.text-green.js-toggle-lock-status(data-user-id=userData._id, data-is-locked="false", title="{{_ 'accounts-lockout-user-unlocked'}}")
td.account-active-status
if userData.loginDisabled
i.fa.fa-ban.text-red.js-toggle-active-status(data-user-id=userData._id, data-is-active="false", title="{{_ 'admin-people-user-inactive'}}")
else
i.fa.fa-check-circle.text-green.js-toggle-active-status(data-user-id=userData._id, data-is-active="true", title="{{_ 'admin-people-user-active'}}")
if userData.loginDisabled
td.username <s>{{ userData.username }}</s>
else if isUserLocked
td.username {{ userData.username }}
else
td.username {{ userData.username }}
if userData.loginDisabled
@ -645,3 +681,32 @@ template(name="settingsUserPopup")
// that does now remove member from board, card members and assignees correctly,
// but that should be used to remove user from all boards similarly
// - wekan/models/users.js Delete is not enabled
template(name="lockedUsersGeneral")
.locked-users-settings
h3 {{_ 'accounts-lockout-settings'}}
p {{_ 'accounts-lockout-info'}}
h4 {{_ 'accounts-lockout-known-users'}}
.title {{_ 'accounts-lockout-failures-before'}}
.form-group
input.wekan-form-control#known-failures-before-lockout(type="number", min="1", max="10", placeholder="3" value="{{knownFailuresBeforeLockout}}")
.title {{_ 'accounts-lockout-period'}}
.form-group
input.wekan-form-control#known-lockout-period(type="number", min="10", max="600", placeholder="60" value="{{knownLockoutPeriod}}")
.title {{_ 'accounts-lockout-failure-window'}}
.form-group
input.wekan-form-control#known-failure-window(type="number", min="1", max="60", placeholder="15" value="{{knownFailureWindow}}")
h4 {{_ 'accounts-lockout-unknown-users'}}
.title {{_ 'accounts-lockout-failures-before'}}
.form-group
input.wekan-form-control#unknown-failures-before-lockout(type="number", min="1", max="10", placeholder="3" value="{{unknownFailuresBeforeLockout}}")
.title {{_ 'accounts-lockout-period'}}
.form-group
input.wekan-form-control#unknown-lockout-period(type="number", min="10", max="600", placeholder="60" value="{{unknownLockoutPeriod}}")
.title {{_ 'accounts-lockout-failure-window'}}
.form-group
input.wekan-form-control#unknown-failure-window(type="number", min="1", max="60", placeholder="15" value="{{unknownFailureWindow}}")
button.js-lockout-save.primary {{_ 'save'}}

View file

@ -1,4 +1,5 @@
import { ReactiveCache } from '/imports/reactiveCache';
import LockoutSettings from '/models/lockoutSettings';
const orgsPerPage = 25;
const teamsPerPage = 25;
@ -14,14 +15,16 @@ BlazeComponent.extendComponent({
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
this.orgSetting = new ReactiveVar(true);
this.teamSetting = new ReactiveVar(true);
this.peopleSetting = new ReactiveVar(true);
this.teamSetting = new ReactiveVar(false);
this.peopleSetting = new ReactiveVar(false);
this.lockedUsersSetting = new ReactiveVar(false);
this.findOrgsOptions = new ReactiveVar({});
this.findTeamsOptions = new ReactiveVar({});
this.findUsersOptions = new ReactiveVar({});
this.numberOrgs = new ReactiveVar(0);
this.numberTeams = new ReactiveVar(0);
this.numberPeople = new ReactiveVar(0);
this.userFilterType = new ReactiveVar('all');
this.page = new ReactiveVar(1);
this.loadNextPageLocked = false;
@ -92,6 +95,34 @@ BlazeComponent.extendComponent({
this.filterPeople();
}
},
'change #userFilterSelect'(event) {
const filterType = $(event.target).val();
this.userFilterType.set(filterType);
this.filterPeople();
},
'click #unlockAllUsers'(event) {
event.preventDefault();
if (confirm(TAPi18n.__('accounts-lockout-confirm-unlock-all'))) {
Meteor.call('unlockAllUsers', (error) => {
if (error) {
console.error('Error unlocking all users:', error);
} else {
// Show a brief success message
const message = document.createElement('div');
message.className = 'unlock-all-success';
message.textContent = TAPi18n.__('accounts-lockout-all-users-unlocked');
document.body.appendChild(message);
// Remove the message after a short delay
setTimeout(() => {
if (message.parentNode) {
message.parentNode.removeChild(message);
}
}, 3000);
}
});
}
},
'click #newOrgButton'() {
Popup.open('newOrg');
},
@ -104,23 +135,50 @@ BlazeComponent.extendComponent({
'click a.js-org-menu': this.switchMenu,
'click a.js-team-menu': this.switchMenu,
'click a.js-people-menu': this.switchMenu,
'click a.js-locked-users-menu': this.switchMenu,
},
];
},
filterPeople() {
const value = $('#searchInput').first().val();
if (value === '') {
this.findUsersOptions.set({});
} else {
const filterType = this.userFilterType.get();
const currentTime = Number(new Date());
let query = {};
// Apply text search filter if there's a search value
if (value !== '') {
const regex = new RegExp(value, 'i');
this.findUsersOptions.set({
query = {
$or: [
{ username: regex },
{ 'profile.fullname': regex },
{ 'emails.address': regex },
],
});
};
}
// Apply filter based on selected option
switch (filterType) {
case 'locked':
// Show only locked users
query['services.accounts-lockout.unlockTime'] = { $gt: currentTime };
break;
case 'active':
// Show only active users (loginDisabled is false or undefined)
query['loginDisabled'] = { $ne: true };
break;
case 'inactive':
// Show only inactive users (loginDisabled is true)
query['loginDisabled'] = true;
break;
case 'all':
default:
// Show all users, no additional filter
break;
}
this.findUsersOptions.set(query);
},
loadNextPage() {
if (this.loadNextPageLocked === false) {
@ -186,6 +244,16 @@ BlazeComponent.extendComponent({
this.orgSetting.set('org-setting' === targetID);
this.teamSetting.set('team-setting' === targetID);
this.peopleSetting.set('people-setting' === targetID);
this.lockedUsersSetting.set('locked-users-setting' === targetID);
// When switching to locked users tab, refresh the locked users list
if ('locked-users-setting' === targetID) {
// Find the lockedUsersGeneral component and call refreshLockedUsers
const lockedUsersComponent = Blaze.getView($('.main-body')[0])._templateInstance;
if (lockedUsersComponent && lockedUsersComponent.refreshLockedUsers) {
lockedUsersComponent.refreshLockedUsers();
}
}
}
},
}).register('people');
@ -206,8 +274,36 @@ Template.peopleRow.helpers({
userData() {
return ReactiveCache.getUser(this.userId);
},
isUserLocked() {
const user = ReactiveCache.getUser(this.userId);
if (!user) return false;
// Check if user has accounts-lockout with unlockTime property
if (user.services &&
user.services['accounts-lockout'] &&
user.services['accounts-lockout'].unlockTime) {
// Check if unlockTime is in the future
const currentTime = Number(new Date());
return user.services['accounts-lockout'].unlockTime > currentTime;
}
return false;
}
});
// Initialize filter dropdown
Template.people.rendered = function() {
const template = this;
// Set the initial value of the dropdown
Tracker.afterFlush(function() {
if (template.findAll('#userFilterSelect').length) {
$('#userFilterSelect').val('all');
}
});
};
Template.editUserPopup.onCreated(function () {
this.authenticationMethods = new ReactiveVar([]);
this.errorMessage = new ReactiveVar('');
@ -415,6 +511,49 @@ BlazeComponent.extendComponent({
else
document.getElementById("divAddOrRemoveTeam").style.display = 'none';
},
'click .js-toggle-active-status': function(ev) {
ev.preventDefault();
const userId = this.userId;
const user = ReactiveCache.getUser(userId);
if (!user) return;
// Toggle loginDisabled status
const isActive = !(user.loginDisabled === true);
// Update the user's active status
Users.update(userId, {
$set: {
loginDisabled: isActive
}
});
},
'click .js-toggle-lock-status': function(ev){
ev.preventDefault();
const userId = this.userId;
const user = ReactiveCache.getUser(userId);
if (!user) return;
// Check if user is currently locked
const isLocked = user.services &&
user.services['accounts-lockout'] &&
user.services['accounts-lockout'].unlockTime &&
user.services['accounts-lockout'].unlockTime > Number(new Date());
if (isLocked) {
// Unlock the user
Meteor.call('unlockUser', userId, (error) => {
if (error) {
console.error('Error unlocking user:', error);
}
});
} else {
// Lock the user - this is optional, you may want to only allow unlocking
// If you want to implement locking too, you would need a server method for it
// For now, we'll leave this as a no-op
}
},
},
];
},

View file

@ -30,10 +30,10 @@ template(name="setting")
a.js-setting-menu(data-id="announcement-setting")
i.fa.fa-bullhorn
| {{_ 'admin-announcement'}}
//li
// a.js-setting-menu(data-id="accessibility-setting")
// i.fa.fa-universal-access
// | {{_ 'accessibility'}}
li
a.js-setting-menu(data-id="accessibility-setting")
i.fa.fa-universal-access
| {{_ 'accessibility'}}
li
a.js-setting-menu(data-id="layout-setting")
i.fa.fa-object-group
@ -171,6 +171,8 @@ template(name='accountSettings')
label {{_ 'no'}}
button.js-accounts-save.primary {{_ 'save'}}
// Brute force lockout settings moved to People/Locked Users section
template(name='announcementSettings')
ul#announcement-setting.setting-detail
li
@ -189,24 +191,22 @@ template(name='announcementSettings')
template(name='accessibilitySettings')
ul#accessibility-setting.setting-detail
li
a(href="/accessibility" style="text-decoration: underline; color: blue;") {{_ 'accessibility'}}
li
a.flex.js-toggle-accessibility
.materialCheckBox(class="{{#if currentAccessibility.enabled}}is-checked{{/if}}")
span {{_ 'admin-accessibility-active'}}
li
.title {{_ 'accessibility-title'}}
.form-group
input.wekan-form-control#accessibility-title(type="text", placeholder="" value="{{currentSetting.accessibilityTitle}}")
span {{_ 'accessibility-page-enabled'}}
li
.accessibility-content(class="{{#if currentAccessibility.enabled}}{{else}}hide{{/if}}")
ul
li
.title {{_ 'admin-accessibility-title'}}
textarea#admin-accessibility.wekan-form-control= currentAccessibility.accessibilityTitle
.title {{_ 'accessibility-title'}}
textarea#admin-accessibility-title.wekan-form-control= currentAccessibility.title
li
.title {{_ 'admin-accessibility-content'}}
textarea#admin-accessibility.wekan-form-control= currentAccessibility.accessibilityContent
.title {{_ 'accessibility-content'}}
textarea#admin-accessibility-content.wekan-form-control= currentAccessibility.body
li
button.js-accessibility-save.primary {{_ 'save'}}

View file

@ -1,6 +1,7 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
import { ALLOWED_WAIT_SPINNERS } from '/config/const';
import LockoutSettings from '/models/lockoutSettings';
BlazeComponent.extendComponent({
onCreated() {
@ -12,6 +13,7 @@ BlazeComponent.extendComponent({
this.accountSetting = new ReactiveVar(false);
this.tableVisibilityModeSetting = new ReactiveVar(false);
this.announcementSetting = new ReactiveVar(false);
this.accessibilitySetting = new ReactiveVar(false);
this.layoutSetting = new ReactiveVar(false);
this.webhookSetting = new ReactiveVar(false);
@ -20,7 +22,9 @@ BlazeComponent.extendComponent({
Meteor.subscribe('accountSettings');
Meteor.subscribe('tableVisibilityModeSettings');
Meteor.subscribe('announcements');
Meteor.subscribe('accessibilitySettings');
Meteor.subscribe('globalwebhooks');
Meteor.subscribe('lockoutSettings');
},
setError(error) {
@ -106,6 +110,7 @@ BlazeComponent.extendComponent({
this.emailSetting.set('email-setting' === targetID);
this.accountSetting.set('account-setting' === targetID);
this.announcementSetting.set('announcement-setting' === targetID);
this.accessibilitySetting.set('accessibility-setting' === targetID);
this.layoutSetting.set('layout-setting' === targetID);
this.webhookSetting.set('webhook-setting' === targetID);
this.tableVisibilityModeSetting.set('tableVisibilityMode-setting' === targetID);
@ -242,7 +247,6 @@ BlazeComponent.extendComponent({
const displayAuthenticationMethod =
$('input[name=displayAuthenticationMethod]:checked').val() === 'true';
const defaultAuthenticationMethod = $('#defaultAuthenticationMethod').val();
/*
const accessibilityPageEnabled = $('input[name=accessibilityPageEnabled]:checked').val() === 'true';
const accessibilityTitle = $('#accessibility-title')
.val()
@ -250,7 +254,6 @@ BlazeComponent.extendComponent({
const accessibilityContent = $('#accessibility-content')
.val()
.trim();
*/
const spinnerName = $('#spinnerName').val();
try {
@ -274,13 +277,11 @@ BlazeComponent.extendComponent({
oidcBtnText,
mailDomainName,
legalNotice,
},
});
/*
accessibilityPageEnabled,
accessibilityTitle,
accessibilityContent,
*/
},
});
} catch (e) {
return;
} finally {
@ -317,7 +318,6 @@ BlazeComponent.extendComponent({
'click a.js-toggle-hide-logo': this.toggleHideLogo,
'click a.js-toggle-hide-card-counter-list': this.toggleHideCardCounterList,
'click a.js-toggle-hide-board-member-list': this.toggleHideBoardMemberList,
'click a.js-toggle-accessibility-page-enabled': this.toggleAccessibilityPageEnabled,
'click button.js-save-layout': this.saveLayout,
'click a.js-toggle-display-authentication-method': this
.toggleDisplayAuthenticationMethod,
@ -344,15 +344,23 @@ BlazeComponent.extendComponent({
$set: { booleanValue: allowUserDelete },
});
},
// Brute force lockout settings method moved to lockedUsersBody.js
allowEmailChange() {
return AccountSettings.findOne('accounts-allowEmailChange').booleanValue;
return AccountSettings.findOne('accounts-allowEmailChange')?.booleanValue || false;
},
allowUserNameChange() {
return AccountSettings.findOne('accounts-allowUserNameChange').booleanValue;
return AccountSettings.findOne('accounts-allowUserNameChange')?.booleanValue || false;
},
allowUserDelete() {
return AccountSettings.findOne('accounts-allowUserDelete').booleanValue;
return AccountSettings.findOne('accounts-allowUserDelete')?.booleanValue || false;
},
// Lockout settings helper methods moved to lockedUsersBody.js
allBoardsHideActivities() {
Meteor.call('setAllBoardsHideActivities', (err, ret) => {
if (!err && ret) {
@ -469,6 +477,59 @@ BlazeComponent.extendComponent({
},
}).register('announcementSettings');
BlazeComponent.extendComponent({
onCreated() {
this.loading = new ReactiveVar(false);
},
setLoading(w) {
this.loading.set(w);
},
currentAccessibility() {
return AccessibilitySettings.findOne();
},
saveAccessibility() {
const title = $('#admin-accessibility-title')
.val()
.trim();
const content = $('#admin-accessibility-content')
.val()
.trim();
AccessibilitySettings.update(AccessibilitySettings.findOne()._id, {
$set: {
title: title,
body: content
},
});
},
toggleAccessibility() {
this.setLoading(true);
const accessibilitySetting = this.currentAccessibility();
const isActive = accessibilitySetting.enabled;
AccessibilitySettings.update(accessibilitySetting._id, {
$set: { enabled: !isActive },
});
this.setLoading(false);
if (isActive) {
$('.accessibility-content').slideUp();
} else {
$('.accessibility-content').slideDown();
}
},
events() {
return [
{
'click a.js-toggle-accessibility': this.toggleAccessibility,
'click button.js-accessibility-save': this.saveAccessibility,
},
];
},
}).register('accessibilitySettings');
Template.selectAuthenticationMethod.onCreated(function() {
this.authenticationMethods = new ReactiveVar([]);

View file

@ -106,7 +106,7 @@
top: 7px;
font-size: 1em;
line-height: 1.6em;
color: #999;
color: #000;
}
.sidebar .sidebar-shortcuts .sidebar-btn {
margin-left: 3px;
@ -146,6 +146,23 @@
font-size: 24px;
transition: transform 0.5s;
}
.sidebar-accessibility {
color: #4d4d4d;
padding: 5px 10px;
display: flex;
align-items: center;
text-decoration: none;
border-radius: 3px;
cursor: pointer;
margin-left: auto;
margin-right: 30px;
}
.sidebar-accessibility:hover {
background-color: #d9d9d9;
}
.sidebar-accessibility span {
margin-left: 5px;
}
.board-sidebar.is-open .sidebar-tongue {
left: -28px;
}

View file

@ -12,6 +12,10 @@ template(name="sidebar")
a.sidebar-btn.js-keyboard-shortcuts-toggle(
title="{{#if isKeyboardShortcuts}}{{_ 'keyboard-shortcuts-enabled'}}{{else}}{{_ 'keyboard-shortcuts-disabled'}}{{/if}}")
i.fa(class="fa-solid fa-{{#if isKeyboardShortcuts}}check-square-o{{else}}ban{{/if}}")
if isAccessibilityEnabled
a.sidebar-accessibility
i.fa.fa-universal-access
span {{_ 'accessibility'}}
a.sidebar-xmark.js-close-sidebar &#10005;
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar

View file

@ -26,6 +26,9 @@ BlazeComponent.extendComponent({
this._hideCardCounterList = new ReactiveVar(false);
this._hideBoardMemberList = new ReactiveVar(false);
Sidebar = this;
// Subscribe to accessibility settings
Meteor.subscribe('accessibilitySettings');
},
onDestroyed() {
@ -115,6 +118,11 @@ BlazeComponent.extendComponent({
return user && user.isVerticalScrollbars();
},
isAccessibilityEnabled() {
const setting = AccessibilitySettings.findOne({});
return setting && setting.enabled;
},
events() {
return [
{
@ -145,6 +153,10 @@ BlazeComponent.extendComponent({
'click .js-show-week-of-year-toggle'() {
ReactiveCache.getCurrentUser().toggleShowWeekOfYear();
},
'click .sidebar-accessibility'() {
FlowRouter.go('accessibility');
Sidebar.toggle();
},
'click .js-close-sidebar'() {
Sidebar.toggle()
},

View file

@ -83,8 +83,7 @@ export class DatePicker extends BlazeComponent {
{
'keyup .js-date-field'() {
// parse for localized date format in strict mode
const normalizedValue = Utils.normalizeDigits(this.find('#date').value);
const dateMoment = moment(normalizedValue, 'L', true);
const dateMoment = moment(this.find('#date').value, 'L', true);
if (dateMoment.isValid()) {
this.error.set('');
this.$('.js-datepicker').datepicker('update', dateMoment.toDate());
@ -92,10 +91,9 @@ export class DatePicker extends BlazeComponent {
},
'keyup .js-time-field'() {
// parse for localized time format in strict mode
const normalizedValue = Utils.normalizeDigits(this.find('#time').value);
const dateMoment = moment(
normalizedValue,
adjustedTimeFormat(),
this.find('#time').value,
adjustedTimeFormat(),
true,
);
if (dateMoment.isValid()) {
@ -106,14 +104,12 @@ export class DatePicker extends BlazeComponent {
evt.preventDefault();
// if no time was given, init with 12:00
const timeValue = Utils.normalizeDigits(evt.target.time.value);
const time =
timeValue ||
moment(new Date().setHours(12, 0, 0)).format('LT');
evt.target.time.value ||
moment(new Date().setHours(12, 0, 0)).format('LT');
const newTime = moment(time, adjustedTimeFormat(), true);
const dateValue = Utils.normalizeDigits(evt.target.date.value);
const newDate = moment(dateValue, 'L', true);
const dateString = `${dateValue} ${time}`;
const newDate = moment(evt.target.date.value, 'L', true);
const dateString = `${evt.target.date.value} ${time}`;
const newCompleteDate = moment(
dateString,
`L ${adjustedTimeFormat()}`,

View file

@ -11,17 +11,6 @@ Utils = {
currentBoard.setColor(currentBoard["background-color"]);
}
},
// Normalize non-Western (Persian/Arabic) digits to Western Arabic (0-9)
// This helps with date parsing in non-English languages
normalizeDigits(str) {
if (!str) return str;
const persian = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabic = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
for (let i = 0; i < 10; i++) {
str = str.replace(persian[i], i).replace(arabic[i], i);
}
return str;
},
/** returns the current board id
* <li> returns the current board id or the board id of the popup card if set
*/

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/wiki/Adding-users
# https://github.com/wekan/wekan/blob/main/docs/Login/Adding-users.md
#---------------------------------------------------------------------------------------------------------
# ==== FORGOT PASSWORD ====
# https://github.com/wekan/wekan/wiki/Forgot-Password
# https://github.com/wekan/wekan/blob/main/docs/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/wiki/Backup
# see https://github.com/wekan/wekan/tree/main/docs/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/wiki/Backup
# https://github.com/wekan/wekan/tree/main/docs/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
@ -89,7 +89,7 @@ services:
wekandb:
#-------------------------------------------------------------------------------------
# ==== MONGODB FROM DOCKER HUB ====
image: mongo:6
image: mongo:7
#-------------------------------------------------------------------------------------
container_name: wekan-db
restart: always
@ -183,7 +183,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/wiki/Troubleshooting-Mail
# see https://github.com/wekan/wekan/blob/main/docs/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
@ -228,7 +228,7 @@ services:
#- APM_APP_SECRET=
#---------------------------------------------------------------
# ==== OPTIONAL: LOGS AND STATS ====
# https://github.com/wekan/wekan/wiki/Logs
# https://github.com/wekan/wekan/blob/main/docs/Features/Logs.md
#
# Daily export of Wekan changes as JSON to Logstash and ElasticSearch / Kibana (ELK)
# https://github.com/wekan/wekan-logstash
@ -252,7 +252,7 @@ services:
#---------------------------------------------------------------
# ==== WEKAN API AND EXPORT BOARD ====
# Wekan Export Board works when WITH_API=true.
# https://github.com/wekan/wekan/wiki/REST-API
# https://github.com/wekan/wekan/blob/main/docs/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
@ -361,7 +361,7 @@ services:
#- TRUSTED_URL=https://intra.example.com
#-----------------------------------------------------------------
# ==== METRICS ALLOWED IP ADDRESSES ====
# https://github.com/wekan/wekan/wiki/Metrics
# https://github.com/wekan/wekan/blob/main/docs/Features/Metrics.md
#- METRICS_ALLOWED_IP_ADDRESSES=192.168.0.100,192.168.0.200
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
@ -372,14 +372,14 @@ services:
#- DEBUG=true
#---------------------------------------------
# ==== AUTOLOGIN WITH OIDC/OAUTH2 ====
# https://github.com/wekan/wekan/wiki/autologin
# https://github.com/wekan/wekan/blob/main/docs/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/wiki/Azure
# https://github.com/wekan/wekan/blob/main/docs/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
@ -437,7 +437,7 @@ services:
#- OAUTH2_EMAIL_MAP=email
#-----------------------------------------------------------------
# ==== OAUTH2 KEYCLOAK ====
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
# https://github.com/wekan/wekan/blob/main/docs/Login/Keycloak/Keycloak.md <== MAPPING INFO, REQUIRED
#- OAUTH2_ENABLED=true
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
@ -454,10 +454,10 @@ services:
#-----------------------------------------------------------------
# ==== OAUTH2 DOORKEEPER ====
# https://github.com/wekan/wekan/issues/1874
# https://github.com/wekan/wekan/wiki/OAuth2
# https://github.com/wekan/wekan/blob/main/docs/Login/OAuth2.md2
# Enable the OAuth2 connection
#- OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
# OAuth2 docs: https://github.com/wekan/wekan/blob/main/docs/Login/OAuth2.md
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# OAuth2 Client ID.
@ -486,8 +486,8 @@ services:
#- OAUTH2_EMAIL_MAP=
#-----------------------------------------------------------------
# ==== LDAP: UNCOMMENT ALL TO ENABLE LDAP ====
# https://github.com/wekan/wekan/wiki/LDAP
# For Snap settings see https://github.com/wekan/wekan-snap/wiki/Supported-settings-keys
# 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
# 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.
#

View file

@ -40,7 +40,7 @@ Optional, and defaults:
- "permission":"private" <== Set to "public" if you want public Wekan board
- "color":"belize" <== Board color: belize, nephritis, pomegranate, pumpkin, wisteria, midnight.
<img src="https://wekan.github.io/board-colors.png" width="40%" alt="Wekan logo" />
<img src="https://wekan.fi/board-colors.png" width="40%" alt="Wekan logo" />
Example:
```

View file

@ -28,6 +28,6 @@ https://github.com/wekan/wekan/blob/main/api.py
### 4) API Docs
https://wekan.github.io/api/
https://wekan.fi/api/
Building API Docs: https://github.com/wekan/wekan/blob/main/releases/rebuild-docs.sh

View file

@ -2,10 +2,10 @@
https://github.com/wekan/wekan/wiki/REST-API#example-call---as-form-data
2) There needs to be Custom Field added to board
https://wekan.github.io/api/v4.42/#wekan-rest-api-customfields
https://wekan.fi/api/v4.42/#wekan-rest-api-customfields
3) Custom Field at board and card will have same `_id`
https://wekan.github.io/api/v4.42/#put_board_list_card
https://wekan.fi/api/v4.42/#put_board_list_card
4) When writing Custom Field value to card, like text field, content type needs to be "application/json" and the string needs to be an array:
```

View file

@ -3,7 +3,7 @@ Wekan provides a python script to ease the call of the REST API from command lin
# Context
- [API Login to get Bearer token](REST-API#example-call---as-form-data)
- [API docs and examples for various programming languages](https://wekan.github.io/api/), there is Boards / Export for exporting board with API
- [API docs and examples for various programming languages](https://wekan.fi/api/), there is Boards / Export for exporting board with API
- In the right menu, scroll down REST API Docs etc links =====>
- Wekan-Gogs integration with Node.js https://github.com/wekan/wekan-gogs

View file

@ -4,7 +4,7 @@ BoardAdmin can change role of user at right sidebar / click avatar / select role
# Change Role with API
- https://wekan.github.io/api/
- https://wekan.fi/api/
- api.py at https://github.com/wekan/wekan
- Login to API https://github.com/wekan/wekan/wiki/REST-API#example-call---as-json

View file

@ -137,11 +137,11 @@ https://nosqlbooster.com/downloads
### At server where Wekan Snap is installed, MongoDB is running at localhost port 27019
<img src="https://wekan.github.io/nosqlbooster-basic-connection.png" width="60%" alt="Wekan logo" />
<img src="https://wekan.fi/nosqlbooster-basic-connection.png" width="60%" alt="Wekan logo" />
### You can tunnel via SSH to server, using password auth or private key auth dropdown selection
<img src="https://wekan.github.io/nosqlbooster-ssh-tunnel.png" width="60%" alt="Wekan logo" />
<img src="https://wekan.fi/nosqlbooster-ssh-tunnel.png" width="60%" alt="Wekan logo" />
# Scheduled backups to local or remote server

View file

@ -32,15 +32,15 @@ Instead of filesystem, Rclone mounted cloud filesystem directory can be used, li
Note: In some cases, only buttons `Move all attachments` at top are visible. In some other cases, there is more visible, like moving all attachments of board, etc, maybe when some have been already moved.
<img src="https://wekan.github.io/rclone/wekan-admin-panel.png" width="100%" alt="Wekan Admin Panel file move" />
<img src="https://wekan.fi/rclone/wekan-admin-panel.png" width="100%" alt="Wekan Admin Panel file move" />
## Screenshot 2: Files at MinIO after moving all to filesystem
<img src="https://wekan.github.io/rclone/minio1.png" width="100%" alt="MinIO 1" />
<img src="https://wekan.fi/rclone/minio1.png" width="100%" alt="MinIO 1" />
## Screenshot 3: Files at MinIO after moving all to filesystem
<img src="https://wekan.github.io/rclone/minio2.png" width="100%" alt="MinIO 2" />
<img src="https://wekan.fi/rclone/minio2.png" width="100%" alt="MinIO 2" />
## Rclone config

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -24,7 +24,7 @@ https://github.com/wekan/wekan/issues/5073
At step 12 below is actual repair MongoDB command.
Some customer of [WeKan Commercial Support](https://wekan.team/commercial-support/) ordered restore and repair of WeKan MongoDB database at UCS appliance. This was needed when changing back to previous UCS 4.x major version, when in new major UCS 5.x version Docker containers were all the time crashing and restarting, or something else got broken. Here are commands that were used while repairing.
Some customer of [WeKan Commercial Support](https://wekan.fi/commercial-support/) ordered restore and repair of WeKan MongoDB database at UCS appliance. This was needed when changing back to previous UCS 4.x major version, when in new major UCS 5.x version Docker containers were all the time crashing and restarting, or something else got broken. Here are commands that were used while repairing.
Similarly, MongoDB may require repair, if:
- MongoDB does not recover from sudden power failure cleanly

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

View file

@ -18,13 +18,14 @@ Any telemetry at any Firefox based browser can be additionally most locked down
Browser | [PWA](PWA) | Mobile | Desktop | OS
------- | ----| ------ | ------- | -------
[uWolf](https://open-store.io/app/uwolf.chromiumos-guy) | No | Yes | No | Ubuntu Touch webbrowser based of LibreWolf
[LibreWolf](https://librewolf.net) | No | No | Yes | [Win/Mac/Linux](https://librewolf.net/installation/), [Repos](https://codeberg.org/librewolf)
[Mypal](https://github.com/reactosapps/apps/releases/download/0.01/mypal-27.9.4.win32.installer.exe) | No | No | Newest | For 32bit ReactOS/WinXP/Win7/etc [issue](https://github.com/wekan/wekan/issues/3132)
Firefox | No | Newest | Newest | iOS/Android/Win/Mac/Linux/BSD/RasPi. At iOS uses Safari engine, elsewhere Firefox engine. [Haiku](https://discuss.haiku-os.org/t/progress-on-porting-firefox/13493/143) not tested yet - [HN](https://news.ycombinator.com/item?id=41214762).
[Waterfox](https://www.waterfox.net) | No | No | Yes | Win/Mac/Linux, more private than Firefox, no tracking. [Repo](https://github.com/BrowserWorks/Waterfox)
[Floorp](https://floorp.app) | No | No | Yes | [Win/Mac/Linux](https://github.com/Floorp-Projects/Floorp/releases), more private than Firefox, [Repo](https://github.com/Floorp-Projects/Floorp)
[Mercury](https://thorium.rocks/mercury) | No | No | Yes | [Win/Linux](https://github.com/Alex313031/Mercury/releases), more private than Firefox, [Repo](https://github.com/Alex313031/Mercury)
[SeaLion](https://github.com/wicknix/SeaLion) | No | No | Yes | [MacOS 10.7-14.1 x32,x64,ppc,ppc64/Linux x64](https://github.com/wicknix/SeaLion/releases), [Repo](https://github.com/wicknix/SeaLion)
[LibreWolf](https://librewolf.net) | No | No | Yes | [Win/Mac/Linux](https://librewolf.net/installation/), [Repos](https://codeberg.org/librewolf)
[Zen Browser](https://www.zen-browser.app/) | No | No | Yes | [Win/Mac/Linux](https://www.zen-browser.app/download), [Repos](https://github.com/zen-browser), [Review at YouTube](https://www.youtube.com/watch?v=tKM2N4TQHQY)
## Chromium based
@ -66,6 +67,16 @@ Internet Explorer | No | No | No | No | No
- https://servo.org
- Repo: https://github.com/servo/servo
- At https://www.youtube.com/watch?v=g9hzWXxUgiU was said, that Gmail works, so maybe WeKan could also work
- This month in Servo: color inputs, SVG, embedder JavaScript, and more
- https://servo.org/blog/2025/06/18/this-month-in-servo/
- https://news.ycombinator.com/item?id=44382451
## TUI webbrowsers, not yet supported
Browser | [PWA](PWA) | Mobile | Desktop | OS
------- | ----| ------ | ------- | -------
[Chawan](https://chawan.net) | No | No | Yes | Linux/BSD. [Release 0.2.0](https://chawan.net/news/chawan-0-2-0.html), [HN](https://news.ycombinator.com/item?id=44293260)
Elinks | No | No | Yes | Win/Mac/Linux/BSD/DOS TUI.
## Ladybird based, not yet compatible with WeKan

View file

@ -1,4 +1,4 @@
[Browser compatibility matrix](Browser-compatibility-matrix)
[Browser compatibility matrix](../Browser/Browser-compatibility-matrix)
## Install your Wekan server as an app
@ -15,9 +15,9 @@
3. From Edge menu, install site as app, by clicking top right `⋮` and this menu, that can be used to install and manage/remove apps:
<img src="https://wekan.github.io/chromium-edge-install-pwa.png" width="60%" alt="Wekan logo" />
<img src="chromium-edge-install-pwa.png" width="60%" alt="Install PWA at Chromium Edge" />
4. In next popup, give name to app, like `YourCompany Wekan`, and click `Add`
4. In next popup, give name to app, like `YourCompany WeKan`, and click `Add`
5. Now new app is in your Windows Start menu.
@ -99,7 +99,7 @@ Related, for creating apps to other appstores: https://github.com/wekan/wekan/wi
6. At Play Console https://play.google.com/console/ there is `App Integrity` button in the sidemenu (highlighted blue in the screenshot) where you find required 2 SHA256 keys for Caddyfile:
![image](https://user-images.githubusercontent.com/8823093/222261921-1afc64bd-6bcf-4ba1-9620-88572162746e.png)
![image](Play-Console-App-Integrity.png)
7. Caddy uses tabs for indenting. At `/etc/caddy` you can also `caddy format > ca` to format output and forward to new file, and if it works then `mv ca Caddyfile` and validate it `caddy validate` and reload `caddy reload`. Sometimes update caddy with `caddy upgrade` and after that `caddy stop` and `caddy start`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

View file

@ -1,15 +1,39 @@
# Try FerretDB instead
https://github.com/wekan/wekan/wiki/PostgreSQL
# What was ToroDB
ToroDB was made with Java. It was about replacing MongoDB with ToroDB/PostgreSQL or ToroDB/MySQL.
ToroDB is not developed anymore.
ToroDB is compatible with MongoDB 3.0. WeKan 7.x is compatible with MongoDB 6.x.
# Try FerretDB instead
https://blog.ferretdb.io/building-project-management-stack-wekan-ferretdb/
FerretDB https://www.ferretdb.com , https://github.com/FerretDB/FerretDB is made with Go.
Why FerretDB is explained at https://docs.ferretdb.io/#why-do-we-need-ferretdb .
It is about replacing MongoDB with FerretDB/PostgreSQL,
using Microsoft DocumentDB https://github.com/microsoft/documentdb for additional compatibility.
There is old FerretDB/SQLite, community can maintain it, it's not developed currently by FerretDB:
https://github.com/FerretDB/FerretDB/tree/main-v1 .
C89 SQLite has problems with concurrency, corruption etc.
It will help when updated SQLite made with Rust
will have these issues fixed at https://github.com/tursodatabase/turso .
Turso originally had fork of C89 SQLite C89 Open Contribution based fork of SQLite
https://github.com/tursodatabase/libsql , where they added fixes, but they run into some limits,
so they then moved the Turso Rust SQLite experiment to main tursodatabase GitHub org
https://github.com/tursodatabase/turso like they say at https://www.youtube.com/watch?v=010OKqc3ObM .
Turso is using simulator like https://tigerbeetle.com https://github.com/tigerbeetle/tigerbeetle
to fix concurrency, corruption etc bugs.
So when they get rewrite done, Rust based SQLite is drop-in replacement for C89 SQLite.
It has same database syntax, etc. But it also works with high concurrent usage,
does not corrupt data like C89 SQLite, that is verified with simulator.
# Docker: Wekan to PostgreSQL read-only mirroring
* [Wekan kanban board, made with Meteor.js framework, running on
Node.js](https://wekan.github.io) -- [GitHub](https://github.com/wekan/wekan)
Node.js](https://wekan.fi) -- [GitHub](https://github.com/wekan/wekan)
* [MongoDB NoSQL database](https://www.mongodb.com)
* [ToroDB: MongoDB to PostgreSQL read-only mirroring, programmed with Java](https://www.8kdata.com/products) --
[GitHub](https://github.com/torodb/stampede) --
@ -61,4 +85,4 @@ docker-compose up -d
[GitHub issue 787](https://github.com/wekan/wekan/issues/787)
[screenshot]: https://wekan.github.io/ToroDB.png
[screenshot]: https://wekan.fi/ToroDB.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

View file

@ -0,0 +1,63 @@
## Meteor podcast about using MongoDB at unsupported CPUs
- https://www.youtube.com/watch?v=bnU9bUVeN04
- Making MongoDB working with Qemu: https://github.com/wekan/wekan/issues/4321#issuecomment-3006557279
## MongoDB Operating System Support precompiled binaries
- arm64: Only Ubuntu. No Raspberry Pi OS, Alpine Linux.
- But installing .deb packages to Raspberry Pi 5 running Raspberry OS 64bit can have hardware running cooler, than on Ubuntu.
- For anything else, see MongoDB download page.
## MongoDB CPU support
New MongoDB supports newer CPUs only, like:
- x86_64 that have AVX instructions, from MongoDB 5 and later
- ARMv8.2-A microarchitecture, from MongoDB 4.4.19, 5.0, 6.0 and later, like:
- Raspberry Pi 5
- OrangePi 5
- Apple Silicon arm64
Old MongoDB 4.4.18 supports old CPUs, like:
- Intel Core 2 Duo, CPU does not support AVX instructions
- ARMv8.0 microarchitecture, like Cortex A53/A55/A72:
- Raspberry Pi 3, Cortex-A53, https://en.wikipedia.org/wiki/Raspberry_Pi
- Raspberry Pi 4, Cortex-A72
- Orange Pi 3, https://en.wikipedia.org/wiki/Orange_Pi
Info about requiring newer arm64:
- https://www.mongodb.com/community/forums/t/mongodb-community-6-0-5-illegal-instruction-core-dumped-ubuntu-18-04-on-cortex-a72-aarch64/223970/3
Detecting does x86_64 CPU support AVX:
- https://github.com/wekan/wekan/issues/4321#issuecomment-2469332492
Error running MongoDB 8 at RasPi4, when not using Qemu:
```
December 06 11:48:49 rpi4b systemd[1]: Started mongod.service - MongoDB Database Server.
December 06 11:48:53 rpi4b mongod[3749]: /usr/bin/mongod: line 4: 3750 Illegal instruction (core dumped) /usr/bin/mongodreal --co>
December 06 11:48:53 rpi4b systemd[1]: mongod.service: Main process exited, code=exited, status=132/n/a
December 06 11:48:53 rpi4b systemd[1]: mongod.service: Failed with result 'exit-code'.
```
## a) Prebuilt binary
MongoDB 7.3.4 for RasPi4 and older:
- https://github.com/123swk123/mongodb-armv8-a/releases/tag/v7.3.4-alpha
## b) Compile MongoDB, takes a lot of time
CrossCompiling MongoDB from x86_64 to ARMv8.0 Cortex A53/A55/A72 like RasPi4 and older:
- https://github.com/123swk123/mongodb-armv8-a
Compiling MongoDB from x86_64 to x86_64 CPUs that does not have AVX instructions:
- https://github.com/GermanAizek/mongodb-without-avx/blob/main/Dockerfile
## c) Run MongoDB with Qemu, that supports newest CPU features
qemu-user can run single Linux executeable for many architectures. It does not emulate full OS like qemu-system.
Running MongoDB with Qemu on x86_64 CPU that does not support AVX, like Intel Core 2 Duo:
- https://github.com/stevekerrison/mongo-qemu-avx
Running MongoDB with Qemu on older arm64, like RasPi4 and older RasPi:
- https://github.com/xet7/simpletasks/blob/main/install-mongodb.md

View file

@ -0,0 +1,59 @@
## Meteor podcast about using MongoDB at unsupported CPUs
- https://www.youtube.com/watch?v=bnU9bUVeN04
- Making MongoDB working with Qemu: https://github.com/wekan/wekan/issues/4321#issuecomment-3006557279
## Installing MongoDB
MongoDB 8 arm64 works at M1 Air arm64 macOS and Linux.
But because MongoDB 8 core dumps at RasPi4, running it here with Qemu.
1. Install Ubuntu 24.04 arm64 for Raspberry Pi
2. Install MongoDB 8 repo for Ubuntu 24.04 arm64
3. Install deps:
```
sudo apt -y install qemu-user
```
4. Rename MongoDB to different filename:
```
sudo mv /usr/bin/mongod /usr/bin/mongodreal
```
5. Edit start scipt for Qemu MongoDB
```
sudo nano /usr/bin/mongod
```
6. Copy paste start script for Qemu MongoDB
It uses qemu-user to run MongoDB,
and passes all command line arguments to MongoDB.
```
#!/bin/bash
/usr/bin/qemu-arm64 /usr/bin/mongodreal --config /etc/mongod.conf
```
7. Save and exit nano: Ctrl-o Enter Ctrl-x Enter
8. Make script executeable
```
sudo chmod a+x /usr/bin/mongod
```
9. Start and run MongoDB
```
sudo systemctl enable mongod
sudo systemctl start mongod
```

View file

@ -1,7 +1,7 @@
## 1) Click right top your username
<img src="https://wekan.github.io/day/day_of_week_start_1.png" width="40%" alt="Day of Week Start 1" />
<img src="https://wekan.fi/day/day_of_week_start_1.png" width="40%" alt="Day of Week Start 1" />
## 2) Click Change Settings => Set day of the week start => Select first day of the week from dropdown menu
<img src="https://wekan.github.io/day/day_of_week_start_2.png" width="40%" alt="Day of Week Start 1" />
<img src="https://wekan.fi/day/day_of_week_start_2.png" width="40%" alt="Day of Week Start 1" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View file

@ -4,7 +4,7 @@ https://www.youtube.com/watch?v=ke-mbnZM3zE
## Screenshot of Meteor WeKan
<img src="https://wekan.github.io/wekan-dark-mode.png" width="100%" alt="Meteor WeKan screenshot" />
<img src="https://wekan.fi/wekan-dark-mode.png" width="100%" alt="Meteor WeKan screenshot" />
## Description of Meteor WeKan
@ -13,7 +13,7 @@ https://www.youtube.com/watch?v=ke-mbnZM3zE
- Used in most countries of the world https://snapcraft.io/wekan
- Biggest user have about 30k users, using many pods at Kubernetes
- Changelog https://github.com/wekan/wekan/blob/main/CHANGELOG.md
- Commercial Support at https://wekan.team/commercial-support/ . Currently looking who could sponsor more of maintenance and development.
- Commercial Support at https://wekan.fi/commercial-support/ . Currently looking who could sponsor more of maintenance and development.
## How much effort to create Meteor WeKan, in COCOMO model
@ -36,8 +36,8 @@ https://www.youtube.com/watch?v=ke-mbnZM3zE
- CPU: amd64, arm64, s390x, Source Bundle at https://github.com/wekan/wekan/wiki/Raspberry-Pi
- Windows On-Premise: https://github.com/wekan/wekan/wiki/Offline
- Mac: Docker, or at https://github.com/wekan/wekan/wiki/Mac
- Newest at platforms: Source Bundle, Snap Candidate, Docker, Kubernetes https://wekan.github.io
- Platforms that will be updated to be up-to-date: Snap Stable, Sandstorm, UCS https://wekan.github.io
- Newest at platforms: Source Bundle, Snap Candidate, Docker, Kubernetes https://wekan.fi
- Platforms that will be updated to be up-to-date: Snap Stable, Sandstorm, UCS https://wekan.fi
## Meteor WeKan Features
@ -102,7 +102,7 @@ https://www.youtube.com/watch?v=ke-mbnZM3zE
- Default board for users https://github.com/wekan/wekan/pull/5098
- Brute Force Accounts Lockout https://github.com/wekan/wekan/wiki/Accounts-Lockout
- Markdown, Emoji, MathML, sanitizing https://github.com/wekan/wekan/blob/main/packages/markdown/src/template-integration.js
- Many security fixes from Responsible Disclosure https://wekan.github.io/hall-of-fame/
- Many security fixes from Responsible Disclosure https://wekan.fi/hall-of-fame/
## Upcoming Features
@ -126,7 +126,7 @@ https://www.youtube.com/watch?v=ke-mbnZM3zE
- So here is The Deep Dive!
- Questions for upcoming "This Week in MeteorJS", some already mentioned to be upcoming:
- How to upgrade dependencies to Meteor 3.0 ? Some answer was to mention Meteor version at package dependency:
<img src="https://wekan.github.io/upgrade-meteor3-new.png" width="100%" alt="Meteor 3.0 upgrading dependencies" />
<img src="https://wekan.fi/upgrade-meteor3-new.png" width="100%" alt="Meteor 3.0 upgrading dependencies" />
- But what if adding dependency adds some more error messages? Probably that depends on error message, like here when
trying to upgrade to Meteor 3.0 alpha 15: https://github.com/wekan/wekan/issues/5142
- https://forums.meteor.com/t/my-journey-towards-meteor-3-0/60001/23

View file

@ -18,7 +18,7 @@
- PWA https://github.com/wekan/wekan/wiki/PWA
- On-Premise:
- Linux amd64/arm64/s390x
- https://wekan.github.io/install/
- https://wekan.fi/install/
- https://github.com/wekan/wekan/wiki/Raspberry-Pi
- Windows https://github.com/wekan/wekan/wiki/Offline
- Mac https://github.com/wekan/wekan/wiki/Mac

View file

@ -0,0 +1,48 @@
# Design: WeKan vs Trello vs Jira
### Kanban originally from Toyota paper cards
- https://en.wikipedia.org/wiki/Kanban
- Every kanban software usually implements similar features, original or inspired by some other kanban software
### WeKan copied design from Trello, then WeKan did redesign, then Trello copied design from WeKan
- WeKan has all original developed Open Source MIT licensed code, that is different than Trello propietary code.
- WeKan UI redesign was done at 2015-01-20 [after DMCA from Trello](../FAQ/FAQ.md#werent-you-called-libreboard-before)
- by original WeKan creator [mquandalle](https://github.com/mquandalle)
- [Original redesign](../FAQ/FAQ.md#werent-you-called-libreboard-before)
- by [xet7](https://github.com/xet7) current maintainer of WeKan
- [Improvements to original design](Design-Principles.md)
- [Monkey Proof Software](Monkey-Proof-Software.md)
- Then Trello started copying from original WeKan design
### Trello copied design from WeKan
Existing WeKan features
- 2025-04 Opened card has comments at right, copied from [original WeKan feature Maximize Card 2021-06-14](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v535-2021-06-14-wekan-release). Trello does not have WeKan feature Minimize Card.
- https://community.atlassian.com/forums/Trello-questions/comments-in-the-ticket-on-the-right/qaq-p/3029030
- https://community.atlassian.com/forums/Trello-questions/Trello-card-comments-now-appear-in-a-side-tab-how-to-go-back-to/qaq-p/3003380
- 2025-02 Mirror Card, copied from [original WeKan feature Linked Cards from 2018-04-18](https://github.com/wekan/wekan/pull/1592), discussed at [WeKan issue 5683](https://github.com/wekan/wekan/issues/5683)
- 2021-02 New board button position at top, copied from [original WeKan feature from 2018-09-28](../../CHANGELOG.md#v1511-2018-09-28-wekan-edge-release)
Existing WeKan ideas, that are not yet implemented in WeKan
- 2025-01-28 Sync Jira Lists to Trello, copied from [original WeKan Multiverse from 2022-07-14](https://boards.wekan.team/b/JctQEtkayWXTTJyzt/wekan-multiverse)
- 2021-02 Map Card, copied from [original WeKan feature request from 2017-01-06](https://github.com/wekan/wekan/issues/755).
News
- https://news.ycombinator.com/item?id=44821127
### Trello features, that are not yet implemented in WeKan
- 2025-05-21 Email Inbox
- 2025-02 Complete Card Checkbox: https://github.com/wekan/wekan/issues/5818
- 2021-05 Workspaces
- 2018 Butler Scheduled and Repeating Tasks: https://github.com/wekan/wekan/issues/5825 . [WeKan added IFTTT Rules at 2018-09-16](../../CHANGELOG.md#v147-2018-09-16-wekan-release), but not yet scheduled or repeating IFTTT Rules.
- 2016-12 Card Repeater PowerUp: Copy cards daily/weekly/monthly/yearly
### Jira copied design from ClickUp
- 2025-06-29 Jira has UI design copied from ClickUp, where is left sidebar menu.

View file

@ -1,3 +1,8 @@
## About AVX
If CPU does not have AVX, Snap Candidate Meteor 2 WeKan now uses qemu-user to run MongoDB, using Qemu AVX support.
This was added at [WeKan v7.93](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v793-2025-07-18-wekan--release).
## What is not Cross-Platform
- Requires CPU to support AVX
@ -99,9 +104,10 @@
## Screenshot
Supporting many more webbrowsers:
Supporting many more webbrowsers. This is now part of WeKan Wami: https://github.com/wekan/wami .
Also mentioned at https://wekan.fi/upgrade/ .
<img src="https://wekan.github.io/manybrowser.png" width="100%" alt="Multiverse WeKan screenshot" />
<img src="manybrowser.png" width="100%" alt="Multiverse WeKan screenshot" />
## Talks
@ -369,4 +375,4 @@ https://github.com/wekan/php/blob/main/page/allboardschar.php
### Ruby on Rails
- https://github.com/wekan/weror . Password register and login works, there is workspaces and dragging cards, but no user management etc features yet.
- https://github.com/wekan/weror . Password register and login works, there is workspaces and dragging cards, but no user management etc features yet.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

View file

@ -189,7 +189,7 @@ Undo from activities | No | No | Yes
Features | Wekan | Trello | Restyaboard
------------ | ------------- | ------------- | -------------
API explorer | No | No | Yes
OpenAPI | [Yes](https://github.com/wekan/wekan/tree/main/openapi) [here](https://wekan.github.io/api/) | ? | ?
OpenAPI | [Yes](https://github.com/wekan/wekan/tree/main/openapi) [here](https://wekan.fi/api/) | ? | ?
Developer applications | Yes, using REST API | Yes | Yes
Authorized OAuth applications | No, REST API [login as admin to get Bearer token](REST-API#example-call---as-form-data) | Yes | Yes
Webhooks | Yes, per board or global at Admin Panel | Yes | Yes

View file

@ -12,9 +12,9 @@ Please read the meteor style guide before making any significant contribution.
- [How realtime board updates work](https://github.com/wekan/wekan/issues/3788#issuecomment-834649553)
- [Mobile Web interface](https://github.com/wekan/wekan/issues/3566#issuecomment-778700604)
- [How to add RTL support](https://github.com/wekan/wekan/issues/3376#issuecomment-766092425)
- [How to code Part 1](https://blog.wekan.team/2019/04/howto-code-part-1-learning-to-learn/)
- [First time Wekan contributor easily figures out Wekan and develops big features](https://blog.wekan.team/2018/05/wekan-v1-00-released/)
- [Benefits of contributing your features to upstream Wekan](https://blog.wekan.team/2018/02/benefits-of-contributing-your-features-to-upstream-wekan/)
- [How to code Part 1](https://wekan.fi/blog/2019/04/howto-code-part-1-learning-to-learn/)
- [First time Wekan contributor easily figures out Wekan and develops big features](https://wekan.fi/blog/2018/05/wekan-v1-00-released/)
- [Benefits of contributing your features to upstream Wekan](https://wekan.fi/blog/2018/02/benefits-of-contributing-your-features-to-upstream-wekan/)
- [Excellent example how pull requests are improved and integrated, and not needed commits removed](https://github.com/wekan/wekan/pull/1470)
- [How to add dependency](https://github.com/wekan/wekan/discussions/5235)
- [How to add set default view feature](https://github.com/wekan/wekan/discussions/5233)

View file

@ -19,7 +19,7 @@
- TWIM 058: Building Multi Platform Mobile Apps https://www.youtube.com/watch?v=ZTtXRJTUCIU
- https://www.youtube.com/watch?v=ZTtXRJTUCIU
- https://github.com/jamauro/pwa-kit
- https://wekan.team/app/
- https://wekan.fi/app/
- https://github.com/wekan/wekan/wiki/PWA
- Over 100 icons for different platforms https://github.com/wekan/wekan/blob/main/public/site.webmanifest

View file

@ -10,7 +10,7 @@ It depends on role of user what drag drop is allowed https://github.com/wekan/we
3. Use non-drag-handle area to to view other parts of board, by dragging board up/down/left/right, without moving any icons etc.
<img src="https://wekan.github.io/dragdrop/mobile-drag-drop.png" width="40%" alt="Wekan logo" />
<img src="mobile-drag-drop.png" width="40%" alt="Mobile drag drop" />
## 2 or more external screens of desktop or mobile
@ -43,4 +43,4 @@ Reorder with drag drop:
## Touch UI ideas
- https://blog.la-terminal.net/godot-on-ipad-summer-update/
- https://news.ycombinator.com/item?id=41415077
- https://news.ycombinator.com/item?id=41415077

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -31,9 +31,9 @@ It's a very specific niche, with limited amount competitors, with all of this ap
- Permissive MIT license (if some other changes to GPL, Open Core, has https://sso.tax , is propietary etc, it's not in same niche anymore)
- Self-hosted (or SaaS)
- All code https://github.com/wekan/wekan and docs https://github.com/wekan/wekan/wiki Open Source
- Available for many OS and CPU platforms, listed at download/install section of https://wekan.github.io
- Available for many OS and CPU platforms, listed at download/install section of https://wekan.fi
- Translated to 70+ languages at https://app.transifex.com/wekan
- Has optional affordable Commercial Support for Features/Fixes/Support/Hosting available https://wekan.team/commercial-support/ that funds development of WeKan. Commercial Support provides private support chat with maintainer of WeKan.
- Has optional affordable Commercial Support for Features/Fixes/Support/Hosting available https://wekan.fi/commercial-support/ that funds development of WeKan. Commercial Support provides private support chat with maintainer of WeKan.
- Is actively maintained with major features and fixes being added
- Does not include any enabled telemetry or externally loaded dependencies by default, it does not ping home. Only Snap platform has number of servers per country counted by Canonical that provides Snap store https://snapcraft.io/wekan , not any more specific details.
- Alternative to Enterprise software that can cost 500k euro per year
@ -58,16 +58,16 @@ It's a very specific niche, with limited amount competitors, with all of this ap
## What is Wekan Team?
[Wekan Team](https://wekan.team) is Wekan Commercial Support company run by CEO [xet7](https://github.com/xet7), current maintainer of Wekan. xet7 does respond to feedback at GitHub issues very actively, because Wekan is community driven Open Source project. Because conflicting opinions can not be implemented, sometimes xet7 has to behave like a benevolent dictator. Every Wekan team member is free to choose what to contribute and when. We can not force anybody to implement anything. Wekan development speed increases when new Wekan contributors join and start to send PRs to existing and new issues.
[Wekan Team](https://wekan.fi) is Wekan Commercial Support company run by CEO [xet7](https://github.com/xet7), current maintainer of Wekan. xet7 does respond to feedback at GitHub issues very actively, because Wekan is community driven Open Source project. Because conflicting opinions can not be implemented, sometimes xet7 has to behave like a benevolent dictator. Every Wekan team member is free to choose what to contribute and when. We can not force anybody to implement anything. Wekan development speed increases when new Wekan contributors join and start to send PRs to existing and new issues.
## What is Bio of xet7 ?
[Lauri Ojansivu](https://github.com/xet7) is CEO at [WeKan Team](https://wekan.team),
[Lauri Ojansivu](https://github.com/xet7) is CEO at [WeKan Team](https://wekan.fi),
Cross-Platform FOSS maintainer,
Cloud Architect, Full-Stack Developer, SysAdmin and SysOp.
He has experience of [having added and removed over 4 million lines of code](https://github.com/wekan/wekan/blob/main/releases/count-lines-of-code-per-committer.sh) to
[Meteor Full-Stack Web Framework](https://www.meteor.com)
based [WeKan Open Source kanban](https://wekan.github.io),
based [WeKan Open Source kanban](https://wekan.fi),
that has been [translated to 70+ languages](https://explore.transifex.com/wekan/wekan/),
and is currently used at [most countries of the world](https://snapcraft.io/wekan).
At 2024-06-04, he is currently [4h most active GitHub committer at Finland](https://committers.top/finland).
@ -78,8 +78,8 @@ He is credited as having built quality control system
with comparisons of groups and fitness test calculations,
company infra, migration from On-Premises to Cloud,
SLA support, IT support, [games](https://github.com/xet7/notegame), database apps, websites,
[winner of 2th place at EU NGI ONTOCHAIN Hackathon](https://wekan.github.io/donated/ontochain-certificate.png),
[winner of 20i FOSS Awards](https://wekan.github.io/donated/foss-awards-2022/20i_FOSS_Awards_Winners_Announced_(Press_Release).pdf), and [porting to 30+ CPU/OS](https://github.com/xet7/darkesthour).
[winner of 2th place at EU NGI ONTOCHAIN Hackathon](https://wekan.fi/donated/ontochain-certificate.png),
[winner of 20i FOSS Awards](https://wekan.fi/donated/foss-awards-2022/20i_FOSS_Awards_Winners_Announced_(Press_Release).pdf), and [porting to 30+ CPU/OS](https://github.com/xet7/darkesthour).
At MeteorJS Dispatches Video Podcast, he has been
interviewed [about WeKan](https://www.youtube.com/watch?v=ke-mbnZM3zE&t=1342s),
@ -100,7 +100,7 @@ Trello:
Wekan:
- All Wekan code is Open Source at https://github.com/wekan/wekan with MIT license, free also for commercial use.
- You don't need to pay monthly fee for using Wekan. Only if you need Commercial Support https://wekan.team for some bugfix, feature or integration, you can pay for that.
- You don't need to pay monthly fee for using Wekan. Only if you need Commercial Support https://wekan.fi for some bugfix, feature or integration, you can pay for that.
- You can download all Wekan code and run in internal network that is not connected to Internet. You can keep all your data to yourself.
- Snap/Docker/Sandstorm versions runs inside sandbox and does not have any access to elsewhere on server filesystem.
- Snap version of Wekan is built directly from https://github.com/wekan/wekan repo on Canonical's build service that does security checks etc.
@ -109,7 +109,7 @@ Wekan:
- Wekan does not load any files from Internet, when starting Wekan. For further restrictions, you could on internal server only allow incoming and outgoing traffic from
on internal server firewall to those computers that need to use Wekan.
- There is contributors to Wekan from all over the world, that add fixes and features to Wekan.
- There has been some code reviews done by security researchers https://wekan.github.io/hall-of-fame/ and there has been fixes to Wekan related to that.
- There has been some code reviews done by security researchers https://wekan.fi/hall-of-fame/ and there has been fixes to Wekan related to that.
- xet7 tries to be less evil by trying to listen to some user feedback. For example, someone suggested [inner shadow](https://github.com/wekan/wekan/issues/1690), so it was added, but because of feedback from users inner shadow was removed. Same with removing and adding back [SMTP settings in Admin Panel](https://github.com/wekan/wekan/issues/1790). Unfortunately it's not possible to make everyone happy because different people have different opinions, so xet7 tries to select something that makes some sense. Improvement suggestions welcome.
## When new version of Wekan will be released? When my pull request will be tested, commented or merged?
@ -140,7 +140,7 @@ For [Wekan Platforms](Platforms), it means these choices:
There are alternative ways to have your feature implemented:
a) [Commercial Support](https://wekan.team/commercial-support/)
a) [Commercial Support](https://wekan.fi/commercial-support/)
b) Pay someone from your company or some other developer to code feature and submit as pull request

View file

@ -2,7 +2,7 @@
## Description
Lauri Ojansivu (xet7) has [trademark to WeKan](https://www.tmdn.org/tmview/#/tmview/detail/FI50202100052006A), as can be seen from bottom of official WeKan webpage https://wekan.github.io . Official domain is https://wekan.team .
Lauri Ojansivu (xet7) has [trademark to WeKan](https://www.tmdn.org/tmview/#/tmview/detail/FI50202100052006A), as can be seen from bottom of official WeKan webpage https://wekan.fi . Official domain is https://wekan.fi .
Lauri Ojansivu, as maintainer of WeKan Open Source kanban, has added and removed about [4 million lines of code](https://github.com/wekan/wekan/graphs/contributors) to WeKan since December 2016. All changes to WeKan are at [ChangeLog](https://github.com/wekan/wekan/graphs/contributors). WeKan is used at [most countries of the world](https://wekan.github.com)

View file

@ -1,6 +1,6 @@
# Wekan - Open Souce kanban - IRC FAQ
- [Wekan website](https://wekan.github.io)
- [Wekan website](https://wekan.fi)
### If you are in a hurry, please don't use IRC
@ -49,7 +49,7 @@ If you mean bug about [only 20 newest comments visible](https://github.com/wekan
[16:13:27] <Dalisay> if this does not change, I will
gather a group of developers to make a reasonable fork
```
A: I don't know why you think fork would be necessary. I welcome all new contributors and co-maintainers, and help them to get up to speed. You can send your pull requests to Wekan https://github.com/wekan/wekan/pulls . I do have also [blog post about it](https://blog.wekan.team/2018/02/benefits-of-contributing-your-features-to-upstream-wekan/index.html). All what I do on Wekan is based of feedback at GitHub issues, chats and emails. Wekan is friendly Community driven Open Source project. I do also provide [Commercial Support](https://wekan.team/commercial-support) for features and fixes.
A: I don't know why you think fork would be necessary. I welcome all new contributors and co-maintainers, and help them to get up to speed. You can send your pull requests to Wekan https://github.com/wekan/wekan/pulls . I do have also [blog post about it](https://wekan.fi/blog/2018/02/benefits-of-contributing-your-features-to-upstream-wekan/index.html). All what I do on Wekan is based of feedback at GitHub issues, chats and emails. Wekan is friendly Community driven Open Source project. I do also provide [Commercial Support](https://wekan.fi/commercial-support) for features and fixes.
### Q: CPU usage?
```
@ -146,7 +146,7 @@ A:
- What is URL to your fork? Please send it to me with email to x@xet7.org . Thanks! Currently there is about 2200 forks of Wekan, it would be hard to find without exact URL.
- What features and fixes have you implemented to Wekan?
- [What usually happens when Wekan gets broken](Test-Edge#what-usually-happens-when-wekan-gets-broken).
- [Benefits of contributing your features to upstream Wekan](https://blog.wekan.team/2018/02/benefits-of-contributing-your-features-to-upstream-wekan/index.html).
- [Benefits of contributing your features to upstream Wekan](https://wekan.fi/blog/2018/02/benefits-of-contributing-your-features-to-upstream-wekan/index.html).
- [What was Wekan fork](FAQ#what-was-wekan-fork--wefork).
***
@ -459,7 +459,7 @@ it will make win time for users
```
A:
- Fastest: If you want fast answers, get [Commercial Support](https://wekan.team/commercial-support/).
- Fastest: If you want fast answers, get [Commercial Support](https://wekan.fi/commercial-support/).
- Medium speed: If you have time to wait, [add new GitHub issue](https://github.com/wekan/wekan/issues).
- Slow: [Wekan Community Chat with webbroser and mobile Rocket.Chat](https://chat.vanila.io/channel/wekan)
- Slowest: If you want to chat on IRC, please stay at IRC idling, and ask question again also at some other day. Sometimes there is Internet connectivity issues, if it looks like xet7 is not online. IRC is very nice, some Wekan users prefer it. Answers to IRC questions are added to this wiki page, because most coming to IRC channel leave immediately, and don't wait for answer.

View file

@ -2,7 +2,7 @@
### News about Wekan
* [Wekan v1.0 relased 2018-05-21](https://blog.wekan.team/2018/05/wekan-v1-00-released/index.html), link to it also at [HN](https://news.ycombinator.com/item?id=17120252)
* [Wekan v1.0 relased 2018-05-21](https://wekan.fi/blog/2018/05/wekan-v1-00-released/index.html), link to it also at [HN](https://news.ycombinator.com/item?id=17120252)
* [Hacker News 2018-05-12: Myth of Dying Programming Language and Framework](https://news.ycombinator.com/item?id=17054264)

View file

@ -1 +1 @@
WeKan Requiremens are at https://wekan.github.io/install/
WeKan Requiremens are at https://wekan.fi/install/

View file

@ -1,3 +1,3 @@
[Wekan v5.55 and newer](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v555-2021-08-31-wekan-release)
<img src="https://wekan.github.io/allow-private-boards-only.png" width="60%" alt="Allow private boards only" />
<img src="allow-private-boards-only.png" width="60%" alt="Allow private boards only" />

View file

@ -7,5 +7,5 @@
## Minicard Cover Image and Count of attachments
<img src="https://wekan.github.io/cover/cover-and-attachment.png" width="100%" alt="Minicard Cover Image and Count of attachments" />
<img src="https://wekan.fi/cover/cover-and-attachment.png" width="100%" alt="Minicard Cover Image and Count of attachments" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View file

@ -1,29 +0,0 @@
[Custom Fields issue](https://github.com/wekan/wekan/issues/807)
## To translators, about the word Custom
See other feature for description of Custom https://github.com/wekan/wekan/wiki/Customize-Translations
## 1) Click: Board hamburger menu / Custom Fields
<img src="https://wekan.github.io/custom-field-1.png" width="50%" alt="Custom Field Step 1" />
## 2) Click: Create Field, add details and Save
<img src="https://wekan.github.io/custom-field-2.png" width="50%" alt="Custom Field Step 1" />
## 3) Click: Card Details hamburger menu / Edit custom fields
<img src="https://wekan.github.io/custom-field-3.png" width="100%" alt="Custom Field Step 1" />
## 4) Click: Your Custom Field name to insert it to Card
<img src="https://wekan.github.io/custom-field-4.png" width="100%" alt="Custom Field Step 1" />
## 5) Click: Your selection from your Custom Field
<img src="https://wekan.github.io/custom-field-5.png" width="100%" alt="Custom Field Step 1" />
## 6) Custom Field is shown at Minicard and Card Details
<img src="https://wekan.github.io/custom-field-6.png" width="100%" alt="Custom Field Step 1" />

View file

@ -0,0 +1,29 @@
[Custom Fields issue](https://github.com/wekan/wekan/issues/807)
## To translators, about the word Custom
See other feature for description of Custom https://github.com/wekan/wekan/wiki/Customize-Translations
## 1) Click: Board hamburger menu / Custom Fields
<img src="https://wekan.fi/custom-field-1.png" width="50%" alt="Custom Field Step 1" />
## 2) Click: Create Field, add details and Save
<img src="https://wekan.fi/custom-field-2.png" width="50%" alt="Custom Field Step 1" />
## 3) Click: Card Details hamburger menu / Edit custom fields
<img src="https://wekan.fi/custom-field-3.png" width="100%" alt="Custom Field Step 1" />
## 4) Click: Your Custom Field name to insert it to Card
<img src="https://wekan.fi/custom-field-4.png" width="100%" alt="Custom Field Step 1" />
## 5) Click: Your selection from your Custom Field
<img src="https://wekan.fi/custom-field-5.png" width="100%" alt="Custom Field Step 1" />
## 6) Custom Field is shown at Minicard and Card Details
<img src="https://wekan.fi/custom-field-6.png" width="100%" alt="Custom Field Step 1" />

Some files were not shown because too many files have changed in this diff Show more