Compare commits

..

542 commits
v7.53 ... main

Author SHA1 Message Date
Lauri Ojansivu
8af719d39e v7.85 2025-04-21 16:30:58 +03:00
Lauri Ojansivu
c1a4250bd2 Updated to MongoDB 6.0.22.
Thanks to MongoDB developers !
2025-04-21 16:28:41 +03:00
Lauri Ojansivu
b4b442f8a8 Updated translations. 2025-04-21 16:13:56 +03:00
Lauri Ojansivu
b7e76fcfa1 Updated ChangeLog. 2025-04-21 16:10:24 +03:00
Lauri Ojansivu
01950cc796 Fix board sidebar menu doesn't open in mobile.
Thanks to mimZD and xet7 !

Fixes #5736
2025-04-21 16:07:43 +03:00
Lauri Ojansivu
23bac73559 Updated translations. 2025-04-05 17:39:29 +03:00
Lauri Ojansivu
2de9b94b01 Updated ChangeLog. 2025-03-31 21:50:47 +03:00
Lauri Ojansivu
05d1736f5f
Update Browser-compatibility-matrix.md 2025-03-31 21:45:22 +03:00
Lauri Ojansivu
db5346fc5c
Update Browser-compatibility-matrix.md 2025-03-31 21:38:06 +03:00
Lauri Ojansivu
f09f5bd737 Updated translations. 2025-03-29 21:35:45 +02:00
Lauri Ojansivu
d96a1a5c9e v7.84 2025-03-23 17:33:57 +02:00
Lauri Ojansivu
ad3cc9c087 Updated translations. 2025-03-22 21:39:15 +02:00
Lauri Ojansivu
d0c7bf65a4 Updated ChangeLog. 2025-03-22 21:30:53 +02:00
Lauri Ojansivu
bb6ac70f63 Updated dependencies.
Thanks to developers of dependencies !
2025-03-22 21:26:41 +02:00
Lauri Ojansivu
c38b9da7d6
Merge pull request #5718 from wekan/dependabot/github_actions/docker/login-action-3.4.0
Bump docker/login-action from 3.3.0 to 3.4.0
2025-03-18 01:37:59 +02:00
dependabot[bot]
19153ca489
Bump docker/login-action from 3.3.0 to 3.4.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](9780b0c442...74a5d14239)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 21:00:44 +00:00
Lauri Ojansivu
8e7a5e8cb5 Updated translations. 2025-03-15 22:31:43 +02:00
Lauri Ojansivu
1407059937 Updated ChangeLog. 2025-03-15 19:33:49 +02:00
Lauri Ojansivu
a2911bc9c3 Fixed building OpenAPI docs.
Thanks to xet7 !

Fixes #5512
2025-03-15 19:32:16 +02:00
Lauri Ojansivu
f99b735746 Updated ChangeLog. 2025-03-11 04:23:55 +02:00
Lauri Ojansivu
4510ddda15 Fix typo at Shortcuts.
Thanks to xet7 !
2025-03-11 04:19:45 +02:00
Lauri Ojansivu
028ec46f46 Updated ChangeLog. 2025-03-09 20:05:08 +02:00
Lauri Ojansivu
c0e4e01deb Added developer docs about Login code.
Thanks to xet7 !

Fixes #5714
2025-03-09 20:03:42 +02:00
Lauri Ojansivu
cfcf682134 Updated ChangeLog. 2025-03-09 19:08:20 +02:00
Lauri Ojansivu
27bd9817d7
Merge pull request #5712 from Rayene123/Time-on-Minicard-for-Start/End/Due-Date
Time on minicard for start/end/due date
2025-03-09 19:03:54 +02:00
Rayene123
6d982cdfd9 formatted the date when storing it 2025-03-09 14:15:17 +00:00
Rayene123
827ee615c1 added the start , due , end hour 2025-03-09 14:12:20 +00:00
Lauri Ojansivu
f5f0ba721e v7.83 2025-03-08 21:32:37 +02:00
Lauri Ojansivu
1344f85986 Updated ChangeLog. 2025-03-08 21:14:12 +02:00
Lauri Ojansivu
e7462ada12 Reverted Docker changes of WeKan v7.68 to get WeKan Docker version working.
Thanks to xet7 !

Fixes #5697
2025-03-08 21:09:09 +02:00
Lauri Ojansivu
11199b6225 Updated ChangeLog. 2025-03-08 19:58:05 +02:00
Lauri Ojansivu
345aece0f2 Updated ChangeLog. 2025-03-08 19:55:49 +02:00
Lauri Ojansivu
912c84422b Merge branch 'Firas-Git-CopyCard_FixError' 2025-03-08 19:52:42 +02:00
Lauri Ojansivu
b402676079 Removed siteurl from manifest to fix browser console error about not matching URL.
Thanks to xet7 !
2025-03-08 19:51:23 +02:00
Lauri Ojansivu
908a5fc60d Comment out error message of non-existing Custom Field.
Thanks to xet7 !

Related #5684
2025-03-08 19:50:00 +02:00
Lauri Ojansivu
38e57d3635 Merge branch 'CopyCard_FixError' of github.com:Firas-Git/wekan into Firas-Git-CopyCard_FixError 2025-03-08 19:46:19 +02:00
Firas Saidi
14167b19b9 cards file 2025-03-08 18:02:03 +01:00
Lauri Ojansivu
fc548b426d Updated translations. 2025-03-08 17:45:02 +02:00
Lauri Ojansivu
71acd9603e Updated ChangeLog. 2025-03-06 01:52:46 +02:00
Lauri Ojansivu
341f655ab7
Merge pull request #5704 from wekan/dependabot/github_actions/docker/build-push-action-6.15.0
Bump docker/build-push-action from 6.14.0 to 6.15.0
2025-03-05 19:33:04 +02:00
Lauri Ojansivu
0c5323c106
Merge pull request #5703 from wekan/dependabot/github_actions/docker/metadata-action-5.7.0
Bump docker/metadata-action from 5.6.1 to 5.7.0
2025-03-05 19:30:27 +02:00
dependabot[bot]
7f871fdf30
Bump docker/build-push-action from 6.14.0 to 6.15.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.14.0 to 6.15.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](0adf995921...471d1dc4e0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 20:41:23 +00:00
dependabot[bot]
6347b40a02
Bump docker/metadata-action from 5.6.1 to 5.7.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.6.1 to 5.7.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](369eb591f4...902fa8ec7d)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 20:41:20 +00:00
Lauri Ojansivu
bce84a432a Updated ChangeLog. 2025-03-02 12:03:22 +02:00
Lauri Ojansivu
b6fc4deb63
Merge pull request #5702 from adam-fu/main
Adding Development information to readme
2025-03-02 12:00:54 +02:00
adam-fu
6b48f9e259 Adding Development information to readme 2025-03-02 06:43:29 +01:00
Lauri Ojansivu
44b7666426 Merge branch 'main' of github.com:wekan/wekan 2025-02-25 14:33:34 +02:00
Lauri Ojansivu
ef70ed76a2 Updated changelog 2025-02-25 14:33:06 +02:00
Lauri Ojansivu
a1a1b3d1ee
Merge pull request #5696 from wekan/dependabot/github_actions/docker/build-push-action-6.14.0
Bump docker/build-push-action from 6.13.0 to 6.14.0
2025-02-24 23:21:55 +02:00
dependabot[bot]
0326757399
Bump docker/build-push-action from 6.13.0 to 6.14.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.13.0 to 6.14.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](ca877d9245...0adf995921)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 21:18:37 +00:00
Lauri Ojansivu
edbc8ed92b v7.82 2025-02-24 20:21:33 +02:00
Lauri Ojansivu
07e9ec0617 Updated ChangeLog. 2025-02-24 15:12:07 +02:00
Lauri Ojansivu
18d0fa4327 Fixed building WeKan. Updated dompurify. Forked Meteor 2.14 version of meteor-node-stubs to update elliptic.
Thanks to delopers of depedencies and xet7 !

Fixes #5694
2025-02-24 14:56:54 +02:00
Lauri Ojansivu
666ee84033 Updated dependencies.
Thanks to developes of dependencies "
2025-02-23 15:55:20 +02:00
Lauri Ojansivu
120642f47d Updated ChangeLog. 2025-02-21 21:22:14 +02:00
Lauri Ojansivu
148b81262d Updated requirements at docs.
Thanks to mueller-ma !

Fixes #5692
2025-02-21 21:12:28 +02:00
Lauri Ojansivu
c41467f76e
Merge pull request #5691 from wekan/dependabot/npm_and_yarn/dompurify-3.2.4
Bump dompurify from 2.5.6 to 3.2.4
2025-02-15 15:47:49 +02:00
dependabot[bot]
c83e83b8b1
Bump dompurify from 2.5.6 to 3.2.4
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.5.6 to 3.2.4.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.5.6...3.2.4)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-15 08:58:49 +00:00
Lauri Ojansivu
563a508e26 Added missing ) character.
Thanks to xet7 !
2025-02-11 22:12:57 +02:00
Lauri Ojansivu
1d8347cc23
Merge pull request #5682 from salleman33/devel
Update metrics.js
2025-02-11 17:28:33 +02:00
salleman
874abf2c41
Update metrics.js
Add possibility to use a token in place of ipaddress to access metrics route
2025-02-11 12:06:23 +01:00
Lauri Ojansivu
3e18f820ea v7.81 2025-02-07 16:13:52 +02:00
Lauri Ojansivu
b571f1c953 Upgraded to MongoDB 6.0.20 at Snap Candidate.
Thanks to MongoDB developers!
2025-02-07 16:11:48 +02:00
Lauri Ojansivu
fd69c7ceb8 Updated ChangeLog. 2025-02-05 04:41:42 +02:00
Lauri Ojansivu
d15faa1890 Updated ChangeLog. 2025-01-29 14:15:31 +02:00
Lauri Ojansivu
0c7e12c5e7 Added Meteor 3.1 learning course to docs.
Thanks to producer of learning course !
2025-01-29 14:13:21 +02:00
Lauri Ojansivu
36a3077853 Fix misspelling of hours at env variable setting LDAP_BACKGROUND_SYNC_INTERVAL.
Thanks to hubermam !

Fixes #5665
2025-01-29 14:09:31 +02:00
Lauri Ojansivu
51bc23dbd9 Updated ChangeLog. 2025-01-29 13:40:34 +02:00
Lauri Ojansivu
0b1e0bd395 Fixed env variable METRICS_ACCEPTED_IP_ADDRESS to be same as at docs.
Thanks to salleman33 !

