Compare commits

...
113 Commits
Author SHA1 Message Date
Lauri Ojansivu c5fefc1414 v7.88 2025-04-25 22:12:37 +03:00
Lauri Ojansivu c825895ceb Reverted translation fix that sometimes did not work.
Thanks to xet7 !

Fixes #5751,
related https://github.com/wekan/wekan/pull/5748
2025-04-25 22:06:06 +03:00
Lauri Ojansivu 9488972ed8 Merge newest changes. 2025-04-25 21:07:22 +03:00
Lauri Ojansivu 1f4bed38f7 Merge pull request #5750 from walster001/main
Fix more contrasting issues
2025-04-25 21:02:50 +03:00
Lauri Ojansivu 747112957a v7.87 2025-04-25 20:59:20 +03:00
Lauri Ojansivu 18228096f9 Updated ChangeLog. 2025-04-25 20:56:07 +03:00
Lauri Ojansivu d0ea5bf500 Fix typos.
Thanks to xet7 !
2025-04-25 20:54:02 +03:00
walster001 74fe91fa3a Fix more contrasting issues
- Fix contrast issue with CleanDark & CleanLight buttons on theme selection menu.
2025-04-26 01:40:15 +09:30
Lauri Ojansivu d4e3075fcc v7.86 2025-04-25 19:00:08 +03:00
Lauri Ojansivu 413ae5f20e Updated translations. 2025-04-25 18:38:13 +03:00
Lauri Ojansivu e23f86f542 Updated ChangeLog. 2025-04-25 18:35:12 +03:00
Lauri Ojansivu b3c47dbe84 Merge pull request #5749 from walster001/main
Fix contrast issue checkbox
2025-04-25 18:32:28 +03:00
Lauri Ojansivu b10c2b9a15 Updated ChangeLog. 2025-04-25 18:31:35 +03:00
Lauri Ojansivu bb6910acd1 Merge branch 'nourguidara-fix-i18n-init-timing' 2025-04-25 18:29:43 +03:00
Lauri Ojansivu 76b000820e Updated ChangeLog. 2025-04-25 18:28:23 +03:00
Lauri Ojansivu 50b874629c Merge branch 'Rayene123-add-toggle-watch-icon-on-card' 2025-04-25 18:25:44 +03:00
Lauri Ojansivu 4d145ab4ad Added translations to questions about are you sure.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5745
2025-04-25 18:24:40 +03:00
Lauri Ojansivu 4d67a4641f Merge branch 'fix-i18n-init-timing' of github.com:nourguidara/wekan into nourguidara-fix-i18n-init-timing 2025-04-25 17:54:41 +03:00
Lauri Ojansivu bc2eab6f9d Merge branch 'add-toggle-watch-icon-on-card' of github.com:Rayene123/wekan into Rayene123-add-toggle-watch-icon-on-card 2025-04-25 17:49:14 +03:00
walster001 3ccce75863 Fix contrast issue checkbox
- Fixed contrasting issue with tick check on custom fields, also fixed the ugly green tick coming up on the checklists in cards by utilisation of the !important tag to override it with the checkbox colour for custom fields also.
2025-04-25 20:15:34 +09:30
nour guidara b390b266e2 bug fix in imports\i18n\index.js 2025-04-25 11:10:46 +01:00
Lauri Ojansivu 561af8926c Merge branch 'main' of github.com:wekan/wekan 2025-04-24 22:20:06 +03:00
Lauri Ojansivu 5717dc2cf4 Updated ChangeLog. 2025-04-24 22:19:45 +03:00
Lauri Ojansivu d0e64ad6d2 Merge pull request #5746 from nourguidara/nourguidara-patch-1
Improve impersonate user documentation in docs/Admin/Impersonate-user.md
2025-04-24 22:18:07 +03:00
Lauri Ojansivu 8e1a735ec7 Updates 2025-04-24 22:17:47 +03:00
nour guidara 1301d67295 Update Impersonate-user.md
Restored direct link to the original pull request (#3280) as requested
2025-04-24 20:14:41 +01:00
nour guidara 7c239f5218 Update Impersonate-user.md 2025-04-24 19:45:29 +01:00
Rayene123 61235c953c added a watch icon button when clicked toggle if a card is watched or not 2025-04-24 11:53:08 +01:00
Lauri Ojansivu ea65a0308d Merge pull request #5741 from Firas-Git/documentation/login-and-signup
Documentation/login and signup
2025-04-21 22:57:08 +03:00
Firas Saidi f840b07c02 documentation/login-and-signup 2025-04-21 20:50:23 +01:00
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
Firas Saidi 14f2022e21 fix-5434 2025-04-10 11:16:38 +01: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](https://github.com/docker/login-action/compare/9780b0c442fbb1117ed29e0efdff1e18412f7567...74a5d142397b4f367a81961eba4e8cd7edddf772)

---
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
Firas Saidi dc389a68ab bug_fixing 2025-03-09 16:23:37 +01: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
Zegden Rayen 094f13934c added the confirm pop up before cloning or archiving a board 2025-03-08 15:38:22 +00: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](https://github.com/docker/build-push-action/compare/0adf9959216b96bec444f325f1e493d4aa344497...471d1dc4e07e5cdedd4c2171150001c434f0b7a4)

---
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](https://github.com/docker/metadata-action/compare/369eb591f429131d6889c46b94e711f089e6ca96...902fa8ec7d6ecbf8d84d538b9b233a880e428804)

---
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](https://github.com/docker/build-push-action/compare/ca877d9245402d1537745e0e356eab47c3520991...0adf9959216b96bec444f325f1e493d4aa344497)

---
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](https://github.com/docker/build-push-action/compare/67a2d409c0a876cbe6b11854e3e25193efe4e62d...ca877d9245402d1537745e0e356eab47c3520991)

---
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](https://github.com/docker/build-push-action/compare/b32b51a8eda65d6793cd0494a773d4f6bcef32dc...67a2d409c0a876cbe6b11854e3e25193efe4e62d)

---
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](https://github.com/docker/build-push-action/compare/48aba3b46d1b1fec4febb7c5d0c644b249a11355...b32b51a8eda65d6793cd0494a773d4f6bcef32dc)

---
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
57 changed files with 7451 additions and 8921 deletions

No files matched your search

+3 -3
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@369eb591f429131d6889c46b94e711f089e6ca96
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@48aba3b46d1b1fec4febb7c5d0c644b249a11355
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
+1 -1
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 }}"
+162
View File
@@ -15,6 +15,168 @@ Fixing other platforms In Progress.
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
# v7.88 2025-04-25 WeKan ® release
This release fixes the following bugs:
- [Reverted translation fix that sometimes did not work](https://github.com/wekan/wekan/commit/c825895cebd24355d076741512c9aa16844393d9).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.87 2025-04-25 WeKan ® release
Note: This release does not work, there is bugs. Use newest release.
This release fixes the following bugs:
- [Fix typos](https://github.com/wekan/wekan/commit/d0ea5bf50067fd76359330986edbad8dd1fbcdcc).
Thanks to xet7.
- [Fix more contrasting issues](https://github.com/wekan/wekan/pull/5750).
Thanks to walster001.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.86 2025-04-25 WeKan ® release
Note: This release does not work, there is typos. Use newest release.
This release adds the following updates:
- [Improve impersonate user documentation in docs/Admin/Impersonate-user.md](https://github.com/wekan/wekan/pull/5746).
Thanks to nourguidara.
and fixes the following bugs:
- [Add toggle watch icon on card. Add questions are you sure to duplicate board and archive board](https://github.com/wekan/wekan/pull/5745).
Thanks to Rayene123.
- [Fix translations not working](https://github.com/wekan/wekan/pull/5748).
Thanks to nourguidara.
- [Fix contrast issue checkbox at Exodark theme](https://github.com/wekan/wekan/pull/5749).
Thanks to walster001.
Thanks to above GitHub users for their contributions and translators for their translations.
# 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:
+133 -95
View File
@@ -1,76 +1,31 @@
FROM scratch AS downloads
# Download NodeJS bundle
ADD https://static.meteor.com/dev-bundle-node-os/v14.21.4/node-v14.21.4-linux-x64.tar.gz node.tar.gz
# Download Meteor bundle
ADD https://static.meteor.com/packages-bootstrap/2.16/meteor-bootstrap-os.linux.x86_64.tar.gz meteor.tar.gz
FROM ubuntu:24.04 AS build
# Install node from official archive
RUN --mount=type=bind,from=downloads,source=node.tar.gz,target=node.tar.gz \
tar xzf node.tar.gz --strip-components=1 --keep-old-files --no-same-owner
# Install meteor from official archive
RUN --mount=type=bind,from=downloads,source=meteor.tar.gz,target=meteor.tar.gz \
tar xzf meteor.tar.gz -C $HOME --no-same-owner
# Update the npm version
RUN npm install -g npm@6.14.17
# Install several build dependencies
RUN apt update && \
apt install --yes --no-install-suggests --no-install-recommends ssh git g++ curl ca-certificates && \
rm -r /var/lib/apt/lists
# Change to temporary working directory
WORKDIR /workdir
# Copy package.json and package-lock.json to install application dependencies
COPY package.json .
COPY package-lock.json .
# Install build dependencies
RUN $HOME/.meteor/meteor npm install --production
# Copy meteor application configurations
COPY .meteor .meteor
# Copy application sources
COPY packages packages
COPY imports imports
COPY config config
COPY models models
COPY public public
COPY server server
COPY client client
# Build the application
RUN $HOME/.meteor/meteor build --directory /build --allow-superuser
# Enter server bundle directory
WORKDIR /build/bundle/programs/server
# Install server dependencies
RUN $HOME/.meteor/meteor npm install --production
# Enter installation directory of fibers
WORKDIR /build/bundle/programs/server/node_modules/fibers
# Build fibers integrations
RUN node build.js
FROM ubuntu:24.04 AS wekan
# Add metadata to image
FROM ubuntu:24.04
LABEL maintainer="wekan"
LABEL org.opencontainers.image.ref.name="ubuntu"
LABEL org.opencontainers.image.version="24.04"
LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
# Set default environment variables
ENV WITH_API=true \
# 2022-04-25:
# - gyp does not yet work with Ubuntu 22.04 ubuntu:rolling,
# so changing to 21.10. https://github.com/wekan/wekan/issues/4488
# 2021-09-18:
# - Above Ubuntu base image copied from Docker Hub ubuntu:hirsute-20210825
# to Quay to avoid Docker Hub rate limits.
ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3"
ENV \
DEBUG=false \
NODE_VERSION=v14.21.4 \
METEOR_RELEASE=METEOR@2.14 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=6.14.17 \
FIBERS_VERSION=4.0.1 \
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
WITH_API=true \
RESULTS_PER_PAGE="" \
DEFAULT_BOARD_ID="" \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
@@ -203,36 +158,119 @@ ENV WITH_API=true \
WRITABLE_PATH=/data \
S3=""
# Install node and application sources from build stage
RUN --mount=type=bind,from=downloads,source=node.tar.gz,target=node.tar.gz \
--mount=type=bind,from=build,source=/build,target=/build \
# Install NodeJS
tar xzf node.tar.gz --strip-components=1 --keep-old-files --no-same-owner && \
# Add the wekan user
useradd --uid 999 --user-group --system wekan && \
# Copy wekan bundle
cp -r /build/bundle /wekan && \
# Remove the web.browser.legacy platform
rm -r /wekan/programs/web.browser.legacy && \
# Change ownership of wekan directory
chown wekan:wekan -R /wekan && \
# Create the data directory
mkdir /data && \
# Change ownership of data directory
chown wekan:root -R /data
# NODE_OPTIONS="--max_old_space_size=4096"
#---------------------------------------------
# == at docker-compose.yml: AUTOLOGIN WITH OIDC/OAUTH2 ====
# https://github.com/wekan/wekan/wiki/autologin
#- OIDC_REDIRECTION_ENABLED=true
#---------------------------------------------------------------------
# Copy the app to the image
COPY ${SRC_PATH} /home/wekan/app
# Install OS
RUN <<EOR
set -o xtrace
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan
# OS dependencies
apt-get update --assume-yes
apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
cp $(which tar) $(which tar)~
ln -sf $(which bsdtar) $(which tar)
# Install NodeJS
cd /tmp
# Download nodejs
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz"
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt"
# Verify nodejs authenticity
grep "node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
rm -f "SHASUMS256.txt"
# Install Node
tar xzf "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
rm "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" "SHASUMS256.txt"
ln -s "/usr/local/bin/node" "/usr/local/bin/nodejs"
mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/${NODE_VERSION} /home/wekan/.config"
# Install node dependencies
npm install -g npm@${NPM_VERSION} --production
chown --recursive wekan:wekan /home/wekan/.config
# Install Meteor
cd /home/wekan
chown --recursive wekan:wekan /home/wekan
echo "Starting meteor ${METEOR_RELEASE} installation... \n"
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh
mv /root/.meteor /home/wekan/
chown --recursive wekan:wekan /home/wekan/.meteor
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
cd /home/wekan/.meteor
gosu wekan:wekan /home/wekan/.meteor/meteor -- help
# Build app (Production)
cd /home/wekan/app
mkdir -p /home/wekan/.npm
chown --recursive wekan:wekan /home/wekan/.npm
chmod u+w *.json
gosu wekan:wekan meteor npm install --production
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build
cd /home/wekan/app_build/bundle/programs/server/
chmod u+w *.json
gosu wekan:wekan meteor npm install --production
cd node_modules/fibers
node build.js
cd ../..
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy
mv /home/wekan/app_build/bundle /build
# Put back the original tar
mv $(which tar)~ $(which tar)
# Cleanup
apt-get remove --purge --assume-yes ${BUILD_DEPS}
npm uninstall -g api2html
apt-get autoremove --assume-yes
apt-get clean --assume-yes
rm -Rf /tmp/*
rm -Rf /var/lib/apt/lists/*
rm -Rf /var/cache/apt
rm -Rf /var/lib/apt/lists
rm -Rf /home/wekan/app_build
rm -Rf /home/wekan/app
rm -Rf /home/wekan/.meteor
mkdir /data
chown wekan --recursive /data
EOR
# Change to the wekan user
USER wekan
# Set the port to listen on
ENV PORT=8080
EXPOSE ${PORT}
EXPOSE $PORT
# Define the stop signal for node
STOPSIGNAL SIGINT
STOPSIGNAL SIGKILL
WORKDIR /home/wekan/app
# Declare a volume on /data
VOLUME /data
# Set startup command
CMD ["node", "/wekan/main.js"]
#---------------------------------------------------------------------
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
# Add more Node heap:
# NODE_OPTIONS="--max_old_space_size=4096"
# Add more stack:
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
#---------------------------------------------------------------------
#
# 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"]
+8
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)
+113
View File
@@ -0,0 +1,113 @@
# 🔐 WeKan — Login System Overview
This document provides a detailed overview of WeKan’s **login and authentication system**, covering client-side UI, server-side logic, external authentication methods, and potential upgrade paths.
---
## 🖥️ Login Web UI
WeKan's login interface is implemented using a combination of:
- `layouts.jade` – Login HTML structure
- `layouts.js` – Login logic and interactivity
- `layouts.css` – Styling and layout
📁 Source: [`client/components/main`](https://github.com/wekan/wekan/tree/main/client/components/main)
---
## ⚙️ Server-Side Authentication
Server-side login functionality is handled in:
- [`server/authentication.js`](https://github.com/wekan/wekan/blob/main/server/authentication.js)
Other related configurations:
- 🔧 Account config: [`config/accounts.js`](https://github.com/wekan/wekan/blob/main/config/accounts.js)
- 📨 Sign-up invitations: [`models/settings.js#L275`](https://github.com/wekan/wekan/blob/main/models/settings.js#L275)
- 👤 User creation logic: [`models/users.js#L1339`](https://github.com/wekan/wekan/blob/main/models/users.js#L1339)
---
## 👥 Meteor User Accounts
WeKan utilizes Meteor’s `accounts` system. Relevant resources:
- 📚 Meteor 2.x Accounts Docs: [v2-docs.meteor.com/api/accounts](https://v2-docs.meteor.com/api/accounts)
- 🔍 Meteor Packages:
- [`packages`](https://github.com/wekan/wekan/blob/main/.meteor/packages)
- [`versions`](https://github.com/wekan/wekan/blob/main/.meteor/versions)
- 📦 Meteor 2.14 core packages: [Meteor 2.14 packages](https://github.com/meteor/meteor/tree/release/METEOR%402.14/packages)
---
## 🔐 External Authentication (OIDC, LDAP, etc.)
WeKan supports external authentication methods via internal packages.
📁 See [`packages/`](https://github.com/wekan/wekan/tree/main/packages) for:
- OpenID Connect (OIDC)
- LDAP
- OAuth and other integrations
---
## 📦 NPM & AtmosphereJS Dependencies
- 🔗 `package.json`: [Dependencies list](https://github.com/wekan/wekan/blob/main/package.json)
- 🧩 WekanTeam scoped NPM packages: [@wekanteam on npm](https://www.npmjs.com/search?q=%40wekanteam)
- ☁️ AtmosphereJS Meteor packages: [atmospherejs.com](https://atmospherejs.com)
---
## 🚧 Meteor Version & Upgrade Notes
- 📌 Current Version: **Meteor 2.14**
- [`.meteor/release`](https://github.com/wekan/wekan/blob/main/.meteor/release)
- 🔧 Maintained with only **critical fixes** until ~Summer 2025
- 🚀 Migration to **Meteor 3** or a new framework is under consideration
📘 Meteor 3 API: [docs.meteor.com/api/accounts](https://docs.meteor.com/api/accounts)
---
## 🧪 Prototypes & Examples
### 🐘 PHP Prototype Sign-Up
Used in experimental versions:
- Step 1: [`sign-up1.php`](https://github.com/wekan/php/blob/main/page/sign-up1.php)
- Step 2: [`sign-up2.php`](https://github.com/wekan/php/blob/main/page/sign-up2.php)
- Main entry: [`index.php#L72-L83`](https://github.com/wekan/php/blob/main/public/index.php#L72-L83)
---
### 🎨 WeKan Studio Prototype
Sign-up logic in the **WeKan Studio** version:
- [`signUp.fmt`](https://github.com/wekan/wekanstudio/blob/main/srv/templates/login/signUp.fmt)
---
## 📎 Future Considerations
- Upgrading to **Meteor 3.x**
- Refactoring frontend logic to fix translation rendering order
- Exploring **simplified authentication systems** in future prototypes
---
## 🔗 Project Links
- 🔧 Main Repo: [github.com/wekan/wekan](https://github.com/wekan/wekan)
- 🌐 Website: [wekan.github.io](https://wekan.github.io)
- 📚 Documentation: [Wekan Wiki](https://github.com/wekan/wekan/wiki)
---
---
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v7.80.0"
appVersion: "v7.88.0"
files:
userUploads:
- README.md
+9 -2
View File
@@ -2544,8 +2544,8 @@ THEME - Exodark
background: #1b1b1b;
}
.board-color-exodark .materialCheckBox.is-checked {
border-bottom: 2px solid #222;
border-right: 2px solid #222;
border-bottom: 2px solid #dbdbdb!important;/*Fix contrast of checkbox*/
border-right: 2px solid #dbdbdb!important;
}
.board-color-exodark .is-multiselection-active .multi-selection-checkbox.is-checked + .minicard {
background: #e9e9e9;
@@ -3179,10 +3179,17 @@ THEME - Clean Dark
margin-top: 8px;
}
.board-color-cleandark.background-box {
background-color:#23232B;
} /*Fixes contrast issues with background box in theme selection list*/
/* ===============
THEME - Clean Light
=================*/
/* Please note Clean Light theme elements also contain references to some cleandark theme elements so if unable to find code you're looking for under CleanDark it might be here. This should probably be cleaned up*/
.board-color-cleanlight.background-box {
background-color:#e0e0e0;
color:#010101!important;
} /*Fixes issues with text colour/background box being similar no contrast */
.board-color-cleanlight {
background: #E0E0E0;
+32 -26
View File
@@ -239,34 +239,40 @@ BlazeComponent.extendComponent({
evt.preventDefault();
},
'click .js-clone-board'(evt) {
let title = getSlug(ReactiveCache.getBoard(this.currentData()._id).title) || 'cloned-board';
Meteor.call(
'copyBoard',
this.currentData()._id,
{
sort: ReactiveCache.getBoards({ archived: false }).length,
type: 'board',
title: ReactiveCache.getBoard(this.currentData()._id).title,
},
(err, res) => {
if (err) {
console.error(err);
} else {
Session.set('fromBoard', null);
subManager.subscribe('board', res, false);
FlowRouter.go('board', {
id: res,
slug: title,
});
}
},
);
evt.preventDefault();
if (confirm(TAPi18n.__('duplicate-board-confirm'))) {
let title =
getSlug(ReactiveCache.getBoard(this.currentData()._id).title) ||
'cloned-board';
Meteor.call(
'copyBoard',
this.currentData()._id,
{
sort: ReactiveCache.getBoards({ archived: false }).length,
type: 'board',
title: ReactiveCache.getBoard(this.currentData()._id).title,
},
(err, res) => {
if (err) {
console.error(err);
} else {
Session.set('fromBoard', null);
subManager.subscribe('board', res, false);
FlowRouter.go('board', {
id: res,
slug: title,
});
}
},
);
evt.preventDefault();
}
},
'click .js-archive-board'(evt) {
const boardId = this.currentData()._id;
Meteor.call('archiveBoard', boardId);
evt.preventDefault();
if (confirm(TAPi18n.__('archive-board-confirm'))) {
const boardId = this.currentData()._id;
Meteor.call('archiveBoard', boardId);
evt.preventDefault();
}
},
'click .js-accept-invite'() {
const boardId = this.currentData()._id;
+7 -7
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() {
@@ -322,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'));
+9
View File
@@ -225,3 +225,12 @@ template(name="minicardDetailsActionsPopup")
a.js-link
i.fa.fa-link
| {{_ 'link-card'}}
li
a.js-toggle-watch-card
if isWatching
i.fa.fa-eye
| {{_ 'unwatch'}}
else
i.fa.fa-eye-slash
| {{_ 'watch'}}
+14
View File
@@ -46,6 +46,10 @@ BlazeComponent.extendComponent({
}
return ret;
},
isWatching() {
const card = this.currentData();
return card.findWatcher(Meteor.userId());
},
showMembers() {
// cache "board" to reduce the mini-mongodb access
@@ -125,6 +129,9 @@ Template.minicard.helpers({
? Meteor.connection._lastSessionId
: null;
},
isWatching() {
return this.findWatcher(Meteor.userId());
}
});
BlazeComponent.extendComponent({
@@ -178,4 +185,11 @@ Template.minicardDetailsActionsPopup.events({
this.archive();
Utils.goBoardId(this.boardId);
}),
'click .js-toggle-watch-card'() {
const currentCard = this;
const level = currentCard.findWatcher(Meteor.userId()) ? null : 'watching';
Meteor.call('watch', 'card', currentCard._id, level, (err, ret) => {
if (!err && ret) Popup.back();
});
},
});
+1 -1
View File
@@ -177,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;
+1 -1
View File
@@ -366,7 +366,7 @@ Template.keyboardShortcuts.helpers({
},
{
keys: ['ctrl + alt + number keys 1-9'],
action: 'toggle-asignees'
action: 'toggle-assignees'
},
],
});
+6 -2
View File
@@ -577,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
#
+6 -2
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
#
+16 -3
View File
@@ -1,8 +1,21 @@
Admin Panel / People / Click at right side of usename `...` button that is User Settings / Impersonate user.
## Impersonate a User
You will be switched to logged in as that user.
To impersonate another user in the Admin Panel:
To switch back to your original user, at your webbrowser click `Reload open webpage` round arrow button.
1. Go to **Admin Panel** → **People**.
2. Find the user you want to impersonate.
3. Click the **`...` (three dots)** menu on the right side of the username.
4. Select **User Settings** → **Impersonate User**.
You will now be logged in as that user.
### How to Switch Back
To return to your original admin account:
- Click the **Reload** (🔄) button in your web browser to refresh the page.
---
📝 **Note:**
This feature was added to Wekan v4.39 at https://github.com/wekan/wekan/pull/3280
@@ -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,10 +18,8 @@ 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/BSD/RasPi. [Haiku](https://discuss.haiku-os.org/t/progress-on-porting-firefox/13493/143) not tested yet - [HN](https://news.ycombinator.com/item?id=41214762).
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. [Repo](https://gitlab.com/ubports/development/core/morph-browser)
[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
[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)
@@ -38,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
@@ -60,7 +61,7 @@ Internet Explorer | No | No | No | No | No
- Apache 2.0 or MIT license
- Repo: https://github.com/versotile-org/verso
## Ladybird based, not tested yet:
## Ladybird based, not yet compatible with WeKan
- BSD-2-Clause license
- Website: https://ladybird.org
@@ -76,7 +77,7 @@ 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
+1
View File
@@ -2,6 +2,7 @@
- 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
@@ -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)
+4
View File
@@ -1,3 +1,7 @@
## 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
+30 -6
View File
@@ -4,15 +4,35 @@
- 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
## What is Cross-Platform
- Works at s390x
- Programming languages
- Node.js https://nodejs.org https://github.com/wekan/ferretdb/tree/main/node-deno-bun (not Deno or Bun)
- C89 https://github.com/xet7/darkesthour
- PHP https://github.com/wekan/php
- Go https://github.com/wekan/wekango
- Tcl/Tk
- Web Frameworks
- V veb https://github.com/vlang/v/issues/18737
- Gambas https://github.com/wekan/hx/tree/main/prototypes/ui/gambas
- Python Py4Web https://py4web.com
- Ruby on Rails https://github.com/werot
- WeKan Studio https://github.com/wekan/wekanstudio
- Works at AmigaOS 3.x/4.x/MorphOS/AROS, Win/Mac/Linux
- Web frameworks
- FreePascal https://github.com/wekan/wami
- GUI
- 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
- Godot https://godotengine.org , https://github.com/godotengine/godot
- Redot https://www.redotengine.org , https://github.com/Redot-Engine/redot-engine
- HaxeUI https://haxeui.org
## Prototype Strategy
@@ -251,7 +271,7 @@ https://github.com/wekan/php/blob/main/page/allboardschar.php
- Only test webpage. No actual features.
### Node.js 20, Bun and Deno
- Repo https://github.com/wekan/wekan-node20
- Repo https://github.com/wekan/ferretdb/tree/main/node-deno-bun
- Features:
- main.js makes database queries to many databases
- Database drivers:
@@ -282,7 +302,7 @@ https://github.com/wekan/php/blob/main/page/allboardschar.php
### FreePascal
- Repo https://github.com/wekan/wami
- Some static pages
- Some static pages. At upload page, uploading file now works.
- Previous:
- Repo https://github.com/wekan/hx/tree/main/prototypes/code/webserver/works/freepascal-router
- Router and some webpage
@@ -345,4 +365,8 @@ https://github.com/wekan/php/blob/main/page/allboardschar.php
### Swap microframework, vs HTMX
- https://github.com/josephernest/Swap
- https://news.ycombinator.com/item?id=35991783
- https://news.ycombinator.com/item?id=35991783
### Ruby on Rails
- https://github.com/wekan/weror . Password register and login works, there is workspaces and dragging cards, but no user management etc features yet.
+1 -8
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/
+23
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" />
+35 -7
View File
@@ -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
+19 -1
View File
@@ -46,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
+42 -2
View File
@@ -1,7 +1,12 @@
- 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.
@@ -13,17 +18,52 @@ DNS records:
```
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
}
reverse_proxy 123.123.123.123:80
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
}
```
At /opt/sandstorm/sandstorm.conf is domain, http port etc.
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
@@ -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
+4 -4
View File
@@ -10,19 +10,19 @@ This is without container (without Docker or Snap).
Right click and download files 1-4:
1. [wekan-7.80-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v7.80/wekan-7.80-amd64-windows.zip)
1. [wekan-7.88-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v7.88/wekan-7.88-amd64-windows.zip)
2. [node.exe](https://nodejs.org/dist/latest-v14.x/win-x64/node.exe)
3. [mongodb-windows-x86_64-6.0.19-signed.msi](https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-6.0.19-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.19-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.80-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
7. Unzip `wekan-7.88-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
```
bundle (directory)
+1
View File
@@ -129,6 +129,7 @@
# <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)
+9 -9
View File
@@ -49,7 +49,7 @@
"activity-archived": "%s انتقل الى الارشيف",
"activity-attached": "إرفاق %s ل %s",
"activity-created": "أنشأ %s",
"activity-changedListTitle": "renamed list to %s",
"activity-changedListTitle": "إعادة تسمية القائمة إلى ",
"activity-customfield-created": "%s احدت حقل مخصص",
"activity-excluded": "استبعاد %s عن %s",
"activity-imported": "imported %s into %s from %s",
@@ -86,9 +86,9 @@
"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 Widths",
"set-list-width": "Set Widths",
"set-list-width-value": "Set Min & Max Widths (pixels)",
"setListWidthPopup-title": "تعيين العرض",
"set-list-width": "تعيين العرض",
"set-list-width-value": "تعيين الحد الأدنى والأقصى للعرض (بالبكسل)",
"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.",
@@ -411,10 +411,10 @@
"user-can-not-export-card-to-pdf": "User can not export card to PDF",
"exportBoardPopup-title": "Export board",
"exportCardPopup-title": "Export card",
"sort": "Sort",
"sorted": "Sorted",
"remove-sort": "Remove sort",
"sort-desc": "Click to Sort List",
"sort": "رتب",
"sorted": "مرتبة",
"remove-sort": "إزالة الفرز\n ",
"sort-desc": "انقر لفرز القائمة\n ",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
@@ -1207,7 +1207,7 @@
"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",
"originOrder": "النظام الأصلي\n ",
"copyChecklist": "Copy Checklist",
"copyChecklistPopup-title": "Copy Checklist",
"card-show-lists": "Card Show Lists",
+2 -2
View File
@@ -319,7 +319,7 @@
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copy-text-to-clipboard": "Copy text to clipboard",
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"searchElementPopup-title": "Klask",
"copyCardPopup-title": "Copy Card",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
@@ -572,7 +572,7 @@
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"save": "Save",
"search": "Search",
"search": "Klask",
"rules": "Rules",
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
"search-example": "Write text you search and press Enter",
File diff suppressed because it is too large. Load diff
+2
View File
@@ -125,6 +125,7 @@
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-board-confirm": "Are you sure you want to archive this board?",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
@@ -896,6 +897,7 @@
"oidc-button-text": "Customize the OIDC button text",
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"duplicate-board-confirm": "Are you sure you want to duplicate this board?",
"org-number": "The number of organizations is: ",
"team-number": "The number of teams is: ",
"people-number": "The number of people is: ",
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -300,7 +300,7 @@
"color-white": "white",
"color-yellow": "flava",
"unset-color": "Unset",
"comments": "Comments",
"comments": "Komentoj",
"comment": "Komento",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -1253,7 +1253,7 @@
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"translation": "Traduko",
"text": "Teksto",
"translation-text": "Translation text",
"show-subtasks-field": "Show subtasks field",
+135 -135
View File
@@ -16,9 +16,9 @@
"act-uncheckedItem": "desmarcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-completeChecklist": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-uncompleteChecklist": "no completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addComment": "comentario en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-editComment": "comentario editado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-deleteComment": "comentario eliminado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addComment": "ha comentado en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-editComment": "ha editado la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-deleteComment": "ha borrado el comentario en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createBoard": "creó el tablero __board__",
"act-createSwimlane": "creó el carril de flujo __swimlane__ en el tablero __board__",
"act-createCard": "creada la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
@@ -49,7 +49,7 @@
"activity-archived": "%s se ha archivado",
"activity-attached": "adjuntado(s) %s a %s",
"activity-created": "ha creado %s",
"activity-changedListTitle": "renamed list to %s",
"activity-changedListTitle": "lista renombrada como %s",
"activity-customfield-created": "creó el campo personalizado %s",
"activity-excluded": "ha excluido %s de %s",
"activity-imported": "ha importado %s en %s desde %s",
@@ -86,27 +86,27 @@
"add-card": "Añadir una tarjeta",
"add-card-to-top-of-list": "Subir la tarjeta al principio de la lista",
"add-card-to-bottom-of-list": "Bajar la tarjeta al final de la lista",
"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)",
"swimlane-height-error-message": "Swimlane height must be a positive integer",
"setListWidthPopup-title": "Ajustar anchuras",
"set-list-width": "Ajustar anchuras",
"set-list-width-value": "Establecer anchos mín. y máx. (píxeles)",
"list-width-error-message": "Las anchuras de las listas deben ser enteros mayores de 100",
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
"set-swimlane-height": "Ajustar la altura del carril",
"set-swimlane-height-value": "Altura de carril (píxeles)",
"swimlane-height-error-message": "La altura de carril debe ser un entero positivo",
"add-swimlane": "Añadir un carril de flujo",
"add-subtask": "Añadir subtarea",
"add-checklist": "Añadir una lista de verificación",
"add-checklist-item": "Añadir un elemento a la lista de verificación",
"close-add-checklist-item": "Close add an item to checklist form",
"close-edit-checklist-item": "Close edit an item to checklist form",
"close-add-checklist-item": "Cerrar el formulario para añadir un elemento a la lista de verificación",
"close-edit-checklist-item": "Cerrar el formulario de edición de un elemento de la lista de verificación",
"convertChecklistItemToCardPopup-title": "Convertir en tarjeta",
"add-cover": "Add cover image to minicard",
"add-cover": "Añadir imagen de portada a la minitarjeta",
"add-label": "Añadir una etiqueta",
"add-list": "Añadir una lista",
"add-after-list": "Add After List",
"add-after-list": "Añadir después de la lista",
"add-members": "Añadir miembros",
"added": "Añadida el",
"addMemberPopup-title": "Miembros",
@@ -120,7 +120,7 @@
"and-n-other-card": "y __count__ tarjeta más",
"and-n-other-card_plural": "y otras __count__ tarjetas",
"apply": "Aplicar",
"app-is-offline": "Cargando, espera por favor. Refrescar esta página causará pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
"app-is-offline": "Cargando, espera por favor. Refrescar esta página causará la pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
"app-try-reconnect": "Intente reconectar.",
"archive": "Archivar",
"archive-all": "Archivar todo",
@@ -149,10 +149,10 @@
"avatar-too-big": "El avatar es demasiado grande (__size__ máx)",
"back": "Atrás",
"board-change-color": "Cambiar el color",
"board-change-background-image": "Change Background Image",
"board-background-image-url": "Background Image URL",
"add-background-image": "Add Background Image",
"remove-background-image": "Remove Background Image",
"board-change-background-image": "Cambiar imagen de fondo",
"board-background-image-url": "URL de la imagen de fondo",
"add-background-image": "Añadir imagen de fondo",
"remove-background-image": "Quitar imagen de fondo",
"show-at-all-boards-page" : "Mostrar todos los tableros",
"board-info-on-my-boards" : "Configuración de todos los tableros",
"boardInfoOnMyBoardsPopup-title" : "Configuración de todos los tableros",
@@ -163,11 +163,11 @@
"board-not-found": "Tablero no encontrado",
"board-private-info": "Este tablero será <strong>privado</strong>.",
"board-public-info": "Este tablero será <strong>público</strong>.",
"board-drag-drop-reorder-or-click-open": "Mueve y posiciona para reordenar los iconos de los tableros. Click en el icono del tablero para abrirlo",
"board-drag-drop-reorder-or-click-open": "Arrastra y suelta para reordenar los iconos del tablero. Click en el icono del tablero para abrirlo",
"boardChangeColorPopup-title": "Cambiar el fondo del tablero",
"boardChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeBackgroundImagePopup-title": "Cambiar imagen de fondo",
"allBoardsChangeColorPopup-title": "Cambiar el color",
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
"allBoardsChangeBackgroundImagePopup-title": "Cambiar imagen de fondo",
"boardChangeTitlePopup-title": "Renombrar el tablero",
"boardChangeVisibilityPopup-title": "Cambiar visibilidad",
"boardChangeWatchPopup-title": "Cambiar vigilancia",
@@ -217,10 +217,10 @@
"vote-against": "contrarios",
"deleteVotePopup-title": "¿Borrar voto?",
"vote-delete-pop": "El Borrado es permanente. Perderá todas las acciones asociadas con este voto.",
"cardStartPlanningPokerPopup-title": "Comenzar una Planning Poker",
"card-edit-planning-poker": "Editar la planificación del Poker",
"editPokerEndDatePopup-title": "Cambiar la fecha final para la planificación del Poker",
"poker-question": "Planificación del Poker",
"cardStartPlanningPokerPopup-title": "Comenzar un Planning Poker",
"card-edit-planning-poker": "Editar el Planning Poker",
"editPokerEndDatePopup-title": "Cambiar la fecha final de voto del Planning Poker",
"poker-question": "Planning Poker",
"poker-one": "1",
"poker-two": "2",
"poker-three": "3",
@@ -236,8 +236,8 @@
"poker-result-who": "¿Quien?",
"poker-replay": "Reproducir",
"set-estimation": "Fijar estimación",
"deletePokerPopup-title": "¿Borrar el póquer de planificación?",
"poker-delete-pop": "El borrado es permanente. Perderás todas las acciones asociadas a este póker de planificación.",
"deletePokerPopup-title": "¿Borrar el Planning Poker?",
"poker-delete-pop": "El borrado es permanente. Perderás todas las acciones asociadas a este Planning Poker.",
"cardDeletePopup-title": "¿Eliminar la tarjeta?",
"cardArchivePopup-title": "¿Archivar tarjeta?",
"cardDetailsActionsPopup-title": "Acciones de la tarjeta",
@@ -266,9 +266,9 @@
"checklists": "Lista de verificación",
"click-to-star": "Haz clic para destacar este tablero.",
"click-to-unstar": "Haz clic para dejar de destacar este tablero.",
"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",
"click-to-enable-auto-width": "Ancho de lista automático deshabilitado. Haz clic para habilitarlo.",
"click-to-disable-auto-width": "Ancho de lista automático habilitado. Haz clic para deshabilitarlo.",
"auto-list-width": "Ancho de lista automático",
"clipboard": "el portapapeles o con arrastrar y soltar",
"close": "Cerrar",
"close-board": "Cerrar el tablero",
@@ -300,7 +300,7 @@
"color-white": "blanco",
"color-yellow": "amarilla",
"unset-color": "Desmarcar",
"comments": "Comments",
"comments": "Comentarios",
"comment": "Comentar",
"comment-placeholder": "Escribir comentario",
"comment-only": "Sólo comentarios",
@@ -313,7 +313,7 @@
"worker-desc": "Solo puede mover tarjetas, asignarse a la tarjeta y comentar.",
"computer": "el ordenador",
"confirm-subtask-delete-popup": "¿Seguro que quieres eliminar la subtarea?",
"confirm-checklist-delete-popup": "¿Está seguro de que quiere eliminar la lista de tareas?",
"confirm-checklist-delete-popup": "¿Está seguro de querer eliminar la lista de tareas?",
"subtaskDeletePopup-title": "¿Borrar subtarea?",
"checklistDeletePopup-title": "¿Borrar la lista de tareas?",
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
@@ -338,7 +338,7 @@
"custom-field-date": "Fecha",
"custom-field-dropdown": "Lista desplegable",
"custom-field-dropdown-none": "(nada)",
"custom-field-dropdown-options": "Opciones de la lista",
"custom-field-dropdown-options": "Opciones de listas",
"custom-field-dropdown-options-placeholder": "Pulsa Intro para añadir más opciones",
"custom-field-dropdown-unknown": "(desconocido)",
"custom-field-number": "Número",
@@ -383,7 +383,7 @@
"email-sent": "Correo enviado",
"email-verifyEmail-subject": "Verifica tu dirección de correo en __siteName__",
"email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de correo electrónico, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
"enable-vertical-scrollbars": "Enable vertical scrollbars",
"enable-vertical-scrollbars": "Habilitar barras de desplazamiento verticales",
"enable-wip-limit": "Habilitar el límite del trabajo en proceso",
"error-board-doesNotExist": "El tablero no existe",
"error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
@@ -414,7 +414,7 @@
"sort": "Ordenar",
"sorted": "Ordenado",
"remove-sort": "Eliminar el ordenamiento",
"sort-desc": "Click para ordenar la lista",
"sort-desc": "Clic para ordenar la lista",
"list-sort-by": "Ordenar la lista por:",
"list-label-modifiedAt": "Hora de último acceso",
"list-label-title": "Nombre de la lista",
@@ -451,7 +451,7 @@
"advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, deben encapsularse entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. Para omitir los caracteres de control único (' \\\\/), se usa \\\\. Por ejemplo: Campo1 = I\\\\'m. También se pueden combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 == V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Se puede cambiar el orden colocando paréntesis. Por ejemplo: C1 == V1 && ( C2 == V2 || C2 == V3 ). También se puede buscar en campos de texto usando expresiones regulares: C1 == /Tes.*/i",
"fullname": "Nombre completo",
"header-logo-title": "Volver a tu página de tableros",
"show-activities": "Show Activities",
"show-activities": "Mostrar actividades",
"headerBarCreateBoardPopup-title": "Crear tablero",
"home": "Inicio",
"import": "Importar",
@@ -500,7 +500,7 @@
"list-move-cards": "Mover todas las tarjetas de esta lista",
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
"set-color-list": "Cambiar el color",
"listActionPopup-title": "Acciones de la lista",
"listActionPopup-title": "Acciones de listas",
"settingsUserPopup-title": "Preferencias de usuario",
"settingsTeamPopup-title": "Configuración del Equipo",
"settingsOrgPopup-title": "Configuración de la Organización",
@@ -510,7 +510,7 @@
"listImportCardsTsvPopup-title": "Importar CSV/TSV",
"listMorePopup-title": "Más",
"link-list": "Enlazar a esta lista",
"list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
"list-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la lista. Esta acción no puede deshacerse.",
"list-delete-suggest-archive": "Puedes mover una lista al Archivo para quitarla del tablero y preservar la actividad.",
"lists": "Listas",
"swimlanes": "Carriles",
@@ -540,7 +540,7 @@
"normal": "Normal",
"normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
"not-accepted-yet": "La invitación no ha sido aceptada aún",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-participate": "Recibir actualizaciones de cualquier tarjeta en la que participes como creador o miembro",
"notify-watch": "Recibir actuaizaciones de cualquier tablero, lista o tarjeta que estés vigilando",
"optional": "opcional",
"or": "o",
@@ -558,7 +558,7 @@
"public": "Público",
"public-desc": "Este tablero es público. Es visible para cualquiera a través del enlace, y se mostrará en los buscadores como Google. Sólo las personas añadidas al tablero pueden editarlo.",
"quick-access-description": "Destaca un tablero para añadir un acceso directo en esta barra.",
"remove-cover": "Remove cover image from minicard",
"remove-cover": "Quitar imagen de portada de la minitarjeta",
"remove-from-board": "Desvincular del tablero",
"remove-label": "Eliminar la etiqueta",
"listDeletePopup-title": "¿Eliminar la lista?",
@@ -580,14 +580,14 @@
"select-board": "Seleccionar tablero",
"set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
"setWipLimitPopup-title": "Establecer el límite del trabajo en proceso",
"shortcut-add-self": "Add yourself to current card",
"shortcut-add-self": "Añadirte a ti mismo a la tarjeta actual",
"shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
"shortcut-autocomplete-emoji": "Autocompletar emoji",
"shortcut-autocomplete-members": "Autocompletar miembros",
"shortcut-clear-filters": "Limpiar todos los filtros",
"shortcut-close-dialog": "Cerrar el cuadro de diálogo",
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-filter-my-assigned-cards": "Filtrar mis tarjetas asignadas",
"shortcut-show-shortcuts": "Mostrar esta lista de atajos",
"shortcut-toggle-filterbar": "Conmutar la barra lateral del filtro",
"shortcut-toggle-searchbar": "Conmutar la barra lateral de búsqueda",
@@ -604,13 +604,13 @@
"this-board": "este tablero",
"this-card": "esta tarjeta",
"spent-time-hours": "Tiempo consumido (horas)",
"overtime-hours": "Tiempo excesivo (horas)",
"overtime-hours": "Horas extras",
"overtime": "Tiempo excesivo",
"has-overtime-cards": "Hay tarjetas con el tiempo excedido",
"has-spenttime-cards": "Se ha excedido el tiempo de las tarjetas",
"time": "Hora",
"title": "Título",
"toggle-assignees": "Toggle assignees 1-9 for card (By order of addition to board).",
"toggle-assignees": "Alternar asignados 1-9 para la tarjeta (por orden de adición al tablero).",
"toggle-labels": "Alterna las etiquetas 1-9 para la tarjeta. La selección múltiple añade las etiquetas 1-9",
"remove-labels-multiselect": "La selección múltiple elimina las etiquetas 1-9",
"tracking": "Siguiendo",
@@ -624,12 +624,12 @@
"uploaded-avatar": "Avatar cargado",
"custom-top-left-corner-logo-image-url": "Personalizar la URL del logotipo en la esquina superior izquierda",
"custom-top-left-corner-logo-link-url": "Personalizar el enlace del logotipo de la esquina superior izquierda",
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-top-left-corner-logo-height": "Altura personalizada del logo de la esquina superior izquierda. Por defecto: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"custom-help-link-url": "Enlace URL de ayuda personalizada",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"automatic-linked-url-schemes": "Esquemas de URL personalizados que deberían ser clicables automáticamente. Un esquema de URL por línea.",
"username": "Nombre de usuario",
"import-usernames": "Importar Usuarios",
"view-it": "Verla",
@@ -656,7 +656,7 @@
"disable-forgot-password": "Disable Forgot Password",
"invite": "Invitar",
"invite-people": "Invitar a personas",
"to-boards": "A el(los) tablero(s)",
"to-boards": "Al (A los) tablero(s)",
"email-addresses": "Direcciones de correo electrónico",
"smtp-host-description": "Dirección del servidor SMTP para gestionar tus correos",
"smtp-port-description": "Puerto usado por el servidor SMTP para mandar correos",
@@ -731,7 +731,7 @@
"setListColorPopup-title": "Elegir un color",
"assigned-by": "Asignado por",
"requested-by": "Solicitado por",
"card-sorting-by-number": "Card sorting by number",
"card-sorting-by-number": "Orden de tarjetas por número",
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
"delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
"boardDeletePopup-title": "¿Eliminar el tablero?",
@@ -742,7 +742,7 @@
"queue": "Cola",
"subtask-settings": "Preferencias de las subtareas",
"card-settings": "Preferencias de la tarjeta",
"minicard-settings": "Minicard Settings",
"minicard-settings": "Configuración de minitarjeta",
"boardSubtaskSettingsPopup-title": "Preferencias de las subtareas del tablero",
"boardCardSettingsPopup-title": "Preferencias de la tarjeta",
"boardMinicardSettingsPopup-title": "Minicard Settings",
@@ -750,9 +750,9 @@
"deposit-subtasks-list": "Lista de destino para subtareas depositadas aquí:",
"show-parent-in-minicard": "Mostrar el padre en una minitarjeta:",
"description-on-minicard": "Description on minicard",
"cover-attachment-on-minicard": "Cover image on minicard",
"badge-attachment-on-minicard": "Count of attachments on minicard",
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
"prefix-with-full-path": "Prefijo con ruta completa",
"prefix-with-parent": "Prefijo con el padre",
"subtext-with-full-path": "Subtexto con ruta completa",
@@ -786,7 +786,7 @@
"r-added-to": "Añadido a",
"r-removed-from": "eliminado de",
"r-the-board": "el tablero",
"r-list": "la lista",
"r-list": "lista",
"set-filter": "Filtrar",
"r-moved-to": "Movido a",
"r-moved-from": "Movido desde",
@@ -861,12 +861,12 @@
"r-d-remove-checklist": "Eliminar lista de verificación",
"r-by": "por",
"r-add-checklist": "Añadir una lista de verificación",
"r-with-items": "con items",
"r-with-items": "con elementos",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Agregar el carril",
"r-swimlane-name": "nombre del carril",
"r-board-note": "Nota: deje un campo vacío para que coincida con todos los valores posibles",
"r-checklist-note": "Nota: los ítems de la lista tienen que escribirse como valores separados por coma.",
"r-checklist-note": "Nota: los elementos de la lista tienen que escribirse como valores separados por coma.",
"r-when-a-card-is-moved": "Cuando una tarjeta es movida a otra lista",
"r-set": "Cambiar",
"r-update": "Actualizar",
@@ -877,7 +877,7 @@
"r-df-received-at": "recibido",
"r-to-current-datetime": "a la fecha/hora actual",
"r-remove-value-from": "Eliminar el valor de",
"r-link-card": "Link card to",
"r-link-card": "Enlazar tarjeta a",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
@@ -890,7 +890,7 @@
"hide-board-member-list": "Hide board member list on All Boards",
"add-custom-html-after-body-start": "Añade HTML personalizado después de <body>",
"add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
"error-undefined": "Algo no está bien",
"error-undefined": "Algo ha salido mal",
"error-ldap-login": "Ocurrió un error al intentar acceder",
"display-authentication-method": "Mostrar el método de autenticación",
"oidc-button-text": "Customize the OIDC button text",
@@ -916,15 +916,15 @@
"almostdue": "está próxima la hora de vencimiento actual %s",
"pastdue": "se sobrepasó la hora de vencimiento actual%s",
"duenow": "la hora de vencimiento actual %s es hoy",
"act-newDue": "__list__/__card__ tiene una 1ra notificación de vencimiento [__board__]",
"act-newDue": "__list__/__card__ tiene una primera notificación de vencimiento [__board__]",
"act-withDue": "__list__/__card__ notificaciones de vencimiento [__board__]",
"act-almostdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ está próximo",
"act-pastdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ se sobrepasó",
"act-duenow": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ es ahora",
"act-atUserComment": "Se te mencionó en [__board__] __list__/__card__",
"delete-user-confirm-popup": "¿Seguro que quieres eliminar esta cuenta? Esta acción no puede deshacerse.",
"delete-team-confirm-popup": "Are you sure you want to delete this team? There is no undo.",
"delete-org-confirm-popup": "Are you sure you want to delete this organization? There is no undo.",
"delete-user-confirm-popup": "¿Estás seguro de querer eliminar esta cuenta? Esta acción no puede deshacerse.",
"delete-team-confirm-popup": "¿Estás seguro de querer eliminar este equipo? Esta acción no puede deshacerse",
"delete-org-confirm-popup": "¿Estás seguro de querer eliminar esta organización? Esta acción no puede deshacerse.",
"accounts-allowUserDelete": "Permitir a los usuarios eliminar su cuenta",
"hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta",
"show-desktop-drag-handles": "Mostrar los controles de arrastre del escritorio",
@@ -966,7 +966,7 @@
"delete-linked-card-before-this-card": "No puede borrar esta tarjeta antes de borrar la tarjeta enlazada que tiene",
"delete-linked-cards-before-this-list": "No puede borrar esta lista antes de borrar las tarjetas enlazadas que apuntan a tarjetas en esta lista",
"hide-checked-items": "Ocultar elementos marcados",
"hide-finished-checklist": "Hide finished checklist",
"hide-finished-checklist": "Esconder la lista de tareas finalizada",
"task": "Tarea",
"create-task": "Crear Tarea",
"ok": "Vale",
@@ -974,7 +974,7 @@
"teams": "Equipos",
"displayName": "Mostrar Nombre",
"shortName": "Nombre Corto",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"autoAddUsersWithDomainName": "Añadir automáticamente usuarios con el nombre del dominio",
"website": "Sitio web",
"person": "Persona",
"my-cards": "Mis Tarjetas",
@@ -998,13 +998,13 @@
"dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
"broken-cards": "Tarjetas Rotas",
"board-title-not-found": "Tablero '%s' no encontrado.",
"swimlane-title-not-found": "Swimlane '%s' not found.",
"swimlane-title-not-found": "Carril '%s' no encontrado.",
"list-title-not-found": "Lista '%s' no encontrada.",
"label-not-found": "Etiqueta '%s' no encontrada.",
"label-color-not-found": "Label color %s not found.",
"user-username-not-found": "Usuario '%s' no encontrado.",
"comment-not-found": "Card with comment containing text '%s' not found.",
"org-name-not-found": "Organization '%s' not found.",
"org-name-not-found": "Organización '%s' no encontrada.",
"team-name-not-found": "Team '%s' not found.",
"globalSearch-title": "Buscar todas las tarjetas",
"no-cards-found": "Ninguna tarjeta encontrada",
@@ -1013,9 +1013,9 @@
"n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
"operator-board": "tablero",
"operator-board-abbrev": "b",
"operator-swimlane": "swimlane",
"operator-swimlane": "carril",
"operator-swimlane-abbrev": "s",
"operator-list": "la lista",
"operator-list": "lista",
"operator-list-abbrev": "l",
"operator-label": "etiqueta",
"operator-label-abbrev": "#",
@@ -1041,7 +1041,7 @@
"predicate-open": "abierto",
"predicate-ended": "finalizó",
"predicate-all": "todo",
"predicate-overdue": "overdue",
"predicate-overdue": "atrasado",
"predicate-week": "semana",
"predicate-month": "mes",
"predicate-quarter": "cuarto",
@@ -1064,45 +1064,45 @@
"operator-number-expected": "operator __operator__ expected a number, got '__value__'",
"operator-sort-invalid": "sort of '%s' is invalid",
"operator-status-invalid": "'%s' no es un estado válido",
"operator-has-invalid": "%s is not a valid existence check",
"operator-has-invalid": "%s no es una comprobación de existencia válida",
"operator-limit-invalid": "%s no es un límite válido. El límite ha de ser un entero positivo.",
"operator-debug-invalid": "%s is not a valid debug predicate",
"next-page": "Página Siguiente",
"previous-page": "Página Anterior",
"heading-notes": "Notas",
"globalSearch-instructions-heading": "Buscar instrucciones.",
"globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
"globalSearch-instructions-heading": "Instrucciones de búsqueda",
"globalSearch-instructions-description": "Se pueden usar operadores para refinar la búsqueda. Los operadores se especifican escribiendo el nombre del operador y su valor separado por dos puntos. Por ejemplo, especificar `lista:Bloqueada` limitaría la búsqueda a tarjetas que conengan una lista llamada *Bloqueada*. Si el valor contiene espacios o caracteres especiales, debe escribirse entre comillas (por ejemplo: `__operator_list__:\"To Review\"`).",
"globalSearch-instructions-operators": "Operadores disponibles:",
"globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*",
"globalSearch-instructions-operator-board": "`__operator_board__:<title>` - tarjetas en tableros que coincidan con *<title>*",
"globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*",
"globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.",
"globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - tarjetas con comentarios que contengan *<text>*.",
"globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - abreviatura para `__operator_label__:<color>` o `__operator_label__:<name>`",
"globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - abreviatura para `user:<username>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - tarjetas donde *<username>* es el creador de la tarjeta",
"globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - cards belonging to a board assigned to organization *<name>*",
"globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - cards belonging to a board assigned to team *<name>*",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
"globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - las tarjetas pertenecientes al tablero asignadas al equipo *<name>*",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - tarjetas que vencen dentro de *<n>* days. `__operator_due__:__predicate_overdue__ lista todas las tarjetas que han vencido.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
"globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:",
"globalSearch-instructions-operator-status": "`__operator_status__:<status>` - donde *<status>* puede ser uno de los siguientes:",
"globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards",
"globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards",
"globalSearch-instructions-status-all": "`__predicate_all__` - todas las tarjetas archivadas o no archivadas",
"globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date",
"globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards",
"globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards",
"globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`. Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
"globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`. For a descending sort, place a `-` in front of the sort name.",
"globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
"globalSearch-instructions-notes-1": "Múltiple operadores pueden ser seleccionados.",
"globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
"globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
"globalSearch-instructions-status-private": "`__predicate_private__` - solo tarjetas de tableros privados",
"globalSearch-instructions-operator-has": "`__operator_has__:<field>` - donde *<field>* puede ser `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` o `__predicate_member__`. Colocando un `-` delante de *<field>* busca la ausencia del valor en ese campo (por ejemplo, `has:-due` busca tarjetas sin fecha de vencimiento).",
"globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - donde *<sort-name>* puede ser `__predicate_due__`, `__predicate_created__` o `__predicate_modified__`. Para ordenar descendentemente, coloca un `-` delante del tipo de orden.",
"globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - donde *<n>* es un entero positivo que expresa el número de tarjetas que se mostrarán por página.",
"globalSearch-instructions-notes-1": "Se pueden especificar múltiples operadores.",
"globalSearch-instructions-notes-2": "Múltiples condiciones de operadores parecidos se tratan internamente con el operador lógico OR. Es decir, la búsqueda devolverá las tarjetas que coincidan con alguna de las condiciones:\n`__operator_list__:Disponible __operator_list__:Bloqueada` devolverá tarjetas contenidas en cualquier lista nombrada *Bloqueada* o *Disponible*.",
"globalSearch-instructions-notes-3": "Múltiples condiciones de operadores distintos se tratan internamente con el operador lógico AND. Es decir, la búsqueda devolverá las tarjetas que coincidan con TODAS las condiciones:\n`__operator_list__:Disponible __operator_label__:rojo` devuelve sólo las tarjetas en la lista *Disponible* con una etiqueta *roja*.",
"globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
"globalSearch-instructions-notes-4": "La búsqueda de texto distingue entre mayúsculas y minúsculas.",
"globalSearch-instructions-notes-4": "Las búsquedas de texto no distinguen entre mayúsculas y minúsculas.",
"globalSearch-instructions-notes-5": "Por defecto no se buscan las tarjetas archivadas.",
"link-to-search": "Enlazar a esta búsqueda",
"excel-font": "Arial",
@@ -1111,32 +1111,32 @@
"label-names": "Nombres de las etiquetas",
"archived-at": "archivado el",
"sort-cards": "Ordenar tarjetas",
"sort-is-on": "Sort is on",
"sort-is-on": "Ordenamiento activado",
"cardsSortPopup-title": "Ordenar tarjetas",
"due-date": "Fecha de Vencimiento",
"server-error": "Error del Servidor",
"server-error-troubleshooting": "Please submit the error generated by the server.\nFor a snap installation, run: `sudo snap logs wekan.wekan`\nFor a Docker installation, run: `sudo docker logs wekan-app`",
"server-error-troubleshooting": "Por favor, envíe el error generado por el servidor.\nPara la instalación con snap, ejecute: `sudo snap logs wekan.wekan`\nPara la instalación con docker, ejecute: `sudo docker logs wekan-app`",
"title-alphabetically": "Título (Alfabéticamente)",
"created-at-newest-first": "Creación (Nuevos Primero)",
"created-at-oldest-first": "Creación (Antiguos Primero)",
"links-heading": "Enlaces",
"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",
"hide-activities-of-all-boards": "No mostrar las actividades del tablero en todos los tableros",
"now-activities-of-all-boards-are-hidden": "Todas las actividades de todos los tableros están ahora ocultas",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane",
"custom-field-stringtemplate": "String Template",
"custom-field-stringtemplate": "Plantilla de cadenas",
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Pulsa intro para añadir más elementos",
"creator": "Creador",
"creator-on-minicard": "Creator on minicard",
"creator-on-minicard": "Creador en minitarjeta",
"filesReportTitle": "Informe sobre los archivos",
"reports": "Informes",
"rulesReportTitle": "Informe sobre las Reglas",
"boardsReportTitle": "Informe sobre los Tableros",
"cardsReportTitle": "Informe sobre las Tarjetas",
"copy-swimlane": "Copy Swimlane",
"copySwimlanePopup-title": "Copy Swimlane",
"copySwimlanePopup-title": "Copiar carril",
"display-card-creator": "Mostrar Creador de la Tarjeta",
"wait-spinner": "Wait Spinner",
"Bounce": "Bounce Wait Spinner",
@@ -1150,7 +1150,7 @@
"maximize-card": "Maximizar Tarjeta",
"minimize-card": "Minimizar Tarjeta",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"delete-team-warning-message": "No se puede eliminar este equipo, hay al menos un usuario que pertenece a este equipo.",
"subject": "Asunto",
"details": "Detalles",
"carbon-copy": "Carbon Copy (Cc:)",
@@ -1175,9 +1175,9 @@
"remove-btn": "Eliminar",
"filter-card-title-label": "Filtrar por el título de la tarjeta",
"invite-people-success": "Invitation to register sent with success",
"invite-people-error": "Error while sending invitation to register",
"invite-people-error": "Error al enviar la invitación para registrarse",
"can-invite-if-same-mailDomainName": "Email domain name",
"to-create-teams-contact-admin": "To create teams, please contact the administrator.",
"to-create-teams-contact-admin": "Para crear equipos, por favor contacte con el administrador.",
"Node_heap_total_heap_size": "Node heap: total heap size",
"Node_heap_total_heap_size_executable": "Node heap: total heap size executable",
"Node_heap_total_physical_size": "Node heap: total physical size",
@@ -1195,7 +1195,7 @@
"Node_memory_usage_external": "Node memory usage: external",
"add-organizations": "Añadir organizaciones",
"add-organizations-label": "Added organizations are displayed below:",
"remove-organization-from-board": "Are you sure you want to remove this organization from this board ?",
"remove-organization-from-board": "¿Estás seguro de querer quitar esta organización del tablero?",
"to-create-organizations-contact-admin": "Para crear organizaciones, póngase en contacto con el administrador.",
"custom-legal-notice-link-url": "URL personalizada de la página de aviso legal",
"acceptance_of_our_legalNotice": "Al continuar, usted acepta nuestra",
@@ -1204,25 +1204,25 @@
"checklistActionsPopup-title": "Acciones de la Lista de Tareas",
"moveChecklist": "Mover Lista de Tareas",
"moveChecklistPopup-title": "Mover Lista de Tareas",
"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",
"newlineBecomesNewChecklistItem": "Cada línea de texto se convierte en un nuevo elemento de la lista de verificación",
"newLineNewItem": "Una línea de texto = un elemento de la lista de verificación",
"newlineBecomesNewChecklistItemOriginOrder": "Cada línea de texto se convierte en un nuevo elemento de la lista de verificación, orden original",
"originOrder": "orden original",
"copyChecklist": "Copiar Lista de Tareas",
"copyChecklistPopup-title": "Copiar Lista de Tareas",
"card-show-lists": "Mostrar Listas de Tarjetas",
"subtaskActionsPopup-title": "Acciones de la Subtarea",
"attachmentActionsPopup-title": "Acciones de Adhesión",
"attachment-move-storage-fs": "Mover el archivo adjunto al sistema de archivos",
"attachment-move-storage-gridfs": "Move attachment to GridFS",
"attachment-move-storage-gridfs": "Mover adjunto a GridFS",
"attachment-move-storage-s3": "Move attachment to S3",
"attachment-move": "Mover el Adjunto",
"move-all-attachments-to-fs": "Mover todos los archivos adjuntos al sistema de archivos",
"move-all-attachments-to-gridfs": "Move all attachments to GridFS",
"move-all-attachments-to-gridfs": "Mover todos los adjuntos a GridFS",
"move-all-attachments-to-s3": "Move all attachments to S3",
"move-all-attachments-of-board-to-fs": "Move all attachments of board to filesystem",
"move-all-attachments-of-board-to-fs": "Mover todos los adjuntos del tablero al sistema de archivos",
"move-all-attachments-of-board-to-gridfs": "Move all attachments of board to GridFS",
"move-all-attachments-of-board-to-s3": "Move all attachments of board to S3",
"move-all-attachments-of-board-to-s3": "Mover todos los adjuntos del tablero a S3",
"path": "Ruta",
"version-name": "Nombre de la versión",
"size": "Tamaño",
@@ -1234,7 +1234,7 @@
"remaining_time": "Tiempo restante",
"speed": "Velocidad",
"progress": "Progreso",
"password-again": "Password (again)",
"password-again": "Contraseña (repetir)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password",
@@ -1246,27 +1246,27 @@
"max-avatar-filesize": "Máximo tamaño de archivo de avatar en bytes:",
"allowed-avatar-filetypes": "Tipos de archivo permitidos para el avatar:",
"invalid-file": "Si el nombre de archivo no es válido, la carga o el cambio de nombre es cancelado.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"preview-pdf-not-supported": "Tu dispositivo no permite previsualizar PDF. Intenta descargarlo.",
"drag-board": "Arrastrar tablero",
"translation-number": "El número de cadenas de traducción personalizadas es:",
"delete-translation-confirm-popup": "¿Estás seguro de querer eliminar esta cadena de traducción personalizada? Esta acción no puede deshacerse.",
"newTranslationPopup-title": "Nueva cadena de traducción personalizada",
"editTranslationPopup-title": "Editar cadena de traducción personalizada",
"settingsTranslationPopup-title": "¿Borrar esta cadena de traducción personalizada?",
"translation": "Traducción",
"text": "Texto",
"translation-text": "Translation text",
"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",
"translation-text": "Texto de traducción",
"show-subtasks-field": "Mostrar campo de subtareas",
"show-week-of-year": "Mostrar semana del año (ISO 8601)",
"convert-to-markdown": "Convertir en Markdown",
"import-board-zip": "Añadir archivo .zip que contenga los archivos JSON del tablero y los nombres de las subcarpetas con adjuntos del tablero",
"collapse": "Contraer",
"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"
"uncollapse": "Expandir",
"hideCheckedChecklistItems": "Ocultar elementos marcados de la lista de verificación",
"hideAllChecklistItems": "Ocultar todos los elementos de la lista de verificación",
"support": "Soporte",
"supportPopup-title": "Soporte",
"accessibility-page-enabled": "Página de accesibilidad habilitada",
"accessibility-title": "Temas de accesibilidad",
"accessibility-content": "Contenido de accesibilidad"
}
+7 -7
View File
@@ -90,8 +90,8 @@
"set-list-width": "Ezarri zabalerak",
"set-list-width-value": "Ezarri gutxieneko eta gehieneko zabalerak (pixel)",
"list-width-error-message": "Zerrenden zabalerak 100 baino handiagoak izan behar dira",
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
"keyboard-shortcuts-enabled": "Laster-teklak gaituta. Egin klik desgaitzeko.",
"keyboard-shortcuts-disabled": "Laster-teklak desgaituta. Egin klik gaitzeko.",
"setSwimlaneHeightPopup-title": "Errailaren altuera ezarri",
"set-swimlane-height": "Errailaren altuera ezarri",
"set-swimlane-height-value": "Errailaren altuera (pixelak)",
@@ -266,9 +266,9 @@
"checklists": "Kontrol-zerrendak",
"click-to-star": "Egin klik arbel honi izarra jartzeko",
"click-to-unstar": "Egin klik arbel honi izarra kentzeko",
"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",
"click-to-enable-auto-width": "Zerrenda zabalera automatikoa desgaituta dago. Egin klik gaitzeko.",
"click-to-disable-auto-width": "Zerrenda zabalera automatikoa gaituta dago. Egin klik desgaitzeko.",
"auto-list-width": "Zerrenda zabalera automatikoa",
"clipboard": "Kopiatu eta itsatsi edo arrastatu eta jaregin",
"close": "Itxi",
"close-board": "Itxi arbela",
@@ -383,7 +383,7 @@
"email-sent": "E-posta bidali da",
"email-verifyEmail-subject": "Egiaztatu __siteName__ guneko zure e-posta helbidea.",
"email-verifyEmail-text": "Kaixo __user__,\n\nZure e-posta kontua egiaztatzeko, egin klik beheko loturan.\n\n__url__\n\nEskerrik asko.",
"enable-vertical-scrollbars": "Enable vertical scrollbars",
"enable-vertical-scrollbars": "Gaitu korritze barra bertikalak",
"enable-wip-limit": "WIP muga gaitu",
"error-board-doesNotExist": "Arbel hau ez da existitzen",
"error-board-notAdmin": "Arbel honetako kudeatzailea izan behar zara hori egin ahal izateko",
@@ -1257,7 +1257,7 @@
"text": "Testua",
"translation-text": "itzulpenaren testua",
"show-subtasks-field": "azpi-zereginen eremua bezala",
"show-week-of-year": "Show week of year (ISO 8601)",
"show-week-of-year": "Erakutsi rrteko aste zenbakia (ISO 8601)",
"convert-to-markdown": "Bihurtu markdown-era",
"import-board-zip": "Gehitu taula JSON fitxategiak dituen .zip fitxategia eta eranskinak dituzten taularen izenen azpidirektorioak",
"collapse": "Tolestu",
+21 -21
View File
@@ -107,7 +107,7 @@
"add-label": "Ajouter une étiquette",
"add-list": "Ajouter une liste",
"add-after-list": "Ajouter après la liste",
"add-members": "Assigner des participants",
"add-members": "Ajouter des participants",
"added": "Ajouté le",
"addMemberPopup-title": "Participants",
"memberPopup-title": "Préférence du participant",
@@ -139,7 +139,7 @@
"templates": "Modèles",
"template-container": "Conteneur de modèles",
"add-template-container": "Ajouter un conteneur de modèles",
"assign-member": "Affecter un participant",
"assign-member": "Attribuer à un participant",
"attached": "joint",
"attachment": "Pièce jointe",
"attachment-delete-pop": "La suppression d'une pièce jointe est définitive. Cela est irréversible.",
@@ -199,7 +199,7 @@
"card-edit-labels": "Gérer les étiquettes",
"card-edit-members": "Gérer les participants",
"card-labels-title": "Modifier les étiquettes de la carte.",
"card-members-title": "Assigner ou supprimer des participants à la carte.",
"card-members-title": "Ajouter ou supprimer des participants du tableau à la carte.",
"card-start": "Début",
"card-start-on": "Commence le",
"cardAttachmentsPopup-title": "Ajouter depuis",
@@ -310,7 +310,7 @@
"no-comments": "Aucun commentaire",
"no-comments-desc": "Ne peut pas voir les commentaires et les activités.",
"worker": "Travailleur",
"worker-desc": "Peut seulement déplacer des cartes, s'assigner à une carte et la commenter.",
"worker-desc": "Peut seulement déplacer des cartes, s'attribuer une carte et la commenter.",
"computer": "Ordinateur",
"confirm-subtask-delete-popup": "Êtes-vous sûr de vouloir supprimer la sous-tâche ?",
"confirm-checklist-delete-popup": "Êtes-vous sûr de vouloir supprimer la check-list ?",
@@ -437,8 +437,8 @@
"filter-no-label": "Aucune étiquette",
"filter-member-label": "Filtrer par participant",
"filter-no-member": "Aucun participant",
"filter-assignee-label": "Filtrer par personne en charge",
"filter-no-assignee": "Pas de personne en charge",
"filter-assignee-label": "Filtrer par intervenant",
"filter-no-assignee": "Pas d'intervenant",
"filter-custom-fields-label": "Filtrer par champs personnalisés",
"filter-no-custom-fields": "Pas de champs personnalisés",
"filter-show-archive": "Montrer les listes archivées",
@@ -471,9 +471,9 @@
"import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".",
"import-json-placeholder": "Collez ici les données JSON valides",
"import-csv-placeholder": "Déposez ici vos données valides CSV/TSV",
"import-map-members": "Assigner des participants",
"import-members-map": "Le tableau que vous venez d'importer contient des participants. Veuillez assigner les participants que vous souhaitez importer à vos utilisateurs.",
"import-members-map-note": "Note: les participants ne concordant pas seront assignés à l'utilisateur courant.",
"import-map-members": "Faire correspondre les participants",
"import-members-map": "Le tableau que vous venez d'importer contient des participants. Veuillez faire correspondre les participants que vous souhaitez importer à vos utilisateurs.",
"import-members-map-note": "Note: les participants ne concordant pas seront attribués à l'utilisateur courant.",
"import-show-user-mapping": "Contrôler l'assignation des participants",
"import-user-select": "Sélectionnez l'utilisateur existant que vous voulez associer à ce participant",
"importMapMembersAddPopup-title": "Sélectionner le participant",
@@ -581,13 +581,13 @@
"set-wip-limit-value": "Définit une limite maximale au nombre de cartes de cette liste",
"setWipLimitPopup-title": "Définir la limite WIP",
"shortcut-add-self": "S'ajouter à la carte courante",
"shortcut-assign-self": "Affecter cette carte à vous-même",
"shortcut-assign-self": "S'attribuer cette carte",
"shortcut-autocomplete-emoji": "Auto-complétion des emoji",
"shortcut-autocomplete-members": "Auto-complétion des participants",
"shortcut-clear-filters": "Retirer tous les filtres",
"shortcut-close-dialog": "Fermer la boîte de dialogue",
"shortcut-filter-my-cards": "Filtrer mes cartes",
"shortcut-filter-my-assigned-cards": "Filtrer mes cartes assignées",
"shortcut-filter-my-assigned-cards": "Filtrer mes cartes attribuées",
"shortcut-show-shortcuts": "Afficher cette liste de raccourcis",
"shortcut-toggle-filterbar": "Afficher/Masquer la barre latérale des filtres",
"shortcut-toggle-searchbar": "Afficher/Masquer la barre latérale de recherche",
@@ -610,7 +610,7 @@
"has-spenttime-cards": "A des cartes avec du temps passé",
"time": "Temps",
"title": "Titre",
"toggle-assignees": "Changer les personnes en charge 1-9 sur les cartes (par ordre d'ajout au tableau)",
"toggle-assignees": "Changer les intervenants 1-9 sur une carte (par ordre d'ajout au tableau)",
"toggle-labels": "Afficher/Masquer les étiquettes 1-9 sur les cartes. La sélection multiple ajoute les étiquettes 1-9",
"remove-labels-multiselect": "La multi-sélection supprime les étiquettes 1-9",
"tracking": "Suivi",
@@ -729,7 +729,7 @@
"setCardActionsColorPopup-title": "Choisissez une couleur",
"setSwimlaneColorPopup-title": "Choisissez une couleur",
"setListColorPopup-title": "Choisissez une couleur",
"assigned-by": "Assigné par",
"assigned-by": "Attribué par",
"requested-by": "Demandé par",
"card-sorting-by-number": "Tri numérique des cartes",
"board-delete-notice": "La suppression est définitive. Vous perdrez toutes les listes, cartes et actions associées à ce tableau.",
@@ -928,8 +928,8 @@
"accounts-allowUserDelete": "Autoriser les utilisateurs à supprimer leur compte",
"hide-minicard-label-text": "Cacher l'étiquette de la mini-carte",
"show-desktop-drag-handles": "Voir les poignées de déplacement du bureau",
"assignee": "Personne en charge",
"cardAssigneesPopup-title": "Personne en charge",
"assignee": "Intervenant",
"cardAssigneesPopup-title": "Intervenant",
"addmore-detail": "Ajouter une description plus détaillée",
"show-on-card": "Afficher sur la carte",
"show-on-minicard": "Afficher sur la mini-carte",
@@ -1023,7 +1023,7 @@
"operator-user-abbrev": "@",
"operator-member": "participant",
"operator-member-abbrev": "m",
"operator-assignee": "personne en charge",
"operator-assignee": "intervenant",
"operator-assignee-abbrev": "a",
"operator-creator": "créateur",
"operator-status": "statut",
@@ -1054,7 +1054,7 @@
"predicate-checklist": "check-list",
"predicate-start": "début",
"predicate-end": "fin",
"predicate-assignee": "personne en charge",
"predicate-assignee": "intervenant",
"predicate-member": "participant",
"predicate-public": "public",
"predicate-private": "privé",
@@ -1079,13 +1079,13 @@
"globalSearch-instructions-operator-comment": "`__operator_comment__:<texte>` - cartes dont le commentaire contient *<texte>*.",
"globalSearch-instructions-operator-label": "`__operator_label__:<couleur>` `__operator_label__:<nom>` - cartes qui ont une étiquette correspondant à *<couleur>* ou à *<nom>*.",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<nom|couleur>` - raccourci pour `__operator_label__:<couleur>` ou `__operator_label__:<nom>`",
"globalSearch-instructions-operator-user": "`__operator_user__:<nom>` - cartes où l'utilisateur <nom> est *participant* ou est *en charge*.",
"globalSearch-instructions-operator-user": "`__operator_user__:<nom>` - cartes où l'utilisateur <nom> est *participant* ou *intervenant*.",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__nom` - raccourci pour `__operator_user__:<nom>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<nom>` - cartes pour lesquelles l'utilisateur *<nom>* est *participant*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<nom>` - cartes *assignées* à l'utilisateur *<nom>*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<nom>` - cartes *attribuées* à l'utilisateur *<nom>*",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<utilisateur>` - cartes dont le créateur est *<utilisateur>*",
"globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - cartes appartenant à un tableau assigné à l'organisation *<name>*",
"globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - cartes appartenant à un tableau assigné à l'équipe *<name>*",
"globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - cartes appartenant à un tableau attribué à l'organisation *<name>*",
"globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - cartes appartenant à un tableau attribué à l'équipe *<name>*",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cartes qui arrive à échéance dans moins de *<n>* jours à partir d'aujourd'hui.\n`__operator_due__:__predicate_overdue__` liste toutes les cartes ayant passé la date d'échéance.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cartes qui ont été créées il y a *<n>* jours ou moins",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cartes qui ont été modifiées il y a *<n>* jours ou moins",
+93 -93
View File
@@ -1,5 +1,5 @@
{
"accept": "Accept",
"accept": "Terima",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -49,7 +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-changedListTitle": "Namakan semula senarai kepada %s",
"activity-customfield-created": "created custom field %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
@@ -86,9 +86,9 @@
"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 Widths",
"set-list-width": "Set Widths",
"set-list-width-value": "Set Min & Max Widths (pixels)",
"setListWidthPopup-title": "Tetapkan Lebar",
"set-list-width": "Tetapkan Lebar",
"set-list-width-value": "Tetapkan lebar minimum dan maksimum (piksel)",
"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.",
@@ -105,20 +105,20 @@
"convertChecklistItemToCardPopup-title": "Convert to Card",
"add-cover": "Add cover image to minicard",
"add-label": "Add Label",
"add-list": "Add List",
"add-list": "Tambah Senarai",
"add-after-list": "Add After List",
"add-members": "Add Members",
"added": "Added",
"addMemberPopup-title": "Members",
"memberPopup-title": "Member Settings",
"admin": "Admin",
"add-members": "Tambah Ahli",
"added": "Ditambah",
"addMemberPopup-title": "Ahli-ahli",
"memberPopup-title": "Tetapan Ahli",
"admin": "Pentadbir",
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
"admin-announcement": "Announcement",
"admin-announcement": "Pengumuman",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"admin-announcement-title": "Pengumuman dari Pentadbir",
"all-boards": "Semua Papan",
"and-n-other-card": "Dan __count__ kad lain",
"and-n-other-card_plural": "Dan __count__ kad-kad lain",
"apply": "Apply",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"app-try-reconnect": "Try to reconnect.",
@@ -451,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.",
"show-activities": "Show Activities",
"show-activities": "Tunjukkan Aktiviti",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
@@ -972,20 +972,20 @@
"ok": "OK",
"organizations": "Organizations",
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"displayName": "Nama Paparan",
"shortName": "Nama Ringkas",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"website": "Laman Sesawang",
"person": "Person",
"my-cards": "My Cards",
"card": "Card",
"list": "List",
"board": "Board",
"my-cards": "Kad Saya",
"card": "Kad",
"list": "Senarai",
"board": "Papan",
"context-separator": "/",
"myCardsViewChange-title": "My Cards View",
"myCardsViewChangePopup-title": "My Cards View",
"myCardsViewChange-choice-boards": "Boards",
"myCardsViewChange-choice-table": "Table",
"myCardsViewChange-choice-boards": "Papan",
"myCardsViewChange-choice-table": "Jadual",
"myCardsSortChange-title": "My Cards Sort",
"myCardsSortChangePopup-title": "My Cards Sort",
"myCardsSortChange-choice-board": "By Board",
@@ -993,8 +993,8 @@
"dueCards-title": "Due Cards",
"dueCardsViewChange-title": "Due Cards View",
"dueCardsViewChangePopup-title": "Due Cards View",
"dueCardsViewChange-choice-me": "Me",
"dueCardsViewChange-choice-all": "All Users",
"dueCardsViewChange-choice-me": "Saya",
"dueCardsViewChange-choice-all": "Semua Pengguna",
"dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
"broken-cards": "Broken Cards",
"board-title-not-found": "Board '%s' not found.",
@@ -1004,27 +1004,27 @@
"label-color-not-found": "Label color %s not found.",
"user-username-not-found": "Username '%s' not found.",
"comment-not-found": "Card with comment containing text '%s' not found.",
"org-name-not-found": "Organization '%s' not found.",
"team-name-not-found": "Team '%s' not found.",
"globalSearch-title": "Search All Boards",
"no-cards-found": "No Cards Found",
"one-card-found": "One Card Found",
"n-cards-found": "%s Cards Found",
"org-name-not-found": "Organisasi '%s' tidak ditemui.",
"team-name-not-found": "Pasukan '%s' tidak ditemui.",
"globalSearch-title": "Cari di Semua Papan",
"no-cards-found": "Tiada Kad Ditemui",
"one-card-found": "Satu Kad Ditemui",
"n-cards-found": "%s Kad Ditemui",
"n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
"operator-board": "board",
"operator-board-abbrev": "b",
"operator-board": "papan",
"operator-board-abbrev": "p",
"operator-swimlane": "swimlane",
"operator-swimlane-abbrev": "s",
"operator-list": "list",
"operator-list-abbrev": "l",
"operator-list": "senarai",
"operator-list-abbrev": "s",
"operator-label": "label",
"operator-label-abbrev": "#",
"operator-user": "user",
"operator-user": "pengguna",
"operator-user-abbrev": "@",
"operator-member": "member",
"operator-member-abbrev": "m",
"operator-assignee": "assignee",
"operator-assignee-abbrev": "a",
"operator-member": "ahli",
"operator-member-abbrev": "a",
"operator-assignee": "pemberi tugas",
"operator-assignee-abbrev": "pt",
"operator-creator": "creator",
"operator-status": "status",
"operator-due": "due",
@@ -1033,31 +1033,31 @@
"operator-sort": "sort",
"operator-comment": "comment",
"operator-has": "has",
"operator-limit": "limit",
"operator-limit": "had",
"operator-debug": "debug",
"operator-org": "org",
"operator-team": "team",
"predicate-archived": "archived",
"predicate-open": "open",
"predicate-ended": "ended",
"predicate-all": "all",
"predicate-all": "semua",
"predicate-overdue": "overdue",
"predicate-week": "week",
"predicate-month": "month",
"predicate-quarter": "quarter",
"predicate-year": "year",
"predicate-week": "minggu",
"predicate-month": "bulan",
"predicate-quarter": "suku",
"predicate-year": "tahun",
"predicate-due": "due",
"predicate-modified": "modified",
"predicate-created": "created",
"predicate-attachment": "attachment",
"predicate-description": "description",
"predicate-description": "huraian",
"predicate-checklist": "checklist",
"predicate-start": "start",
"predicate-end": "end",
"predicate-start": "mula",
"predicate-end": "akhir",
"predicate-assignee": "assignee",
"predicate-member": "member",
"predicate-public": "public",
"predicate-private": "private",
"predicate-public": "umum",
"predicate-private": "peribadi",
"predicate-selector": "selector",
"predicate-projection": "projection",
"operator-unknown-error": "%s is not an operator",
@@ -1067,10 +1067,10 @@
"operator-has-invalid": "%s is not a valid existence check",
"operator-limit-invalid": "%s is not a valid limit. Limit should be a positive integer.",
"operator-debug-invalid": "%s is not a valid debug predicate",
"next-page": "Next Page",
"previous-page": "Previous Page",
"heading-notes": "Notes",
"globalSearch-instructions-heading": "Search Instructions",
"next-page": "Halaman Seterusnya",
"previous-page": "Halaman Sebelumnya",
"heading-notes": "Nota-nota",
"globalSearch-instructions-heading": "Cari arahan",
"globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
"globalSearch-instructions-operators": "Available operators:",
"globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*",
@@ -1106,7 +1106,7 @@
"globalSearch-instructions-notes-5": "By default archived cards are not searched.",
"link-to-search": "Link to this search",
"excel-font": "Arial",
"number": "Number",
"number": "Nombor",
"label-colors": "Label Colors",
"label-names": "Label Names",
"archived-at": "archived at",
@@ -1128,8 +1128,8 @@
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"creator": "Pencipta",
"creator-on-minicard": "Pencipta pada kad mini",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1152,27 +1152,27 @@
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"details": "Maklumat",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"ticket": "Tiket",
"tickets": "Tiket-tiket",
"ticket-number": "Nombor Tiket",
"open": "Dibuka",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"closed": "Ditutup",
"resolved": "Selesai",
"cancelled": "Batalkan",
"history": "Sejarah",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"cardDetailsPopup-title": "Maklumat Kad",
"add-teams": "Tambahkan Kumpulan",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"confirm-btn": "Sahkan",
"remove-btn": "Hapus",
"filter-card-title-label": "Filter by card title",
"invite-people-success": "Invitation to register sent with success",
"invite-people-error": "Error while sending invitation to register",
@@ -1200,14 +1200,14 @@
"custom-legal-notice-link-url": "Custom legal notice page URL",
"acceptance_of_our_legalNotice": "By continuing, you accept our",
"legalNotice": "legal notice",
"copied": "Copied!",
"copied": "Disalin!",
"checklistActionsPopup-title": "Checklist Actions",
"moveChecklist": "Move Checklist",
"moveChecklistPopup-title": "Move Checklist",
"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",
"originOrder": "aturan asal",
"copyChecklist": "Copy Checklist",
"copyChecklistPopup-title": "Copy Checklist",
"card-show-lists": "Card Show Lists",
@@ -1223,21 +1223,21 @@
"move-all-attachments-of-board-to-fs": "Move all attachments of board to filesystem",
"move-all-attachments-of-board-to-gridfs": "Move all attachments of board to GridFS",
"move-all-attachments-of-board-to-s3": "Move all attachments of board to S3",
"path": "Path",
"version-name": "Version-Name",
"size": "Size",
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"path": "Haluan",
"version-name": "Versi-Nama",
"size": "Saiz",
"storage": "Simpanan",
"action": "Tindakan",
"board-title": "Tajuk Papan",
"attachmentRenamePopup-title": "Namakan Semula",
"uploading": "Memuat Naik",
"remaining_time": "Masa yang tersisa",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password",
"progress": "Perkembangan",
"password-again": "Kata laluan (semula)",
"if-you-already-have-an-account": "Jika anda sudah mempunyai akaun",
"register": "Daftar",
"forgot-password": "Lupa kata laluan",
"minicardDetailsActionsPopup-title": "Card Details",
"Mongo_sessions_count": "Mongo sessions count",
"change-visibility": "Change Visibility",
@@ -1253,9 +1253,9 @@
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"translation": "Terjemahan",
"text": "Teks",
"translation-text": "Teks terjemahan",
"show-subtasks-field": "Show subtasks field",
"show-week-of-year": "Show week of year (ISO 8601)",
"convert-to-markdown": "Convert to markdown",
+6 -6
View File
@@ -49,7 +49,7 @@
"activity-archived": "%s Arşive taşındı",
"activity-attached": "%s içine %s ekledi",
"activity-created": "%s öğesini oluşturdu",
"activity-changedListTitle": "renamed list to %s",
"activity-changedListTitle": "Liste adı %syapıldı",
"activity-customfield-created": "%s adlı özel alan yaratıldı",
"activity-excluded": "%s içinden %s çıkarttı",
"activity-imported": "%s kaynağından %s öğesini %s öğesinin içine taşıdı",
@@ -86,10 +86,10 @@
"add-card": "Kart Ekle",
"add-card-to-top-of-list": "Listenin Başına Kart Ekle",
"add-card-to-bottom-of-list": "Listenin Sonuna Kart Ekle",
"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",
"setListWidthPopup-title": "Genişlik Ata",
"set-list-width": "Genişlik Ata",
"set-list-width-value": "En Az & En Çok Genişlik (piksel) Ata ",
"list-width-error-message": "Liste genişliği 100'den büyük sayısal bir değer olmalı",
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
"setSwimlaneHeightPopup-title": "Kulvar Uzunluğunu Ayarla",
@@ -300,7 +300,7 @@
"color-white": "beyaz",
"color-yellow": "sarı",
"unset-color": "Seçilmemiş",
"comments": "Comments",
"comments": "Yorumlar",
"comment": "Yorum",
"comment-placeholder": "Yorum Yaz",
"comment-only": "Sadece yorum",
+3 -3
View File
@@ -383,7 +383,7 @@
"email-sent": "Email відправлений",
"email-verifyEmail-subject": "Підтвердіть вашу email адресу на __siteName__",
"email-verifyEmail-text": "Привіт __user__,\n\nЩоб підтвердити ваш акаунт email, просто натисніть на посилання нижче.\n\n__url__\n\nДякуємо.",
"enable-vertical-scrollbars": "Enable vertical scrollbars",
"enable-vertical-scrollbars": "Увімкнути вертикальні скроллбари",
"enable-wip-limit": "Увімкнути ліміт WIP",
"error-board-doesNotExist": "Ця дошка не існує",
"error-board-notAdmin": "Вам потрібно бути адміністратором цієї дошки, щоб зробити це",
@@ -610,7 +610,7 @@
"has-spenttime-cards": "Має картки з витраченим часом",
"time": "Час",
"title": "Назва",
"toggle-assignees": "Toggle assignees 1-9 for card (By order of addition to board).",
"toggle-assignees": "Перемикання призначень 1-9 для картки (за порядком додавання на дошку)",
"toggle-labels": "Перемкнути мітки 1-9 для картки. Мультивибір додає мітки 1-9",
"remove-labels-multiselect": "Мультивибір видаляє мітки 1-9",
"tracking": "Відстеження",
@@ -1257,7 +1257,7 @@
"text": "Текст",
"translation-text": "Перекласти текст",
"show-subtasks-field": "Показати поле підзавдань",
"show-week-of-year": "Show week of year (ISO 8601)",
"show-week-of-year": "Показати тиждень року (ISO 8601)",
"convert-to-markdown": "Конвертувати в Markdown",
"import-board-zip": "Додати файл .zip, який містить файли JSON дошки та підкаталоги з назвами дошок і вкладеннями",
"collapse": "Згорнути",
+15 -15
View File
@@ -86,12 +86,12 @@
"add-card": "Додати картку",
"add-card-to-top-of-list": "Додати картку на початок списку",
"add-card-to-bottom-of-list": "Додати картку у кінець списку",
"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.",
"setListWidthPopup-title": "Встановити ширину",
"set-list-width": "Встановити ширину",
"set-list-width-value": "Встановити мін. та макс. ширину (у пікселях)",
"list-width-error-message": "Ширина списку має бути цілим числом, більшим за 100",
"keyboard-shortcuts-enabled": "Комбінації клавіш увімкнено. Натисніть, щоб вимкнути.",
"keyboard-shortcuts-disabled": "Комбінації клавіш вимкнено. Натисніть, щоб увімкнути.",
"setSwimlaneHeightPopup-title": "Встановити довжину доріжки",
"set-swimlane-height": "Встановити довжину доріжки",
"set-swimlane-height-value": "Висота доріжки (у пікселях)",
@@ -266,9 +266,9 @@
"checklists": "Контрольні списки",
"click-to-star": "Натисніть, щоб відзначити цю дошку зірочкою.",
"click-to-unstar": "Натисніть, щоб видалити зірочку з цієї дошки.",
"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",
"click-to-enable-auto-width": "Автоматична ширина списку вимкнена. Натисніть, щоб увімкнути.",
"click-to-disable-auto-width": "Автоматична ширина списку увімкнена. Натисніть, щоб вимкнути.",
"auto-list-width": "Автоматична ширина списку",
"clipboard": "Буфер обміну або перетягнути і відпустити",
"close": "Закрити",
"close-board": "Закрити дошку",
@@ -383,7 +383,7 @@
"email-sent": "Email відправлений",
"email-verifyEmail-subject": "Підтвердіть вашу email адресу на __siteName__",
"email-verifyEmail-text": "Привіт __user__,\n\nЩоб підтвердити ваш акаунт email, просто натисніть на посилання нижче.\n\n__url__\n\nДякуємо.",
"enable-vertical-scrollbars": "Enable vertical scrollbars",
"enable-vertical-scrollbars": "Увімкнути вертикальні скроллбари",
"enable-wip-limit": "Увімкнути ліміт WIP",
"error-board-doesNotExist": "Ця дошка не існує",
"error-board-notAdmin": "Вам потрібно бути адміністратором цієї дошки, щоб зробити це",
@@ -610,7 +610,7 @@
"has-spenttime-cards": "Має картки з витраченим часом",
"time": "Час",
"title": "Назва",
"toggle-assignees": "Toggle assignees 1-9 for card (By order of addition to board).",
"toggle-assignees": "Перемикання призначень 1-9 для картки (за порядком додавання на дошку)",
"toggle-labels": "Перемкнути мітки 1-9 для картки. Мультивибір додає мітки 1-9",
"remove-labels-multiselect": "Мультивибір видаляє мітки 1-9",
"tracking": "Відстеження",
@@ -1257,7 +1257,7 @@
"text": "Текст",
"translation-text": "Перекласти текст",
"show-subtasks-field": "Показати поле підзавдань",
"show-week-of-year": "Show week of year (ISO 8601)",
"show-week-of-year": "Показати тиждень року (ISO 8601)",
"convert-to-markdown": "Конвертувати в Markdown",
"import-board-zip": "Додати файл .zip, який містить файли JSON дошки та підкаталоги з назвами дошок і вкладеннями",
"collapse": "Згорнути",
@@ -1266,7 +1266,7 @@
"hideAllChecklistItems": "Приховати всі пункти чек-листа",
"support": "Підтримка",
"supportPopup-title": "Підтримка",
"accessibility-page-enabled": "Accessibility page enabled",
"accessibility-title": "Accessibility topic",
"accessibility-content": "Accessibility content"
"accessibility-page-enabled": "Увімкнено сторінку доступності",
"accessibility-title": "Тема доступності",
"accessibility-content": "Доступність контенту"
}
+23 -13
View File
@@ -531,20 +531,30 @@ Cards.helpers({
mapCustomFieldsToBoard(boardId) {
// Map custom fields to new board
return this.customFields.map(cf => {
const oldCf = ReactiveCache.getCustomField(cf._id);
const newCf = ReactiveCache.getCustomField({
boardIds: boardId,
name: oldCf.name,
type: oldCf.type,
});
if (newCf) {
cf._id = newCf._id;
} else if (!_.contains(oldCf.boardIds, boardId)) {
oldCf.addBoard(boardId);
}
return cf;
const oldCf = ReactiveCache.getCustomField(cf._id);
// Check if oldCf is undefined or null
if (!oldCf) {
//console.error(`Custom field with ID ${cf._id} not found.`);
return cf; // Skip this field if oldCf is not found
}
const newCf = ReactiveCache.getCustomField({
boardIds: boardId,
name: oldCf.name,
type: oldCf.type,
});
if (newCf) {
cf._id = newCf._id;
} else if (!_.contains(oldCf.boardIds, boardId)) {
oldCf.addBoard(boardId);
}
return cf;
});
},
},
copy(boardId, swimlaneId, listId) {
const oldId = this._id;
+31 -6
View File
@@ -2,13 +2,38 @@ import { Meteor } from 'meteor/meteor';
import Users from '../users';
function acceptedIpAddress(ipAddress) {
const trustedIpAddress = process.env.WEKAN_METRICS_ACCEPTED_IP_ADDRESS;
const trustedIpAddress = process.env.METRICS_ACCEPTED_IP_ADDRESS;
return (
trustedIpAddress !== undefined &&
trustedIpAddress.split(',').includes(ipAddress)
);
}
function accessToken(req) {
const valid_token = process.env.METRICS_ACCESS_TOKEN;
let token;
if (req.headers && req.headers.authorization) {
var parts = req.headers.authorization.split(" ");
if (parts.length === 2) {
var scheme = parts[0];
var credentials = parts[1];
if (/^Bearer$/i.test(scheme)) {
token = credentials;
}
}
}
if (!token && req.query && req.query.access_token) {
token = req.query.access_token;
}
return (
token !== undefined &&
valid_token !== undefined &&
token == valid_token
);
}
const getBoardTitleWithMostActivities = (dateWithXdaysAgo, nbLimit) => {
return Promise.await(
Activities.rawCollection()
@@ -48,8 +73,8 @@ Meteor.startup(() => {
// const ipAddress = req.socket.remoteAddress
// }
// List of trusted ip adress will be found in environment variable "WEKAN_METRICS_ACCEPTED_IP_ADDRESS" (separeted with commas)
if (acceptedIpAddress(ipAddress)) {
// List of trusted ip adress will be found in environment variable "METRICS_ACCEPTED_IP_ADDRESS" (separeted with commas)
if (acceptedIpAddress(ipAddress) || (accessToken(req))) {
let metricsRes = '';
let resCount = 0;
//connected users
@@ -170,12 +195,12 @@ Meteor.startup(() => {
metricsRes +=
'# Top 10 boards with most activities dated 30 days ago\n';
//Get top 10 table with most activities in current month
//Get top 10 table with most activities in current month
const boardTitleWithMostActivities = getBoardTitleWithMostActivities(
dateWithXdaysAgo,
xdays,
);
const boardWithMostActivities = boardTitleWithMostActivities.map(
(board) => board.lookup[0].title,
);
@@ -185,7 +210,7 @@ Meteor.startup(() => {
`wekan_top10BoardsWithMostActivities{n="${title}"} ${
index + 1
}` + '\n';
});
});
res.writeHead(200); // HTTP status
res.end(metricsRes);
+2
View File
@@ -65,6 +65,8 @@ def get_req_body_elems(obj, elems):
elif obj.type in ('LogicalExpression', 'BinaryExpression', 'AssignmentExpression'):
get_req_body_elems(obj.left, elems)
get_req_body_elems(obj.right, elems)
elif obj.type == 'ChainExpression':
get_req_body_elems(obj.expression, elems)
elif obj.type in ('ReturnStatement', 'UnaryExpression'):
if obj.argument is not None:
get_req_body_elems(obj.argument, elems)
+80 -159
View File
@@ -1,13 +1,13 @@
{
"name": "wekan",
"version": "v7.80.0",
"version": "v7.88.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/runtime": {
"version": "7.25.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
"integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
"integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
"requires": {
"regenerator-runtime": "^0.14.0"
}
@@ -108,6 +108,12 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz",
"integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ=="
},
"@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"optional": true
},
"@wekanteam/dragscroll": {
"version": "git+https://github.com/wekan/dragscroll.git#6ea215c8cdbde9362ecba8ffb72ce9f9fde842d2",
"from": "git+https://github.com/wekan/dragscroll.git"
@@ -600,9 +606,12 @@
}
},
"dompurify": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz",
"integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ=="
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
"integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
"requires": {
"@types/trusted-types": "^2.0.7"
}
},
"domutils": {
"version": "2.8.0",
@@ -1373,16 +1382,15 @@
"integrity": "sha512-SBbbYWvFYvsxHVL+q6ZB8lT3rp2LSvfALD2V52H+MGH2IgJsevy0VtXRkRG0EsUewwOaDTIKBn9DlD8HQ3GSwg=="
},
"meteor-node-stubs": {
"version": "1.2.12",
"resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.2.12.tgz",
"integrity": "sha512-mzp3KI2aGNDhFlCVXPd0pfMr2z9A5vl1AqEgV13/z7AgKwcbd2X+ymE6tpSAMkrrQb40PU9PC2B59bCb6XkAaw==",
"version": "git+https://github.com/wekan/meteor-node-stubs.git#4f2609bc4d9d700ff79424ad4ed8dbf1f06666cb",
"from": "git+https://github.com/wekan/meteor-node-stubs.git",
"requires": {
"@meteorjs/crypto-browserify": "^3.12.1",
"assert": "^2.1.0",
"browserify-zlib": "^0.2.0",
"buffer": "^5.7.1",
"console-browserify": "^1.2.0",
"constants-browserify": "^1.0.0",
"crypto-browserify": "^3.12.0",
"domain-browser": "^4.23.0",
"elliptic": "^6.6.0",
"events": "^3.3.0",
@@ -1398,46 +1406,19 @@
"string_decoder": "^1.3.0",
"timers-browserify": "^2.0.12",
"tty-browserify": "0.0.1",
"url": "^0.11.4",
"url": "^0.11.3",
"util": "^0.12.5",
"vm-browserify": "^1.1.2"
},
"dependencies": {
"@meteorjs/crypto-browserify": {
"version": "3.12.1",
"bundled": true,
"requires": {
"browserify-cipher": "^1.0.1",
"browserify-sign": "^4.2.3",
"create-ecdh": "^4.0.4",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
"diffie-hellman": "^5.0.3",
"hash-base": "~3.0.4",
"inherits": "^2.0.4",
"pbkdf2": "^3.1.2",
"public-encrypt": "^4.0.3",
"randombytes": "^2.1.0",
"randomfill": "^1.0.4"
},
"dependencies": {
"hash-base": {
"version": "3.0.4",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
}
}
},
"asn1.js": {
"version": "4.10.1",
"version": "5.4.1",
"bundled": true,
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
"minimalistic-assert": "^1.0.0",
"safer-buffer": "^2.1.0"
},
"dependencies": {
"bn.js": {
@@ -1513,64 +1494,23 @@
}
},
"browserify-sign": {
"version": "4.2.3",
"version": "4.2.2",
"bundled": true,
"requires": {
"bn.js": "^5.2.1",
"browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
"elliptic": "^6.5.5",
"hash-base": "~3.0",
"elliptic": "^6.5.4",
"inherits": "^2.0.4",
"parse-asn1": "^5.1.7",
"readable-stream": "^2.3.8",
"parse-asn1": "^5.1.6",
"readable-stream": "^3.6.2",
"safe-buffer": "^5.2.1"
},
"dependencies": {
"bn.js": {
"version": "5.2.1",
"bundled": true
},
"hash-base": {
"version": "3.0.4",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"readable-stream": {
"version": "2.3.8",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.2",
"bundled": true
}
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.2",
"bundled": true
}
}
}
}
},
@@ -1598,14 +1538,12 @@
"bundled": true
},
"call-bind": {
"version": "1.0.7",
"version": "1.0.5",
"bundled": true,
"requires": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"set-function-length": "^1.2.1"
"get-intrinsic": "^1.2.1",
"set-function-length": "^1.1.1"
}
},
"cipher-base": {
@@ -1624,10 +1562,6 @@
"version": "1.0.0",
"bundled": true
},
"core-util-is": {
"version": "1.0.3",
"bundled": true
},
"create-ecdh": {
"version": "4.0.4",
"bundled": true,
@@ -1665,13 +1599,30 @@
"sha.js": "^2.4.8"
}
},
"define-data-property": {
"version": "1.1.4",
"crypto-browserify": {
"version": "3.12.0",
"bundled": true,
"requires": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"gopd": "^1.0.1"
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
"create-ecdh": "^4.0.0",
"create-hash": "^1.1.0",
"create-hmac": "^1.1.0",
"diffie-hellman": "^5.0.0",
"inherits": "^2.0.1",
"pbkdf2": "^3.0.3",
"public-encrypt": "^4.0.0",
"randombytes": "^2.0.0",
"randomfill": "^1.0.3"
}
},
"define-data-property": {
"version": "1.1.1",
"bundled": true,
"requires": {
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
}
},
"define-properties": {
@@ -1711,7 +1662,7 @@
"bundled": true
},
"elliptic": {
"version": "6.6.0",
"version": "6.6.1",
"bundled": true,
"requires": {
"bn.js": "^4.11.9",
@@ -1724,22 +1675,11 @@
},
"dependencies": {
"bn.js": {
"version": "4.12.0",
"version": "4.12.1",
"bundled": true
}
}
},
"es-define-property": {
"version": "1.0.0",
"bundled": true,
"requires": {
"get-intrinsic": "^1.2.4"
}
},
"es-errors": {
"version": "1.3.0",
"bundled": true
},
"events": {
"version": "3.3.0",
"bundled": true
@@ -1764,10 +1704,9 @@
"bundled": true
},
"get-intrinsic": {
"version": "1.2.4",
"version": "1.2.2",
"bundled": true,
"requires": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
@@ -1782,10 +1721,10 @@
}
},
"has-property-descriptors": {
"version": "1.0.2",
"version": "1.0.1",
"bundled": true,
"requires": {
"es-define-property": "^1.0.0"
"get-intrinsic": "^1.2.2"
}
},
"has-proto": {
@@ -1882,10 +1821,6 @@
"which-typed-array": "^1.1.11"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true
},
"md5.js": {
"version": "1.3.5",
"bundled": true,
@@ -1918,7 +1853,7 @@
"bundled": true
},
"object-inspect": {
"version": "1.13.2",
"version": "1.13.1",
"bundled": true
},
"object-is": {
@@ -1952,25 +1887,14 @@
"bundled": true
},
"parse-asn1": {
"version": "5.1.7",
"version": "5.1.6",
"bundled": true,
"requires": {
"asn1.js": "^4.10.1",
"browserify-aes": "^1.2.0",
"evp_bytestokey": "^1.0.3",
"hash-base": "~3.0",
"pbkdf2": "^3.1.2",
"safe-buffer": "^5.2.1"
},
"dependencies": {
"hash-base": {
"version": "3.0.4",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
}
"asn1.js": "^5.2.0",
"browserify-aes": "^1.0.0",
"evp_bytestokey": "^1.0.0",
"pbkdf2": "^3.0.3",
"safe-buffer": "^5.1.1"
}
},
"path-browserify": {
@@ -1992,10 +1916,6 @@
"version": "0.11.10",
"bundled": true
},
"process-nextick-args": {
"version": "2.0.1",
"bundled": true
},
"public-encrypt": {
"version": "4.0.3",
"bundled": true,
@@ -2019,10 +1939,10 @@
"bundled": true
},
"qs": {
"version": "6.13.0",
"version": "6.11.2",
"bundled": true,
"requires": {
"side-channel": "^1.0.6"
"side-channel": "^1.0.4"
}
},
"querystring-es3": {
@@ -2065,16 +1985,18 @@
"version": "5.2.1",
"bundled": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true
},
"set-function-length": {
"version": "1.2.2",
"version": "1.1.1",
"bundled": true,
"requires": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"define-data-property": "^1.1.1",
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2"
"has-property-descriptors": "^1.0.0"
}
},
"setimmediate": {
@@ -2090,13 +2012,12 @@
}
},
"side-channel": {
"version": "1.0.6",
"version": "1.0.4",
"bundled": true,
"requires": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
"object-inspect": "^1.13.1"
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
}
},
"stream-browserify": {
@@ -2136,11 +2057,11 @@
"bundled": true
},
"url": {
"version": "0.11.4",
"version": "0.11.3",
"bundled": true,
"requires": {
"punycode": "^1.4.1",
"qs": "^6.12.3"
"qs": "^6.11.2"
}
},
"util": {
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v7.80.0",
"version": "v7.88.0",
"description": "Open-Source kanban",
"private": true,
"repository": {
@@ -17,7 +17,7 @@
"sinon": "^13.0.2"
},
"dependencies": {
"@babel/runtime": "^7.25.0",
"@babel/runtime": "^7.26.10",
"@mapbox/node-pre-gyp": "^1.0.10",
"@rwap/jquery-ui-touch-punch": "^1.0.11",
"@wekanteam/dragscroll": "https://github.com/wekan/dragscroll.git",
@@ -28,7 +28,7 @@
"ajv": "^6.12.6",
"bcryptjs": "^2.4.3",
"bson": "^4.5.2",
"dompurify": "^2.5.6",
"dompurify": "^3.2.4",
"es6-promise": "^4.2.4",
"escape-string-regexp": "^5.0.0",
"fibers": "^5.0.3",
@@ -44,7 +44,7 @@
"markdown-it-emoji": "^2.0.0",
"markdown-it-mathjax3": "^4.3.2",
"meteor-accounts-t9n": "^2.6.0",
"meteor-node-stubs": "^1.2.12",
"meteor-node-stubs": "https://github.com/wekan/meteor-node-stubs.git",
"minio": "^7.1.3",
"moment": "^2.29.4",
"os": "^0.1.2",
+3229 -8254
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v7.80
version: v7.88
description: |
The REST API allows you to control and extend Wekan with ease.
+524
View File
@@ -0,0 +1,524 @@
{
"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": "standalone",
"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": [
"standalone"
]
}
-2
View File
@@ -513,10 +513,8 @@
"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": [
"standalone"
+6 -4
View File
@@ -15,7 +15,8 @@ fi
if [ ! -d ~/python/esprima-python ]; then
sudo apt-get -y install python3-pip python3-swagger-spec-validator python3-wheel python3-setuptools
sudo npm install -g api2html
# Install older version of api2html that works with Node.js 14
sudo npm install -g api2html@0.3.0 || sudo npm install -g swagger-ui-watcher
(mkdir -p ~/python && cd ~/python && git clone --depth 1 -b master https://github.com/Kronuz/esprima-python)
(cd ~/python/esprima-python && git fetch origin pull/20/head:delete_fix && git checkout delete_fix && sudo python3 setup.py install --record files.txt)
#(cd ~/python/esprima-python && git fetch origin pull/20/head:delete_fix && git checkout delete_fix && sudo pip3 install .)
@@ -38,10 +39,11 @@ if [ ! -d public/api ]; then
mkdir -p public/api
fi
# 4) Generate docs.
#python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
# 4) Generate docs with api2html or fallback to swagger-ui-watcher
python3 ./openapi/generate_openapi.py --release v$1 > ./public/api/wekan.yml
api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
if ! api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; then
swagger-ui-watcher ./public/api/wekan.yml -p 8080
fi
# Copy docs to bundle
#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/
+2 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 780,
appVersion = 788,
# Increment this for every release.
appMarketingVersion = (defaultText = "7.80.0~2025-01-12"),
appMarketingVersion = (defaultText = "7.88.0~2025-04-25"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+5 -5
View File
@@ -1,5 +1,5 @@
name: wekan
version: '7.80'
version: '7.88'
base: core20
summary: Open Source kanban
description: |
@@ -65,7 +65,7 @@ apps:
parts:
mongodb:
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.19.tgz
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.22.tgz
plugin: dump
stage-packages:
- libssl1.1
@@ -170,9 +170,9 @@ parts:
# Cleanup
mkdir .build
cd .build
wget https://github.com/wekan/wekan/releases/download/v7.80/wekan-7.80-amd64.zip
unzip wekan-7.80-amd64.zip
rm wekan-7.80-amd64.zip
wget https://github.com/wekan/wekan/releases/download/v7.88/wekan-7.88-amd64.zip
unzip wekan-7.88-amd64.zip
rm wekan-7.88-amd64.zip
cd ..
##cd .build/bundle
##find . -type d -name '*-garbage*' | xargs rm -rf
+3
View File
@@ -459,6 +459,9 @@ REM # example : LDAP_BACKGROUND_SYNC=true
REM SET LDAP_BACKGROUND_SYNC=false
REM # LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
REM # The format must be as specified in:
REM # https://bunkat.github.io/later/parsers.html#text
REM SET LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hours
REM # At which interval does the background task sync in milliseconds.
REM # Leave this unset, so it uses default, and does not crash.
REM # https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
+3
View File
@@ -385,6 +385,9 @@
#export LDAP_BACKGROUND_SYNC=false
#
# 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
#export 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