From df9851e2b7a37138476fbd12d5ca209835047d97 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Fri, 5 Jun 2020 08:29:46 +0200 Subject: Copy the labels only if the target board is different This fixes the issues https://github.com/wekan/wekan/issues/2404 and https://github.com/wekan/wekan/issues/2970 if the target board doesn't differ from the source board. --- models/cards.js | 111 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 60 insertions(+), 51 deletions(-) diff --git a/models/cards.js b/models/cards.js index e1d48653..f78fb76c 100644 --- a/models/cards.js +++ b/models/cards.js @@ -368,30 +368,36 @@ Cards.allow({ Cards.helpers({ copy(boardId, swimlaneId, listId) { - const oldBoard = Boards.findOne(this.boardId); - const oldBoardLabels = oldBoard.labels; - // Get old label names - const oldCardLabels = _.pluck( - _.filter(oldBoardLabels, label => { - return _.contains(this.labelIds, label._id); - }), - 'name', - ); - - const newBoard = Boards.findOne(boardId); - const newBoardLabels = newBoard.labels; - const newCardLabels = _.pluck( - _.filter(newBoardLabels, label => { - return _.contains(oldCardLabels, label.name); - }), - '_id', - ); - const oldId = this._id; const oldCard = Cards.findOne(oldId); - // Copy Custom Fields - if (oldBoard._id !== boardId) { + // we must only copy the labels and custom fields if the target board + // differs from the source board + if (this.boardId !== boardId) { + const oldBoard = Boards.findOne(this.boardId); + const oldBoardLabels = oldBoard.labels; + + // Get old label names + const oldCardLabels = _.pluck( + _.filter(oldBoardLabels, label => { + return _.contains(this.labelIds, label._id); + }), + 'name', + ); + + const newBoard = Boards.findOne(boardId); + const newBoardLabels = newBoard.labels; + const newCardLabels = _.pluck( + _.filter(newBoardLabels, label => { + return _.contains(oldCardLabels, label.name); + }), + '_id', + ); + // now set the new label ids + delete this.labelIds; + this.labelIds = newCardLabels; + + // Copy Custom Fields CustomFields.find({ _id: { $in: oldCard.customFields.map(cf => { @@ -404,8 +410,6 @@ Cards.helpers({ } delete this._id; - delete this.labelIds; - this.labelIds = newCardLabels; this.boardId = boardId; this.swimlaneId = swimlaneId; this.listId = listId; @@ -1298,8 +1302,40 @@ Cards.mutations({ }, move(boardId, swimlaneId, listId, sort) { - // Copy Custom Fields + const mutatedFields = { + boardId, + swimlaneId, + listId, + sort, + }; + + // we must only copy the labels and custom fields if the target board + // differs from the source board if (this.boardId !== boardId) { + // Get label names + const oldBoard = Boards.findOne(this.boardId); + const oldBoardLabels = oldBoard.labels; + const oldCardLabels = _.pluck( + _.filter(oldBoardLabels, label => { + return _.contains(this.labelIds, label._id); + }), + 'name', + ); + + const newBoard = Boards.findOne(boardId); + const newBoardLabels = newBoard.labels; + const newCardLabelIds = _.pluck( + _.filter(newBoardLabels, label => { + return label.name && _.contains(oldCardLabels, label.name); + }), + '_id', + ); + + Object.assign(mutatedFields, { + labelIds: newCardLabelIds, + }); + + // Copy custom fields CustomFields.find({ _id: { $in: this.customFields.map(cf => { @@ -1311,33 +1347,6 @@ Cards.mutations({ }); } - // Get label names - const oldBoard = Boards.findOne(this.boardId); - const oldBoardLabels = oldBoard.labels; - const oldCardLabels = _.pluck( - _.filter(oldBoardLabels, label => { - return _.contains(this.labelIds, label._id); - }), - 'name', - ); - - const newBoard = Boards.findOne(boardId); - const newBoardLabels = newBoard.labels; - const newCardLabelIds = _.pluck( - _.filter(newBoardLabels, label => { - return label.name && _.contains(oldCardLabels, label.name); - }), - '_id', - ); - - const mutatedFields = { - boardId, - swimlaneId, - listId, - sort, - labelIds: newCardLabelIds, - }; - Cards.update(this._id, { $set: mutatedFields, }); -- cgit v1.2.3-1-g7c22 From 1f85b25549b50602380f1745f19e5fe44fe36d6f Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Sat, 6 Jun 2020 11:26:06 +0200 Subject: WIP: markdown --- .meteor/packages | 1 + .meteor/versions | 3 ++- packages/markdown/markdown.js | 9 --------- packages/markdown/package.js | 18 +++++++++++------- packages/markdown/src/checkNpmVersions.js | 5 +++++ packages/markdown/src/markdown.js | 9 +++++++++ packages/markdown/src/template-integration.js | 18 ++++++++++++++++++ packages/markdown/template-integration.js | 16 ---------------- 8 files changed, 46 insertions(+), 33 deletions(-) delete mode 100755 packages/markdown/markdown.js create mode 100644 packages/markdown/src/checkNpmVersions.js create mode 100755 packages/markdown/src/markdown.js create mode 100755 packages/markdown/src/template-integration.js delete mode 100755 packages/markdown/template-integration.js diff --git a/.meteor/packages b/.meteor/packages index ba278f34..cb115111 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -98,3 +98,4 @@ percolate:synced-cron easylogic:summernote cfs:filesystem ostrio:cookies +tmeasday:check-npm-versions diff --git a/.meteor/versions b/.meteor/versions index 127079d4..b46280c4 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -177,6 +177,7 @@ templating@1.3.2 templating-compiler@1.3.3 templating-runtime@1.3.2 templating-tools@1.1.2 +tmeasday:check-npm-versions@0.3.2 tracker@1.2.0 twbs:bootstrap@3.3.6 ui@1.0.13 @@ -191,7 +192,7 @@ webapp-hashing@1.0.9 wekan-accounts-cas@0.1.0 wekan-accounts-oidc@1.0.10 wekan-ldap@0.0.2 -wekan-markdown@1.0.8 +wekan-markdown@1.0.9 wekan-oidc@1.0.12 wekan-scrollbar@3.1.3 yasaricli:slugify@0.0.7 diff --git a/packages/markdown/markdown.js b/packages/markdown/markdown.js deleted file mode 100755 index bb015cc4..00000000 --- a/packages/markdown/markdown.js +++ /dev/null @@ -1,9 +0,0 @@ -var mark = marked; - -mark.setOptions({ - gfm: true, - tables: true, - breaks: true -}); - -Markdown = mark; diff --git a/packages/markdown/package.js b/packages/markdown/package.js index 0838922b..55228856 100755 --- a/packages/markdown/package.js +++ b/packages/markdown/package.js @@ -2,23 +2,27 @@ Package.describe({ name: 'wekan-markdown', - summary: "GitHub flavored markdown parser for Meteor based on marked.js", - version: "1.0.8", - git: "https://github.com/wekan/markdown.git" + summary: 'GitHub flavored markdown parser for Meteor based on marked.js', + version: '1.0.9', + git: 'https://github.com/wekan/markdown.git', }); // Before Meteor 0.9? if(!Package.onUse) Package.onUse = Package.on_use; Package.onUse(function (api) { - if(api.versionsFrom) api.versionsFrom('METEOR@0.9.0'); + if(api.versionsFrom) api.versionsFrom('1.8.2'); api.use('templating'); + api.use("ecmascript", ['server', 'client']); api.add_files('marked/lib/marked.js', ['server', 'client']); - api.add_files('markdown.js', ['server', 'client']); + api.add_files('src/markdown.js', ['server', 'client']); api.export('Markdown', ['server', 'client']); - api.use("ui", "client", {weak: true}); - api.add_files("template-integration.js", "client"); + api.use('ui', 'client', {weak: true}); + api.use('tmeasday:check-npm-versions', 'client'); + + api.add_files('src/checkNpmVersions.js', 'client'); + api.add_files('src/template-integration.js', 'client'); }); diff --git a/packages/markdown/src/checkNpmVersions.js b/packages/markdown/src/checkNpmVersions.js new file mode 100644 index 00000000..350ca549 --- /dev/null +++ b/packages/markdown/src/checkNpmVersions.js @@ -0,0 +1,5 @@ +import { checkNpmVersions } from 'meteor/tmeasday:check-npm-versions'; + +checkNpmVersions({ + 'xss': '1.0.6', +}, 'my:xss'); diff --git a/packages/markdown/src/markdown.js b/packages/markdown/src/markdown.js new file mode 100755 index 00000000..8e003f26 --- /dev/null +++ b/packages/markdown/src/markdown.js @@ -0,0 +1,9 @@ +import marked from '../marked/lib/marked.js'; + +marked.setOptions({ + gfm: true, + tables: true, + breaks: true, +}); + +Markdown = marked; diff --git a/packages/markdown/src/template-integration.js b/packages/markdown/src/template-integration.js new file mode 100755 index 00000000..bd8eec47 --- /dev/null +++ b/packages/markdown/src/template-integration.js @@ -0,0 +1,18 @@ +import sanitizeXss from 'xss'; + +if (Package.ui) { + const Template = Package.templating.Template; + const UI = Package.ui.UI; + const HTML = Package.htmljs.HTML; + const Blaze = Package.blaze.Blaze; // implied by `ui` + + UI.registerHelper('markdown', new Template('markdown', function () { + const self = this; + let text = ''; + if (self.templateContentBlock) { + text = Blaze._toText(self.templateContentBlock, HTML.TEXTMODE.STRING); + } + + return HTML.Raw(sanitizeXss(Markdown(text))); + })); +} diff --git a/packages/markdown/template-integration.js b/packages/markdown/template-integration.js deleted file mode 100755 index 301bde31..00000000 --- a/packages/markdown/template-integration.js +++ /dev/null @@ -1,16 +0,0 @@ -if (Package.ui) { - var Template = Package.templating.Template; - var UI = Package.ui.UI; - var HTML = Package.htmljs.HTML; - var Blaze = Package.blaze.Blaze; // implied by `ui` - - UI.registerHelper('markdown', new Template('markdown', function () { - var self = this; - var text = ""; - if(self.templateContentBlock) { - text = Blaze._toText(self.templateContentBlock, HTML.TEXTMODE.STRING); - } - - return HTML.Raw(Markdown(text)); - })); -} -- cgit v1.2.3-1-g7c22 From e127895cf38f5bcefa7e65aea9e4c7041711b813 Mon Sep 17 00:00:00 2001 From: Jimmy Jones Date: Sun, 7 Jun 2020 20:18:17 +0100 Subject: OpenShift template updates * Remove status fields (this is created by Kubernetes at run time) * The latest MongoDB by [default available with OpenShift is 3.6](https://github.com/openshift/origin/blob/master/examples/image-streams/image-streams-rhel7.json#L334) * Change MongoDB service name to contain wekan to avoid potentially conflicting with other mongodb instances in the same project --- openshift/wekan.yml | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/openshift/wekan.yml b/openshift/wekan.yml index 28f63300..3d08451b 100644 --- a/openshift/wekan.yml +++ b/openshift/wekan.yml @@ -64,8 +64,6 @@ objects: name: "${WEKAN_SERVICE_NAME}" sessionAffinity: None type: ClusterIP - status: - loadBalancer: {} - apiVersion: v1 kind: Service metadata: @@ -86,8 +84,6 @@ objects: name: "${DATABASE_SERVICE_NAME}" sessionAffinity: None type: ClusterIP - status: - loadBalancer: {} - apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -276,7 +272,6 @@ objects: lastTriggeredImage: '' type: ImageChange - type: ConfigChange - status: {} - apiVersion: route.openshift.io/v1 kind: Route metadata: @@ -297,15 +292,6 @@ objects: name: wekan weight: 100 wildcardPolicy: None - status: - ingress: - - conditions: - - lastTransitionTime: '2018-08-28T14:45:21Z' - status: 'True' - type: Admitted - host: ${FQDN} - routerName: router - wildcardPolicy: None parameters: - description: The Fully Qualified Hostname (FQDN) of the application displayName: FQDN @@ -323,7 +309,7 @@ parameters: displayName: Database Service Name name: DATABASE_SERVICE_NAME required: true - value: mongodb + value: wekan-mongodb - description: Username for MongoDB user that will be used for accessing the database. displayName: MongoDB Connection Username from: user[A-Z0-9]{3} @@ -356,7 +342,7 @@ parameters: displayName: Version of MongoDB Image name: MONGODB_VERSION required: true - value: '4.0.10' + value: '3.6' - name: WEKAN_SERVICE_NAME displayName: Wekan Service Name value: wekan -- cgit v1.2.3-1-g7c22 From fb44df981581354bf23a6928427ad2bf73c4550f Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Sun, 7 Jun 2020 22:58:56 +0200 Subject: WIP: XSS fixes --- client/components/activities/activities.jade | 56 ++++++++++++------------ client/components/activities/activities.js | 28 ++++++++---- client/components/rules/actions/cardActions.jade | 2 +- 3 files changed, 48 insertions(+), 38 deletions(-) diff --git a/client/components/activities/activities.jade b/client/components/activities/activities.jade index c86936a0..77acd6a3 100644 --- a/client/components/activities/activities.jade +++ b/client/components/activities/activities.jade @@ -34,38 +34,38 @@ template(name="activity") //- board activity ------------------------------------------------------ if($eq mode 'board') if($eq activity.activityType 'createBoard') - | {{_ 'activity-created' boardLabel}}. + | {{{_ 'activity-created' boardLabelLink}}}. if($eq activity.activityType 'importBoard') - | {{{_ 'activity-imported-board' boardLabel sourceLink}}}. + | {{{_ 'activity-imported-board' boardLabelLink sourceLink}}}. if($eq activity.activityType 'addBoardMember') - | {{{_ 'activity-added' memberLink boardLabel}}}. + | {{{_ 'activity-added' memberLink boardLabelLink}}}. if($eq activity.activityType 'removeBoardMember') - | {{{_ 'activity-excluded' memberLink boardLabel}}}. + | {{{_ 'activity-excluded' memberLink boardLabelLink}}}. //- card activity ------------------------------------------------------- if($eq activity.activityType 'createCard') if($eq mode 'card') - | {{{_ 'activity-added' cardLabel activity.listName}}}. + | {{{_ 'activity-added' cardLabelLink (sanitize activity.listName)}}}. else - | {{{_ 'activity-added' cardLabel boardLabel}}}. + | {{{_ 'activity-added' cardLabelLink boardLabelLink}}}. if($eq activity.activityType 'importCard') - | {{{_ 'activity-imported' cardLink boardLabel sourceLink}}}. + | {{{_ 'activity-imported' cardLink boardLabelLink sourceLink}}}. if($eq activity.activityType 'moveCard') - | {{{_ 'activity-moved' cardLabel activity.oldList.title activity.list.title}}}. + | {{{_ 'activity-moved' cardLabelLink (sanitize activity.oldList.title) (sanitize activity.list.title)}}}. if($eq activity.activityType 'moveCardBoard') - | {{{_ 'activity-moved' cardLink activity.oldBoardName activity.boardName}}}. + | {{{_ 'activity-moved' cardLink (sanitize activity.oldBoardName) (sanitize activity.boardName)}}}. if($eq activity.activityType 'archivedCard') | {{{_ 'activity-archived' cardLink}}}. if($eq activity.activityType 'restoredCard') - | {{{_ 'activity-sent' cardLink boardLabel}}}. + | {{{_ 'activity-sent' cardLink boardLabelLink}}}. //- checklist activity -------------------------------------------------- if($eq activity.activityType 'addChecklist') @@ -83,25 +83,25 @@ template(name="activity") | {{{_ 'activity-checklist-removed' cardLink}}}. if($eq activity.activityType 'completeChecklist') - | {{{_ 'activity-checklist-completed' activity.checklist.title cardLink}}}. + | {{{_ 'activity-checklist-completed' (sanitize activity.checklist.title) cardLink}}}. if($eq activity.activityType 'uncompleteChecklist') - | {{{_ 'activity-checklist-uncompleted' activity.checklist.title cardLink}}}. + | {{{_ 'activity-checklist-uncompleted' (sanitize activity.checklist.title) cardLink}}}. if($eq activity.activityType 'checkedItem') - | {{{_ 'activity-checked-item' checkItem activity.checklist.title cardLink}}}. + | {{{_ 'activity-checked-item' (sanitize checkItem) (sanitize activity.checklist.title) cardLink}}}. if($eq activity.activityType 'uncheckedItem') - | {{{_ 'activity-unchecked-item' checkItem activity.checklist.title cardLink}}}. + | {{{_ 'activity-unchecked-item' (sanitize checkItem) (sanitize activity.checklist.title) cardLink}}}. if($eq activity.activityType 'addChecklistItem') - | {{{_ 'activity-checklist-item-added' activity.checklist.title cardLink}}}. + | {{{_ 'activity-checklist-item-added' (sanitize activity.checklist.title) cardLink}}}. .activity-checklist(href="{{ activity.card.absoluteUrl }}") +viewer = activity.checklistItem.title if($eq activity.activityType 'removedChecklistItem') - | {{{_ 'activity-checklist-item-removed' activity.checklist.title cardLink}}}. + | {{{_ 'activity-checklist-item-removed' (sanitize activity.checklist.title) cardLink}}}. //- comment activity ---------------------------------------------------- if($eq mode 'card') @@ -143,31 +143,31 @@ template(name="activity") | {{_ 'activity-customfield-created' customField}}. if($eq activity.activityType 'setCustomField') - | {{{_ 'activity-set-customfield' lastCustomField lastCustomFieldValue cardLink}}}. + | {{{_ 'activity-set-customfield' (sanitize lastCustomField) (sanitize lastCustomFieldValue) cardLink}}}. if($eq activity.activityType 'unsetCustomField') - | {{{_ 'activity-unset-customfield' lastCustomField cardLink}}}. + | {{{_ 'activity-unset-customfield' (sanitize lastCustomField) cardLink}}}. //- label activity ------------------------------------------------------ if($eq activity.activityType 'addedLabel') - | {{{_ 'activity-added-label' lastLabel cardLink}}}. + | {{{_ 'activity-added-label' (sanitize lastLabel) cardLink}}}. if($eq activity.activityType 'removedLabel') - | {{{_ 'activity-removed-label' lastLabel cardLink}}}. + | {{{_ 'activity-removed-label' (sanitize lastLabel) cardLink}}}. //- list activity ------------------------------------------------------- if($neq mode 'card') if($eq activity.activityType 'createList') - | {{{_ 'activity-added' listLabel boardLabel}}}. + | {{{_ 'activity-added' (sanitize listLabel) boardLabelLink}}}. if($eq activity.activityType 'importList') - | {{{_ 'activity-imported' listLabel boardLabel sourceLink}}}. + | {{{_ 'activity-imported' (sanitize listLabel) boardLabelLink sourceLink}}}. if($eq activity.activityType 'removeList') - | {{{_ 'activity-removed' activity.title boardLabel}}}. + | {{{_ 'activity-removed' (sanitize activity.title) boardLabelLink}}}. if($eq activity.activityType 'archivedList') - | {{_ 'activity-archived' listLabel}}. + | {{_ 'activity-archived' (sanitize listLabel)}}. //- member activity ---------------------------------------------------- if($eq activity.activityType 'joinMember') @@ -185,15 +185,15 @@ template(name="activity") //- swimlane activity -------------------------------------------------- if($neq mode 'card') if($eq activity.activityType 'createSwimlane') - | {{{_ 'activity-added' activity.swimlane.title boardLabel}}}. + | {{_ 'activity-added' (sanitize activity.swimlane.title) boardLabelLink}}. if($eq activity.activityType 'archivedSwimlane') - | {{_ 'activity-archived' activity.swimlane.title}}. + | {{_ 'activity-archived' (sanitize activity.swimlane.title)}}. //- I don't understand this part ---------------------------------------- if(currentData.timeKey) - | {{{_ activity.activityType }}} + | {{_ activity.activityType }} = ' ' i(title=currentData.timeValue).activity-meta {{ moment currentData.timeValue 'LLL' }} if (currentData.timeOldValue) @@ -203,6 +203,6 @@ template(name="activity") i(title=currentData.timeOldValue).activity-meta {{ moment currentData.timeOldValue 'LLL' }} = ' @' else if(currentData.timeValue) - | {{{_ activity.activityType currentData.timeValue}}} + | {{_ activity.activityType currentData.timeValue}} span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }} diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index 5d356f6e..b6635da1 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -1,3 +1,5 @@ +import sanitizeXss from 'xss'; + const activitiesPerPage = 20; BlazeComponent.extendComponent({ @@ -57,7 +59,7 @@ BlazeComponent.extendComponent({ return checkItem && checkItem.title; }, - boardLabel() { + boardLabelLink() { const data = this.currentData(); if (data.mode !== 'board') { return createBoardLink(data.activity.board(), data.activity.listName); @@ -65,10 +67,10 @@ BlazeComponent.extendComponent({ return TAPi18n.__('this-board'); }, - cardLabel() { + cardLabelLink() { const data = this.currentData(); if (data.mode !== 'card') { - return createCardLink(this.currentData().activity.card()); + return createCardLink(data.activity.card()); } return TAPi18n.__('this-card'); }, @@ -134,11 +136,11 @@ BlazeComponent.extendComponent({ { href: source.url, }, - source.system, + sanitizeXss(source.system), ), ); } else { - return source.system; + return sanitizeXss(source.system); } } return null; @@ -162,10 +164,10 @@ BlazeComponent.extendComponent({ href: attachment.url({ download: true }), target: '_blank', }, - attachment.name(), + sanitizeXss(attachment.name()), ), )) || - this.currentData().activity.attachmentName + sanitizeXss(this.currentData().activity.attachmentName) ); }, @@ -202,7 +204,15 @@ BlazeComponent.extendComponent({ }, }).register('activity'); +Template.activity.helpers({ + sanitize(value) { + return sanitizeXss(value); + }, +}); + function createCardLink(card) { + if (!card) + return ''; return ( card && Blaze.toHTML( @@ -211,7 +221,7 @@ function createCardLink(card) { href: card.absoluteUrl(), class: 'action-card', }, - card.title, + sanitizeXss(card.title), ), ) ); @@ -228,7 +238,7 @@ function createBoardLink(board, list) { href: board.absoluteUrl(), class: 'action-board', }, - text, + sanitizeXss(text), ), ) ); diff --git a/client/components/rules/actions/cardActions.jade b/client/components/rules/actions/cardActions.jade index c10c4b2b..469c1c50 100644 --- a/client/components/rules/actions/cardActions.jade +++ b/client/components/rules/actions/cardActions.jade @@ -75,7 +75,7 @@ template(name="cardActions") button.trigger-button.trigger-button-color.js-show-color-palette( id="color-action" class="card-details-{{cardColorButton}}") - | {{{_ cardColorButtonText }}} + | {{{_ cardColorButtonText }}} // XSS?! div.trigger-button.js-set-color-action.js-goto-rules i.fa.fa-plus -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From 8c3322f9a93c321e8a2cc5cfcd4b1d6316a5fb7c Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:28:53 +0300 Subject: Change default view to Swimlanes. Thanks to xet7 ! --- client/components/boards/boardHeader.jade | 2 +- client/components/swimlanes/swimlanes.js | 11 +++++++++-- models/users.js | 8 ++++---- server/migrations.js | 26 +++++++++++++------------- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade index 4c0edac4..a8bdc8c5 100644 --- a/client/components/boards/boardHeader.jade +++ b/client/components/boards/boardHeader.jade @@ -105,7 +105,7 @@ template(name="boardHeaderBar") i.fa.fa-th-large if $eq boardView 'board-view-cal' i.fa.fa-calendar - span {{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}} + span {{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-swimlanes'}}{{/if}} if canModifyBoard a.board-header-btn.js-multiselection-activate( diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js index 753fa88b..bfb07530 100644 --- a/client/components/swimlanes/swimlanes.js +++ b/client/components/swimlanes/swimlanes.js @@ -23,8 +23,15 @@ function currentCardIsInThisList(listId, swimlaneId) { currentCard.listId === listId && currentCard.swimlaneId === swimlaneId ); - // Default view: board-view-lists - else return currentCard && currentCard.listId === listId; + // OLD: Default view: board-view-lists + ////else return currentCard && currentCard.listId === listId; + // NEW: Default view: board-view-swimlanes +else return ( + currentCard && + currentCard.listId === listId && + currentCard.swimlaneId === swimlaneId +); + // https://github.com/wekan/wekan/issues/1623 // https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de // TODO: In public board, if you would like to switch between List/Swimlane view, you could diff --git a/models/users.js b/models/users.js index 976e5068..679d4815 100644 --- a/models/users.js +++ b/models/users.js @@ -95,7 +95,7 @@ Users.attachSchema( autoValue() { if (this.isInsert && !this.isSet) { return { - boardView: 'board-view-lists', + boardView: 'board-view-swimlanes', }; } }, @@ -218,8 +218,8 @@ Users.attachSchema( type: String, optional: true, allowedValues: [ - 'board-view-lists', 'board-view-swimlanes', + 'board-view-lists', 'board-view-cal', ], }, @@ -903,7 +903,7 @@ if (Meteor.isServer) { user.profile = { initials, fullname: user.services.oidc.fullname, - boardView: 'board-view-lists', + boardView: 'board-view-swimlanes', }; user.authenticationMethod = 'oauth2'; @@ -961,7 +961,7 @@ if (Meteor.isServer) { ); } else { user.profile = { icode: options.profile.invitationcode }; - user.profile.boardView = 'board-view-lists'; + user.profile.boardView = 'board-view-swimlanes'; // Deletes the invitation code after the user was created successfully. setTimeout( diff --git a/server/migrations.js b/server/migrations.js index 5655bd1d..85d10c8e 100644 --- a/server/migrations.js +++ b/server/migrations.js @@ -246,19 +246,6 @@ Migrations.add('add-checklist-items', () => { }); }); -Migrations.add('add-profile-view', () => { - Users.find().forEach(user => { - if (!user.hasOwnProperty('profile.boardView')) { - // Set default view - Users.direct.update( - { _id: user._id }, - { $set: { 'profile.boardView': 'board-view-lists' } }, - noValidate, - ); - } - }); -}); - Migrations.add('add-card-types', () => { Cards.find().forEach(card => { Cards.direct.update( @@ -1044,3 +1031,16 @@ Migrations.add('add-sort-field-to-boards', () => { } }); }); + +Migrations.add('add-default-profile-view', () => { + Users.find().forEach(user => { + if (!user.hasOwnProperty('profile.boardView')) { + // Set default view + Users.direct.update( + { _id: user._id }, + { $set: { 'profile.boardView': 'board-view-swimlanes' } }, + noValidate, + ); + } + }); +}); -- cgit v1.2.3-1-g7c22 From 6b22f96313354b45b851b93c25aa392bbe346bdb Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:30:26 +0300 Subject: Use markdown in Swimlane titles. Thanks to xet7 ! --- client/components/swimlanes/swimlaneHeader.jade | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/components/swimlanes/swimlaneHeader.jade b/client/components/swimlanes/swimlaneHeader.jade index 72a7f054..9228bf75 100644 --- a/client/components/swimlanes/swimlaneHeader.jade +++ b/client/components/swimlanes/swimlaneHeader.jade @@ -11,7 +11,8 @@ template(name="swimlaneHeader") template(name="swimlaneFixedHeader") .swimlane-header( class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}") - = title + +viewer + = title .swimlane-header-menu unless currentUser.isCommentOnly a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon -- cgit v1.2.3-1-g7c22 From 415e94d187ffcb9a4afaecc5c6960a50a87ca7eb Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:32:17 +0300 Subject: Fix indent. Thanks to xet7 ! --- client/components/activities/activities.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index b6635da1..23ab70ed 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -211,8 +211,7 @@ Template.activity.helpers({ }); function createCardLink(card) { - if (!card) - return ''; + if (!card) return ''; return ( card && Blaze.toHTML( -- cgit v1.2.3-1-g7c22 From 61e682470cdaef42cce2d74b41fb752cfc61848b Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:33:38 +0300 Subject: Default view Swimlanes part 2. Thanks to xet7 ! --- client/components/swimlanes/swimlanes.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js index bfb07530..afd5da22 100644 --- a/client/components/swimlanes/swimlanes.js +++ b/client/components/swimlanes/swimlanes.js @@ -26,11 +26,12 @@ function currentCardIsInThisList(listId, swimlaneId) { // OLD: Default view: board-view-lists ////else return currentCard && currentCard.listId === listId; // NEW: Default view: board-view-swimlanes -else return ( - currentCard && - currentCard.listId === listId && - currentCard.swimlaneId === swimlaneId -); + else + return ( + currentCard && + currentCard.listId === listId && + currentCard.swimlaneId === swimlaneId + ); // https://github.com/wekan/wekan/issues/1623 // https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de -- cgit v1.2.3-1-g7c22 From 99f68f36b028d6c75acf2e5b83585b1acee65f97 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:34:45 +0300 Subject: Fix XSS. Thanks to xet7 ! --- client/components/rules/actions/cardActions.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/components/rules/actions/cardActions.jade b/client/components/rules/actions/cardActions.jade index 469c1c50..0840283b 100644 --- a/client/components/rules/actions/cardActions.jade +++ b/client/components/rules/actions/cardActions.jade @@ -75,7 +75,7 @@ template(name="cardActions") button.trigger-button.trigger-button-color.js-show-color-palette( id="color-action" class="card-details-{{cardColorButton}}") - | {{{_ cardColorButtonText }}} // XSS?! + | {{_ cardColorButtonText }} div.trigger-button.js-set-color-action.js-goto-rules i.fa.fa-plus -- cgit v1.2.3-1-g7c22 From 96494bacf550cde65598e6d59199517f311aa33d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:35:25 +0300 Subject: Fix indent part 2. Thanks to xet7 ! --- models/cards.js | 4 ++-- models/users.js | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/models/cards.js b/models/cards.js index e1d48653..ca208339 100644 --- a/models/cards.js +++ b/models/cards.js @@ -2169,7 +2169,7 @@ if (Meteor.isServer) { description: doc.description, listId: doc.listId, receivedAt: doc.receivedAt, - startAt:doc.startAt, + startAt: doc.startAt, dueAt: doc.dueAt, endAt: doc.endAt, assignees: doc.assignees, @@ -2210,7 +2210,7 @@ if (Meteor.isServer) { title: doc.title, description: doc.description, receivedAt: doc.receivedAt, - startAt:doc.startAt, + startAt: doc.startAt, dueAt: doc.dueAt, endAt: doc.endAt, assignees: doc.assignees, diff --git a/models/users.js b/models/users.js index 679d4815..f3fc1046 100644 --- a/models/users.js +++ b/models/users.js @@ -1109,10 +1109,10 @@ if (Meteor.isServer) { }); */ - const Future = require('fibers/future'); - let future1 = new Future(); - let future2 = new Future(); - let future3 = new Future(); + const Future = require('fibers/future'); + let future1 = new Future(); + let future2 = new Future(); + let future3 = new Future(); Boards.insert( { title: TAPi18n.__('templates'), @@ -1140,7 +1140,7 @@ if (Meteor.isServer) { Users.update(fakeUserId.get(), { $set: { 'profile.cardTemplatesSwimlaneId': swimlaneId }, }); - future1.return(); + future1.return(); }, ); @@ -1158,7 +1158,7 @@ if (Meteor.isServer) { Users.update(fakeUserId.get(), { $set: { 'profile.listTemplatesSwimlaneId': swimlaneId }, }); - future2.return(); + future2.return(); }, ); @@ -1176,22 +1176,22 @@ if (Meteor.isServer) { Users.update(fakeUserId.get(), { $set: { 'profile.boardTemplatesSwimlaneId': swimlaneId }, }); - future3.return(); + future3.return(); }, ); }, ); - // HACK - future1.wait(); - future2.wait(); - future3.wait(); + // HACK + future1.wait(); + future2.wait(); + future3.wait(); }); }); } - Users.after.insert((userId, doc) => { - // HACK - doc = Users.findOne({_id: doc._id}); + Users.after.insert((userId, doc) => { + // HACK + doc = Users.findOne({ _id: doc._id }); if (doc.createdThroughApi) { // The admin user should be able to create a user despite disabling registration because // it is two different things (registration and creation). -- cgit v1.2.3-1-g7c22 From cb1e91fee83eaad1e926c288c0abfc1e4f2a8bd4 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:37:20 +0300 Subject: Update minifier-css. Thanks to xet7 ! --- .meteor/versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.meteor/versions b/.meteor/versions index b46280c4..71815aa7 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -101,7 +101,7 @@ meteorhacks:collection-utils@1.2.0 meteorhacks:picker@1.0.3 meteorhacks:subs-manager@1.6.4 meteorspark:util@0.2.0 -minifier-css@1.5.0 +minifier-css@1.5.1 minifier-js@2.6.0 minifiers@1.1.8-faster-rebuild.0 minimongo@1.6.0 -- cgit v1.2.3-1-g7c22 From 7f6d500cbec15496ae357b05b9df3f10e51ed1f1 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:53:03 +0300 Subject: Default view Swimlanes part 3: Change dropdown order to Swimlanes/Lists/Calendar. Thanks to xet7 ! --- client/components/boards/boardHeader.jade | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade index a8bdc8c5..53346db4 100644 --- a/client/components/boards/boardHeader.jade +++ b/client/components/boards/boardHeader.jade @@ -172,13 +172,6 @@ template(name="boardChangeWatchPopup") template(name="boardChangeViewPopup") ul.pop-over-list - li - with "board-view-lists" - a.js-open-lists-view - i.fa.fa-trello.colorful - | {{_ 'board-view-lists'}} - if $eq Utils.boardView "board-view-lists" - i.fa.fa-check li with "board-view-swimlanes" a.js-open-swimlanes-view @@ -186,6 +179,13 @@ template(name="boardChangeViewPopup") | {{_ 'board-view-swimlanes'}} if $eq Utils.boardView "board-view-swimlanes" i.fa.fa-check + li + with "board-view-lists" + a.js-open-lists-view + i.fa.fa-trello.colorful + | {{_ 'board-view-lists'}} + if $eq Utils.boardView "board-view-lists" + i.fa.fa-check li with "board-view-cal" a.js-open-cal-view -- cgit v1.2.3-1-g7c22 From dcbf92b5b18426078facdb0d983c4747f73ee2d4 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 17:55:43 +0300 Subject: Update dependencies. --- package-lock.json | 613 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 479 insertions(+), 134 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80afccd0..b793837a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,23 +8,24 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, "requires": { "@babel/highlight": "^7.8.3" } }, "@babel/core": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", - "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.6", - "@babel/parser": "^7.9.6", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", + "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.2", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helpers": "^7.10.1", + "@babel/parser": "^7.10.2", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -35,44 +36,103 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "requires": { + "@babel/highlight": "^7.10.1" + } + }, "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", "requires": { - "@babel/types": "^7.9.6", + "@babel/types": "^7.10.2", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==" + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } }, "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "requires": { - "@babel/helper-validator-identifier": "^7.9.5", + "@babel/helper-validator-identifier": "^7.10.1", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -95,6 +155,7 @@ "version": "7.9.5", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", @@ -105,97 +166,266 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, "requires": { "@babel/types": "^7.8.3" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", - "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6" + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "requires": { + "@babel/highlight": "^7.10.1" + } + }, "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", "requires": { - "@babel/types": "^7.9.6", + "@babel/types": "^7.10.2", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==" + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } }, "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "requires": { - "@babel/helper-validator-identifier": "^7.9.5", + "@babel/helper-validator-identifier": "^7.10.1", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -203,18 +433,69 @@ } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-split-export-declaration": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, "requires": { "@babel/types": "^7.8.3" } @@ -222,56 +503,116 @@ "@babel/helper-validator-identifier": { "version": "7.9.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true }, "@babel/helpers": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", - "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6" + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "requires": { + "@babel/highlight": "^7.10.1" + } + }, "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", "requires": { - "@babel/types": "^7.9.6", + "@babel/types": "^7.10.2", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==" + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } }, "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "requires": { - "@babel/helper-validator-identifier": "^7.9.5", + "@babel/helper-validator-identifier": "^7.10.1", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -282,6 +623,7 @@ "version": "7.9.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", @@ -291,12 +633,13 @@ "@babel/parser": { "version": "7.9.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true }, "@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -305,6 +648,7 @@ "version": "7.8.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, "requires": { "@babel/code-frame": "^7.8.3", "@babel/parser": "^7.8.6", @@ -332,6 +676,7 @@ "version": "7.9.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", @@ -3467,15 +3812,15 @@ } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", + "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==", "optional": true }, "mongodb": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.7.tgz", - "integrity": "sha512-lMtleRT+vIgY/JhhTn1nyGwnSMmJkJELp+4ZbrjctrnBxuLbj6rmLuJFz8W2xUzUqWmqoyVxJLYuC58ZKpcTYQ==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.8.tgz", + "integrity": "sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==", "requires": { "bl": "^2.2.0", "bson": "^1.1.4", @@ -3575,9 +3920,9 @@ "optional": true }, "needle": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz", - "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -5249,11 +5594,11 @@ } }, "xss": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.6.tgz", - "integrity": "sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.7.tgz", + "integrity": "sha512-A9v7tblGvxu8TWXQC9rlpW96a+LN1lyw6wyhpTmmGW+FwRMactchBR3ROKSi33UPCUcUHSu8s9YP6F+K3Mw//w==", "requires": { - "commander": "^2.9.0", + "commander": "^2.20.3", "cssfilter": "0.0.10" } }, -- cgit v1.2.3-1-g7c22 From 39519d1cc944c567837be0f88ab4a037e2144c61 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 19:12:17 +0300 Subject: 1) Public board default view to Swimlane. 2) When changing Public board view (sets view cookie), also reload page so view is changed immediately. Thanks to xet7 ! --- client/components/boards/boardHeader.jade | 4 ++-- client/lib/utils.js | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade index 53346db4..1daf0618 100644 --- a/client/components/boards/boardHeader.jade +++ b/client/components/boards/boardHeader.jade @@ -99,10 +99,10 @@ template(name="boardHeaderBar") a.board-header-btn.js-toggle-board-view( title="{{_ 'board-view'}}") i.fa.fa-caret-down - if $eq boardView 'board-view-lists' - i.fa.fa-trello if $eq boardView 'board-view-swimlanes' i.fa.fa-th-large + if $eq boardView 'board-view-lists' + i.fa.fa-trello if $eq boardView 'board-view-cal' i.fa.fa-calendar span {{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-swimlanes'}}{{/if}} diff --git a/client/lib/utils.js b/client/lib/utils.js index c921fddc..754214c0 100644 --- a/client/lib/utils.js +++ b/client/lib/utils.js @@ -6,12 +6,18 @@ Utils = { currentUser = Meteor.user(); if (currentUser) { Meteor.user().setBoardView(view); - } else if (view === 'board-view-lists') { - cookies.set('boardView', 'board-view-lists'); //true } else if (view === 'board-view-swimlanes') { cookies.set('boardView', 'board-view-swimlanes'); //true + location.reload(); + } else if (view === 'board-view-lists') { + cookies.set('boardView', 'board-view-lists'); //true + location.reload(); } else if (view === 'board-view-cal') { cookies.set('boardView', 'board-view-cal'); //true + location.reload(); + } else { + cookies.set('boardView', 'board-view-swimlanes'); //true + location.reload(); } }, @@ -24,14 +30,16 @@ Utils = { currentUser = Meteor.user(); if (currentUser) { return (currentUser.profile || {}).boardView; - } else if (cookies.get('boardView') === 'board-view-lists') { - return 'board-view-lists'; } else if (cookies.get('boardView') === 'board-view-swimlanes') { return 'board-view-swimlanes'; + } else if (cookies.get('boardView') === 'board-view-lists') { + return 'board-view-lists'; } else if (cookies.get('boardView') === 'board-view-cal') { return 'board-view-cal'; } else { - return false; + cookies.set('boardView', 'board-view-swimlanes'); //true + location.reload(); + return 'board-view-swimlanes'; } }, -- cgit v1.2.3-1-g7c22 From 8a622ec7c3043bf8f34399ef34563e6a9a19dcd8 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 19:20:27 +0300 Subject: Change to correct dependency version. --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index b793837a..2a0c7b39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5594,11 +5594,11 @@ } }, "xss": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.7.tgz", - "integrity": "sha512-A9v7tblGvxu8TWXQC9rlpW96a+LN1lyw6wyhpTmmGW+FwRMactchBR3ROKSi33UPCUcUHSu8s9YP6F+K3Mw//w==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.6.tgz", + "integrity": "sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A==", "requires": { - "commander": "^2.20.3", + "commander": "^2.9.0", "cssfilter": "0.0.10" } }, -- cgit v1.2.3-1-g7c22 From ca23934bde44f56285b86abeb79ffbfb56ebffe3 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 20:21:36 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f2e1d6b..35a09276 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +# Upcoming Wekan release + +This release fixes the following CRITICAL SECURITY VULNERABILITIES: + +- Fix XSS bug reported 2020-05-24 by [swsjona](https://twitter.com/swsjona), + [Part 1](https://github.com/wekan/wekan/commit/1f85b25549b50602380f1745f19e5fe44fe36d6f), + [Part 2](https://github.com/wekan/wekan/commit/fb44df981581354bf23a6928427ad2bf73c4550f), + [Part 3](https://github.com/wekan/wekan/commit/99f68f36b028d6c75acf2e5b83585b1acee65f97), + [Part 4](https://github.com/wekan/wekan/commit/8a622ec7c3043bf8f34399ef34563e6a9a19dcd8). + Logged in users could run javascript in input fields. This was partially fixed at v3.85, + but at some fields XSS was still possible. This affects at least Wekan versions v3.12-v4.12. + After this fix, Javascript in input fields is not executed. + Thanks to swsjona, marc1006 and xet7. + +and adds the following new features: + +- Change default view to Swimlanes + [Part 1](https://github.com/wekan/wekan/commit/8c3322f9a93c321e8a2cc5cfcd4b1d6316a5fb7c), + [Part 2](https://github.com/wekan/wekan/commit/61e682470cdaef42cce2d74b41fb752cfc61848b), + [Part 3 Change dropdown order to Swimlanes/Lists/Calendar](https://github.com/wekan/wekan/commit/7f6d500cbec15496ae357b05b9df3f10e51ed1f1), + [Part 4.1. Public board default view to Swimlane. Part 4.2. When changing Public board + view (sets view cookie), also reload page so view is changed + immediately](https://github.com/wekan/wekan/commit/39519d1cc944c567837be0f88ab4a037e2144c61). + Thanks to xet7. +- [Use markdown in Swimlane titles](https://github.com/wekan/wekan/commit/6b22f96313354b45b851b93c25aa392bbe346bdb). + Thanks to xet7. + +and adds the following updates: + +- [Update minifier-css](https://github.com/wekan/wekan/commit/cb1e91fee83eaad1e926c288c0abfc1e4f2a8bd4). + Thanks to xet7. + +and fixes the following bugs: + +- Fix indent [Part1](https://github.com/wekan/wekan/commit/415e94d187ffcb9a4afaecc5c6960a50a87ca7eb), +- [Part 2](https://github.com/wekan/wekan/commit/96494bacf550cde65598e6d59199517f311aa33d). + Thanks to xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.11 2020-06-04 Wekan release This release adds the following new platforms: -- cgit v1.2.3-1-g7c22 From 55534b8b2ee3a6aca40e3d4740bdc0eb5a059af8 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 20:23:34 +0300 Subject: Fix typos. --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35a09276..46015881 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ This release fixes the following CRITICAL SECURITY VULNERABILITIES: -- Fix XSS bug reported 2020-05-24 by [swsjona](https://twitter.com/swsjona), +- Fix XSS bug reported 2020-05-24 by [swsjona](https://twitter.com/swsjona): [Part 1](https://github.com/wekan/wekan/commit/1f85b25549b50602380f1745f19e5fe44fe36d6f), [Part 2](https://github.com/wekan/wekan/commit/fb44df981581354bf23a6928427ad2bf73c4550f), [Part 3](https://github.com/wekan/wekan/commit/99f68f36b028d6c75acf2e5b83585b1acee65f97), @@ -28,12 +28,12 @@ and adds the following new features: and adds the following updates: - [Update minifier-css](https://github.com/wekan/wekan/commit/cb1e91fee83eaad1e926c288c0abfc1e4f2a8bd4). - Thanks to xet7. + Thanks to xet7. and fixes the following bugs: - Fix indent [Part1](https://github.com/wekan/wekan/commit/415e94d187ffcb9a4afaecc5c6960a50a87ca7eb), -- [Part 2](https://github.com/wekan/wekan/commit/96494bacf550cde65598e6d59199517f311aa33d). + [Part 2](https://github.com/wekan/wekan/commit/96494bacf550cde65598e6d59199517f311aa33d). Thanks to xet7. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From ffcd380523e0dc46cbff8bb1507a8f46b0a9c796 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 20:24:40 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46015881..ad72793d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ This release fixes the following CRITICAL SECURITY VULNERABILITIES: and adds the following new features: -- Change default view to Swimlanes +- Change default view to Swimlanes: [Part 1](https://github.com/wekan/wekan/commit/8c3322f9a93c321e8a2cc5cfcd4b1d6316a5fb7c), [Part 2](https://github.com/wekan/wekan/commit/61e682470cdaef42cce2d74b41fb752cfc61848b), [Part 3 Change dropdown order to Swimlanes/Lists/Calendar](https://github.com/wekan/wekan/commit/7f6d500cbec15496ae357b05b9df3f10e51ed1f1), -- cgit v1.2.3-1-g7c22 From 07d1a864d834cf0a5b94339197cbf73e3353ea93 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 20:29:55 +0300 Subject: v4.12 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 16 ++++++++-------- public/api/wekan.yml | 4 ++-- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad72793d..34bfe9ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.12 2020-06-08 Wekan release This release fixes the following CRITICAL SECURITY VULNERABILITIES: diff --git a/Stackerfile.yml b/Stackerfile.yml index 61c3db38..4ebaeff3 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.11.0" +appVersion: "v4.12.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index 2a0c7b39..edfda4fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.11.0", + "version": "v4.12.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index da891bec..56c40643 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.11.0", + "version": "v4.12.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index 9d3114fd..741c7f36 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
  • - Wekan REST API v4.11 + Wekan REST API v4.12
  • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
    -

    Wekan REST API v4.11

    +

    Wekan REST API v4.12

    Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

    @@ -11858,7 +11858,7 @@ System.out.println(response.toString()); "string" ], "icode": "string", - "boardView": "board-view-lists", + "boardView": "board-view-swimlanes", "listSortBy": "-modifiedat", "templatesBoardId": "string", "cardTemplatesSwimlaneId": "string", @@ -12514,7 +12514,7 @@ System.out.println(response.toString()); "string" ], "icode": "string", - "boardView": "board-view-lists", + "boardView": "board-view-swimlanes", "listSortBy": "-modifiedat", "templatesBoardId": "string", "cardTemplatesSwimlaneId": "string", @@ -15944,7 +15944,7 @@ UserSecurity "string" ], "icode": "string", - "boardView": "board-view-lists", + "boardView": "board-view-swimlanes", "listSortBy": "-modifiedat", "templatesBoardId": "string", "cardTemplatesSwimlaneId": "string", @@ -16113,7 +16113,7 @@ UserSecurity "string" ], "icode": "string", - "boardView": "board-view-lists", + "boardView": "board-view-swimlanes", "listSortBy": "-modifiedat", "templatesBoardId": "string", "cardTemplatesSwimlaneId": "string", @@ -16301,11 +16301,11 @@ UserSecurity boardView -board-view-lists +board-view-swimlanes boardView -board-view-swimlanes +board-view-lists boardView diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 40fcf4b4..33d1c246 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.11 + version: v4.12 description: | The REST API allows you to control and extend Wekan with ease. @@ -3132,8 +3132,8 @@ definitions: boardView field of the user type: string enum: - - board-view-lists - board-view-swimlanes + - board-view-lists - board-view-cal listSortBy: description: | diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index e2d67fbf..561ef612 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 = 411, + appVersion = 412, # Increment this for every release. - appMarketingVersion = (defaultText = "4.11.0~2020-06-04"), + appMarketingVersion = (defaultText = "4.12.0~2020-06-08"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 573ca73b45428cd3caac24175fa74fe15a443a02 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 8 Jun 2020 21:22:34 +0300 Subject: Use Docker Hub image, it did build faster this time. --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6a88ab93..cc60d294 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -115,11 +115,11 @@ services: # NOTE: Quay is currently not updated, use Docker Hub image below c) # a) For Wekan Meteor 1.8.x version at master branch, # using https://quay.io/wekan/wekan automatic builds - image: quay.io/wekan/wekan + #image: quay.io/wekan/wekan # b) Using specific Meteor 1.6.x version tag: # image: quay.io/wekan/wekan:v1.95 # c) Using Docker Hub automatic builds https://hub.docker.com/r/wekanteam/wekan - #image: wekanteam/wekan + image: wekanteam/wekan # image: wekanteam/wekan:v2.99 #------------------------------------------------------------------------------------- container_name: wekan-app -- cgit v1.2.3-1-g7c22 From 1aa8f502ae4626b9f2240f9cd57f6118b4ae5b8c Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Tue, 9 Jun 2020 17:05:53 +0200 Subject: Fix condition whether a card is in list This fixes the issues https://github.com/wekan/wekan/issues/3164, https://github.com/wekan/wekan/issues/3162, and https://github.com/wekan/wekan/issues/3163. While at it, remove now useless comments. --- client/components/swimlanes/swimlanes.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js index afd5da22..1fc97a89 100644 --- a/client/components/swimlanes/swimlanes.js +++ b/client/components/swimlanes/swimlanes.js @@ -23,15 +23,7 @@ function currentCardIsInThisList(listId, swimlaneId) { currentCard.listId === listId && currentCard.swimlaneId === swimlaneId ); - // OLD: Default view: board-view-lists - ////else return currentCard && currentCard.listId === listId; - // NEW: Default view: board-view-swimlanes - else - return ( - currentCard && - currentCard.listId === listId && - currentCard.swimlaneId === swimlaneId - ); + else return currentCard && currentCard.listId === listId; // https://github.com/wekan/wekan/issues/1623 // https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de -- cgit v1.2.3-1-g7c22 From 444fff47dc0355731fcd3a0f18591042af271453 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 9 Jun 2020 22:16:00 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34bfe9ac..bd00a46c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,27 @@ +# Upcoming Wekan release + +This release adds the following updates: + +- [OpenShift template updates: + 1) Remove status fields (this is created by Kubernetes at run time) + 2) The latest MongoDB by default available with OpenShift is 3.6 + 3) Change MongoDB service name to contain wekan to avoid potentially + conflicting with other mongodb instances in the same + project](https://github.com/wekan/wekan/pull/3158). + Thanks to jimmyjones2. + +and fixes the following bugs: + +- [Copy the labels only if the target board is different](https://github.com/wekan/wekan/pull/3154). + Thanks to marc1006. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.12 2020-06-08 Wekan release This release fixes the following CRITICAL SECURITY VULNERABILITIES: -- Fix XSS bug reported 2020-05-24 by [swsjona](https://twitter.com/swsjona): +- Fix XSS bug reported 2020-05-24 by [swsjona](https://twitter.com/swsjona): [Part 1](https://github.com/wekan/wekan/commit/1f85b25549b50602380f1745f19e5fe44fe36d6f), [Part 2](https://github.com/wekan/wekan/commit/fb44df981581354bf23a6928427ad2bf73c4550f), [Part 3](https://github.com/wekan/wekan/commit/99f68f36b028d6c75acf2e5b83585b1acee65f97), -- cgit v1.2.3-1-g7c22 From b6cc6c440dd6814da5f184212ecd0dc4e4c3e32f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 9 Jun 2020 22:27:34 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd00a46c..4f14322b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ and fixes the following bugs: - [Copy the labels only if the target board is different](https://github.com/wekan/wekan/pull/3154). Thanks to marc1006. +- [Fix condition whether a card is in list](https://github.com/wekan/wekan/pull/3165). + Thanks to marc1006. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From a562ee4ba1e8bb392bdfa6a2b29a65336ca171f3 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 9 Jun 2020 22:34:18 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f14322b..e74c33c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,10 @@ This release adds the following updates: -- [OpenShift template updates: +- [OpenShift template updates](https://github.com/wekan/wekan/pull/3158): 1) Remove status fields (this is created by Kubernetes at run time) 2) The latest MongoDB by default available with OpenShift is 3.6 - 3) Change MongoDB service name to contain wekan to avoid potentially - conflicting with other mongodb instances in the same - project](https://github.com/wekan/wekan/pull/3158). + 3) Change MongoDB service name to contain wekan to avoid potentially conflicting with other mongodb instances in the same project Thanks to jimmyjones2. and fixes the following bugs: -- cgit v1.2.3-1-g7c22 From c4df69a05bd48a61f2128f7dd2704cc017c256e6 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 9 Jun 2020 22:35:44 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e74c33c0..1cc31dba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,10 @@ This release adds the following updates: -- [OpenShift template updates](https://github.com/wekan/wekan/pull/3158): +- [OpenShift template updates](https://github.com/wekan/wekan/pull/3158), Thanks to jimmyjones2: 1) Remove status fields (this is created by Kubernetes at run time) 2) The latest MongoDB by default available with OpenShift is 3.6 - 3) Change MongoDB service name to contain wekan to avoid potentially conflicting with other mongodb instances in the same project - Thanks to jimmyjones2. + 3) Change MongoDB service name to contain wekan to avoid potentially conflicting with other mongodb instances in the same project. and fixes the following bugs: -- cgit v1.2.3-1-g7c22 From 2e93a975c4e546966109c5fe48613e722881b47e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 9 Jun 2020 22:41:46 +0300 Subject: v4.13 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 4 ++-- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cc31dba..88f5f451 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.13 2020-06-09 Wekan release This release adds the following updates: diff --git a/Stackerfile.yml b/Stackerfile.yml index 4ebaeff3..e0c2446c 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.12.0" +appVersion: "v4.13.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index edfda4fc..7823fe26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.12.0", + "version": "v4.13.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 56c40643..a7e5df96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.12.0", + "version": "v4.13.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index 741c7f36..b4068d09 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
    • - Wekan REST API v4.12 + Wekan REST API v4.13
    • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
      -

      Wekan REST API v4.12

      +

      Wekan REST API v4.13

      Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

      diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 33d1c246..41529cfa 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.12 + version: v4.13 description: | The REST API allows you to control and extend Wekan with ease. diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index 561ef612..f357c4ea 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 = 412, + appVersion = 413, # Increment this for every release. - appMarketingVersion = (defaultText = "4.12.0~2020-06-08"), + appMarketingVersion = (defaultText = "4.13.0~2020-06-09"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 5755ece33e9fc5967c0b726abed0912fde9612db Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Tue, 9 Jun 2020 23:32:00 +0200 Subject: Add user option to hide finished checklist items Add a user option to hide finished items in a checklist. --- client/components/cards/checklists.jade | 18 ++++++++++++++---- client/components/cards/checklists.js | 16 ++++++++++++++++ client/components/cards/checklists.styl | 13 +++++++++++++ i18n/en.i18n.json | 3 ++- models/users.js | 25 +++++++++++++++++++++++++ public/api/wekan.yml | 4 ++++ 6 files changed, 74 insertions(+), 5 deletions(-) diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 1b1e088a..25aa11b9 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -1,7 +1,17 @@ template(name="checklists") - h3 - i.fa.fa-check - | {{_ 'checklists'}} + .checklists-title + h3 + i.fa.fa-check + | {{_ 'checklists'}} + if currentUser.isBoardMember + .material-toggle-switch + span.toggle-switch-title {{_ 'hide-checked-items'}} + if hideCheckedItems + input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked") + else + input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton") + label.toggle-label(for="toggleHideCheckedItemsButton") + if toggleDeleteDialog.get .board-overlay#card-details-overlay +checklistDeleteDialog(checklist = checklistToDelete) @@ -86,7 +96,7 @@ template(name="checklistItems") | {{_ 'add-checklist-item'}}... template(name='checklistItemDetail') - .js-checklist-item.checklist-item + .js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if hideCheckedItems}} invisible{{/if}}{{/if}}") if canModifyCard .check-box-container .check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}") diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 29573d2b..17faa773 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -193,6 +193,9 @@ BlazeComponent.extendComponent({ } this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get()); }, + 'click #toggleHideCheckedItemsButton'() { + Meteor.call('toggleHideCheckedItems'); + }, }; return [ @@ -211,6 +214,14 @@ BlazeComponent.extendComponent({ }, }).register('checklists'); +Template.checklists.helpers({ + hideCheckedItems() { + const currentUser = Meteor.user(); + if (currentUser) return currentUser.hasHideCheckedItems(); + return false; + }, +}); + Template.checklistDeleteDialog.onCreated(() => { const $cardDetails = this.$('.card-details'); this.scrollState = { @@ -246,6 +257,11 @@ Template.checklistItemDetail.helpers({ !Meteor.user().isWorker() ); }, + hideCheckedItems() { + const user = Meteor.user(); + if (user) return user.hasHideCheckedItems(); + return false; + }, }); BlazeComponent.extendComponent({ diff --git a/client/components/cards/checklists.styl b/client/components/cards/checklists.styl index 0a6d688b..f8c36a12 100644 --- a/client/components/cards/checklists.styl +++ b/client/components/cards/checklists.styl @@ -16,6 +16,10 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item &:hover color: inherit +.checklists-title + display: flex + justify-content: space-between + .checklist-title .checkbox float: left @@ -99,6 +103,15 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item margin-top: 3px display: flex background: darken(white, 3%) + opacity: 1 + transition: height 0ms 400ms, opacity 400ms 0ms + height: auto + overflow: hidden + + &.is-checked.invisible + opacity: 0 + height: 0 + transition: height 0ms 0ms, opacity 600ms 0ms &.placeholder background: darken(white, 20%) diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 96862e47..f8820efe 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/models/users.js b/models/users.js index f3fc1046..2b5a059e 100644 --- a/models/users.js +++ b/models/users.js @@ -128,6 +128,13 @@ Users.attachSchema( type: Boolean, optional: true, }, + 'profile.hideCheckedItems': { + /** + * does the user want to hide checked checklist items? + */ + type: Boolean, + optional: true, + }, 'profile.hiddenSystemMessages': { /** * does the user want to hide system messages? @@ -483,6 +490,11 @@ Users.helpers({ return profile.showDesktopDragHandles || false; }, + hasHideCheckedItems() { + const profile = this.profile || {}; + return profile.hideCheckedItems || false; + }, + hasHiddenSystemMessages() { const profile = this.profile || {}; return profile.hiddenSystemMessages || false; @@ -612,6 +624,15 @@ Users.mutations({ }; }, + toggleHideCheckedItems() { + const value = this.hasHideCheckedItems(); + return { + $set: { + 'profile.hideCheckedItems': !value, + }, + }; + }, + toggleSystem(value = false) { return { $set: { @@ -690,6 +711,10 @@ Meteor.methods({ const user = Meteor.user(); user.toggleDesktopHandles(user.hasShowDesktopDragHandles()); }, + toggleHideCheckedItems() { + const user = Meteor.user(); + user.toggleHideCheckedItems(); + }, toggleSystemMessages() { const user = Meteor.user(); user.toggleSystem(user.hasHiddenSystemMessages()); diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 33d1c246..4391b4d6 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -3071,6 +3071,10 @@ definitions: description: | does the user want to hide system messages? type: boolean + hideCheckedItems: + description: | + does the user want to hide checked checklist items? + type: boolean hiddenSystemMessages: description: | does the user want to hide system messages? -- cgit v1.2.3-1-g7c22 From aa4bdf7efbaed50d2c6249929fdcd59af308cc22 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Tue, 9 Jun 2020 23:41:01 +0200 Subject: Strikethrough checked items --- client/components/cards/checklists.styl | 1 + 1 file changed, 1 insertion(+) diff --git a/client/components/cards/checklists.styl b/client/components/cards/checklists.styl index f8c36a12..0f4e7d33 100644 --- a/client/components/cards/checklists.styl +++ b/client/components/cards/checklists.styl @@ -141,6 +141,7 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item &.is-checked color: #8c8c8c font-style: italic + text-decoration: line-through & .viewer p margin-bottom: 2px -- cgit v1.2.3-1-g7c22 From 2d4f29cb5a300288196c94a03903bf70808efb0a Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 10 Jun 2020 15:17:27 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88f5f451..0c52ece8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# Upcoming Wekan release + +This release adds the following new features: + +- [Add user option to hide finished checklist items. Strikethrough checked + items](https://github.com/wekan/wekan/pull/3167). + Thanks to marc1006. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.13 2020-06-09 Wekan release This release adds the following updates: -- cgit v1.2.3-1-g7c22 From 06cacd7a5a974cb076dc457a15e544d5deb05441 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Wed, 10 Jun 2020 23:50:48 +0200 Subject: Fix infinite scrolling for activities This fixes the error: Uncaught TypeError: activitiesComponent.loadNextPage is not a function at constructor.reachNextPeak (sidebar.js:63) at constructor.BlazeComponent.callFirstWith (peerlibrary_blaze-components.js?hash=4049f7e3116e3d9e865392b9546e70dc479b9add:660) at constructor.scroll (infiniteScrolling.js:28) at peerlibrary_blaze-components.js?hash=4049f7e3116e3d9e865392b9546e70dc479b9add:469 at Object.Blaze._withCurrentView (view.js:533) at peerlibrary_blaze-components.js?hash=4049f7e3116e3d9e865392b9546e70dc479b9add:468 at Template._withTemplateInstanceFunc (template.js:490) at Blaze.View.eventMap. (peerlibrary_blaze-components.js?hash=4049f7e3116e3d9e865392b9546e70dc479b9add:467) at view.js:879 at Object.Blaze._withCurrentView (view.js:533) --- client/components/activities/activities.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index 23ab70ed..edfaab2a 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -7,7 +7,7 @@ BlazeComponent.extendComponent({ // XXX Should we use ReactiveNumber? this.page = new ReactiveVar(1); this.loadNextPageLocked = false; - const sidebar = this.parentComponent(); // XXX for some reason not working + const sidebar = Sidebar; sidebar.callFirstWith(null, 'resetNextPeak'); this.autorun(() => { let mode = this.data().mode; @@ -43,16 +43,15 @@ BlazeComponent.extendComponent({ }); }); }, -}).register('activities'); - -BlazeComponent.extendComponent({ loadNextPage() { if (this.loadNextPageLocked === false) { this.page.set(this.page.get() + 1); this.loadNextPageLocked = true; } }, +}).register('activities'); +BlazeComponent.extendComponent({ checkItem() { const checkItemId = this.currentData().activity.checklistItemId; const checkItem = ChecklistItems.findOne({ _id: checkItemId }); -- cgit v1.2.3-1-g7c22 From 1617577378fc17ca09fd3ef34f24e02c2889aa9f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 11 Jun 2020 15:27:11 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c52ece8..ae90415e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ This release adds the following new features: items](https://github.com/wekan/wekan/pull/3167). Thanks to marc1006. +and fixes the following bugs: + +- [Fix infinite scrolling for activities](https://github.com/wekan/wekan/pull/3168). + Thanks to marc1006. + Thanks to above GitHub users for their contributions and translators for their translations. # v4.13 2020-06-09 Wekan release -- cgit v1.2.3-1-g7c22 From e4de42d487b8d965276fdb7ce770cf58d562e766 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 11 Jun 2020 16:32:48 +0300 Subject: Update translations. --- i18n/ar.i18n.json | 3 ++- i18n/bg.i18n.json | 3 ++- i18n/br.i18n.json | 3 ++- i18n/ca.i18n.json | 3 ++- i18n/cs.i18n.json | 3 ++- i18n/da.i18n.json | 3 ++- i18n/de.i18n.json | 3 ++- i18n/el.i18n.json | 3 ++- i18n/en-GB.i18n.json | 3 ++- i18n/eo.i18n.json | 3 ++- i18n/es-AR.i18n.json | 3 ++- i18n/es-CL.i18n.json | 3 ++- i18n/es.i18n.json | 3 ++- i18n/eu.i18n.json | 3 ++- i18n/fa.i18n.json | 3 ++- i18n/fi.i18n.json | 3 ++- i18n/fr.i18n.json | 3 ++- i18n/gl.i18n.json | 3 ++- i18n/he.i18n.json | 3 ++- i18n/hi.i18n.json | 3 ++- i18n/hu.i18n.json | 3 ++- i18n/hy.i18n.json | 3 ++- i18n/id.i18n.json | 3 ++- i18n/ig.i18n.json | 3 ++- i18n/it.i18n.json | 7 ++++--- i18n/ja.i18n.json | 3 ++- i18n/ka.i18n.json | 3 ++- i18n/km.i18n.json | 3 ++- i18n/ko.i18n.json | 3 ++- i18n/lv.i18n.json | 3 ++- i18n/mk.i18n.json | 3 ++- i18n/mn.i18n.json | 3 ++- i18n/nb.i18n.json | 3 ++- i18n/nl.i18n.json | 3 ++- i18n/oc.i18n.json | 3 ++- i18n/pl.i18n.json | 3 ++- i18n/pt-BR.i18n.json | 3 ++- i18n/pt.i18n.json | 3 ++- i18n/ro.i18n.json | 3 ++- i18n/ru.i18n.json | 3 ++- i18n/sl.i18n.json | 3 ++- i18n/sr.i18n.json | 3 ++- i18n/sv.i18n.json | 3 ++- i18n/sw.i18n.json | 3 ++- i18n/ta.i18n.json | 3 ++- i18n/th.i18n.json | 3 ++- i18n/tr.i18n.json | 3 ++- i18n/uk.i18n.json | 3 ++- i18n/vi.i18n.json | 3 ++- i18n/zh-CN.i18n.json | 3 ++- i18n/zh-HK.i18n.json | 3 ++- i18n/zh-TW.i18n.json | 3 ++- 52 files changed, 106 insertions(+), 54 deletions(-) diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index 4441143f..07d42f3d 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json index b9699b8f..88725347 100644 --- a/i18n/bg.i18n.json +++ b/i18n/bg.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index 67217ab9..bd18ada8 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index 33e88763..56d99357 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index 1ff7cfda..8fa3f9e8 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json index a78e76ef..18611591 100644 --- a/i18n/da.i18n.json +++ b/i18n/da.i18n.json @@ -808,5 +808,6 @@ "voting": "Afstemning", "archived": "Arkiveret", "delete-linked-card-before-this-card": "Du kan ikke slette dette kort før der slettes sammenkædede kort som har", - "delete-linked-cards-before-this-list": "Du kan ikke slette denne liste før der slettes sammenkædede kort, der peger til kort i denne liste" + "delete-linked-cards-before-this-list": "Du kan ikke slette denne liste før der slettes sammenkædede kort, der peger til kort i denne liste", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index f0a353a6..e26b0ca2 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -808,5 +808,6 @@ "voting": "Abstimunng", "archived": "Archiviert", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json index e6024f40..ef61a0dc 100644 --- a/i18n/el.i18n.json +++ b/i18n/el.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 0795c509..326bc396 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index c83e3f96..66f08510 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json index 0c60079a..1819d0fd 100644 --- a/i18n/es-AR.i18n.json +++ b/i18n/es-AR.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/es-CL.i18n.json b/i18n/es-CL.i18n.json index 06e9781b..a29458a3 100644 --- a/i18n/es-CL.i18n.json +++ b/i18n/es-CL.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 7063d4a2..d952d332 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -808,5 +808,6 @@ "voting": "Votar", "archived": "Archivado", "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" + "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": "Hide checked items" } diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index b96705ce..3ce70123 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index eb2b581b..6266649e 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index bb58a6a2..22efb655 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -808,5 +808,6 @@ "voting": "Äänestys", "archived": "Arkistoitu", "delete-linked-card-before-this-card": "Et voi poistaa tätä korttia ennenkuin ensin poistat linkitetyn kortin jolla on", - "delete-linked-cards-before-this-list": "Et voi poistaa tätä listaa ennenkuin poistat linkitetyt kortit jotka osoittavat kortteihin tässä listassa" + "delete-linked-cards-before-this-list": "Et voi poistaa tätä listaa ennenkuin poistat linkitetyt kortit jotka osoittavat kortteihin tässä listassa", + "hide-checked-items": "Piilota ruksatut kohdat" } diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 0ffbf867..620b85c6 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -808,5 +808,6 @@ "voting": "Vote", "archived": "Archivé", "delete-linked-card-before-this-card": "Vous ne pouvez pas supprimer cette carte avant d'avoir d'abord supprimé la carte liée qui a", - "delete-linked-cards-before-this-list": "Vous ne pouvez pas supprimer cette liste avant d'avoir d'abord supprimé les cartes liées qui pointent vers des cartes de cette liste" + "delete-linked-cards-before-this-list": "Vous ne pouvez pas supprimer cette liste avant d'avoir d'abord supprimé les cartes liées qui pointent vers des cartes de cette liste", + "hide-checked-items": "Cacher les éléments cochés" } diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index 266bcc26..20f199e5 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 235be747..406e671d 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -808,5 +808,6 @@ "voting": "הצבעה", "archived": "בארכיון", "delete-linked-card-before-this-card": "לא ניתן למחוק את הכרטיס הזה לפני שמוחקים את הכרטיס המקושר שיש לו", - "delete-linked-cards-before-this-list": "לא ניתן למחוק את הרשימה הזו לפני שמוחקים את הכרטיסים שמצביעים לכרטיסים ברשימה הזו" + "delete-linked-cards-before-this-list": "לא ניתן למחוק את הרשימה הזו לפני שמוחקים את הכרטיסים שמצביעים לכרטיסים ברשימה הזו", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json index 50471148..94ca288b 100644 --- a/i18n/hi.i18n.json +++ b/i18n/hi.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index e2450aa8..5064ff05 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json index ead8eb6c..8c042e5e 100644 --- a/i18n/hy.i18n.json +++ b/i18n/hy.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index de036359..02341ee7 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json index c81e041e..518c480c 100644 --- a/i18n/ig.i18n.json +++ b/i18n/ig.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index b3ddf3d7..f4732dcd 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -256,8 +256,8 @@ "current": "corrente", "custom-field-delete-pop": "Non potrai tornare indietro. Questa azione rimuoverà questo campo personalizzato da tutte le schede ed eliminerà ogni sua traccia.", "custom-field-checkbox": "Casella di scelta", - "custom-field-currency": "Currency", - "custom-field-currency-option": "Currency Code", + "custom-field-currency": "Valuta", + "custom-field-currency-option": "Codice Valuta", "custom-field-date": "Data", "custom-field-dropdown": "Lista a discesa", "custom-field-dropdown-none": "(niente)", @@ -808,5 +808,6 @@ "voting": "Votazione", "archived": "Archiviato", "delete-linked-card-before-this-card": "Non puoi eliminare questa scheda prima di avere eliminato una scheda collegata che ha", - "delete-linked-cards-before-this-list": "Non puoi eliminare questa lista prima di avere eliminato le schede collegate che puntano su schede in questa lista" + "delete-linked-cards-before-this-list": "Non puoi eliminare questa lista prima di avere eliminato le schede collegate che puntano su schede in questa lista", + "hide-checked-items": "Nascondi articoli controllati" } diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index 3ea079db..5fac2a9f 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -808,5 +808,6 @@ "voting": "投票", "archived": "アーカイブ", "delete-linked-card-before-this-card": "カード内にある、リンクされているカードを削除しなければ、このカードは削除できません", - "delete-linked-cards-before-this-list": "リスト内にある、他のカードを参照しているカードを削除しなければ、このリストは削除できません" + "delete-linked-cards-before-this-list": "リスト内にある、他のカードを参照しているカードを削除しなければ、このリストは削除できません", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json index c3190afb..bdb532a9 100644 --- a/i18n/ka.i18n.json +++ b/i18n/ka.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json index b9ec2c2f..362c811b 100644 --- a/i18n/km.i18n.json +++ b/i18n/km.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index 5b838835..e969206d 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json index 77e28271..40d760dd 100644 --- a/i18n/lv.i18n.json +++ b/i18n/lv.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json index 51236fd8..8e8ea54d 100644 --- a/i18n/mk.i18n.json +++ b/i18n/mk.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json index 57e9573c..55b6a98c 100644 --- a/i18n/mn.i18n.json +++ b/i18n/mn.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index ddae9171..8132f212 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index 9720b885..a8c9c1f1 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -808,5 +808,6 @@ "voting": "Stemmen", "archived": "Gearchiveerd", "delete-linked-card-before-this-card": "Je kunt deze kaart niet verwijderen voordat de gekoppelde kaart is verwijderd ", - "delete-linked-cards-before-this-list": "Je kunt deze lijst niet verwijderen voordat de gekoppelde kaarten verwijderd zijn die verwijzen naar kaarten in deze lijst" + "delete-linked-cards-before-this-list": "Je kunt deze lijst niet verwijderen voordat de gekoppelde kaarten verwijderd zijn die verwijzen naar kaarten in deze lijst", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/oc.i18n.json b/i18n/oc.i18n.json index bcd1b039..93b9c8a1 100644 --- a/i18n/oc.i18n.json +++ b/i18n/oc.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index b27706d4..20807431 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -808,5 +808,6 @@ "voting": "Głosowanie", "archived": "Zarchiwizowany", "delete-linked-card-before-this-card": "Nie możesz usunąć tej karty, dopóki nie usuniesz podpiętej karty, w której są", - "delete-linked-cards-before-this-list": "Nie możesz usunąć tej karty, dopóki nie usuniesz podpiętych kart, które wskazują na karty w tej liście" + "delete-linked-cards-before-this-list": "Nie możesz usunąć tej karty, dopóki nie usuniesz podpiętych kart, które wskazują na karty w tej liście", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index 7533c8c4..44497631 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -808,5 +808,6 @@ "voting": "Votação", "archived": "Arquivado", "delete-linked-card-before-this-card": "Você não pode excluir este cartão antes de excluir primeiro o cartão vinculado que possui", - "delete-linked-cards-before-this-list": "Você não pode excluir esta lista antes de excluir primeiro os cartões vinculados que estão apontando para os cartões nesta lista" + "delete-linked-cards-before-this-list": "Você não pode excluir esta lista antes de excluir primeiro os cartões vinculados que estão apontando para os cartões nesta lista", + "hide-checked-items": "Esconder itens marcados" } diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index 05075ac8..3d9faaa8 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Arquivado", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index 927fb451..92d530d2 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index c6264cf4..31c98d7c 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -808,5 +808,6 @@ "voting": "Голосование", "archived": "Архивировано", "delete-linked-card-before-this-card": "Вы не можете удалить карточку, не удалив связанную c ней карточку, которая имеет ", - "delete-linked-cards-before-this-list": "Вы не можете удалить этот список, не удалив карточки, которые указывают на карточки в этом списке" + "delete-linked-cards-before-this-list": "Вы не можете удалить этот список, не удалив карточки, которые указывают на карточки в этом списке", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/sl.i18n.json b/i18n/sl.i18n.json index f14d60b6..e7bafc55 100644 --- a/i18n/sl.i18n.json +++ b/i18n/sl.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index 66068920..94824dc3 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index bf2d3ff4..336fbd3a 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -808,5 +808,6 @@ "voting": "Röstning", "archived": "Arkiverad", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json index d908b12f..01ef8636 100644 --- a/i18n/sw.i18n.json +++ b/i18n/sw.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index 089b65c2..8ec2f518 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index bca08fe2..4d6ec609 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index ee3bd9c1..10dcd6ea 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 2f675da4..d9023866 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index c0d0c815..9f877399 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index a6300a23..a5a1433a 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -808,5 +808,6 @@ "voting": "投票", "archived": "存档", "delete-linked-card-before-this-card": "在你首次删除卡片前你无法删除此选项卡片", - "delete-linked-cards-before-this-list": "在首先删除指向此列表中的卡的链接卡之前,不能删除此列表" + "delete-linked-cards-before-this-list": "在首先删除指向此列表中的卡的链接卡之前,不能删除此列表", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/zh-HK.i18n.json b/i18n/zh-HK.i18n.json index 0a01b931..b473bd61 100644 --- a/i18n/zh-HK.i18n.json +++ b/i18n/zh-HK.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 945d71f3..b34d3901 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -808,5 +808,6 @@ "voting": "Voting", "archived": "Archived", "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list" + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items" } -- cgit v1.2.3-1-g7c22 From 06b548f12ed853692db78dbbfbe7988382c0fdee Mon Sep 17 00:00:00 2001 From: Nico Date: Thu, 11 Jun 2020 19:52:44 +0200 Subject: edit_card start vote better visibility what was voted --- client/components/cards/cardDetails.jade | 10 +++++++-- client/components/cards/cardDetails.js | 22 +++---------------- client/components/cards/minicard.jade | 4 ++-- client/components/cards/minicard.styl | 5 +++++ models/cards.js | 37 ++++++++++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 23 deletions(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 2aa77627..dda95e3e 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -220,8 +220,14 @@ template(name="cardDetails") +viewer = getVoteQuestion if showVotingButtons - button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") {{_ 'vote-for-it'}} - button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") {{_ 'vote-against'}} + button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") + if voteState + i.fa.fa-thumbs-up + {{_ 'vote-for-it'}} + button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") + if $eq voteState false + i.fa.fa-thumbs-down + {{_ 'vote-against'}} //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 11e010d4..a91d9b6e 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -38,22 +38,6 @@ BlazeComponent.extendComponent({ Meteor.subscribe('unsaved-edits'); }, - voteState() { - const card = this.currentData(); - const userId = Meteor.userId(); - let state; - if (card.vote) { - if (card.vote.positive) { - state = _.contains(card.vote.positive, userId); - if (state === true) return true; - } - if (card.vote.negative) { - state = _.contains(card.vote.negative, userId); - if (state === true) return false; - } - } - return null; - }, isWatching() { const card = this.currentData(); return card.findWatcher(Meteor.userId()); @@ -412,9 +396,9 @@ BlazeComponent.extendComponent({ const forIt = $(e.target).hasClass('js-vote-positive'); let newState = null; if ( - this.voteState() === null || - (this.voteState() === false && forIt) || - (this.voteState() === true && !forIt) + this.data().voteState() === null || + (this.data().voteState() === false && forIt) || + (this.data().voteState() === true && !forIt) ) { newState = forIt; } diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade index 8afe1976..03511e0a 100644 --- a/client/components/cards/minicard.jade +++ b/client/components/cards/minicard.jade @@ -106,9 +106,9 @@ template(name="minicard") span.badge-icon.fa.fa-align-left if getVoteQuestion .badge.badge-state-image-only(title=getVoteQuestion) - span.badge-icon.fa.fa-thumbs-up + span.badge-icon.fa.fa-thumbs-up(class="{{#if voteState}}text-green{{/if}}") span.badge-text {{ voteCountPositive }} - span.badge-icon.fa.fa-thumbs-down + span.badge-icon.fa.fa-thumbs-down(class="{{#if $eq voteState false}}text-red{{/if}}") span.badge-text {{ voteCountNegative }} if attachments.count .badge diff --git a/client/components/cards/minicard.styl b/client/components/cards/minicard.styl index 7d72a588..03d242ac 100644 --- a/client/components/cards/minicard.styl +++ b/client/components/cards/minicard.styl @@ -299,3 +299,8 @@ minicard-color(background, color...) .minicard-indigo minicard-color(#4b0082, #ffffff) //White text for better visibility + +.text-red + color:red +.text-green + color:green diff --git a/models/cards.js b/models/cards.js index 2e297d63..1ccc836a 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1112,6 +1112,21 @@ Cards.helpers({ return Users.find({ _id: { $in: this.vote.negative } }); return []; }, + voteState() { + const userId = Meteor.userId(); + let state; + if (this.vote) { + if (this.vote.positive) { + state = _.contains(this.vote.positive, userId); + if (state === true) return true; + } + if (this.vote.negative) { + state = _.contains(this.vote.negative, userId); + if (state === true) return false; + } + } + return null; + }, getId() { if (this.isLinked()) { @@ -2374,6 +2389,10 @@ if (Meteor.isServer) { * @param {boolean} [isOverTime] the new isOverTime field of the card * @param {string} [customFields] the new customFields value of the card * @param {string} [color] the new color of the card + * @param {Object} [vote] the vote object + * @param {string} vote.question the vote question + * @param {boolean} vote.public show who voted what + * @param {boolean} vote.allowNonBoardMembers allow all logged in users to vote? * @return_type {_id: string} */ JsonRoutes.add( @@ -2473,6 +2492,24 @@ if (Meteor.isServer) { { $set: { color: newColor } }, ); } + if (req.body.hasOwnProperty('vote')) { + const newVote = req.body.vote; + newVote.positive = []; + newVote.negative = []; + if (!newVote.hasOwnProperty('public')) newVote.public = false; + if (!newVote.hasOwnProperty('allowNonBoardMembers')) + newVote.allowNonBoardMembers = false; + + Cards.direct.update( + { + _id: paramCardId, + listId: paramListId, + boardId: paramBoardId, + archived: false, + }, + { $set: { vote: newVote } }, + ); + } if (req.body.hasOwnProperty('labelIds')) { let newlabelIds = req.body.labelIds; if (_.isString(newlabelIds)) { -- cgit v1.2.3-1-g7c22 From 336a22555f7c6baf81587c6f10e818a7c1cdce90 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Fri, 12 Jun 2020 07:22:36 +0200 Subject: openapi: fix jsdoc/operation matching The script was considering that the operation associated to a jsdoc was declared on the line just after the end of the jsdoc. Turns out that adding new lines makes the code clearer, but the python script was then ignoring some jsdocs. Change the behaviour to consider that the jsdoc associated with an operation is the last one declared after the end of the previous operation. Fixes #3169 --- openapi/generate_openapi.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/openapi/generate_openapi.py b/openapi/generate_openapi.py index 54526416..b843feff 100644 --- a/openapi/generate_openapi.py +++ b/openapi/generate_openapi.py @@ -814,13 +814,21 @@ def parse_schemas(schemas_dir): for d in data] entry_points.extend(schema_entry_points) + end_of_previous_operation = -1 + # try to match JSDoc to the operations for entry_point in schema_entry_points: operation = entry_point.method # POST/GET/PUT/DELETE + + # find all jsdocs that end before the current operation, + # the last item in the list is the one we need jsdoc = [j for j in jsdocs - if j.loc.end.line + 1 == operation.loc.start.line] + if j.loc.end.line + 1 <= operation.loc.start.line and + j.loc.start.line > end_of_previous_operation] if bool(jsdoc): - entry_point.doc = jsdoc[0] + entry_point.doc = jsdoc[-1] + + end_of_previous_operation = operation.loc.end.line except TypeError: logger.warning(context.txt_for(statement)) logger.error('{}:{}-{} can not parse {}'.format(path, -- cgit v1.2.3-1-g7c22 From f1660e3b9f1c83b8d786f578bfe3b7d0f53a81bd Mon Sep 17 00:00:00 2001 From: Henrik Gustafsson <3796374+hgustafsson@users.noreply.github.com> Date: Fri, 5 Jun 2020 14:37:07 -0400 Subject: Alignment and spacing of minicard labels --- client/components/cards/minicard.styl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/components/cards/minicard.styl b/client/components/cards/minicard.styl index 7d72a588..1a923a68 100644 --- a/client/components/cards/minicard.styl +++ b/client/components/cards/minicard.styl @@ -87,7 +87,9 @@ width: 11px height: @width border-radius: 2px - margin-left: 3px + margin-right: 3px + margin-bottom: 3px + .minicard-custom-fields display:block; .minicard-custom-field -- cgit v1.2.3-1-g7c22 From 6e0ae161adda76b12370fd0b9b6049f0d222e612 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Sun, 14 Jun 2020 21:28:28 +0200 Subject: Remove top and bottom margin for hidden checklist items Remove top and bottom margin for hidden checklist items, otherwise there could be a gap between unchecked items if multiple hidden/checked items were between them. --- client/components/cards/checklists.styl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/components/cards/checklists.styl b/client/components/cards/checklists.styl index 0f4e7d33..e9b0fcd8 100644 --- a/client/components/cards/checklists.styl +++ b/client/components/cards/checklists.styl @@ -112,6 +112,8 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item opacity: 0 height: 0 transition: height 0ms 0ms, opacity 600ms 0ms + margin-top: 0 + margin-bottom: 0 &.placeholder background: darken(white, 20%) -- cgit v1.2.3-1-g7c22 From b144fab042fd486d2ec3731b6cc286059002af7a Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 18:05:26 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae90415e..e0d5a3f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ This release adds the following new features: - [Add user option to hide finished checklist items. Strikethrough checked items](https://github.com/wekan/wekan/pull/3167). Thanks to marc1006. +- [Added the possibility to start a vote via API edit_card. And added some better visibility to see what was + voted](https://github.com/wekan/wekan/pull/3170). + Thanks to NicoP-S. and fixes the following bugs: -- cgit v1.2.3-1-g7c22 From d42c4fb4f64d551dd341f063ad45a15a398dc59e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 18:14:35 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0d5a3f7..cfbe2c56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,17 +2,19 @@ This release adds the following new features: -- [Add user option to hide finished checklist items. Strikethrough checked - items](https://github.com/wekan/wekan/pull/3167). +- [Add user option to hide finished checklist items. Strikethrough checked items](https://github.com/wekan/wekan/pull/3167). Thanks to marc1006. -- [Added the possibility to start a vote via API edit_card. And added some better visibility to see what was - voted](https://github.com/wekan/wekan/pull/3170). +- [Added the possibility to start a vote via API edit_card. And added some better visibility to see what was voted](https://github.com/wekan/wekan/pull/3170). Thanks to NicoP-S. and fixes the following bugs: - [Fix infinite scrolling for activities](https://github.com/wekan/wekan/pull/3168). Thanks to marc1006. +- [Remove top and bottom margin for hidden checklist items](https://github.com/wekan/wekan/pull/3172). + Thanks to marc1006. +- [Alignment and spacing of minicard labels](https://github.com/wekan/wekan/pull/3174). + Thanks to hgustafsson. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From 100e2d4696a0b76947d1949c5f80be156ecfc217 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 18:17:18 +0300 Subject: Update translations. --- i18n/fa.i18n.json | 16 ++++++++-------- i18n/he.i18n.json | 2 +- i18n/nl.i18n.json | 6 +++--- i18n/ru.i18n.json | 6 +++--- i18n/zh-CN.i18n.json | 6 +++--- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index 6266649e..fb5a672e 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -164,15 +164,15 @@ "cardStartVotingPopup-title": "شروع به رای", "positiveVoteMembersPopup-title": "طرفداران", "negativeVoteMembersPopup-title": "مخالفان", - "card-edit-voting": "Edit voting", - "editVoteEndDatePopup-title": "Change vote end date", - "allowNonBoardMembers": "Allow all logged in users", + "card-edit-voting": "ویرایش رای", + "editVoteEndDatePopup-title": "تغییر تاریخ پایان رای گیری", + "allowNonBoardMembers": "اجازه دادن به همه کاربران وارد شده", "vote-question": "سوال رای گیری", "vote-public": "نمایش چه کسی به چه رای داده است", - "vote-for-it": "for it", + "vote-for-it": "برای این", "vote-against": "بر خلاف", - "deleteVotePopup-title": "Delete vote?", - "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.", + "deleteVotePopup-title": "رای حذف شود ؟", + "vote-delete-pop": "حذف کردن به صورت دائمی هست و قابل برگشت نیست.", "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟", "cardDetailsActionsPopup-title": "اعمال کارت", "cardLabelsPopup-title": "برچسب ها", @@ -256,8 +256,8 @@ "current": "جاری", "custom-field-delete-pop": "این اقدام فیلدشخصی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد", "custom-field-checkbox": "جعبه انتخابی", - "custom-field-currency": "Currency", - "custom-field-currency-option": "Currency Code", + "custom-field-currency": "واحد پولی", + "custom-field-currency-option": "کد واحد پولی", "custom-field-date": "تاریخ", "custom-field-dropdown": "لیست افتادنی", "custom-field-dropdown-none": "(هیچ)", diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 406e671d..ed29e669 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -809,5 +809,5 @@ "archived": "בארכיון", "delete-linked-card-before-this-card": "לא ניתן למחוק את הכרטיס הזה לפני שמוחקים את הכרטיס המקושר שיש לו", "delete-linked-cards-before-this-list": "לא ניתן למחוק את הרשימה הזו לפני שמוחקים את הכרטיסים שמצביעים לכרטיסים ברשימה הזו", - "hide-checked-items": "Hide checked items" + "hide-checked-items": "הסתרת הפריטים שסומנו" } diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index a8c9c1f1..9c73f54f 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -256,8 +256,8 @@ "current": "Huidige", "custom-field-delete-pop": "Er is geen herstelmogelijkheid. Deze actie zal dit maatwerkveld van alle kaarten verwijderen en de bijbehorende historie wissen.", "custom-field-checkbox": "Checkbox", - "custom-field-currency": "Currency", - "custom-field-currency-option": "Currency Code", + "custom-field-currency": "Valuta", + "custom-field-currency-option": "Valuta Teken", "custom-field-date": "Datum", "custom-field-dropdown": "Dropdown Lijst", "custom-field-dropdown-none": "(geen)", @@ -809,5 +809,5 @@ "archived": "Gearchiveerd", "delete-linked-card-before-this-card": "Je kunt deze kaart niet verwijderen voordat de gekoppelde kaart is verwijderd ", "delete-linked-cards-before-this-list": "Je kunt deze lijst niet verwijderen voordat de gekoppelde kaarten verwijderd zijn die verwijzen naar kaarten in deze lijst", - "hide-checked-items": "Hide checked items" + "hide-checked-items": "Verberg aangevinkte items" } diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 31c98d7c..fbbb38aa 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -256,8 +256,8 @@ "current": "текущий", "custom-field-delete-pop": "Отменить нельзя. Это удалит настраиваемое поле со всех карт и уничтожит его историю.", "custom-field-checkbox": "Галочка", - "custom-field-currency": "Currency", - "custom-field-currency-option": "Currency Code", + "custom-field-currency": "Валюта", + "custom-field-currency-option": "Код валюты", "custom-field-date": "Дата", "custom-field-dropdown": "Выпадающий список", "custom-field-dropdown-none": "(нет)", @@ -809,5 +809,5 @@ "archived": "Архивировано", "delete-linked-card-before-this-card": "Вы не можете удалить карточку, не удалив связанную c ней карточку, которая имеет ", "delete-linked-cards-before-this-list": "Вы не можете удалить этот список, не удалив карточки, которые указывают на карточки в этом списке", - "hide-checked-items": "Hide checked items" + "hide-checked-items": "Спрятать отмеченные" } diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index a5a1433a..1698517c 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -256,8 +256,8 @@ "current": "当前", "custom-field-delete-pop": "没有撤销,此动作将从所有卡片中移除自定义字段并销毁历史。", "custom-field-checkbox": "选择框", - "custom-field-currency": "Currency", - "custom-field-currency-option": "Currency Code", + "custom-field-currency": "货币", + "custom-field-currency-option": "货币代码", "custom-field-date": "日期", "custom-field-dropdown": "下拉列表", "custom-field-dropdown-none": "(无)", @@ -809,5 +809,5 @@ "archived": "存档", "delete-linked-card-before-this-card": "在你首次删除卡片前你无法删除此选项卡片", "delete-linked-cards-before-this-list": "在首先删除指向此列表中的卡的链接卡之前,不能删除此列表", - "hide-checked-items": "Hide checked items" + "hide-checked-items": "隐藏选中项" } -- cgit v1.2.3-1-g7c22 From 3b2b1087447bc8613baa8254bfec55e3d485bdc4 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 19:55:56 +0300 Subject: Fix: Unable to delete a custom field in a board. Thanks to xet7 ! Fixes #2605 --- models/customFields.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/models/customFields.js b/models/customFields.js index 9df635ba..83b47fc0 100644 --- a/models/customFields.js +++ b/models/customFields.js @@ -172,16 +172,14 @@ function customFieldDeletion(userId, doc) { function customFieldEdit(userId, doc) { const card = Cards.findOne(doc.cardId); const customFieldValue = Activities.findOne({ customFieldId: doc._id }).value; - const boardId = card.boardId; - //boardId: doc.boardIds[0], // We are creating a customField, it has only one boardId Activities.insert({ userId, activityType: 'setCustomField', - boardId, + boardId: doc.boardIds[0], // We are creating a customField, it has only one boardId customFieldId: doc._id, customFieldValue, - listId: card.listId, - swimlaneId: card.swimlaneId, + listId: doc.listId, + swimlaneId: doc.swimlaneId, }); } @@ -206,8 +204,8 @@ if (Meteor.isServer) { Activities.remove({ customFieldId: doc._id, boardId: modifier.$pull.boardIds, - listId: card.listId, - swimlaneId: card.swimlaneId, + listId: doc.listId, + swimlaneId: doc.swimlaneId, }); } else if (_.contains(fieldNames, 'boardIds') && modifier.$push) { Activities.insert({ -- cgit v1.2.3-1-g7c22 From 71cbac358bb4483c661a3b0b62a6ae3790806109 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 19:59:33 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfbe2c56..d98f65fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ and fixes the following bugs: Thanks to marc1006. - [Alignment and spacing of minicard labels](https://github.com/wekan/wekan/pull/3174). Thanks to hgustafsson. +- [Fix: Unable to delete a custom field in a board](https://github.com/wekan/wekan/commit/3b2b1087447bc8613baa8254bfec55e3d485bdc4). + Thanks to xet7. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From 8f34cdc279602e97085e0a504f7716495349f83c Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 20:02:39 +0300 Subject: Update dependencies. --- .meteor/versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.meteor/versions b/.meteor/versions index 71815aa7..7a6bd733 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,7 +1,7 @@ 3stack:presence@1.1.2 accounts-base@1.6.0 accounts-oauth@1.2.0 -accounts-password@1.6.0 +accounts-password@1.6.1 aldeed:collection2@2.10.0 aldeed:collection2-core@1.2.0 aldeed:schema-deny@1.1.0 -- cgit v1.2.3-1-g7c22 From a6d4f445fba4d32b69407e7ea8376ce5b444fba2 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 20:08:20 +0300 Subject: v4.14 --- CHANGELOG.md | 7 ++++++- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 24 ++++++++++++++++++++++-- public/api/wekan.yml | 9 +++++++-- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 40 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d98f65fc..7b1d647d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.14 2020-06-16 Wekan release This release adds the following new features: @@ -7,6 +7,11 @@ This release adds the following new features: - [Added the possibility to start a vote via API edit_card. And added some better visibility to see what was voted](https://github.com/wekan/wekan/pull/3170). Thanks to NicoP-S. +and adds the following updates: + +- [Update dependencies](https://github.com/wekan/wekan/commit/8f34cdc279602e97085e0a504f7716495349f83c). + Thanks to xet7. + and fixes the following bugs: - [Fix infinite scrolling for activities](https://github.com/wekan/wekan/pull/3168). diff --git a/Stackerfile.yml b/Stackerfile.yml index e0c2446c..553292fd 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.13.0" +appVersion: "v4.14.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index 7823fe26..c5687df5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.13.0", + "version": "v4.14.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a7e5df96..6eaa2462 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.13.0", + "version": "v4.14.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index b4068d09..23ada44a 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
      • - Wekan REST API v4.13 + Wekan REST API v4.14
      • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
        -

        Wekan REST API v4.13

        +

        Wekan REST API v4.14

        Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

        @@ -7302,6 +7302,7 @@ $.ajax({ "parentId": "string", "description": "string", "color": "string", + "vote": "string", "labelIds": "string", "requestedBy": "string", "assignedBy": "string", @@ -7413,6 +7414,7 @@ System.out.println(response.toString()); parentId: string description: string color: string +vote: string labelIds: string requestedBy: string assignedBy: string @@ -7511,6 +7513,13 @@ System.out.println(response.toString()); the color value +» vote +body +string +true +the vote value + + » labelIds body string @@ -11842,6 +11851,7 @@ System.out.println(response.toString()); ], "fullname": "string", "showDesktopDragHandles": true, + "hideCheckedItems": true, "hiddenSystemMessages": true, "hiddenMinicardLabelText": true, "initials": "string", @@ -12498,6 +12508,7 @@ System.out.println(response.toString()); ], "fullname": "string", "showDesktopDragHandles": true, + "hideCheckedItems": true, "hiddenSystemMessages": true, "hiddenMinicardLabelText": true, "initials": "string", @@ -15928,6 +15939,7 @@ UserSecurity ], "fullname": "string", "showDesktopDragHandles": true, + "hideCheckedItems": true, "hiddenSystemMessages": true, "hiddenMinicardLabelText": true, "initials": "string", @@ -16097,6 +16109,7 @@ UserSecurity ], "fullname": "string", "showDesktopDragHandles": true, + "hideCheckedItems": true, "hiddenSystemMessages": true, "hiddenMinicardLabelText": true, "initials": "string", @@ -16163,6 +16176,13 @@ UserSecurity does the user want to hide system messages? +hideCheckedItems +boolean +false +none +does the user want to hide checked checklist items? + + hiddenSystemMessages boolean false diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 4a2d929b..2aa49922 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.13 + version: v4.14 description: | The REST API allows you to control and extend Wekan with ease. @@ -1424,6 +1424,11 @@ paths: description: the color value type: string required: true + - name: vote + in: formData + description: the vote value + type: string + required: true - name: labelIds in: formData description: the labelIds value @@ -3073,7 +3078,7 @@ definitions: type: boolean hideCheckedItems: description: | - does the user want to hide checked checklist items? + does the user want to hide checked checklist items? type: boolean hiddenSystemMessages: description: | diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index f357c4ea..08e9c9a8 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 = 413, + appVersion = 414, # Increment this for every release. - appMarketingVersion = (defaultText = "4.13.0~2020-06-09"), + appMarketingVersion = (defaultText = "4.14.0~2020-06-16"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From f1587753cb0bba38e4b1df2e0300d3dc2826da72 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 20:30:15 +0300 Subject: Fix lint errors. --- client/components/cards/cardDetails.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index dda95e3e..d0cfe5bc 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -223,11 +223,11 @@ template(name="cardDetails") button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") if voteState i.fa.fa-thumbs-up - {{_ 'vote-for-it'}} + | {{_ 'vote-for-it'}} button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") if $eq voteState false i.fa.fa-thumbs-down - {{_ 'vote-against'}} + | {{_ 'vote-against'}} //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard -- cgit v1.2.3-1-g7c22 From e6629779f77676eadfe4465c407f0bee0ec64061 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 20:34:28 +0300 Subject: Fix lint errors. --- client/components/cards/cardDetails.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index d0cfe5bc..dabee971 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -223,11 +223,11 @@ template(name="cardDetails") button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") if voteState i.fa.fa-thumbs-up - | {{_ 'vote-for-it'}} + | {{_ 'vote-for-it'}} button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") if $eq voteState false i.fa.fa-thumbs-down - | {{_ 'vote-against'}} + | {{_ 'vote-against'}} //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard -- cgit v1.2.3-1-g7c22 From 983714cd7298746dd7437b91cc9464b23b9a1bfd Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 16 Jun 2020 20:40:12 +0300 Subject: v4.15 --- CHANGELOG.md | 10 ++++++++++ Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 4 ++-- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b1d647d..528ac066 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# v4.15 2020-06-16 Wekan release + +This release fixes the following bugs: + +- Fix lint errors [Part1](https://github.com/wekan/wekan/commit/f1587753cb0bba38e4b1df2e0300d3dc2826da72) and + [Part2](https://github.com/wekan/wekan/commit/e6629779f77676eadfe4465c407f0bee0ec64061). + Thanks to xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.14 2020-06-16 Wekan release This release adds the following new features: diff --git a/Stackerfile.yml b/Stackerfile.yml index 553292fd..50325d47 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.14.0" +appVersion: "v4.15.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index c5687df5..c49fb5a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.14.0", + "version": "v4.15.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 6eaa2462..5cb1e9f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.14.0", + "version": "v4.15.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index 23ada44a..d315f3ca 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
        • - Wekan REST API v4.14 + Wekan REST API v4.15
        • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
          -

          Wekan REST API v4.14

          +

          Wekan REST API v4.15

          Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

          diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 2aa49922..7e804120 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.14 + version: v4.15 description: | The REST API allows you to control and extend Wekan with ease. diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index 08e9c9a8..27dc1be5 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 = 414, + appVersion = 415, # Increment this for every release. - appMarketingVersion = (defaultText = "4.14.0~2020-06-16"), + appMarketingVersion = (defaultText = "4.15.0~2020-06-16"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 431d884e8371dfbce6d151493044ffcd2a92d10d Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Fri, 12 Jun 2020 07:22:36 +0200 Subject: openapi: fix jsdoc/operation matching The script was considering that the operation associated to a jsdoc was declared on the line just after the end of the jsdoc. Turns out that adding new lines makes the code clearer, but the python script was then ignoring some jsdocs. Change the behaviour to consider that the jsdoc associated with an operation is the last one declared after the end of the previous operation. Fixes #3169 --- openapi/generate_openapi.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/openapi/generate_openapi.py b/openapi/generate_openapi.py index 54526416..b843feff 100644 --- a/openapi/generate_openapi.py +++ b/openapi/generate_openapi.py @@ -814,13 +814,21 @@ def parse_schemas(schemas_dir): for d in data] entry_points.extend(schema_entry_points) + end_of_previous_operation = -1 + # try to match JSDoc to the operations for entry_point in schema_entry_points: operation = entry_point.method # POST/GET/PUT/DELETE + + # find all jsdocs that end before the current operation, + # the last item in the list is the one we need jsdoc = [j for j in jsdocs - if j.loc.end.line + 1 == operation.loc.start.line] + if j.loc.end.line + 1 <= operation.loc.start.line and + j.loc.start.line > end_of_previous_operation] if bool(jsdoc): - entry_point.doc = jsdoc[0] + entry_point.doc = jsdoc[-1] + + end_of_previous_operation = operation.loc.end.line except TypeError: logger.warning(context.txt_for(statement)) logger.error('{}:{}-{} can not parse {}'.format(path, -- cgit v1.2.3-1-g7c22 From e1ffe943c836d511a6e445d532c3927d0a8f6cf2 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Wed, 17 Jun 2020 05:37:15 +0200 Subject: openapi: also consider Object type as valid Not sure if this will end up in a correct openapi file, but the docs are correctly generated, so... meh. --- openapi/generate_openapi.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openapi/generate_openapi.py b/openapi/generate_openapi.py index b843feff..fabf3819 100644 --- a/openapi/generate_openapi.py +++ b/openapi/generate_openapi.py @@ -249,7 +249,10 @@ class EntryPoint(object): if name.startswith('{'): param_type = name.strip('{}') - if param_type not in ['string', 'number', 'boolean', 'integer', 'array', 'file']: + if param_type == 'Object': + # hope for the best + param_type = 'object' + elif param_type not in ['string', 'number', 'boolean', 'integer', 'array', 'file']: self.warn('unknown type {}\n allowed values: string, number, boolean, integer, array, file'.format(param_type)) try: name, desc = desc.split(maxsplit=1) -- cgit v1.2.3-1-g7c22 From 207be3a363d64810dfb69937c1321691b2819839 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Wed, 17 Jun 2020 05:40:17 +0200 Subject: cards: fix JSDoc There was one missing comma, and the return type was then invalid --- models/cards.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/cards.js b/models/cards.js index 1ccc836a..2fd52827 100644 --- a/models/cards.js +++ b/models/cards.js @@ -2749,7 +2749,7 @@ if (Meteor.isServer) { * @return_type [{_id: string, * title: string, * description: string, - * listId: string + * listId: string, * swinlaneId: string}] */ JsonRoutes.add( -- cgit v1.2.3-1-g7c22 From 6d063a4f64bbe133cb182fdd9d2d97defc60a8fd Mon Sep 17 00:00:00 2001 From: Allemand <37148072+salleman33@users.noreply.github.com> Date: Wed, 17 Jun 2020 18:07:22 +0200 Subject: Update users.js change method to find existing user --- models/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/users.js b/models/users.js index 2b5a059e..a1928f97 100644 --- a/models/users.js +++ b/models/users.js @@ -933,7 +933,7 @@ if (Meteor.isServer) { user.authenticationMethod = 'oauth2'; // see if any existing user has this email address or username, otherwise create new - const existingUser = Meteor.users.findOne({ + const existingUser = Users.findOne({ $or: [{ 'emails.address': email }, { username: user.username }], }); if (!existingUser) return user; -- cgit v1.2.3-1-g7c22 From f6c377eb9f3f7e62911cadbd0ac8745b537d3f97 Mon Sep 17 00:00:00 2001 From: Allemand <37148072+salleman33@users.noreply.github.com> Date: Wed, 17 Jun 2020 18:44:12 +0200 Subject: update onCreateUser for oidc correct bug : remove the wrong user ! --- models/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/users.js b/models/users.js index a1928f97..7f234a54 100644 --- a/models/users.js +++ b/models/users.js @@ -946,7 +946,7 @@ if (Meteor.isServer) { existingUser.profile = user.profile; existingUser.authenticationMethod = user.authenticationMethod; - Meteor.users.remove({ _id: existingUser._id }); // remove existing record + Meteor.users.remove({ _id: user._id }); // remove existing record return existingUser; } -- cgit v1.2.3-1-g7c22 From 670b964e6bfc6000cdfe1a6adc343f4c7b406b9e Mon Sep 17 00:00:00 2001 From: Allemand <37148072+salleman33@users.noreply.github.com> Date: Wed, 17 Jun 2020 18:50:44 +0200 Subject: update comments --- models/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/users.js b/models/users.js index 7f234a54..7ce4edbc 100644 --- a/models/users.js +++ b/models/users.js @@ -946,7 +946,7 @@ if (Meteor.isServer) { existingUser.profile = user.profile; existingUser.authenticationMethod = user.authenticationMethod; - Meteor.users.remove({ _id: user._id }); // remove existing record + Meteor.users.remove({ _id: user._id }); // remove previous record return existingUser; } -- cgit v1.2.3-1-g7c22 From 768412ba7c2da28f2365e9d0152912aeafb61bbc Mon Sep 17 00:00:00 2001 From: Allemand <37148072+salleman33@users.noreply.github.com> Date: Wed, 17 Jun 2020 19:00:40 +0200 Subject: remove useless comments --- models/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/users.js b/models/users.js index 7ce4edbc..8675dbad 100644 --- a/models/users.js +++ b/models/users.js @@ -946,7 +946,7 @@ if (Meteor.isServer) { existingUser.profile = user.profile; existingUser.authenticationMethod = user.authenticationMethod; - Meteor.users.remove({ _id: user._id }); // remove previous record + Meteor.users.remove({ _id: user._id }); return existingUser; } -- cgit v1.2.3-1-g7c22 From 40abff4c1ea553461def5917d2c0daf79893875e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 20:06:18 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 528ac066..0d62e719 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# Upcoming Wekan release + +This release fixes the following bugs: + +- [OpenAPI: Fix jsdoc/operation matching](https://github.com/wekan/wekan/pull/3171). + Thanks to bentiss. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.15 2020-06-16 Wekan release This release fixes the following bugs: -- cgit v1.2.3-1-g7c22 From f245b6b7faa29b4f276527daca48c305fe9689c1 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 20:21:44 +0300 Subject: Update users.js etc with global search replace, to try to fix selecting correct user. Thanks to xet7 ! --- fix-download-unicode/cfs_access-point.txt | 2 +- models/export.js | 4 ++-- models/users.js | 12 ++++++------ packages/meteor-accounts-cas/cas_server.js | 4 ++-- packages/meteor-useraccounts-core/Guide.md | 2 +- packages/meteor-useraccounts-core/lib/methods.js | 2 +- packages/meteor-useraccounts-core/lib/server.js | 2 +- packages/meteor-useraccounts-core/lib/server_methods.js | 2 +- packages/wekan-accounts-cas/cas_server.js | 4 ++-- packages/wekan-ldap/server/loginHandler.js | 6 +++--- packages/wekan-ldap/server/sync.js | 6 +++--- sandstorm.js | 6 +++--- 12 files changed, 26 insertions(+), 26 deletions(-) diff --git a/fix-download-unicode/cfs_access-point.txt b/fix-download-unicode/cfs_access-point.txt index de1c6c76..2e86ac4e 100644 --- a/fix-download-unicode/cfs_access-point.txt +++ b/fix-download-unicode/cfs_access-point.txt @@ -869,7 +869,7 @@ var expirationAuth = function expirationAuth() { } // 326 // 327 // We are not on a secure line - so we have to look up the user... // 328 - var user = Meteor.users.findOne({ // 329 + var user = Users.findOne({ // 329 $or: [ // 330 {'services.resume.loginTokens.hashedToken': Accounts._hashLoginToken(userToken)}, // 331 {'services.resume.loginTokens.token': userToken} // 332 diff --git a/models/export.js b/models/export.js index 9dd03a38..3ba5cfad 100644 --- a/models/export.js +++ b/models/export.js @@ -28,7 +28,7 @@ if (Meteor.isServer) { const loginToken = req.query.authToken; if (loginToken) { const hashToken = Accounts._hashLoginToken(loginToken); - user = Meteor.users.findOne({ + user = Users.findOne({ 'services.resume.loginTokens.hashedToken': hashToken, }); } else if (!Meteor.settings.public.sandstorm) { @@ -69,7 +69,7 @@ if (Meteor.isServer) { const loginToken = params.query.authToken; if (loginToken) { const hashToken = Accounts._hashLoginToken(loginToken); - user = Meteor.users.findOne({ + user = Users.findOne({ 'services.resume.loginTokens.hashedToken': hashToken, }); } else if (!Meteor.settings.public.sandstorm) { diff --git a/models/users.js b/models/users.js index 8675dbad..d1a85c37 100644 --- a/models/users.js +++ b/models/users.js @@ -1277,7 +1277,7 @@ if (Meteor.isServer) { JsonRoutes.add('GET', '/api/user', function(req, res) { try { Authentication.checkLoggedIn(req.userId); - const data = Meteor.users.findOne({ _id: req.userId }); + const data = Users.findOne({ _id: req.userId }); delete data.services; // get all boards where the user is member of @@ -1368,7 +1368,7 @@ if (Meteor.isServer) { return u; }); - const user = Meteor.users.findOne({ _id: id }); + const user = Users.findOne({ _id: id }); user.boards = boards; JsonRoutes.sendResult(res, { code: 200, @@ -1404,7 +1404,7 @@ if (Meteor.isServer) { Authentication.checkUserId(req.userId); const id = req.params.userId; const action = req.body.action; - let data = Meteor.users.findOne({ _id: id }); + let data = Users.findOne({ _id: id }); if (data !== undefined) { if (action === 'takeOwnership') { data = Boards.find( @@ -1437,7 +1437,7 @@ if (Meteor.isServer) { } else if (action === 'enableLogin') { Users.update({ _id: id }, { $set: { loginDisabled: '' } }); } - data = Meteor.users.findOne({ _id: id }); + data = Users.findOne({ _id: id }); } } JsonRoutes.sendResult(res, { @@ -1481,7 +1481,7 @@ if (Meteor.isServer) { const boardId = req.params.boardId; const action = req.body.action; const { isAdmin, isNoComments, isCommentOnly } = req.body; - let data = Meteor.users.findOne({ _id: userId }); + let data = Users.findOne({ _id: userId }); if (data !== undefined) { if (action === 'add') { data = Boards.find({ @@ -1542,7 +1542,7 @@ if (Meteor.isServer) { const userId = req.params.userId; const boardId = req.params.boardId; const action = req.body.action; - let data = Meteor.users.findOne({ _id: userId }); + let data = Users.findOne({ _id: userId }); if (data !== undefined) { if (action === 'remove') { data = Boards.find({ diff --git a/packages/meteor-accounts-cas/cas_server.js b/packages/meteor-accounts-cas/cas_server.js index 2e8edef2..e07052b0 100644 --- a/packages/meteor-accounts-cas/cas_server.js +++ b/packages/meteor-accounts-cas/cas_server.js @@ -252,13 +252,13 @@ const casValidate = (req, ticket, token, service, callback) => { if (attrs.debug) { console.log(`CAS response : ${JSON.stringify(result)}`); } - let user = Meteor.users.findOne({ 'username': options.username }); + let user = Users.findOne({ 'username': options.username }); if (! user) { if (attrs.debug) { console.log(`Creating user account ${JSON.stringify(options)}`); } const userId = Accounts.insertUserDoc({}, options); - user = Meteor.users.findOne(userId); + user = Users.findOne(userId); } if (attrs.debug) { console.log(`Using user account ${JSON.stringify(user)}`); diff --git a/packages/meteor-useraccounts-core/Guide.md b/packages/meteor-useraccounts-core/Guide.md index c84b3f8b..48499708 100644 --- a/packages/meteor-useraccounts-core/Guide.md +++ b/packages/meteor-useraccounts-core/Guide.md @@ -804,7 +804,7 @@ If, differently, you do something like this: if (Meteor.isServer){ Meteor.methods({ "userExists": function(username){ - return !!Meteor.users.findOne({username: username}); + return !!Users.findOne({username: username}); }, }); } diff --git a/packages/meteor-useraccounts-core/lib/methods.js b/packages/meteor-useraccounts-core/lib/methods.js index 0d3a070d..906edcaf 100644 --- a/packages/meteor-useraccounts-core/lib/methods.js +++ b/packages/meteor-useraccounts-core/lib/methods.js @@ -10,7 +10,7 @@ Meteor.methods({ var userId = this.userId; if (userId) { - var user = Meteor.users.findOne(userId); + var user = Users.findOne(userId); var numServices = _.keys(user.services).length; // including "resume" var unset = {}; diff --git a/packages/meteor-useraccounts-core/lib/server.js b/packages/meteor-useraccounts-core/lib/server.js index 2a925dc7..07f563bd 100644 --- a/packages/meteor-useraccounts-core/lib/server.js +++ b/packages/meteor-useraccounts-core/lib/server.js @@ -80,7 +80,7 @@ AT.prototype._init = function() { return Meteor.users.find(userId, {fields: {services: 1}}); /* if (userId) { - var user = Meteor.users.findOne(userId); + var user = Users.findOne(userId); var services_id = _.chain(user.services) .keys() .reject(function(service) {return service === "resume";}) diff --git a/packages/meteor-useraccounts-core/lib/server_methods.js b/packages/meteor-useraccounts-core/lib/server_methods.js index 500440d7..700c2eac 100644 --- a/packages/meteor-useraccounts-core/lib/server_methods.js +++ b/packages/meteor-useraccounts-core/lib/server_methods.js @@ -124,7 +124,7 @@ Meteor.methods({ ATResendVerificationEmail: function (email) { check(email, String); - var user = Meteor.users.findOne({ "emails.address": email }); + var user = Users.findOne({ "emails.address": email }); // Send the standard error back to the client if no user exist with this e-mail if (!user) { diff --git a/packages/wekan-accounts-cas/cas_server.js b/packages/wekan-accounts-cas/cas_server.js index 15c1b174..c13a6df1 100644 --- a/packages/wekan-accounts-cas/cas_server.js +++ b/packages/wekan-accounts-cas/cas_server.js @@ -229,13 +229,13 @@ const casValidate = (req, ticket, token, service, callback) => { if (attrs.debug) { console.log(`CAS response : ${JSON.stringify(result)}`); } - let user = Meteor.users.findOne({ 'username': options.username }); + let user = Users.findOne({ 'username': options.username }); if (! user) { if (attrs.debug) { console.log(`Creating user account ${JSON.stringify(options)}`); } const userId = Accounts.insertUserDoc({}, options); - user = Meteor.users.findOne(userId); + user = Users.findOne(userId); } if (attrs.debug) { console.log(`Using user account ${JSON.stringify(user)}`); diff --git a/packages/wekan-ldap/server/loginHandler.js b/packages/wekan-ldap/server/loginHandler.js index 79b3899a..6f8504c3 100644 --- a/packages/wekan-ldap/server/loginHandler.js +++ b/packages/wekan-ldap/server/loginHandler.js @@ -96,7 +96,7 @@ Accounts.registerLoginHandler('ldap', function(loginRequest) { log_info('Querying user'); log_debug('userQuery', userQuery); - user = Meteor.users.findOne(userQuery); + user = Users.findOne(userQuery); } // Attempt to find user by username @@ -137,7 +137,7 @@ Accounts.registerLoginHandler('ldap', function(loginRequest) { log_debug('userQuery', userQuery); - user = Meteor.users.findOne(userQuery); + user = Users.findOne(userQuery); } // Attempt to find user by e-mail address only @@ -159,7 +159,7 @@ Accounts.registerLoginHandler('ldap', function(loginRequest) { log_debug('userQuery', userQuery); - user = Meteor.users.findOne(userQuery); + user = Users.findOne(userQuery); } diff --git a/packages/wekan-ldap/server/sync.js b/packages/wekan-ldap/server/sync.js index dd3855d3..5d0a9839 100644 --- a/packages/wekan-ldap/server/sync.js +++ b/packages/wekan-ldap/server/sync.js @@ -234,7 +234,7 @@ export function syncUserData(user, ldapUser) { const username = slug(getLdapUsername(ldapUser)); if (user && user._id && username !== user.username) { log_info('Syncing user username', user.username, '->', username); - Meteor.users.findOne({ _id: user._id }, { $set: { username }}); + Users.findOne({ _id: user._id }, { $set: { username }}); } } @@ -341,7 +341,7 @@ export function importNewUsers(ldap) { } // Add user if it was not added before - let user = Meteor.users.findOne(userQuery); + let user = Users.findOne(userQuery); if (!user && username && LDAP.settings_get('LDAP_MERGE_EXISTING_USERS') === true) { const userQuery = { @@ -350,7 +350,7 @@ export function importNewUsers(ldap) { log_debug('userQuery merge', userQuery); - user = Meteor.users.findOne(userQuery); + user = Users.findOne(userQuery); if (user) { syncUserData(user, ldapUser); } diff --git a/sandstorm.js b/sandstorm.js index de386d14..34b1e507 100644 --- a/sandstorm.js +++ b/sandstorm.js @@ -175,7 +175,7 @@ if (isSandstorm && Meteor.isServer) { const users = {}; function ensureUserListed(userId) { if (!users[userId]) { - const user = Meteor.users.findOne(userId); + const user = Users.findOne(userId); if (user) { users[userId] = { id: user.services.sandstorm.id }; } else { @@ -217,7 +217,7 @@ if (isSandstorm && Meteor.isServer) { 'userId', ); (comment.text.match(/\B@([\w.]*)/g) || []).forEach(username => { - const user = Meteor.users.findOne({ + const user = Users.findOne({ username: username.slice(1), }); if (user && activeMembers.indexOf(user._id) !== -1) { @@ -368,7 +368,7 @@ if (isSandstorm && Meteor.isServer) { if (newMethods[key].auth) { newMethods[key].auth = function() { const sandstormID = this.req.headers['x-sandstorm-user-id']; - const user = Meteor.users.findOne({ + const user = Users.findOne({ 'services.sandstorm.id': sandstormID, }); return user && user._id; -- cgit v1.2.3-1-g7c22 From 39be9aa58da1ddda16b41e92b12f118169049fed Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 20:25:22 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d62e719..02ee1861 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ This release fixes the following bugs: - [OpenAPI: Fix jsdoc/operation matching](https://github.com/wekan/wekan/pull/3171). Thanks to bentiss. +- Fix finding corrent user [Part1](https://github.com/wekan/wekan/pull/3180) and + [Part2](https://github.com/wekan/wekan/commit/f245b6b7faa29b4f276527daca48c305fe9689c1). + Thanks to salleman33 and xet7. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From bda49ed60947e0438206b2f55119f5c5c132c734 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 20:28:22 +0300 Subject: Add find-replace.sh script. --- find-replace.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 find-replace.sh diff --git a/find-replace.sh b/find-replace.sh new file mode 100755 index 00000000..522affab --- /dev/null +++ b/find-replace.sh @@ -0,0 +1,5 @@ + +# Recursive find/replace. +# Syntax: ./find-replace.sh searchtext replacetext + +egrep -lRZ '$1' . | xargs -0 -l sed -i -e 's/$1/$2/g' -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From 3e4a8bca3634b92c0ed6302da27b2f57f5d18bb5 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 20:31:01 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02ee1861..8b1548ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Upcoming Wekan release -This release fixes the following bugs: +This release adds the following features: + +- [Add find-replace.sh script for development](https://github.com/wekan/wekan/commit/bda49ed60947e0438206b2f55119f5c5c132c734). + Thanks to xet7. + +and fixes the following bugs: - [OpenAPI: Fix jsdoc/operation matching](https://github.com/wekan/wekan/pull/3171). Thanks to bentiss. -- cgit v1.2.3-1-g7c22 From b00db983c8506e0cdc9968e452c3c8025fc10776 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 21:37:01 +0300 Subject: Try to prevent errors on CSV/TSV export. Thanks to xet7 ! Related #3173 --- models/export.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/models/export.js b/models/export.js index 3ba5cfad..b90f584c 100644 --- a/models/export.js +++ b/models/export.js @@ -80,19 +80,19 @@ if (Meteor.isServer) { }); } const exporter = new Exporter(boardId); - if (exporter.canExport(user)) { - body = params.query.delimiter - ? exporter.buildCsv(params.query.delimiter) - : exporter.buildCsv(); - res.writeHead(200, { - 'Content-Length': body.length, - 'Content-Type': params.query.delimiter ? 'text/csv' : 'text/tsv', - }); - res.write(body); - res.end(); - } else { - res.writeHead(403); - res.end('Permission Error'); - } + //if (exporter.canExport(user)) { + body = params.query.delimiter + ? exporter.buildCsv(params.query.delimiter) + : exporter.buildCsv(); + //'Content-Length': body.length, + res.writeHead(200, { + 'Content-Type': params.query.delimiter ? 'text/csv' : 'text/tsv', + }); + res.write(body); + res.end(); + //} else { + // res.writeHead(403); + // res.end('Permission Error'); + //} }); } -- cgit v1.2.3-1-g7c22 From e41256f9355aeb2414c5cb06e3112c9c6d5210fd Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 21:39:34 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b1548ca..130ffeda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and fixes the following bugs: - Fix finding corrent user [Part1](https://github.com/wekan/wekan/pull/3180) and [Part2](https://github.com/wekan/wekan/commit/f245b6b7faa29b4f276527daca48c305fe9689c1). Thanks to salleman33 and xet7. +- [Try to prevent errors on CSV/TSV export](https://github.com/wekan/wekan/commit/b00db983c8506e0cdc9968e452c3c8025fc10776). + Thanks to xet7. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From b11ae567c9b2d16a115ea4f3f7f88e67d076f326 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 21:49:49 +0300 Subject: Upgrade to Node 12.18.1 Thanks to Node developers and xet7 ! --- .devcontainer/Dockerfile | 2 +- .future-snap/broken-snapcraft.yaml | 2 +- .future-snap/snapcraft.yaml | 2 +- .travis.yml | 2 +- Dockerfile | 2 +- Dockerfile.arm64v8 | 4 ++-- rebuild-wekan.sh | 4 ++-- releases/release-sandstorm.sh | 2 +- snapcraft.yaml | 2 +- stacksmith/user-scripts/build.sh | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2270e43d..0488c226 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive ENV \ DEBUG=false \ - NODE_VERSION=12.18.0 \ + NODE_VERSION=12.18.1 \ METEOR_RELEASE=1.10.2 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ diff --git a/.future-snap/broken-snapcraft.yaml b/.future-snap/broken-snapcraft.yaml index eab2bbaf..1841dacd 100644 --- a/.future-snap/broken-snapcraft.yaml +++ b/.future-snap/broken-snapcraft.yaml @@ -81,7 +81,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 12.18.0 + node-engine: 12.18.1 node-packages: - node-gyp - node-pre-gyp diff --git a/.future-snap/snapcraft.yaml b/.future-snap/snapcraft.yaml index 43430791..99fabb65 100644 --- a/.future-snap/snapcraft.yaml +++ b/.future-snap/snapcraft.yaml @@ -83,7 +83,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 12.18.0 + node-engine: 12.18.1 node-packages: - node-gyp - node-pre-gyp diff --git a/.travis.yml b/.travis.yml index f55c7bab..fb72b9c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ sudo: required env: TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0 - TRAVIS_NODE_VERSION: 12.18.0 + TRAVIS_NODE_VERSION: 12.18.1 TRAVIS_NPM_VERSION: latest before_install: diff --git a/Dockerfile b/Dockerfile index e0053701..641219c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ARG DEBIAN_FRONTEND=noninteractive ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \ DEBUG=false \ - NODE_VERSION=v12.18.0 \ + NODE_VERSION=v12.18.1 \ METEOR_RELEASE=1.10.2 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 index ae6dd5f6..35da388e 100644 --- a/Dockerfile.arm64v8 +++ b/Dockerfile.arm64v8 @@ -4,7 +4,7 @@ FROM amd64/alpine:3.7 AS builder ENV QEMU_VERSION=v4.2.0-6 \ QEMU_ARCHITECTURE=aarch64 \ NODE_ARCHITECTURE=linux-arm64 \ - NODE_VERSION=v12.18.0 \ + NODE_VERSION=v12.18.1 \ WEKAN_VERSION=3.96 \ WEKAN_ARCHITECTURE=arm64 @@ -40,7 +40,7 @@ LABEL maintainer="wekan" # Set the environment variables (defaults where required) ENV QEMU_ARCHITECTURE=aarch64 \ NODE_ARCHITECTURE=linux-arm64 \ - NODE_VERSION=v12.18.0 \ + NODE_VERSION=v12.18.1 \ NODE_ENV=production \ NPM_VERSION=latest \ WITH_API=true \ diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index 818d9923..dab80b53 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -5,7 +5,7 @@ echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correct echo " You can still use any other locale as your main locale." #Below script installs newest node 8.x for Debian/Ubuntu/Mint. -#NODE_VERSION=12.18.0 +#NODE_VERSION=12.18.1 #X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" function pause(){ @@ -79,7 +79,7 @@ do curl -0 -L https://npmjs.org/install.sh | sudo sh sudo chown -R $(id -u):$(id -g) $HOME/.npm sudo npm -g install n - sudo n 12.18.0 + sudo n 12.18.1 #curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - #sudo apt-get install -y nodejs elif [[ "$OSTYPE" == "darwin"* ]]; then diff --git a/releases/release-sandstorm.sh b/releases/release-sandstorm.sh index 069df417..2e0f5c75 100755 --- a/releases/release-sandstorm.sh +++ b/releases/release-sandstorm.sh @@ -18,7 +18,7 @@ cd $REPODIR rm -rf $WEKANDIR git clone git@github.com:wekan/wekan.git cd $WEKANDIR -sudo n 12.18.0 +sudo n 12.18.1 sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp # Build Wekan ./releases/rebuild-release.sh diff --git a/snapcraft.yaml b/snapcraft.yaml index b1bfb161..f1b0533a 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -81,7 +81,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 12.18.0 + node-engine: 12.18.1 node-packages: - node-gyp - node-pre-gyp diff --git a/stacksmith/user-scripts/build.sh b/stacksmith/user-scripts/build.sh index 7b27a453..e0174110 100755 --- a/stacksmith/user-scripts/build.sh +++ b/stacksmith/user-scripts/build.sh @@ -2,7 +2,7 @@ set -euxo pipefail BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA" -NODE_VERSION=v12.17.0 +NODE_VERSION=v12.18.1 #METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer USE_EDGE=false METEOR_EDGE=1.5-beta.17 -- cgit v1.2.3-1-g7c22 From 0ff1e63a5d82d1fb3a6f0a0d994ac2c30cdb1c9f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 17 Jun 2020 21:59:54 +0300 Subject: v4.16 --- CHANGELOG.md | 7 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 1624 +++++++++++++++++++++++++++++++++++++++--------- public/api/wekan.yml | 514 +++++++++++---- sandstorm-pkgdef.capnp | 4 +- 7 files changed, 1737 insertions(+), 418 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 130ffeda..d7cc46fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,15 @@ -# Upcoming Wekan release +# v4.16 2020-06-17 Wekan release This release adds the following features: - [Add find-replace.sh script for development](https://github.com/wekan/wekan/commit/bda49ed60947e0438206b2f55119f5c5c132c734). Thanks to xet7. +and adds the following updates: + +- [Upgrade to Node 12.18.1](https://github.com/wekan/wekan/commit/b11ae567c9b2d16a115ea4f3f7f88e67d076f326). + Thanks to Node developers and xet7. + and fixes the following bugs: - [OpenAPI: Fix jsdoc/operation matching](https://github.com/wekan/wekan/pull/3171). diff --git a/Stackerfile.yml b/Stackerfile.yml index 50325d47..b9bc688d 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.15.0" +appVersion: "v4.16.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index c49fb5a4..d41a22db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.15.0", + "version": "v4.16.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5cb1e9f8..398bc04e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.15.0", + "version": "v4.16.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index d315f3ca..92794307 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
          • - Wekan REST API v4.15 + Wekan REST API v4.16
          • @@ -1612,22 +1612,22 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
            • - get_board_card_checklists + get_all_checklists
            • - post_board_card_checklists + new_checklist
            • - get_board_card_checklist + get_checklist
            • - delete_board_card_checklist + delete_checklist
            • @@ -1641,17 +1641,17 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
              • - get_board_card_checklist_item + get_checklist_item
              • - put_board_card_checklist_item + edit_checklist_item
              • - delete_board_card_checklist_item + delete_checklist_item
              • @@ -1670,17 +1670,17 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
              • - post_board_card_comments + new_comment
              • - get_board_card_comment + get_comment
              • - delete_board_card_comment + delete_comment
              • @@ -1694,7 +1694,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                • - get_board_customFieldValue + get_cards_by_custom_field
                • @@ -1709,22 +1709,22 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                • - get_board_list_card + get_card
                • - put_board_list_card + edit_card
                • - delete_board_list_card + delete_card
                • - get_board_swimlane_cards + get_swimlane_cards
                • @@ -1748,12 +1748,12 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                • - get_board_customField + get_custom_field
                • - delete_board_customField + delete_custom_field
                • @@ -1792,12 +1792,12 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                • - delete_board_int_activities + delete_integration_activities
                • - post_board_int_activities + new_integration_activities
                • @@ -1845,7 +1845,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                • - post_board_user_remove + remove_board_member
                • @@ -1904,7 +1904,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                • - delete_board_swimlane + delete_swimlane
                • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                  -

                  Wekan REST API v4.15

                  +

                  Wekan REST API v4.16

                  Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

                  @@ -4325,20 +4325,24 @@ To perform this operation, you must be authenticated by means of one of the foll UserSecurity

                  Checklists

                  -

                  get_board_card_checklists

                  -

                  +

                  get_all_checklists

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/cards/{card}/checklists \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/cards/{card}/checklists HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4357,6 +4361,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4378,6 +4383,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists'require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -4390,6 +4396,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -4425,6 +4432,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -4440,7 +4448,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/cards/{card}/checklists

                  -

                  Parameters

                  +

                  Get the list of checklists attached to a card

                  +

                  Parameters

                  @@ -4457,18 +4466,34 @@ System.out.println(response.toString()); - + - +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  [
                  +  {
                  +    "_id": "string",
                  +    "title": "string"
                  +  }
                  +]
                  +
                  +

                  Responses

                  @@ -4483,7 +4508,36 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  » titlestringfalsenonenone
                  @@ -4491,24 +4545,27 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  post_board_card_checklists

                  -

                  +

                  new_checklist

                  +

                  Code samples

                  # You can also use wget
                   curl -X POST /api/boards/{board}/cards/{card}/checklists \
                     -H 'Content-Type: multipart/form-data' \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  POST /api/boards/{board}/cards/{card}/checklists HTTP/1.1
                   
                   Content-Type: multipart/form-data
                  +Accept: application/json
                   
                   
                  var headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4531,6 +4588,7 @@ $.ajax({
                   }';
                   const headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4553,6 +4611,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists''Content-Type' => 'multipart/form-data',
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -4566,6 +4625,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                     'Content-Type': 'multipart/form-data',
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -4602,6 +4662,7 @@ System.out.println(response.toString());
                   
                       headers := map[string][]string{
                           "Content-Type": []string{"multipart/form-data"},
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -4617,6 +4678,7 @@ System.out.println(response.toString());
                   
                   

                  POST /api/boards/{board}/cards/{card}/checklists

                  +

                  create a new checklist

                  Body parameter

                  @@ -4624,7 +4686,7 @@ System.out.println(response.toString()); items: string
                  -

                  Parameters

                  +

                  Parameters

                  @@ -4641,14 +4703,14 @@ System.out.println(response.toString()); - + - + @@ -4662,18 +4724,31 @@ System.out.println(response.toString()); - + - - + +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  bodybody string truethe title valuethe title of the new checklist
                  » items body stringtruethe items valuefalsethe list of items on the new checklist
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -4688,7 +4763,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -4696,20 +4793,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  get_board_card_checklist

                  -

                  +

                  get_checklist

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/cards/{card}/checklists/{checklist} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/cards/{card}/checklists/{checklist} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4728,6 +4829,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4749,6 +4851,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists/{ch
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -4761,6 +4864,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -4796,6 +4900,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -4811,7 +4916,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/cards/{card}/checklists/{checklist}

                  -

                  Parameters

                  +

                  Get a checklist

                  +

                  Parameters

                  @@ -4828,25 +4934,50 @@ System.out.println(response.toString()); - + - + - +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  checklist path string truethe checklist valuethe ID of the checklist
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +

                  checklist: the ID of the checklist

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "cardId": "string",
                  +  "title": "string",
                  +  "finishedAt": "string",
                  +  "createdAt": "string",
                  +  "sort": 0,
                  +  "items": [
                  +    {
                  +      "_id": "string",
                  +      "title": "string",
                  +      "isFinished": true
                  +    }
                  +  ]
                  +}
                  +
                  +

                  Responses

                  @@ -4861,7 +4992,85 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » cardIdstringfalsenonenone
                  » titlestringfalsenonenone
                  » finishedAtstringfalsenonenone
                  » createdAtstringfalsenonenone
                  » sortnumberfalsenonenone
                  » items[object]falsenonenone
                  »» _idstringfalsenonenone
                  »» titlestringfalsenonenone
                  »» isFinishedbooleanfalsenonenone
                  @@ -4869,20 +5078,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_card_checklist

                  -

                  +

                  delete_checklist

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/cards/{card}/checklists/{checklist} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/cards/{card}/checklists/{checklist} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4901,6 +5114,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -4922,6 +5136,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists/{ch
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -4934,6 +5149,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -4969,6 +5185,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -4984,7 +5201,9 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}

                  -

                  Parameters

                  +

                  Delete a checklist

                  +

                  The checklist will be removed, not put in the recycle bin.

                  +

                  Parameters

                  @@ -5001,25 +5220,39 @@ System.out.println(response.toString()); - + - + - +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  checklist path string truethe checklist valuethe ID of the checklist to remove
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +

                  checklist: the ID of the checklist to remove

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -5034,7 +5267,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -5043,20 +5298,24 @@ To perform this operation, you must be authenticated by means of one of the foll UserSecurity

                  ChecklistItems

                  -

                  get_board_card_checklist_item

                  -

                  +

                  get_checklist_item

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5075,6 +5334,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5096,6 +5356,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists/{ch
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -5108,6 +5369,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -5143,6 +5405,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -5158,7 +5421,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}

                  -

                  Parameters

                  +

                  Get a checklist item

                  +

                  Parameters

                  @@ -5175,32 +5439,53 @@ System.out.println(response.toString()); - + - + - + - +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  checklist path string truethe checklist valuethe checklist ID
                  item path string truethe item valuethe ID of the item
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +

                  checklist: the checklist ID

                  +

                  item: the ID of the item

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "title": "string",
                  +  "sort": 0,
                  +  "isFinished": true,
                  +  "checklistId": "string",
                  +  "cardId": "string",
                  +  "createdAt": "string",
                  +  "modifiedAt": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -5215,7 +5500,7 @@ System.out.println(response.toString()); - +
                  200 OK 200 responseNoneChecklistItems
                  @@ -5223,24 +5508,27 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  put_board_card_checklist_item

                  -

                  +

                  edit_checklist_item

                  +

                  Code samples

                  # You can also use wget
                   curl -X PUT /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} \
                     -H 'Content-Type: multipart/form-data' \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  PUT /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} HTTP/1.1
                   
                   Content-Type: multipart/form-data
                  +Accept: application/json
                   
                   
                  var headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5263,6 +5551,7 @@ $.ajax({
                   }';
                   const headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5285,6 +5574,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists/{ch
                   
                   headers = {
                     'Content-Type' => 'multipart/form-data',
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -5298,6 +5588,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                     'Content-Type': 'multipart/form-data',
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -5334,6 +5625,7 @@ System.out.println(response.toString());
                   
                       headers := map[string][]string{
                           "Content-Type": []string{"multipart/form-data"},
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -5349,6 +5641,7 @@ System.out.println(response.toString());
                   
                   

                  PUT /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}

                  +

                  Edit a checklist item

                  Body parameter

                  @@ -5356,7 +5649,7 @@ System.out.println(response.toString()); title: string
                  -

                  Parameters

                  +

                  Parameters

                  @@ -5373,28 +5666,28 @@ System.out.println(response.toString()); - + - + - + - + @@ -5407,19 +5700,34 @@ System.out.println(response.toString()); - - + + - - + +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  checklist path string truethe checklist valuethe checklist ID
                  item path string truethe item valuethe ID of the item
                  body» isFinished body stringtruethe isFinished valuefalseis the item checked?
                  » title body stringtruethe title valuefalsethe new text of the item
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +

                  checklist: the checklist ID

                  +

                  item: the ID of the item

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -5434,7 +5742,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -5442,20 +5772,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_card_checklist_item

                  -

                  +

                  delete_checklist_item

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5474,6 +5808,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5495,6 +5830,7 @@ fetch('/api/boards/{board}/cards/{card}/checklists/{ch
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -5507,6 +5843,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -5542,6 +5879,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -5557,7 +5895,9 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}

                  -

                  Parameters

                  +

                  Delete a checklist item

                  +

                  Note: this operation can't be reverted.

                  +

                  Parameters

                  @@ -5574,32 +5914,47 @@ System.out.println(response.toString()); - + - + - + - +
                  path string truethe board valuethe board ID
                  card path string truethe card valuethe card ID
                  checklist path string truethe checklist valuethe checklist ID
                  item path string truethe item valuethe ID of the item to be removed
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  card: the card ID

                  +

                  checklist: the checklist ID

                  +

                  item: the ID of the item to be removed

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -5614,7 +5969,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -5851,24 +6228,27 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  post_board_card_comments

                  -

                  +

                  new_comment

                  +

                  Code samples

                  # You can also use wget
                   curl -X POST /api/boards/{board}/cards/{card}/comments \
                     -H 'Content-Type: multipart/form-data' \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  POST /api/boards/{board}/cards/{card}/comments HTTP/1.1
                   
                   Content-Type: multipart/form-data
                  +Accept: application/json
                   
                   
                  var headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5891,6 +6271,7 @@ $.ajax({
                   }';
                   const headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -5913,6 +6294,7 @@ fetch('/api/boards/{board}/cards/{card}/comments''Content-Type' => 'multipart/form-data',
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -5926,6 +6308,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                     'Content-Type': 'multipart/form-data',
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -5962,6 +6345,7 @@ System.out.println(response.toString());
                   
                       headers := map[string][]string{
                           "Content-Type": []string{"multipart/form-data"},
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -5977,6 +6361,7 @@ System.out.println(response.toString());
                   
                   

                  POST /api/boards/{board}/cards/{card}/comments

                  +

                  Add a comment on a card

                  Body parameter

                  @@ -5984,7 +6369,7 @@ System.out.println(response.toString()); comment: string
                  -

                  Parameters

                  +

                  Parameters

                  @@ -6001,14 +6386,14 @@ System.out.println(response.toString()); - + - + @@ -6022,7 +6407,7 @@ System.out.println(response.toString()); - + @@ -6033,7 +6418,20 @@ System.out.println(response.toString());
                  path string truethe board valuethe board ID of the card
                  card path string truethe card valuethe ID of the card
                  bodybody string truethe authorId valuethe user who 'posted' the comment
                  » comment
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID of the card

                  +

                  card: the ID of the card

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -6048,7 +6446,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -6056,20 +6476,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  get_board_card_comment

                  -

                  +

                  get_comment

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/cards/{card}/comments/{comment} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/cards/{card}/comments/{comment} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -6088,6 +6512,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -6109,6 +6534,7 @@ fetch('/api/boards/{board}/cards/{card}/comments/{comm
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -6121,6 +6547,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -6156,6 +6583,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -6171,7 +6599,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/cards/{card}/comments/{comment}

                  -

                  Parameters

                  +

                  Get a comment on a card

                  +

                  Parameters

                  @@ -6188,25 +6617,44 @@ System.out.println(response.toString()); - + - + - +
                  path string truethe board valuethe board ID of the card
                  card path string truethe card valuethe ID of the card
                  comment path string truethe comment valuethe ID of the comment to retrieve
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID of the card

                  +

                  card: the ID of the card

                  +

                  comment: the ID of the comment to retrieve

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "boardId": "string",
                  +  "cardId": "string",
                  +  "text": "string",
                  +  "createdAt": "string",
                  +  "modifiedAt": "string",
                  +  "userId": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -6221,7 +6669,7 @@ System.out.println(response.toString()); - +
                  200 OK 200 responseNoneCardComments
                  @@ -6229,20 +6677,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_card_comment

                  -

                  +

                  delete_comment

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/cards/{card}/comments/{comment} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/cards/{card}/comments/{comment} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -6261,6 +6713,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -6282,6 +6735,7 @@ fetch('/api/boards/{board}/cards/{card}/comments/{comm
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -6294,6 +6748,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -6329,6 +6784,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -6344,7 +6800,8 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/cards/{card}/comments/{comment}

                  -

                  Parameters

                  +

                  Delete a comment on a card

                  +

                  Parameters

                  @@ -6361,25 +6818,39 @@ System.out.println(response.toString()); - + - + - +
                  path string truethe board valuethe board ID of the card
                  card path string truethe card valuethe ID of the card
                  comment path string truethe comment valuethe ID of the comment to delete
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID of the card

                  +

                  card: the ID of the card

                  +

                  comment: the ID of the comment to delete

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -6394,7 +6865,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -6403,20 +6896,24 @@ To perform this operation, you must be authenticated by means of one of the foll UserSecurity

                  Cards

                  -

                  get_board_customFieldValue

                  -

                  +

                  get_cards_by_custom_field

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -6435,6 +6932,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -6456,6 +6954,7 @@ fetch('/api/boards/{board}/cardsByCustomField/{customF
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -6468,6 +6967,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -6503,6 +7003,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -6518,7 +7019,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}

                  -

                  Parameters

                  +

                  Get all Cards that matchs a value of a specific custom field

                  +

                  Parameters

                  @@ -6535,25 +7037,45 @@ System.out.println(response.toString()); - + - + - +
                  path string truethe board valuethe board ID
                  customField path string truethe customField valuethe list ID
                  customFieldValue path string truethe customFieldValue valuethe value to look for
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  customField: the list ID

                  +

                  customFieldValue: the value to look for

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  [
                  +  {
                  +    "_id": "string",
                  +    "title": "string",
                  +    "description": "string",
                  +    "listId": "string",
                  +    "swinlaneId": "string"
                  +  }
                  +]
                  +
                  +

                  Responses

                  @@ -6568,7 +7090,57 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  » titlestringfalsenonenone
                  » descriptionstringfalsenonenone
                  » listIdstringfalsenonenone
                  » swinlaneIdstringfalsenonenone
                  @@ -7088,20 +7660,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  get_board_list_card

                  -

                  +

                  get_card

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/lists/{list}/cards/{card} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/lists/{list}/cards/{card} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7120,6 +7696,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7141,6 +7718,7 @@ fetch('/api/boards/{board}/lists/{list}/cards/{card}'<
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -7153,6 +7731,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -7188,6 +7767,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -7200,45 +7780,108 @@ System.out.println(response.toString());
                       resp, err := client.Do(req)
                       // ...
                   }
                  -
                  +
                  +
                  +

                  GET /api/boards/{board}/lists/{list}/cards/{card}

                  +

                  Get a Card

                  +

                  Parameters

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  NameInTypeRequiredDescription
                  boardpathstringtruethe board ID
                  listpathstringtruethe list ID of the card
                  cardpathstringtruethe card ID
                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  list: the list ID of the card

                  +

                  card: the card ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "title": "string",
                  +  "archived": true,
                  +  "parentId": "string",
                  +  "listId": "string",
                  +  "swimlaneId": "string",
                  +  "boardId": "string",
                  +  "coverId": "string",
                  +  "color": "white",
                  +  "createdAt": "string",
                  +  "modifiedAt": "string",
                  +  "customFields": [
                  +    {}
                  +  ],
                  +  "dateLastActivity": "string",
                  +  "description": "string",
                  +  "requestedBy": "string",
                  +  "assignedBy": "string",
                  +  "labelIds": [
                  +    "string"
                  +  ],
                  +  "members": [
                  +    "string"
                  +  ],
                  +  "assignees": [
                  +    "string"
                  +  ],
                  +  "receivedAt": "string",
                  +  "startAt": "string",
                  +  "dueAt": "string",
                  +  "endAt": "string",
                  +  "spentTime": 0,
                  +  "isOvertime": true,
                  +  "userId": "string",
                  +  "sort": 0,
                  +  "subtaskSort": 0,
                  +  "type": "string",
                  +  "linkedId": "string",
                  +  "vote": {
                  +    "question": "string",
                  +    "positive": [
                  +      "string"
                  +    ],
                  +    "negative": [
                  +      "string"
                  +    ],
                  +    "end": "string",
                  +    "public": true,
                  +    "allowNonBoardMembers": true
                  +  }
                  +}
                   
                  -

                  GET /api/boards/{board}/lists/{list}/cards/{card}

                  -

                  Parameters

                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                  NameInTypeRequiredDescription
                  boardpathstringtruethe board value
                  listpathstringtruethe list value
                  cardpathstringtruethe card value
                  -

                  Responses

                  +

                  Responses

                  @@ -7253,7 +7896,7 @@ System.out.println(response.toString()); - +
                  200 OK 200 responseNoneCards
                  @@ -7261,24 +7904,27 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  put_board_list_card

                  -

                  +

                  edit_card

                  +

                  Code samples

                  # You can also use wget
                   curl -X PUT /api/boards/{board}/lists/{list}/cards/{card} \
                     -H 'Content-Type: multipart/form-data' \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  PUT /api/boards/{board}/lists/{list}/cards/{card} HTTP/1.1
                   
                   Content-Type: multipart/form-data
                  +Accept: application/json
                   
                   
                  var headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7302,7 +7948,7 @@ $.ajax({
                     "parentId": "string",
                     "description": "string",
                     "color": "string",
                  -  "vote": "string",
                  +  "vote": {},
                     "labelIds": "string",
                     "requestedBy": "string",
                     "assignedBy": "string",
                  @@ -7311,7 +7957,7 @@ $.ajax({
                     "dueAt": "string",
                     "endAt": "string",
                     "spentTime": "string",
                  -  "isOverTime": "string",
                  +  "isOverTime": true,
                     "customFields": "string",
                     "members": "string",
                     "assignees": "string",
                  @@ -7319,6 +7965,7 @@ $.ajax({
                   }';
                   const headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7341,6 +7988,7 @@ fetch('/api/boards/{board}/lists/{list}/cards/{card}'<
                   
                   headers = {
                     'Content-Type' => 'multipart/form-data',
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -7354,6 +8002,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                     'Content-Type': 'multipart/form-data',
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -7390,6 +8039,7 @@ System.out.println(response.toString());
                   
                       headers := map[string][]string{
                           "Content-Type": []string{"multipart/form-data"},
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -7405,6 +8055,15 @@ System.out.println(response.toString());
                   
                   

                  PUT /api/boards/{board}/lists/{list}/cards/{card}

                  +

                  Edit Fields in a Card

                  +

                  Edit a card

                  +

                  The color has to be chosen between white, green, yellow, orange, +red, purple, blue, sky, lime, pink, black, silver, +peachpuff, crimson, plum, darkgreen, slateblue, magenta, +gold, navy, gray, saddlebrown, paleturquoise, mistyrose, +indigo:

                  + Wekan card colors +

                  Note: setting the color to white has the same effect than removing it.

                  Body parameter

                  @@ -7414,7 +8073,7 @@ System.out.println(response.toString()); parentId: string description: string color: string -vote: string +vote: {} labelIds: string requestedBy: string assignedBy: string @@ -7423,14 +8082,14 @@ System.out.println(response.toString()); dueAt: string endAt: string spentTime: string -isOverTime: string +isOverTime: true customFields: string members: string assignees: string swimlaneId: string
                  -

                  Parameters

                  +

                  Parameters

                  @@ -7447,21 +8106,21 @@ System.out.println(response.toString()); - + - + - + @@ -7474,145 +8133,159 @@ System.out.println(response.toString()); - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + +
                  path string truethe board valuethe board ID of the card
                  list path string truethe list valuethe list ID of the card
                  card path string truethe card valuethe ID of the card
                  body» title body stringtruethe title valuefalsethe new title of the card
                  » listId body stringtruethe listId valuefalsethe new list ID of the card (move operation)
                  » authorId body stringtruethe authorId valuefalsechange the owner of the card
                  » parentId body stringtruethe parentId valuefalsechange the parent of the card
                  » description body stringtruethe description valuefalsethe new description of the card
                  » color body stringtruethe color valuefalsethe new color of the card
                  » vote bodystringtruethe vote valueobjectfalsethe vote object
                  » labelIds body stringtruethe labelIds valuefalsethe new list of label IDs attached to the card
                  » requestedBy body stringtruethe requestedBy valuefalsethe new requestedBy field of the card
                  » assignedBy body stringtruethe assignedBy valuefalsethe new assignedBy field of the card
                  » receivedAt body stringtruethe receivedAt valuefalsethe new receivedAt field of the card
                  » startAt body stringtruethe startAt valuefalsethe new startAt field of the card
                  » dueAt body stringtruethe dueAt valuefalsethe new dueAt field of the card
                  » endAt body stringtruethe endAt valuefalsethe new endAt field of the card
                  » spentTime body stringtruethe spentTime valuefalsethe new spentTime field of the card
                  » isOverTime bodystringtruethe isOverTime valuebooleanfalsethe new isOverTime field of the card
                  » customFields body stringtruethe customFields valuefalsethe new customFields value of the card
                  » members body stringtruethe members valuefalsethe new list of member IDs attached to the card
                  » assignees body stringtruethe assignees valuefalsethe array of maximum one ID of assignee attached to the card
                  » swimlaneId body stringtruethe swimlaneId valuefalsethe new swimlane ID of the card
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID of the card

                  +

                  list: the list ID of the card

                  +

                  card: the ID of the card

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -7627,7 +8300,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -7635,20 +8330,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_list_card

                  -

                  +

                  delete_card

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/lists/{list}/cards/{card} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/lists/{list}/cards/{card} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7667,6 +8366,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7688,6 +8388,7 @@ fetch('/api/boards/{board}/lists/{list}/cards/{card}'<
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -7700,6 +8401,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -7735,6 +8437,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -7750,7 +8453,10 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/lists/{list}/cards/{card}

                  -

                  Parameters

                  +

                  Delete a card from a board

                  +

                  This operation deletes a card, and therefore the card +is not put in the recycle bin.

                  +

                  Parameters

                  @@ -7767,25 +8473,39 @@ System.out.println(response.toString()); - + - + - +
                  path string truethe board valuethe board ID of the card
                  list path string truethe list valuethe list ID of the card
                  card path string truethe card valuethe ID of the card
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID of the card

                  +

                  list: the list ID of the card

                  +

                  card: the ID of the card

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -7800,7 +8520,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -7808,20 +8550,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  get_board_swimlane_cards

                  -

                  +

                  get_swimlane_cards

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/swimlanes/{swimlane}/cards \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/swimlanes/{swimlane}/cards HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7840,6 +8586,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -7861,6 +8608,7 @@ fetch('/api/boards/{board}/swimlanes/{swimlane}/cards'
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -7873,6 +8621,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -7908,6 +8657,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -7923,7 +8673,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/swimlanes/{swimlane}/cards

                  -

                  Parameters

                  +

                  get all cards attached to a swimlane

                  +

                  Parameters

                  @@ -7940,18 +8691,36 @@ System.out.println(response.toString()); - + - +
                  path string truethe board valuethe board ID
                  swimlane path string truethe swimlane valuethe swimlane ID
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  swimlane: the swimlane ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  [
                  +  {
                  +    "_id": "string",
                  +    "title": "string",
                  +    "description": "string",
                  +    "listId": "string"
                  +  }
                  +]
                  +
                  +

                  Responses

                  @@ -7966,7 +8735,50 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  » titlestringfalsenonenone
                  » descriptionstringfalsenonenone
                  » listIdstringfalsenonenone
                  @@ -8476,20 +9288,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  get_board_customField

                  -

                  +

                  get_custom_field

                  +

                  Code samples

                  # You can also use wget
                   curl -X GET /api/boards/{board}/custom-fields/{customField} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  GET /api/boards/{board}/custom-fields/{customField} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -8508,6 +9324,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -8529,6 +9346,7 @@ fetch('/api/boards/{board}/custom-fields/{customField}
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -8541,6 +9359,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -8576,6 +9395,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -8591,7 +9411,8 @@ System.out.println(response.toString());
                   
                   

                  GET /api/boards/{board}/custom-fields/{customField}

                  -

                  Parameters

                  +

                  Get a Custom Fields attached to a board

                  +

                  Parameters

                  @@ -8615,11 +9436,38 @@ System.out.println(response.toString()); - +
                  path string truethe customField valuethe ID of the custom field
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  customField: the ID of the custom field

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "boardIds": [
                  +    "string"
                  +  ],
                  +  "name": "string",
                  +  "type": "text",
                  +  "settings": {
                  +    "currencyCode": "string",
                  +    "dropdownItems": [
                  +      {}
                  +    ]
                  +  },
                  +  "showOnCard": true,
                  +  "automaticallyOnCard": true,
                  +  "showLabelOnMiniCard": true,
                  +  "createdAt": "string",
                  +  "modifiedAt": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -8634,7 +9482,7 @@ System.out.println(response.toString()); - +
                  200 OK 200 responseNoneCustomFields
                  @@ -8642,20 +9490,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_customField

                  -

                  +

                  delete_custom_field

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/custom-fields/{customField} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/custom-fields/{customField} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -8674,6 +9526,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -8695,6 +9548,7 @@ fetch('/api/boards/{board}/custom-fields/{customField}
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -8707,6 +9561,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -8742,6 +9597,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -8757,7 +9613,9 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/custom-fields/{customField}

                  -

                  Parameters

                  +

                  Delete a Custom Fields attached to a board

                  +

                  The Custom Field can't be retrieved after this operation

                  +

                  Parameters

                  @@ -8781,11 +9639,23 @@ System.out.println(response.toString()); - +
                  path string truethe customField valuethe ID of the custom field
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  customField: the ID of the custom field

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -8800,7 +9670,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  @@ -10009,20 +10901,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_int_activities

                  -

                  +

                  delete_integration_activities

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/integrations/{int}/activities \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/integrations/{int}/activities HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -10041,6 +10937,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -10062,6 +10959,7 @@ fetch('/api/boards/{board}/integrations/{int}/activiti
                   require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -10074,6 +10972,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -10109,6 +11008,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -10124,7 +11024,8 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/integrations/{int}/activities

                  -

                  Parameters

                  +

                  Delete subscribed activities

                  +

                  Parameters

                  @@ -10141,18 +11042,42 @@ System.out.println(response.toString()); - + - +
                  path string truethe board valuethe board ID
                  int path string truethe int valuethe integration ID
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  int: the integration ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "enabled": true,
                  +  "title": "string",
                  +  "type": "string",
                  +  "activities": [
                  +    "string"
                  +  ],
                  +  "url": "string",
                  +  "token": "string",
                  +  "boardId": "string",
                  +  "createdAt": "string",
                  +  "modifiedAt": "string",
                  +  "userId": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -10167,7 +11092,7 @@ System.out.println(response.toString()); - +
                  200 OK 200 responseNoneIntegrations
                  @@ -10175,24 +11100,27 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  post_board_int_activities

                  -

                  +

                  new_integration_activities

                  +

                  Code samples

                  # You can also use wget
                   curl -X POST /api/boards/{board}/integrations/{int}/activities \
                     -H 'Content-Type: multipart/form-data' \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  POST /api/boards/{board}/integrations/{int}/activities HTTP/1.1
                   
                   Content-Type: multipart/form-data
                  +Accept: application/json
                   
                   
                  var headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -10214,6 +11142,7 @@ $.ajax({
                   }';
                   const headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -10236,6 +11165,7 @@ fetch('/api/boards/{board}/integrations/{int}/activiti
                   
                   headers = {
                     'Content-Type' => 'multipart/form-data',
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -10249,6 +11179,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                     'Content-Type': 'multipart/form-data',
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -10285,6 +11216,7 @@ System.out.println(response.toString());
                   
                       headers := map[string][]string{
                           "Content-Type": []string{"multipart/form-data"},
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -10300,13 +11232,14 @@ System.out.println(response.toString());
                   
                   

                  POST /api/boards/{board}/integrations/{int}/activities

                  +

                  Add subscribed activities

                  Body parameter

                  activities: string
                   
                   
                  -

                  Parameters

                  +

                  Parameters

                  @@ -10323,14 +11256,14 @@ System.out.println(response.toString()); - + - + @@ -10348,7 +11281,31 @@ System.out.println(response.toString());
                  path string truethe board valuethe board ID
                  int path string truethe int valuethe integration ID
                  body
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  int: the integration ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "enabled": true,
                  +  "title": "string",
                  +  "type": "string",
                  +  "activities": [
                  +    "string"
                  +  ],
                  +  "url": "string",
                  +  "token": "string",
                  +  "boardId": "string",
                  +  "createdAt": "string",
                  +  "modifiedAt": "string",
                  +  "userId": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -10363,7 +11320,7 @@ System.out.println(response.toString()); - +
                  200 OK 200 responseNoneIntegrations
                  @@ -11508,24 +12465,27 @@ to later change the permissions.

                  To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  post_board_user_remove

                  -

                  +

                  remove_board_member

                  +

                  Code samples

                  # You can also use wget
                   curl -X POST /api/boards/{board}/members/{user}/remove \
                     -H 'Content-Type: multipart/form-data' \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  POST /api/boards/{board}/members/{user}/remove HTTP/1.1
                   
                   Content-Type: multipart/form-data
                  +Accept: application/json
                   
                   
                  var headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -11547,6 +12507,7 @@ $.ajax({
                   }';
                   const headers = {
                     'Content-Type':'multipart/form-data',
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -11569,6 +12530,7 @@ fetch('/api/boards/{board}/members/{user}/remove''Content-Type' => 'multipart/form-data',
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -11582,6 +12544,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                     'Content-Type': 'multipart/form-data',
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -11618,6 +12581,7 @@ System.out.println(response.toString());
                   
                       headers := map[string][]string{
                           "Content-Type": []string{"multipart/form-data"},
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -11633,13 +12597,15 @@ System.out.println(response.toString());
                   
                   

                  POST /api/boards/{board}/members/{user}/remove

                  +

                  Remove Member from Board

                  +

                  Only the admin user (the first user) can call the REST API.

                  Body parameter

                  action: string
                   
                   
                  -

                  Parameters

                  +

                  Parameters

                  @@ -11656,14 +12622,14 @@ System.out.println(response.toString()); - + - + @@ -11677,11 +12643,25 @@ System.out.println(response.toString()); - +
                  path string truethe board valuethe board ID
                  user path string truethe user valuethe user ID
                  bodybody string truethe action valuethe action (needs to be remove)
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the board ID

                  +

                  user: the user ID

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string",
                  +  "title": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -11696,7 +12676,36 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  » titlestringfalsenonenone
                  @@ -13652,20 +14661,24 @@ System.out.println(response.toString()); To perform this operation, you must be authenticated by means of one of the following methods: UserSecurity -

                  delete_board_swimlane

                  -

                  +

                  delete_swimlane

                  +

                  Code samples

                  # You can also use wget
                   curl -X DELETE /api/boards/{board}/swimlanes/{swimlane} \
                  +  -H 'Accept: application/json' \
                     -H 'Authorization: API_KEY'
                   
                   
                  DELETE /api/boards/{board}/swimlanes/{swimlane} HTTP/1.1
                   
                  -
                  +Accept: application/json + +
                  var headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -13684,6 +14697,7 @@ $.ajax({
                   
                  const fetch = require('node-fetch');
                   
                   const headers = {
                  +  'Accept':'application/json',
                     'Authorization':'API_KEY'
                   
                   };
                  @@ -13705,6 +14719,7 @@ fetch('/api/boards/{board}/swimlanes/{swimlane}'require 'json'
                   
                   headers = {
                  +  'Accept' => 'application/json',
                     'Authorization' => 'API_KEY'
                   }
                   
                  @@ -13717,6 +14732,7 @@ p JSON.parse(result)
                   
                  import requests
                   headers = {
                  +  'Accept': 'application/json',
                     'Authorization': 'API_KEY'
                   }
                   
                  @@ -13752,6 +14768,7 @@ System.out.println(response.toString());
                   func main() {
                   
                       headers := map[string][]string{
                  +        "Accept": []string{"application/json"},
                           "Authorization": []string{"API_KEY"},
                           
                       }
                  @@ -13767,7 +14784,9 @@ System.out.println(response.toString());
                   
                   

                  DELETE /api/boards/{board}/swimlanes/{swimlane}

                  -

                  Parameters

                  +

                  Delete a swimlane

                  +

                  The swimlane will be deleted, not moved to the recycle bin

                  +

                  Parameters

                  @@ -13784,18 +14803,31 @@ System.out.println(response.toString()); - + - +
                  path string truethe board valuethe ID of the board
                  swimlane path string truethe swimlane valuethe ID of the swimlane
                  -

                  Responses

                  +

                  Detailed descriptions

                  +

                  board: the ID of the board

                  +

                  swimlane: the ID of the swimlane

                  +
                  +

                  Example responses

                  +
                  +
                  +

                  200 Response

                  +
                  +
                  {
                  +  "_id": "string"
                  +}
                  +
                  +

                  Responses

                  @@ -13810,7 +14842,29 @@ System.out.println(response.toString()); - + + + +
                  200 OK 200 responseNoneInline
                  +

                  Response Schema

                  +

                  Status Code 200

                  + + + + + + + + + + + + + + + + +
                  NameTypeRequiredRestrictionsDescription
                  » _idstringfalsenonenone
                  diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 7e804120..bfbe913d 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.15 + version: v4.16 description: | The REST API allows you to control and extend Wekan with ease. @@ -290,18 +290,21 @@ paths: 200 response /api/boards/{board}/cards/{card}/checklists: get: - operationId: get_board_card_checklists + operationId: get_all_checklists + summary: Get the list of checklists attached to a card tags: - Checklists parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true produces: @@ -312,8 +315,18 @@ paths: '200': description: |- 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string post: - operationId: post_board_card_checklists + operationId: new_checklist + summary: create a new checklist tags: - Checklists consumes: @@ -322,22 +335,26 @@ paths: parameters: - name: title in: formData - description: the title value + description: | + the title of the new checklist type: string required: true - name: items in: formData - description: the items value + description: | + the list of items on the new checklist type: string - required: true + required: false - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true produces: @@ -348,25 +365,34 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/cards/{card}/checklists/{checklist}: get: - operationId: get_board_card_checklist + operationId: get_checklist + summary: Get a checklist tags: - Checklists parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true - name: checklist in: path - description: the checklist value + description: | + the ID of the checklist type: string required: true produces: @@ -377,24 +403,54 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + cardId: + type: string + title: + type: string + finishedAt: + type: string + createdAt: + type: string + sort: + type: number + items: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + isFinished: + type: boolean delete: - operationId: delete_board_card_checklist + operationId: delete_checklist + summary: Delete a checklist + description: | + The checklist will be removed, not put in the recycle bin. tags: - Checklists parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true - name: checklist in: path - description: the checklist value + description: | + the ID of the checklist to remove type: string required: true produces: @@ -405,30 +461,41 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}: get: - operationId: get_board_card_checklist_item + operationId: get_checklist_item + summary: Get a checklist item tags: - ChecklistItems + - Checklists parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true - name: checklist in: path - description: the checklist value + description: | + the checklist ID type: string required: true - name: item in: path - description: the item value + description: | + the ID of the item type: string required: true produces: @@ -439,42 +506,52 @@ paths: '200': description: |- 200 response + schema: + $ref: "#/definitions/ChecklistItems" put: - operationId: put_board_card_checklist_item + operationId: edit_checklist_item + summary: Edit a checklist item tags: - ChecklistItems + - Checklists consumes: - multipart/form-data - application/json parameters: - name: isFinished in: formData - description: the isFinished value + description: | + is the item checked? type: string - required: true + required: false - name: title in: formData - description: the title value + description: | + the new text of the item type: string - required: true + required: false - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true - name: checklist in: path - description: the checklist value + description: | + the checklist ID type: string required: true - name: item in: path - description: the item value + description: | + the ID of the item type: string required: true produces: @@ -485,29 +562,42 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string delete: - operationId: delete_board_card_checklist_item + operationId: delete_checklist_item + summary: Delete a checklist item + description: | + Note: this operation can't be reverted. tags: - ChecklistItems + - Checklists parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true - name: checklist in: path - description: the checklist value + description: | + the checklist ID type: string required: true - name: item in: path - description: the item value + description: | + the ID of the item to be removed type: string required: true produces: @@ -518,6 +608,11 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/cards/{card}/comments: get: operationId: get_all_comments @@ -557,7 +652,8 @@ paths: authorId: type: string post: - operationId: post_board_card_comments + operationId: new_comment + summary: Add a comment on a card tags: - CardComments consumes: @@ -566,7 +662,8 @@ paths: parameters: - name: authorId in: formData - description: the authorId value + description: | + the user who 'posted' the comment type: string required: true - name: comment @@ -576,12 +673,14 @@ paths: required: true - name: board in: path - description: the board value + description: | + the board ID of the card type: string required: true - name: card in: path - description: the card value + description: | + the ID of the card type: string required: true produces: @@ -592,25 +691,34 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/cards/{card}/comments/{comment}: get: - operationId: get_board_card_comment + operationId: get_comment + summary: Get a comment on a card tags: - CardComments parameters: - name: board in: path - description: the board value + description: | + the board ID of the card type: string required: true - name: card in: path - description: the card value + description: | + the ID of the card type: string required: true - name: comment in: path - description: the comment value + description: | + the ID of the comment to retrieve type: string required: true produces: @@ -621,24 +729,30 @@ paths: '200': description: |- 200 response + schema: + $ref: "#/definitions/CardComments" delete: - operationId: delete_board_card_comment + operationId: delete_comment + summary: Delete a comment on a card tags: - CardComments parameters: - name: board in: path - description: the board value + description: | + the board ID of the card type: string required: true - name: card in: path - description: the card value + description: | + the ID of the card type: string required: true - name: comment in: path - description: the comment value + description: | + the ID of the comment to delete type: string required: true produces: @@ -649,25 +763,34 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}: get: - operationId: get_board_customFieldValue + operationId: get_cards_by_custom_field + summary: Get all Cards that matchs a value of a specific custom field tags: - Cards parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: customField in: path - description: the customField value + description: | + the list ID type: string required: true - name: customFieldValue in: path - description: the customFieldValue value + description: | + the value to look for type: string required: true produces: @@ -678,6 +801,21 @@ paths: '200': description: |- 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + description: + type: string + listId: + type: string + swinlaneId: + type: string /api/boards/{board}/custom-fields: get: operationId: get_all_custom_fields @@ -779,7 +917,8 @@ paths: type: string /api/boards/{board}/custom-fields/{customField}: get: - operationId: get_board_customField + operationId: get_custom_field + summary: Get a Custom Fields attached to a board tags: - CustomFields parameters: @@ -790,7 +929,8 @@ paths: required: true - name: customField in: path - description: the customField value + description: | + the ID of the custom field type: string required: true produces: @@ -801,8 +941,13 @@ paths: '200': description: |- 200 response + schema: + $ref: "#/definitions/CustomFields" delete: - operationId: delete_board_customField + operationId: delete_custom_field + summary: Delete a Custom Fields attached to a board + description: | + The Custom Field can't be retrieved after this operation tags: - CustomFields parameters: @@ -813,7 +958,8 @@ paths: required: true - name: customField in: path - description: the customField value + description: | + the ID of the custom field type: string required: true produces: @@ -824,6 +970,11 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/export: get: operationId: exportJson @@ -1036,18 +1187,21 @@ paths: type: string /api/boards/{board}/integrations/{int}/activities: delete: - operationId: delete_board_int_activities + operationId: delete_integration_activities + summary: Delete subscribed activities tags: - Integrations parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: int in: path - description: the int value + description: | + the integration ID type: string required: true produces: @@ -1058,8 +1212,11 @@ paths: '200': description: |- 200 response + schema: + $ref: "#/definitions/Integrations" post: - operationId: post_board_int_activities + operationId: new_integration_activities + summary: Add subscribed activities tags: - Integrations consumes: @@ -1073,12 +1230,14 @@ paths: required: true - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: int in: path - description: the int value + description: | + the integration ID type: string required: true produces: @@ -1089,6 +1248,8 @@ paths: '200': description: |- 200 response + schema: + $ref: "#/definitions/Integrations" /api/boards/{board}/labels: put: operationId: add_board_label @@ -1359,23 +1520,27 @@ paths: type: string /api/boards/{board}/lists/{list}/cards/{card}: get: - operationId: get_board_list_card + operationId: get_card + summary: Get a Card tags: - Cards parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: list in: path - description: the list value + description: | + the list ID of the card type: string required: true - name: card in: path - description: the card value + description: | + the card ID type: string required: true produces: @@ -1386,8 +1551,23 @@ paths: '200': description: |- 200 response + schema: + $ref: "#/definitions/Cards" put: - operationId: put_board_list_card + operationId: edit_card + summary: Edit Fields in a Card + description: | + Edit a card + + The color has to be chosen between `white`, `green`, `yellow`, `orange`, + `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, + `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, + `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, + `indigo`: + + Wekan card colors + + Note: setting the color to white has the same effect than removing it. tags: - Cards consumes: @@ -1396,117 +1576,140 @@ paths: parameters: - name: title in: formData - description: the title value + description: | + the new title of the card type: string - required: true + required: false - name: listId in: formData - description: the listId value + description: | + the new list ID of the card (move operation) type: string - required: true + required: false - name: authorId in: formData - description: the authorId value + description: | + change the owner of the card type: string - required: true + required: false - name: parentId in: formData - description: the parentId value + description: | + change the parent of the card type: string - required: true + required: false - name: description in: formData - description: the description value + description: | + the new description of the card type: string - required: true + required: false - name: color in: formData - description: the color value + description: | + the new color of the card type: string - required: true + required: false - name: vote in: formData - description: the vote value - type: string - required: true + description: | + the vote object + type: object + required: false - name: labelIds in: formData - description: the labelIds value + description: | + the new list of label IDs attached to the card type: string - required: true + required: false - name: requestedBy in: formData - description: the requestedBy value + description: | + the new requestedBy field of the card type: string - required: true + required: false - name: assignedBy in: formData - description: the assignedBy value + description: | + the new assignedBy field of the card type: string - required: true + required: false - name: receivedAt in: formData - description: the receivedAt value + description: | + the new receivedAt field of the card type: string - required: true + required: false - name: startAt in: formData - description: the startAt value + description: | + the new startAt field of the card type: string - required: true + required: false - name: dueAt in: formData - description: the dueAt value + description: | + the new dueAt field of the card type: string - required: true + required: false - name: endAt in: formData - description: the endAt value + description: | + the new endAt field of the card type: string - required: true + required: false - name: spentTime in: formData - description: the spentTime value + description: | + the new spentTime field of the card type: string - required: true + required: false - name: isOverTime in: formData - description: the isOverTime value - type: string - required: true + description: | + the new isOverTime field of the card + type: boolean + required: false - name: customFields in: formData - description: the customFields value + description: | + the new customFields value of the card type: string - required: true + required: false - name: members in: formData - description: the members value + description: | + the new list of member IDs attached to the card type: string - required: true + required: false - name: assignees in: formData - description: the assignees value + description: | + the array of maximum one ID of assignee attached to the card type: string - required: true + required: false - name: swimlaneId in: formData - description: the swimlaneId value + description: | + the new swimlane ID of the card type: string - required: true + required: false - name: board in: path - description: the board value + description: | + the board ID of the card type: string required: true - name: list in: path - description: the list value + description: | + the list ID of the card type: string required: true - name: card in: path - description: the card value + description: | + the ID of the card type: string required: true produces: @@ -1517,24 +1720,36 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string delete: - operationId: delete_board_list_card + operationId: delete_card + summary: Delete a card from a board + description: | + This operation **deletes** a card, and therefore the card + is not put in the recycle bin. tags: - Cards parameters: - name: board in: path - description: the board value + description: | + the board ID of the card type: string required: true - name: list in: path - description: the list value + description: | + the list ID of the card type: string required: true - name: card in: path - description: the card value + description: | + the ID of the card type: string required: true produces: @@ -1545,6 +1760,11 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/members/{member}: post: operationId: set_board_member_permission @@ -1668,26 +1888,33 @@ paths: type: string /api/boards/{board}/members/{user}/remove: post: - operationId: post_board_user_remove + operationId: remove_board_member + summary: Remove Member from Board + description: | + Only the admin user (the first user) can call the REST API. tags: - Users + - Boards consumes: - multipart/form-data - application/json parameters: - name: action in: formData - description: the action value + description: | + the action (needs to be `remove`) type: string required: true - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: user in: path - description: the user value + description: | + the user ID type: string required: true produces: @@ -1698,6 +1925,13 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string + title: + type: string /api/boards/{board}/swimlanes: get: operationId: get_all_swimlanes @@ -1792,18 +2026,23 @@ paths: schema: $ref: "#/definitions/Swimlanes" delete: - operationId: delete_board_swimlane + operationId: delete_swimlane + summary: Delete a swimlane + description: | + The swimlane will be deleted, not moved to the recycle bin tags: - Swimlanes parameters: - name: board in: path - description: the board value + description: | + the ID of the board type: string required: true - name: swimlane in: path - description: the swimlane value + description: | + the ID of the swimlane type: string required: true produces: @@ -1814,20 +2053,28 @@ paths: '200': description: |- 200 response + schema: + type: object + properties: + _id: + type: string /api/boards/{board}/swimlanes/{swimlane}/cards: get: - operationId: get_board_swimlane_cards + operationId: get_swimlane_cards + summary: get all cards attached to a swimlane tags: - Cards parameters: - name: board in: path - description: the board value + description: | + the board ID type: string required: true - name: swimlane in: path - description: the swimlane value + description: | + the swimlane ID type: string required: true produces: @@ -1838,6 +2085,19 @@ paths: '200': description: |- 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + description: + type: string + listId: + type: string /api/user: get: operationId: get_current_user diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index 27dc1be5..fab8f1d6 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 = 415, + appVersion = 416, # Increment this for every release. - appMarketingVersion = (defaultText = "4.15.0~2020-06-16"), + appMarketingVersion = (defaultText = "4.16.0~2020-06-17"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 5eb378452761ad1d6d67a491316007fdf6dfd689 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 18 Jun 2020 02:00:51 +0300 Subject: Revert users changes that were made at Wekan v4.16. Thanks to xet7 ! --- fix-download-unicode/cfs_access-point.txt | 2 +- models/export.js | 4 ++-- models/users.js | 16 ++++++++-------- packages/meteor-accounts-cas/cas_server.js | 4 ++-- packages/meteor-useraccounts-core/Guide.md | 2 +- packages/meteor-useraccounts-core/lib/methods.js | 2 +- packages/meteor-useraccounts-core/lib/server.js | 2 +- packages/meteor-useraccounts-core/lib/server_methods.js | 2 +- packages/wekan-ldap/server/loginHandler.js | 6 +++--- packages/wekan-ldap/server/sync.js | 6 +++--- sandstorm.js | 6 +++--- 11 files changed, 26 insertions(+), 26 deletions(-) diff --git a/fix-download-unicode/cfs_access-point.txt b/fix-download-unicode/cfs_access-point.txt index 2e86ac4e..de1c6c76 100644 --- a/fix-download-unicode/cfs_access-point.txt +++ b/fix-download-unicode/cfs_access-point.txt @@ -869,7 +869,7 @@ var expirationAuth = function expirationAuth() { } // 326 // 327 // We are not on a secure line - so we have to look up the user... // 328 - var user = Users.findOne({ // 329 + var user = Meteor.users.findOne({ // 329 $or: [ // 330 {'services.resume.loginTokens.hashedToken': Accounts._hashLoginToken(userToken)}, // 331 {'services.resume.loginTokens.token': userToken} // 332 diff --git a/models/export.js b/models/export.js index b90f584c..17b08dad 100644 --- a/models/export.js +++ b/models/export.js @@ -28,7 +28,7 @@ if (Meteor.isServer) { const loginToken = req.query.authToken; if (loginToken) { const hashToken = Accounts._hashLoginToken(loginToken); - user = Users.findOne({ + user = Meteor.users.findOne({ 'services.resume.loginTokens.hashedToken': hashToken, }); } else if (!Meteor.settings.public.sandstorm) { @@ -69,7 +69,7 @@ if (Meteor.isServer) { const loginToken = params.query.authToken; if (loginToken) { const hashToken = Accounts._hashLoginToken(loginToken); - user = Users.findOne({ + user = Meteor.users.findOne({ 'services.resume.loginTokens.hashedToken': hashToken, }); } else if (!Meteor.settings.public.sandstorm) { diff --git a/models/users.js b/models/users.js index d1a85c37..2b5a059e 100644 --- a/models/users.js +++ b/models/users.js @@ -933,7 +933,7 @@ if (Meteor.isServer) { user.authenticationMethod = 'oauth2'; // see if any existing user has this email address or username, otherwise create new - const existingUser = Users.findOne({ + const existingUser = Meteor.users.findOne({ $or: [{ 'emails.address': email }, { username: user.username }], }); if (!existingUser) return user; @@ -946,7 +946,7 @@ if (Meteor.isServer) { existingUser.profile = user.profile; existingUser.authenticationMethod = user.authenticationMethod; - Meteor.users.remove({ _id: user._id }); + Meteor.users.remove({ _id: existingUser._id }); // remove existing record return existingUser; } @@ -1277,7 +1277,7 @@ if (Meteor.isServer) { JsonRoutes.add('GET', '/api/user', function(req, res) { try { Authentication.checkLoggedIn(req.userId); - const data = Users.findOne({ _id: req.userId }); + const data = Meteor.users.findOne({ _id: req.userId }); delete data.services; // get all boards where the user is member of @@ -1368,7 +1368,7 @@ if (Meteor.isServer) { return u; }); - const user = Users.findOne({ _id: id }); + const user = Meteor.users.findOne({ _id: id }); user.boards = boards; JsonRoutes.sendResult(res, { code: 200, @@ -1404,7 +1404,7 @@ if (Meteor.isServer) { Authentication.checkUserId(req.userId); const id = req.params.userId; const action = req.body.action; - let data = Users.findOne({ _id: id }); + let data = Meteor.users.findOne({ _id: id }); if (data !== undefined) { if (action === 'takeOwnership') { data = Boards.find( @@ -1437,7 +1437,7 @@ if (Meteor.isServer) { } else if (action === 'enableLogin') { Users.update({ _id: id }, { $set: { loginDisabled: '' } }); } - data = Users.findOne({ _id: id }); + data = Meteor.users.findOne({ _id: id }); } } JsonRoutes.sendResult(res, { @@ -1481,7 +1481,7 @@ if (Meteor.isServer) { const boardId = req.params.boardId; const action = req.body.action; const { isAdmin, isNoComments, isCommentOnly } = req.body; - let data = Users.findOne({ _id: userId }); + let data = Meteor.users.findOne({ _id: userId }); if (data !== undefined) { if (action === 'add') { data = Boards.find({ @@ -1542,7 +1542,7 @@ if (Meteor.isServer) { const userId = req.params.userId; const boardId = req.params.boardId; const action = req.body.action; - let data = Users.findOne({ _id: userId }); + let data = Meteor.users.findOne({ _id: userId }); if (data !== undefined) { if (action === 'remove') { data = Boards.find({ diff --git a/packages/meteor-accounts-cas/cas_server.js b/packages/meteor-accounts-cas/cas_server.js index e07052b0..2e8edef2 100644 --- a/packages/meteor-accounts-cas/cas_server.js +++ b/packages/meteor-accounts-cas/cas_server.js @@ -252,13 +252,13 @@ const casValidate = (req, ticket, token, service, callback) => { if (attrs.debug) { console.log(`CAS response : ${JSON.stringify(result)}`); } - let user = Users.findOne({ 'username': options.username }); + let user = Meteor.users.findOne({ 'username': options.username }); if (! user) { if (attrs.debug) { console.log(`Creating user account ${JSON.stringify(options)}`); } const userId = Accounts.insertUserDoc({}, options); - user = Users.findOne(userId); + user = Meteor.users.findOne(userId); } if (attrs.debug) { console.log(`Using user account ${JSON.stringify(user)}`); diff --git a/packages/meteor-useraccounts-core/Guide.md b/packages/meteor-useraccounts-core/Guide.md index 48499708..c84b3f8b 100644 --- a/packages/meteor-useraccounts-core/Guide.md +++ b/packages/meteor-useraccounts-core/Guide.md @@ -804,7 +804,7 @@ If, differently, you do something like this: if (Meteor.isServer){ Meteor.methods({ "userExists": function(username){ - return !!Users.findOne({username: username}); + return !!Meteor.users.findOne({username: username}); }, }); } diff --git a/packages/meteor-useraccounts-core/lib/methods.js b/packages/meteor-useraccounts-core/lib/methods.js index 906edcaf..0d3a070d 100644 --- a/packages/meteor-useraccounts-core/lib/methods.js +++ b/packages/meteor-useraccounts-core/lib/methods.js @@ -10,7 +10,7 @@ Meteor.methods({ var userId = this.userId; if (userId) { - var user = Users.findOne(userId); + var user = Meteor.users.findOne(userId); var numServices = _.keys(user.services).length; // including "resume" var unset = {}; diff --git a/packages/meteor-useraccounts-core/lib/server.js b/packages/meteor-useraccounts-core/lib/server.js index 07f563bd..2a925dc7 100644 --- a/packages/meteor-useraccounts-core/lib/server.js +++ b/packages/meteor-useraccounts-core/lib/server.js @@ -80,7 +80,7 @@ AT.prototype._init = function() { return Meteor.users.find(userId, {fields: {services: 1}}); /* if (userId) { - var user = Users.findOne(userId); + var user = Meteor.users.findOne(userId); var services_id = _.chain(user.services) .keys() .reject(function(service) {return service === "resume";}) diff --git a/packages/meteor-useraccounts-core/lib/server_methods.js b/packages/meteor-useraccounts-core/lib/server_methods.js index 700c2eac..500440d7 100644 --- a/packages/meteor-useraccounts-core/lib/server_methods.js +++ b/packages/meteor-useraccounts-core/lib/server_methods.js @@ -124,7 +124,7 @@ Meteor.methods({ ATResendVerificationEmail: function (email) { check(email, String); - var user = Users.findOne({ "emails.address": email }); + var user = Meteor.users.findOne({ "emails.address": email }); // Send the standard error back to the client if no user exist with this e-mail if (!user) { diff --git a/packages/wekan-ldap/server/loginHandler.js b/packages/wekan-ldap/server/loginHandler.js index 6f8504c3..79b3899a 100644 --- a/packages/wekan-ldap/server/loginHandler.js +++ b/packages/wekan-ldap/server/loginHandler.js @@ -96,7 +96,7 @@ Accounts.registerLoginHandler('ldap', function(loginRequest) { log_info('Querying user'); log_debug('userQuery', userQuery); - user = Users.findOne(userQuery); + user = Meteor.users.findOne(userQuery); } // Attempt to find user by username @@ -137,7 +137,7 @@ Accounts.registerLoginHandler('ldap', function(loginRequest) { log_debug('userQuery', userQuery); - user = Users.findOne(userQuery); + user = Meteor.users.findOne(userQuery); } // Attempt to find user by e-mail address only @@ -159,7 +159,7 @@ Accounts.registerLoginHandler('ldap', function(loginRequest) { log_debug('userQuery', userQuery); - user = Users.findOne(userQuery); + user = Meteor.users.findOne(userQuery); } diff --git a/packages/wekan-ldap/server/sync.js b/packages/wekan-ldap/server/sync.js index 5d0a9839..dd3855d3 100644 --- a/packages/wekan-ldap/server/sync.js +++ b/packages/wekan-ldap/server/sync.js @@ -234,7 +234,7 @@ export function syncUserData(user, ldapUser) { const username = slug(getLdapUsername(ldapUser)); if (user && user._id && username !== user.username) { log_info('Syncing user username', user.username, '->', username); - Users.findOne({ _id: user._id }, { $set: { username }}); + Meteor.users.findOne({ _id: user._id }, { $set: { username }}); } } @@ -341,7 +341,7 @@ export function importNewUsers(ldap) { } // Add user if it was not added before - let user = Users.findOne(userQuery); + let user = Meteor.users.findOne(userQuery); if (!user && username && LDAP.settings_get('LDAP_MERGE_EXISTING_USERS') === true) { const userQuery = { @@ -350,7 +350,7 @@ export function importNewUsers(ldap) { log_debug('userQuery merge', userQuery); - user = Users.findOne(userQuery); + user = Meteor.users.findOne(userQuery); if (user) { syncUserData(user, ldapUser); } diff --git a/sandstorm.js b/sandstorm.js index 34b1e507..de386d14 100644 --- a/sandstorm.js +++ b/sandstorm.js @@ -175,7 +175,7 @@ if (isSandstorm && Meteor.isServer) { const users = {}; function ensureUserListed(userId) { if (!users[userId]) { - const user = Users.findOne(userId); + const user = Meteor.users.findOne(userId); if (user) { users[userId] = { id: user.services.sandstorm.id }; } else { @@ -217,7 +217,7 @@ if (isSandstorm && Meteor.isServer) { 'userId', ); (comment.text.match(/\B@([\w.]*)/g) || []).forEach(username => { - const user = Users.findOne({ + const user = Meteor.users.findOne({ username: username.slice(1), }); if (user && activeMembers.indexOf(user._id) !== -1) { @@ -368,7 +368,7 @@ if (isSandstorm && Meteor.isServer) { if (newMethods[key].auth) { newMethods[key].auth = function() { const sandstormID = this.req.headers['x-sandstorm-user-id']; - const user = Users.findOne({ + const user = Meteor.users.findOne({ 'services.sandstorm.id': sandstormID, }); return user && user._id; -- cgit v1.2.3-1-g7c22 From e21c078521c061fe019083ec5a5f62a99e6254d1 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Thu, 18 Jun 2020 01:02:38 +0200 Subject: Fix activities view on mobile devices Turns out that the sidebar is not available on mobile device therefore add guards for this for now. This needs further investigation. --- client/components/activities/activities.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index edfaab2a..83843d1d 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -7,8 +7,9 @@ BlazeComponent.extendComponent({ // XXX Should we use ReactiveNumber? this.page = new ReactiveVar(1); this.loadNextPageLocked = false; + // TODO is sidebar always available? E.g. on small screens/mobile devices const sidebar = Sidebar; - sidebar.callFirstWith(null, 'resetNextPeak'); + sidebar && sidebar.callFirstWith(null, 'resetNextPeak'); this.autorun(() => { let mode = this.data().mode; const capitalizedMode = Utils.capitalize(mode); @@ -29,6 +30,8 @@ BlazeComponent.extendComponent({ this.subscribe('activities', mode, searchId, limit, hideSystem, () => { this.loadNextPageLocked = false; + // TODO the guard can be removed as soon as the TODO above is resolved + if (!sidebar) return; // If the sibear peak hasn't increased, that mean that there are no more // activities, and we can stop calling new subscriptions. // XXX This is hacky! We need to know excatly and reactively how many -- cgit v1.2.3-1-g7c22 From afe00d02cddf016a3ccc1ed9a98a7f10d3339f26 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 18 Jun 2020 02:13:19 +0300 Subject: Add back checks about can user export CSV/TSV. Thanks to marc1006 and xet7 ! Related #3173 --- models/export.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/models/export.js b/models/export.js index 17b08dad..7a59fbec 100644 --- a/models/export.js +++ b/models/export.js @@ -80,19 +80,21 @@ if (Meteor.isServer) { }); } const exporter = new Exporter(boardId); - //if (exporter.canExport(user)) { - body = params.query.delimiter - ? exporter.buildCsv(params.query.delimiter) - : exporter.buildCsv(); - //'Content-Length': body.length, - res.writeHead(200, { - 'Content-Type': params.query.delimiter ? 'text/csv' : 'text/tsv', - }); - res.write(body); - res.end(); - //} else { - // res.writeHead(403); - // res.end('Permission Error'); - //} + if (exporter.canExport(user)) { + body = params.query.delimiter + ? exporter.buildCsv(params.query.delimiter) + : exporter.buildCsv(); + res.writeHead(200, { + // Checking length does not work https://github.com/wekan/wekan/issues/3173 + // so not using it here + //'Content-Length': body.length, + 'Content-Type': params.query.delimiter ? 'text/csv' : 'text/tsv', + }); + res.write(body); + res.end(); + } else { + res.writeHead(403); + res.end('Permission Error'); + } }); } -- cgit v1.2.3-1-g7c22 From cd97cca7b8651e3d9aa746d7d12f270fb96c1f82 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 18 Jun 2020 02:23:48 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7cc46fe..745ae076 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# Upcoming Wekan release + +This release fixes the following bugs: + +- [Revert finding correct user changes that were made at Wekan v4.16](https://github.com/wekan/wekan/commit/5eb378452761ad1d6d67a491316007fdf6dfd689). + Thanks to xet7. +- [Fix activities view on mobile devices](https://github.com/wekan/wekan/pull/3183). + Thanks to marc1006. +- [Add back checks about can user export CSV/TSV](https://github.com/wekan/wekan/commit/afe00d02cddf016a3ccc1ed9a98a7f10d3339f26). + Thanks to marc1006 and xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.16 2020-06-17 Wekan release This release adds the following features: -- cgit v1.2.3-1-g7c22 From 032099cfbeb140faffeb3a8e5b5934260c1ce864 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 18 Jun 2020 02:33:01 +0300 Subject: v4.17 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 4 ++-- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 745ae076..8ff2c972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.17 2020-06-18 Wekan release This release fixes the following bugs: diff --git a/Stackerfile.yml b/Stackerfile.yml index b9bc688d..90359b27 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.16.0" +appVersion: "v4.17.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index d41a22db..5c99549a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.16.0", + "version": "v4.17.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 398bc04e..4dcab06a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.16.0", + "version": "v4.17.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index 92794307..31398ea2 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
                  • - Wekan REST API v4.16 + Wekan REST API v4.17
                  • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                    -

                    Wekan REST API v4.16

                    +

                    Wekan REST API v4.17

                    Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

                    diff --git a/public/api/wekan.yml b/public/api/wekan.yml index bfbe913d..a0d16550 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.16 + version: v4.17 description: | The REST API allows you to control and extend Wekan with ease. diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index fab8f1d6..b926fb63 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 = 416, + appVersion = 417, # Increment this for every release. - appMarketingVersion = (defaultText = "4.16.0~2020-06-17"), + appMarketingVersion = (defaultText = "4.17.0~2020-06-18"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 311c0d23a4566c17a65f34317fe084236d6b6544 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 24 Jun 2020 10:00:53 -0400 Subject: Add meteor ens3 Ethernet interface to rebuild-wekan.sh Thanks to xet7 ! --- rebuild-wekan.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index dab80b53..6e057d2d 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -64,7 +64,7 @@ function npm_call(){ echo PS3='Please enter your choice: ' -options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for development on Ethernet IP address port 4000" "Run Meteor for development on Custom IP address and port" "Quit") +options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for development on Ethernet IP address port 4000" "Run Meteor for development on Eth interface ens3 address port 4000" "Run Meteor for development on Custom IP address and port" "Quit") select opt in "${options[@]}" do case $opt in @@ -172,6 +172,12 @@ do break ;; + "Run Meteor for development on Eth interface ens3 address port 4000") + IPADDRESS=$(ip addr show ens3 | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1) + WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000 + break + ;; + "Run Meteor for development on Custom IP address and port") ip address echo "From above list, what is your IP address?" -- cgit v1.2.3-1-g7c22 From 20edac091a0ba9a100eaae9119cff87a02deca18 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 24 Jun 2020 10:02:05 -0400 Subject: Update translations. --- i18n/ja.i18n.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index 5fac2a9f..e575914c 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -809,5 +809,5 @@ "archived": "アーカイブ", "delete-linked-card-before-this-card": "カード内にある、リンクされているカードを削除しなければ、このカードは削除できません", "delete-linked-cards-before-this-list": "リスト内にある、他のカードを参照しているカードを削除しなければ、このリストは削除できません", - "hide-checked-items": "Hide checked items" + "hide-checked-items": "チェックした項目を隠す" } -- cgit v1.2.3-1-g7c22 From 0be1c00fccef8797a1b3612593a6623a9b465e0d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 25 Jun 2020 22:08:57 +0300 Subject: Fix start-wekan.bat Thanks to xet7 ! --- start-wekan.bat | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) mode change 100755 => 100644 start-wekan.bat diff --git a/start-wekan.bat b/start-wekan.bat old mode 100755 new mode 100644 index 272e963e..cfea7001 --- a/start-wekan.bat +++ b/start-wekan.bat @@ -1,9 +1,4 @@ -REM ------------------------------------------------------------ - -REM NOTE: THIS .BAT DOES NOT WORK !! -REM Use instead this webpage instructions to build on Windows: -REM https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows -REM Please add fix PRs, like config of MongoDB etc. +@ECHO OFF REM ------------------------------------------------------------ @@ -12,11 +7,13 @@ REM SET DEBUG=true REM ------------------------------------------------------------ +SET ROOT_URL=http://localhost +SET PORT=80 SET MONGO_URL=mongodb://127.0.0.1:27017/wekan -SET ROOT_URL=http://127.0.0.1:2000/ -SET MAIL_URL=smtp://user:pass@mailserver.example.com:25/ -SET MAIL_FROM=admin@example.com -SET PORT=2000 + +REM https://github.com/wekan/wekan/wiki/Troubleshooting-Mail +REM SET MAIL_URL=smtps://username:password@email-smtp.eu-west-1.amazonaws.com:587/ +REM SET MAIL_FROM="Wekan Boards " REM # If you disable Wekan API with false, Export Board does not work. SET WITH_API=true @@ -395,6 +392,4 @@ REM # LOGOUT_ON_MINUTES : The number of minutes REM # example : LOGOUT_ON_MINUTES=55 REM SET LOGOUT_ON_MINUTES= -cd .build\bundle node main.js -cd ..\.. -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From a77cf56fbdaf0b74d8b97aa41b0a88fee85e3ee1 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 28 Jun 2020 06:42:05 -0400 Subject: Fix running meteor for dev in rebuild-wekan.sh Thanks to xet7 ! --- rebuild-wekan.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index 6e057d2d..e8336a29 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -64,7 +64,8 @@ function npm_call(){ echo PS3='Please enter your choice: ' -options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for development on Ethernet IP address port 4000" "Run Meteor for development on Eth interface ens3 address port 4000" "Run Meteor for development on Custom IP address and port" "Quit") +options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for dev on http://localhost:4000" "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000" "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT" "Quit") + select opt in "${options[@]}" do case $opt in @@ -166,19 +167,18 @@ do break ;; - "Run Meteor for development on Ethernet IP address port 4000") - IPADDRESS=$(ip addr show enp2s0 | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1) - WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000 + "Run Meteor for dev on http://localhost:4000") + WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000 break ;; - "Run Meteor for development on Eth interface ens3 address port 4000") - IPADDRESS=$(ip addr show ens3 | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1) - WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000 - break - ;; + "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000") + IPADDRESS=$(ip a | grep 'scope global' | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1) + WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000 + break + ;; - "Run Meteor for development on Custom IP address and port") + "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT") ip address echo "From above list, what is your IP address?" read IPADDRESS -- cgit v1.2.3-1-g7c22 From 2575552e11bdb975d90d31a35bd83cb0eed1faf7 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 28 Jun 2020 06:44:56 -0400 Subject: Update ChangeLog. --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ff2c972..c671fe74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# Upcoming Wekan release + +This release fixes the following bugs: + +- [Fix running meteor for dev in rebuild-wekan.sh](https://github.com/wekan/wekan/commit/a77cf56fbdaf0b74d8b97aa41b0a88fee85e3ee1). + Thanks to xet7. +- [Fix start-wekan.bat](https://github.com/wekan/wekan/commit/0be1c00fccef8797a1b3612593a6623a9b465e0d) and + [Windows bundle install](https://github.com/wekan/wekan/wiki/Windows#a-bundle-with-windows-nodemongodb). + Thanks to xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.17 2020-06-18 Wekan release This release fixes the following bugs: -- cgit v1.2.3-1-g7c22 From ee6852f8ea677d664cb89fe578d241d602e27ad2 Mon Sep 17 00:00:00 2001 From: Lua00808 <3102oikawa713hayaki@gmail.com> Date: Mon, 29 Jun 2020 14:05:01 +0900 Subject: Fix typo. --- docker-compose.yml | 2 +- torodb-postgresql/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index cc60d294..338840dd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -180,7 +180,7 @@ services: # that if you're using more than 1 instance of Wekan # (or any MeteorJS based tool) you're supposed to set # MONGO_OPLOG_URL as an environment variable. - # Without setting it, Meteor will perform a pull-and-diff + # Without setting it, Meteor will perform a poll-and-diff # update of it's dataset. With it, Meteor will update from # the OPLOG. See here # https://blog.meteor.com/tuning-meteor-mongo-livedata-for-scalability-13fe9deb8908 diff --git a/torodb-postgresql/docker-compose.yml b/torodb-postgresql/docker-compose.yml index 793a9b4f..5ea02525 100644 --- a/torodb-postgresql/docker-compose.yml +++ b/torodb-postgresql/docker-compose.yml @@ -173,7 +173,7 @@ services: # that if you're using more than 1 instance of Wekan # (or any MeteorJS based tool) you're supposed to set # MONGO_OPLOG_URL as an environment variable. - # Without setting it, Meteor will perform a pull-and-diff + # Without setting it, Meteor will perform a poll-and-diff # update of it's dataset. With it, Meteor will update from # the OPLOG. See here # https://blog.meteor.com/tuning-meteor-mongo-livedata-for-scalability-13fe9deb8908 -- cgit v1.2.3-1-g7c22 From eb4219504d35265d5305bbb2729cc11dc51ef423 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 29 Jun 2020 06:15:08 -0400 Subject: Update ChangeLog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c671fe74..d2c04fbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ This release fixes the following bugs: - [Fix start-wekan.bat](https://github.com/wekan/wekan/commit/0be1c00fccef8797a1b3612593a6623a9b465e0d) and [Windows bundle install](https://github.com/wekan/wekan/wiki/Windows#a-bundle-with-windows-nodemongodb). Thanks to xet7. +- [Fix typo](https://github.com/wekan/wekan/pull/3197). + Thanks to Lua00808. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From c5e0832e00567272f684ec2b5b9eafddb4bd737a Mon Sep 17 00:00:00 2001 From: Allemand <37148072+salleman33@users.noreply.github.com> Date: Fri, 10 Jul 2020 10:06:39 +0200 Subject: Update users.js issue #3099 : we have to delete the existing user, Account Service create it again --- models/users.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/users.js b/models/users.js index 2b5a059e..7c5d2855 100644 --- a/models/users.js +++ b/models/users.js @@ -946,7 +946,8 @@ if (Meteor.isServer) { existingUser.profile = user.profile; existingUser.authenticationMethod = user.authenticationMethod; - Meteor.users.remove({ _id: existingUser._id }); // remove existing record + Meteor.users.remove({ _id: user._id }); + Meteor.users.remove({ _id: existingUser._id }); // is going to be created again return existingUser; } -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From 2cbd7d83f991178ceae7f06e18eb74e370579f85 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 16:08:31 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2c04fbb..c4ba00ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ This release fixes the following bugs: Thanks to xet7. - [Fix typo](https://github.com/wekan/wekan/pull/3197). Thanks to Lua00808. +- [Fix creating user misbehaving in some special case](https://github.com/wekan/wekan/pull/3206). + Thanks to salleman33. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From ba24c4e40c728d030504ed21ccf79247d0449e1b Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 18:56:26 +0300 Subject: All logged in users are now allowed to reorder boards by dragging at All Boards page and Public Boards page. Thanks to xet7 ! Fixes #3147 --- client/components/boards/boardsList.js | 6 ------ models/boards.js | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/client/components/boards/boardsList.js b/client/components/boards/boardsList.js index eee119ea..145f6789 100644 --- a/client/components/boards/boardsList.js +++ b/client/components/boards/boardsList.js @@ -25,10 +25,6 @@ BlazeComponent.extendComponent({ }, onRendered() { - function userIsAllowedToMove() { - return Meteor.user(); - } - const itemsSelector = '.js-board:not(.placeholder)'; const $boards = this.$('.js-boards'); @@ -77,8 +73,6 @@ BlazeComponent.extendComponent({ handle: '.board-handle', }); } - - $boards.sortable('option', 'disabled', !userIsAllowedToMove()); }); }, diff --git a/models/boards.js b/models/boards.js index 11d8fd89..f272e097 100644 --- a/models/boards.js +++ b/models/boards.js @@ -1219,6 +1219,14 @@ if (Meteor.isServer) { fetch: ['members'], }); + // All logged in users are allowed to reorder boards by dragging at All Boards page and Public Boards page. + Boards.allow({ + update(userId, board, fieldNames) { + return _.contains(fieldNames, 'sort'); + }, + fetch: [], + }); + // The number of users that have starred this board is managed by trusted code // and the user is not allowed to update it Boards.deny({ -- cgit v1.2.3-1-g7c22 From af240450d6a79afc045ce06cc17bbb0005eb3c2e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 19:01:51 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4ba00ba..fd59eb41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ This release fixes the following bugs: +- [All logged in users are now allowed to reorder boards by dragging at All Boards page and Public Boards page](https://github.com/wekan/wekan/commit/ba24c4e40c728d030504ed21ccf79247d0449e1b). + Thanks to xet7. - [Fix running meteor for dev in rebuild-wekan.sh](https://github.com/wekan/wekan/commit/a77cf56fbdaf0b74d8b97aa41b0a88fee85e3ee1). Thanks to xet7. - [Fix start-wekan.bat](https://github.com/wekan/wekan/commit/0be1c00fccef8797a1b3612593a6623a9b465e0d) and -- cgit v1.2.3-1-g7c22 From 05cd1247ab935f586d747743bb9cd79d23e0b1e6 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 19:04:46 +0300 Subject: Update dependencies. --- .meteor/versions | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.meteor/versions b/.meteor/versions index 7a6bd733..990f8710 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -52,7 +52,7 @@ ddp@1.4.0 ddp-client@2.3.3 ddp-common@1.4.0 ddp-rate-limiter@1.0.7 -ddp-server@2.3.1 +ddp-server@2.3.2 deps@1.0.12 diff-sequence@1.1.1 dynamic-import@0.5.2 @@ -91,7 +91,7 @@ logging@1.1.20 lucasantoniassi:accounts-lockout@1.0.0 matb33:collection-hooks@0.9.1 matteodem:easy-search@1.6.4 -mdg:meteor-apm-agent@3.2.5 +mdg:meteor-apm-agent@3.2.6 mdg:validation-error@0.5.1 meteor@1.9.3 meteor-base@1.4.0 @@ -109,7 +109,7 @@ mobile-status-bar@1.1.0 modern-browsers@0.1.5 modules@0.15.0 modules-runtime@0.12.0 -momentjs:moment@2.26.0 +momentjs:moment@2.27.0 mongo@1.10.0 mongo-decimal@0.1.1 mongo-dev-server@1.1.0 @@ -169,7 +169,7 @@ spacebars-compiler@1.1.3 srp@1.1.0 standard-minifier-css@1.6.0 standard-minifier-js@2.6.0 -staringatlights:fast-render@3.2.0 +staringatlights:fast-render@3.3.0 staringatlights:inject-data@2.3.0 tap:i18n@1.8.2 templates:tabs@2.3.0 @@ -182,7 +182,7 @@ tracker@1.2.0 twbs:bootstrap@3.3.6 ui@1.0.13 underscore@1.0.10 -url@1.3.0 +url@1.3.1 useraccounts:core@1.14.2 useraccounts:flow-routing@1.14.2 useraccounts:unstyled@1.14.2 -- cgit v1.2.3-1-g7c22 From 6e4407ed9cb3c95a99e0dbbb4383324dd57d6be1 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 19:11:46 +0300 Subject: Upgrade to Node 12.18.2. Thanks to Node developers and xet7 ! --- .devcontainer/Dockerfile | 2 +- .future-snap/broken-snapcraft.yaml | 2 +- .future-snap/snapcraft.yaml | 2 +- .travis.yml | 2 +- Dockerfile | 2 +- Dockerfile.arm64v8 | 4 ++-- rebuild-wekan.sh | 4 ++-- releases/release-sandstorm.sh | 2 +- snapcraft.yaml | 2 +- stacksmith/user-scripts/build.sh | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0488c226..7d7908b6 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive ENV \ DEBUG=false \ - NODE_VERSION=12.18.1 \ + NODE_VERSION=12.18.2 \ METEOR_RELEASE=1.10.2 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ diff --git a/.future-snap/broken-snapcraft.yaml b/.future-snap/broken-snapcraft.yaml index 1841dacd..b2290ba6 100644 --- a/.future-snap/broken-snapcraft.yaml +++ b/.future-snap/broken-snapcraft.yaml @@ -81,7 +81,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 12.18.1 + node-engine: 12.18.2 node-packages: - node-gyp - node-pre-gyp diff --git a/.future-snap/snapcraft.yaml b/.future-snap/snapcraft.yaml index 99fabb65..e2582058 100644 --- a/.future-snap/snapcraft.yaml +++ b/.future-snap/snapcraft.yaml @@ -83,7 +83,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 12.18.1 + node-engine: 12.18.2 node-packages: - node-gyp - node-pre-gyp diff --git a/.travis.yml b/.travis.yml index fb72b9c9..17e0634b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ sudo: required env: TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0 - TRAVIS_NODE_VERSION: 12.18.1 + TRAVIS_NODE_VERSION: 12.18.2 TRAVIS_NPM_VERSION: latest before_install: diff --git a/Dockerfile b/Dockerfile index 641219c5..03b85dd0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ARG DEBIAN_FRONTEND=noninteractive ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \ DEBUG=false \ - NODE_VERSION=v12.18.1 \ + NODE_VERSION=v12.18.2 \ METEOR_RELEASE=1.10.2 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 index 35da388e..b25f2bb4 100644 --- a/Dockerfile.arm64v8 +++ b/Dockerfile.arm64v8 @@ -4,7 +4,7 @@ FROM amd64/alpine:3.7 AS builder ENV QEMU_VERSION=v4.2.0-6 \ QEMU_ARCHITECTURE=aarch64 \ NODE_ARCHITECTURE=linux-arm64 \ - NODE_VERSION=v12.18.1 \ + NODE_VERSION=v12.18.2 \ WEKAN_VERSION=3.96 \ WEKAN_ARCHITECTURE=arm64 @@ -40,7 +40,7 @@ LABEL maintainer="wekan" # Set the environment variables (defaults where required) ENV QEMU_ARCHITECTURE=aarch64 \ NODE_ARCHITECTURE=linux-arm64 \ - NODE_VERSION=v12.18.1 \ + NODE_VERSION=v12.18.2 \ NODE_ENV=production \ NPM_VERSION=latest \ WITH_API=true \ diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index e8336a29..e07dfc0e 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -5,7 +5,7 @@ echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correct echo " You can still use any other locale as your main locale." #Below script installs newest node 8.x for Debian/Ubuntu/Mint. -#NODE_VERSION=12.18.1 +#NODE_VERSION=12.18.2 #X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" function pause(){ @@ -80,7 +80,7 @@ do curl -0 -L https://npmjs.org/install.sh | sudo sh sudo chown -R $(id -u):$(id -g) $HOME/.npm sudo npm -g install n - sudo n 12.18.1 + sudo n 12.18.2 #curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - #sudo apt-get install -y nodejs elif [[ "$OSTYPE" == "darwin"* ]]; then diff --git a/releases/release-sandstorm.sh b/releases/release-sandstorm.sh index 2e0f5c75..65a0e640 100755 --- a/releases/release-sandstorm.sh +++ b/releases/release-sandstorm.sh @@ -18,7 +18,7 @@ cd $REPODIR rm -rf $WEKANDIR git clone git@github.com:wekan/wekan.git cd $WEKANDIR -sudo n 12.18.1 +sudo n 12.18.2 sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp # Build Wekan ./releases/rebuild-release.sh diff --git a/snapcraft.yaml b/snapcraft.yaml index f1b0533a..816f97a2 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -81,7 +81,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 12.18.1 + node-engine: 12.18.2 node-packages: - node-gyp - node-pre-gyp diff --git a/stacksmith/user-scripts/build.sh b/stacksmith/user-scripts/build.sh index e0174110..4d57bb26 100755 --- a/stacksmith/user-scripts/build.sh +++ b/stacksmith/user-scripts/build.sh @@ -2,7 +2,7 @@ set -euxo pipefail BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA" -NODE_VERSION=v12.18.1 +NODE_VERSION=v12.18.2 #METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer USE_EDGE=false METEOR_EDGE=1.5-beta.17 -- cgit v1.2.3-1-g7c22 From 16a793e6725482ce3e9d2c8781147014f6a37073 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 19:14:47 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd59eb41..0055fe89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Upcoming Wekan release -This release fixes the following bugs: +This release adds the following updates: + +- [Upgrade to Node 12.18.2](https://github.com/wekan/wekan/commit/6e4407ed9cb3c95a99e0dbbb4383324dd57d6be1). + Thanks to Node developers and xet7. +- [Update dependencies](https://github.com/wekan/wekan/commit/05cd1247ab935f586d747743bb9cd79d23e0b1e6). + Thanks to dependency developers and xet7. + +and fixes the following bugs: - [All logged in users are now allowed to reorder boards by dragging at All Boards page and Public Boards page](https://github.com/wekan/wekan/commit/ba24c4e40c728d030504ed21ccf79247d0449e1b). Thanks to xet7. -- cgit v1.2.3-1-g7c22 From b7562a708571a4951cefd1b1758211fc0469ba25 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 10 Jul 2020 19:28:43 +0300 Subject: v4.18 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 4 ++-- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0055fe89..3b938a57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.18 2020-07-10 Wekan release This release adds the following updates: diff --git a/Stackerfile.yml b/Stackerfile.yml index 90359b27..41e6fa45 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.17.0" +appVersion: "v4.18.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index 5c99549a..8449f5fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.17.0", + "version": "v4.18.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 4dcab06a..ad4dba50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.17.0", + "version": "v4.18.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index 31398ea2..aa5c6972 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
                    • - Wekan REST API v4.17 + Wekan REST API v4.18
                    • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                      -

                      Wekan REST API v4.17

                      +

                      Wekan REST API v4.18

                      Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

                      diff --git a/public/api/wekan.yml b/public/api/wekan.yml index a0d16550..540af9ef 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.17 + version: v4.18 description: | The REST API allows you to control and extend Wekan with ease. diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index b926fb63..c4415391 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 = 417, + appVersion = 418, # Increment this for every release. - appMarketingVersion = (defaultText = "4.17.0~2020-06-18"), + appMarketingVersion = (defaultText = "4.18.0~2020-07-10"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 0911511d0c1c9fdf88e1d3fc06bfc7807848f90e Mon Sep 17 00:00:00 2001 From: Robert Lebedeu Date: Fri, 17 Jul 2020 16:24:27 +0200 Subject: Checklist Item PUT API: boolean cast on isFinished --- models/checklistItems.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/models/checklistItems.js b/models/checklistItems.js index 7f3ab095..afcd9081 100644 --- a/models/checklistItems.js +++ b/models/checklistItems.js @@ -302,10 +302,18 @@ if (Meteor.isServer) { const paramItemId = req.params.itemId; + function isTrue(data) { + try { + return data.toLowerCase() === 'true'; + } catch (error) { + return data; + } + } + if (req.body.hasOwnProperty('isFinished')) { ChecklistItems.direct.update( { _id: paramItemId }, - { $set: { isFinished: req.body.isFinished } }, + { $set: { isFinished: isTrue(req.body.isFinished) } }, ); } if (req.body.hasOwnProperty('title')) { -- cgit v1.2.3-1-g7c22 From 23ee93ca3d4ea161a93627a8e28e1ce93eea1bab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2020 04:28:59 +0000 Subject: Bump lodash from 4.17.15 to 4.17.19 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8449f5fb..84733e55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3066,9 +3066,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.merge": { "version": "4.6.2", -- cgit v1.2.3-1-g7c22 From 87cb4598f745a362aaac06b8b457198c40aaf61e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 18 Jul 2020 09:51:27 +0300 Subject: Update dependencies. Thanks to developers of dependencies and xet7 ! --- .meteor/versions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.meteor/versions b/.meteor/versions index 990f8710..1d8b71bc 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -101,7 +101,7 @@ meteorhacks:collection-utils@1.2.0 meteorhacks:picker@1.0.3 meteorhacks:subs-manager@1.6.4 meteorspark:util@0.2.0 -minifier-css@1.5.1 +minifier-css@1.5.2 minifier-js@2.6.0 minifiers@1.1.8-faster-rebuild.0 minimongo@1.6.0 @@ -162,7 +162,7 @@ simple:json-routes@2.1.0 simple:rest-accounts-password@1.1.2 simple:rest-bearer-token-parser@1.0.1 simple:rest-json-error-handler@1.0.1 -socket-stream-client@0.3.0 +socket-stream-client@0.3.1 softwarerero:accounts-t9n@1.3.11 spacebars@1.0.15 spacebars-compiler@1.1.3 -- cgit v1.2.3-1-g7c22 From f57ed2990f5c6e1af10d270b24c7092805711afe Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 18 Jul 2020 09:54:37 +0300 Subject: Update dependencies. --- packages/markdown/marked/package-lock.json | 7 +++---- packages/markdown/marked/package.json | 3 +++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/markdown/marked/package-lock.json b/packages/markdown/marked/package-lock.json index ca9b5848..adeef6be 100644 --- a/packages/markdown/marked/package-lock.json +++ b/packages/markdown/marked/package-lock.json @@ -2675,10 +2675,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", - "dev": true + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "loose-envify": { "version": "1.4.0", diff --git a/packages/markdown/marked/package.json b/packages/markdown/marked/package.json index a2fcfe60..db7d2f99 100644 --- a/packages/markdown/marked/package.json +++ b/packages/markdown/marked/package.json @@ -74,5 +74,8 @@ }, "engines": { "node": ">= 8.16.2" + }, + "dependencies": { + "lodash": "^4.17.19" } } -- cgit v1.2.3-1-g7c22 From 1a49d25c9082bd6bb32b145e2ab289f3f1c401fd Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 18 Jul 2020 10:01:51 +0300 Subject: Update translations. --- i18n/de.i18n.json | 6 +- i18n/id.i18n.json | 354 +++++++++++++++++++++++++++--------------------------- i18n/tr.i18n.json | 48 ++++---- 3 files changed, 204 insertions(+), 204 deletions(-) diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index e26b0ca2..2345252d 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -807,7 +807,7 @@ "last-activity": "Letzte Aktivität", "voting": "Abstimunng", "archived": "Archiviert", - "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", - "hide-checked-items": "Hide checked items" + "delete-linked-card-before-this-card": "Sie können diese Karte erst löschen, wenn Sie alle verbundenen Karten gelöscht haben.", + "delete-linked-cards-before-this-list": "Sie können diese Liste erst löschen, wenn Sie alle Karten gelöscht haben, die auf Karten in dieser Liste verweisen.", + "hide-checked-items": "Erledigte ausblenden" } diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 02341ee7..f970ce92 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -1,7 +1,7 @@ { "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-activity-notify": "Pemeberitahuan Aktifitas", + "act-addAttachment": "ditambahkan lampiran __attachment__ di kartu __card__ pada daftar __list__ pada swimline __swimline__ pada papan __board__", "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", @@ -25,7 +25,7 @@ "act-createCustomField": "created custom field __customField__ at board __board__", "act-deleteCustomField": "deleted custom field __customField__ at board __board__", "act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-createList": "added list __list__ to board __board__", + "act-createList": "ditambahkan daftar __list__ pada papan __board__", "act-addBoardMember": "added member __member__ to board __board__", "act-archivedBoard": "Board __board__ moved to Archive", "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive", @@ -98,7 +98,7 @@ "and-n-other-card_plural": "Dan__menghitung__kartu lain", "apply": "Terapkan", "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.", - "archive": "Move to Archive", + "archive": "Pindahlan ke Arsip", "archive-all": "Move All to Archive", "archive-board": "Move Board to Archive", "archive-card": "Move Card to Archive", @@ -108,11 +108,11 @@ "archiveBoardPopup-title": "Move Board to Archive?", "archived-items": "Arsip", "archived-boards": "Boards in Archive", - "restore-board": "Restore Board", - "no-archived-boards": "No Boards in Archive.", + "restore-board": "Pulihkan Papan", + "no-archived-boards": "Tidak ada Papan pada Arsip", "archives": "Arsip", - "template": "Template", - "templates": "Templates", + "template": "Klise", + "templates": "Klise", "assign-member": "Tugaskan anggota", "attached": "terlampir", "attachment": "Lampiran", @@ -131,22 +131,22 @@ "boardChangeTitlePopup-title": "Ganti Nama Panel", "boardChangeVisibilityPopup-title": "Ubah Penampakan", "boardChangeWatchPopup-title": "Ubah Pengamatan", - "boardMenuPopup-title": "Board Settings", - "boardChangeViewPopup-title": "Board View", + "boardMenuPopup-title": "Pengaturan Papan", + "boardChangeViewPopup-title": "Tampilan Papan", "boards": "Panel", - "board-view": "Board View", - "board-view-cal": "Calendar", + "board-view": "Tampilan Papan", + "board-view-cal": "Kalender", "board-view-swimlanes": "Swimlanes", - "board-view-collapse": "Collapse", + "board-view-collapse": "Ciutkan", "board-view-lists": "Daftar", "bucket-example": "Contohnya seperti “Bucket List” ", "cancel": "Batal", - "card-archived": "This card is moved to Archive.", - "board-archived": "This board is moved to Archive.", + "card-archived": "Kartu ini telah dipindahkan ke Arsip", + "board-archived": "Kartu ini telah dipindahkan ke Arsip", "card-comments-title": "Kartu ini punya %s komentar", "card-delete-notice": "Menghapus sama dengan permanen. Anda akan kehilangan semua aksi yang terhubung ke kartu ini", "card-delete-pop": "Semua aksi akan dihapus dari aktivitas dan anda tidak bisa lagi buka kartu ini", - "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.", + "card-delete-suggest-archive": "Kamu bisa memindahkan Kartu ke Arsip untuk menghapusnya dari Papan dan mempertahankan Aktifitas", "card-due": "Jatuh Tempo", "card-due-on": "Jatuh Tempo pada", "card-spent": "Spent Time", @@ -425,8 +425,8 @@ "muted-info": "Anda tidak akan pernah dinotifikasi semua perubahan di panel ini", "my-boards": "Panel saya", "name": "Nama", - "no-archived-cards": "No cards in Archive.", - "no-archived-lists": "No lists in Archive.", + "no-archived-cards": "Tidak ada kartu di arsip.", + "no-archived-lists": "Tidak ada daftar di arsip.", "no-archived-swimlanes": "No swimlanes in Archive.", "no-results": "Tidak ada hasil", "normal": "Normal", @@ -452,8 +452,8 @@ "quick-access-description": "Beri bintang panel untuk menambah shortcut di papan ini", "remove-cover": "Hapus Sampul", "remove-from-board": "Hapus dari panel", - "remove-label": "Remove Label", - "listDeletePopup-title": "Delete List ?", + "remove-label": "Hapus Label", + "listDeletePopup-title": "Hapus Daftar ?", "remove-member": "Hapus Anggota", "remove-member-from-card": "Hapus dari Kartu", "remove-member-pop": "Hapus__nama__(__username__) dari __boardTitle__? Partisipan akan dihapus dari semua kartu di panel ini. Mereka akan diberi tahu", @@ -463,21 +463,21 @@ "restore": "Pulihkan", "save": "Simpan", "search": "Cari", - "rules": "Rules", - "search-cards": "Search from card/list titles, descriptions and custom fields on this board", - "search-example": "Text to search for?", - "select-color": "Select Color", - "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", - "setWipLimitPopup-title": "Set WIP Limit", + "rules": "Peraturan", + "search-cards": "Cari dari judul kartu/daftar, deskripsi dan bidang khusus di papan ini", + "search-example": "Teks untuk dicari ?", + "select-color": "Pilih Warna", + "set-wip-limit-value": "Tetapkan batas untuk jumlah tugas maksimum dalam daftar ini", + "setWipLimitPopup-title": "Tetapkan Batas WIP ", "shortcut-assign-self": "Masukkan diri anda sendiri ke kartu ini", - "shortcut-autocomplete-emoji": "Autocomplete emoji", + "shortcut-autocomplete-emoji": "Pelengkap Otomatis emoji", "shortcut-autocomplete-members": "Autocomplete partisipan", "shortcut-clear-filters": "Bersihkan semua saringan", "shortcut-close-dialog": "Tutup Dialog", "shortcut-filter-my-cards": "Filter kartu saya", "shortcut-show-shortcuts": "Angkat naik shortcut daftar ini", - "shortcut-toggle-filterbar": "Toggle Filter Sidebar", - "shortcut-toggle-sidebar": "Toggle Board Sidebar", + "shortcut-toggle-filterbar": "Toggle Filter Bilah Samping", + "shortcut-toggle-sidebar": "Toggle Papan Bilah Samping", "show-cards-minimum-count": "Tampilkan jumlah kartu jika daftar punya lebih dari ", "sidebar-open": "Buka Sidebar", "sidebar-close": "Tutup Sidebar", @@ -489,16 +489,16 @@ "team": "Tim", "this-board": "Panel ini", "this-card": "Kartu ini", - "spent-time-hours": "Spent time (hours)", - "overtime-hours": "Overtime (hours)", - "overtime": "Overtime", - "has-overtime-cards": "Has overtime cards", + "spent-time-hours": "Waktu yang dihabiskan (jam)", + "overtime-hours": "Lembur (jam)", + "overtime": "Lembur", + "has-overtime-cards": "Punya kartu lembur", "has-spenttime-cards": "Has spent time cards", "time": "Waktu", "title": "Judul", "tracking": "Pelacakan", "tracking-info": "Anda akan dinotifikasi semua perubahan di kartu tersebut diaman anda terlibat sebagai creator atau partisipan", - "type": "Type", + "type": "tipe", "unassign-member": "Tidak sertakan partisipan", "unsaved-description": "Anda memiliki deskripsi yang belum disimpan.", "unwatch": "Tidak mengamati", @@ -515,11 +515,11 @@ "welcome-swimlane": "Milestone 1", "welcome-list1": "Tingkat dasar", "welcome-list2": "Tingkat lanjut", - "card-templates-swimlane": "Card Templates", - "list-templates-swimlane": "List Templates", - "board-templates-swimlane": "Board Templates", + "card-templates-swimlane": "Klise Kartu", + "list-templates-swimlane": "Klise Daftar", + "board-templates-swimlane": "Klise Papan", "what-to-do": "Apa yang mau Anda lakukan?", - "wipLimitErrorPopup-title": "Invalid WIP Limit", + "wipLimitErrorPopup-title": "Batas WIP tidak valid", "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", "admin-panel": "Panel Admin", @@ -544,11 +544,11 @@ "invitation-code": "Kode Undangan", "email-invite-register-subject": "__inviter__ mengirim undangan ke Anda", "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", - "email-smtp-test-subject": "SMTP Test Email", + "email-smtp-test-subject": "SMTP Tes Surel", "email-smtp-test-text": "You have successfully sent an email", "error-invitation-code-not-exist": "Kode undangan tidak ada", "error-notAuthorized": "You are not authorized to view this page.", - "webhook-title": "Webhook Name", + "webhook-title": "Nama Webhook", "webhook-token": "Token (Optional for Authentication)", "outgoing-webhooks": "Outgoing Webhooks", "bidirectional-webhooks": "Two-Way Webhooks", @@ -558,10 +558,10 @@ "global-webhook": "Global Webhooks", "new-outgoing-webhook": "New Outgoing Webhook", "no-name": "(Unknown)", - "Node_version": "Node version", - "Meteor_version": "Meteor version", - "MongoDB_version": "MongoDB version", - "MongoDB_storage_engine": "MongoDB storage engine", + "Node_version": "Versi Node", + "Meteor_version": "Versi Meteor", + "MongoDB_version": "Versi MongoDB", + "MongoDB_storage_engine": "Mesin penyimpanan MongoDb", "MongoDB_Oplog_enabled": "MongoDB Oplog enabled", "OS_Arch": "OS Arch", "OS_Cpus": "OS CPU Count", @@ -572,44 +572,44 @@ "OS_Totalmem": "OS Total Memory", "OS_Type": "OS Type", "OS_Uptime": "OS Uptime", - "days": "days", - "hours": "hours", - "minutes": "minutes", - "seconds": "seconds", + "days": "hari", + "hours": "m", + "minutes": "menit", + "seconds": "detik", "show-field-on-card": "Show this field on card", "automatically-field-on-card": "Auto create field to all cards", "showLabel-field-on-card": "Show field label on minicard", - "yes": "Yes", - "no": "No", - "accounts": "Accounts", + "yes": "Ya", + "no": "Tidak", + "accounts": "Akun", "accounts-allowEmailChange": "Allow Email Change", "accounts-allowUserNameChange": "Allow Username Change", - "createdAt": "Created at", - "verified": "Verified", - "active": "Active", - "card-received": "Received", - "card-received-on": "Received on", - "card-end": "End", - "card-end-on": "Ends on", - "editCardReceivedDatePopup-title": "Change received date", - "editCardEndDatePopup-title": "Change end date", - "setCardColorPopup-title": "Set color", - "setCardActionsColorPopup-title": "Choose a color", - "setSwimlaneColorPopup-title": "Choose a color", - "setListColorPopup-title": "Choose a color", - "assigned-by": "Assigned By", - "requested-by": "Requested By", + "createdAt": "Dibuat pada", + "verified": "Terverifikasi", + "active": "Aktif", + "card-received": "Diterima", + "card-received-on": "Diterima pada", + "card-end": "Berakhir", + "card-end-on": "Berakhir pada", + "editCardReceivedDatePopup-title": "Ubah tanggal diterima", + "editCardEndDatePopup-title": "Ubah tanggal berakhir", + "setCardColorPopup-title": "Tetapkan warna", + "setCardActionsColorPopup-title": "Pilih warna", + "setSwimlaneColorPopup-title": "Pilih warna", + "setListColorPopup-title": "Pilih warna", + "assigned-by": "Ditandatangani Oleh", + "requested-by": "Diminta Oleh", "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.", "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.", - "boardDeletePopup-title": "Delete Board?", - "delete-board": "Delete Board", + "boardDeletePopup-title": "Hapus Papan?", + "delete-board": "Hapus Papan", "default-subtasks-board": "Subtasks for __board__ board", - "default": "Default", - "queue": "Queue", + "default": "Standar", + "queue": "Antrian", "subtask-settings": "Subtasks Settings", - "card-settings": "Card Settings", + "card-settings": "Pengaturan Kartu", "boardSubtaskSettingsPopup-title": "Board Subtasks Settings", - "boardCardSettingsPopup-title": "Card Settings", + "boardCardSettingsPopup-title": "Pengaturan Kartu", "deposit-subtasks-board": "Deposit subtasks to this board:", "deposit-subtasks-list": "Landing list for subtasks deposited here:", "show-parent-in-minicard": "Show parent in minicard:", @@ -629,34 +629,34 @@ "activity-delete-attach-card": "deleted an attachment", "activity-set-customfield": "set custom field '%s' to '%s' in %s", "activity-unset-customfield": "unset custom field '%s' in %s", - "r-rule": "Rule", - "r-add-trigger": "Add trigger", - "r-add-action": "Add action", - "r-board-rules": "Board rules", - "r-add-rule": "Add rule", - "r-view-rule": "View rule", + "r-rule": "Aturan", + "r-add-trigger": "Tambahkan pelatuk", + "r-add-action": "Tambahkan aksi", + "r-board-rules": "Aturan papan", + "r-add-rule": "Tambahkan aturan", + "r-view-rule": "Lihat aturan", "r-delete-rule": "Delete rule", "r-new-rule-name": "New rule title", "r-no-rules": "No rules", - "r-when-a-card": "When a card", - "r-is": "is", - "r-is-moved": "is moved", - "r-added-to": "Added to", - "r-removed-from": "Removed from", - "r-the-board": "the board", - "r-list": "list", - "set-filter": "Set Filter", - "r-moved-to": "Moved to", - "r-moved-from": "Moved from", - "r-archived": "Moved to Archive", - "r-unarchived": "Restored from Archive", - "r-a-card": "a card", - "r-when-a-label-is": "When a label is", - "r-when-the-label": "When the label", - "r-list-name": "list name", - "r-when-a-member": "When a member is", - "r-when-the-member": "When the member", - "r-name": "name", + "r-when-a-card": "Ketika kartu", + "r-is": "adalah", + "r-is-moved": "dipindahkan", + "r-added-to": "Ditambahkan ke", + "r-removed-from": "Dihapus dari", + "r-the-board": "papan", + "r-list": "daftar", + "set-filter": "Atur Saringan", + "r-moved-to": "Dipindahkan ke", + "r-moved-from": "Dipindahkan dari", + "r-archived": "Dipindahkan ke Arsip", + "r-unarchived": "Dipulihkan dari Arsip", + "r-a-card": "Kartu", + "r-when-a-label-is": "Ketika label adalah", + "r-when-the-label": "Ketika label", + "r-list-name": "nama daftar", + "r-when-a-member": "Ketika anggota adalah", + "r-when-the-member": "Ketika anggota", + "r-name": "nama", "r-when-a-attach": "When an attachment", "r-when-a-checklist": "When a checklist is", "r-when-the-checklist": "When the checklist", @@ -669,70 +669,70 @@ "r-move-card-to": "Move card to", "r-top-of": "Top of", "r-bottom-of": "Bottom of", - "r-its-list": "its list", - "r-archive": "Move to Archive", - "r-unarchive": "Restore from Archive", - "r-card": "card", + "r-its-list": "daftar ini", + "r-archive": "Pindahlan ke Arsip", + "r-unarchive": "Pulihkan dari Arsip", + "r-card": "Kartu", "r-add": "Tambah", - "r-remove": "Remove", + "r-remove": "hapus", "r-label": "label", - "r-member": "member", - "r-remove-all": "Remove all members from the card", - "r-set-color": "Set color to", + "r-member": "anggota", + "r-remove-all": "Hapus semua anggota dari kartu", + "r-set-color": "Tetapkan warna ke", "r-checklist": "checklist", "r-check-all": "Check all", "r-uncheck-all": "Uncheck all", "r-items-check": "items of checklist", "r-check": "Check", "r-uncheck": "Uncheck", - "r-item": "item", + "r-item": "Item", "r-of-checklist": "of checklist", "r-send-email": "Send an email", - "r-to": "to", - "r-of": "of", - "r-subject": "subject", + "r-to": "kepada", + "r-of": "dari", + "r-subject": "Subyek", "r-rule-details": "Rule details", "r-d-move-to-top-gen": "Move card to top of its list", "r-d-move-to-top-spec": "Move card to top of list", "r-d-move-to-bottom-gen": "Move card to bottom of its list", "r-d-move-to-bottom-spec": "Move card to bottom of list", - "r-d-send-email": "Send email", - "r-d-send-email-to": "to", - "r-d-send-email-subject": "subject", - "r-d-send-email-message": "message", - "r-d-archive": "Move card to Archive", - "r-d-unarchive": "Restore card from Archive", + "r-d-send-email": "Kirim surel", + "r-d-send-email-to": "kepada", + "r-d-send-email-subject": "Subyek", + "r-d-send-email-message": "pesan", + "r-d-archive": "Pindahlan kartu ke Arsip", + "r-d-unarchive": "Pulihkan kartu dari Arsip", "r-d-add-label": "Tambahkan label", - "r-d-remove-label": "Remove label", - "r-create-card": "Create new card", - "r-in-list": "in list", + "r-d-remove-label": "Hapus label", + "r-create-card": "Buat kartu baru", + "r-in-list": "pada daftar", "r-in-swimlane": "in swimlane", - "r-d-add-member": "Add member", - "r-d-remove-member": "Remove member", - "r-d-remove-all-member": "Remove all member", + "r-d-add-member": "Tambahkan anggota", + "r-d-remove-member": "Hapus anggota", + "r-d-remove-all-member": "Hapus semua anggota", "r-d-check-all": "Check all items of a list", "r-d-uncheck-all": "Uncheck all items of a list", "r-d-check-one": "Check item", "r-d-uncheck-one": "Uncheck item", "r-d-check-of-list": "of checklist", - "r-d-add-checklist": "Add checklist", - "r-d-remove-checklist": "Remove checklist", - "r-by": "by", - "r-add-checklist": "Add checklist", - "r-with-items": "with items", - "r-items-list": "item1,item2,item3", + "r-d-add-checklist": "Tambahkan daftar periksa", + "r-d-remove-checklist": "Hapus daftar periksa", + "r-by": "oleh", + "r-add-checklist": "Tambahkan daftar periksa", + "r-with-items": "dengan item", + "r-items-list": "item 1, item2, item 3", "r-add-swimlane": "Add swimlane", "r-swimlane-name": "swimlane name", "r-board-note": "Note: leave a field empty to match every possible value.", "r-checklist-note": "Note: checklist's items have to be written as comma separated values.", "r-when-a-card-is-moved": "When a card is moved to another list", - "r-set": "Set", - "r-update": "Update", - "r-datefield": "date field", - "r-df-start-at": "start", - "r-df-due-at": "due", - "r-df-end-at": "end", - "r-df-received-at": "received", + "r-set": "Tetapkan", + "r-update": "Ubah", + "r-datefield": "bidang tanggal", + "r-df-start-at": "mulai", + "r-df-due-at": "sampai", + "r-df-end-at": "berakhir", + "r-df-received-at": "diterima", "r-to-current-datetime": "to current date/time", "r-remove-value-from": "Remove value from", "ldap": "LDAP", @@ -741,22 +741,22 @@ "authentication-method": "Metode Autentikasi", "authentication-type": "Tipe Autentikasi", "custom-product-name": "Custom Product Name", - "layout": "Layout", + "layout": "Tata letak", "hide-logo": "Sembunyikan Logo", - "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end", - "error-undefined": "Something went wrong", - "error-ldap-login": "An error occurred while trying to login", + "add-custom-html-after-body-start": "Tambahkan HTML khusus setelah mulai", + "add-custom-html-before-body-end": "Tambahkan HTML khusus sebelum berakhir", + "error-undefined": "Ada yang salah", + "error-ldap-login": "Terjadi kesalahan saat mencoba masuk", "display-authentication-method": "Display Authentication Method", "default-authentication-method": "Default Authentication Method", - "duplicate-board": "Duplicate Board", - "people-number": "The number of people is:", + "duplicate-board": "Duplikat Papan", + "people-number": "Jumlah orang:", "swimlaneDeletePopup-title": "Delete Swimlane ?", "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.", - "restore-all": "Restore all", - "delete-all": "Delete all", - "loading": "Loading, please wait.", - "previous_as": "last time was", + "restore-all": "Pulihkan semua", + "delete-all": "Hapus semua", + "loading": "Sedang memuat, harap tunggu.", + "previous_as": "terakhir kali adalah", "act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__", "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)", "act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)", @@ -776,38 +776,38 @@ "act-atUserComment": "You were mentioned in [__board__] __list__/__card__", "delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.", "accounts-allowUserDelete": "Allow users to self delete their account", - "hide-minicard-label-text": "Hide minicard label text", - "show-desktop-drag-handles": "Show desktop drag handles", - "assignee": "Assignee", - "cardAssigneesPopup-title": "Assignee", - "addmore-detail": "Add a more detailed description", - "show-on-card": "Show on Card", - "new": "New", - "editUserPopup-title": "Edit User", - "newUserPopup-title": "New User", - "notifications": "Notifications", - "view-all": "View All", - "filter-by-unread": "Filter by Unread", - "mark-all-as-read": "Mark all as read", - "remove-all-read": "Remove all read", - "allow-rename": "Allow Rename", - "allowRenamePopup-title": "Allow Rename", - "start-day-of-week": "Set day of the week start", - "monday": "Monday", - "tuesday": "Tuesday", - "wednesday": "Wednesday", - "thursday": "Thursday", - "friday": "Friday", - "saturday": "Saturday", - "sunday": "Sunday", + "hide-minicard-label-text": "Sembunyikan teks label kartu mini", + "show-desktop-drag-handles": "Tampilkan gagang seret desktop", + "assignee": "Penerima tugas", + "cardAssigneesPopup-title": "Penerima tugas", + "addmore-detail": "Tambahkan deskripsi yang lebih rinci", + "show-on-card": "Tampilkan pada Kartu", + "new": "Baru", + "editUserPopup-title": "Ubah Pengguna", + "newUserPopup-title": "Pengguna Baru", + "notifications": "Pemberitahuan", + "view-all": "Lihat Semua", + "filter-by-unread": "Saring yang Belum Dibaca", + "mark-all-as-read": "Tandai semua telah dibaca", + "remove-all-read": "Hapus semua yang telah dibaca", + "allow-rename": "Ijinkan Ganti Nama", + "allowRenamePopup-title": "Ijinkan Ganti Nama", + "start-day-of-week": "Tetapkan hari dimulai dalam minggu", + "monday": "Senin", + "tuesday": "Selasa", + "wednesday": "Rabu", + "thursday": "Kamis", + "friday": "Jum'at", + "saturday": "Sabtu", + "sunday": "Minggu", "status": "Status", "swimlane": "Swimlane", - "owner": "Owner", - "last-modified-at": "Last modified at", - "last-activity": "Last activity", - "voting": "Voting", - "archived": "Archived", - "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", - "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", - "hide-checked-items": "Hide checked items" + "owner": "Pemilik", + "last-modified-at": "Terakhir diubah pada", + "last-activity": "Aktifitas terakhir", + "voting": "Pemungutan Suara", + "archived": "Diarsipkan", + "delete-linked-card-before-this-card": "Kamu tidak dapat menghapus kartu ini sebelum menghapus kartu tertaut yang telah", + "delete-linked-cards-before-this-list": "Kamu tidak dapat menghapus daftar ini sebelum menghapus kartu tertaut yang mengarah ke kartu dalam daftar ini", + "hide-checked-items": "Sembunyikan item yang dicentang" } diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 10dcd6ea..962ecce7 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -256,8 +256,8 @@ "current": "mevcut", "custom-field-delete-pop": "Bunun geri dönüşü yoktur. Bu özel alan tüm kartlardan kaldırılıp tarihçesi yokedilecektir.", "custom-field-checkbox": "İşaret kutusu", - "custom-field-currency": "Currency", - "custom-field-currency-option": "Currency Code", + "custom-field-currency": "Para birimi", + "custom-field-currency-option": "Para birimi kodu", "custom-field-date": "Tarih", "custom-field-dropdown": "Açılır liste", "custom-field-dropdown-none": "(hiçbiri)", @@ -319,12 +319,12 @@ "error-username-taken": "Kullanıcı adı zaten alınmış", "error-email-taken": "Bu e-posta adresi daha önceden alınmış", "export-board": "Panoyu dışarı aktar", - "export-board-json": "Export board to JSON", - "export-board-csv": "Export board to CSV", - "export-board-tsv": "Export board to TSV", - "export-board-html": "Export board to HTML", + "export-board-json": "Panoyu JSON olarak dışarı aktar", + "export-board-csv": "Panoyu CSV olarak dışarı aktar", + "export-board-tsv": "Panoyu TSV olarak dışarı aktar", + "export-board-html": "Panoyu HTML olarak dışarı aktar", "exportBoardPopup-title": "Panoyu dışarı aktar", - "sort": "Sort", + "sort": "Sırala", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", "list-label-modifiedAt": "Son Erişim Zamanı...", @@ -341,8 +341,8 @@ "filter-no-member": "Üye yok", "filter-no-assignee": "No assignee", "filter-no-custom-fields": "Hiç özel alan yok", - "filter-show-archive": "Show archived lists", - "filter-hide-empty": "Hide empty lists", + "filter-show-archive": "Arşivlenmiş listeleri göster", + "filter-hide-empty": "Boş listeleri gizle", "filter-on": "Filtre aktif", "filter-on-desc": "Bu panodaki kartları filtreliyorsunuz. Fitreyi düzenlemek için tıklayın.", "filter-to-selection": "Seçime göre filtreleme yap", @@ -359,10 +359,10 @@ "import-board-c": "Panoyu içe aktar", "import-board-title-trello": "Trello'dan panoyu içeri aktar", "import-board-title-wekan": "Import board from previous export", - "import-board-title-csv": "Import board from CSV/TSV", + "import-board-title-csv": "CSV/TSV formatındaki panoyu içeri aktar", "from-trello": "Trello'dan", "from-wekan": "From previous export", - "from-csv": "From CSV/TSV", + "from-csv": "CSV/TSV'den", "import-board-instruction-trello": "Trello panonuzda 'Menü'ye gidip 'Daha fazlası'na tıklayın, ardından 'Yazdır ve Çıktı Al'ı seçip 'JSON biçiminde çıktı al' diyerek çıkan metni buraya kopyalayın.", "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", @@ -399,10 +399,10 @@ "set-color-list": "Rengi Ayarla", "listActionPopup-title": "Liste İşlemleri", "swimlaneActionPopup-title": "Kulvar İşlemleri", - "swimlaneAddPopup-title": "Add a Swimlane below", + "swimlaneAddPopup-title": "Aşağı kulvar ekle", "listImportCardPopup-title": "Bir Trello kartını içeri aktar", "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", - "listMorePopup-title": "Daha", + "listMorePopup-title": "Daha fazla", "link-list": "Listeye doğrudan bağlantı", "list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.", "list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.", @@ -437,7 +437,7 @@ "optional": "isteğe bağlı", "or": "veya", "page-maybe-private": "Bu sayfa gizli olabilir. Oturum açarak görmeyi deneyin.", - "page-not-found": "Sayda bulunamadı.", + "page-not-found": "Sayfa bulunamadı.", "password": "Parola", "paste-or-dragdrop": "Dosya eklemek için yapıştırabilir, veya (eğer resimse) sürükle bırak yapabilirsiniz", "participating": "Katılımcılar", @@ -448,8 +448,8 @@ "private-desc": "Bu pano gizli. Sadece panoya ekli kişiler görüntüleyebilir ve düzenleyebilir.", "profile": "Kullanıcı Sayfası", "public": "Genel", - "public-desc": "Bu pano genel. Bağlantı adresi ile herhangi bir kimseye görünür ve Google gibi arama motorlarında gösterilecektir. Panoyu, sadece eklenen kişiler düzenleyebilir.", - "quick-access-description": "Bu bara kısayol olarak bir pano eklemek için panoyu yıldızlamalısınız", + "public-desc": "Bu pano genel bir panodur. Bağlantıya sahip olan herkes panoyu görüntüleyebilir, ayrıca panonuz Google gibi arama motorlarında görünür. Panoyu, sadece panoya eklenen kişiler düzenleyebilir.", + "quick-access-description": "Yıldızladığınız panolar burada gözükür", "remove-cover": "Kapak Resmini Kaldır", "remove-from-board": "Panodan Kaldır", "remove-label": "Etiketi Kaldır", @@ -515,9 +515,9 @@ "welcome-swimlane": "Kilometre taşı", "welcome-list1": "Temel", "welcome-list2": "Gelişmiş", - "card-templates-swimlane": "Card Templates", - "list-templates-swimlane": "List Templates", - "board-templates-swimlane": "Board Templates", + "card-templates-swimlane": "Kart şablonları", + "list-templates-swimlane": "Liste şablonları", + "board-templates-swimlane": "Pano şablonları", "what-to-do": "Ne yapmak istiyorsunuz?", "wipLimitErrorPopup-title": "Geçersiz Devam Eden İş Sınırı", "wipLimitErrorPopup-dialog-pt1": "Bu listedeki iş sayısı belirlediğiniz sınırdan daha fazla.", @@ -559,8 +559,8 @@ "new-outgoing-webhook": "Yeni Dışarı Giden Web Bağlantısı", "no-name": "(Bilinmeyen)", "Node_version": "Node sürümü", - "Meteor_version": "Meteor version", - "MongoDB_version": "MongoDB version", + "Meteor_version": "Meteor sürümü", + "MongoDB_version": "MongoDB sürümü", "MongoDB_storage_engine": "MongoDB storage engine", "MongoDB_Oplog_enabled": "MongoDB Oplog enabled", "OS_Arch": "İşletim Sistemi Mimarisi", @@ -603,13 +603,13 @@ "delete-board-confirm-popup": "Tüm listeler, kartlar, etiketler ve etkinlikler silinecek ve pano içeriğini kurtaramayacaksınız. Geri dönüş yok.", "boardDeletePopup-title": "Panoyu Sil?", "delete-board": "Panoyu Sil", - "default-subtasks-board": "Subtasks for __board__ board", + "default-subtasks-board": "__board__ panosu için alt görevler", "default": "Varsayılan", "queue": "Sıra", "subtask-settings": "Alt Görev ayarları", - "card-settings": "Card Settings", + "card-settings": "Kart ayarları", "boardSubtaskSettingsPopup-title": "Pano alt görev ayarları", - "boardCardSettingsPopup-title": "Card Settings", + "boardCardSettingsPopup-title": "Kart ayarları", "deposit-subtasks-board": "Deposit subtasks to this board:", "deposit-subtasks-list": "Alt görevlerin açılacağı liste:", "show-parent-in-minicard": "Mini kart içinde üst kartı göster", -- cgit v1.2.3-1-g7c22 From b9a4b0b51d3692fcbb715b1afc875f21cd204ae5 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 18 Jul 2020 10:08:59 +0300 Subject: Add support for EdgeHTML browser (Microsoft Legacy Edge, not based on Chromium) by removing incompatible csv-stringify package. CSV export will be fixed later. Thanks to xet7 ! Closes #3125 --- models/exporter.js | 54 ++++++++++++++++++++++++++++++------------------------ package-lock.json | 5 ----- package.json | 1 - 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/models/exporter.js b/models/exporter.js index b6188ece..3b3589f6 100644 --- a/models/exporter.js +++ b/models/exporter.js @@ -1,7 +1,8 @@ -const stringify = require('csv-stringify'); +// const stringify = require('csv-stringify'); // exporter maybe is broken since Gridfs introduced, add fs and path export class Exporter { + /* constructor(boardId) { this._boardId = boardId; } @@ -240,29 +241,29 @@ export class Exporter { } i++; }); - /* TODO: Try to get translations working. - These currently only bring English translations. - TAPi18n.__('title'), - TAPi18n.__('description'), - TAPi18n.__('status'), - TAPi18n.__('swimlane'), - TAPi18n.__('owner'), - TAPi18n.__('requested-by'), - TAPi18n.__('assigned-by'), - TAPi18n.__('members'), - TAPi18n.__('assignee'), - TAPi18n.__('labels'), - TAPi18n.__('card-start'), - TAPi18n.__('card-due'), - TAPi18n.__('card-end'), - TAPi18n.__('overtime-hours'), - TAPi18n.__('spent-time-hours'), - TAPi18n.__('createdAt'), - TAPi18n.__('last-modified-at'), - TAPi18n.__('last-activity'), - TAPi18n.__('voting'), - TAPi18n.__('archived'), - */ + + // TODO: Try to get translations working. + // These currently only bring English translations. + // TAPi18n.__('title'), + // TAPi18n.__('description'), + // TAPi18n.__('status'), + // TAPi18n.__('swimlane'), + // TAPi18n.__('owner'), + // TAPi18n.__('requested-by'), + // TAPi18n.__('assigned-by'), + // TAPi18n.__('members'), + // TAPi18n.__('assignee'), + // TAPi18n.__('labels'), + // TAPi18n.__('card-start'), + // TAPi18n.__('card-due'), + // TAPi18n.__('card-end'), + // TAPi18n.__('overtime-hours'), + // TAPi18n.__('spent-time-hours'), + // TAPi18n.__('createdAt'), + // TAPi18n.__('last-modified-at'), + // TAPi18n.__('last-activity'), + // TAPi18n.__('voting'), + // TAPi18n.__('archived'), const stringifier = stringify({ header: true, @@ -395,4 +396,9 @@ export class Exporter { const board = Boards.findOne(this._boardId); return board && board.isVisibleBy(user); } +*/ + + canExport(user) { + return false; + } } diff --git a/package-lock.json b/package-lock.json index 84733e55..5838eba6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1378,11 +1378,6 @@ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" }, - "csv-stringify": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.0.tgz", - "integrity": "sha512-G05575DSO/9vFzQxZN+Srh30cNyHk0SM0ePyiTChMD5WVt7GMTVPBQf4rtgMF6mqhNCJUPw4pN8LDe8MF9EYOA==" - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", diff --git a/package.json b/package.json index ad4dba50..909fee88 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "bcrypt": "^3.0.7", "bson": "^4.0.3", "bunyan": "^1.8.12", - "csv-stringify": "^5.5.0", "es6-promise": "^4.2.4", "fibers": "^5.0.0", "flatted": "^2.0.1", -- cgit v1.2.3-1-g7c22 From b51094d5cddd205492ecb624174304e4e38db861 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 18 Jul 2020 10:16:03 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b938a57..426bdf88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +# Upcoming Wekan release + +This release adds the following features: + +- [Add support for EdgeHTML browser (Microsoft Legacy Edge, not based on Chromium) by removing incompatible csv-stringify package. + CSV export will be fixed later](https://github.com/wekan/wekan/commit/b9a4b0b51d3692fcbb715b1afc875f21cd204ae5). + Thanks to xet7. + +and adds the following updates: + +- Update dependencies [Part1](https://github.com/wekan/wekan/commit/23ee93ca3d4ea161a93627a8e28e1ce93eea1bab), + [Part2](https://github.com/wekan/wekan/commit/6646d48ccbaf04c4935de35fe037eff3bd7fd469), + [Part3](https://github.com/wekan/wekan/commit/87cb4598f745a362aaac06b8b457198c40aaf61e), + [Part4](https://github.com/wekan/wekan/commit/f57ed2990f5c6e1af10d270b24c7092805711afe). + Thanks to developers of dependencies and xet7. + +and fixes the following bugs: + +- [Checklist Item PUT API: boolean cast on isFinished](https://github.com/wekan/wekan/pull/3211). + Thanks to Robert-Lebedeu. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.18 2020-07-10 Wekan release This release adds the following updates: -- cgit v1.2.3-1-g7c22 From 282f0f91fef799dc3981004e4d20730ae18eff2f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 18 Jul 2020 10:28:52 +0300 Subject: v4.19 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 4 ++-- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 426bdf88..88a9c760 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.19 2020-07-18 Wekan release This release adds the following features: diff --git a/Stackerfile.yml b/Stackerfile.yml index 41e6fa45..b0a66aa8 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.18.0" +appVersion: "v4.19.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index 5838eba6..1de68ab7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.18.0", + "version": "v4.19.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 909fee88..7f2ea637 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.18.0", + "version": "v4.19.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index aa5c6972..901a5509 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
                      • - Wekan REST API v4.18 + Wekan REST API v4.19
                      • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                        -

                        Wekan REST API v4.18

                        +

                        Wekan REST API v4.19

                        Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

                        diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 540af9ef..93983523 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.18 + version: v4.19 description: | The REST API allows you to control and extend Wekan with ease. diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index c4415391..59b987f4 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 = 418, + appVersion = 419, # Increment this for every release. - appMarketingVersion = (defaultText = "4.18.0~2020-07-10"), + appMarketingVersion = (defaultText = "4.19.0~2020-07-18"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From 19acd7861d1843460297f27e8da0c90dba6ebe54 Mon Sep 17 00:00:00 2001 From: Nico Date: Sun, 19 Jul 2020 19:57:23 +0200 Subject: Change slug on card rename --- models/boards.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/models/boards.js b/models/boards.js index f272e097..306bae13 100644 --- a/models/boards.js +++ b/models/boards.js @@ -18,18 +18,14 @@ Boards.attachSchema( type: String, // eslint-disable-next-line consistent-return autoValue() { - // XXX We need to improve slug management. Only the id should be necessary - // to identify a board in the code. - // XXX If the board title is updated, the slug should also be updated. // In some cases (Chinese and Japanese for instance) the `getSlug` function // return an empty string. This is causes bugs in our application so we set // a default slug in this case. - if (this.isInsert && !this.isSet) { + // Improvment would be to change client URL after slug is changed + const title = this.field('title'); + if (title.isSet && !this.isSet) { let slug = 'board'; - const title = this.field('title'); - if (title.isSet) { - slug = getSlug(title.value) || slug; - } + slug = getSlug(title.value) || slug; return slug; } }, -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From 3ee9b13b3b1d3a8e5f6487a55546a0e65ba82b38 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 19 Jul 2020 22:47:43 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88a9c760..640b7cef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# Upcoming Wekan release + +This release fixes the following bugs: + +- [Change slug on card rename](https://github.com/wekan/wekan/pull/3214). + Thanks to NicoP-S. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v4.19 2020-07-18 Wekan release This release adds the following features: -- cgit v1.2.3-1-g7c22 From 419615bed43b6e9de4030193c47137a066b85bde Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 19 Jul 2020 23:07:17 +0300 Subject: Update dependencies. Thanks to developers of dependencies and xet7 ! --- package-lock.json | 776 +++++++++++++++++++++++++++--------------------------- package.json | 16 +- 2 files changed, 403 insertions(+), 389 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1de68ab7..cf7877dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,126 +14,125 @@ } }, "@babel/core": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", - "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.2", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helpers": "^7.10.1", - "@babel/parser": "^7.10.2", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.2", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", + "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.5", + "@babel/types": "^7.10.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", "requires": { - "@babel/types": "^7.10.2", + "@babel/types": "^7.10.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==" }, "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } @@ -172,320 +171,319 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", - "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.5" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-module-imports": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", - "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-module-transforms": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", - "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", - "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1", - "lodash": "^4.17.13" + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==" }, "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", - "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", "requires": { - "@babel/types": "^7.10.2", + "@babel/types": "^7.10.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==" }, "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "requires": { - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==" }, "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } @@ -507,113 +505,112 @@ "dev": true }, "@babel/helpers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", - "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "requires": { - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", "requires": { - "@babel/types": "^7.10.2", + "@babel/types": "^7.10.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==" }, "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } @@ -637,9 +634,9 @@ "dev": true }, "@babel/runtime": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", - "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", + "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -709,6 +706,12 @@ "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@typescript-eslint/experimental-utils": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz", @@ -1082,12 +1085,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "bunyan": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz", + "integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==", "requires": { "dtrace-provider": "~0.8", - "moment": "^2.10.6", + "moment": "^2.19.3", "mv": "~2", "safe-json-stringify": "~1" } @@ -1534,22 +1537,22 @@ } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -1684,9 +1687,9 @@ } }, "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -1738,23 +1741,24 @@ } }, "eslint-plugin-import": { - "version": "2.20.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", - "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", + "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", + "eslint-import-resolver-node": "^0.3.3", + "eslint-module-utils": "^2.6.0", "has": "^1.0.3", "minimatch": "^3.0.4", - "object.values": "^1.1.0", + "object.values": "^1.1.1", "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" }, "dependencies": { "debug": { @@ -1781,6 +1785,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } } } }, @@ -1794,9 +1807,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", - "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -2278,9 +2291,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "gridfs-stream": { @@ -2556,9 +2569,9 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-data-descriptor": { @@ -2692,12 +2705,12 @@ "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "is-regexp": { @@ -2814,9 +2827,9 @@ } }, "jszip": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.4.0.tgz", - "integrity": "sha512-gZAOYuPl4EhPTXT0GjhI3o+ZAz3su6EhLrKUoAivcKqyqC7laS5JEv4XWZND9BgcDcF83vI85yGbDmDR6UhrIg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", "requires": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -3807,15 +3820,15 @@ } }, "moment": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", - "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", "optional": true }, "mongodb": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.8.tgz", - "integrity": "sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.9.tgz", + "integrity": "sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug==", "requires": { "bl": "^2.2.0", "bson": "^1.1.4", @@ -4083,9 +4096,9 @@ } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -4956,9 +4969,9 @@ } }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -4972,9 +4985,9 @@ "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -5055,28 +5068,6 @@ "es-abstract": "^1.17.5" } }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", @@ -5297,6 +5288,29 @@ "repeat-string": "^1.6.1" } }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, "tslib": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", @@ -5589,11 +5603,11 @@ } }, "xss": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.6.tgz", - "integrity": "sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.7.tgz", + "integrity": "sha512-A9v7tblGvxu8TWXQC9rlpW96a+LN1lyw6wyhpTmmGW+FwRMactchBR3ROKSi33UPCUcUHSu8s9YP6F+K3Mw//w==", "requires": { - "commander": "^2.9.0", + "commander": "^2.20.3", "cssfilter": "0.0.10" } }, diff --git a/package.json b/package.json index 7f2ea637..e7be4e8f 100644 --- a/package.json +++ b/package.json @@ -45,36 +45,36 @@ "eslint-config-meteor": "0.0.9", "eslint-config-prettier": "^3.6.0", "eslint-import-resolver-meteor": "^0.4.0", - "eslint-plugin-import": "^2.20.0", + "eslint-plugin-import": "^2.22.0", "eslint-plugin-meteor": "^5.1.0", - "eslint-plugin-prettier": "^3.1.2", + "eslint-plugin-prettier": "^3.1.4", "lint-staged": "^7.3.0", "pre-commit": "^1.2.2", "prettier": "^1.19.1", "prettier-eslint": "^9.0.2" }, "dependencies": { - "@babel/core": "^7.9.6", - "@babel/runtime": "^7.9.6", + "@babel/core": "^7.10.5", + "@babel/runtime": "^7.10.5", "@root/request": "^1.6.1", "ajv": "^5.0.0", "babel-runtime": "^6.26.0", "bcrypt": "^3.0.7", "bson": "^4.0.3", - "bunyan": "^1.8.12", + "bunyan": "^1.8.14", "es6-promise": "^4.2.4", "fibers": "^5.0.0", "flatted": "^2.0.1", "gridfs-stream": "^0.5.3", - "jszip": "^3.4.0", + "jszip": "^3.5.0", "ldapjs": "^1.0.2", "meteor-node-stubs": "^0.4.1", - "mongodb": "^3.5.7", + "mongodb": "^3.5.9", "os": "^0.1.1", "page": "^1.11.5", "papaparse": "^5.2.0", "qs": "^6.9.4", "source-map-support": "^0.5.19", - "xss": "^1.0.6" + "xss": "^1.0.7" } } -- cgit v1.2.3-1-g7c22 From de28bf8569a7373a5d6fd60a4f413e76673adc26 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 19 Jul 2020 23:11:00 +0300 Subject: Add missing Wekan logo sizes for PWAs and Apps. Thanks to xet7 ! --- public/Square150x150Logo.scale-100.png | Bin 0 -> 13069 bytes public/Square44x44Logo.scale-100.png | Bin 0 -> 9241 bytes public/StoreLogo.scale-100.png | Bin 0 -> 9770 bytes public/site.webmanifest | 15 +++++++++++++++ 4 files changed, 15 insertions(+) create mode 100644 public/Square150x150Logo.scale-100.png create mode 100644 public/Square44x44Logo.scale-100.png create mode 100644 public/StoreLogo.scale-100.png diff --git a/public/Square150x150Logo.scale-100.png b/public/Square150x150Logo.scale-100.png new file mode 100644 index 00000000..0445b50c Binary files /dev/null and b/public/Square150x150Logo.scale-100.png differ diff --git a/public/Square44x44Logo.scale-100.png b/public/Square44x44Logo.scale-100.png new file mode 100644 index 00000000..bf8cacfe Binary files /dev/null and b/public/Square44x44Logo.scale-100.png differ diff --git a/public/StoreLogo.scale-100.png b/public/StoreLogo.scale-100.png new file mode 100644 index 00000000..5d73037e Binary files /dev/null and b/public/StoreLogo.scale-100.png differ diff --git a/public/site.webmanifest b/public/site.webmanifest index 997a52ec..1be96989 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -11,6 +11,21 @@ "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" } ], "theme_color": "#ffffff", -- cgit v1.2.3-1-g7c22 From 14cdb5bdf1825d0e51dbb8b44725242314416b63 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 19 Jul 2020 23:13:22 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 640b7cef..2c7d7782 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,16 @@ # Upcoming Wekan release -This release fixes the following bugs: +This release adds the following updates: + +- [Update dependencies](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde). + Thanks to developers of dependencies and xet7. + +and fixes the following bugs: - [Change slug on card rename](https://github.com/wekan/wekan/pull/3214). Thanks to NicoP-S. +- [Add missing Wekan logo sizes for PWAs and Apps](https://github.com/wekan/wekan/commit/de28bf8569a7373a5d6fd60a4f413e76673adc26). + Thanks to xet7. Thanks to above GitHub users for their contributions and translators for their translations. -- cgit v1.2.3-1-g7c22 From 116372e11e09ce9b8376a8694553add595e02815 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 20 Jul 2020 00:13:39 +0300 Subject: Update dependencies, part 2. Thanks to developers of dependencies and xet7 ! --- package-lock.json | 368 +++++++++++++++++++++++++++++------------------------- package.json | 20 +-- 2 files changed, 211 insertions(+), 177 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf7877dc..dec24203 100644 --- a/package-lock.json +++ b/package-lock.json @@ -758,6 +758,11 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "abstract-logging": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-1.0.0.tgz", + "integrity": "sha1-i33q/TEFWbwo93ck3RuzAXcnjBs=" + }, "acorn": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", @@ -771,14 +776,14 @@ "dev": true }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-escapes": { @@ -875,9 +880,12 @@ } }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -1006,12 +1014,12 @@ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "bcrypt": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-3.0.8.tgz", - "integrity": "sha512-jKV6RvLhI36TQnPDvUFqBEnGX9c8dRRygKxCZu7E+MgLfKZbmmXL8a7/SFFOyHoPNX9nV81cKRC5tbQfvEQtpw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", + "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", "requires": { - "nan": "2.14.0", - "node-pre-gyp": "0.14.0" + "node-addon-api": "^3.0.0", + "node-pre-gyp": "0.15.0" } }, "bl": { @@ -1085,11 +1093,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "bunyan": { - "version": "1.8.14", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz", - "integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-2.0.4.tgz", + "integrity": "sha512-wJWl1J0aO+AJV+mEXh5jr2jiSUo+JJHQZ/P2z0JSFJidFAWuJPafD+IhE8BeQNMBZyldA9Y3GDR1U15zAAaJHA==", "requires": { "dtrace-provider": "~0.8", + "exeunt": "1.1.0", "moment": "^2.19.3", "mv": "~2", "safe-json-stringify": "~1" @@ -1221,11 +1230,6 @@ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1381,14 +1385,6 @@ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", @@ -1923,6 +1919,11 @@ } } }, + "exeunt": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/exeunt/-/exeunt-1.1.0.tgz", + "integrity": "sha1-r3Lbb5Szy3XpIa7jddUTBJhD0oQ=" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2071,14 +2072,14 @@ } }, "extsprintf": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -2172,6 +2173,12 @@ "write": "1.0.3" }, "dependencies": { + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -2184,9 +2191,14 @@ } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.0.4.tgz", + "integrity": "sha512-4gZhsMc26tSiMgQ+0gRN818ST2KCkX/4EvqocCkE1+SRb7mapNk4KLSP+XAj02jc8rxuyD3DrmI3a0BQ/TNOpg==" + }, + "flushwritable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz", + "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg=" }, "for-in": { "version": "1.0.2", @@ -2297,9 +2309,12 @@ "dev": true }, "gridfs-stream": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-0.5.3.tgz", - "integrity": "sha1-wIlnKPo+qD9fo8nO1GGvt6A20Uk=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", + "integrity": "sha1-PdOhAOwgIaGBKC9utGcJY2B034k=", + "requires": { + "flushwritable": "^1.0.0" + } }, "has": { "version": "1.0.3", @@ -2808,9 +2823,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -2844,34 +2859,25 @@ "dev": true }, "ldap-filter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "integrity": "sha1-8rhCvguG2jNSeYUFsx68rlkNd9A=", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.3.3.tgz", + "integrity": "sha1-KxTGiiqdQQTb28kQocqF/Riel5c=", "requires": { - "assert-plus": "0.1.5" - }, - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" - } + "assert-plus": "^1.0.0" } }, "ldapjs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz", - "integrity": "sha1-VE/3Ayt7g8aPBwEyjZKXqmlDQPk=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-2.0.0.tgz", + "integrity": "sha512-ZESQmVoG4a2ZX51pl/aRI+/kqiN2eRWMgHIsNZ2TYf37/S64OPnVJL5Vd5gdZR/qRPZVe5uuKW5p0GK2FUx/FQ==", "requires": { - "asn1": "0.2.3", + "abstract-logging": "^1.0.0", + "asn1": "^0.2.4", "assert-plus": "^1.0.0", "backoff": "^2.5.0", - "bunyan": "^1.8.3", - "dashdash": "^1.14.0", - "dtrace-provider": "~0.8", - "ldap-filter": "0.2.2", + "ldap-filter": "^0.3.3", "once": "^1.4.0", - "vasync": "^1.6.4", + "vasync": "^2.2.0", "verror": "^1.8.1" } }, @@ -3207,33 +3213,33 @@ "optional": true }, "meteor-node-stubs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.4.1.tgz", - "integrity": "sha512-UO2OStvLOKoApmOdIP5eCqoLaa/ritMXRg4ffJVdkNLEsczzPvTjgC0Mxk4cM4R8MZkwll90FYgjDf5qUTJdMA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.0.0.tgz", + "integrity": "sha512-QJwyv23wyXD3uEMzk5Xr/y5ezoVlCbHvBbrgdkVadn84dmifLRbs0PtD6EeNw5NLIk+SQSfxld7IMdEsneGz5w==", "requires": { "assert": "^1.4.1", - "browserify-zlib": "^0.1.4", - "buffer": "^4.9.1", + "browserify-zlib": "^0.2.0", + "buffer": "^5.2.1", "console-browserify": "^1.1.0", "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.7", - "events": "^1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "^0.2.1", - "path-browserify": "0.0.0", - "process": "^0.11.9", - "punycode": "^1.4.1", + "crypto-browserify": "^3.12.0", + "domain-browser": "^1.2.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.0", + "process": "^0.11.10", + "punycode": "^2.1.1", "querystring-es3": "^0.2.1", - "readable-stream": "^2.3.6", - "stream-browserify": "^2.0.1", - "stream-http": "^2.8.0", - "string_decoder": "^1.1.0", - "timers-browserify": "^1.4.2", - "tty-browserify": "0.0.0", + "readable-stream": "^3.3.0", + "stream-browserify": "^2.0.2", + "stream-http": "^3.0.0", + "string_decoder": "^1.2.0", + "timers-browserify": "^2.0.10", + "tty-browserify": "0.0.1", "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" + "util": "^0.11.1", + "vm-browserify": "^1.1.0" }, "dependencies": { "asn1.js": { @@ -3250,6 +3256,15 @@ "bundled": true, "requires": { "util": "0.10.3" + }, + "dependencies": { + "util": { + "version": "0.10.3", + "bundled": true, + "requires": { + "inherits": "2.0.1" + } + } } }, "base64-js": { @@ -3286,12 +3301,13 @@ } }, "browserify-des": { - "version": "1.0.1", + "version": "1.0.2", "bundled": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "browserify-rsa": { @@ -3316,19 +3332,18 @@ } }, "browserify-zlib": { - "version": "0.1.4", + "version": "0.2.0", "bundled": true, "requires": { - "pako": "~0.2.0" + "pako": "~1.0.5" } }, "buffer": { - "version": "4.9.1", + "version": "5.2.1", "bundled": true, "requires": { "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "ieee754": "^1.1.4" } }, "buffer-xor": { @@ -3436,7 +3451,7 @@ "bundled": true }, "elliptic": { - "version": "6.4.0", + "version": "6.4.1", "bundled": true, "requires": { "bn.js": "^4.4.0", @@ -3449,7 +3464,7 @@ } }, "events": { - "version": "1.1.1", + "version": "3.0.0", "bundled": true }, "evp_bytestokey": { @@ -3469,11 +3484,11 @@ } }, "hash.js": { - "version": "1.1.3", + "version": "1.1.7", "bundled": true, "requires": { "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.1" }, "dependencies": { "inherits": { @@ -3492,15 +3507,11 @@ } }, "https-browserify": { - "version": "0.0.1", + "version": "1.0.0", "bundled": true }, "ieee754": { - "version": "1.1.11", - "bundled": true - }, - "indexof": { - "version": "0.0.1", + "version": "1.1.13", "bundled": true }, "inherits": { @@ -3512,11 +3523,12 @@ "bundled": true }, "md5.js": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "requires": { "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "miller-rabin": { @@ -3536,30 +3548,31 @@ "bundled": true }, "os-browserify": { - "version": "0.2.1", + "version": "0.3.0", "bundled": true }, "pako": { - "version": "0.2.9", + "version": "1.0.10", "bundled": true }, "parse-asn1": { - "version": "5.1.1", + "version": "5.1.4", "bundled": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "path-browserify": { - "version": "0.0.0", + "version": "1.0.0", "bundled": true }, "pbkdf2": { - "version": "3.0.16", + "version": "3.0.17", "bundled": true, "requires": { "create-hash": "^1.1.2", @@ -3578,18 +3591,19 @@ "bundled": true }, "public-encrypt": { - "version": "4.0.2", + "version": "4.0.3", "bundled": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "punycode": { - "version": "1.4.1", + "version": "2.1.1", "bundled": true }, "querystring": { @@ -3601,7 +3615,7 @@ "bundled": true }, "randombytes": { - "version": "2.0.6", + "version": "2.1.0", "bundled": true, "requires": { "safe-buffer": "^5.1.0" @@ -3616,16 +3630,12 @@ } }, "readable-stream": { - "version": "2.3.6", + "version": "3.3.0", "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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "dependencies": { "inherits": { @@ -3646,6 +3656,10 @@ "version": "5.1.2", "bundled": true }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, "sha.js": { "version": "2.4.11", "bundled": true, @@ -3655,44 +3669,67 @@ } }, "stream-browserify": { - "version": "2.0.1", + "version": "2.0.2", "bundled": true, "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "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": { + "inherits": { + "version": "2.0.3", + "bundled": true + } + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-http": { - "version": "2.8.1", + "version": "3.0.0", "bundled": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "to-arraybuffer": "^1.0.0", + "readable-stream": "^3.0.6", "xtend": "^4.0.0" } }, "string_decoder": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "requires": { "safe-buffer": "~5.1.0" } }, "timers-browserify": { - "version": "1.4.2", + "version": "2.0.10", "bundled": true, "requires": { - "process": "~0.11.0" + "setimmediate": "^1.0.4" } }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, "tty-browserify": { - "version": "0.0.0", + "version": "0.0.1", "bundled": true }, "url": { @@ -3710,10 +3747,16 @@ } }, "util": { - "version": "0.10.3", + "version": "0.11.1", "bundled": true, "requires": { - "inherits": "2.0.1" + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "bundled": true + } } }, "util-deprecate": { @@ -3721,11 +3764,8 @@ "bundled": true }, "vm-browserify": { - "version": "0.0.4", - "bundled": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.0", + "bundled": true }, "xtend": { "version": "4.0.1", @@ -3892,9 +3932,10 @@ } }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true }, "nanomatch": { "version": "1.2.13", @@ -3953,14 +3994,19 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.1.tgz", + "integrity": "sha512-YUpjl57P55u2yUaKX5Bgy4t5s6SCNYMg+62XNg+k41aYbBL1NgWrZfcgljR5MxDxHDjzl0qHDNtH6SkW4DXNCA==" + }, "node-pre-gyp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", + "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", "requires": { "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", + "mkdirp": "^0.5.3", + "needle": "^2.5.0", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", @@ -4502,8 +4548,7 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.9.4", @@ -5394,7 +5439,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -5427,21 +5471,11 @@ } }, "vasync": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", - "integrity": "sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.0.tgz", + "integrity": "sha1-z951GGChWCLbOxMrxZsRakra8Bs=", "requires": { - "verror": "1.6.0" - }, - "dependencies": { - "verror": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=", - "requires": { - "extsprintf": "1.2.0" - } - } + "verror": "1.10.0" } }, "verror": { diff --git a/package.json b/package.json index e7be4e8f..48d67c88 100644 --- a/package.json +++ b/package.json @@ -57,21 +57,21 @@ "@babel/core": "^7.10.5", "@babel/runtime": "^7.10.5", "@root/request": "^1.6.1", - "ajv": "^5.0.0", + "ajv": "^6.12.3", "babel-runtime": "^6.26.0", - "bcrypt": "^3.0.7", - "bson": "^4.0.3", - "bunyan": "^1.8.14", - "es6-promise": "^4.2.4", + "bcrypt": "^5.0.0", + "bson": "^4.0.4", + "bunyan": "^2.0.4", + "es6-promise": "^4.2.8", "fibers": "^5.0.0", - "flatted": "^2.0.1", - "gridfs-stream": "^0.5.3", + "flatted": "^3.0.4", + "gridfs-stream": "^1.1.1", "jszip": "^3.5.0", - "ldapjs": "^1.0.2", - "meteor-node-stubs": "^0.4.1", + "ldapjs": "^2.0.0", + "meteor-node-stubs": "^1.0.0", "mongodb": "^3.5.9", "os": "^0.1.1", - "page": "^1.11.5", + "page": "^1.11.6", "papaparse": "^5.2.0", "qs": "^6.9.4", "source-map-support": "^0.5.19", -- cgit v1.2.3-1-g7c22 From 52938b2f1c9f4a3cb49612e5dfb4141799da6a5f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 20 Jul 2020 00:16:23 +0300 Subject: Update ChangeLog. --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c7d7782..b4c0d510 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,8 @@ This release adds the following updates: -- [Update dependencies](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde). +- Update dependencies[Part1](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde) and + [Part2](https://github.com/wekan/wekan/commit/116372e11e09ce9b8376a8694553add595e02815). Thanks to developers of dependencies and xet7. and fixes the following bugs: -- cgit v1.2.3-1-g7c22 From be6d1044a04d59b8cadc1226077f65c4af2a1bed Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 20 Jul 2020 00:21:03 +0300 Subject: v4.20 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 4 ++-- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4c0d510..5f8dce62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v4.20 2020-07-20 Wekan release This release adds the following updates: diff --git a/Stackerfile.yml b/Stackerfile.yml index b0a66aa8..2e19adc1 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v4.19.0" +appVersion: "v4.20.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index dec24203..0edb0d4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.19.0", + "version": "v4.20.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 48d67c88..769ee703 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v4.19.0", + "version": "v4.20.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/public/api/wekan.html b/public/api/wekan.html index 901a5509..d3ed75c2 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
                        • - Wekan REST API v4.19 + Wekan REST API v4.20
                        • @@ -2027,7 +2027,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
                          -

                          Wekan REST API v4.19

                          +

                          Wekan REST API v4.20

                          Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

                          diff --git a/public/api/wekan.yml b/public/api/wekan.yml index 93983523..da61bc5a 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v4.19 + version: v4.20 description: | The REST API allows you to control and extend Wekan with ease. diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index 59b987f4..521fb772 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 = 419, + appVersion = 420, # Increment this for every release. - appMarketingVersion = (defaultText = "4.19.0~2020-07-18"), + appMarketingVersion = (defaultText = "4.20.0~2020-07-20"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22 From f6e9f5a5e8423fed9eaadaf196b46273eca241d0 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 20 Jul 2020 00:54:33 +0300 Subject: Fix typo. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f8dce62..472ec032 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ This release adds the following updates: -- Update dependencies[Part1](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde) and +- Update dependencies [Part1](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde) and [Part2](https://github.com/wekan/wekan/commit/116372e11e09ce9b8376a8694553add595e02815). Thanks to developers of dependencies and xet7. -- cgit v1.2.3-1-g7c22