Fixes #5671
2025-01-29 13:38:40 +02:00
Lauri Ojansivu
151aafd114 Updated ChangeLog. 2025-01-29 10:23:12 +02:00
Lauri Ojansivu
16c8a65a1c Updated ChangeLog. 2025-01-29 10:22:08 +02:00
Lauri Ojansivu
f3133e9cd8
Merge pull request #5670 from wekan/dependabot/github_actions/docker/build-push-action-6.13.0
Bump docker/build-push-action from 6.12.0 to 6.13.0
2025-01-29 10:14:55 +02:00
dependabot[bot]
de84aa7674
Bump docker/build-push-action from 6.12.0 to 6.13.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.12.0 to 6.13.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](67a2d409c0...ca877d9245)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 20:17:17 +00:00
Lauri Ojansivu
1bdbfe86bb
Merge pull request #5663 from wekan/dependabot/github_actions/helm/chart-releaser-action-1.7.0
Bump helm/chart-releaser-action from 1.6.0 to 1.7.0
2025-01-21 22:44:23 +02:00
Lauri Ojansivu
397b9f439e
Merge pull request #5662 from wekan/dependabot/github_actions/docker/build-push-action-6.12.0
Bump docker/build-push-action from 6.11.0 to 6.12.0
2025-01-21 22:44:12 +02:00
dependabot[bot]
261e0aee0f
Bump helm/chart-releaser-action from 1.6.0 to 1.7.0
Bumps [helm/chart-releaser-action](https://github.com/helm/chart-releaser-action) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/helm/chart-releaser-action/releases)
- [Commits](https://github.com/helm/chart-releaser-action/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: helm/chart-releaser-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 20:02:15 +00:00
dependabot[bot]
a6d9bde658
Bump docker/build-push-action from 6.11.0 to 6.12.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.11.0 to 6.12.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](b32b51a8ed...67a2d409c0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 20:02:13 +00:00
Lauri Ojansivu
8d0a07e1a8 Updated translations. 2025-01-19 23:06:23 +02:00
Lauri Ojansivu
659615e6f2
Merge pull request #5658 from wekan/dependabot/github_actions/docker/build-push-action-6.11.0
Bump docker/build-push-action from 6.10.0 to 6.11.0
2025-01-15 12:18:49 +02:00
dependabot[bot]
9f0b82c0d5
Bump docker/build-push-action from 6.10.0 to 6.11.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.10.0 to 6.11.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](48aba3b46d...b32b51a8ed)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 20:55:32 +00:00
Lauri Ojansivu
9a23dcc991 v7.80 2025-01-12 23:48:05 +02:00
Lauri Ojansivu
980d345305 Updated ChangeLog. 2025-01-12 23:19:51 +02:00
Lauri Ojansivu
41f76ee974 Updated translations. 2025-01-11 20:53:31 +02:00
Lauri Ojansivu
83a60e6303
Merge pull request #5655 from NadavTasher/bugfix/fix-assignment-of-removed-members
Fix assignee toggling keyboard shortcut to only toggle current board members
2025-01-03 17:32:58 +02:00
Nadav Tasher
7b23c85117 Fix assignee toggling keyboard shortcut to only toggle current board members 2025-01-03 17:15:40 +02:00
Lauri Ojansivu
ff3900d100
Merge pull request #5654 from NadavTasher/bugfix/mouse-over-card-reactive-cache 2025-01-03 16:12:17 +02:00
Nadav Tasher
e5e4b8ebfb Fix card issues with ReactiveCache when using keyboard shortcuts
When using ReactiveCache.getCard, a buggy instance of Card is returned.
The bug experienced is that .assignees and .members are not always up-to-date.

This can be reproduced by trying to hover over cards and triggering a keyboard
shortcut that interacts with a card.
2025-01-03 12:08:08 +02:00
Lauri Ojansivu
9516b75d65 Updated translations. 2025-01-02 19:39:08 +02:00
Lauri Ojansivu
6b1a92001a v7.79 2025-01-02 13:08:53 +02:00
Lauri Ojansivu
e4e1fdb187 Updated ChangeLog. 2025-01-02 12:59:37 +02:00
Lauri Ojansivu
58ad80218a Updated translations. 2025-01-02 12:40:14 +02:00
Lauri Ojansivu
3322d3b33d
Merge pull request #5652 from NadavTasher/feature/toggle-week-of-year-display
Feature - Add toggle for week-of-year in date displays (ISO 8601)
2025-01-02 12:07:23 +02:00
Lauri Ojansivu
bd9d0c2d1b Updated translations. 2025-01-02 06:11:10 +02:00
Lauri Ojansivu
02b99e0555
Merge pull request #5653 from NadavTasher/feature/assign-members-by-numbers
Feature - Assign members using keyboard shortcut `Ctrl+Alt+[1-9]`
2025-01-02 06:01:32 +02:00
Nadav Tasher
f803190dd2 Change shortcut help message 2025-01-01 22:54:51 +02:00
Nadav Tasher
deb3a8389a Fix member index bug in keyboard shortcut 2025-01-01 22:26:59 +02:00
Nadav Tasher
e7d02c12eb Added translation for new assigning keyboard shortcut 2025-01-01 22:23:21 +02:00
Nadav Tasher
169eaa180b Added support for assigning members to cards using Ctrl+Alt+Num 2025-01-01 22:22:57 +02:00
Nadav Tasher
08cde06ce5 Support show week of year toggle in cardCustomFields 2025-01-01 21:13:55 +02:00
Nadav Tasher
4607bfe454 Support week of year toggle in cardDate 2025-01-01 21:13:30 +02:00
Nadav Tasher
de0eece27c Add show week of year translation 2025-01-01 21:13:03 +02:00
Nadav Tasher
25ad901fb3 Add show week of year toggle to sidebar 2025-01-01 21:12:38 +02:00
Nadav Tasher
99e579f47d Add week of year toggle state in user model 2025-01-01 21:12:04 +02:00
Lauri Ojansivu
7df278e805 v7.78 2024-12-31 23:13:54 +02:00
Lauri Ojansivu
34325dde8c Updated translations. 2024-12-31 23:09:25 +02:00
Lauri Ojansivu
c7e3cc7e0a Updated ChangeLog. 2024-12-31 22:57:49 +02:00
Lauri Ojansivu
826876ff11
Merge pull request #5649 from NadavTasher/bugfix/fix-list-header-width-in-cleandark-theme
Fix list header too wide in cleanlight and cleandark themes
2024-12-31 22:56:34 +02:00
Lauri Ojansivu
b031da6c6d Updated ChangeLog. 2024-12-31 22:55:53 +02:00
Lauri Ojansivu
43e15a1ef4
Merge pull request #5648 from NadavTasher/bugfix/keyboard-shortcuts-behaving-differently-with-caps
Fix upper-case keyboard shortcuts & different language shortcuts getting triggered when shortcuts are disabled
2024-12-31 22:54:35 +02:00
Lauri Ojansivu
7c32188968 Updated ChangeLog. 2024-12-31 22:53:58 +02:00
Lauri Ojansivu
78d38bc4e2
Merge pull request #5647 from NadavTasher/bugfix/change-assign-self-shortcut
Fix assign-self shortcut in shortcut help popup (different from actual shortcut)
2024-12-31 22:52:42 +02:00
Lauri Ojansivu
f942631fd4 Updated ChangeLog. 2024-12-31 22:52:01 +02:00
Lauri Ojansivu
5d64c28e89
Merge pull request #5646 from NadavTasher/feature/additional-card-archive-shortcut
Add additional archiving keyboard shortcut (added `-`)
2024-12-31 22:51:06 +02:00
Lauri Ojansivu
485c2f0a7d Updated ChangeLog. 2024-12-31 22:50:31 +02:00
Lauri Ojansivu
3d894d0e56
Merge pull request #5645 from NadavTasher/bugfix/vertical-scrollbar-toggle-style
Fix styling for vertical scrollbars toggle
2024-12-31 22:48:32 +02:00
Lauri Ojansivu
b265701844 Updated ChangeLog. 2024-12-31 22:47:56 +02:00
Lauri Ojansivu
468760bd31
Merge pull request #5644 from NadavTasher/bugfix/hide-scrollbars-on-old-browser-versions
Disable scrollbars on older versions of Chrome and Safari in "no vertical scrollbars" mode
2024-12-31 22:46:01 +02:00
Nadav Tasher
f03744d99b Fix list header too wide in cleanlight and cleandark themes 2024-12-31 21:42:42 +02:00
Nadav Tasher
26e78a1381 Fix upper-case keyboard shortcuts & different language shortcuts getting triggered when shortcuts are disabled 2024-12-31 21:18:17 +02:00
Nadav Tasher
44aeb323d9 Change assign-self shortcut in shortcut help popup 2024-12-31 19:47:21 +02:00
Nadav Tasher
503298a33f Add additional archiving keyboard shortcut 2024-12-31 19:38:46 +02:00
Nadav Tasher
58b456d5d5 Fix styling for vertical scrollbars toggle 2024-12-31 19:30:22 +02:00
Nadav Tasher
d370cac14c Disable scrollbars on older versions of Chrome and Safari 2024-12-31 19:17:06 +02:00
Lauri Ojansivu
b29c19f5e0 Merge newest changes. 2024-12-31 01:26:43 +02:00
Lauri Ojansivu
a3ba0cf6d5 Updated translations. 2024-12-31 01:26:01 +02:00
Lauri Ojansivu
8bb089fe07 Updated translations. 2024-12-31 00:37:44 +02:00
Lauri Ojansivu
7ba66f6386 Updated translations. 2024-12-31 00:22:15 +02:00
Lauri Ojansivu
b537f9b20a
Merge pull request #5643 from NadavTasher/feature/optional-vertical-scrollbars
Allow vertical scrollbars to be disabled (new preference)
2024-12-30 23:44:33 +02:00
Lauri Ojansivu
7abe8d71a8 v7.77 2024-12-30 23:32:34 +02:00
Nadav Tasher
3e01231874 Allow vertical scrollbars to be disabled (user preferences, visible by default) 2024-12-30 23:22:54 +02:00
Lauri Ojansivu
fb8e23dc4b Updated translations. 2024-12-30 23:20:32 +02:00
Lauri Ojansivu
bf0d6cad2c Updated ChangeLog. 2024-12-30 23:18:04 +02:00
Lauri Ojansivu
5a9d36341c
Merge pull request #5642 from NadavTasher/bugfix/generic-fix-for-keyboard-shortcuts-stop-callback
Fix "SPACE" shortcut not working after recent fixes
2024-12-30 23:17:14 +02:00
Lauri Ojansivu
c7bf0b24a7 Updated ChangeLog. 2024-12-30 23:16:35 +02:00
Lauri Ojansivu
d69a505928
Merge pull request #5641 from NadavTasher/bugfix/fix-weird-add-checklist-buttons-in-card-details
Fix weird add checklist buttons in card details
2024-12-30 23:15:24 +02:00
Lauri Ojansivu
7980899f37 Updated ChangeLog. 2024-12-30 23:14:39 +02:00
Lauri Ojansivu
91d245a414
Merge pull request #5640 from NadavTasher/bugfix/fix-bad-comments-background-in-dark-theme
Fix comment backgrounds in cleandark theme
2024-12-30 23:13:53 +02:00
Lauri Ojansivu
5db8d45f4d Updated ChangeLog. 2024-12-30 23:13:07 +02:00
Lauri Ojansivu
ee4f09845c
Merge pull request #5639 from NadavTasher/feature/enable-keyboard-shortcuts-by-default
Enable keyboard shortcuts by default
2024-12-30 23:11:26 +02:00
Nadav Tasher
01a717f143 Generic fix for keyboard shortcuts which fixes "SPACE" shortcut and more bugs 2024-12-30 21:03:18 +02:00
Nadav Tasher
efd22df657 Add some padding to checklist title to make it seperate from card details body 2024-12-30 20:31:28 +02:00
Nadav Tasher
2948e0aa4f Fix confusing and broken "Add checklist" and "Add subtask" buttons in card details view 2024-12-30 20:31:00 +02:00
Nadav Tasher
b253683b3c Fix comment backgrounds in cleandark theme 2024-12-30 20:23:54 +02:00
Nadav Tasher
189ebd4201 Enable keyboard shortcuts by default 2024-12-30 20:15:52 +02:00
Lauri Ojansivu
f1810e47e0 v7.76 2024-12-30 01:57:04 +02:00
Lauri Ojansivu
37f7924524 Updated ChangeLog. 2024-12-30 01:37:27 +02:00
Lauri Ojansivu
6427a5e5f1
Merge pull request #5635 from NadavTasher/bugfix/move-swimlane-creation-button-to-board-header
Move swimlane creation button to board header when using swimlane view mode
2024-12-30 01:33:48 +02:00
Nadav Tasher
96e11cb727 Display new swimlane creation button when no swimlanes exist 2024-12-30 01:25:25 +02:00
Lauri Ojansivu
a5f9157217 Updated ChangeLog. 2024-12-30 00:42:33 +02:00
Lauri Ojansivu
133066c900
Merge pull request #5636 from NadavTasher/bugfix/esc-keyboard-shortcut-not-working
Always handle the escape key when shortcuts are enabled
2024-12-30 00:39:53 +02:00
Nadav Tasher
cf75623184 Always handle the escape key when shortcuts are enabled 2024-12-30 00:34:40 +02:00
Nadav Tasher
fecae8d0a3 Revert "Move swimlane creation button to board header when using swimlane view mode"
This reverts commit d51e8d1d1d.
2024-12-30 00:17:56 +02:00
Lauri Ojansivu
f1d8220ab7 v7.75 2024-12-29 23:50:26 +02:00
Nadav Tasher
d51e8d1d1d Move swimlane creation button to board header when using swimlane view mode 2024-12-29 22:54:32 +02:00
Lauri Ojansivu
9a761d2a77 Updated ChangeLog. 2024-12-29 22:40:22 +02:00
Lauri Ojansivu
407d018067 Fix Cannot save Layout settings.
Thanks to tensor5g and xet7 !

Fixes #5630
2024-12-29 22:38:19 +02:00
Lauri Ojansivu
028b8b606a Updated ChangeLog. 2024-12-29 22:19:47 +02:00
Nadav Tasher
ad0e86d725 Remove keyboard shortcut toggle from board header 2024-12-29 22:14:55 +02:00
Nadav Tasher
8aeed8b033 Impove margins around shortcuts toggle 2024-12-29 22:12:45 +02:00
Lauri Ojansivu
989c73f1f1 Updated translations. 2024-12-29 16:56:17 +02:00
Lauri Ojansivu
f6a3a04dba Updated translations. 2024-12-25 20:40:37 +02:00
Lauri Ojansivu
8ff11ccc88 v7.74 2024-12-25 07:25:21 +02:00
Lauri Ojansivu
5d145d0dd1 Updated ChangeLog. 2024-12-25 07:17:29 +02:00
Lauri Ojansivu
275ac445d0 Keyboard Shortcuts Enable/Disable is now at Right Sidebar, where already was list of Keyboard Shortcuts.
Thanks to xet7 !

Fixes https://github.com/wekan/wekan/pull/5628
2024-12-25 07:14:22 +02:00
Lauri Ojansivu
7fc364cb63 Updated translations. 2024-12-25 06:51:18 +02:00
Lauri Ojansivu
93868fd905 Updated ChangeLog. 2024-12-25 06:47:51 +02:00
Lauri Ojansivu
a862486ec3 "Auto List Width" is now at "List ☰ Set Width" popup.
Thanks to xet7 !

Fixes https://github.com/wekan/wekan/pull/5628
2024-12-25 06:43:02 +02:00
Lauri Ojansivu
14c9b70149 Updated translations. 2024-12-25 05:42:21 +02:00
Lauri Ojansivu
b60c655b98 Updated ChangeLog. 2024-12-25 05:20:10 +02:00
Lauri Ojansivu
fe5475d5ec Updated ChangeLog. 2024-12-25 05:01:55 +02:00
Lauri Ojansivu
955a46ca60 Fixes keyboard shortcuts defaults, icons and texts to be more understandable.
Thanks to xet7 !

Fixes https://github.com/wekan/wekan/pull/5628
2024-12-25 04:59:15 +02:00
Nadav Tasher
0d0c88ceaa Add translations for keyboard shortcut actions 2024-12-25 00:32:46 +02:00
Nadav Tasher
fb008569ab Make sure keyboard shortcuts are enabled and no text is selected on shortcut triggers 2024-12-25 00:24:41 +02:00
Nadav Tasher
295c9c8617 Allow toggling profile.keyboardShortcuts from boardHeader 2024-12-25 00:23:18 +02:00
Nadav Tasher
658e43ab54 Add profile.keyboardShortcuts to User model 2024-12-25 00:22:37 +02:00
Nadav Tasher
41b1227b17 Add keyboard shortcut toggle 2024-12-25 00:22:04 +02:00
Nadav Tasher
68c7a41906 Revert "Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible."
This reverts commit 5606414f89.
2024-12-24 21:41:25 +02:00
Nadav Tasher
18f6d4cb16 Revert "Part 2. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible."
This reverts commit 94391d4cde.
2024-12-24 21:41:13 +02:00
Nadav Tasher
7c60d7932a Revert "Part 3. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible."
This reverts commit 8b73c702c3.
2024-12-24 21:41:03 +02:00
Lauri Ojansivu
b9182a1fc7 v7.73 2024-12-24 20:16:31 +02:00
Lauri Ojansivu
e45d35ba60 Updated ChangeLog. 2024-12-24 20:05:38 +02:00
Lauri Ojansivu
8b73c702c3 Part 3. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
Thanks to xet7 !

Fixes #5603,
fixes #2423,
fixes #1878,
fixes #931
2024-12-24 20:04:35 +02:00
Lauri Ojansivu
8e744e860d Updated ChangeLog. 2024-12-24 19:55:25 +02:00
Lauri Ojansivu
94391d4cde Part 2. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
Thanks to xet7 !

Fixes #5603,
fixes #2423,
fixes #1878,
fixes #931
2024-12-24 19:54:17 +02:00
Lauri Ojansivu
4e73c56afe Updated ChangeLog. 2024-12-24 19:48:38 +02:00
Lauri Ojansivu
5606414f89 Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
Thanks to xet7 !

Fixes #5603,
fixes #2423,
fixes #1878,
fixes #931
2024-12-24 19:41:56 +02:00
Lauri Ojansivu
8ebb1a7d7f Updated translations. 2024-12-24 19:34:00 +02:00
Lauri Ojansivu
586043e00b Updated ChangeLog. 2024-12-24 19:32:49 +02:00
Lauri Ojansivu
e70c51a1f0 Hide Accessibility Settings at Admin Panel. It will be continued and added back later.
Thanks to xet7 !
2024-12-24 19:31:15 +02:00
Lauri Ojansivu
ea8f8de391 Updated ChangeLog. 2024-12-24 19:29:49 +02:00
Lauri Ojansivu
0332ef3298 Hide support popup. It will be made editable later.
Thanks to xet7 !
2024-12-24 19:28:20 +02:00
Lauri Ojansivu
751b0aa073 Merge branch 'main' of github.com:wekan/wekan 2024-12-21 12:49:02 +02:00
Lauri Ojansivu
965db42170 Updated translations. 2024-12-21 12:48:47 +02:00
Lauri Ojansivu
73f16692da Updated 2024-12-21 12:48:36 +02:00
Lauri Ojansivu
aab80e67bd Updated ChangeLog. 2024-12-17 19:59:29 +02:00
Lauri Ojansivu
3e3b629aa2 Updated Developer Docs about docker compose.
Thanks to sridharin2020 and xet7 !

Related https://github.com/wekan/wekan/discussions/5622
2024-12-17 19:57:29 +02:00
Lauri Ojansivu
adeec24252 Updated ChangeLog. 2024-12-15 18:01:32 +02:00
Lauri Ojansivu
ba0fdaef72 Revert back to have shortcut "c to archive" back for non-Persian keyboards.
Thanks to hatl and xet7 !

Related #1878
2024-12-15 17:58:48 +02:00
Lauri Ojansivu
c357c77e7e Updated translations. 2024-12-13 02:12:40 +02:00
Lauri Ojansivu
702375856d Updated ChangeLog. 2024-12-13 02:08:35 +02:00
Lauri Ojansivu
c936d83b38 Reverted all previous Oauth2 filepath code, thinking is there some better way.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5619,
related https://github.com/wekan/wekan/pull/5616
2024-12-13 01:51:42 +02:00
Lauri Ojansivu
83d22c9ebf Updated translations. 2024-12-12 04:47:22 +02:00
Lauri Ojansivu
02f45f4e65
Merge pull request #5614 from NadavTasher/feature/change-default-maximum-width-for-lists
Changed the default maximum list width
2024-12-12 03:13:05 +02:00
Lauri Ojansivu
da2ba45456
Merge pull request #5618 from NadavTasher/bugfix/weird-dragscroll-behaviour-in-lists-view
Fix buggy behaviours in board dragscrolling
2024-12-12 03:12:49 +02:00
Lauri Ojansivu
0566f7c89b
Merge pull request #5616 from walster001/main
Add functionality to cross-check emails against a known local server-side file on OIDC login.
2024-12-12 03:11:24 +02:00
Nadav Tasher
30a2e8b990 Fix dragscroll getting stuck on view changes 2024-12-11 23:04:10 +02:00
Nadav Tasher
81b2bce385 Allow dragscrolling the board in Lists view mode 2024-12-11 22:19:52 +02:00
walster001
a5347cfcac
Update wekan-help with local file email changes. 2024-12-12 00:52:28 +10:30
walster001
3422db31ee
Local email checking modifications 2024-12-12 00:47:14 +10:30
walster001
755880ec90
Add OAUTH2 Email check keys 2024-12-12 00:41:19 +10:30
walster001
30273709ae Add support for external email verification
Add support for external email verification against OIDC login script. This will check local file for presence of email and log the user in if it is or deny them if it isn't.
2024-12-12 00:34:22 +10:30
Nadav Tasher
17f4bbde20 Changed the default maximum list width 2024-12-10 21:23:12 +02:00
Lauri Ojansivu
575e3750f1 Updated translations. 2024-12-09 23:05:57 +02:00
Lauri Ojansivu
d7c8eced81 Revert changing URLs and email addresses. 2024-12-09 18:00:14 +02:00
Lauri Ojansivu
86fda62a48 Merge branch 'main' of github.com:wekan/wekan 2024-12-08 17:07:46 +02:00
Lauri Ojansivu
a4ec20a7c8 Merge remote-tracking branch 'origin/feature-accessibility' 2024-12-08 17:07:39 +02:00
Lauri Ojansivu
90653c1472 Updated translations. 2024-12-08 17:06:29 +02:00
Lauri Ojansivu
30ec59140c Updated ChangeLog. 2024-12-08 15:04:17 +02:00
Lauri Ojansivu
f689d1688a Updated URLs and email addresses.
Thanks to xet7 !
2024-12-08 15:02:43 +02:00
Lauri Ojansivu
57e545e7c4 Updated translations. 2024-12-08 15:01:48 +02:00
Lauri Ojansivu
d0ea8e3a81 v7.72 2024-12-08 03:08:28 +02:00
Lauri Ojansivu
c188d2bf65 Updated translations. 2024-12-08 03:01:51 +02:00
Lauri Ojansivu
75b3421222 Updated ChangeLog. 2024-12-08 02:59:15 +02:00
Lauri Ojansivu
c062bd63bb Fix in API user role is not considered.
Thanks to mohammadZahedian and xet7 !

Fixes #5422
2024-12-08 02:56:37 +02:00
Lauri Ojansivu
0c753e85a8 Updated ChangeLog. 2024-12-08 02:02:26 +02:00
Lauri Ojansivu
32770c02ad Updated translations. 2024-12-08 01:02:19 +02:00
Lauri Ojansivu
133dd55f4c Merge branch 'feature/optional-auto-width' of https://github.com/NadavTasher/wekan 2024-12-08 00:33:58 +02:00
Nadav Tasher
d1e2db9cb8 Replace Session.get with utility call 2024-12-07 21:26:25 +02:00
Nadav Tasher
52a02409f0 Use utility function instead of Session.get 2024-12-07 20:37:11 +02:00
Nadav Tasher
eb3377deb8 Revert "Use utility function is autoWidth function"
This reverts commit c06bcac9f3.
2024-12-07 20:35:15 +02:00
Nadav Tasher
c06bcac9f3 Use utility function is autoWidth function 2024-12-07 19:47:19 +02:00
Nadav Tasher
f9f0523112 Updated translations with new texts for auto-width support 2024-12-07 19:00:51 +02:00
Nadav Tasher
f7aa5d0871 Add auto-width and constraint support in list 2024-12-07 19:00:08 +02:00
Nadav Tasher
9576f6807b Add missing functions to users model for auto-width 2024-12-07 18:59:30 +02:00
Nadav Tasher
efe50a65ee Add list constraint support in set-width popup 2024-12-07 18:59:01 +02:00
Nadav Tasher
fb34dd6114 Add auto-width board-header toggle 2024-12-07 18:57:34 +02:00
Nadav Tasher
2ebff3a864 Revert adding migration 2024-12-07 18:56:40 +02:00
Lauri Ojansivu
a3f70735ac Fix WeKan Snap Candidate v7.71 build. There was old version number.
Thanks to xet7 !
2024-12-06 11:22:07 +02:00
Lauri Ojansivu
e1fd915ecd Updated ChangeLog. 2024-12-06 08:31:39 +02:00
Nadav Tasher
0097674fc0 Added initial support for auto-width lists option 2024-12-05 21:46:35 +02:00
Lauri Ojansivu
f6341de610 Updated ChangeLog. 2024-12-05 15:55:49 +02:00
Lauri Ojansivu
17d5fae7bb Updated release scripts: Disabled Docker registry sync. Only pushing WeKan to GitHub, Quay and Docker Hub.
Thanks to xet7 !
2024-12-05 15:52:14 +02:00
Lauri Ojansivu
05eca83b15 v7.71 2024-12-05 13:35:32 +02:00
Lauri Ojansivu
6d004b2095 Updated ChangeLog. 2024-12-05 10:33:31 +02:00
Lauri Ojansivu
46327f19a1 To menu right top username, added Support, to have info about from where to get support.
Thanks to xet7 !
2024-12-05 10:29:15 +02:00
Lauri Ojansivu
d4c8ea9361 v7.70 2024-12-04 18:41:05 +02:00
Lauri Ojansivu
7af0ddc226 Updated ChangeLog. 2024-12-04 14:18:43 +02:00
Lauri Ojansivu
80ea1782f9 Move card to archive, add shortcut key ÷ for Persian keyboard.
Thanks to mohammadZahedian and xet7 !

Fixes https://github.com/wekan/wekan/pull/5589,
fixes https://github.com/wekan/wekan/pull/5576.
2024-12-04 14:11:10 +02:00
Lauri Ojansivu
aa46b42356 Updated ChangeLog. 2024-12-04 13:08:25 +02:00
Lauri Ojansivu
3cd069ffb9
Merge pull request #5598 from wekan/dependabot/github_actions/docker/build-push-action-6.10.0
Bump docker/build-push-action from 6.9.0 to 6.10.0
2024-12-03 13:39:14 +02:00
dependabot[bot]
e621ad6d7c
Bump docker/build-push-action from 6.9.0 to 6.10.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4f58ea7922...48aba3b46d)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 20:59:24 +00:00
Lauri Ojansivu
729d8fb435 Accessibility statement. Part 1. In Progress.
Thanks to xet7 !
2024-12-02 14:17:58 +02:00
Lauri Ojansivu
de2ddbe8b5 Fix typo. 2024-12-02 10:51:48 +02:00
Lauri Ojansivu
57ddd82ef1 v7.69 2024-12-02 08:22:51 +02:00
Lauri Ojansivu
79f7ec2715 Updated release scripts.
Thanks to xet7 !
2024-12-02 08:14:54 +02:00
Lauri Ojansivu
ab4c3bd2fc Updated Keycloak etc login settings at start-wekan.bat and start-wekan.sh.
Thanks to xet7 !
2024-12-02 08:10:32 +02:00
Lauri Ojansivu
bd3a7e1068 Updated ChangeLog. 2024-12-02 06:19:38 +02:00
Lauri Ojansivu
aa33ead7b2 Updated Windows docs. 2024-12-02 06:17:40 +02:00
Lauri Ojansivu
94cf2a80a5 Updated ChangeLog. 2024-11-28 16:37:52 +02:00
Lauri Ojansivu
2ee959a08e
Merge pull request #5597 from malteprang/main
Update docker-compose.yml keycloak part
2024-11-28 16:36:33 +02:00
malteprang
54b7591ca0
Update docker-compose.yml keycloak part 2024-11-28 15:00:00 +01:00
Lauri Ojansivu
b3f0392e7d Updated translations. 2024-11-27 16:28:48 +02:00
Lauri Ojansivu
77e7350e96 Updated ChangeLog. 2024-11-27 16:25:51 +02:00
Lauri Ojansivu
9c87572f90 Updated dependencies.
Thanks to developers of dependencies !
2024-11-27 16:24:11 +02:00
Lauri Ojansivu
65765f6c2f Updated ChangeLog. 2024-11-27 16:16:31 +02:00
Lauri Ojansivu
785b312009
Merge pull request #5595 from walster001/main
Fix issue with comments not showing
2024-11-27 14:48:55 +02:00
walster001
1d9a710e3b
Fix issue with comments not showing 2024-11-27 22:05:43 +10:30
Lauri Ojansivu
909bf811d1
Merge pull request #5590 from wekan/dependabot/github_actions/docker/metadata-action-5.6.1
Bump docker/metadata-action from 5.5.1 to 5.6.1
2024-11-25 23:19:01 +02:00
dependabot[bot]
90abe01286
Bump docker/metadata-action from 5.5.1 to 5.6.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.5.1 to 5.6.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](8e5442c4ef...369eb591f4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 21:17:31 +00:00
Lauri Ojansivu
2c13d74c5f
Merge pull request #5589 from NadavTasher/feature/change-card-archive-shortcut
Opinion - Change archive-card shortcut to backtick for better ergonomics
2024-11-24 22:13:21 +02:00
Lauri Ojansivu
5d975c5da4 Updated ChangeLog. 2024-11-24 21:17:10 +02:00
Nadav Tasher
35c1057527 Change archive-card shortcut to backtick for better ergonomics 2024-11-24 20:55:36 +02:00
Lauri Ojansivu
3912181857 v7.68 2024-11-24 20:44:30 +02:00
Lauri Ojansivu
b9a01eb5d6 Updated ChangeLog. 2024-11-24 20:35:28 +02:00
Lauri Ojansivu
3027f0acb0 Updated translations. 2024-11-24 20:34:34 +02:00
Lauri Ojansivu
609c2a5ddb Updated ChangeLog. 2024-11-24 20:33:32 +02:00
Lauri Ojansivu
f76d648012 Merge branch 'feature/new-dockerfile' of https://github.com/NadavTasher/wekan 2024-11-24 20:13:14 +02:00
Nadav Tasher
203bf92a0a Fix data directory regression 2024-11-24 19:49:32 +02:00
Lauri Ojansivu
3e8cc9e905 Merge branch 'feature/new-dockerfile' of https://github.com/NadavTasher/wekan 2024-11-24 04:22:27 +02:00
Nadav Tasher
b9f32c1739 Remove ulimit from Dockerfile 2024-11-24 02:01:10 +02:00
Nadav Tasher
7e1c65f616 Removed stack-size changing, replaced with FD limit 2024-11-24 01:29:56 +02:00
Nadav Tasher
447ae93476 Updated NodeJS version to v14.21.4 (Meteor ESM) 2024-11-24 00:46:29 +02:00
Nadav Tasher
6df40f41ac Change source of GitHub wekan packages to HTTPs (eliminates git ls-remote) 2024-11-23 23:21:12 +02:00
Nadav Tasher
3e0ef3d070 Created efficient multi-stage Dockerfile 2024-11-23 23:20:57 +02:00
Lauri Ojansivu
33a17a9a1b v7.67 2024-11-21 01:42:38 +02:00
Lauri Ojansivu
aed4bfb7f4 Updated translations. 2024-11-21 01:33:11 +02:00
Nadav Tasher
78f7c3e5bd Updated theming documentation on sidebar coloring 2024-11-21 00:43:20 +02:00
Nadav Tasher
d764047c1f Remove non-effective height property (does nothing here) 2024-11-21 00:42:23 +02:00
Nadav Tasher
65015ea7c7 Remove non-required sidebar-shadow div in favor of direct sidebar background 2024-11-21 00:41:57 +02:00
Nadav Tasher
6ef2d9cb9d Remove bottom margin from sidebar (causes an out-of-theme white gap) 2024-11-21 00:24:40 +02:00
Nadav Tasher
c39fdab11d Disable scrollbar hiding in swimlanes 2024-11-21 00:14:04 +02:00
Nadav Tasher
547261abb6 Disable scrollbar hiding in sidebar 2024-11-21 00:13:50 +02:00
Nadav Tasher
7696b7b769 Disable scrollbar hiding in list 2024-11-21 00:13:34 +02:00
Nadav Tasher
585635494a Disable scrollbar hiding in cardDetails 2024-11-21 00:13:22 +02:00
Nadav Tasher
a36e80099a Revert "Revert some scrollbar, sidebar and list width changes."
This reverts commit 096fe130f6.
2024-11-21 00:10:49 +02:00
Nadav Tasher
f5f8a4f6fb Revert "Updated translations."
This reverts commit 83a12a9a26.
2024-11-21 00:10:30 +02:00
Lauri Ojansivu
e207bff91f v7.65 2024-11-20 21:22:23 +02:00
Lauri Ojansivu
a2c7c230ef Updated ChangeLog. 2024-11-20 21:16:21 +02:00
Lauri Ojansivu
83a12a9a26 Updated translations. 2024-11-20 21:14:01 +02:00
Lauri Ojansivu
096fe130f6 Revert some scrollbar, sidebar and list width changes.
Thanks to xet7 !

Fixes #5585,
fixes https://github.com/wekan/wekan/pull/5583
2024-11-20 21:08:06 +02:00
Lauri Ojansivu
12d22f92b2 v7.64 2024-11-20 09:08:49 +02:00
Lauri Ojansivu
017628e2a6 Updated ChangeLog. 2024-11-20 08:57:40 +02:00
Lauri Ojansivu
332b9f5816 Updated translations. 2024-11-20 08:49:46 +02:00
Lauri Ojansivu
09a96c1118 Updated translations. 2024-11-20 08:15:19 +02:00
Lauri Ojansivu
82750ee8a2 Updated translations. 2024-11-20 03:04:51 +02:00
Lauri Ojansivu
4e89f27768 Updated translations. 2024-11-20 02:53:30 +02:00
Lauri Ojansivu
6f60235a3f
Merge pull request #5584 from NadavTasher/feature/fix-minimum-width-on-list-auto-width
Improve list auto-width, fix regressions
2024-11-20 02:47:45 +02:00
Lauri Ojansivu
42be851d64
Merge pull request #5583 from NadavTasher/feature/better-scrollbar-disabling
Change way of disabling scrollbars, disable swimlane scrollbars
2024-11-20 02:44:45 +02:00
Nadav Tasher
6c32c210f8 Disable scrollbars in swimlanes 2024-11-20 01:20:40 +02:00
Nadav Tasher
aca665ae4e Changed method of scrollbar hiding 2024-11-20 01:20:10 +02:00
Nadav Tasher
09bee30610 Change list width translation 2024-11-20 00:49:24 +02:00
Nadav Tasher
87d53f6f93 Fix dragscroll inside swimlanes 2024-11-20 00:48:13 +02:00
Nadav Tasher
98cf7ec715 Change max-width to min-width so that lists will only shrink when there is no space left 2024-11-20 00:47:45 +02:00
Lauri Ojansivu
12e50d93df
Merge pull request #5581 from NadavTasher/feature/default-lists-to-space-evenly
Make lists fill up space evenly, change listWidth to max-width
2024-11-18 03:24:56 +02:00
Lauri Ojansivu
dfcdb1994b
Merge pull request #5580 from NadavTasher/bugfix/add-missing-semicolon
Add missing semicolon in keyboard.js
2024-11-18 03:24:28 +02:00
Nadav Tasher
30a5b87370 Change list width to max width, default to even spacing 2024-11-17 23:05:21 +02:00
Nadav Tasher
465e2b1b6a Remove swimlane size limit 2024-11-17 23:03:56 +02:00
Lauri Ojansivu
1ae52bbdb1 Updated translations. 2024-11-17 12:41:56 +02:00
Nadav Tasher
d0024d397a Add missing semicolon 2024-11-16 23:35:39 +02:00
Lauri Ojansivu
0b2cdc4d56 v7.63 2024-11-16 21:37:58 +02:00
Lauri Ojansivu
92af6f71d9 Updated scaling docs.
Thanks to xet7 !
2024-11-16 21:36:35 +02:00
Lauri Ojansivu
8879b8498f Updated translations. 2024-11-16 21:19:04 +02:00
Lauri Ojansivu
ad7e0e0bf9 Updated ChangeLog. 2024-11-16 21:17:37 +02:00
Lauri Ojansivu
edb7398295 Revert adding more stack size.
Thanks to xet7 !
2024-11-16 21:16:30 +02:00
Lauri Ojansivu
cfca28e25a Updated translations. 2024-11-16 21:00:46 +02:00
Lauri Ojansivu
a811e22f95 Updated ChangeLog. 2024-11-16 20:53:41 +02:00
Lauri Ojansivu
fbb2e6e261
Merge pull request #5578 from NadavTasher/feature/various-style-improvements
Sidebar style overhaul - absolute positioning, weird style fixes, disable sidebar scrollbar
2024-11-16 20:19:18 +02:00
Lauri Ojansivu
c44b99d515
Merge pull request #5577 from NadavTasher/feature/new-keyboard-shortcut-for-assigning-user
Potential bug(fix?) - Add assign-self keyboard shortcut (old shortcut actually adds)
2024-11-16 20:18:42 +02:00
Lauri Ojansivu
0f283e6cdf
Merge pull request #5576 from NadavTasher/bugfix/change-archive-shortcut-to-minus
Change move-to-archive keyboard shortcut to '-', because of Ctrl + C shortcut
2024-11-16 20:17:30 +02:00
Nadav Tasher
b7e8f796a3 Sidebar overhaul - change position to absolute, fix weird style bugs, disable scrollbar 2024-11-16 18:56:38 +02:00
Nadav Tasher
d63507dd97 Add margin to member and assignee avatars 2024-11-16 17:53:36 +02:00
Nadav Tasher
e1168b5107 Added keyboard shortcut to "assign self" and rename old shortcut to "add self" 2024-11-16 17:40:35 +02:00
Nadav Tasher
cecb4b8336 Change move-to-archive keyboard shortcut to '-' 2024-11-16 17:34:16 +02:00
Lauri Ojansivu
5bbbf9d0e6
Merge pull request #5575 from NadavTasher/feature/disable-filter-menu-popup-when-using-keyboard-filters
Disable sidebar showing when filtering using keyboard shortcut
2024-11-16 17:33:15 +02:00
Lauri Ojansivu
29775eef9a Updated ChangeLog. 2024-11-16 17:32:45 +02:00
Lauri Ojansivu
3f3e645c96
Merge pull request #5574 from NadavTasher/feature/support-shortcuts-when-not-using-english-keyboard-layout
Patch to allow shortcuts to work when another keyboard layout is used
2024-11-16 17:27:59 +02:00
Nadav Tasher
ebece3f961 Disable sidebar showing when filtering using keyboard shortcut 2024-11-16 17:25:42 +02:00
Lauri Ojansivu
4951d409db Updated translations. 2024-11-16 17:22:37 +02:00
Nadav Tasher
cf90511f3c Added multi-language support for keyboard shortcuts 2024-11-16 17:21:47 +02:00
Lauri Ojansivu
4ec0e63d99
Merge pull request #5573 from NadavTasher/feature/hide-scrollbars-in-card-details-and-lists
Hide scrollbars where they interrupt
2024-11-16 17:21:29 +02:00
Nadav Tasher
08843a9dd6 Hide scrollbars from lists (middle of the screen) 2024-11-16 17:18:46 +02:00
Nadav Tasher
b3f229dc86 Hide scrollbars from card details popup 2024-11-16 17:17:05 +02:00
Lauri Ojansivu
18b74e7a61
Merge pull request #5572 from NadavTasher/feature/right-to-left
Fix some text alignment issues when using RTL languages
2024-11-16 17:16:20 +02:00
Lauri Ojansivu
c60961cbb1
Merge pull request #5571 from NadavTasher/feature/always-close-sidebar-on-escape
Always close sidebar when user clicks ESC
2024-11-16 17:15:48 +02:00
Lauri Ojansivu
3338fc366d
Merge pull request #5570 from NadavTasher/feature/new-card-keyboard-shortcut
Added 'n' shortcut for adding new minicards to current list
2024-11-16 17:15:22 +02:00
Nadav Tasher
79cbf25b73 Fix some text alignment issues when using RTL languages 2024-11-16 17:14:03 +02:00
Nadav Tasher
7963118032 Always close sidebar on escape button 2024-11-16 17:07:25 +02:00
Nadav Tasher
35e6c938dc Added 'n' shortcut for adding new minicards 2024-11-16 17:03:59 +02:00
Lauri Ojansivu
c632bc4555 Merge newest changes. 2024-11-15 23:35:13 +02:00
Lauri Ojansivu
7a34bc3eb0 Updated Docker base image to Ubuntu 24.10.
Thanks to Ubuntu developers !
2024-11-15 23:33:18 +02:00
Lauri Ojansivu
6e0d41834c v7.62 2024-11-15 23:30:15 +02:00
Lauri Ojansivu
4bcbaf9113 Updated ChangeLog. 2024-11-15 23:24:19 +02:00
Lauri Ojansivu
5448a15691 Updated docs sidebar.
Thanks to xet7 !
2024-11-15 23:22:46 +02:00
Lauri Ojansivu
c63feb3ff3 Updated ChangeLog. 2024-11-15 23:21:32 +02:00
Lauri Ojansivu
fb4d95672e Update Snap Candidate to MongoDB 6.0.19. Updated WeKan Windows version numbers. Added Cron docs.
Thanks to xet7 !
2024-11-15 23:19:36 +02:00
Lauri Ojansivu
bfb1658abe Updated translations. 2024-11-15 23:04:29 +02:00
Lauri Ojansivu
79e2c9175f Updated ChangeLog. 2024-11-15 22:56:59 +02:00
Lauri Ojansivu
b9c2d49a1c Updated translations. 2024-11-15 22:44:46 +02:00
Lauri Ojansivu
a25eb4ded6 Updated translations. 2024-11-15 22:39:14 +02:00
Lauri Ojansivu
3851de2774
Merge pull request #5569 from mfilser/checklist_items_hide_per_checklist
each checklist can now be configured to hide checked checklist items
2024-11-15 22:04:03 +02:00
Martin Filser
0783b733b0 Checklist, hide all checklist items possible, regardless if the checklist item is finished or not 2024-11-15 21:00:06 +01:00
Martin Filser
bb17feaa17 Checklist, hide checked checklist items (configureable at each checklist) 2024-11-15 21:00:06 +01:00
Lauri Ojansivu
7623c8dcb7
Merge pull request #5568 from mfilser/checklist_multiline_insert
Checklist multiline insert (many checklist items at once)
2024-11-15 21:59:36 +02:00
Martin Filser
1d7eb8a03b Checklist, adding many items set's now the sorting correctly 2024-11-15 20:56:36 +01:00
Martin Filser
c5712f5ae0 Checklist multiline option, adding description to both checkbox options 2024-11-15 20:54:30 +01:00
Martin Filser
00e5808a4c Checklist multiline option, adding option to keep the origin order if many items are added at the checklist top 2024-11-15 20:54:29 +01:00
Lauri Ojansivu
0a591564fd
Merge pull request #5567 from mfilser/checklist_items_hide_per_card
Checklist items hide per card
2024-11-15 21:52:25 +02:00
Martin Filser
8448068d22 hide empty checklist if checklist items are hidden
conditions are:
- the checklist must have at least 1 checklist item
- all checklist items have to be finished
- the option "hide checked checklist items" is set at card details
2024-11-15 20:35:18 +01:00
Martin Filser
9fa36c3991 hide checklist-items per card now
- performance relevant
- more granular setting
2024-11-15 20:35:18 +01:00
Martin Filser
d949753d54 preparation hide checklist-items per card 2024-11-15 20:35:17 +01:00
Lauri Ojansivu
f6d2b08025
Merge pull request #5566 from mfilser/card_comment_section
added comment section on card details to avoid loading the card comment activities from the server
2024-11-15 21:21:12 +02:00
Martin Filser
8a446de3e9 added comment section on card details to avoid loading the card comment activities from the server
- and added to show only the activities a card

- to display the card comments a connection to the server was needed to get the activities of the card comments, now, it's not necessary
- also performance relevant. until now there were a lot of activities loaded, now only of the current card
2024-11-15 19:55:07 +01:00
Lauri Ojansivu
0196f46094 Merge branch 'main' of github.com:wekan/wekan 2024-11-11 17:46:43 +02:00
Lauri Ojansivu
bd83b3bc8e Add info about if Snap slow 2024-11-11 17:46:09 +02:00
Lauri Ojansivu
89347abf53 Updated ChangeLog. 2024-11-02 18:56:52 +02:00
Lauri Ojansivu
a27f8ecfa9 Fix Warning: missing space before text for line 210 of jade file client/components/activities/activities.jade
Thanks to xet7 !
2024-11-02 18:55:33 +02:00
Lauri Ojansivu
75ca4920c5 Updated ChangeLog. 2024-11-02 18:36:10 +02:00
Lauri Ojansivu
324be07b85 Add more stack size.
Thanks to xet7 !
2024-11-02 18:34:51 +02:00
Lauri Ojansivu
282a5b30f9 Updated ChangeLog. 2024-11-02 18:19:50 +02:00
Lauri Ojansivu
b24acefa6f Updated dependencies.
Thanks to developers of dependencies!
2024-11-02 18:18:14 +02:00
Lauri Ojansivu
751b519167 Updated ChangeLog. 2024-11-02 18:17:34 +02:00
Lauri Ojansivu
330aec2bdd
Merge pull request #5555 from emmanuel-ferdman/main
Update `ldap-sync.py` reference
2024-11-02 16:42:08 +02:00
Emmanuel Ferdman
d5635c3a89
Update ldap-sync.py reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-11-01 23:09:16 -07:00
Lauri Ojansivu
1e86d67bfe Updated ChangeLog. 2024-10-31 00:25:30 +02:00
Lauri Ojansivu
8ac9353c53 Copied from Sandstorm developer discussions to docs fix for running Sandstorm at Ubuntu 24.04.
Thanks to xet7 !
2024-10-31 00:23:45 +02:00
Lauri Ojansivu
1557970170 Updated ChangeLog. 2024-10-31 00:13:33 +02:00
Lauri Ojansivu
508bbb37ce Add docs about how at LXC/LXD Fix: System does not fully support snapd.
Thanks to xet7 !
2024-10-31 00:11:15 +02:00
Lauri Ojansivu
a90fc396a9 Updated ChangeLog. 2024-10-30 22:36:26 +02:00
Lauri Ojansivu
96627540da Updated docs about Linked Cards.
Thanks to xet7 !
2024-10-30 22:34:53 +02:00
Lauri Ojansivu
db6ebe0470 Updated ChangeLog. 2024-10-23 02:06:35 +03:00
Lauri Ojansivu
559251eb0d Copied updated Docs from wiki to WeKan repo.
Thanks to xet7 !
2024-10-23 02:04:30 +03:00
Lauri Ojansivu
23396d1bd6 v7.61 2024-10-23 01:05:15 +03:00
Lauri Ojansivu
9d92a79a28 Updated to MongoDB 6.0.18 at Snap Candidate.
Thanks to MongoDB developers !
2024-10-23 01:02:48 +03:00
Lauri Ojansivu
90a64a7403 Updated ChangeLog. 2024-10-23 00:51:43 +03:00
Lauri Ojansivu
f709cc332c
Merge pull request #5552 from mfilser/master
Fixing opening cards and slow performance of closing cards
2024-10-23 00:35:49 +03:00
Martin Filser
c925a27870 Fixing opening cards and slow performance of closing cards
Fixes: #5533
Fixes: #5548

Revert "Switch from kadira:flow-router to ostrio:flow-router-extra"

This reverts commit 718c1a393d.
2024-10-22 21:45:36 +02:00
Lauri Ojansivu
d31403a918 Updated ChangeLog. 2024-10-20 00:08:24 +03:00
Lauri Ojansivu
f9051d768c Updated translations. 2024-10-20 00:06:08 +03:00
Lauri Ojansivu
06eb2adeaa
Merge pull request #5549 from AdenKoziol/main
renaming list shows in activities
2024-10-20 00:00:01 +03:00
Aden Koziol
12af3a5d10 renaming list shows in activities 2024-10-16 16:40:20 -05:00
Lauri Ojansivu
8bf94d6ac6
Merge pull request #5538 from namar0x0309/patch-1
Update Candidate-WeKan-Snap-Manual-Upgrade.md in order to create a proper sh file snap-settings.sh
2024-10-03 05:44:19 +03:00
Nas A.
15af5d2c2e
Update Candidate-WeKan-Snap-Manual-Upgrade.md
"sudo snap get wekan" outputs key value pairs but not sh code to set those values in snap wekan environment. 

Fixing this here
2024-10-02 16:40:16 -07:00
Lauri Ojansivu
60c5c5c723
Merge pull request #5535 from wekan/dependabot/github_actions/docker/build-push-action-6.9.0
Bump docker/build-push-action from 6.7.0 to 6.9.0
2024-10-01 15:00:48 +03:00
Lauri Ojansivu
f972da7442
Merge pull request #5534 from majus/master
Update VSCode debugging configuration
2024-10-01 15:00:33 +03:00
dependabot[bot]
948537cb75
Bump docker/build-push-action from 6.7.0 to 6.9.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5cd11c3a4c...4f58ea7922)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 20:09:47 +00:00
Denis Perov
ec5d0d00f5 Update VSCode debugging configuration 2024-09-30 16:23:27 +03:00
Lauri Ojansivu
0e7c454013 Updated ChangeLog. 2024-09-24 07:33:25 +03:00
Lauri Ojansivu
6e8e581ceb Testing packages without versions from 2024-09-24 07:22:22 +03:00
Lauri Ojansivu
2ec435af41 Updated ChangeLog. 2024-09-24 00:54:11 +03:00
Lauri Ojansivu
5aa38c2e40 Try 6 to fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-24 00:52:42 +03:00
Lauri Ojansivu
0ff3952a8b Updated ChangeLog. 2024-09-24 00:27:50 +03:00
Lauri Ojansivu
e32d2daa45 Try 5 to fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-24 00:26:15 +03:00
Lauri Ojansivu
57780801aa Updated ChangeLog. 2024-09-24 00:03:42 +03:00
Lauri Ojansivu
ecdfc68170 Try 4 to fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-24 00:02:00 +03:00
Lauri Ojansivu
3b29678ef1 Updated ChangeLog. 2024-09-23 23:11:53 +03:00
Lauri Ojansivu
6c54b38cdf Try 3 to fix apparmor denied in syslog at Snap Candidate. Changed MongoDB --host back to --bind_ip.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-23 23:08:47 +03:00
Lauri Ojansivu
dfcabc5a36 v7.60 2024-09-23 22:00:47 +03:00
Lauri Ojansivu
5c8cf2ebbd Updated ChangeLog. 2024-09-23 21:18:54 +03:00
Lauri Ojansivu
a9d41217bd Removed outdated dependency page. To be seen, does anything break.
Thanks to xet7 !
2024-09-23 21:15:19 +03:00
Lauri Ojansivu
75f44a821c Merge branch 'feature/ostrio-flow-router-extra' of https://github.com/majus/wekan 2024-09-23 20:52:11 +03:00
Lauri Ojansivu
0ab16764d1 Updated ChangeLog. 2024-09-23 20:28:13 +03:00
Lauri Ojansivu
b6e7e03c95 Added to Docs CNAME DNS info about CloudFlare and Sandstorm.
Thanks to xet7 !
2024-09-23 20:26:20 +03:00
Denis Perov
718c1a393d Switch from kadira:flow-router to ostrio:flow-router-extra 2024-09-23 19:25:55 +03:00
Lauri Ojansivu
50f3316088 Removed old models files that caused problems with login.
Thanks to xet7 !
2024-09-15 19:40:49 +03:00
Lauri Ojansivu
2727651897 Comment out not in use old attachments models code. 2024-09-08 17:42:04 +03:00
Lauri Ojansivu
e72646a4d4 Add back old attachments models for attachment migrations.
Thanks to xet7 !
2024-09-08 16:46:17 +03:00
Lauri Ojansivu
8ef8d546c5 v7.59 2024-09-04 21:06:53 +03:00
Lauri Ojansivu
a8b2d7a6bd Updated ChangeLog. 2024-09-04 21:00:19 +03:00
Lauri Ojansivu
0a1074ca6e Try 2 to fix apparmor denied in syslog at Snap Candidate. Newest MongoDB uses --host, not anymore --bind_ip.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-04 20:56:32 +03:00
Lauri Ojansivu
019d7c92c3 v7.58 2024-09-04 19:08:01 +03:00
Lauri Ojansivu
cb653e03f2 Updated ChangeLog. 2024-09-04 19:04:18 +03:00
Lauri Ojansivu
a6c8833f65 Try to fix apparrmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-04 19:01:41 +03:00
Lauri Ojansivu
f00b39d154 v7.57 2024-09-04 11:57:53 +03:00
Lauri Ojansivu
39597e04ac Updated ChangeLog. 2024-09-04 10:57:49 +03:00
Lauri Ojansivu
1610eff0e9 Updated dependencies.
Thanks to developers of dependencies.
2024-09-04 10:55:48 +03:00
Lauri Ojansivu
c944f9fdff Updated ChangeLog. 2024-09-04 10:37:38 +03:00
Lauri Ojansivu
9b4d4c5953
Merge pull request #5523 from walster001/main
Large updates to UI
2024-09-04 10:32:13 +03:00
walster001
a8f09011e9
Exodark Margin Fix
Added 10px margin to ExoDark lists also (following on from Clearblue fix) as with those rounded backgrounded lists I feel it looks nicer to give it some padding. 

