diff --git a/CHANGELOG.md b/CHANGELOG.md index b576e7262..8595dc3b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +# v4.87 2021-01-26 Wekan release + +This release fixes the following bugs: + +- [Reject by default LDAP connections not authorized via CA trust store](https://github.com/wekan/wekan/pull/3483). + Thanks to robert-scheck. +- [Handle '\n' line breaks in PEM-encoded SSL/TLS certificates](https://github.com/wekan/wekan/pull/3485). + Thanks to robert-scheck. + +and adds the following improvements + +- [Try parallel build of releases, does it work](https://github.com/wekan/wekan/commit/be238ac7439ce38b4403d9a611dec9bb421a856f). + Thanks to xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + +# v4.86 2021-01-25 Wekan release + +This release adds the following improvements: + +- [Added PWA related category, orientation, screenshots, maskable icon and + IARC rating ID](https://github.com/wekan/wekan/commit/027771b3021a709d9049015e7d7e6faccf1ad7f3). + Thanks to xet7. +- [Added PWA related monochrome icon](https://github.com/wekan/wekan/commit/2977f7cf47626b429159cb7b7496919c07ece914). + Thanks to xet7. +- [Mention Wekan GitHub Discussions at readme](https://github.com/wekan/wekan/commit/4c0bd359f921ae0ea722f78946fcc1168e8b939e). + Thanks to xet7. + +and adds the following updates: + +- [Use Node 12.20.1 in rebuild-wekan.sh](https://github.com/wekan/wekan/commit/37d76e9e061d31c11fca8e704e9b4c54f17c0023). + Thanks to xet7. + +and fixes the following bugs: + +- [Move call to URL search to onRendered](https://github.com/wekan/wekan/pull/3478). + Thanks to jrsupplee. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.85 2021-01-23 Wekan release This release adds the following new features: diff --git a/README.md b/README.md index e340bc6ad..3c384785c 100644 --- a/README.md +++ b/README.md @@ -20,13 +20,12 @@ New English strings of new features can be added as PRs to edge branch file weka ## [Wekan feature requests and bugs](https://github.com/wekan/wekan/issues) -Please add most of your questions as GitHub issue: [Wekan feature requests and bugs](https://github.com/wekan/wekan/issues). +Please add most of your questions as GitHub issue: [Wekan Feature Requests and Bugs](https://github.com/wekan/wekan/issues). It's better than at chat where details get lost when chat scrolls up. ## Chat -[![Wekan Chat][vanila_badge]][wekan_chat] - Most Wekan community and developers are here. Works on webbrowser -and PWA app that can be added as icon on Android and bookmark on iOS, used like native app. +[Discussions][discussions] - Wekan Community GitHub Discussions, that are not [Feature Requests and Bugs](https://github.com/wekan/wekan/issues). [Wekan IRC FAQ](https://github.com/wekan/wekan/wiki/IRC-FAQ) @@ -114,8 +113,6 @@ with [Meteor](https://www.meteor.com). [translate_wekan]: https://www.transifex.com/wekan/wekan/ [open_source]: https://en.wikipedia.org/wiki/Open-source_software [free_software]: https://en.wikipedia.org/wiki/Free_software -[vanila_badge]: https://vanila.io/img/join-chat-button2.png -[wekan_chat]: https://community.vanila.io/wekan - +[discussions]: https://github.com/wekan/wekan/discussions [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_large) diff --git a/Stackerfile.yml b/Stackerfile.yml index 70ba308e4..4fe04aaf7 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.85.0" +appVersion: "v4.87.0" files: userUploads: - README.md diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index 4e60448e9..70a6b884d 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -902,7 +902,7 @@ "operator-number-expected": "Operator „__operator__“ erwartete eine Zahl, bekam aber „__value__“", "heading-notes": "Bemerkungen", "globalSearch-instructions-heading": "Hinweise zur Suche", - "globalSearch-instructions-description": "Suchanfragen können Operatoren enthalten, um die Suche zu verfeinern. Operatoren bestehen aus ihrem Namen und ihrem Wert, getrennt durch einen Doppelpunkt. Beispielsweise würde die Operatorangabe `list:Blockiert` die Suche beschränken auf Karten in einer Liste namens *Blockiert*. Wenn der Wet Leerschritte oder andere Spezialzeichen enthält, muss er in Anführungszeichen gesetzt sein (z.B. `__operator_list__:\"Im Review\"`).", + "globalSearch-instructions-description": "Suchanfragen können Operatoren enthalten, um die Suche zu verfeinern. Operatoren bestehen aus ihrem Namen und ihrem Wert, getrennt durch einen Doppelpunkt. Beispielsweise würde die Operatorangabe `Liste:Blockiert` die Suche beschränken auf Karten in einer Liste namens *Blockiert*. Wenn der Wert Leerschritte oder andere Spezialzeichen enthält, muss er in Anführungszeichen gesetzt sein (z.B. `__operator_list__:\"Im Review\"`).", "globalSearch-instructions-operators": "Mögliche Operatoren:", "globalSearch-instructions-operator-board": "`__operator_board__:Titel` – Karten in Boards mit dem angegebenen Titel", "globalSearch-instructions-operator-list": "`__operator_list__:Titel` – Karten in Listen, auf die der angegebene Titel passt", @@ -910,12 +910,12 @@ "globalSearch-instructions-operator-label": "`__operator_label__:Farbe` `__operator_label__:Name` – Karten, die ein Label haben, auf das die angegebene Farbe oder Name passt", "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__Label` – Kurzform von `__operator_label__:Label`", "globalSearch-instructions-operator-user": "`__operator_user__:Nutzername` – Karten, für die der angegebene Nutzer ein *Mitglied* oder ein *Zugewiesener* ist", - "globalSearch-instructions-operator-at": "`__operator_user_abbrev__Nutzername` – Kurzform von `user:Nutzername`", + "globalSearch-instructions-operator-at": "`__operator_user_abbrev__Nutzername` – Kurzform von `Nutzer:Nutzername`", "globalSearch-instructions-operator-member": "`__operator_member__:Nutzername` – Karten, für die der angegebene Nutzer ein *Mitglied* ist", - "globalSearch-instructions-operator-assignee": "`__operator_member__:Nutzername` – Karten, für die der angegebene Nutzer ein *Zugewiesener* ist", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:Nutzername` – Karten, für die der angegebene Nutzer ein *Zugewiesener* ist", "globalSearch-instructions-notes-1": "Mehrere Operatoren können angegeben werden.", "globalSearch-instructions-notes-2": "Gleichartige Operatoren werden Oder-verknüpft. Karten, für die eine Bedingung zutrifft, werden ausgegeben.\n`__operator_list__:Verfügbar __operator_list__:Blockiert` würde alle Karten ausgeben, die in irgendwelchen Listen mit den Namen *Verfügbar* oder *Blockiert* stehen.", - "globalSearch-instructions-notes-3": "Verschiedenartige Operatoren werden Und-verknüpft. Karten, für die alle Bedingungen zutreffen, werden ausgegeben.\n`__operator_list__:Verfügbar __operator_label__:red` würde alle Karten ausgeben, die in der Liste *Verfügbar* mit einem *roten* Label stehen.", + "globalSearch-instructions-notes-3": "Verschiedenartige Operatoren werden Und-verknüpft. Karten, für die alle Bedingungen zutreffen, werden ausgegeben.\n`__operator_list__:Verfügbar __operator_label__:rot` würde alle Karten ausgeben, die in der Liste *Verfügbar* mit einem *roten* Label stehen.", "globalSearch-instructions-notes-4": "Bei Suchen in Texten ist die Groß-/Kleinschreibung egal.", "globalSearch-instructions-notes-5": "Zur Zeit werden keine archivierten Karten gefunden.", "link-to-search": "Link auf diese Suche", diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 92ce63a9e..c924a9e82 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -601,8 +601,8 @@ "minutes": "minutes", "seconds": "secondes", "show-field-on-card": "Afficher ce champ sur la carte", - "automatically-field-on-card": "Add field to new cards", - "always-field-on-card": "Add field to all cards", + "automatically-field-on-card": "Ajouter le champ aux cartes nouvellement créées", + "always-field-on-card": "Ajouter le champ à toutes les cartes", "showLabel-field-on-card": "Indiquer l'étiquette du champ sur la mini-carte", "yes": "Oui", "no": "Non", diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 01561e2eb..bfe9eef85 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -601,8 +601,8 @@ "minutes": "דקות", "seconds": "שניות", "show-field-on-card": "הצגת שדה זה בכרטיס", - "automatically-field-on-card": "Add field to new cards", - "always-field-on-card": "Add field to all cards", + "automatically-field-on-card": "הוספת שדה לכרטיסים חדשים", + "always-field-on-card": "הוספת שדה לכל הכרטיסים", "showLabel-field-on-card": "הצגת תווית של השדה בכרטיס מוקטן", "yes": "כן", "no": "לא", diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index b40e92152..173fcb833 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -601,8 +601,8 @@ "minutes": "minut", "seconds": "sekund", "show-field-on-card": "Pokaż te pole na karcie", - "automatically-field-on-card": "Add field to new cards", - "always-field-on-card": "Add field to all cards", + "automatically-field-on-card": "Dodaj pole do nowych kart", + "always-field-on-card": "Dodaj pole do wszystkich kart", "showLabel-field-on-card": "Pokaż pole etykiety w minikarcie", "yes": "Tak", "no": "Nie", @@ -896,10 +896,10 @@ "operator-assignee-abbrev": "p", "operator-is": "jest", "operator-due": "wykonania", - "operator-created": "created", - "operator-modified": "modified", + "operator-created": "stworzono", + "operator-modified": "zmodyfikowano", "operator-unknown-error": "%s nie jest operatorem", - "operator-number-expected": "operator __operator__ expected a number, got '__value__'", + "operator-number-expected": "operator __operator__ oczekiwał wartości cyfrowej, otrzymał '__value__'", "heading-notes": "Notatki", "globalSearch-instructions-heading": "Instrukcja wyszukiwania", "globalSearch-instructions-description": "W wyszukiwanym ciągu można umieszczać specjalne klucze, aby doprecyzować zapytanie. Klucz składa się z operatora i argumentu, rozdzielonych dwukropkiem. Na przykład klucz `lista:Wstrzymane` zawęża wyszukiwanie do kart znajdujących się na listach o nazwie *Wstrzymane*. Jeśli argument zawiera spacje lub znaki specjalne, należy go umieścić w cudzysłowie, np. `__operator_list__:\"Do uzgodnienia\"`.", @@ -921,6 +921,6 @@ "link-to-search": "Link do tego wyszukiwania", "excel-font": "Arial", "number": "Numer", - "label-colors": "Label Colors", - "label-names": "Label Names" + "label-colors": "Kolory etykiet", + "label-names": "Nazwy etykiet" } diff --git a/package-lock.json b/package-lock.json index 5d6a605d9..ab2ea22b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.85.0", + "version": "v4.87.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d4737b4dc..cf65d567c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.85.0", + "version": "v4.87.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/packages/wekan-ldap/server/ldap.js b/packages/wekan-ldap/server/ldap.js index f2d9a7b72..fb522e2f3 100644 --- a/packages/wekan-ldap/server/ldap.js +++ b/packages/wekan-ldap/server/ldap.js @@ -19,7 +19,7 @@ export default class LDAP { idle_timeout : this.constructor.settings_get('LDAP_IDLE_TIMEOUT'), encryption : this.constructor.settings_get('LDAP_ENCRYPTION'), ca_cert : this.constructor.settings_get('LDAP_CA_CERT'), - reject_unauthorized : this.constructor.settings_get('LDAP_REJECT_UNAUTHORIZED') || false, + reject_unauthorized : this.constructor.settings_get('LDAP_REJECT_UNAUTHORIZED') || true, Authentication : this.constructor.settings_get('LDAP_AUTHENTIFICATION'), Authentication_UserDN : this.constructor.settings_get('LDAP_AUTHENTIFICATION_USERDN'), Authentication_Password : this.constructor.settings_get('LDAP_AUTHENTIFICATION_PASSWORD'), @@ -100,7 +100,7 @@ export default class LDAP { if (this.options.ca_cert && this.options.ca_cert !== '') { // Split CA cert into array of strings - const chainLines = this.constructor.settings_get('LDAP_CA_CERT').split('\n'); + const chainLines = this.constructor.settings_get('LDAP_CA_CERT').replace(/\\n/g,'\n').split('\n'); let cert = []; const ca = []; chainLines.forEach((line) => { diff --git a/public/api/wekan.html b/public/api/wekan.html index 993fc5a1c..723e6aa29 100644 --- a/public/api/wekan.html +++ b/public/api/wekan.html @@ -1524,7 +1524,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc