From fb163a24939e97756ac91361893c55ec760355fa Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 26 Mar 2019 15:13:35 +0100 Subject: list: simplify infinite scrolling Use IntersectionObserver instead of custom made one. This adds the benefit of not loading any extra cards if the list is not shown on screen --- client/components/lists/listBody.js | 61 +++++++++++-------------------------- 1 file changed, 17 insertions(+), 44 deletions(-) diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 7d767011..006f8f0d 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -8,25 +8,25 @@ BlazeComponent.extendComponent({ }, onRendered() { - const domElement = this.find('.js-perfect-scrollbar'); - - this.$(domElement).on('scroll', () => this.updateList(domElement)); - $(window).on(`resize.${this.data().listId}`, () => this.updateList(domElement)); - - // we add a Mutation Observer to allow propagations of cardlimit - // when the spinner stays in the current view (infinite scrolling) - this.mutationObserver = new MutationObserver(() => this.updateList(domElement)); - - this.mutationObserver.observe(domElement, { - childList: true, - }); + const spinner = this.find('.sk-spinner-list'); - this.updateList(domElement); - }, + if (spinner) { + const options = { + root: null, // we check if the spinner is on the current viewport + rootMargin: '0px', + threshold: 0.25, + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); + } + }); + }, options); - onDestroyed() { - $(window).off(`resize.${this.data().listId}`); - this.mutationObserver.disconnect(); + observer.observe(spinner); + } }, mixins() { @@ -191,38 +191,11 @@ BlazeComponent.extendComponent({ }); }, - spinnerInView(container) { - const parentViewHeight = container.clientHeight; - const bottomViewPosition = container.scrollTop + parentViewHeight; - - const spinner = this.find('.sk-spinner-list'); - - const threshold = spinner.offsetTop; - - return bottomViewPosition > threshold; - }, - showSpinner(swimlaneId) { const list = Template.currentData(); return list.cards(swimlaneId).count() > this.cardlimit.get(); }, - updateList(container) { - // first, if the spinner is not rendered, we have reached the end of - // the list of cards, so skip and disable firing the events - const target = this.find('.sk-spinner-list'); - if (!target) { - this.$(container).off('scroll'); - $(window).off(`resize.${this.data().listId}`); - return; - } - - if (this.spinnerInView(container)) { - this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); - Ps.update(container); - } - }, - canSeeAddCard() { return !this.reachedWipLimit() && Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); }, -- cgit v1.2.3-1-g7c22 From 00376b43f82b1b751974e827931373595c40c0f7 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 26 Mar 2019 15:54:53 +0100 Subject: list: make sure the spinner of infinite scrolling doesn't show on load When loading a board on a high resolution screen, there is a chance there is not enough cards displayed and the spinner is still there, spinning forever. Add an idle callback that checks if the spinner is still there, and while it is there, extend the number of cards to show. Fixes #2250 --- client/components/lists/listBody.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 006f8f0d..d6a62cc9 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -5,6 +5,7 @@ BlazeComponent.extendComponent({ onCreated() { // for infinite scrolling this.cardlimit = new ReactiveVar(InfiniteScrollIter); + this.spinnerShown = false; }, onRendered() { @@ -19,9 +20,8 @@ BlazeComponent.extendComponent({ const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { - if (entry.isIntersecting) { - this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); - } + this.spinnerShown = entry.isIntersecting; + this.updateList(); }); }, options); @@ -29,6 +29,13 @@ BlazeComponent.extendComponent({ } }, + updateList() { + if (this.spinnerShown) { + this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); + window.requestIdleCallback(() => this.updateList()); + } + }, + mixins() { return [Mixins.PerfectScrollbar]; }, -- cgit v1.2.3-1-g7c22 From cbb6c82113782c1ef235668ffb3c708431f6b400 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 26 Mar 2019 16:20:59 +0100 Subject: list: move the spinner into its own blaze component This way, when a list is at the maximum number of cards shown and adding a new card would make the spinner appear, the list would load the next N items. This can happen if user A and B are both looking at the same board, B adds a new cards, and A will see the spinner and will not be able to remove it. --- client/components/lists/listBody.jade | 19 +++++----- client/components/lists/listBody.js | 65 +++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/client/components/lists/listBody.jade b/client/components/lists/listBody.jade index 876b43d6..61fec93a 100644 --- a/client/components/lists/listBody.jade +++ b/client/components/lists/listBody.jade @@ -13,14 +13,7 @@ template(name="listBody") class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}") +minicard(this) if (showSpinner (idOrNull ../../_id)) - .sk-spinner.sk-spinner-wave.sk-spinner-list( - class=currentBoard.colorClass - id="showMoreResults") - .sk-rect1 - .sk-rect2 - .sk-rect3 - .sk-rect4 - .sk-rect5 + +spinnerList if canSeeAddCard +inlinedForm(autoclose=false position="bottom") @@ -30,6 +23,16 @@ template(name="listBody") i.fa.fa-plus | {{_ 'add-card'}} +template(name="spinnerList") + .sk-spinner.sk-spinner-wave.sk-spinner-list( + class=currentBoard.colorClass + id="showMoreResults") + .sk-rect1 + .sk-rect2 + .sk-rect3 + .sk-rect4 + .sk-rect5 + template(name="addCardForm") .minicard.minicard-composer.js-composer if getLabels diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index d6a62cc9..2e6591e2 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -5,35 +5,6 @@ BlazeComponent.extendComponent({ onCreated() { // for infinite scrolling this.cardlimit = new ReactiveVar(InfiniteScrollIter); - this.spinnerShown = false; - }, - - onRendered() { - const spinner = this.find('.sk-spinner-list'); - - if (spinner) { - const options = { - root: null, // we check if the spinner is on the current viewport - rootMargin: '0px', - threshold: 0.25, - }; - - const observer = new IntersectionObserver((entries) => { - entries.forEach((entry) => { - this.spinnerShown = entry.isIntersecting; - this.updateList(); - }); - }, options); - - observer.observe(spinner); - } - }, - - updateList() { - if (this.spinnerShown) { - this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); - window.requestIdleCallback(() => this.updateList()); - } }, mixins() { @@ -641,3 +612,39 @@ BlazeComponent.extendComponent({ }]; }, }).register('searchElementPopup'); + +BlazeComponent.extendComponent({ + onCreated() { + this.spinnerShown = false; + this.cardlimit = this.parentComponent().cardlimit; + }, + + onRendered() { + const spinner = this.find('.sk-spinner-list'); + + if (spinner) { + const options = { + root: null, // we check if the spinner is on the current viewport + rootMargin: '0px', + threshold: 0.25, + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach((entry) => { + this.spinnerShown = entry.isIntersecting; + this.updateList(); + }); + }, options); + + observer.observe(spinner); + } + }, + + updateList() { + if (this.spinnerShown) { + this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); + window.requestIdleCallback(() => this.updateList()); + } + }, + +}).register('spinnerList'); -- cgit v1.2.3-1-g7c22 From e2d0faa539e287247ccd1208fe74705169749210 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 26 Mar 2019 16:22:55 +0100 Subject: list: disconnect infinite-scroll observer to prevent memory leak --- client/components/lists/listBody.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 2e6591e2..112b6379 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -629,17 +629,21 @@ BlazeComponent.extendComponent({ threshold: 0.25, }; - const observer = new IntersectionObserver((entries) => { + this.observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { this.spinnerShown = entry.isIntersecting; this.updateList(); }); }, options); - observer.observe(spinner); + this.observer.observe(spinner); } }, + onDestroyed() { + this.observer.disconnect(); + }, + updateList() { if (this.spinnerShown) { this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); -- cgit v1.2.3-1-g7c22 From b0d507c2dda4f6630937db09cf235c8a478f2a3e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 27 Mar 2019 17:38:54 +0200 Subject: [Fixes the following bugs](https://github.com/wekan/wekan/pull/2287): - [#2250 -> the spinner could be shown on startup and never goes away](https://github.com/wekan/wekan/issues/2250). - The code will now only load extra cards that will be in the current viewport. - When 2 users were interacting on the same board, there was a situation where the spinner could show up on the other user, without being able to load the extra cards. - The code is now much simpler, thanks to the IntersectionObserver, and all of this for fewer lines of code :) Thanks to bentiss with Apache I-CLA ! Closes #2250 --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f457bdb6..9042add4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# Upcoming Wekan release + +This release [fixes the following bugs](https://github.com/wekan/wekan/pull/2287), thanks to bentiss with Apache I-CLA: + +- [#2250 -> the spinner could be shown on startup and never goes away](https://github.com/wekan/wekan/issues/2250). +- The code will now only load extra cards that will be in the current viewport. +- When 2 users were interacting on the same board, there was a situation where the spinner could show up on the other user, without being able to load the extra cards. +- The code is now much simpler, thanks to the IntersectionObserver, and all of this for fewer lines of code :) + +Thanks to above GitHub users for their contributions and translators for their translations. + # v2.55 2019-03-25 Wekan release This release fixes the following bugs, thanks to bentiss with Apache I-CLA: -- cgit v1.2.3-1-g7c22 From ad1a81e8a01408b542a508cf3968152d8b753680 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 27 Mar 2019 17:46:09 +0200 Subject: Update translations. --- i18n/de.i18n.json | 2 +- i18n/es.i18n.json | 8 ++++---- i18n/fr.i18n.json | 2 +- i18n/he.i18n.json | 12 ++++++------ i18n/pl.i18n.json | 8 ++++---- i18n/tr.i18n.json | 14 +++++++------- 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index 58229e1e..c94ac1d2 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -18,7 +18,7 @@ "act-uncompleteChecklist": "unvollendete Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__", "act-addComment": "kommentierte eine Karte __card__: __comment__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__", "act-createBoard": "hat Board __board__ erstellt", - "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createSwimlane": "erstellte Swimlane __swimlane__ auf Board __board__", "act-createCard": "erstellte Karte __card__ auf Liste __list__ bei Swimlane __swimlane__ an Board __board__", "act-createCustomField": "erstellte ein benutzerdefiniertes Feld __customField__ für Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__", "act-createList": "hat Liste __list__ zu Board __board__ hinzugefügt", diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 18d5747e..e09c68bb 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -17,10 +17,10 @@ "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-createBoard": "creado el tablero __board__", - "act-createSwimlane": "created swimlane __swimlane__ to board __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__", - "act-createCustomField": "creado el campo personalizado __customField__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__", + "act-createCustomField": "creó el campo personalizado __customField__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__", "act-createList": "añadida la lista __list__ al tablero __board__", "act-addBoardMember": "añadido el mimbro __member__ al tablero __board__", "act-archivedBoard": "El tablero __board__ se ha movido a Archivo", @@ -45,7 +45,7 @@ "activity-archived": "%s movido a Archivo", "activity-attached": "ha adjuntado %s a %s", "activity-created": "ha creado %s", - "activity-customfield-created": "creado el campo personalizado %s", + "activity-customfield-created": "creó el campo personalizado %s", "activity-excluded": "ha excluido %s de %s", "activity-imported": "ha importado %s a %s desde %s", "activity-imported-board": "ha importado %s desde %s", diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 22868b52..f5b3faab 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -18,7 +18,7 @@ "act-uncompleteChecklist": "a rendu incomplet la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__", "act-addComment": "a commenté la carte __card__ : __comment__ dans la liste __list__ du couloir __swimlane__ du tableau __board__", "act-createBoard": "a créé le tableau __board__", - "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createSwimlane": "a créé le couloir __swimlane__ dans le tableau __board__", "act-createCard": "a créé la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__", "act-createCustomField": "a créé le champ personnalisé __customField__ pour la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__", "act-createList": "a ajouté la liste __list__ au tableau __board__", diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 5c1d5ecd..489b4f61 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -8,9 +8,9 @@ "act-addedLabel": "התווית __label__ נוספה לכרטיס __card__ ברשימה __list__ למסלול __swimlane__ שבלוח __board__", "act-removeLabel": "התווית __label__ הוסרה מהכרטיס __card__ ברשימה __list__ מהמסלול __swimlane__ שבלוח __board__", "act-removedLabel": "התווית __label__ הוסרה מהכרטיס __card__ ברשימה __list__ מהמסלול __swimlane__ שבלוח __board__", - "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklist": "נוספה רשימת מטלות __checklist__ לכרטיס __card__ ברשימה __list__ שבמסלול __swimlane__ בלוח __board__", "act-addChecklistItem": "נוסף פריט סימון __checklistItem__ לרשימת המטלות __checklist__ לכרטיס __card__ ברשימה __list__ במסלול __swimlane__ בלוח __board__", - "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklist": "הוסרה רשימת מטלות __checklist__ מהכרטיס __card__ ברשימה __list__ שבמסלול __swimlane__ בלוח __board__", "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", @@ -18,9 +18,9 @@ "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", "act-createBoard": "הלוח __board__ נוצר", - "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createSwimlane": "נוצר מסלול __swimlane__ בלוח __board__", "act-createCard": "הכרטיס __card__ נוצר ברשימה __list__ במסלול __swimlane__ שבלוח __board__", - "act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createCustomField": "נוצר שדה בהתאמה אישית __customField__ בכרטיס __card__ שברשימה __list__ במסלול __swimlane__ שבלוח __board__", "act-createList": "הרשימה __list__ נוספה ללוח __board__", "act-addBoardMember": "החבר __member__ נוסף אל __board__", "act-archivedBoard": "הלוח __board__ הועבר לארכיון", @@ -571,8 +571,8 @@ "activity-added-label-card": "התווית ‚%s’ נוספה", "activity-removed-label-card": "התווית ‚%s’ הוסרה", "activity-delete-attach-card": "קובץ מצורף נמחק", - "activity-set-customfield": "set custom field '%s' to '%s' in %s", - "activity-unset-customfield": "unset custom field '%s' in %s", + "activity-set-customfield": "הגדרת שדה בהתאמה אישית ‚%s’ לערך ‚%s’ תחת %s", + "activity-unset-customfield": "ביטול הגדרת שדה בהתאמה אישית ‚%s’ תחת %s", "r-rule": "כלל", "r-add-trigger": "הוספת הקפצה", "r-add-action": "הוספת פעולה", diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index d25d5aee..b8235f13 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -18,7 +18,7 @@ "act-uncompleteChecklist": "Wycofano ukończenie wykonania listy __checklist__ na karcie __card__ na liście __list__ na diagramie czynności__ na tablicy __board__", "act-addComment": "Dodano komentarz na karcie __card__: __comment__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__", "act-createBoard": "Utworzono tablicę __board__", - "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createSwimlane": "utworzono diagram czynności __swimlane__ na tablicy __board__", "act-createCard": "Utworzono kartę __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__", "act-createCustomField": "Utworzono niestandardowe pole __customField__ na karcie __card__ na liście __list__ na diagramie czynności__ na tablicy __board__", "act-createList": "Dodano listę __list__ do tablicy __board__", @@ -31,7 +31,7 @@ "act-importCard": "Zaimportowano kartę __card__ do listy __list__ na diagramie czynności __swimlane__ na tablicy __board__", "act-importList": "Zaimportowano listę __list__ na diagram czynności __swimlane__ do tablicy __board__", "act-joinMember": "Dodano użytkownika __member__ do karty __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__", - "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__", + "act-moveCard": "przeniesiono kartę __card__ na tablicy __board__ z listy __oldList__ na diagramie czynności __oldSwimlane__ na listę __list__ na diagramie czynności __swimlane__", "act-moveCardToOtherBoard": "Przeniesiono kartę __card__ z listy __oldList__ na diagramie czynności __oldSwimlane__ na tablicy __oldBoard__ do listy __listy__ na diagramie czynności __swimlane__ na tablicy __board__", "act-removeBoardMember": "Usunięto użytkownika __member__ z tablicy __board__", "act-restoredCard": "Przywrócono kartę __card__ na listę __list__ na diagram czynności__ na tablicy __board__", @@ -571,8 +571,8 @@ "activity-added-label-card": "dodał(a) etykietę '%s'", "activity-removed-label-card": "usunięto etykietę '%s'", "activity-delete-attach-card": "usunięto załącznik", - "activity-set-customfield": "set custom field '%s' to '%s' in %s", - "activity-unset-customfield": "unset custom field '%s' in %s", + "activity-set-customfield": "ustawiono niestandardowe pole '%s' do '%s' na '%s'", + "activity-unset-customfield": "wyczyszczono niestandardowe pole '%s' na '%s'", "r-rule": "Reguła", "r-add-trigger": "Dodaj przełącznik", "r-add-action": "Dodaj czynność", diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index ca1761b3..6f626453 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -17,17 +17,17 @@ "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-createBoard": "created board __board__", - "act-createSwimlane": "created swimlane __swimlane__ to board __board__", - "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-createBoard": "__board__ panosu oluşturuldu", + "act-createSwimlane": "__board__ panosuna __swimlane__ kulvarı oluşturuldu", + "act-createCard": "__board__ panosunun __swimlane__ kulvarının __list__ listesinin __card__ kartı oluşturuldu", "act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-createList": "added list __list__ to board __board__", - "act-addBoardMember": "added member __member__ to board __board__", - "act-archivedBoard": "Board __board__ moved to Archive", + "act-addBoardMember": "__board__ panosuna __member__ kullanıcısı eklendi", + "act-archivedBoard": "__board__ panosu Arşiv'e taşındı", "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive", "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive", "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive", - "act-importBoard": "imported board __board__", + "act-importBoard": "__board__ panosu içeriye aktarıldı", "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__", "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__", "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", @@ -125,7 +125,7 @@ "boardChangeTitlePopup-title": "Panonun Adını Değiştir", "boardChangeVisibilityPopup-title": "Görünebilirliği Değiştir", "boardChangeWatchPopup-title": "İzleme Durumunu Değiştir", - "boardMenuPopup-title": "Board Settings", + "boardMenuPopup-title": "Pano Ayarları", "boards": "Panolar", "board-view": "Pano Görünümü", "board-view-cal": "Takvim", -- cgit v1.2.3-1-g7c22 From 494d44f8bb6c575161449c42c100999cf0aa648f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 27 Mar 2019 17:51:54 +0200 Subject: v2.56 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package.json | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9042add4..a141dd4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v2.56 2019-03-27 Wekan release This release [fixes the following bugs](https://github.com/wekan/wekan/pull/2287), thanks to bentiss with Apache I-CLA: diff --git a/Stackerfile.yml b/Stackerfile.yml index dcf74149..c4160e28 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v2.55.0" +appVersion: "v2.56.0" files: userUploads: - README.md diff --git a/package.json b/package.json index afb4854b..b9ae427a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v2.55.0", + "version": "v2.56.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index ac6d9f42..61b19d34 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = ( appTitle = (defaultText = "Wekan"), # The name of the app as it is displayed to the user. - appVersion = 257, + appVersion = 258, # Increment this for every release. - appMarketingVersion = (defaultText = "2.55.0~2019-03-25"), + appMarketingVersion = (defaultText = "2.56.0~2019-03-27"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22