Open to other contributors perspective however.
2024-09-04 14:17:11 +09:30
walster001
2e1675969a
Clearblue Margin - comment
Add comment to explain changes to margin in case someone wants to revert in future
2024-09-04 14:10:31 +09:30
walster001
a71973cc80
Clearblue Margin Fix
Fix ClearBlue lists being butted up against the left hand side of the screen when viewed from a non-editor account (IE comment only).
2024-09-04 14:09:28 +09:30
walster001
608ec63899 Large updates to UI
- Added a wide range of updates/tweaks to various board themes
- Better defined theme start/endpoints in code
- Added modern scrollbars matching each theme
- Added styling to scrollbars in pop-over and horizontally across screen
- Tweaks to opacity/themes to work better with board backgrounds.
2024-09-04 13:56:06 +09:30
Lauri Ojansivu
52bdba8e85 Updated ChangeLog. 2024-09-01 19:15:00 +03:00
Lauri Ojansivu
f5b11b15ce
Merge pull request #5519 from LanetNetwork/templ_upd
Update templates
2024-08-28 14:45:24 +03:00
Dmytro Novash
3359559ad2
Merge branch 'wekan:main' into templ_upd 2024-08-28 14:24:28 +03:00
Dmytro Novash
b4aa464473 use label instead of span 2024-08-28 14:23:35 +03:00
Lauri Ojansivu
dbe31a86b7
Update LICENSE 2024-08-28 05:27:49 +03:00
Lauri Ojansivu
bd283ff4e2
Merge pull request #5517 from walster001/main
Rework fix for mobile devices to incorporate all themes/list headers
2024-08-27 20:58:27 +03:00
walster001
c020ce8895
Remove vertical-align - doesn't fix for all board themes 2024-08-27 19:53:19 +09:30
walster001
f3562525db Create boardColors.css 2024-08-27 19:50:01 +09:30
walster001
cc89c35c8d Merge branch 'main' of https://github.com/walster001/wekan-atlanz 2024-08-27 19:38:38 +09:30
walster001
2457084db2
Update padding values/display for Mobile Devices
Have modified this in my test dev server, it appears this is the property that defines the spacing/containment of text for lists. When tested on iOS device this appears to work correctly. 

Last commit removing vertical align, and iinitial commit unsetting line height for ModernDark fixes an issue where text was super spaced out on ModernDark theme only.
2024-08-27 19:31:13 +09:30
walster001
508a2d7103
Revert vertical-align. Left line-height unset.
Didn't fix issue as its more than just modern-dark theme. Have played around on dev server and found its in the list css itself.
2024-08-27 19:28:06 +09:30
Lauri Ojansivu
3d7fef67d8 v7.56 2024-08-26 17:39:24 +03:00
Lauri Ojansivu
d63d445b7d Upgraded Snap Candidate MongoDB to 6.0.17.
Thanks to MongoDB developers !
2024-08-26 17:30:05 +03:00
Lauri Ojansivu
8d3fe29c68
Update Browser-compatibility-matrix.md 2024-08-23 15:29:46 +03:00
Lauri Ojansivu
ad3ecbfd96
Update Browser-compatibility-matrix.md 2024-08-23 15:28:21 +03:00
Lauri Ojansivu
51ec43e7bc
Update Browser-compatibility-matrix.md 2024-08-23 15:27:24 +03:00
Lauri Ojansivu
88dfc57e7e
Update Browser-compatibility-matrix.md 2024-08-23 15:25:13 +03:00
Lauri Ojansivu
7409c366f6
Update Browser-compatibility-matrix.md 2024-08-23 15:24:01 +03:00
Lauri Ojansivu
b99b2a6d66
Update Browser-compatibility-matrix.md 2024-08-23 15:21:21 +03:00
walster001
fa21b00bb6
Merge branch 'wekan:main' into main 2024-08-23 00:27:31 +09:30
walster001
f061b5e12a Clean up theme descriptions, add scrollbars
- Cleaned up theme descriptions as many themes weren't labelled/or had mismatched descriptions.
- Began adding scrollbars to default themes/board canvases.
- Test removal of lines/editing margins on nephritis theme
2024-08-23 00:25:29 +09:30
Lauri Ojansivu
8ca642edc8 Updated ChangeLog. 2024-08-21 00:55:31 +03:00
Lauri Ojansivu
c3909edc5e Fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-08-21 00:52:15 +03:00
Lauri Ojansivu
f4cf09d394
Merge pull request #5511 from wekan/dependabot/github_actions/docker/build-push-action-6.7.0
Bump docker/build-push-action from 6.6.1 to 6.7.0
2024-08-19 23:37:54 +03:00
dependabot[bot]
6aa4f9fb86
Bump docker/build-push-action from 6.6.1 to 6.7.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](16ebe778df...5cd11c3a4c)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 20:10:48 +00:00
Lauri Ojansivu
a31545824e Updated ChangeLog. 2024-08-19 22:23:18 +03:00
Lauri Ojansivu
a94cfd5b91
Update Docker.md for docker compose commands and building custom docker image
Update Docker.md for docker compose commands and building custom docker image
2024-08-19 11:03:58 +03:00
Lauri Ojansivu
6d6d51310e
Update docker-compose.yml docker compose command
Update docker-compose.yml docker compose command
2024-08-19 11:00:47 +03:00
Lauri Ojansivu
c9cf2971de
Merge pull request #5505 from wekan/dependabot/github_actions/docker/build-push-action-6.6.1
Bump docker/build-push-action from 6.5.0 to 6.6.1
2024-08-12 23:47:53 +03:00
dependabot[bot]
54c481e3d8
Bump docker/build-push-action from 6.5.0 to 6.6.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5176d81f87...16ebe778df)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 20:46:26 +00:00
Lauri Ojansivu
8b4fbd266d
Merge pull request #5503 from walster001/main
Fix ModernDark Mobile View List Titles
2024-08-12 22:56:01 +03:00
Lauri Ojansivu
3c5241b007 Updated ChangeLog. 2024-08-12 22:09:48 +03:00
Lauri Ojansivu
42a1f94931 Updated ChangeLog. 2024-08-12 22:04:43 +03:00
Lauri Ojansivu
cae6f38b80 Updated code of conduct. 2024-08-12 21:59:01 +03:00
walster001
25722e5e9d
Tweaks to exodark for board backgrounds
Removed drop shadow on exodark cards, as when background applied to board it looks a bit rough design wise. 

Added background-color that will disappear when background is applied, and when background is not applied gives exodark a bit of a smoother cleaner look IMO
2024-08-12 23:49:12 +09:30
walster001
1d339ec17e
Update boardColors.css 2024-08-12 21:28:14 +09:30
Lauri Ojansivu
ec534c8cca
Update Browser-compatibility-matrix.md 2024-08-11 19:15:15 +03:00
Lauri Ojansivu
cab285c34d
Update Browser-compatibility-matrix.md 2024-08-11 19:12:36 +03:00
Lauri Ojansivu
975993dd6d v7.55 2024-08-08 17:32:35 +03:00
Lauri Ojansivu
43084eb664 Updated ChangeLog. 2024-08-08 17:25:16 +03:00
Lauri Ojansivu
0e770ac3b3
Merge pull request #5501 from walster001/main
Fix board backgrounds not showing correctly after V7.54
2024-08-08 17:20:08 +03:00
walster001
206abc8c68 Fix board backgrounds not showing correctly.
Fixed board backgrounds not showing correctly on the following themes. Various code modified as different themes have used different code to implement the background.

Have tried to stick with board-wrapper as a standard to apply the background colour to.
Board background image will override board-wrapper colour every time.

Dark
Relax
Natural
Modern
ModernDark
Exodark
CleanDark
CleanLight

- Updated pull due to original file I had stored on my pc 139 commits behind! So synced that and then redid code changes to bring it all up to date.
2024-08-08 23:34:09 +09:30
walster001
62b13cc343 Merge branch 'main' of https://github.com/walster001/wekan-atlanz 2024-08-08 23:23:00 +09:30
walster001
7822dd3b75 Fix board backgrounds not showing correctly
Fixed board backgrounds not showing correctly on the following themes.
Various code modified as different themes have used different code to implement the background.

Have tried to stick with board-wrapper as a standard to apply the background colour to.

Board background image will override this every time.

- Dark
- Relax
- Natural
- Modern
- ModernDark
- Exodark
- CleanDark
- CleanLight
2024-08-08 22:51:07 +09:30
Lauri Ojansivu
a214cd64b6 v7.54 2024-08-07 17:51:01 +03:00
Lauri Ojansivu
8839a8ea39 Updated ChangeLog. 2024-08-07 17:26:47 +03:00
Lauri Ojansivu
a4169f3da7 Fix LDAP login fails after upgrade.
Thanks to juppees !

Fixes #5499
2024-08-07 17:24:14 +03:00
Lauri Ojansivu
19d59b3ab4 Updated ChangeLog. 2024-08-07 00:25:57 +03:00
Lauri Ojansivu
27b2e2384c
Merge pull request #5498 from mfilser/master
Bugfix, edit description didn't work if it was clicked
2024-08-07 00:24:58 +03:00
Lauri Ojansivu
49d2cbc2c1 Updated ChangeLog. 2024-08-07 00:23:49 +03:00
Martin Filser
bf2b3b40cd Bugfix, edit description didn't work if it was clicked
- introduced by commit: 0cc63b810c
2024-08-06 23:22:58 +02:00
Lauri Ojansivu
1541c6ca23
Merge pull request #5497 from mfilser/master
listHeader, simpler code logic at collapsed if conditions
2024-08-07 00:22:23 +03:00
Lauri Ojansivu
42c1ff94e2 Updated ChangeLog. 2024-08-07 00:13:13 +03:00
Martin Filser
53aa5ebc17 listHeader, simpler code logic at collapsed if conditions 2024-08-06 23:12:31 +02:00
Lauri Ojansivu
0f43818757
Merge pull request #5496 from mfilser/master
Bugfix, Cards Count on mobile view was missing
2024-08-07 00:12:11 +03:00
Lauri Ojansivu
f3c5b1eb07 Updated ChangeLog. 2024-08-07 00:11:36 +03:00
Martin Filser
517d1bb7fa Bugfix, Cards Count on mobile view was missing
introduced by:
a601ba542a
2024-08-06 23:10:30 +02:00
Lauri Ojansivu
6ee0919ead
Merge pull request #5495 from mfilser/master
Editor, Bugfix, copy text is now at each editor (textarea) again
2024-08-07 00:10:03 +03:00
Martin Filser
13eb1a58e0 Editor, migrate to markdown at same line than copy text icon 2024-08-06 23:06:51 +02:00
Martin Filser
08f9c09484 Editor, Bugfix, copy text is now at each editor (textarea) again 2024-08-06 23:05:54 +02:00
Lauri Ojansivu
3f3abe26ee Updated ChangeLog. 2024-08-07 00:05:09 +03:00
Lauri Ojansivu
e31c5b6d42
Merge pull request #5494 from mfilser/master
Minicard, show creator, defaultValue of schema and other code is now the same
2024-08-07 00:03:47 +03:00
Martin Filser
7bf77fa7cb Minicard, show creator, defaultValue of schema and other code is now the same 2024-08-06 23:00:42 +02:00
Lauri Ojansivu
a2662f1366 Updated ChangeLog. 2024-08-06 23:57:40 +03:00
Lauri Ojansivu
116cf6aa21
Merge pull request #5493 from mfilser/master
board view, first column a bit smaller to save screen space
2024-08-06 23:56:20 +03:00
Lauri Ojansivu
79bb6d0c55 Updated ChangeLog. 2024-08-06 23:55:12 +03:00
Martin Filser
c157ecec38 board view, first column to add a new list was too large 2024-08-06 22:53:53 +02:00
Martin Filser
28893cf637 Bugfix, in View "Lists" the first column only showed the first 10 minicards, now all minicards again 2024-08-06 22:53:53 +02:00
Lauri Ojansivu
73ffc99f37
Merge pull request #5492 from mfilser/master
sidebar xmark icon, add padding and background color
2024-08-06 23:53:24 +03:00
Martin Filser
35802c7c62 sidebar xmark-icon, background color on hover the icon 2024-08-06 22:45:51 +02:00
Martin Filser
bc44fdf89c sidebar xmark icon, add padding to easier click 2024-08-06 22:45:51 +02:00
Lauri Ojansivu
030c3dd587 Updated ChangeLog. 2024-08-06 23:38:33 +03:00
Lauri Ojansivu
498be2759e
Merge pull request #5491 from mfilser/master
fix empty parentId in cards
2024-08-06 23:37:38 +03:00
Lauri Ojansivu
649d00733a Updated ChangeLog. 2024-08-06 23:36:07 +03:00
Martin Filser
8a7a4f3033 fix empty parentId in cards
- if the parentId is undefined or empty, the code run in a infinite loop and
  the browser "hangs"
2024-08-06 22:35:16 +02:00
Lauri Ojansivu
b6ce81dc79
Merge pull request #5490 from mfilser/master
change Meteor.user() to ReactiveCache.getCurrentUser()
2024-08-06 23:35:07 +03:00
Lauri Ojansivu
490c417cee Updated ChangeLog. 2024-08-06 23:33:59 +03:00
Martin Filser
2dfeb3924b reactiveCache, removing commented out code 2024-08-06 22:33:03 +02:00
Martin Filser
bff96f6ae2 change Meteor.user() to ReactiveCache.getCurrentUser()
- see also: https://github.com/wekan/wekan/issues/5000
2024-08-06 22:33:03 +02:00
Lauri Ojansivu
4801e26b2f
Merge pull request #5489 from mfilser/master
attachment popup back was broken since new attachment viewer, now fixed
2024-08-06 23:32:53 +03:00
Lauri Ojansivu
027997f7b3 Updated ChangeLog. 2024-08-06 23:32:29 +03:00
Martin Filser
76aaefbde1 attachment popup back was broken since new attachment viewer, now fixed 2024-08-06 22:30:51 +02:00
Lauri Ojansivu
a01bc0f325
Merge pull request #5488 from mfilser/master
remove attachment storage name from attachment list
2024-08-06 23:30:23 +03:00
Martin Filser
f6f4f5660e remove attachment storage name from attachment list
- this was for debugging, now not necessary anymore
2024-08-06 22:26:00 +02:00
Lauri Ojansivu
956925889a Updated ChangeLog. 2024-08-06 23:23:42 +03:00
Lauri Ojansivu
0bd49326d8
Merge pull request #5487 from mfilser/master
little opacity to minicards to see the background image a little bit
2024-08-06 23:22:32 +03:00
Lauri Ojansivu
64c4e8eca8 Updated ChangeLog. 2024-08-06 23:22:04 +03:00
Lauri Ojansivu
55fc342f6d Added info how with Caddy webserver config, PWA and Android app override icons, showing toolbars, etc.
Thanks to xet7 !
2024-08-06 23:19:43 +03:00
Martin Filser
3ae0d96760 little opacity to minicards to see the background image a little bit 2024-08-06 22:03:16 +02:00
Lauri Ojansivu
fc1e55cc19 Updated ChangeLog. 2024-08-06 22:58:13 +03:00
Lauri Ojansivu
58fc810a43
Merge pull request #5486 from mfilser/master
Bugfix, variable "color" didn't exist
2024-08-06 22:55:58 +03:00
Martin Filser
3c477e9783 Bugfix, variable "color" didn't exist
- background-color is maybe wrong too, but better than throwing an exception
2024-08-06 21:50:57 +02:00
Lauri Ojansivu
f2247ed86d Updated ChangeLog. 2024-08-06 22:48:32 +03:00
Lauri Ojansivu
0d9a9d1ed8 Merge branch 'main' of github.com:wekan/wekan 2024-08-06 22:46:00 +03:00
Lauri Ojansivu
ca5a579e22 PWA, move to standalone (standard) to display the status bar.
Thanks to mfilser !

Related https://github.com/wekan/wekan/pull/5484
2024-08-06 22:44:51 +03:00
Lauri Ojansivu
53d97a593f
Merge pull request #5485 from mfilser/master
don't set background image in .board-canvas too
2024-08-06 22:38:27 +03:00
Martin Filser
3641a8f389 don't set background image in .board-canvas too 2024-08-06 21:30:27 +02:00
Lauri Ojansivu
1dea1bd09d
Merge pull request #5483 from mfilser/master
fix error on console when user logout
2024-08-06 19:09:22 +03:00
Martin Filser
3db265d57f fix error on console when user logout (Part 2) 2024-08-06 17:24:43 +02:00
Martin Filser
38a32824ea fix error on console when user logout (Part 1) 2024-08-06 17:24:43 +02:00
Lauri Ojansivu
b0c94f7ff2 Updated ChangeLog. 2024-08-05 13:06:51 +03:00
279 changed files with 19989 additions and 12330 deletions

View file

@ -5,6 +5,8 @@ Please report these issues elsewhere:
- SECURITY ISSUES, PGP EMAIL: https://github.com/wekan/wekan/blob/main/SECURITY.md
- UCS: https://github.com/wekan/univention/issues
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.

View file

@ -38,7 +38,7 @@ jobs:
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
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@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804
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@5176d81f87c23d6fc96624dfdbcd9f3830bbe445
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}

View file

@ -25,6 +25,6 @@ jobs:
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.6.0
uses: helm/chart-releaser-action@v1.7.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

View file

@ -1,6 +1,6 @@
[main]
host = https://www.transifex.com
lang_map = es_AR: es-AR, es_419: es-LA, es_TX: es-TX, he_IL: he-IL, zh_CN: zh-CN, ar_EG: ar-EG, cs_CZ: cs-CZ, fa_IR: fa-IR, ms_MY: ms-MY, nl_NL: nl-NL, de_CH: de-CH, en_IT: en-IT, uz_UZ: uz-UZ, fr_CH: fr-CH, hi_IN: hi-IN, et_EE: et-EE, es_PE: es-PE, es_MX: es-MX, gl_ES: gl-ES, mn_MN: mn, sl_SI: sl, zh_TW: zh-TW, ast_ES: ast-ES, es_CL: es-CL, ja_JP: ja, lv_LV: lv, ro_RO: ro-RO, az_AZ: az-AZ, cy_GB: cy-GB, gu_IN: gu-IN, pl_PL: pl-PL, vep: ve-PP, en_BR: en-BR, en@ysv: en-YS, hu_HU: hu, ko_KR: ko-KR, pt_BR: pt-BR, zh_HK: zh-HK, zu_ZA: zu-ZA, en_MY: en-MY, ja-Hira: ja-HI, fi_FI: fi, vec: ve-CC, vi_VN: vi-VN, fr_FR: fr-FR, id_ID: id, zh_Hans: zh-Hans, en_DE: en-DE, en_GB: en-GB, el_GR: el-GR, uk_UA: uk-UA, az@latin: az-LA, de_AT: de-AT, uz@Latn: uz-LA, vls: vl-SS, ar_DZ: ar-DZ, bg_BG: bg, es_PY: es-PY, fy_NL: fy-NL, uz@Arab: uz-AR, ru_UA: ru-UA, war: wa-RR, zh_CN.GB2312: zh-GB
lang_map = te_IN: te-IN, es_AR: es-AR, es_419: es-LA, es_TX: es-TX, he_IL: he-IL, zh_CN: zh-CN, ar_EG: ar-EG, cs_CZ: cs-CZ, fa_IR: fa-IR, ms_MY: ms-MY, nl_NL: nl-NL, de_CH: de-CH, en_IT: en-IT, uz_UZ: uz-UZ, fr_CH: fr-CH, hi_IN: hi-IN, et_EE: et-EE, es_PE: es-PE, es_MX: es-MX, gl_ES: gl-ES, mn_MN: mn, sl_SI: sl, zh_TW: zh-TW, ast_ES: ast-ES, es_CL: es-CL, ja_JP: ja, lv_LV: lv, ro_RO: ro-RO, az_AZ: az-AZ, cy_GB: cy-GB, gu_IN: gu-IN, pl_PL: pl-PL, vep: ve-PP, en_BR: en-BR, en@ysv: en-YS, hu_HU: hu, ko_KR: ko-KR, pt_BR: pt-BR, zh_HK: zh-HK, zu_ZA: zu-ZA, en_MY: en-MY, ja-Hira: ja-HI, fi_FI: fi, vec: ve-CC, vi_VN: vi-VN, fr_FR: fr-FR, id_ID: id, zh_Hans: zh-Hans, en_DE: en-DE, en_GB: en-GB, el_GR: el-GR, uk_UA: uk-UA, az@latin: az-LA, de_AT: de-AT, uz@Latn: uz-LA, vls: vl-SS, ar_DZ: ar-DZ, bg_BG: bg, es_PY: es-PY, fy_NL: fy-NL, uz@Arab: uz-AR, ru_UA: ru-UA, war: wa-RR, zh_CN.GB2312: zh-GB
[o:wekan:p:wekan:r:application]
file_filter = imports/i18n/data/<lang>.i18n.json

84
.vscode/launch.json vendored
View file

@ -1,45 +1,57 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Meteor: Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
{
"type": "node",
"request": "launch",
"name": "Meteor: Node",
"runtimeExecutable": "meteor",
"runtimeArgs": [
"--port=4000",
"--exclude-archs=web.browser.legacy,web.cordova",
"--raw-logs"
],
"env": {
"WRITABLE_PATH": "/tmp/uploads",
},
{
"type": "node",
"request": "launch",
"name": "Meteor: Node",
"runtimeExecutable": "/home/wekan/.meteor/meteor",
"runtimeArgs": ["run", "--inspect-brk=9229"],
"outputCapture": "std",
"port": 9229,
"timeout": 60000
"outputCapture": "std",
"restart": true,
"timeout": 60000
},
{
"type": "chrome",
"request": "launch",
"name": "Meteor: Chrome",
"url": "http://localhost:4000",
"sourceMapPathOverrides": {
"meteor://💻app/*": "${workspaceFolder}/*"
},
{
"type": "node",
"request": "launch",
"name": "Test: Node",
"runtimeExecutable": "meteor",
"runtimeArgs": [
"test",
"--inspect-brk=9229",
"--port=4040",
"--exclude-archs=web.browser.legacy,web.cordova",
"--driver-package=meteortesting:mocha",
"--settings=settings.json"
],
"outputCapture": "std",
"port": 9229,
"timeout": 60000
}
"userDataDir": "${env:HOME}/.vscode/chrome"
},
{
"type": "node",
"request": "launch",
"name": "Test: Node",
"runtimeExecutable": "meteor",
"runtimeArgs": [
"test",
"--port=4040",
"--exclude-archs=web.browser.legacy,web.cordova",
"--driver-package=meteortesting:mocha",
"--settings=settings.json",
"--raw-logs"
],
"env": {
"TEST_WATCH": "1"
},
"outputCapture": "std",
"timeout": 60000
}
],
"compounds": [
{
"name": "Meteor: All",
"configurations": ["Meteor: Node", "Meteor: Chrome"]
}
{
"name": "Meteor: All",
"configurations": ["Meteor: Node", "Meteor: Chrome"]
}
]
}

View file

@ -15,6 +15,598 @@ Fixing other platforms In Progress.
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
# v7.85 2025-04-21 WeKan ® release
This release adds the following updates:
- Updated Browser compatibility matrix, adding Iris browser at RISC OS Direct, and fixing links.
[Part1](https://github.com/wekan/wekan/commit/db5346fc5c7407160f381c0fcf4a87204206ed55),
[Part2](https://github.com/wekan/wekan/commit/05d1736f5f21e93e83b2e25029c6cab6c5106398).
Thanks to xet7.
- [Updated to MongoDB 6.0.22](https://github.com/wekan/wekan/commit/c1a4250bd2e26be5549704234a3cfb5306120352).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Fix board sidebar menu doesn't open in mobile](https://github.com/wekan/wekan/commit/01950cc796697fa201ac9e4376cb204d308e8181).
Thanks to mimZD and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.84 2025-03-23 WeKan ® release
This release adds the following new features:
- [Time on minicard for Start/End/Due Date](https://github.com/wekan/wekan/pull/5712).
Thanks to Rayene123.
and adds the following updates:
- [Added developer docs about Login code](https://github.com/wekan/wekan/commit/c0e4e01deb936653df69b4fd21598ac27cd349a0).
Thanks to xet7.
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/pull/5718),
[Part 2](https://github.com/wekan/wekan/commit/bb6ac70f63b6f3568b7c943417c698615936a956).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fixed typo at Shortcuts, now became visible translations of assignees visibility 1-9 shortcuts](https://github.com/wekan/wekan/commit/4510ddda1507bc775b9523d3673adba48d7a8385).
Thanks to xet7.
- [Fixed building OpenAPI docs](https://github.com/wekan/wekan/commit/a2911bc9c3bd94ef583388931d2cd354cc8657e3).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.83 2025-03-08 WeKan ® release
This release adds the following updates:
- [Adding Development information to readme](https://github.com/wekan/wekan/pull/5702).
Thanks to adam-fu.
- Updated GitHub actions.
[Part 1](https://github.com/wekan/wekan/pull/5703),
[Part 2](https://github.com/wekan/wekan/pull/5704).
and fixes the following bugs:
- [Removed siteurl from manifest to fix browser console error about not matching URL](https://github.com/wekan/wekan/commit/b402676079517e463ed291285f69c04126a00975).
Thanks to xet7.
- [Exception while invoking method 'copyCard' TypeError: Cannot read property 'name' of undefined](https://github.com/wekan/wekan/pull/5711).
Thanks to Firas-Git.
- [Comment out error message of non-existing Custom Field](https://github.com/wekan/wekan/commit/908a5fc60d5d574a36d4bfd496d3a16fd267ae75).
Thanks to xet7.
- [Reverted Docker changes of WeKan v7.68 to get WeKan Docker version working](https://github.com/wekan/wekan/commit/e7462ada12ec8edfd08d6c3b3a97a034211d51eb).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.82 2025-02-24 WeKan ® release
v7.82 Docker version is broken: https://github.com/wekan/wekan/issues/5697 . Snap Candidate works.
This release adds the following new features:
- [Add possibility to use a token in place of ipaddress to access metrics route](https://github.com/wekan/wekan/pull/5682).
Thanks to salleman33.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/pull/5691).
Thanks to dependabot.
- [Updated requirements at docs](https://github.com/wekan/wekan/commit/148b81262d0d143460e881d645fefa6740aae40d).
Thanks to mueller-ma.
- [Updated dependencies](https://github.com/wekan/wekan/commit/666ee8403388f7d5e1a30cf0e53bc46a70bf1c40).
Thanks to developes of dependencies.
- [Fixed building WeKan. Updated dompurify. Forked Meteor 2.14 version of meteor-node-stubs to update elliptic](https://github.com/wekan/wekan/commit/18d0fa43275cd2955dd6416213e316ca08a62255).
Thanks to developers of depedencies and xet7.
and fixes the following bugs:
- [Added missing ) character](https://github.com/wekan/wekan/commit/563a508e269be87eb713e2888409525e1ba82001).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.81 2025-02-07 WeKan ® release
This release adds the following new features:
- [Helm Chart: Added secretManaged value for enabling or disabling the creation of secret by Helm](https://github.com/wekan/charts/pull/39).
Thanks to salleman33.
and adds the following updates:
- [Updated Docker Actions](https://github.com/wekan/wekan/pull/5670).
Thanks to dependabot.
- [Added Meteor 3.1 learning course to docs](https://github.com/wekan/wekan/commit/0c7e12c5e7f322bdbaaa61100e66153dd0b92e4d).
Thanks to producer of learning course.
- [Upgraded to MongoDB 6.0.20 at Snap Candidate](https://github.com/wekan/wekan/commit/b571f1c9530b899db75bf28a03c18277a9b77cb8).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Fixed env variable METRICS_ACCEPTED_IP_ADDRESS to be same as at docs](https://github.com/wekan/wekan/commit/0b1e0bd39569175668c195b63dde91bf0e6f1b24).
Thanks to salleman33.
- [Fixed misspelling of hours at env variable setting LDAP_BACKGROUND_SYNC_INTERVAL](https://github.com/wekan/wekan/commit/36a307785369337a788499065f64175971878930).
Thanks to hubermam.
- [Helm Chart: Restore pod security context in deployment](https://github.com/wekan/charts/pull/40).
Thanks to adalinesimonian.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.80 2025-01-12 WeKan ® release
This release fixes the following bugs:
- [Fix card updating issues with ReactiveCache when using keyboard shortcuts](https://github.com/wekan/wekan/pull/5654).
Thanks to NadavTasher.
- [Fix assignee toggling keyboard shortcut to only toggle current board members](https://github.com/wekan/wekan/pull/5655).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.79 2025-01-02 WeKan ® release
This release adds the following new features:
- [Add toggle for week-of-year in date displays (ISO 8601)](https://github.com/wekan/wekan/pull/5652).
Thanks to NadavTasher.
- [Assign members using keyboard shortcut Ctrl+Alt+(1-9)](https://github.com/wekan/wekan/pull/5653).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.78 2024-12-31 WeKan ® release
This release fixes the following bugs:
- [Disable scrollbars on older versions of Chrome and Safari in "no vertical scrollbars" mode](https://github.com/wekan/wekan/pull/5644).
Thanks to NadavTasher.
- [Fix styling for vertical scrollbars toggle](https://github.com/wekan/wekan/pull/5645).
Thanks to NadavTasher.
- [Add additional archiving keyboard shortcut (added -)](https://github.com/wekan/wekan/pull/5646).
Thanks to NadavTasher.
- [Fix assign-self shortcut in shortcut help popup (different from actual shortcut)](https://github.com/wekan/wekan/pull/5647).
Thanks to NadavTasher.
- [Fix upper-case keyboard shortcuts & different language shortcuts getting triggered when shortcuts are disabled](https://github.com/wekan/wekan/pull/5648).
Thanks to NadavTasher.
- [Fix list header too wide in cleanlight and cleandark themes](https://github.com/wekan/wekan/pull/5649).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.77 2024-12-30 WeKan ® release
This release adds the following new features:
- [Allow vertical scrollbars to be disabled (new preference)](https://github.com/wekan/wekan/pull/5643).
Thanks to NadavTasher.
and fixes the following bugs:
- [Enable keyboard shortcuts by default](https://github.com/wekan/wekan/pull/5639).
Thanks to NadavTasher.
- [Fix comment backgrounds in cleandark theme](https://github.com/wekan/wekan/pull/5640).
Thanks to NadavTasher.
- [Fix weird add checklist buttons in card details](https://github.com/wekan/wekan/pull/5641).
Thanks to NadavTasher.
- [Fix "SPACE" shortcut not working after recent fixes](https://github.com/wekan/wekan/pull/5642).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.76 2024-12-30 WeKan ® release
This release fixes the following bugs:
- [Always handle the escape key when shortcuts are enabled](https://github.com/wekan/wekan/pull/5636).
Thanks to NadavTasher.
- [New Swimlane button visible, when there are no swimlanes at all](https://github.com/wekan/wekan/pull/5635).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.75 2024-12-29 WeKan ® release
This release fixes the following bugs:
- [Change margins around keyboard shortcuts toggle to make it clearer, remove old toggle from mobile view](https://github.com/wekan/wekan/pull/5634).
Thanks to NadavTasher.
- [Fix Cannot save Layout settings](https://github.com/wekan/wekan/commit/407d018067a5398f0c8d50519096b921d744be68).
Thanks to tensor5g and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.74 2024-12-25 WeKan ® release
This release fixes the following bugs:
- [Restore keyboard shortcuts, enable per-user toggle, fix Ctrl + C bug by checking the text selection range](https://github.com/wekan/wekan/pull/5628).
Thanks to NadavTasher.
- [Fixed keyboard shortcuts defaults, icons and texts to be more understandable](https://github.com/wekan/wekan/commit/955a46ca6016e75c0ac1b01e25f96f47c2844559).
Thanks to xet7.
- ["Auto List Width" is now at "List ☰ Set Width" popup](https://github.com/wekan/wekan/commit/a862486ec37fcd022619c7e45ad9ca615aa444ed).
Thanks to xet7.
- [Keyboard Shortcuts Enable/Disable is now at Right Sidebar, where already was list of Keyboard Shortcuts](https://github.com/wekan/wekan/commit/275ac445d0cd6f817dd2281aacc27ca7d30b17eb).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.73 2024-12-24 WeKan ® release
This release adds the following updates:
- [Changed the default maximum list width](https://github.com/wekan/wekan/pull/5614).
Thanks to NadavTasher.
- [Updated Developer Docs about docker compose](https://github.com/wekan/wekan/commit/3e3b629aa2a9efb43b1be8f57009c1d384b66ed8).
Thanks to sridharin2020 and xet7.
- [Hide support popup. It will be made editable later](https://github.com/wekan/wekan/commit/0332ef32980b24a0c4e108436eec5b112287c14b).
Thanks to xet7.
- [Hide Accessibility Settings at Admin Panel. It will be continued and added back later](https://github.com/wekan/wekan/commit/e70c51a1f033c8712771238e408cbf52487f07f5).
Thanks to xet7.
and fixes the following bugs:
- [Fix buggy behaviours in board dragscrolling](https://github.com/wekan/wekan/pull/5618).
Thanks to NadavTasher.
- [Revert back to have shortcut "c to archive" back for non-Persian keyboards](https://github.com/wekan/wekan/commit/ba0fdaef72393632ca80b42a3c5d2ee5f5e0c76e).
Thanks to hatl and xet7.
- Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
[Part 1](https://github.com/wekan/wekan/commit/5606414f8975fa0f75642d2e3a6b48c7559186f9),
[Part 2](https://github.com/wekan/wekan/commit/94391d4cde7aed6e37efc6a9127b23ef0c2bd323),
[Part 3](https://github.com/wekan/wekan/commit/8b73c702c39a1fd546e591a096d703a53577ffec).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.72 2024-12-08 WeKan ® release
This release adds the following new features:
- [Optional board list auto-width, Support for min & max width for lists](https://github.com/wekan/wekan/pull/5607).
Thanks to NadavTasher.
and adds the following updates:
- [Disabled syncing of old and unrelated docker containers between docker registries](https://github.com/wekan/wekan/commit/17d5fae7bbd96eb6721ad869802cc980c9791c7f).
Thanks to xet7.
and fixes the following bugs:
- [Fix in API user role is not considered](https://github.com/wekan/wekan/commit/c062bd63bbfceb3a96f23ea3e8696534694db54e).
Thanks to mohammadZahedian and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.71 2024-12-05 WeKan ® release
This release adds the following new features:
- [To menu right top username, added Support, to have info about from where to get support](https://github.com/wekan/wekan/commit/46327f19a1c6d37f2e5591aa0cc2a882e4c56ee5).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.70 2024-12-04 WeKan ® release
This release adds the following new features:
- [Helm Chart: Allow to define securityContext for pod and containers](https://github.com/wekan/charts/pull/37).
Thanks to maitredede.
- [Move card to archive, add shortcut key ÷ for Persian keyboard](https://github.com/wekan/wekan/commit/80ea1782f935c74f1b7b1fd0fb7700ef9a39dc64).
Thanks to mohammadZahedian and xet7.
and fixes the following bugs:
- [Helm Chart: Service account token does not need to be mounted in op](https://github.com/wekan/charts/pull/38).
Thanks to maitredede.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.69 2024-12-02 WeKan ® release
This release adds the following updates:
- [Bump docker/metadata-action from 5.5.1 to 5.6.1](https://github.com/wekan/wekan/pull/5590).
Thanks to dependabot.
- [Updated dependencies](https://github.com/wekan/wekan/commit/9c87572f90f16fbdddb6a4dff3984e64acac20cc).
Thanks to developers of dependencies.
- [Updated Windows docs](https://github.com/wekan/wekan/commit/aa33ead7b2efd11bfd9e3f1fb94b564b6bdce119).
Thanks to xet7.
- [Update docker-compose.yml Keycloak part](https://github.com/wekan/wekan/pull/5597).
Thanks to NadavTasher.
- [Updated Keycloak etc login settings at start-wekan.bat and start-wekan.sh](https://github.com/wekan/wekan/commit/ab4c3bd2fc49e6fa82ec47dccdf9670110cddf98).
Thanks to xet7.
- [Updated release scripts](https://github.com/wekan/wekan/commit/79f7ec27159825db9206f385d9281fd68a2aacf5).
Thanks to xet7.
and fixes the following bugs:
- [Fix issue with comments not showing when using Exodark Theme](https://github.com/wekan/wekan/pull/5595).
Thanks to walster001.
- [Change archive-card shortcut to backtick for better ergonomics](https://github.com/wekan/wekan/pull/5589).
Thanks to malteprang.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.68 2024-11-24 WeKan ® release
This release adds the following updates:
- [Speed improvements to building WeKan x86_64 Dockerfile. Reduced Docker image size from 1 GB to 0.5 GB. Using Ubuntu 24.04 Docker base image](https://github.com/wekan/wekan/pull/5588).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.67 2024-11-21 WeKan ® release
This release adds the following new features:
- [Re-introduce list auto-width feature, Reverted scrollbar hiding, Fixed transparent sidebar bug](https://github.com/wekan/wekan/pull/5586).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.65 2024-11-20 WeKan ® release
This release fixes the following bugs:
- [Revert some scrollbar, sidebar and list width changes](https://github.com/wekan/wekan/commit/096fe130f68e0d8d082d309901c75ed04285b7e2).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.64 2024-11-20 WeKan ® release
This release fixes the following bugs:
- [Add missing semicolon in keyboard.js](https://github.com/wekan/wekan/pull/5580).
Thanks to NadavTasher.
- [Make lists fill up space evenly, change listWidth to max-width](https://github.com/wekan/wekan/pull/5581).
Thanks to NadavTasher.
- [Change way of disabling scrollbars, disable swimlane scrollbars](https://github.com/wekan/wekan/pull/5583).
Thanks to NadavTasher.
- [Improve list auto-width, fix regressions](https://github.com/wekan/wekan/pull/5584).
Thanks to NadavTasher.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.63 2024-11-16 WeKan ® release
This release adds the following new features:
- [Always close sidebar when user clicks ESC](https://github.com/wekan/wekan/pull/5571).
Thanks to NadavTasher.
- [Added 'n' shortcut for adding new minicards to current list](https://github.com/wekan/wekan/pull/5570).
Thanks to NadavTasher.
- [Patch to allow shortcuts to work when another keyboard layout is used](https://github.com/wekan/wekan/pull/5574).
Thanks to NadavTasher.
and adds the following updates:
- [Updated scaling docs](https://github.com/wekan/wekan/commit/92af6f71d9c60acbca8f65c7ec1822818186639c).
Thanks to xet7.
and fixes the following bugs:
- [Fix some text alignment issues when using RTL languages](https://github.com/wekan/wekan/pull/5572).
Thanks to NadavTasher.
- [Hide scrollbars where they interrupt](https://github.com/wekan/wekan/pull/5573).
Thanks to NadavTasher.
- [Disable sidebar showing when filtering using keyboard shortcut](https://github.com/wekan/wekan/pull/5575).
Thanks to NadavTasher.
- [Change move-to-archive keyboard shortcut to '-', because of Ctrl + C shortcut](https://github.com/wekan/wekan/pull/5576).
Thanks to NadavTasher.
- [Potential bug(fix?) - Add assign-self keyboard shortcut (old shortcut actually adds)](https://github.com/wekan/wekan/pull/5577).
Thanks to NadavTasher.
- [Sidebar style overhaul - absolute positioning, weird style fixes, disable sidebar scrollbar](https://github.com/wekan/wekan/pull/5578).
Thanks to NadavTasher.
- [Revert adding more stack size](https://github.com/wekan/wekan/commit/edb73982953d63066494dbc096bdeb62f7fe730b).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.62 2024-11-15 WeKan ® release
This release adds the following new features:
- [Added comment section on card details to avoid loading the card comment activities from the server](https://github.com/wekan/wekan/pull/5566).
Thanks to mfilser.
- [Checklist items hide per card](https://github.com/wekan/wekan/pull/5567).
Thanks to mfilser.
- [Checklist multiline insert (many checklist items at once)](https://github.com/wekan/wekan/pull/5568).
Thanks to mfilser.
- [Each checklist can now be configured to hide checked checklist items](https://github.com/wekan/wekan/pull/5569).
Thanks to mfilser.
and adds the following updates:
- [Copied updated Docs from wiki to WeKan repo](https://github.com/wekan/wekan/commit/559251eb0d8aea6a714f14224497d0a25c7a3864).
Thanks to xet7.
- [Updated docs about Linked Cards](https://github.com/wekan/wekan/commit/96627540da0b6e12890ee1660f4ff0f469bb0e25).
Thanks to xet7.
- [Add docs about how at LXC/LXD Fix: System does not fully support snapd](https://github.com/wekan/wekan/commit/508bbb37ce960c88c2a7d0b2cb35e5d8790df19f).
Thanks to xet7.
- [Copied from Sandstorm developer discussions to docs fix for running Sandstorm at Ubuntu 24.04](https://github.com/wekan/wekan/commit/8ac9353c5313402e00160843ca57405ebeb128cb).
Thanks to xet7.
- [Update ldap-sync.py reference](https://github.com/wekan/wekan/pull/5555).
Thanks to emmanuel-ferdman.
- [Updated dependencies](https://github.com/wekan/wekan/commit/b24acefa6f6696b702f2c3ceb28d6d6290017bb2).
Thanks to developers of dependencies.
- [Update Snap Candidate to MongoDB 6.0.19. Updated WeKan Windows version numbers. Added Cron docs](https://github.com/wekan/wekan/commit/fb4d95672e37d849ff52954c79eede2af7d2a509).
Thanks to xet7.
- [Updated docs sidebar](https://github.com/wekan/wekan/commit/5448a1569113142ab5b2440763c9642c88e86ba4)-
Thanks to xet7.
- [Updated Docker base image to Ubuntu 24.10](https://github.com/wekan/wekan/commit/7a34bc3eb03943506abe5e54501d1906fc16540b).
Thanks to Ubuntu developers.
and fixes the following bugs:
- [Add more stack size](https://github.com/wekan/wekan/commit/324be07b859937966f98feb2aeea8f344c689bb0).
Thanks to xet7.
- [Fix Warning: missing space before text for line 210 of jade file client/components/activities/activities.jade](https://github.com/wekan/wekan/commit/a27f8ecfa9971740a019a955d3f8d0e5a5dd8dab).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.61 2024-10-23 WeKan ® release
This release adds the following updates:
- [Testing packages without versions from, for upcoming upgrades](https://github.com/wekan/wekan/commit/6e8e581ceb330a7756403efa1f8bbe5a198ff111).
Thanks to xet7.
- [Updated to MongoDB 6.0.18 at Snap Candidate](https://github.com/wekan/wekan/commit/9d92a79a284147380eb08a0c011a8815dae5209b).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Try 3 to fix apparmor denied in syslog at Snap Candidate. Changed MongoDB --host back to --bind_ip](https://github.com/wekan/wekan/commit/6c54b38cdfd14959f4449cea0c3150bf86708ecd).
Thanks to webenefits and xet7.
- [Try 4 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/ecdfc681700633d8688ca709f36924ceced96af8).
Thanks to webenefits and xet7.
- [Try 5 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/e32d2daa4567728e4dd5048c9c575edcac1372da).
Thanks to webenefits and xet7.
- [Try 6 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/5aa38c2e40429f06aac8bc1bc0b5ac30c5344c6f).
Thanks to webenefits and xet7.
- [Renaming list shows in activities](https://github.com/wekan/wekan/pull/5549).
Thanks to AdenKoziol.
- [Fixing opening cards and slow performance of closing cards by reverting switching kadira:flow-router to ostrio:flow-router-extra](https://github.com/wekan/wekan/pull/5552).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.60 2024-09-23 WeKan ® release
This release adds the following updates:
- [Added to Docs CNAME DNS info about CloudFlare and Sandstorm](https://github.com/wekan/wekan/commit/b6e7e03c95dfa68c8de6922ffb7663631e476d91).
Thanks to xet7.
- [Switch from kadira:flow-router to ostrio:flow-router-extra](https://github.com/wekan/wekan/pull/5530).
Thanks to imajus.
- [Removed outdated dependency page. To be seen, does anything break](https://github.com/wekan/wekan/commit/a9d41217bd8c797b28510efec3e21a92d7ec4bba).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.59 2024-09-04 WeKan ® release
This release tries to fix the following bugs:
- [Try 2 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/0a1074ca6e95728b0da30bd701ba783f2a4bdd98).
Newest MongoDB uses --host, not anymore --bind_ip.
Thanks to webenefits and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.58 2024-09-04 WeKan ® release
This release tries to fix the following bugs:
- [Try to fix apparrmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/a6c8833f652ee84284da2195bf79fb8edaa818b7).
Thanks to webenefits and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.57 2024-09-04 WeKan ® release
This release adds the following updates:
- [Rework fix for mobile devices to incorporate all themes/list headers](https://github.com/wekan/wekan/pull/5517).
Thanks to walster001.
- [Update templates to use label instead of span](https://github.com/wekan/wekan/pull/5519).
Thanks to novashdima.
- [Large updates to UI CSS](https://github.com/wekan/wekan/pull/5523).
Thanks to walster001.
- [Updated dependencies](https://github.com/wekan/wekan/commit/1610eff0e9212fdf6423ce5579b7bdaf8e45950b).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.56 2024-08-21 WeKan ® release
This release adds the following updates:
- Updated Browser compatibility matrix.
[Part 1](https://github.com/wekan/wekan/commit/cab285c34d1f159120ccd48b17a897e95bd48471),
[Part 2](https://github.com/wekan/wekan/commit/ec534c8cca3f0256091c2d870c128d26033d40ad).
- [Updated code of conduct](https://github.com/wekan/wekan/commit/cae6f38b8070cfcc2f2529027f7e66b965a19f05).
Thanks to xet7.
- [Updated Docker build actions](https://github.com/wekan/wekan/pull/5505).
Thanks to dependabot.
- Updated docs for building custom Docker image.
[Part 1](https://github.com/wekan/wekan/issues/5509),
[Part 2](https://github.com/wekan/wekan/commit/6d6d51310e4168cd0fc75f550d3af35df9ccef9f),
[Part 3](https://github.com/wekan/wekan/commit/a94cfd5b91d29f81e51e67ed03ba84f820d4892a).
- [Update mongodb chart version to 15.6.18 and enables wekan to be deployed on an OpenShift cluster](https://github.com/wekan/charts/pull/36).
Thanks to fobrice.
- [Upgraded Snap Candidate MongoDB to 6.0.17](https://github.com/wekan/wekan/commit/d63d445b7d5da48c05d0fbd4e560c00283b1aef7).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Fix ModernDark Mobile View List Titles](https://github.com/wekan/wekan/pull/5503).
Thanks to walster001.
- [Fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/c3909edc5ee7a82b694b19ca7e022cbdfd12affd).
Thanks to webenefits and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.55 2024-08-08 WeKan ® release
This release fixes the following bugs:
- [Fix board backgrounds not showing correctly after v7.54](https://github.com/wekan/wekan/pull/5501).
Thanks to walster001.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.54 2024-08-07 WeKan ® release
This release adds the following new features:
- [Helm Chart: Add Support for Overriding Image Registry in Airgapped Environments](https://github.com/wekan/charts/pull/35).
Thanks to geilername.
- [PWA, move to standalone (standard) to display the status bar](https://github.com/wekan/wekan/pull/5484)
Thanks to mfilser.
- [Added info how with Caddy webserver config, PWA and Android app override icons, showing toolbars, etc](https://github.com/wekan/wekan/commit/55fc342f6d90d8e30b70a8903ecead1c4370bd89).
Thanks to xet7.
and fixes the following bugs:
- [Don't set background image in .board-canvas too](https://github.com/wekan/wekan/pull/5485).
Thanks to mfilser.
- [Bugfix, variable "color" didn't exist](https://github.com/wekan/wekan/pull/5486).
Thanks to mfilser.
- [Little opacity to minicards to see the background image a little bit](https://github.com/wekan/wekan/pull/5487).
Thanks to mfilser.
- [Remove attachment storage name from attachment list](https://github.com/wekan/wekan/pull/5488).
Thanks to mfilser.
- [Attachment popup back was broken since new attachment viewer, now fixed](https://github.com/wekan/wekan/pull/5489).
Thanks to mfilser.
- [Change Meteor.user() to ReactiveCache.getCurrentUser()](https://github.com/wekan/wekan/pull/5490).
Thanks to mfilser.
- [Fix empty parentId in cards](https://github.com/wekan/wekan/pull/5491).
Thanks to mfilser.
- [Sidebar xmark icon, add padding and background color](https://github.com/wekan/wekan/pull/5492).
Thanks to mfilser.
- [Board view, first column a bit smaller to save screen space](https://github.com/wekan/wekan/pull/5493).
Thanks to mfilser.
- [Minicard, show creator, defaultValue of schema and other code is now the same](https://github.com/wekan/wekan/pull/5494).
Thanks to mfilser.
- [Editor, Bugfix, copy text is now at each editor (textarea) again](https://github.com/wekan/wekan/pull/5495).
Thanks to mfilser.
- [Bugfix, Cards Count on mobile view was missing](https://github.com/wekan/wekan/pull/5496).
Thanks to mfilser.
- [ListHeader, simpler code logic at collapsed if conditions](https://github.com/wekan/wekan/pull/5497).
Thanks to mfilser.
- [Bugfix, edit description didn't work if it was clicked](https://github.com/wekan/wekan/pull/5498).
Thanks to mfilser.
- [Fix LDAP login fails after upgrade](https://github.com/wekan/wekan/commit/a4169f3da773e4fd961acd0266260085a753cdab).
Thanks to juppees and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.53 2024-08-03 WeKan ® release
This release adds the following new features:

View file

@ -11,7 +11,7 @@ For all code at WeKan GitHub Organization https://github.com/wekan
## Private reports
- Email support (at) wekan.team using [this PGP public key](support-at-wekan.team_pgp-publickey.asc) if possible
- Email support@wekan.team
- Security issues: [SECURITY.md](SECURITY.md)
- License violations
- Anything private, sensitive or negative

View file

@ -272,4 +272,5 @@ WORKDIR /home/wekan/app
#
# CMD ["node", "/build/main.js"]
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /build/main.js"]
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 --max-old-space-size=8192 /build/main.js"]
CMD ["bash", "-c", "ulimit -s 65500; exec node /build/main.js"]

View file

@ -88,5 +88,6 @@ RUN \
EXPOSE $PORT
USER wekan
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 --max-old-space-size=8192 /home/wekan/bundle/main.js"]
CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]

View file

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2023 The Wekan Team
Copyright (c) 2014-2024 The Wekan Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -107,6 +107,14 @@ that by providing one-click installation on various platforms.
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/).
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).
Please refer to the [developer documentation](https://github.com/wekan/wekan/wiki/Developer-Documentation) for more information.
## Screenshot
[More screenshots at Features page](https://github.com/wekan/wekan/wiki/Features)

View file

@ -1,7 +1,7 @@
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 support@wekan.team and not by
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.
We thank you with a place at our hall of fame page, that is
@ -217,7 +217,7 @@ Typical already known or "no impact" bugs such as:
- Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server.
Wekan is Open Source with MIT license, and free to use also for commercial use.
We welcome all fixes to improve security by email to security (at) wekan.team .
We welcome all fixes to improve security by email to security@wekan.team
## Bonus Points

View file

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

View file

@ -49,43 +49,6 @@
margin-top: 5px;
padding: 5px;
}
.activities .activity .activity-desc .reactions {
display: flex;
margin-top: 5px;
gap: 5px;
}
.activities .activity .activity-desc .reactions .open-comment-reaction-popup {
display: flex;
align-items: center;
text-decoration: none;
height: 24px;
}
.activities .activity .activity-desc .reactions .open-comment-reaction-popup i.fa.fa-smile-o {
font-size: 17px;
font-weight: 500;
margin-left: 2px;
}
.activities .activity .activity-desc .reactions .open-comment-reaction-popup i.fa.fa-plus {
font-size: 8px;
margin-top: -7px;
margin-left: 1px;
}
.activities .activity .activity-desc .reactions .reaction {
cursor: pointer;
border: 1px solid #808080;
border-radius: 15px;
display: flex;
padding: 2px 5px;
}
.activities .activity .activity-desc .reactions .reaction.selected {
background-color: #b0c4de;
}
.activities .activity .activity-desc .reactions .reaction:hover {
background-color: #b0c4de;
}
.activities .activity .activity-desc .reactions .reaction .reaction-count {
font-size: 12px;
}
.activities .activity .activity-desc .activity-checklist {
display: block;
border-radius: 3px;

View file

@ -1,11 +1,12 @@
template(name="activities")
.activities.js-sidebar-activities
//- We should use Template.dynamic here but there is a bug with
//- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30
if $eq mode "board"
+boardActivities
else
+cardActivities
if showActivities
.activities.js-sidebar-activities
//- We should use Template.dynamic here but there is a bug with
//- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30
if $eq mode "board"
+boardActivities
else
+cardActivities
template(name="boardActivities")
each activityData in currentBoard.activities
@ -15,31 +16,6 @@ template(name="cardActivities")
each activityData in activities
+activity(activity=activityData card=card mode=mode)
template(name="editOrDeleteComment")
a.js-open-inlined-form {{_ "edit"}}
= ' - '
a.js-delete-comment {{_ "delete"}}
template(name="deleteCommentPopup")
p {{_ "comment-delete"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
template(name="commentReactions")
.reactions
each reaction in reactions
span.reaction(class="{{#if isSelected reaction.userIds}}selected{{/if}}" data-codepoint="#{reaction.reactionCodepoint}" title="{{userNames reaction.userIds}}")
span.reaction-codepoint !{reaction.reactionCodepoint}
span.reaction-count #{reaction.userIds.length}
if (currentUser.isBoardMember)
a.open-comment-reaction-popup(title="{{_ 'addReactionPopup-title'}}")
i.fa.fa-smile-o
i.fa.fa-plus
template(name="addReactionPopup")
.reactions-popup
each codepoint in codepoints
span.add-comment-reaction(data-codepoint="#{codepoint}") !{codepoint}
template(name="activity")
.activity(data-id=activity._id)
+userAvatar(userId=activity.user._id)
@ -129,38 +105,17 @@ template(name="activity")
| {{{_ 'activity-checklist-item-removed' (sanitize activity.checklist.title) cardLink}}}.
//- comment activity ----------------------------------------------------
if($eq mode 'card')
//- if we are in card mode we display the comment in a way that it
//- can be edited by the owner
if($eq activity.activityType 'addComment')
+inlinedForm(classNames='js-edit-comment')
+editor(autofocus=true)
= activity.comment.text
.edit-controls
button.primary(type="submit") {{_ 'edit'}}
.fa.fa-times-thin.js-close-inlined-form
else
.activity-comment
+viewer
= activity.comment.text
+commentReactions(reactions=activity.comment.reactions commentId=activity.comment._id)
if($eq currentUser._id activity.comment.userId)
+editOrDeleteComment
else if currentUser.isBoardAdmin
+editOrDeleteComment
if($eq activity.activityType 'deleteComment')
| {{{_ 'activity-deleteComment' activity.commentId}}}.
if($eq activity.activityType 'deleteComment')
| {{{_ 'activity-deleteComment' activity.commentId}}}.
if($eq activity.activityType 'editComment')
| {{{_ 'activity-editComment' activity.commentId}}}.
if($eq activity.activityType 'editComment')
| {{{_ 'activity-editComment' activity.commentId}}}.
else
//- if we are not in card mode we only display a summary of the comment
if($eq activity.activityType 'addComment')
| {{{_ 'activity-on' cardLink}}}
a.activity-comment(href="{{ activity.card.originRelativeUrl }}")
+viewer
= activity.comment.text
if($eq activity.activityType 'addComment')
| {{{_ 'activity-on' cardLink}}}
a.activity-comment(href="{{ activity.card.originRelativeUrl }}")
+viewer
= activity.comment.text
//- date activity ------------------------------------------------
if($eq activity.activityType 'a-receivedAt')
@ -206,6 +161,9 @@ template(name="activity")
if($eq activity.activityType 'archivedList')
| {{_ 'activity-archived' (sanitize listLabel)}}.
if($eq activity.activityType 'changedListTitle')
| {{_ 'activity-changedListTitle' (sanitize listLabel) boardLabelLink}}
//- member activity ----------------------------------------------------
if($eq activity.activityType 'joinMember')
if($eq user._id activity.member._id)

View file

@ -17,8 +17,10 @@ BlazeComponent.extendComponent({
if (mode) {
const capitalizedMode = Utils.capitalize(mode);
let searchId;
const showActivities = this.showActivities();
if (mode === 'linkedcard' || mode === 'linkedboard') {
searchId = Utils.getCurrentCard().linkedId;
const currentCard = Utils.getCurrentCard();
searchId = currentCard.linkedId;
mode = mode.replace('linked', '');
} else if (mode === 'card') {
searchId = Utils.getCurrentCardId();
@ -26,11 +28,9 @@ BlazeComponent.extendComponent({
searchId = Session.get(`current${capitalizedMode}`);
}
const limit = this.page.get() * activitiesPerPage;
const user = ReactiveCache.getCurrentUser();
const hideSystem = user ? user.hasHiddenSystemMessages() : false;
if (searchId === null) return;
this.subscribe('activities', mode, searchId, limit, hideSystem, () => {
this.subscribe('activities', mode, searchId, limit, showActivities, () => {
this.loadNextPageLocked = false;
// TODO the guard can be removed as soon as the TODO above is resolved
@ -56,14 +56,26 @@ BlazeComponent.extendComponent({
this.loadNextPageLocked = true;
}
},
}).register('activities');
Template.activities.helpers({
activities() {
const ret = this.card.activities();
showActivities() {
let ret = false;
let mode = this.data()?.mode;
if (mode) {
if (mode === 'linkedcard' || mode === 'linkedboard') {
const currentCard = Utils.getCurrentCard();
ret = currentCard.showActivities ?? false;
} else if (mode === 'card') {
ret = this.data()?.card?.showActivities ?? false;
} else {
ret = Utils.getCurrentBoard().showActivities ?? false;
}
}
return ret;
},
});
activities() {
const ret = this.data().card.activities();
return ret;
},
}).register('activities');
BlazeComponent.extendComponent({
checkItem() {
@ -249,32 +261,6 @@ BlazeComponent.extendComponent({
return customField.name;
},
events() {
return [
{
// XXX We should use Popup.afterConfirmation here
'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => {
const commentId = this.data().activity.commentId;
CardComments.remove(commentId);
Popup.back();
}),
'submit .js-edit-comment'(evt) {
evt.preventDefault();
const commentText = this.currentComponent()
.getValue()
.trim();
const commentId = Template.parentData().activity.commentId;
if (commentText) {
CardComments.update(commentId, {
$set: {
text: commentText,
},
});
}
},
},
];
},
}).register('activity');
Template.activity.helpers({

View file

@ -63,3 +63,78 @@
display: block;
margin: auto;
}
.comments {
clear: both;
}
.comments .comment {
margin: 0.5px 0;
padding: 6px 0;
display: flex;
}
.comments .comment .member {
width: 32px;
height: 32px;
}
.comments .comment .comment-member {
font-weight: 700;
}
.comments .comment .comment-desc {
word-wrap: break-word;
overflow: hidden;
flex: 1;
align-self: center;
margin: 0;
margin-left: 3px;
overflow: hidden;
word-break: break-word;
}
.comments .comment .comment-desc .comment-text {
display: block;
border-radius: 3px;
background: #fff;
text-decoration: none;
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
margin-top: 5px;
padding: 5px;
}
.comments .comment .comment-desc .reactions {
display: flex;
margin-top: 5px;
gap: 5px;
}
.comments .comment .comment-desc .reactions .open-comment-reaction-popup {
display: flex;
align-items: center;
text-decoration: none;
height: 24px;
}
.comments .comment .comment-desc .reactions .open-comment-reaction-popup i.fa.fa-smile-o {
font-size: 17px;
font-weight: 500;
margin-left: 2px;
}
.comments .comment .comment-desc .reactions .open-comment-reaction-popup i.fa.fa-plus {
font-size: 8px;
margin-top: -7px;
margin-left: 1px;
}
.comments .comment .comment-desc .reactions .reaction {
cursor: pointer;
border: 1px solid #808080;
border-radius: 15px;
display: flex;
padding: 2px 5px;
}
.comments .comment .comment-desc .reactions .reaction.selected {
background-color: #b0c4de;
}
.comments .comment .comment-desc .reactions .reaction:hover {
background-color: #b0c4de;
}
.comments .comment .comment-desc .reactions .reaction .reaction-count {
font-size: 12px;
}
.comments .comment .comment-desc .comment-meta {
font-size: 0.8em;
color: #999;
}

View file

@ -7,3 +7,59 @@ template(name="commentForm")
| {{getUnsavedValue 'cardComment' currentCard._id}}
.add-controls
button.primary.confirm.clear.js-add-comment(type="submit") {{_ 'comment'}}
template(name="comments")
.comments
each commentData in getComments
+comment(commentData)
template(name="comment")
.comment
+userAvatar(userId=userId)
p.comment-desc
span.comment-member
+memberName(user=user)
+inlinedForm(classNames='js-edit-comment')
+editor(autofocus=true)
= text
.edit-controls
button.primary(type="submit") {{_ 'edit'}}
.fa.fa-times-thin.js-close-inlined-form
else
.comment-text
+viewer
= text
+commentReactions(reactions=reactions commentId=_id)
span(title=createdAt).comment-meta {{ moment createdAt }}
if($eq currentUser._id userId)
+editOrDeleteComment
else if currentUser.isBoardAdmin
+editOrDeleteComment
template(name="editOrDeleteComment")
= ' - '
a.js-open-inlined-form {{_ "edit"}}
= ' - '
a.js-delete-comment {{_ "delete"}}
template(name="deleteCommentPopup")
p {{_ "comment-delete"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
template(name="commentReactions")
.reactions
each reaction in reactions
span.reaction(class="{{#if isSelected reaction.userIds}}selected{{/if}}" data-codepoint="#{reaction.reactionCodepoint}" title="{{userNames reaction.userIds}}")
span.reaction-codepoint !{reaction.reactionCodepoint}
span.reaction-count #{reaction.userIds.length}
if (currentUser.isBoardMember)
a.open-comment-reaction-popup(title="{{_ 'addReactionPopup-title'}}")
i.fa.fa-smile-o
i.fa.fa-plus
template(name="addReactionPopup")
.reactions-popup
each codepoint in codepoints
span.add-comment-reaction(data-codepoint="#{codepoint}") !{codepoint}

View file

@ -55,6 +55,41 @@ BlazeComponent.extendComponent({
},
}).register('commentForm');
BlazeComponent.extendComponent({
getComments() {
const ret = this.data().comments();
return ret;
},
}).register("comments");
BlazeComponent.extendComponent({
events() {
return [
{
'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => {
const commentId = this.data()._id;
CardComments.remove(commentId);
Popup.back();
}),
'submit .js-edit-comment'(evt) {
evt.preventDefault();
const commentText = this.currentComponent()
.getValue()
.trim();
const commentId = this.data()._id;
if (commentText) {
CardComments.update(commentId, {
$set: {
text: commentText,
},
});
}
},
},
];
},
}).register("comment");
// XXX This should be a static method of the `commentForm` component
function resetCommentInput(input) {
input.val(''); // without manually trigger, input event won't be fired

View file

@ -16,9 +16,6 @@
transition: margin 0.1s;
overflow-y: auto;
}
.board-wrapper .board-canvas.is-sibling-sidebar-open {
margin-right: 248px;
}
.board-wrapper .board-canvas .board-overlay {
position: fixed;
left: 0;

View file

@ -17,25 +17,32 @@ template(name="boardBody")
| {{_ 'tableVisibilityMode-allowPrivateOnly'}}
else
.board-wrapper(class=currentBoard.colorClass)
+sidebar
.board-canvas.js-swimlanes.dragscroll(
.board-canvas.js-swimlanes(
class="{{#if hasSwimlanes}}dragscroll{{/if}}"
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
class="{{#if draggingActive.get}}is-dragging-active{{/if}}"
class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
if showOverlay.get
.board-overlay
if currentBoard.isTemplatesBoard
each currentBoard.swimlanes
+swimlane(this)
else if isViewSwimlanes
each currentBoard.swimlanes
+swimlane(this)
if hasSwimlanes
each currentBoard.swimlanes
+swimlane(this)
else
a.js-empty-board-add-swimlane(title="{{_ 'add-swimlane'}}")
h1.big-message.quiet
| {{_ 'add-swimlane'}} +
else if isViewLists
+listsGroup(currentBoard)
else if isViewCalendar
+calendarView
else
+listsGroup(currentBoard)
+sidebar
template(name="calendarView")
if isViewCalendar

View file

@ -195,6 +195,9 @@ BlazeComponent.extendComponent({
});
this.autorun(() => {
// Always reset dragscroll on view switch
dragscroll.reset();
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$swimlanesDom.sortable({
handle: '.js-swimlane-header-handle',
@ -245,6 +248,10 @@ BlazeComponent.extendComponent({
}
},
hasSwimlanes() {
return Utils.getCurrentBoard().swimlanes().length > 0;
},
isViewLists() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
@ -263,6 +270,11 @@ BlazeComponent.extendComponent({
}
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
openNewListForm() {
if (this.isViewSwimlanes()) {
// The form had been removed in 416b17062e57f215206e93a85b02ef9eb1ab4902
@ -285,6 +297,7 @@ BlazeComponent.extendComponent({
this._isDragging = false;
}
},
'click .js-empty-board-add-swimlane': Popup.open('swimlaneAdd'),
},
];
},

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
import dragscroll from '@wekanteam/dragscroll';
/*
const DOWNCLS = 'fa-sort-down';

View file

@ -151,8 +151,8 @@ BlazeComponent.extendComponent({
}
const currUser = ReactiveCache.getCurrentUser();
let orgIdsUserBelongs = currUser !== undefined && currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
if (orgIdsUserBelongs && orgIdsUserBelongs != '') {
let orgIdsUserBelongs = currUser?.orgIdsUserBelongs() || '';
if (orgIdsUserBelongs) {
let orgsIds = orgIdsUserBelongs.split(',');
// for(let i = 0; i < orgsIds.length; i++){
// query.$and[2].$or.push({'orgs.orgId': orgsIds[i]});
@ -162,8 +162,8 @@ BlazeComponent.extendComponent({
query.$and[2].$or.push({ 'orgs.orgId': { $in: orgsIds } });
}
let teamIdsUserBelongs = currUser !== undefined && currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
if (teamIdsUserBelongs && teamIdsUserBelongs != '') {
let teamIdsUserBelongs = currUser?.teamIdsUserBelongs() || '';
if (teamIdsUserBelongs) {
let teamsIds = teamIdsUserBelongs.split(',');
// for(let i = 0; i < teamsIds.length; i++){
// query.$or[2].$or.push({'teams.teamId': teamsIds[i]});
@ -199,15 +199,12 @@ BlazeComponent.extendComponent({
},
boardMembers(boardId) {
let boardMembers = [];
/* Bug Board icons random dance https://github.com/wekan/wekan/issues/4214
const lists = ReactiveCache.getBoard(boardId)
let members = lists.members
members.forEach(member => {
boardMembers.push(member.userId);
});
*/
const boardMembers = lists?.members.map(member => member.userId);
return boardMembers;
*/
return [];
},
isStarred() {

View file

@ -117,8 +117,6 @@ template(name="attachmentActionsPopup")
| {{_ 'remove-background-image'}}
else
| {{_ 'add-background-image'}}
p.attachment-storage
| {{versions.original.storage}}
if $neq versions.original.storage "fs"
a.js-move-storage-fs

View file

@ -39,7 +39,7 @@ Template.attachmentGallery.events({
'click .js-rename': Popup.open('attachmentRename'),
'click .js-confirm-delete': Popup.afterConfirm('attachmentDelete', function() {
Attachments.remove(this._id);
Popup.back(2);
Popup.back();
}),
});
@ -501,7 +501,7 @@ BlazeComponent.extendComponent({
if (name === DOMPurify.sanitize(name)) {
Meteor.call('renameAttachment', this.data()._id, name);
}
Popup.back(2);
Popup.back();
},
}
]

View file

@ -79,13 +79,14 @@ template(name="cardCustomField-currency")
template(name="cardCustomField-date")
if canModifyCard
a.js-edit-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a.js-edit-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
if value
div.card-date
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
else
| {{_ 'edit'}}
else
@ -93,8 +94,9 @@ template(name="cardCustomField-date")
div.card-date
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
template(name="cardCustomField-dropdown")
if canModifyCard

View file

@ -148,6 +148,10 @@ CardCustomField.register('cardCustomField');
return this.date.get().week().toString();
}
showWeekOfYear() {
return ReactiveCache.getCurrentUser().isShowWeekOfYear();
}
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5

View file

@ -1,20 +1,23 @@
template(name="dateBadge")
if canModifyCard
a.js-edit-date.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a.js-edit-date.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
else
a.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
template(name="dateCustomField")
a(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}

View file

@ -11,7 +11,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setReceived(date);
this.card.setReceived(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -37,7 +37,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setStart(date);
this.card.setStart(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -60,7 +60,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setDue(date);
this.card.setDue(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -83,7 +83,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setEnd(date);
this.card.setEnd(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -110,6 +110,10 @@ const CardDate = BlazeComponent.extendComponent({
return this.date.get().week().toString();
},
showWeekOfYear() {
return ReactiveCache.getCurrentUser().isShowWeekOfYear();
},
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5
@ -283,6 +287,10 @@ class CardCustomFieldDate extends CardDate {
return this.date.get().week().toString();
}
showWeekOfYear() {
return ReactiveCache.getCurrentUser().isShowWeekOfYear();
}
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5
@ -314,19 +322,19 @@ CardCustomFieldDate.register('cardCustomFieldDate');
(class extends CardStartDate {
showDate() {
return this.date.get().format('L');
return this.date.get().format('YYYY-MM-DD HH:mm');
}
}.register('minicardStartDate'));
(class extends CardDueDate {
showDate() {
return this.date.get().format('L');
return this.date.get().format('YYYY-MM-DD HH:mm');
}
}.register('minicardDueDate'));
(class extends CardEndDate {
showDate() {
return this.date.get().format('L');
return this.date.get().format('YYYY-MM-DD HH:mm');
}
}.register('minicardEndDate'));

View file

@ -5,7 +5,7 @@
float: left;
height: 30px;
width: 30px;
margin: 0 4px 4px 0;
margin: .3vh;
cursor: pointer;
user-select: none;
z-index: 1;

View file

@ -5,7 +5,7 @@ template(name="cardDetails")
+attachmentViewer
section.card-details.js-card-details.nodragscroll(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}'): .card-details-canvas
section.card-details.js-card-details.nodragscroll(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}' class='{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}'): .card-details-canvas
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
@ -527,9 +527,10 @@ template(name="cardDetails")
if currentBoard.allowsDescriptionText
a.js-open-inlined-form(title="{{_ 'edit'}}" value=title)
i.fa.fa-pencil-square-o
if getDescription
+viewer
= getDescription
a.js-open-inlined-form(title="{{_ 'edit'}}" value=title)
if getDescription
+viewer
= getDescription
if (hasUnsavedValue 'cardDescription' _id)
p.quiet
| {{_ 'unsaved-description'}}
@ -548,7 +549,7 @@ template(name="cardDetails")
.card-checklist-attachmentGallery.card-checklists
if currentBoard.allowsChecklists
hr
+checklists(cardId = _id)
+checklists(cardId = _id card = this)
if currentBoard.allowsSubtasks
hr
+subtasks(cardId = _id)
@ -568,25 +569,34 @@ template(name="cardDetails")
+attachmentGallery
hr
unless currentUser.isNoComments
.comment-title
h3.card-details-item-title
i.fa.fa-comment-o
| {{_ 'comments'}}
if currentBoard.allowsComments
if currentUser.isBoardMember
unless currentUser.isNoComments
+commentForm
+comments
hr
.card-details-right
unless currentUser.isNoComments
.activity-title
h3.card-details-item-title
i.fa.fa-history
| {{ _ 'activity'}}
| {{ _ 'activities'}}
if currentUser.isBoardMember
.material-toggle-switch(title="{{_ 'hide-system-messages'}}")
//span.toggle-switch-title
if hiddenSystemMessages
input.toggle-switch(type="checkbox" id="toggleButton" checked="checked")
.material-toggle-switch(title="{{_ 'show-activities'}}")
if showActivities
input.toggle-switch(type="checkbox" id="toggleShowActivitiesCard" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleButton")
label.toggle-label(for="toggleButton")
if currentBoard.allowsComments
if currentUser.isBoardMember
unless currentUser.isNoComments
+commentForm
input.toggle-switch(type="checkbox" id="toggleShowActivitiesCard")
label.toggle-label(for="toggleShowActivitiesCard")
unless currentUser.isNoComments
if isLoaded.get
if isLinkedCard

View file

@ -63,10 +63,6 @@ BlazeComponent.extendComponent({
return card.findWatcher(Meteor.userId());
},
hiddenSystemMessages() {
return ReactiveCache.getCurrentUser().hasHiddenSystemMessages();
},
customFieldsGrid() {
return ReactiveCache.getCurrentUser().hasCustomFieldsGrid();
},
@ -118,6 +114,11 @@ BlazeComponent.extendComponent({
);
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
/** returns if the list id is the current list id
* @param listId list id to check
* @return is the list id the current list id ?
@ -377,8 +378,11 @@ BlazeComponent.extendComponent({
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
},
'click #toggleButton'() {
Meteor.call('toggleSystemMessages');
'click #toggleShowActivitiesCard'() {
this.data().toggleShowActivities();
},
'click #toggleHideCheckedChecklistItems'() {
this.data().toggleHideCheckedChecklistItems();
},
'click #toggleCustomFieldsGridButton'() {
Meteor.call('toggleCustomFieldsGrid');

View file

@ -8,20 +8,6 @@ textarea.js-edit-checklist-item {
resize: none;
height: 34px;
}
.card-details .text-show-at-minicard {
width: 350px;
text-align: left;
}
.minicard .text-show-at-minicard {
display: none;
}
.text-some-space {
width: 20px;
}
.text-hide-checked-items {
width: 400px;
text-align: left;
}
.delete-text,
.js-delete-checklist-item,
.js-convert-checklist-item-to-card {
@ -40,8 +26,6 @@ textarea.js-edit-checklist-item {
display: flex;
justify-content: space-between;
}
.checklist-progress-bar-container {
display: flex;
flex-direction: row;
@ -61,6 +45,9 @@ textarea.js-edit-checklist-item {
border-radius: 16px;
height: 100%;
}
.checklist-title {
padding: 10px;
}
.checklist-title .checkbox {
float: left;
width: 30px;

View file

@ -9,10 +9,19 @@ template(name="checklists")
else
a.add-checklist-top.js-open-inlined-form(title="{{_ 'add-checklist'}}")
i.fa.fa-plus
if currentUser.isBoardMember
.material-toggle-switch(title="{{_ 'hide-finished-checklist'}}")
//span.toggle-switch-title
if card.hideFinishedChecklistIfItemsAreHidden
input.toggle-switch(type="checkbox" id="toggleHideFinishedChecklist" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideFinishedChecklist")
label.toggle-label(for="toggleHideFinishedChecklist")
.card-checklist-items
each checklist in checklists
+checklistDetail(checklist=checklist)
if checklist.showChecklist card.hideFinishedChecklistIfItemsAreHidden
+checklistDetail(checklist = checklist card = card)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId)
@ -47,7 +56,7 @@ template(name="checklistDetail")
.checklist-progress-text {{finishedPercent}}%
.checklist-progress-bar
.checklist-progress(style="width:{{finishedPercent}}%")
+checklistItems(checklist = checklist)
+checklistItems(checklist = checklist card = card)
template(name="checklistDeletePopup")
p {{_ 'confirm-checklist-delete-popup'}}
@ -64,6 +73,12 @@ template(name="addChecklistItemForm")
.material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItem'}}")
input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItem")
label.toggle-label(for="toggleNewlineBecomesNewChecklistItem")
| {{_ 'newLineNewItem'}}
if $eq position 'top'
.material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItemOriginOrder'}}")
input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItemOriginOrder")
label.toggle-label(for="toggleNewlineBecomesNewChecklistItemOriginOrder")
| {{_ 'originOrder'}}
template(name="editChecklistItemForm")
a.fa.fa-copy(title="{{_ 'copy-text-to-clipboard'}}")
@ -87,7 +102,7 @@ template(name="checklistItems")
if checklist.items.length
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist position="top")
+addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true)
+addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true position="top")
else
a.add-checklist-item.js-open-inlined-form(title="{{_ 'add-checklist-item'}}")
i.fa.fa-plus
@ -96,7 +111,7 @@ template(name="checklistItems")
+inlinedForm(classNames="js-edit-checklist-item" item = item checklist = checklist)
+editChecklistItemForm(type = 'item' item = item checklist = checklist)
else
+checklistItemDetail(item = item checklist = checklist)
+checklistItemDetail(item = item checklist = checklist card = card)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist)
+addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true)
@ -105,7 +120,7 @@ template(name="checklistItems")
i.fa.fa-plus
template(name='checklistItemDetail')
.js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if hideCheckedItems}} invisible{{/if}}{{/if}}"
.js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if checklist.hideCheckedChecklistItems}} invisible{{/if}}{{/if}}{{#if checklist.hideAllChecklistItems}} is-checked invisible{{/if}}"
role="checkbox" aria-checked="{{#if item.isFinished }}true{{else}}false{{/if}}" tabindex="0")
if canModifyCard
.check-box-container
@ -122,27 +137,6 @@ template(name='checklistItemDetail')
= item.title
template(name="checklistActionsPopup")
if currentUser.isBoardMember
span.text-show-at-minicard
| {{_ 'show-at-minicard'}}
.material-toggle-switch(title="{{_ 'show-checklist-at-minicard'}}")
if showAtMinicard
input.toggle-switch(type="checkbox" id="toggleShowChecklistAtMinicardButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleShowChecklistAtMinicardButton")
label.toggle-label(for="toggleShowChecklistAtMinicardButton")
hr
span.text-hide-checked-items
| {{_ 'hide-checked-items'}}
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
//span.toggle-switch-title
//.check-square-icon.i.fa.fa-check-square-o
if hideCheckedItems
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton")
label.toggle-label(for="toggleHideCheckedItemsButton")
hr
ul.pop-over-list
li
a.js-delete-checklist.delete-checklist
@ -154,6 +148,24 @@ template(name="checklistActionsPopup")
a.js-copy-checklist.copy-checklist
i.fa.fa-copy
| {{_ "copyChecklist"}} ...
a.js-hide-checked-checklist-items
i.fa.fa-eye-slash
| {{_ "hideCheckedChecklistItems"}} ...
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
if checklist.hideCheckedChecklistItems
input.toggle-switch(type="checkbox" id="toggleHideCheckedChecklistItems_{{checklist._id}}" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideCheckedChecklistItems_{{checklist._id}}")
label.toggle-label(for="toggleHideCheckedChecklistItems_{{checklist._id}}")
a.js-hide-all-checklist-items
i.fa.fa-ban
| {{_ "hideAllChecklistItems"}} ...
.material-toggle-switch(title="{{_ 'hideAllChecklistItems'}}")
if checklist.hideAllChecklistItems
input.toggle-switch(type="checkbox" id="toggleHideAllChecklistItems_{{checklist._id}}" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideAllChecklistItems_{{checklist._id}}")
label.toggle-label(for="toggleHideAllChecklistItems_{{checklist._id}}")
template(name="copyChecklistPopup")
+copyAndMoveChecklist

View file

@ -119,6 +119,7 @@ BlazeComponent.extendComponent({
event.preventDefault();
const textarea = this.find('textarea.js-add-checklist-item');
const newlineBecomesNewChecklistItem = this.find('input#toggleNewlineBecomesNewChecklistItem');
const newlineBecomesNewChecklistItemOriginOrder = this.find('input#toggleNewlineBecomesNewChecklistItemOriginOrder');
const title = textarea.value.trim();
const checklist = this.currentData().checklist;
@ -127,22 +128,28 @@ BlazeComponent.extendComponent({
if (newlineBecomesNewChecklistItem.checked) {
checklistItems = title.split('\n').map(_value => _value.trim());
if (this.currentData().position === 'top') {
checklistItems = checklistItems.reverse();
if (newlineBecomesNewChecklistItemOriginOrder.checked === false) {
checklistItems = checklistItems.reverse();
}
}
}
let addIndex;
let sortIndex;
if (this.currentData().position === 'top') {
sortIndex = Utils.calculateIndexData(null, checklist.firstItem()).base;
addIndex = -1;
} else {
sortIndex = Utils.calculateIndexData(checklist.lastItem(), null).base;
addIndex = 1;
}
for (let checklistItem of checklistItems) {
let sortIndex;
if (this.currentData().position === 'top') {
sortIndex = Utils.calculateIndexData(null, checklist.firstItem()).base;
} else {
sortIndex = Utils.calculateIndexData(checklist.lastItem(), null).base;
}
ChecklistItems.insert({
title: checklistItem,
checklistId: checklist._id,
cardId: checklist.cardId,
sort: sortIndex,
});
sortIndex += addIndex;
}
}
// We keep the form opened, empty it.
@ -201,12 +208,8 @@ BlazeComponent.extendComponent({
},
events() {
const events = {
};
return [
{
...events,
'click .js-open-checklist-details-menu': Popup.open('checklistActions'),
'submit .js-add-checklist': this.addChecklist,
'submit .js-edit-checklist-title': this.editChecklist,
@ -217,6 +220,10 @@ BlazeComponent.extendComponent({
'focus .js-add-checklist-item': this.focusChecklistItem,
// add and delete checklist / checklist-item
'click .js-open-inlined-form': this.closeAllInlinedForms,
'click #toggleHideFinishedChecklist'(event) {
event.preventDefault();
this.data().card.toggleHideFinishedChecklist();
},
keydown: this.pressKey,
},
];
@ -271,16 +278,6 @@ Template.checklists.helpers({
const ret = card.checklists();
return ret;
},
showAtMinicard() {
const card = ReactiveCache.getCard(this.cardId);
const ret = card.checklists({'showAtMinicard':1});
return ret;
},
hideCheckedItems() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) return currentUser.hasHideCheckedItems();
return false;
},
});
BlazeComponent.extendComponent({
@ -303,26 +300,9 @@ BlazeComponent.extendComponent({
}).register('addChecklistItemForm');
BlazeComponent.extendComponent({
toggleItem() {
const checklist = this.currentData().checklist;
const item = this.currentData().item;
if (checklist && item && item._id) {
item.toggleItem();
}
},
events() {
return [
{
'click .js-checklist-item .check-box-container': this.toggleItem,
'click #toggleShowChecklistAtMinicardButton'() {
const checklist = this.checklist;
if (checklist && checklist._id) {
Meteor.call('toggleShowChecklistAtMinicard', checklist._id);
}
},
'click #toggleHideCheckedItemsButton'() {
Meteor.call('toggleHideCheckedItems');
},
'click .js-delete-checklist': Popup.afterConfirm('checklistDelete', function () {
Popup.back(2);
const checklist = this.checklist;
@ -332,6 +312,16 @@ BlazeComponent.extendComponent({
}),
'click .js-move-checklist': Popup.open('moveChecklist'),
'click .js-copy-checklist': Popup.open('copyChecklist'),
'click .js-hide-checked-checklist-items'(event) {
event.preventDefault();
this.data().checklist.toggleHideCheckedChecklistItems();
Popup.back();
},
'click .js-hide-all-checklist-items'(event) {
event.preventDefault();
this.data().checklist.toggleHideAllChecklistItems();
Popup.back();
},
}
]
}
@ -357,11 +347,6 @@ BlazeComponent.extendComponent({
}).register('editChecklistItemForm');
Template.checklistItemDetail.helpers({
hideCheckedItems() {
const user = ReactiveCache.getCurrentUser();
if (user) return user.hasHideCheckedItems();
return false;
},
});
BlazeComponent.extendComponent({

View file

@ -1,12 +1,3 @@
.minicard .checklists-title,
.minicard .add-checklist,
.minicard .add-checklist-item,
.minicard .checklist-details-menu {
display: none;
}
.minicard .checklist-progress-bar-container {
width: 190px; /* TODO: Add adjustable width https://github.com/wekan/wekan/pull/4964 */
}
.minicard-wrapper {
cursor: pointer;
position: relative;
@ -138,14 +129,6 @@
max-width: 100%;
margin-right: 4px;
}
/*
.minicard .checklists-title,
.minicard .add-checklist,
.minicard .add-checklist-item,
.minicard .checklist-details-menu {
display: none;
}
*/
.minicard .handle {
width: 20px;
height: 20px;

View file

@ -112,12 +112,6 @@ template(name="minicard")
+viewer
= trueValue
.card-checklist-attachmentGalleries
.card-checklist-attachmentGallery.card-checklists
if currentBoard.allowsChecklists
//hr
//+checklists(cardId=_id showAtMinicard=true)
if showAssignee
if getAssignees
.minicard-assignees.js-minicard-assignees

View file

@ -42,11 +42,7 @@ BlazeComponent.extendComponent({
const board = this.data().board();
let ret = false;
if (board) {
ret =
board.allowsCreatorOnMinicard === null ||
board.allowsCreatorOnMinicard === undefined ||
board.allowsCreatorOnMinicard
;
ret = board.allowsCreatorOnMinicard ?? false;
}
return ret;
},
@ -92,11 +88,6 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .minicard-checklists'() {
// Prevents clicking checklist at minicard from opening card details,
// while still allowing checking checlist items.
event.preventDefault();
},
'click .js-linked-link'() {
if (this.data().isLinkedCard()) Utils.goCardId(this.data().linkedId);
else if (this.data().isLinkedBoard())

View file

@ -7,18 +7,16 @@
border-left: 1px solid #ccc;
padding: 0;
float: left;
/* min-width: 100px; TODO(mark-i-m): hardcoded? */
/*max-width: 270px;*/
/* Reverted incomplete change list width: */
/* https://github.com/wekan/wekan/issues/4558 */
/* Orinal width: 270px. Changes not saved yet: */
/*resize: both; - List width and height resizeable */
/* overflow: auto; - List width and height resizeable */
}
[id^="swimlane-"] .list:first-child {
min-width: 20px;
}
.list.list-auto-width {
flex: 1;
}
.list:first-child {
min-width: 20px;
margin-left: 5px;
border-left: none;
flex: none;
}
.card-details + .list {
border-left: none;
@ -37,6 +35,9 @@
box-shadow: none;
height: 100px;
}
.list.list-collapsed {
flex: none;
}
.list.list-composer .open-list-composer,
.list .list-composer .open-list-composer {
color: #8c8c8c;
@ -48,7 +49,7 @@
}
.list-header-add {
flex: 0 0 auto;
padding: 20px 12px 4px;
padding: 12px;
position: relative;
min-height: 20px;
}
@ -251,11 +252,11 @@
padding: 15px 19px;
}
.list-header {
padding: 0 12px 0px;
/*Updated padding values for mobile devices, this should fix text grouping issue*/
padding: 20px 0px 20px 0px;
border-bottom: 0px solid #e4e4e4;
height: 60px;
min-height: 30px;
margin-top: 10px;
display: flex;
align-items: center;
}
.list-header .list-header-left-icon {

View file

@ -1,7 +1,7 @@
template(name='list')
.list.js-list(id="js-list-{{_id}}"
style="{{#unless collapsed}}width:{{listWidth}}px;{{/unless}}"
class="{{#if collapsed}}list-collapsed{{/if}}")
style="{{#unless collapsed}}min-width:{{listWidth}}px;max-width:{{listConstraint}}px;{{/unless}}"
class="{{#if collapsed}}list-collapsed{{/if}} {{#if autoWidth}}list-auto-width{{/if}}")
+listHeader
+listBody

View file

@ -196,10 +196,22 @@ BlazeComponent.extendComponent({
},
listWidth() {
const user = Meteor.user();
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.getListWidth(list.boardId, list._id);
},
listConstraint() {
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.getListConstraint(list.boardId, list._id);
},
autoWidth() {
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.isAutoWidth(list.boardId);
},
}).register('list');
Template.miniList.events({

View file

@ -1,6 +1,6 @@
template(name="listBody")
unless collapsed
.list-body
.list-body(class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
if cards.length
+inlinedForm(autoclose=false position="top")

View file

@ -231,6 +231,11 @@ BlazeComponent.extendComponent({
);
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
cardDetailsPopup(event) {
if (!Popup.isOpen()) {
Popup.open("cardDetails")(event);

View file

@ -5,16 +5,14 @@ template(name="listHeader")
+inlinedForm
+editListTitleForm
else
unless isMiniScreen
if isMiniScreen
if currentList
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
else
if collapsed
a.js-collapse(title="{{_ 'uncollapse'}}")
i.fa.fa-arrow-left.list-header-uncollapse-left
i.fa.fa-arrow-right.list-header-uncollapse-right
if isMiniScreen
if currentList
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
unless isMiniScreen
if collapsed
if showCardsCountForList cards.length
br
span.cardCount {{cardsCount}}
@ -28,7 +26,9 @@ template(name="listHeader")
|&nbsp;(
span(class="{{#if exceededWipLimit}}highlight{{/if}}") {{cards.length}}
|/#{wipLimit.value})
unless isMiniScreen
if showCardsCountForList cards.length
span.cardCount {{cardsCount}} {{cardsCountForListIsOne cards.length}}
else
div(class="{{#if collapsed}}list-rotated{{/if}}")
h2.list-header-name(
title="{{ moment modifiedAt 'LLL' }}"
@ -191,8 +191,14 @@ template(name="setListWidthPopup")
label {{_ 'set-list-width-value'}}
p
input.list-width-value(type="number" value="{{ listWidthValue }}" min="100")
input.list-constraint-value(type="number" value="{{ listConstraintValue }}" min="100")
input.list-width-apply(type="submit" value="{{_ 'apply'}}")
input.list-width-error
br
a.js-auto-width-board(
title="{{#if isAutoWidth}}{{_ 'click-to-disable-auto-width'}}{{else}}{{_ 'click-to-enable-auto-width'}}{{/if}}")
i.fa(class="fa-solid fa-{{#if isAutoWidth}}compress{{else}}expand{{/if}}")
span {{_ 'auto-list-width'}}
template(name="listWidthErrorPopup")
.list-width-invalid

View file

@ -1,5 +1,6 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
import dragscroll from '@wekanteam/dragscroll';
let listsColors;
Meteor.startup(() => {
@ -155,7 +156,7 @@ Template.listActionPopup.helpers({
isWatching() {
return this.findWatcher(Meteor.userId());
},
}
});
Template.listActionPopup.events({
@ -347,14 +348,20 @@ BlazeComponent.extendComponent({
.val(),
10,
);
const constraint = parseInt(
Template.instance()
.$('.list-constraint-value')
.val(),
10,
);
// FIXME(mark-i-m): where do we put constants?
if (width < 100 || !width) {
if (width < 100 || !width || constraint < 100 || !constraint) {
Template.instance()
.$('.list-width-error')
.click();
} else {
Meteor.call('applyListWidth', board, list._id, width);
Meteor.call('applyListWidth', board, list._id, width, constraint);
Popup.back();
}
},
@ -362,12 +369,28 @@ BlazeComponent.extendComponent({
listWidthValue() {
const list = Template.currentData();
const board = list.boardId;
return Meteor.user().getListWidth(board, list._id);
return ReactiveCache.getCurrentUser().getListWidth(board, list._id);
},
listConstraintValue() {
const list = Template.currentData();
const board = list.boardId;
return ReactiveCache.getCurrentUser().getListConstraint(board, list._id);
},
isAutoWidth() {
const boardId = Utils.getCurrentBoardId();
const user = ReactiveCache.getCurrentUser();
return user && user.isAutoWidth(boardId);
},
events() {
return [
{
'click .js-auto-width-board'() {
dragscroll.reset();
ReactiveCache.getCurrentUser().toggleAutoWidth(Utils.getCurrentBoardId());
},
'click .list-width-apply': this.applyListWidth,
'click .list-width-error': Popup.open('listWidthError'),
},

View file

@ -0,0 +1,74 @@
.my-cards-board-wrapper {
border-radius: 0 0 4px 4px;
min-width: 400px;
margin-bottom: 2rem;
margin-right: auto;
margin-left: auto;
border-width: 2px;
border-style: solid;
border-color: #a2a2a2;
}
.my-cards-board-title {
font-size: 1.4rem;
font-weight: bold;
padding: 0.5rem;
background-color: #808080;
color: #fff;
}
.my-cards-swimlane-title {
font-size: 1.1rem;
font-weight: bold;
padding: 0.5rem;
padding-bottom: 0.4rem;
margin-top: 0;
margin-bottom: 0.5rem;
text-align: center;
}
.swimlane-default-color {
background-color: #d3d3d3;
}
.my-cards-list-title {
font-weight: bold;
font-size: 1.1rem;
text-align: center;
margin-bottom: 0.7rem;
}
.my-cards-list-wrapper {
margin: 1rem;
border-radius: 5px;
display: inline-grid;
min-width: 250px;
max-width: 350px;
}
.my-cards-card-wrapper {
margin-top: 0;
margin-bottom: 10px;
}
.my-cards-dueat-list-wrapper {
max-width: 500px;
margin-right: auto;
margin-left: auto;
}
.my-cards-board-table thead {
border-bottom: 3px solid #4d4d4d;
background-color: transparent;
}
.my-cards-board-table th,
.my-cards-board-table td {
border: 0;
}
.my-cards-board-table tr {
border-bottom: 2px solid #a2a2a2;
}
.my-cards-card-title-table {
font-weight: bold;
padding-left: 2px;
max-width: 243px;
}
.my-cards-board-badge {
width: 36px;
height: 24px;
float: left;
border-radius: 5px;
margin-right: 5px;
}

View file

@ -0,0 +1,8 @@
template(name="accessibilityHeaderBar")
if currentUser
h1
| {{_ 'accessibility-title'}}
template(name="accessibility")
if currentUser
| {{_ 'accessibility-content'}}

View file

@ -0,0 +1,11 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
BlazeComponent.extendComponent({
onCreated() {
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
Meteor.subscribe('setting');
},
}).register('accessibility');

View file

@ -2,15 +2,15 @@
.inlined-form a.fa.fa-brands.fa-markdown {
float: right;
position: absolute;
top: -20px;
top: -10px;
right: 60px;
}
.new-comment a.fa.fa-copy,
.inlined-form a.fa.fa-copy {
float: right;
position: absolute;
top: -20px;
right: 6px;
position: relative;
top: -10px;
right: 5px;
}
.js-inlined-form.viewer.btn-sm {
position: absolute;

View file

@ -446,6 +446,12 @@ a:not(.disabled).is-active i.fa {
padding: 0;
padding-top: 15px;
}
.no-scrollbars {
scrollbar-width: none;
}
.no-scrollbars::-webkit-scrollbar {
display: none !important;
}
@media screen and (max-width: 800px) {
#content {
margin: 1px 0px 0px 0px;

View file

@ -500,9 +500,9 @@ template(name="modifyTeamsUsers")
| {{_ 'r-action'}}
.form-group.flex
input.wekan-form-control#addAction(type="radio" name="action" value="true" checked="checked")
span {{_ 'add'}}
label(for=addAction) {{_ 'add'}}
input.wekan-form-control#deleteAction(type="radio" name="action" value="false")
span {{_ 'delete'}}
label(for=deleteAction) {{_ 'delete'}}
div.buttonsContainer
input.primary.wide#addTeamBtn(type="submit" value="{{_ 'save'}}")
input.primary.wide#cancelBtn(type="submit" value="{{_ 'cancel'}}")

View file

@ -72,26 +72,31 @@
padding: 0 0.5rem;
}
.setting-content .content-body .main-body ul li .admin-announcement,
.setting-content .content-body .main-body ul li .admin-accessibility,
.setting-content .content-body .main-body ul li .invite-people,
.setting-content .content-body .main-body ul li .layout {
padding-left: 20px;
}
.setting-content .content-body .main-body ul li .admin-announcement li,
.setting-content .content-body .main-body ul li .admin-accessibility li,
.setting-content .content-body .main-body ul li .invite-people li,
.setting-content .content-body .main-body ul li .layout li {
min-width: 500px;
}
.setting-content .content-body .main-body ul li .admin-announcement li ul.no-margin-bottom,
.setting-content .content-body .main-body ul li .admin-accessibility li ul.no-margin-bottom,
.setting-content .content-body .main-body ul li .invite-people li ul.no-margin-bottom,
.setting-content .content-body .main-body ul li .layout li ul.no-margin-bottom {
margin-bottom: 0;
}
.setting-content .content-body .main-body ul li .admin-announcement li .bg-white a,
.setting-content .content-body .main-body ul li .admin-accessibility li .bg-white a,
.setting-content .content-body .main-body ul li .invite-people li .bg-white a,
.setting-content .content-body .main-body ul li .layout li .bg-white a {
background: #f7f7f7;
}
.setting-content .content-body .main-body ul li .admin-announcement li .bg-white a.is-checked,
.setting-content .content-body .main-body ul li .admin-accessibility li .bg-white a.is-checked,
.setting-content .content-body .main-body ul li .invite-people li .bg-white a.is-checked,
.setting-content .content-body .main-body ul li .layout li .bg-white a.is-checked {
background: #fff;

View file

@ -30,6 +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="layout-setting")
i.fa.fa-object-group
@ -52,6 +56,8 @@ template(name="setting")
+tableVisibilityModeSettings
else if announcementSetting.get
+announcementSettings
else if accessibilitySetting.get
+accessibilitySettings
else if layoutSetting.get
+layoutSettings
else if webhookSetting.get
@ -137,34 +143,32 @@ template(name='tableVisibilityModeSettings')
.title {{_ 'tableVisibilityMode-allowPrivateOnly'}}
.form-group.flex
input.wekan-form-control#accounts-allowPrivateOnly(type="radio" name="allowPrivateOnly" value="true" checked="{{#if allowPrivateOnly}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowPrivateOnly(type="radio" name="allowPrivateOnly" value="false" checked="{{#unless allowPrivateOnly}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
button.js-tableVisibilityMode-save.primary {{_ 'save'}}
template(name='accountSettings')
ul#account-setting.setting-detail
li
button.js-all-hide-system-messages.primary {{_ 'hide-system-messages-of-all-users'}}
li.accounts-form
.title {{_ 'accounts-allowEmailChange'}}
.form-group.flex
input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="true" checked="{{#if allowEmailChange}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="false" checked="{{#unless allowEmailChange}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
.title {{_ 'accounts-allowUserNameChange'}}
.form-group.flex
input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="true" checked="{{#if allowUserNameChange}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="false" checked="{{#unless allowUserNameChange}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
.title {{_ 'accounts-allowUserDelete'}}
.form-group.flex
input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="true" checked="{{#if allowUserDelete}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="false" checked="{{#unless allowUserDelete}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
button.js-accounts-save.primary {{_ 'save'}}
template(name='announcementSettings')
@ -183,8 +187,33 @@ template(name='announcementSettings')
li
button.js-announcement-save.primary {{_ 'save'}}
template(name='accessibilitySettings')
ul#accessibility-setting.setting-detail
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}}")
li
.accessibility-content(class="{{#if currentAccessibility.enabled}}{{else}}hide{{/if}}")
ul
li
.title {{_ 'admin-accessibility-title'}}
textarea#admin-accessibility.wekan-form-control= currentAccessibility.accessibilityTitle
li
.title {{_ 'admin-accessibility-content'}}
textarea#admin-accessibility.wekan-form-control= currentAccessibility.accessibilityContent
li
button.js-accessibility-save.primary {{_ 'save'}}
template(name='layoutSettings')
ul#layout-setting.setting-detail
li
button.js-all-boards-hide-activities.primary {{_ 'hide-activities-of-all-boards'}}
li.layout-form
.title {{_ 'oidc-button-text'}}
.form-group
@ -201,9 +230,9 @@ template(name='layoutSettings')
.title {{_ 'display-authentication-method'}}
.form-group.flex
input.wekan-form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="true" checked="{{#if currentSetting.displayAuthenticationMethod}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="false" checked="{{#unless currentSetting.displayAuthenticationMethod}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li.layout-form
.title {{_ 'default-authentication-method'}}
+selectAuthenticationMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
@ -218,9 +247,9 @@ template(name='layoutSettings')
.title {{_ 'hide-logo'}}
.form-group.flex
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li.layout-form
.title {{_ 'custom-login-logo-image-url'}}
.form-group
@ -257,16 +286,16 @@ template(name='layoutSettings')
.title {{_ 'hide-card-counter-list'}}
.form-group.flex
input.wekan-form-control#hide-card-counter-list(type="radio" name="hideCardCounterList" value="true" checked="{{#if currentSetting.hideCardCounterList}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#hide-card-counter-list(type="radio" name="hideCardCounterList" value="false" checked="{{#unless currentSetting.hideCardCounterList}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li.layout-form
.title {{_ 'hide-board-member-list'}}
.form-group.flex
input.wekan-form-control#hide-board-member-list(type="radio" name="hideBoardMemberList" value="true" checked="{{#if currentSetting.hideBoardMemberList}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#hide-board-member-list(type="radio" name="hideBoardMemberList" value="false" checked="{{#unless currentSetting.hideBoardMemberList}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li
button.js-save-layout.primary {{_ 'save'}}

View file

@ -89,6 +89,9 @@ BlazeComponent.extendComponent({
toggleHideBoardMemberList() {
$('#hide-board-member-list').toggleClass('is-checked');
},
toggleAccessibilityPageEnabled() {
$('#accessibility-page-enabled').toggleClass('is-checked');
},
toggleDisplayAuthenticationMethod() {
$('#display-authentication-method').toggleClass('is-checked');
},
@ -239,7 +242,15 @@ 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()
.trim();
const accessibilityContent = $('#accessibility-content')
.val()
.trim();
*/
const spinnerName = $('#spinnerName').val();
try {
@ -265,6 +276,11 @@ BlazeComponent.extendComponent({
legalNotice,
},
});
/*
accessibilityPageEnabled,
accessibilityTitle,
accessibilityContent,
*/
} catch (e) {
return;
} finally {
@ -301,6 +317,7 @@ 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,
@ -336,12 +353,12 @@ BlazeComponent.extendComponent({
allowUserDelete() {
return AccountSettings.findOne('accounts-allowUserDelete').booleanValue;
},
allHideSystemMessages() {
Meteor.call('setAllUsersHideSystemMessages', (err, ret) => {
allBoardsHideActivities() {
Meteor.call('setAllBoardsHideActivities', (err, ret) => {
if (!err && ret) {
if (ret === true) {
const message = `${TAPi18n.__(
'now-system-messages-of-all-users-are-hidden',
'now-activities-of-all-boards-are-hidden',
)}`;
alert(message);
}
@ -359,7 +376,7 @@ BlazeComponent.extendComponent({
'click button.js-accounts-save': this.saveAccountsChange,
},
{
'click button.js-all-hide-system-messages': this.allHideSystemMessages,
'click button.js-all-boards-hide-activities': this.allBoardsHideActivities,
},
];
},
@ -376,12 +393,12 @@ BlazeComponent.extendComponent({
allowPrivateOnly() {
return TableVisibilityModeSettings.findOne('tableVisibilityMode-allowPrivateOnly').booleanValue;
},
allHideSystemMessages() {
Meteor.call('setAllUsersHideSystemMessages', (err, ret) => {
allBoardsHideActivities() {
Meteor.call('setAllBoardsHideActivities', (err, ret) => {
if (!err && ret) {
if (ret === true) {
const message = `${TAPi18n.__(
'now-system-messages-of-all-users-are-hidden',
'now-activities-of-all-boards-are-hidden',
)}`;
alert(message);
}
@ -399,7 +416,7 @@ BlazeComponent.extendComponent({
'click button.js-tableVisibilityMode-save': this.saveTableVisibilityChange,
},
{
'click button.js-all-hide-system-messages': this.allHideSystemMessages,
'click button.js-all-boards-hide-activities': this.allBoardsHideActivities,
},
];
},

View file

@ -3,34 +3,31 @@
top: 0;
bottom: 0;
right: 0;
overflow-y: scroll;
}
.sidebar .sidebar-shadow {
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
.sidebar {
background: #f7f7f7;
box-shadow: -10px 0px 5px -10px #b3b3b3;
z-index: 10;
}
.sidebar-xmark {
position: absolute;
right: 10px;
top: 5px;
right: 0px;
top: 0px;
font-size: 25px;
padding: 10px;
}
.sidebar-xmark:hover {
background: rgba(0,0,0,0.15);
}
.sidebar-actions {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 10px 10px 0px 10px;
}
.sidebar .sidebar-content {
padding: 12px;
margin-bottom: 1.6em;
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
overflow-x: hidden;
overflow-y: auto;
width: 90%;
padding: 0 12px;
}
.sidebar .sidebar-content .hide-btn {
display: none;
@ -106,21 +103,23 @@
margin-right: 10px;
}
.sidebar .sidebar-shortcuts {
position: absolute;
margin-left: 40%;
padding: 0;
top: 7px;
font-size: 0.8em;
font-size: 1em;
line-height: 1.6em;
color: #999;
}
.sidebar .sidebar-shortcuts .sidebar-btn {
margin-left: 3px;
margin-right: 3px;
}
.board-sidebar {
width: 548px;
right: -548px;
display: none;
width: 30vw;
z-index: 100;
transition: top 0.1s, right 0.1s, width 0.1s;
}
.board-sidebar.is-open {
right: 0;
display: block;
}
.board-widget h4 {
margin: 5px 0;
@ -178,7 +177,7 @@
@media screen and (max-width: 800px) {
.board-sidebar {
width: 100%;
right: -100%;
left: 0;
}
.board-sidebar .sidebar-content .hide-btn {
width: 40px;

View file

@ -1,36 +1,61 @@
template(name="sidebar")
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}}")
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}} {{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
//a.sidebar-tongue.js-toggle-sidebar(
// class="{{#if isTongueHidden}}is-hidden{{/if}}",
// title="{{showTongueTitle}}")
// i.fa.fa-navicon
.sidebar-shadow
.sidebar-actions
.sidebar-shortcuts
a.sidebar-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
i.fa.fa-keyboard-o
span {{_ 'keyboard-shortcuts' }}
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}}")
a.sidebar-xmark.js-close-sidebar &#10005;
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar
// i.fa.fa-navicon
unless isDefaultView
h2
a.fa.fa-chevron-left.js-back-home
= getViewTitle
if isOpen
+Template.dynamic(template=getViewTemplate)
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar
// i.fa.fa-navicon
unless isDefaultView
h2
a.fa.fa-chevron-left.js-back-home
= getViewTitle
if isOpen
+Template.dynamic(template=getViewTemplate)
template(name='homeSidebar')
hr
+membersWidget
hr
+labelsWidget
hr
ul#cards.label-text-hidden
a.flex.js-toggle-minicard-label-text(title="{{_ 'hide-minicard-label-text'}}")
span {{_ 'hide-minicard-label-text'}}
b &nbsp;
.materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}")
ul#cards.vertical-scrollbars-toggle
a.flex.js-vertical-scrollbars-toggle(title="{{_ 'enable-vertical-scrollbars'}}")
span {{_ 'enable-vertical-scrollbars'}}
b &nbsp;
.materialCheckBox(class="{{#if isVerticalScrollbars}}is-checked{{/if}}")
ul#cards.show-week-of-year-toggle
a.flex.js-show-week-of-year-toggle(title="{{_ 'show-week-of-year'}}")
span {{_ 'show-week-of-year'}}
b &nbsp;
.materialCheckBox(class="{{#if isShowWeekOfYear}}is-checked{{/if}}")
hr
unless currentUser.isNoComments
h3
h3.activity-title
i.fa.fa-comments-o
| {{_ 'activities'}}
.material-toggle-switch(title="{{_ 'show-activities'}}")
if showActivities
input.toggle-switch(type="checkbox" id="toggleShowActivitiesBoard" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleShowActivitiesBoard")
label.toggle-label(for="toggleShowActivitiesBoard")
+activities(mode="board")
template(name="membersWidget")
@ -40,11 +65,6 @@ template(name="membersWidget")
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
i.board-header-btn-icon.fa.fa-cog
| {{_ 'boardMenuPopup-title'}}
.board-widget.board-widget-members
.sidebar-shortcuts
a.board-header-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
i.fa.fa-keyboard-o
span {{_ 'keyboard-shortcuts' }}
hr
h3
i.fa.fa-users

View file

@ -105,6 +105,16 @@ BlazeComponent.extendComponent({
else return `${TAPi18n.__('sidebar-open')}`;
},
isKeyboardShortcuts() {
const user = ReactiveCache.getCurrentUser();
return user && user.isKeyboardShortcuts();
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
events() {
return [
{
@ -126,6 +136,15 @@ BlazeComponent.extendComponent({
'click .js-shortcuts'() {
FlowRouter.go('shortcuts');
},
'click .js-keyboard-shortcuts-toggle'() {
ReactiveCache.getCurrentUser().toggleKeyboardShortcuts();
},
'click .js-vertical-scrollbars-toggle'() {
ReactiveCache.getCurrentUser().toggleVerticalScrollbars();
},
'click .js-show-week-of-year-toggle'() {
ReactiveCache.getCurrentUser().toggleShowWeekOfYear();
},
'click .js-close-sidebar'() {
Sidebar.toggle()
},
@ -136,7 +155,7 @@ BlazeComponent.extendComponent({
Blaze.registerHelper('Sidebar', () => Sidebar);
Template.homeSidebar.helpers({
BlazeComponent.extendComponent({
hiddenMinicardLabelText() {
currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
@ -147,7 +166,28 @@ Template.homeSidebar.helpers({
return false;
}
},
});
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
isShowWeekOfYear() {
const user = ReactiveCache.getCurrentUser();
return user && user.isShowWeekOfYear();
},
showActivities() {
let ret = Utils.getCurrentBoard().showActivities ?? false;
return ret;
},
events() {
return [
{
'click #toggleShowActivitiesBoard'() {
Utils.getCurrentBoard().toggleShowActivities();
},
},
];
},
}).register('homeSidebar');
Template.boardInfoOnMyBoardsPopup.helpers({
hideCardCounterList() {
@ -913,19 +953,11 @@ BlazeComponent.extendComponent({
},
allowsCreator() {
return (
this.currentBoard.allowsCreator === null ||
this.currentBoard.allowsCreator === undefined ||
this.currentBoard.allowsCreator
);
return this.currentBoard.allowsCreator ?? false;
},
allowsCreatorOnMinicard() {
return (
this.currentBoard.allowsCreatorOnMinicard === null ||
this.currentBoard.allowsCreatorOnMinicard === undefined ||
this.currentBoard.allowsCreatorOnMinicard
);
return this.currentBoard.allowsCreatorOnMinicard ?? false;
},
allowsMembers() {

View file

@ -143,7 +143,7 @@ BlazeComponent.extendComponent({
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: sortValue.base,
sort: sortValue.base || 0,
type: swimlaneType,
});
@ -224,7 +224,7 @@ BlazeComponent.extendComponent({
swimlaneHeightValue() {
const swimlane = this.currentData();
const board = swimlane.boardId;
return Meteor.user().getSwimlaneHeight(board, swimlane._id);
return ReactiveCache.getCurrentUser().getSwimlaneHeight(board, swimlane._id);
},
events() {

View file

@ -1,8 +1,3 @@
@media screen and (min-width: 801px) {
.swimlane.ui-sortable {
width: max-content;
}
}
[class=swimlane] {
position: sticky;
left: 0;

View file

@ -2,7 +2,7 @@ template(name="swimlane")
.swimlane.nodragscroll
+swimlaneHeader
unless collapseSwimlane
.swimlane.js-lists.js-swimlane(id="swimlane-{{_id}}"
.swimlane.js-lists.js-swimlane.dragscroll(id="swimlane-{{_id}}"
style="height:{{swimlaneHeight}};")
if isMiniScreen
if currentListIsInThisSwimlane _id
@ -24,7 +24,7 @@ template(name="swimlane")
+cardDetails(currentCard)
template(name="listsGroup")
.swimlane.list-group.js-lists
.swimlane.list-group.js-lists.dragscroll
if isMiniScreen
if currentList
+list(currentList)

View file

@ -225,7 +225,7 @@ BlazeComponent.extendComponent({
},
swimlaneHeight() {
const user = Meteor.user();
const user = ReactiveCache.getCurrentUser();
const swimlane = Template.currentData();
const height = user.getSwimlaneHeight(swimlane.boardId, swimlane._id);
return height == -1 ? "auto" : (height + "px");
@ -288,7 +288,7 @@ BlazeComponent.extendComponent({
Template.swimlane.helpers({
canSeeAddList() {
return Meteor.user().isBoardAdmin();
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
});

View file

@ -5,6 +5,7 @@
float: left;
height: 30px;
width: 30px;
margin: .3vh;
cursor: pointer;
user-select: none;
z-index: 1;

View file

@ -77,6 +77,10 @@ template(name="memberMenuPopup")
a.js-change-language
i.fa.fa-flag
| {{_ 'changeLanguagePopup-title'}}
//li
// a.js-support
// i.fa.fa-question-circle
// | {{_ 'support'}}
unless isSandstorm
hr
ul.pop-over-list
@ -139,6 +143,12 @@ template(name="editProfilePopup")
div
input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
template(name="supportPopup")
ul.pop-over-list
li
| Support popup text will be editable later.
template(name="changePasswordPopup")
+atForm(state='changePwd')
@ -153,12 +163,6 @@ template(name="changeLanguagePopup")
template(name="changeSettingsPopup")
ul.pop-over-list
//li
// a.js-toggle-system-messages
// i.fa.fa-comments-o
// | {{_ 'hide-system-messages'}}
// if hiddenSystemMessages
// i.fa.fa-check
//li
// a.js-toggle-desktop-drag-handles
// i.fa.fa-arrows

View file

@ -77,6 +77,7 @@ Template.memberMenuPopup.events({
'click .js-change-avatar': Popup.open('changeAvatar'),
'click .js-change-password': Popup.open('changePassword'),
'click .js-change-language': Popup.open('changeLanguage'),
'click .js-support': Popup.open('support'),
'click .js-logout'(event) {
event.preventDefault();
@ -283,16 +284,6 @@ Template.changeLanguagePopup.events({
});
Template.changeSettingsPopup.helpers({
hiddenSystemMessages() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
return (currentUser.profile || {}).hasHiddenSystemMessages;
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
return true;
} else {
return false;
}
},
rescueCardDescription() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
@ -325,7 +316,7 @@ Template.changeSettingsPopup.helpers({
});
},
startDayOfWeek() {
currentUser = Meteor.user();
currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
return currentUser.getStartDayOfWeek();
} else {
@ -343,7 +334,7 @@ Template.changeSettingsPopup.events({
return ret;
},
'click .js-toggle-desktop-drag-handles'() {
currentUser = Meteor.user();
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
Meteor.call('toggleDesktopDragHandles');
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
@ -352,16 +343,6 @@ Template.changeSettingsPopup.events({
window.localStorage.setItem('showDesktopDragHandles', 'true');
}
},
'click .js-toggle-system-messages'() {
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleSystemMessages');
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
window.localStorage.removeItem('hasHiddenSystemMessages');
} else {
window.localStorage.setItem('hasHiddenSystemMessages', 'true');
}
},
'click .js-rescue-card-description'() {
Meteor.call('toggleRescueCardDescription')
},
@ -375,7 +356,7 @@ Template.changeSettingsPopup.events({
templateInstance.$('#start-day-of-week').val(),
10,
);
const currentUser = Meteor.user();
const currentUser = ReactiveCache.getCurrentUser();
if (isNaN(minLimit) || minLimit < -1) {
minLimit = -1;
}

View file

@ -123,6 +123,7 @@ EscapeActions = {
// the shortcut sould work on textarea and inputs as well.
Mousetrap.bindGlobal('esc', () => {
EscapeActions.executeLowest();
Sidebar.hide();
});
// On a left click on the document, we try to exectute one escape action (eg,

View file

@ -237,7 +237,6 @@ class SetFilter {
if (this._indexOfVal(val) === -1) {
this._selectedElements.push(val);
this._dep.changed();
showFilterSidebar();
}
}

View file

@ -3,6 +3,46 @@ import { ReactiveCache } from '/imports/reactiveCache';
// XXX There is no reason to define these shortcuts globally, they should be
// attached to a template (most of them will go in the `board` template).
window.addEventListener('keydown', (e) => {
// Only handle event if coming from body
if (e.target !== document.body) return;
// Only handle event if it's in another language
if (String.fromCharCode(e.which).toLowerCase() === e.key) return;
// Trigger the corresponding action
Mousetrap.handleKey(String.fromCharCode(e.which).toLowerCase(), [], {type: "keypress"});
});
// Overwrite the stopCallback to allow for more keyboard shortcut customizations
Mousetrap.stopCallback = (event, element) => {
// Are shortcuts enabled for the user?
if (ReactiveCache.getCurrentUser() && !ReactiveCache.getCurrentUser().isKeyboardShortcuts())
return true;
// Always handle escape
if (event.keyCode === 27)
return false;
// Make sure there are no selected characters
if (window.getSelection().type === "Range")
return true;
// Decide what the current element is
const currentElement = event.target || document.activeElement;
// If the current element is editable, we don't want to trigger an event
if (currentElement.isContentEditable)
return true;
// Make sure we are not in an input element
if (currentElement instanceof HTMLInputElement || currentElement instanceof HTMLSelectElement || currentElement instanceof HTMLTextAreaElement)
return true;
// We can trigger events!
return false;
}
function getHoveredCardId() {
const card = $('.js-minicard:hover').get(0);
if (!card) return null;
@ -93,7 +133,7 @@ Mousetrap.bind(numbArray, (evt, key) => {
const cardIds = MultiSelection.getSelectedCardIds();
for (const cardId of cardIds)
{
card = ReactiveCache.getCard(cardId);
card = Cards.findOne(cardId);
if(num <= board.labels.length)
{
card.removeLabel(labels[num-1]["_id"]);
@ -117,7 +157,7 @@ Mousetrap.bind(numArray, (evt, key) => {
const cardIds = MultiSelection.getSelectedCardIds();
for (const cardId of cardIds)
{
card = ReactiveCache.getCard(cardId);
card = Cards.findOne(cardId);
if(num <= board.labels.length)
{
card.addLabel(labels[num-1]["_id"]);
@ -131,7 +171,7 @@ Mousetrap.bind(numArray, (evt, key) => {
return;
}
if (ReactiveCache.getCurrentUser().isBoardMember()) {
const card = ReactiveCache.getCard(cardId);
const card = Cards.findOne(cardId);
if(num <= board.labels.length)
{
card.toggleLabel(labels[num-1]["_id"]);
@ -139,6 +179,57 @@ Mousetrap.bind(numArray, (evt, key) => {
}
});
Mousetrap.bind(_.range(1, 10).map(x => `ctrl+alt+${x}`), (evt, key) => {
// Make sure the current user is defined
if (!ReactiveCache.getCurrentUser())
return;
// Make sure the current user is a board member
if (!ReactiveCache.getCurrentUser().isBoardMember())
return;
const memberIndex = parseInt(key.split("+").pop()) - 1;
const currentBoard = Utils.getCurrentBoard();
const validBoardMembers = currentBoard.memberUsers().filter(member => member.isBoardMember());
if (memberIndex >= validBoardMembers.length)
return;
const memberId = validBoardMembers[memberIndex]._id;
if (MultiSelection.isActive()) {
for (const cardId of MultiSelection.getSelectedCardIds())
Cards.findOne(cardId).toggleAssignee(memberId);
} else {
const cardId = getSelectedCardId();
if (!cardId)
return;
Cards.findOne(cardId).toggleAssignee(memberId);
}
});
Mousetrap.bind('m', evt => {
const cardId = getSelectedCardId();
if (!cardId) {
return;
}
const currentUserId = Meteor.userId();
if (currentUserId === null) {
return;
}
if (ReactiveCache.getCurrentUser().isBoardMember()) {
const card = Cards.findOne(cardId);
card.toggleAssignee(currentUserId);
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
evt.preventDefault();
}
});
Mousetrap.bind('space', evt => {
const cardId = getSelectedCardId();
if (!cardId) {
@ -151,7 +242,7 @@ Mousetrap.bind('space', evt => {
}
if (ReactiveCache.getCurrentUser().isBoardMember()) {
const card = ReactiveCache.getCard(cardId);
const card = Cards.findOne(cardId);
card.toggleMember(currentUserId);
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
@ -159,7 +250,7 @@ Mousetrap.bind('space', evt => {
}
});
Mousetrap.bind('c', evt => {
const archiveCard = evt => {
const cardId = getSelectedCardId();
if (!cardId) {
return;
@ -171,8 +262,40 @@ Mousetrap.bind('c', evt => {
}
if (Utils.canModifyBoard()) {
const card = ReactiveCache.getCard(cardId);
const card = Cards.findOne(cardId);
card.archive();
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
evt.preventDefault();
}
};
// Archive card has multiple shortcuts
Mousetrap.bind('c', archiveCard);
Mousetrap.bind('-', archiveCard);
// Same as above, this time for Persian keyboard.
// https://github.com/wekan/wekan/pull/5589#issuecomment-2516776519
Mousetrap.bind('÷', archiveCard);
Mousetrap.bind('n', evt => {
const cardId = getSelectedCardId();
if (!cardId) {
return;
}
const currentUserId = Meteor.userId();
if (currentUserId === null) {
return;
}
if (Utils.canModifyBoard()) {
// Find the current hovered card
const card = Cards.findOne(cardId);
// Find the button and click it
$(`#js-list-${card.listId} .list-body .minicards .open-minicard-composer`).click();
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
evt.preventDefault();
@ -193,6 +316,10 @@ Template.keyboardShortcuts.helpers({
keys: ['a'],
action: 'shortcut-filter-my-assigned-cards',
},
{
keys: ['n'],
action: 'add-card-to-bottom-of-list',
},
{
keys: ['f'],
action: 'shortcut-toggle-filterbar',
@ -219,10 +346,14 @@ Template.keyboardShortcuts.helpers({
},
{
keys: ['SPACE'],
action: 'shortcut-add-self',
},
{
keys: ['m'],
action: 'shortcut-assign-self',
},
{
keys: ['c'],
keys: ['c', '÷', '-'],
action: 'archive-card',
},
{
@ -233,5 +364,9 @@ Template.keyboardShortcuts.helpers({
keys: ['shift + number keys 1-9'],
action: 'remove-labels-multiselect'
},
{
keys: ['ctrl + alt + number keys 1-9'],
action: 'toggle-assignees'
},
],
});

View file

@ -4,10 +4,11 @@ Utils = {
setBackgroundImage(url) {
const currentBoard = Utils.getCurrentBoard();
if (currentBoard.backgroundImageURL !== undefined) {
$(".board-wrapper,.board-wrapper .board-canvas").css({"background":"url(" + currentBoard.backgroundImageURL + ")","background-size":"cover"});
$(".board-wrapper").css({"background":"url(" + currentBoard.backgroundImageURL + ")","background-size":"cover"});
$(".swimlane,.swimlane .list,.swimlane .list .list-body,.swimlane .list:first-child .list-body").css({"background-color":"transparent"});
} else if (currentBoard.color !== undefined) {
currentBoard.setColor(currentBoard.color);
$(".minicard").css({"opacity": "0.9"});
} else if (currentBoard["background-color"]) {
currentBoard.setColor(currentBoard["background-color"]);
}
},
/** returns the current board id

View file

@ -55,6 +55,30 @@ FlowRouter.route('/public', {
},
});
FlowRouter.route('/accessibility', {
name: 'accessibility',
triggersEnter: [AccountsTemplates.ensureSignedIn],
action() {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCardId', null);
Session.set('popupCardBoardId', null);
Filter.reset();
Session.set('sortBy', '');
EscapeActions.executeAll();
Utils.manageCustomUI();
Utils.manageMatomo();
BlazeLayout.render('defaultLayout', {
headerBar: 'accessibilityHeaderBar',
content: 'accessibility',
});
},
});
FlowRouter.route('/b/:id/:slug', {
name: 'board',
action(params) {

View file

@ -10,13 +10,13 @@
# 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
# 1) Stop Wekan:
# docker-compose stop
# docker compose stop
# 2) Remove old Wekan app (wekan-app only, not that wekan-db container that has all your data)
# docker rm wekan-app
# 3) Get newest docker-compose.yml from https://github.com/wekan/wekan to have correct image,
# for example: "image: quay.io/wekan/wekan" or version tag "image: quay.io/wekan/wekan:v4.52"
# 4) Start Wekan:
# docker-compose up -d
# docker compose up -d
#----------------------------------------------------------------------------------
# ==== OPTIONAL: DEDICATED DOCKER USER ====
# 1) Optionally create a dedicated user for Wekan, for example:
@ -36,14 +36,14 @@
# ----------------------------------------------------------------------------------
# ==== USAGE OF THIS docker-compose.yml ====
# 1) For seeing does Wekan work, try this and check with your web browser:
# docker-compose up
# docker compose up
# 2) Stop Wekan and start Wekan in background:
# docker-compose stop
# docker-compose up -d
# docker compose stop
# docker compose up -d
# 3) See running Docker containers:
# docker ps
# 4) Stop Docker containers:
# docker-compose stop
# docker compose stop
# ----------------------------------------------------------------------------------
# ===== INSIDE DOCKER CONTAINERS, AND BACKUP/RESTORE ====
# https://github.com/wekan/wekan/wiki/Backup
@ -140,7 +140,7 @@ services:
- wekan-tier
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker-compose up -d --build
# ==== and use commands: docker compose up -d --build
#build:
# context: .
# dockerfile: Dockerfile
@ -442,11 +442,15 @@ services:
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
#- OAUTH2_CLIENT_ID=<Keycloak create Client ID>
#- OAUTH2_SERVER_URL=<Keycloak server name>/auth
#- OAUTH2_SERVER_URL=<Keycloak server url - https://keycloak.example.com>
#- OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
#- OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
#- OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
#- OAUTH2_SECRET=<keycloak client secret>
#- OAUTH2_ID_MAP=sub
#- OAUTH2_USERNAME_MAP=preferred_username
#- OAUTH2_EMAIL_MAP=email
#- OAUTH2_FULLNAME_MAP=name
#-----------------------------------------------------------------
# ==== OAUTH2 DOORKEEPER ====
# https://github.com/wekan/wekan/issues/1874
@ -573,10 +577,14 @@ services:
# If the sync of the users should be done in the background
#- LDAP_BACKGROUND_SYNC=false
#
# At which interval does the background task sync.
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hour
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hours
# At which interval does the background task sync in milliseconds.
# Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
- LDAP_BACKGROUND_SYNC_INTERVAL=''
#
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#
@ -585,7 +593,7 @@ services:
# If using LDAPS: LDAP_ENCRYPTION=ssl
#- LDAP_ENCRYPTION=false
#
# The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
# The certification for the LDAPS server. Certificate needs to be included in this docker compose.yml file.
#- LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+G2FIdAgIC...-----END CERTIFICATE-----
#
# Reject Unauthorized Certificate

View file

@ -575,10 +575,14 @@ services:
# If the sync of the users should be done in the background
#- LDAP_BACKGROUND_SYNC=false
#
# At which interval does the background task sync.
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hour
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hours
# At which interval does the background task sync in milliseconds.
# Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
- LDAP_BACKGROUND_SYNC_INTERVAL=''
#
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#

View file

@ -10,6 +10,7 @@ There edit Browser-compatibility-matrix.md and attach it with .txt extension or
Browser | [PWA](PWA) | Mobile | Desktop | OS
------- | ----| ------ | ------- | -------
Safari | iOS Yes | iOS Newest | Newest | iOS, macOS
Iris | No | No | Newest | [Iris browser news](https://www.riscosopen.org/forum/forums/1/topics/19545), Download [RISC OS Direct](https://www.riscosdev.com/direct/) for Raspberry Pi etc. [Other versions of RISC OS for many ARM CPU devices](https://www.riscosopen.org/content/downloads) do not have Iris browser yet, but there could be some way to transfer Iris browser files from RISC OS Direct.
## Firefox based
@ -17,15 +18,14 @@ Any telemetry at any Firefox based browser can be additionally most locked down
Browser | [PWA](PWA) | Mobile | Desktop | OS
------- | ----| ------ | ------- | -------
[Mypal](https://releases.wekan.team/mypal/) | No | No | Newest | For 32bit ReactOS/WinXP/Win7/etc [issue](https://github.com/wekan/wekan/issues/3132), Other 32bit browsers probably not
Firefox | Android Yes | Android Newest | Newest | Win/Mac/Linux/RasPi
Morph Browser | No | Yes | Yes | [Ubuntu Touch](https://ubports.com) (based on Ubuntu 16.04) on PinePhone, OnePlus 3, [RasPi3](https://ci.ubports.com/job/rootfs/job/rootfs-rpi/) (not RasPi4 yet). Works best with bluetooth or USB mouse and keyboard.
[OpenStore App](https://open-store.io/app/wekan.wekanteam) | Yes | Yes | Yes | Based on [Wekan PWA](https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license/s7SkzYviC2e963FkT), [Ubuntu Touch](https://ubports.com) app at [OpenStore](https://open-store.io/app/wekan.wekanteam) using Morph browser with Wekan demo & development server https://boards.wekan.team . Tested on [RasPi3](https://ci.ubports.com/job/rootfs/job/rootfs-rpi/). PWA URL is configured here https://github.com/wekan/wekan-openstore/blob/master/wekan.desktop#L3
[Waterfox](https://www.waterfox.net) | No | No | Yes | Win/Mac/Linux, more private than Firefox, no tracking
[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/)
[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
@ -37,6 +37,8 @@ Brave | Android Yes | Android Newest | Newest | Win/Mac/Linux/RasPi
Vivaldi | Android Yes | Android Newest | Newest | Win/Mac/Linux
Opera | Android Yes | Android Newest | Newest | Win/Mac/Linux
Credge, Chromium Edge | Android Yes | Android | Newest | Win/Mac/Linux/Mobile
Morph Browser | No | Yes | Yes | [Ubuntu Touch](https://ubports.com) based on Ubuntu 16.04 and 20.04 at all Ubuntu Touch devices, [RasPi3](https://ci.ubports.com/job/rootfs/job/rootfs-rpi/) (not RasPi4 yet). [Repo](https://gitlab.com/ubports/development/core/morph-browser)
[OpenStore App](https://open-store.io/app/wekan.wekanteam) | Yes | Yes | Yes | [Ubuntu Touch](https://ubports.com) app at [OpenStore](https://open-store.io/app/wekan.wekanteam) using Morph browser with Wekan demo & development server https://boards.wekan.team . App source code for Ubuntu 16.04 at https://github.com/wekan/wekan-openstore and Ubuntu 20.04 at https://github.com/wekan/wekan-openstore2
[Microsoft Store App](https://www.microsoft.com/fi-fi/p/wekan/9p2mrxvd087r#activetab=pivot:overviewtab) | Yes | Yes | Yes | At Microsoft Store of Windows 10/11 desktop, made with [PWABuilder](https://www.pwabuilder.com/). Based on [Wekan PWA](https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license/s7SkzYviC2e963FkT), changed app from EdgeHTML to Credge based with Wekan demo & development server https://boards.wekan.team
[Android Play Store App](https://play.google.com/store/apps/details?id=team.wekan.boards.twa) | Yes | Yes | Yes | Based on [Wekan PWA](https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license/s7SkzYviC2e963FkT), made with [PWABuilder](https://www.pwabuilder.com/), uses Android Chrome browser with Wekan demo & development server https://boards.wekan.team
[Thorium](https://thorium.rocks) | No | Yes | Yes | [Win/Win7/Mac/Linux/Android/RasPi](https://thorium.rocks), speed optimized
@ -54,6 +56,17 @@ Browser | [PWA](PWA) | Mobile | Desktop | OS
------- | ----| ------ | ------- | -------
Internet Explorer | No | No | No | No | No
## Servo based, not tested yet
- Apache 2.0 or MIT license
- Repo: https://github.com/versotile-org/verso
## Ladybird based, not yet compatible with WeKan
- BSD-2-Clause license
- Website: https://ladybird.org
- Repo: https://github.com/LadybirdBrowser/ladybird
## Other ways to create Mobile App with Meteor
https://guide.meteor.com/cordova
@ -64,10 +77,10 @@ Benefits:
## Desktop app with Meteor
https://forums.meteor.com/t/desktop-electron-meteor-app-with-todesktop/60904
- https://forums.meteor.com/t/desktop-electron-meteor-app-with-todesktop/60904
## Optional Payments
- If there is sometime a need to develop payment feature, that does not exist yet
- https://forums.meteor.com/t/need-help-adding-in-app-purchases-to-a-meteor-app-specifically-adding-subscription-support-for-android-play-store/40510
- https://www.npmjs.com/package/cordova-plugin-purchase
- https://www.npmjs.com/package/cordova-plugin-purchase

View file

@ -1,23 +1,37 @@
## WeKan Design Principles
- Prevent messing up something https://github.com/wekan/wekan/wiki/Monkey-Proof-Software
- Original WeKan Design, that WeKan currently has: Intuitive, easy to figure out, polished UI/UX, menu options are there where you would expect then to be. Try to fix anything unexpected. New features added there where it makes most sense. And not so many duplicate menus and texts like Trello.
- Not the exact design of Trello https://github.com/wekan/wekan/wiki/FAQ#why-does-wekan-look-so-different-now-compared-to--v09 . Also not the exact design of any other software. But note that design of all software changes often, when they are in active development.
- Some features like Trello:
- 2024-08 Design discussion here: https://github.com/wekan/wekan/discussions/5507
- Original WeKan Design:
- Uses WeKan style confirm popups `Popup.afterConfirm(` , translations etc. Please look at existing code to keep same style.
- Kanban, the good parts. Like was done when figuring out best design for Swimlanes https://github.com/wekan/wekan/issues/955
- Intuitive, easy to figure out, prevent messing up something https://github.com/wekan/wekan/wiki/Monkey-Proof-Software
- Polished UI/UX
- Menu options are there where you would expect then to be.
- Try to fix anything unexpected.
- New features added there where it makes most sense.
- Not too many toggles and settings, because that is worse. For example, Discord settings has too many toggles and settings. Just select some default.
- FOSS with MIT license
- Swimlanes
- All the use cases of WeKan feature/fix contributors
- Cross-platform. Support many CPU/OS/Browsers for Desktop and Mobile.
- Support many browsers https://github.com/wekan/wekan/wiki/Browser-compatibility-matrix . Add support for more.
- PWA https://github.com/wekan/wekan/wiki/PWA
- On-Premise:
- Linux amd64/arm64/s390x
- https://wekan.github.io/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
- Not like other software:
- But note that design of all software changes often, when they are in active development.
- Not bad parts of Trello:
- Not the exact design of Trello https://github.com/wekan/wekan/wiki/FAQ#why-does-wekan-look-so-different-now-compared-to--v09
- Not so many duplicate menus and texts like Trello
- Not so much empty space
- Some good parts of Trello:
- Import from Trello
- Shortcuts https://github.com/wekan/wekan/issues/1878
- IFTTT Rules like Trello Butler https://github.com/wekan/wekan/wiki/IFTTT
- Progress bar of checklist
- Some features like Jira:
- Multiple assignees
- Some features not in Trello, like:
- FOSS with MIT license
- Self-hosting
- Swimlanes
- All the use cases of WeKan feature/fix contributors
- Cross-platform. Support many CPU/OS/Browsers for Desktop and Mobile. Add support for more.
- https://github.com/wekan/wekan/wiki/Browser-compatibility-matrix
- https://github.com/wekan/wekan/wiki/PWA
- https://github.com/wekan/wekan/wiki/Offline
- https://github.com/wekan/wekan/wiki/Mac
- https://github.com/wekan/wekan/wiki/Raspberry-Pi
- Some good parts of Jira:
- Multiple assignees

View file

@ -6,6 +6,7 @@ Please read the meteor style guide before making any significant contribution.
# Stories about how Wekan works, and developing Wekan
- [Login code](https://github.com/wekan/wekan/issues/5714)
- https://www.mongodb.com/docs/drivers/node/v3.7/fundamentals/promises/
- [Do not use code formatters like Prettier and ESLint](https://github.com/wekan/wekan/pull/4633#issuecomment-1214214591)
- [How realtime board updates work](https://github.com/wekan/wekan/issues/3788#issuecomment-834649553)
@ -46,7 +47,7 @@ When you run this, you see .jade template files where is search input box, and .
- Look through old [pull requests](https://github.com/wekan/wekan/pulls)
- Read Wekan source code, you can use some git history viewer GUI like gitk
- Read [Meteor documentation](https://docs.meteor.com/) for [Meteor version](https://github.com/wekan/wekan/blob/main/.meteor/release) in use, other versions mentioned at [Dockerfile](https://github.com/wekan/wekan/blob/main/Dockerfile)
- Docker up-to-date way: You can clone wekan/wekan repo and update docker-compose.yml file ROOT_URL etc as documented at https://github.com/wekan/wekan-mongodb commented docker-compose.yml file, install docker, and build from source with docker with "docker-compose up -d --build"
- Docker up-to-date way: You can clone wekan/wekan repo and update docker-compose.yml file ROOT_URL etc as documented at https://github.com/wekan/wekan commented `docker-compose.yml` file, install docker, and build from source with docker with `docker compose up -d --build`
- Docker not up-to-date way: [Docker environment for Wekan development](https://github.com/wekan/wekan-dev).
## Pull Request Workflow (Please read before submitting PR's)

View file

@ -1,11 +1,53 @@
## Learning Course: Your First Meteor 3.1 Application
- https://www.youtube.com/watch?v=aFZzBb2oRi8&list=PLKKckIyt2nF863eP16mvVgWKR4JDyJoKy
## Meteor 3 Example Code
- https://github.com/fredmaiaarantes/simpletasks
- MIT License
- https://github.com/xet7/simpletasks
- https://github.com/henriquealbert/meteor-with-prisma
- MIT License
- https://github.com/xet7/meteor-with-prisma
- https://github.com/henriquealbert/meteor-pnpm
- MIT License
- https://github.com/xet7/meteor-pnpm
## Building Multi Platform Mobile Apps
- 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://github.com/wekan/wekan/wiki/PWA
- Over 100 icons for different platforms https://github.com/wekan/wekan/blob/main/public/site.webmanifest
## Tip to any programmers
- Try to understand any error messages, and what to do to those errors
## Videos about upgrading to Meteor 3
- Storyteller
- Upcoming:
- 2024-09-02: Meteor.js generators https://www.youtube.com/watch?v=Z6nY2wqPgSE
- 2024-09-09: Can we build static web pages with Meteor.js? https://www.youtube.com/watch?v=cr-Nm0YFb1w
- 2024-09-16: Revisiting Mantra application architecture for today's Meteor.js https://www.youtube.com/watch?v=YyzY7ySqBAg
- 2024-08-23: TWIM 052: Year of TWIM in review. Trying to of sometime have xet7 at TWIM show again. They recommended people to help xet7 when possible, xet7 is hitting some walls developing WeKan. https://www.youtube.com/watch?v=c5E3uZST4Vs
- 2024-08-20:
- Vazco interviewing Storyteller: How to approach building Open Source products? https://www.youtube.com/watch?v=j5BrTYcJDVc
- Meteor inteviewing Storyteller: Programmer, open source contributor, entrepreneur https://www.youtube.com/watch?v=dsp0_r8uJx8
- Meteor Roles:
- 2024-07-33: Meteor Roles the full checkpoint https://www.youtube.com/watch?v=ow1i4UXdbbI
- 2024-08-12: Meteor Roles building up teams https://www.youtube.com/watch?v=ZAuSYKfV114
- 2024-07-15: WeKan Upgrades https://www.youtube.com/watch?v=Zjb3m9JsAD0
- 2024-07-08: Upgrading Meteor examples https://www.youtube.com/watch?v=jzWXxOe93t4
- Upcoming and past: https://www.youtube.com/@storytellercz/streams
- React.js
- WeKan uses Blaze and Jade, not React.
- 2024-09-25:
- Meteor 3 React Compiler: https://x.com/FilipeNevola/status/1838911432282583432
- 2024-08-02:
- https://www.youtube.com/watch?v=NnT7AbVMnj4
- https://thenewstack.io/after-a-decade-of-react-is-frontend-a-post-react-world-now/

View file

@ -1,3 +1,19 @@
## What is not Cross-Platform
- Requires CPU to support AVX
- Bun Javascript Engine https://bun.sh
- MongoDB 5.x and newer https://github.com/turnkeylinux/tracker/issues/1724#issuecomment-2351544191
- Does not work at s390x
- V programming language https://github.com/vlang/v/issues/18737
- Bun Javascript Engine https://github.com/oven-sh/bun/issues/2632
- Deno Javascript Engine https://github.com/denoland/deno/issues/20212#issuecomment-1756663943
- Lazarus IDE https://www.lazarus-ide.org
- FreePascal programming language https://www.freepascal.org
- TigerBeetle database https://github.com/tigerbeetle/tigerbeetle/issues/2241
- GUI requires porting to other OS
- BBC Basic https://www.bbcbasic.net/wiki/doku.php?id=converting_20programs_20from_20risc_20os_20to_20windows
- Tcl/Tk GUI does works at most OS
## Prototype Strategy
- Try building many prototypes, see what works
@ -265,8 +281,11 @@ https://github.com/wekan/php/blob/main/page/allboardschar.php
### FreePascal
- Repo https://github.com/wekan/hx/tree/main/prototypes/code/webserver/works/freepascal-router
- Router and some webpage
- Repo https://github.com/wekan/wami
- Some static pages
- Previous:
- Repo https://github.com/wekan/hx/tree/main/prototypes/code/webserver/works/freepascal-router
- Router and some webpage
- Works at many retro and modern OS, but not at s390x that FreePascal does not support yet https://wiki.freepascal.org/ZSeries
### FreeDOS and Bash

View file

@ -38,4 +38,9 @@ Reorder with drag drop:
- Draggable objects
- https://www.redblobgames.com/making-of/draggable/
- https://news.ycombinator.com/item?id=37703291
- Fixed Drag at Ubuntu Touch Morph browser https://github.com/wekan/wekan/commit/af63259f091cb2ade84493a288ea37c53cd37321
- Fixed Drag at Ubuntu Touch Morph browser https://github.com/wekan/wekan/commit/af63259f091cb2ade84493a288ea37c53cd37321
## Touch UI ideas
- https://blog.la-terminal.net/godot-on-ipad-summer-update/
- https://news.ycombinator.com/item?id=41415077

View file

@ -141,6 +141,8 @@ sudo snap set wekan mail-from='Wekan Team Boards <info@example.com>'
```
## Example: AWS SES
Related https://github.com/wekan/wekan/discussions/5518
NOTE: At AWS SES settings, you don't need to convert special characters.
1) At AWS SES, add verified sender email address, verified domain, verified DKIM etc.

View file

@ -1,8 +1 @@
Wekan works on x64. There is not yet version for [Raspberry Pi](https://github.com/wekan/wekan/issues/1053).
Wekan requires MongoDB 3.2.x . For other requirements and versions see [VirtualBox scripts](https://github.com/wekan/wekan-maintainer/tree/master/virtualbox) or [Dockerfile](https://github.com/wekan/wekan/blob/main/Dockerfile).
Known bugs with other versions:
- Node 6.x: 100% CPU usage.
- MongoDB 3.4.x: Wekan crashes when uploading attachment.
- [Hardened kernel prevents creating new Wekan boards at Sandstorm](https://github.com/wekan/wekan/issues/1398)
WeKan Requiremens are at https://wekan.github.io/install/

View file

@ -0,0 +1,11 @@
Linked Card feature was added at https://github.com/wekan/wekan/pull/1592
With Linked Card feature, it's possible to create new board as dashboard. At dashboard board, you add new card Link, and there link to some card at other board, so you see realtimes changes from all those cards at dashboard board.
Search is for searching card, to be as linked card, I presume.
There is also Linked Board, but I'm not sure is it useful.
Related PRs at https://github.com/wekan/wekan/pulls?q=is%3Apr+is%3Aclosed+linked+card+
Related issue https://github.com/wekan/wekan/issues/5550

View file

@ -0,0 +1,23 @@
## Multiple lines to Checklist
1. Click Add new Checklist
2. Click Add new Checklist Item
3. Toggle `One line of text = one checklist item`
4. Paste multiple lines of text
5. Click Save
<img src="https://wekan.github.io/multiline/multiline1.png" width="60%" alt="Multiple lines to Checklist" />
## Card ☰ Menu / Copy Checklist Template to Many Cards
<img src="https://wekan.github.io/multiline/multiline2.png" width="60%" alt="Checklist Template to Many Cards 1" />
## Edit titles and descriptions of Many Cards
```
[ {"title": "First card title", "description":"First card description"},
{"title":"Second card title","description":"Second card description"},
{"title":"Last card title","description":"Last card description"} ]
```
<img src="https://wekan.github.io/multiline/multiline3.png" width="60%" alt="Checklist Template to Many Cards 2" />

View file

@ -48,7 +48,7 @@ db.users.find()
```
Set some user as admin:
```
db.users.update({username:'admin-username-here'},{$set:{isAdmin:true}})
db.users.updateOne({username:'admin-username-here'},{$set:{isAdmin:true}})
```
Check are there any failed logins with wrong password, that brute force login prevention has denied login:
```

View file

@ -1,6 +1,6 @@
## LDAP info
- [LDAP sync script, that also correctly removes users](https://github.com/wekan/wekan/blob/main/ldap-sync/ldap-sync.py)
- [LDAP sync script, that also correctly removes users](https://github.com/wekan/wekan/blob/main/docs/Login/ldap-sync/ldap-sync.py)
- [LDAP AD Simple Auth](LDAP-AD-Simple-Auth) 2021-07-24 and related [Search Filter Settings](https://github.com/wekan/wekan/issues/3908#issuecomment-887545168):
```
@ -52,7 +52,15 @@ sudo snap set wekan ldap-authentication-userdn='CN=LDAP-User,OU=Service Accounts
sudo snap set wekan ldap-authentication-password='<password>'
sudo snap set wekan ldap-log-enabled='true'
sudo snap set wekan ldap-background-sync='true'
sudo snap set wekan ldap-background-sync-interval='every 1 minute'
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#sudo snap set wekan ldap-background-sync-interval='every 1 hours'
# At which interval does the background task sync in milliseconds.
# If not in use, Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
#sudo snap set wekan ldap-background-sync-interval=''
sudo snap set wekan ldap-background-sync-interval='every 1 hours'
sudo snap set wekan ldap-background-sync-keep-existant-users-updated='true'
sudo snap set wekan ldap-background-sync-import-new-users='true'
sudo snap set wekan ldap-encryption='false'
@ -100,7 +108,15 @@ snap set wekan ldap-basedn='dc=example,dc=com'
snap set wekan ldap-background-sync='true'
snap set wekan ldap-background-sync-keep-existant-users-updated='true'
snap set wekan ldap-background-sync-import-new-users='true'
snap set wekan ldap-background-sync-interval='Every 1 minute'
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#sudo snap set wekan ldap-background-sync-interval='every 1 hours'
# At which interval does the background task sync in milliseconds.
# If not in use, Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
#sudo snap set wekan ldap-background-sync-interval=''
snap set wekan ldap-background-sync-interval='every 1 hours'
snap set wekan ldap-merge-existing-users='true'
snap set wekan ldap-user-search-field='uid'
snap set wekan ldap-user-search-filter='(&(objectclass=person))'
@ -121,7 +137,15 @@ sudo snap set wekan ldap-authentication-password='********'
sudo snap set wekan ldap-authentication-userdn='cn=admin,dc=*******,dc=lan'
sudo snap set wekan ldap-background-sync='true'
sudo snap set wekan ldap-background-sync-import-new-users='true'
sudo snap set wekan ldap-background-sync-interval='Every 1 minute'
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#sudo snap set wekan ldap-background-sync-interval='every 1 hours'
# At which interval does the background task sync in milliseconds.
# If not in use, Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
#sudo snap set wekan ldap-background-sync-interval=''
sudo snap set wekan ldap-background-sync-interval='every 1 hours'
sudo snap set wekan ldap-basedn='dc=*****,dc=lan'
sudo snap set wekan ldap-email-field='mail'
sudo snap set wekan ldap-enable='true'
@ -316,10 +340,14 @@ services:
# LDAP_BACKGROUND_SYNC : If the sync of the users should be done in the background
# example : LDAP_BACKGROUND_SYNC=true
- LDAP_BACKGROUND_SYNC=false
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync
# example : LDAP_BACKGROUND_SYNC_INTERVAL='every 15 minutes'
# for more info: http://bunkat.github.io/later/parsers.html#text
- LDAP_BACKGROUND_SYNC_INTERVAL='every 1 hour'
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hours
# At which interval does the background task sync in milliseconds.
# Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
- LDAP_BACKGROUND_SYNC_INTERVAL=''
# LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
# example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false

View file

@ -9,20 +9,24 @@ Sandstorm has SAML login, and old WeKan that will be updated someday:
How SAML works:
- https://ssoready.com/blog/engineering/a-gentle-intro-to-saml/
- https://ssoready.com
- https://github.com/ssoready/ssoready
- https://news.ycombinator.com/item?id=41110850
- https://ssoready.com/blog/from-the-founders/an-unpopular-perspective-on-the-sso-tax/
- https://news.ycombinator.com/item?id=41303844/blog/engineering/a-gentle-intro-to-saml/
- https://news.ycombinator.com/item?id=41036982
- https://www.sheshbabu.com/posts/visual-explanation-of-saml-authentication/
- https://news.ycombinator.com/item?id=41057814
- https://github.com/ssoready/ssoready
- https://news.ycombinator.com/item?id=41110850
- https://ssoready.com/blog/from-the-founders/an-unpopular-perspective-on-the-sso-tax/
- https://news.ycombinator.com/item?id=41303844
Ruby on Rails OmniAuth, that has Shibboleth and SAML:
- https://github.com/omniauth/omniauth/wiki/List-of-Strategies
- https://github.com/omniauth/omniauth
SAML at SSOReady:
- https://github.com/ssoready/ssoready
- https://news.ycombinator.com/item?id=41110850
- Recent SAML issue https://news.ycombinator.com/item?id=41586031
The SSO Wall of Shame:
@ -42,4 +46,22 @@ Wekan clientside code is at `wekan/client/components/main/layouts.*`
Wekan serverside code is at:
- `wekan/server/authentication.js` at bottom
- `wekan/packages/meteor-accounts-saml/*`
- `wekan/packages/meteor-accounts-saml/*`
## Gitea
- https://github.com/crewjam/saml
- https://github.com/go-gitea/gitea/pull/29403
- https://docs.gitea.com/enterprise/features/saml-auth
## Laravel
- https://github.com/24Slides/laravel-saml2
## ruby-saml/omniauth/RoR: Sign in as anyone: Bypassing SAML SSO authentication with parser differentials
- https://github.blog/security/sign-in-as-anyone-bypassing-saml-sso-authentication-with-parser-differentials/
- https://news.ycombinator.com/item?id=43349634
- https://github.com/github/securitylab

View file

@ -0,0 +1,5 @@
CNAME to CNAME does not work well. Last one should be A IPv4 (and AAAA IPv6).
To get Let's Encrypt SSL/TLS cert for custom subdomain, for example with Caddy, you subdomain should have grey cloud icon. Not orange cloud icon CloudFlare proxy. Also turn off any SSL/TLS of CloudFlare. This is so that Let's Encrypt verifying servers can see hosting server actual IP address and validate cert.
If needing wildcard SSL/TLS cert, for example for Sandstorm, create CloudFlare Origin Certificate, add it to Caddy or Nginx certs .pem file (private key above, other key below, at same textfile). Set CloudFlare SSL/TLS as Strict for using Origin Certificate. Set DNS to orange cloud icon proxy. Add DNS records for example.com , *.example.com , www.example.com .

View file

@ -1,3 +1,47 @@
## Building custom Docker image
This is only for developers. For normal users, do not add these options, just start with `docker compose up -d`
This only builds `wekan-app` Docker image, where is Node.js 14.x and all Javascript code. This does not build `wekan-db` MongoDB image, that usually does not require modifications.
Alpine Linux does not work properly with current Meteor 2 based WeKan. Ubuntu works, and has newest security fixes.
Only amd64 currently works. Currently used Node.js 14.x segfaults at arm64 and s390x. Only Node.js 14.x is compatible with current version of Meteor 2 based WeKan. Trying to upgrade is in progress https://github.com/wekan/wekan/issues/5475
Dockerfile is at https://raw.githubusercontent.com/wekan/wekan/main/Dockerfile
For building custom image, and then running it, uncomment these lines,
that are currently here, but line numbers could change, if that docker-compose.yml
is later modified:
https://github.com/wekan/wekan/blob/main/docker-compose.yml#L144-L146
After your above modifications, text should look like this:
```
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker compose up -d --build
build:
context: .
dockerfile: Dockerfile
#-------------------------------------------------------------------------------------
```
Then modify ROOT_URL, etc settings as needed, see https://github.com/wekan/wekan/wiki/Settings
Start WeKan with custom built Dockerfile with this command:
```
docker compose up -d --build
```
If you like to only build Dockerfile:
```
docker build .
```
You can also push your image to some Docker registry, like here it's done for WeKan:
https://github.com/wekan/wekan/blob/main/releases/docker-push-wekan.sh
## Docker Containers
- [GitHub](https://github.com/wekan/wekan/pkgs/container/wekan)
@ -12,7 +56,7 @@ export ROOT_URL=http://SERVER-IP-ADDRESS-HERE
```
Then start WeKan with:
```
docker-compose up -d
docker compose up -d
```
SSL/TLS info at https://github.com/wekan/wekan/wiki/Settings
@ -35,7 +79,7 @@ There is much more settings at well-documented [docker-compose.yml](https://raw.
If you don't need to build Wekan, use prebuilt container with docker-compose.yml from https://github.com/wekan/wekan like this:
```
docker-compose up -d
docker compose up -d
```
If you like to build from source, clone Wekan repo:
@ -46,7 +90,7 @@ Then edit docker-compose.yml with [these lines uncommented](https://github.com/w
```
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker-compose up -d --build
# ==== and use commands: docker compose up -d --build
build:
context: .
dockerfile: Dockerfile
@ -62,7 +106,7 @@ Then edit docker-compose.yml with [these lines uncommented](https://github.com/w
```
Then you can build Wekan with
```
docker-compose up -d --build
docker compose up -d --build
```
## Example for latest Wekan, port 2000 to Docker Wekan internal port 8080
@ -112,7 +156,7 @@ docker rm wekan-app
```
Then edit docker-compose.yml to have higher wekan-app image version tag, like `image: wekanteam/wekan:v4.12`. Then:
```
docker-compose up -d
docker compose up -d
```
### Images
Quay: `image: quay.io/wekan/wekan:v4.07`
@ -206,25 +250,25 @@ docker run -d --restart=always --name wekan --link "wekan-db:db" -e "MONGO_URL=m
- No build step and pull from [quay](https://quay.io/repository/wekan/wekan?tab=tags)
```
sudo docker-compose up -d --nobuild
sudo docker compose up -d --nobuild
```
- Build default
```
sudo docker-compose up -d --build
sudo docker compose up -d --build
```
- Build with newer Node version:
```
echo 'NODE_VERSION=v8.11.1' >> .env && \
sudo docker-compose up -d --build
sudo docker compose up -d --build
```
- Build custom image off a release candidate or beta for meteor
```
echo 'METEOR_EDGE=1.5-beta.17' >> .env && \
echo 'USE_EDGE=true' >> .env && \
sudo docker-compose up -d --build
sudo docker compose up -d --build
```
## Docker env for Wekan dev

View file

@ -1,6 +1,104 @@
- At some cases [Hardened kernel may prevent creating new Wekan boards at Sandstorm](https://github.com/wekan/wekan/issues/1398)
# Sandstorm at Debian and Ubuntu
### Sandstorm CloudFlare DNS settings
Sandstorm works when configured to full domain, with CloudFlare SSL/TLS, with Caddy.
Not subdomain, not sub-url, and not with Let's Encrypt that AFAIK does not support wildcard SSL/TLS.
Source: https://github.com/sandstorm-io/sandstorm/issues/3714#issuecomment-2366866243
For me, it works at CloudFlare DNS using TLS Strict checking and DNS setting clicking to orange cloud icon to make TLS proxy with Origin certificate, that is at /etc/caddy/certs/example.com.pem with above private key and below cert.
DNS records:
```
* A example.com ip-address
@ A example.com ip-address
```
Caddyfile, proxy to KVM VM that is running Debian and Sandstorm:
```
# Full domain where Sandstorm login is. Not subdomain. Not sub-url.
*.example.com example.com {
tls {
load /etc/caddy/certs
alpn http/1.1
}
# If KVM VM, it's IP address:
#reverse_proxy 123.123.123.123:80
# Localhost port 81, when not in KVM VM
reverse_proxy 127.0.0.1:81
}
blog.somecompany.com {
tls {
load /etc/caddy/certs
alpn http/1.1
}
# Blog hosted at Sandstorm WordPress
reverse_proxy 127.0.0.1:81
}
othercompany.com {
tls {
load /etc/caddy/certs
alpn http/1.1
}
# Website hosted at Sandstorm Hacker CMS
reverse_proxy 127.0.0.1:81
}
```
If having Sandstorm inside of KVM VM: https://github.com/wekan/wekan/blob/main/docs/Platforms/FOSS/Snap/Many-Snaps-on-LXC.md
At /opt/sandstorm/sandstorm.conf is domain where Sandstorm login is, http port etc.
```
SERVER_USER=sandstorm
PORT=81
MONGO_PORT=6081
BIND_IP=127.0.0.1
BASE_URL=https://example.com
WILDCARD_HOST=*.example.com
UPDATE_CHANNEL=dev
ALLOW_DEV_ACCOUNTS=false
SMTP_LISTEN_PORT=25
#SANDCATS_BASE_DOMAIN=sandcats.io
#HTTPS_PORT=443
```
Some related info at:
https://github.com/wekan/wekan/wiki/Caddy-Webserver-Config
I also had to wait that Origin certificate becomes active.
But this worked for me only at CloudFlare. It did not work at FreeDNS of Namecheap.
Also, I still need to write script to fix IP address if Dynamic DNS IP address changes, using CloudFlare API, because my cable modem does not have DDNS option for CloudFlare.
Now that there is also a way to run Sandstorm at Ubuntu, it would be possible for me to move Sandstorm from KVM VM to run directly at host, without VM, and proxy from Caddy to localhost port of Sandstorm.
https://groups.google.com/g/sandstorm-dev/c/4JFhr7B7QZU?pli=1
### Debian amd64
Installing Sandstorm works normally
### Ubuntu 24.04 amd64
At startup was a lot of errors and saw "Permission denied; name = /proc/self/setgroups"
I found this (run as root):
```
echo "kernel.apparmor_restrict_unprivileged_userns = 0" >/etc/sysctl.d/99-userns.conf
sysctl --system
```
And I ran it and restarted the Sandstorm service, everything seemed to work fine.
I hope this might be useful to someone.
Source: https://groups.google.com/g/sandstorm-dev/c/4JFhr7B7QZU
## Sandstorm Website
[Sandstorm Website](https://sandstorm.io)
[Sandstorm Website](https://sandstorm.org)
If you have any grains at Sandstorm's **Oasis montly paid service**, please move those to self-hosted, because [only **Oasis grain hosting** part is shutting down](https://sandstorm.io/news/2019-09-15-shutting-down-oasis) - [HN](https://news.ycombinator.com/item?id=20979428). This does not affect any other parts like self-hosting at sandcats.io, App Market, updates, etc.

View file

@ -40,7 +40,7 @@ ssh wekanserver
```
#### 5. Save snap settings and set it as executeable
```
sudo snap get wekan > snap-settings.sh
sudo snap get wekan | awk '{if(NR>1) print "sudo snap set wekan " $1 "=" "\"" $2 "\""}' > snap-settings.sh
chmod +x snap-settings.sh
```
@ -273,4 +273,4 @@ If you have problems, add comment to issue https://github.com/wekan/wekan/issues
- This is discontinued, Gantt features will be later added to WeKan MIT version.
- Gantt version files are instead at `/var/snap/wekan-gantt-gpl/`
- Gantt snap name is wekan-gantt-gpl
- Gantt snap name is wekan-gantt-gpl

View file

@ -329,6 +329,16 @@ files.company.com {
# OLD WAY: Many Snaps on LXC
## Fix: System does not fully support snapd
To server and LXC/LXD containers, install these packages:
```
sudo apt install libsquashfuse0 squashfuse fuse
```
Source: https://forum.snapcraft.io/t/system-does-not-fully-support-snapd/14767/11
## LXD init CIDR
IPv4 CIDR: 10.1.1.1/24
@ -463,4 +473,4 @@ Result:
```
lxc stop mycontainer
lxc delete mycontainer
```
```

View file

@ -10,6 +10,9 @@
- https://arstechnica.com/information-technology/2023/07/the-ibm-mainframe-how-it-runs-and-why-it-survives/
- https://sdl-hercules-390.github.io/html/
- Big-endian s390x https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/javier-perez1/2021/01/19/endianness-guidance-for-open-source-projects
- The Future of Big Iron: An Interview with IBMs Christian Jacobi
- https://morethanmoore.substack.com/p/the-future-of-big-iron-telum-ii-and
- https://news.ycombinator.com/item?id=41846592
***

View file

@ -520,6 +520,15 @@ services:
# https://bunkat.github.io/later/parsers.html#text
#- LDAP_BACKGROUND_SYNC_INTERVAL='every 1 hour'
#
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hours
# At which interval does the background task sync in milliseconds.
# Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
- LDAP_BACKGROUND_SYNC_INTERVAL=''
#
# LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
# example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false

View file

@ -4,23 +4,25 @@ Also see: [Windows](Windows)
## Wekan Windows 64bit version On-Premise
INFO ABOUT SETTINGS: https://github.com/wekan/wekan/issues/5591#issuecomment-2503681293
This is without container (without Docker or Snap).
Right click and download files 1-4:
1. [wekan-7.53-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v7.53/wekan-7.53-amd64-windows.zip)
1. [wekan-7.85-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v7.85/wekan-7.85-amd64-windows.zip)
2. [node.exe](https://nodejs.org/dist/latest-v14.x/win-x64/node.exe)
3. [mongodb-windows-x86_64-6.0.16-signed.msi](https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-6.0.16-signed.msi)
3. [mongodb-windows-x86_64-6.0.22-signed.msi](https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-6.0.22-signed.msi)
4. [start-wekan.bat](https://raw.githubusercontent.com/wekan/wekan/main/start-wekan.bat)
5. Copy files from steps 1-4 with USB stick or DVD to offline Windows computer
6. Double click `mongodb-windows-x86_64-6.0.15-signed.msi` . In installer, uncheck downloading MongoDB compass.
6. Double click `mongodb-windows-x86_64-6.0.22-signed.msi` . In installer, uncheck downloading MongoDB compass.
7. Unzip `wekan-7.53-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
7. Unzip `wekan-7.85-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
```
bundle (directory)

View file

@ -128,7 +128,7 @@ Other:
.card-details .card-details-header { background-color:#ccc; }
/* sidebar */
.sidebar-tongue, .sidebar-shadow { background-color:#666 !important; }
.sidebar-tongue, .sidebar { background-color:#666 !important; }
.sidebar-content h3, .sidebar-content .activity-desc { color:rgba(255,255,255,.7) !important; }
```

View file

@ -1,5 +1,22 @@
[Caddy 2 .well-known/assetlinks.json config for WeKan Android Play Store app](../PWA#fullscreen-android-app-with-caddy-and-wekan-server)
# CloudFlare DNS
CNAME:
If some customer has CNAME to hosting platform subdomain,
hosting platform subdomain needs to be A record IP address to
hosting server Caddy webserver, because only that way
it can get Let's Encrypt TLS cert. It can not be nested like
customer CNAME to hosting CNAME to hosting A record,
because then getting Let's Encrypt TLS cert does not work.
Wildcard:
Wildcard DNS for Sandstorm only works with CloudFlare DNS.
It does not work with FreeDNS of Namecheap. More info at
https://github.com/wekan/wekan/wiki/Sandstorm
## Caddy 2
WeKan Snap Candidate for any Snap distros: https://github.com/wekan/wekan/wiki/OpenSuse , disable internal old Caddy 1, when using Caddy 2:
@ -76,6 +93,446 @@ Caddy commands list:
caddy help
```
***
### PWA site.webmanifest icons override Caddy example
PWABuilder settings to create Android app at https://pwabuilder.com
- Web view (not Custom Tabs)
- Fullscreen (When not showing top and bottom toolbars. If you like to show those toolbars, change fullscreen to standalone)
- Notifications [X] Enable
- Signing key [X] Use mine
PWABuilder upgrades:
- Android app upgrade to Android SDK 34 was made with help of this video https://github.com/pwa-builder/PWABuilder/issues/4766#issuecomment-2229867608
Icons override at site.webmanifest:
- These settings at Caddyfile override icon URLs etc
If you like to show toolbars at top and bottom, change also here `fullscreen` to `standalone`
```
boards.wekan.team {
tls {
alpn http/1.1
}
header /.well-known/* Content-Type application/json
header /.well-known/* Access-Control-Allow-Origin *
respond /.well-known/assetlinks.json `[ {
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "team.wekan.boards.twa",
"sha256_cert_fingerprints": ["AA:AA:ED:7D:4C:9C:5A:A3:B5:DA:10:66:14:34:07:5D:EB:BE:96:CD:82:7B:09:46:47:13:65:29:5B:EA:96:30","61:41:86:5B:05:13:9B:64:5F:39:75:5A:16:C3:F2:22:25:6C:DA:74:B9:B0:8C:5F:93:B0:D2:26:65:16:1B:E6"]
}
} ]`
header /site.webmanifest/* Content-Type application/json
header /site.webmanifest/* Access-Control-Allow-Origin *
respond /site.webmanifest ` {
"name": "Wekan",
"short_name": "Wekan",
"icons": [ {
"src": "svg-etc/wekan-logo-512.svg",
"sizes": "any",
"type": "image/svg"
} , {
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
} , {
"src": "android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
} , {
"src": "Square150x150Logo.scale-100.png",
"sizes": "150x150",
"type": "image/png"
} , {
"src": "Square44x44Logo.scale-100.png",
"sizes": "44x44",
"type": "image/png"
} , {
"src": "StoreLogo.scale-100.png",
"sizes": "50x50",
"type": "image/png"
} , {
"src": "maskable_icon.png",
"sizes": "474x474",
"type": "image/png",
"purpose": "maskable"
} , {
"src": "monochrome-icon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "monochrome"
} , {
"src": "windows11/SmallTile.scale-100.png",
"sizes": "71x71"
} , {
"src": "windows11/SmallTile.scale-125.png",
"sizes": "89x89"
} , {
"src": "windows11/SmallTile.scale-150.png",
"sizes": "107x107"
} , {
"src": "windows11/SmallTile.scale-200.png",
"sizes": "142x142"
} , {
"src": "windows11/SmallTile.scale-400.png",
"sizes": "284x284"
} , {
"src": "windows11/Square150x150Logo.scale-100.png",
"sizes": "150x150"
} , {
"src": "windows11/Square150x150Logo.scale-125.png",
"sizes": "188x188"
} , {
"src": "windows11/Square150x150Logo.scale-150.png",
"sizes": "225x225"
} , {
"src": "windows11/Square150x150Logo.scale-200.png",
"sizes": "300x300"
} , {
"src": "windows11/Square150x150Logo.scale-400.png",
"sizes": "600x600"
} , {
"src": "windows11/Wide310x150Logo.scale-100.png",
"sizes": "310x150"
} , {
"src": "windows11/Wide310x150Logo.scale-125.png",
"sizes": "388x188"
} , {
"src": "windows11/Wide310x150Logo.scale-150.png",
"sizes": "465x225"
} , {
"src": "windows11/Wide310x150Logo.scale-200.png",
"sizes": "620x300"
} , {
"src": "windows11/Wide310x150Logo.scale-400.png",
"sizes": "1240x600"
} , {
"src": "windows11/LargeTile.scale-100.png",
"sizes": "310x310"
} , {
"src": "windows11/LargeTile.scale-125.png",
"sizes": "388x388"
} , {
"src": "windows11/LargeTile.scale-150.png",
"sizes": "465x465"
} , {
"src": "windows11/LargeTile.scale-200.png",
"sizes": "620x620"
} , {
"src": "windows11/LargeTile.scale-400.png",
"sizes": "1240x1240"
} , {
"src": "windows11/Square44x44Logo.scale-100.png",
"sizes": "44x44"
} , {
"src": "windows11/Square44x44Logo.scale-125.png",
"sizes": "55x55"
} , {
"src": "windows11/Square44x44Logo.scale-150.png",
"sizes": "66x66"
} , {
"src": "windows11/Square44x44Logo.scale-200.png",
"sizes": "88x88"
} , {
"src": "windows11/Square44x44Logo.scale-400.png",
"sizes": "176x176"
} , {
"src": "windows11/StoreLogo.scale-100.png",
"sizes": "50x50"
} , {
"src": "windows11/StoreLogo.scale-125.png",
"sizes": "63x63"
} , {
"src": "windows11/StoreLogo.scale-150.png",
"sizes": "75x75"
} , {
"src": "windows11/StoreLogo.scale-200.png",
"sizes": "100x100"
} , {
"src": "windows11/StoreLogo.scale-400.png",
"sizes": "200x200"
} , {
"src": "windows11/SplashScreen.scale-100.png",
"sizes": "620x300"
} , {
"src": "windows11/SplashScreen.scale-125.png",
"sizes": "775x375"
} , {
"src": "windows11/SplashScreen.scale-150.png",
"sizes": "930x450"
} , {
"src": "windows11/SplashScreen.scale-200.png",
"sizes": "1240x600"
} , {
"src": "windows11/SplashScreen.scale-400.png",
"sizes": "2480x1200"
} , {
"src": "windows11/Square44x44Logo.targetsize-16.png",
"sizes": "16x16"
} , {
"src": "windows11/Square44x44Logo.targetsize-20.png",
"sizes": "20x20"
} , {
"src": "windows11/Square44x44Logo.targetsize-24.png",
"sizes": "24x24"
} , {
"src": "windows11/Square44x44Logo.targetsize-30.png",
"sizes": "30x30"
} , {
"src": "windows11/Square44x44Logo.targetsize-32.png",
"sizes": "32x32"
} , {
"src": "windows11/Square44x44Logo.targetsize-36.png",
"sizes": "36x36"
} , {
"src": "windows11/Square44x44Logo.targetsize-40.png",
"sizes": "40x40"
} , {
"src": "windows11/Square44x44Logo.targetsize-44.png",
"sizes": "44x44"
} , {
"src": "windows11/Square44x44Logo.targetsize-48.png",
"sizes": "48x48"
} , {
"src": "windows11/Square44x44Logo.targetsize-60.png",
"sizes": "60x60"
} , {
"src": "windows11/Square44x44Logo.targetsize-64.png",
"sizes": "64x64"
} , {
"src": "windows11/Square44x44Logo.targetsize-72.png",
"sizes": "72x72"
} , {
"src": "windows11/Square44x44Logo.targetsize-80.png",
"sizes": "80x80"
} , {
"src": "windows11/Square44x44Logo.targetsize-96.png",
"sizes": "96x96"
} , {
"src": "windows11/Square44x44Logo.targetsize-256.png",
"sizes": "256x256"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-16.png",
"sizes": "16x16"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-20.png",
"sizes": "20x20"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-24.png",
"sizes": "24x24"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-30.png",
"sizes": "30x30"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-32.png",
"sizes": "32x32"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-36.png",
"sizes": "36x36"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-40.png",
"sizes": "40x40"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-44.png",
"sizes": "44x44"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-48.png",
"sizes": "48x48"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-60.png",
"sizes": "60x60"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-64.png",
"sizes": "64x64"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-72.png",
"sizes": "72x72"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-80.png",
"sizes": "80x80"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-96.png",
"sizes": "96x96"
} , {
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-256.png",
"sizes": "256x256"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png",
"sizes": "16x16"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png",
"sizes": "20x20"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png",
"sizes": "24x24"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png",
"sizes": "30x30"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png",
"sizes": "32x32"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png",
"sizes": "36x36"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png",
"sizes": "40x40"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png",
"sizes": "44x44"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png",
"sizes": "48x48"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png",
"sizes": "60x60"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png",
"sizes": "64x64"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png",
"sizes": "72x72"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png",
"sizes": "80x80"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png",
"sizes": "96x96"
} , {
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png",
"sizes": "256x256"
} , {
"src": "android/android-launchericon-512-512.png",
"sizes": "512x512"
} , {
"src": "android/android-launchericon-192-192.png",
"sizes": "192x192"
} , {
"src": "android/android-launchericon-144-144.png",
"sizes": "144x144"
} , {
"src": "android/android-launchericon-96-96.png",
"sizes": "96x96"
} , {
"src": "android/android-launchericon-72-72.png",
"sizes": "72x72"
} , {
"src": "android/android-launchericon-48-48.png",
"sizes": "48x48"
} , {
"src": "ios/16.png",
"sizes": "16x16"
} , {
"src": "ios/20.png",
"sizes": "20x20"
} , {
"src": "ios/29.png",
"sizes": "29x29"
} , {
"src": "ios/32.png",
"sizes": "32x32"
} , {
"src": "ios/40.png",
"sizes": "40x40"
} , {
"src": "ios/50.png",
"sizes": "50x50"
} , {
"src": "ios/57.png",
"sizes": "57x57"
} , {
"src": "ios/58.png",
"sizes": "58x58"
} , {
"src": "ios/60.png",
"sizes": "60x60"
} , {
"src": "ios/64.png",
"sizes": "64x64"
} , {
"src": "ios/72.png",
"sizes": "72x72"
} , {
"src": "ios/76.png",
"sizes": "76x76"
} , {
"src": "ios/80.png",
"sizes": "80x80"
} , {
"src": "ios/87.png",
"sizes": "87x87"
} , {
"src": "ios/100.png",
"sizes": "100x100"
} , {
"src": "ios/114.png",
"sizes": "114x114"
} , {
"src": "ios/120.png",
"sizes": "120x120"
} , {
"src": "ios/128.png",
"sizes": "128x128"
} , {
"src": "ios/144.png",
"sizes": "144x144"
} , {
"src": "ios/152.png",
"sizes": "152x152"
} , {
"src": "ios/167.png",
"sizes": "167x167"
} , {
"src": "ios/180.png",
"sizes": "180x180"
} , {
"src": "ios/192.png",
"sizes": "192x192"
} , {
"src": "ios/256.png",
"sizes": "256x256"
} , {
"src": "ios/512.png",
"sizes": "512x512"
} , {
"src": "ios/1024.png",
"sizes": "1024x1024"
}
],
"screenshots": [ {
"src": "screenshot1.webp",
"sizes": "1280x720",
"type": "image/webp"
} , {
"src": "screenshot2.webp",
"sizes": "1280x720",
"type": "image/webp"
}
],
"theme_color": "#000000",
"background_color": "#000000",
"start_url": "sign-in",
"display": "fullscreen",
"orientation": "any",
"categories": [
"productivity"
],
"iarc_rating_id": "70d7c4a4-3e5a-4714-a7dc-fa006613ba96",
"description": "Open Source kanban with MIT license",
"dir": "auto",
"scope": "https://boards.wekan.team",
"prefer_related_applications": false,
"display_override": [
"fullscreen"
]
} `
reverse_proxy 127.0.0.1:3025
}
```
***
@ -278,4 +735,4 @@ Start caddy and enable service:
sudo systemctl daemon-reload
sudo systemctl start caddy@username
sudo systemctl enable caddy@username
```
```

57
docs/Webserver/Cron.md Normal file
View file

@ -0,0 +1,57 @@
(TODO: Try to integrate this inside WeKan Snap Candidate, or change code so that these would not be needed.)
WeKan has some memory leaks. To prevent WeKan becoming slow, this Cron script restarts WeKan Snap once every hour.
1) Edit /root/hourly.sh
```
sudo su
apt -y install nano cron
nano /root/hourly.sh
```
2) There add this text:
```
snap stop wekan.wekan
snap start wekan.wekan
# Wait 10 seconds
sleep 10
# Disable telemetry
/snap/wekan/current/usr/bin/mongosh wekan --eval 'disableTelemetry();' --port 27019
# Snap: Disable apparmor="DENIED" at syslog
# https://github.com/wekan/wekan/issues/4855
/snap/wekan/current/usr/bin/mongosh wekan \
--eval 'db.adminCommand({ setParameter: 1, diagnosticDataCollectionEnabled: false});' \
--port 27019
# Delete incomplete uploads so that they would not prevent starting WeKan
/snap/wekan/current/usr/bin/mongosh wekan \
--eval 'db.getCollection("cfs.attachments.filerecord").find( { "uploadedAt": { "$exists": true }, "copies.attachments" : null,"failures.copies.attachments.doneTrying" : {"$ne" : true}});' \
--port 27019
```
3) Save and exit nano: Ctrl-o Enter Ctrl-x Enter
4) Make hourly.sh script executeable, and edit cron:
```
chmod +x /root/hourly.sh
export EDITOR=nano
crontab -e
```
There at bottom, add this line, that will restart WeKan hourly, and log to textfile:
```
0 * * * * /root/hourly.sh >> /root/hourly-log.txt 2>&1
```
5) Save and exit nano: Ctrl-o Enter Ctrl-x Enter
6) You can also list content of cron:
```
crontab -l
```

View file

@ -1,6 +1,12 @@
https://galaxy-guide.meteor.com/scaling
## How We Scaled Meteor JS to Handle 30,000 Concurrent Users at Propiedata
***
- https://forums.meteor.com/t/first-steps-on-scaling-meteor-js/62570
## Meteor Galaxy Guide
- https://galaxy-guide.meteor.com/scaling
## Pods
Reply from customer at 2023-09-29 about WeKan v7.08:

View file

@ -33,7 +33,8 @@
# <a name="Scaling"></a>Scaling
* [Add more RAM to Node.js to prevent crash](https://github.com/wekan/wekan/issues/3585)
* [Cron: Hourly restart WeKan, because of memory leaks](Cron)
* [Maybe: Add more RAM to Node.js to prevent crash](https://github.com/wekan/wekan/issues/3585)
* [Clustering AWS etc](AWS)
* [Scaling](Scaling)
* [Kubernetes](https://github.com/wekan/wekan/tree/main/helm/wekan)
@ -128,6 +129,8 @@
# <a name="Features"></a>Features
* [Multiline](Multiline)
* [Linked Cards](Linked-Cards)
* [Drag Drop](https://github.com/wekan/wekan/wiki/Drag-Drop) on Mobile and Desktop
* [Rclone: Store attachments to cloud storage like S3, MinIO, etc](Rclone)
* [Python based features](Python)

View file

@ -49,6 +49,7 @@
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-changedListTitle": "renamed list to %s",
"activity-customfield-created": "created custom field %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
@ -85,10 +86,12 @@
"add-card": "Add Card",
"add-card-to-top-of-list": "Add Card to Top of List",
"add-card-to-bottom-of-list": "Add Card to Bottom of List",
"setListWidthPopup-title": "Set List Width",
"set-list-width": "Set List Width",
"set-list-width-value": "List Width (pixels)",
"list-width-error-message": "List width must be a positive integer",
"setListWidthPopup-title": "Set Widths",
"set-list-width": "Set Widths",
"set-list-width-value": "Set Min & Max Widths (pixels)",
"list-width-error-message": "List widths must be integers greater than 100",
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
"set-swimlane-height": "Set Swimlane Height",
"set-swimlane-height-value": "Swimlane Height (pixels)",
@ -263,6 +266,9 @@
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"click-to-enable-auto-width": "Auto list width disabled. Click to enable.",
"click-to-disable-auto-width": "Auto list width enabled. Click to disable.",
"auto-list-width": "Auto list width",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
@ -294,6 +300,7 @@
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comments": "Comments",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@ -376,6 +383,7 @@
"email-sent": "Email sent",
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-vertical-scrollbars": "Enable vertical scrollbars",
"enable-wip-limit": "Enable WIP Limit",
"error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that",
@ -443,7 +451,7 @@
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
"show-activities": "Show Activities",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
@ -572,6 +580,7 @@
"select-board": "Select Board",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-add-self": "Add yourself to current card",
"shortcut-assign-self": "Assign yourself to current card",
"shortcut-autocomplete-emoji": "Autocomplete emoji",
"shortcut-autocomplete-members": "Autocomplete members",
@ -601,6 +610,7 @@
"has-spenttime-cards": "Has spent time cards",
"time": "Time",
"title": "Title",
"toggle-assignees": "Toggle assignees 1-9 for card (By order of addition to board).",
"toggle-labels": "Toggle labels 1-9 for card. Multi-Selection adds labels 1-9",
"remove-labels-multiselect": "Multi-Selection removes labels 1-9",
"tracking": "Tracking",
@ -956,6 +966,7 @@
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
"hide-checked-items": "Hide checked items",
"hide-finished-checklist": "Hide finished checklist",
"task": "Task",
"create-task": "Create Task",
"ok": "OK",
@ -1109,8 +1120,8 @@
"created-at-newest-first": "Created At (Newest First)",
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"hide-activities-of-all-boards": "Don't show the board activities on all boards",
"now-activities-of-all-boards-are-hidden": "Now all activities of all boards are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane",
"custom-field-stringtemplate": "String Template",
@ -1193,7 +1204,10 @@
"checklistActionsPopup-title": "Checklist Actions",
"moveChecklist": "Move Checklist",
"moveChecklistPopup-title": "Move Checklist",
"newlineBecomesNewChecklistItem": "Newline becomes new checklist item",
"newlineBecomesNewChecklistItem": "Each line of text becomes one of the checklist items",
"newLineNewItem": "One line of text = one checklist item",
"newlineBecomesNewChecklistItemOriginOrder": "Each line of text becomes one of the checklist items, original order",
"originOrder": "original order",
"copyChecklist": "Copy Checklist",
"copyChecklistPopup-title": "Copy Checklist",
"card-show-lists": "Card Show Lists",
@ -1242,11 +1256,17 @@
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"show-week-of-year": "Show week of year (ISO 8601)",
"convert-to-markdown": "Convert to markdown",
"import-board-zip": "Add .zip file that has board JSON files, and board name subdirectories with attachments",
"collapse": "Collapse",
"uncollapse": "Uncollapse"
"uncollapse": "Uncollapse",
"hideCheckedChecklistItems": "Hide checked checklist items",
"hideAllChecklistItems": "Hide all checklist items",
"support": "Support",
"supportPopup-title": "Support",
"accessibility-page-enabled": "Accessibility page enabled",
"accessibility-title": "Accessibility topic",
"accessibility-content": "Accessibility content"
}

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