This commit is contained in:
John Supplee 2021-08-08 10:55:20 +02:00
commit 52e45211a2
37 changed files with 7053 additions and 134 deletions

View file

@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=v12.22.3 \
NODE_VERSION=v12.22.4 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \

View file

@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.22.3
node-engine: 12.22.4
node-packages:
- node-gyp
- node-pre-gyp

View file

@ -83,7 +83,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.22.3
node-engine: 12.22.4
node-packages:
- node-gyp
- node-pre-gyp

4
.gitignore vendored
View file

@ -34,3 +34,7 @@ ehthumbs.db
.devcontainer/docker-compose.extend.yml
.devcontainer/volumes*/
.coverage
# Helm chart
# Chart dependencies
/helm/wekan/**/*.tgz

View file

@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 12.22.3
TRAVIS_NODE_VERSION: 12.22.4
TRAVIS_NPM_VERSION: latest
before_install:

View file

@ -3,6 +3,79 @@
Note: With Docker, please don't use latest tag. Only use release tags.
See https://github.com/wekan/wekan/issues/3874
# v5.47 2021-08-05 Wekan release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/68d9de89466611521db7d942dcf8daf58ba15a3e).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.46 2021-08-05 Wekan release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/d5c0a5d377d31bedadf3730756406355a17a563a).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.45 2021-08-05 Wekan release
This release adds the following new features:
- [Special handles to notify board or card members in a comment](https://github.com/wekan/wekan/pull/3937).
Thanks to syndimann.
and fixes the following bugs:
- [Fix: Show missing user mentions popover when posting comments in maximized card layout](https://github.com/wekan/wekan/pull/3939).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.44 2021-08-03 Wekan release
This release adds the following updates:
- [Wekan v5.43](https://github.com/wekan/wekan/commit/4e17d5a10f95fcea420c794ed8b30ea18dc2a725) and v5.44 for helm.
Thanks to xet7.
and fixes the following bugs:
- [Fix: Consecutive Card numbering when a card is moved to another board or copied](https://github.com/wekan/wekan/pull/3936).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.43 2021-08-03 Wekan release
This release adds the following new features:
- [Consecutive boardwise card numbering](https://github.com/wekan/wekan/pull/3935).
Thanks to syndimann.
and adds the following updates:
- [Update Helm Chart apiVersion, pin image version](https://github.com/wekan/wekan/pulls/3933).
This makes this Chart compatible with [flux](https://fluxcd.io)
[helm-controller](https://fluxcd.io/docs/components/helm), which requires v2 charts.
Thanks to varac.
- [Wekan v5.42 for helm](https://github.com/wekan/wekan/commit/7a1f42fa4e153ff4a0fb481ca5a363ac62033b7f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.42 2021-08-01 Wekan release
This release adds the following CRITICAL SECURITY UPDATES:
- [Updated to Node.js v12.22.4](https://github.com/wekan/wekan/commit/b13f6913896f787e1cae485381d98345d9f8b830).
Thanks to Node.js developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.41 2021-07-26 Wekan release
This release fixes the following bugs:

View file

@ -12,7 +12,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.22.3 \
NODE_VERSION=v12.22.4 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \

View file

@ -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.22.3 \
NODE_VERSION=v12.22.4 \
WEKAN_VERSION=latest \
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.22.3 \
NODE_VERSION=v12.22.4 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \

View file

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

View file

@ -25,6 +25,9 @@ template(name="cardDetails")
h2.card-details-title.js-card-title(
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
+viewer
if currentBoard.allowsCardNumber
span.card-number
| ##{getCardNumber}
= getTitle
if isWatching
i.card-details-watch.fa.fa-eye

View file

@ -114,6 +114,12 @@ avatar-radius = 50%
background: darken(white, 7%)
border-bottom: 1px solid darken(white, 14%)
.card-number {
color: darken(white, 30%);
display: inline-block;
margin-right: 5px;
}
.close-card-details,
.maximize-card-details,
.minimize-card-details,

View file

@ -37,6 +37,9 @@ template(name="minicard")
if getArchived
span.linked-icon.linked-archived.fa.fa-archive
+viewer
if currentBoard.allowsCardNumber
span.card-number
| ##{getCardNumber}
= getTitle
if $eq 'subtext-with-full-path' currentBoard.presentParentTask
.parent-subtext

View file

@ -114,6 +114,10 @@
font-size:20px;
color: #ccc;
.minicard-title
.card-number
color: darken(white, 30%);
display: inline-block;
margin-right: 5px;
p:last-child
margin-bottom: 0
.viewer

View file

@ -81,7 +81,9 @@ BlazeComponent.extendComponent({
Utils.boardView() === 'board-view-cal' ||
!Utils.boardView()
)
swimlaneId = board.getDefaultSwimline()._id;
swimlaneId = board.getDefaultSwimline()._id;
const nextCardNumber = board.getNextCardNumber();
const _id = Cards.insert({
title,
@ -93,6 +95,7 @@ BlazeComponent.extendComponent({
sort: sortIndex,
swimlaneId,
type: cardType,
cardNumber: nextCardNumber,
linkedId,
});
@ -241,7 +244,7 @@ BlazeComponent.extendComponent({
Boards.findOne(currentBoardId)
.customFields()
.fetch(),
function(field) {
function (field) {
if (field.automaticallyOnCard || field.alwaysOnCard)
arr.push({ _id: field._id, value: null });
},
@ -750,17 +753,17 @@ BlazeComponent.extendComponent({
checkIdleTime() {
return window.requestIdleCallback ||
function(handler) {
const startTime = Date.now();
return setTimeout(function() {
handler({
didTimeout: false,
timeRemaining() {
return Math.max(0, 50.0 - (Date.now() - startTime));
},
});
}, 1);
};
function (handler) {
const startTime = Date.now();
return setTimeout(function () {
handler({
didTimeout: false,
timeRemaining() {
return Math.max(0, 50.0 - (Date.now() - startTime));
},
});
}, 1);
};
}
updateList() {

View file

@ -1,3 +1,9 @@
const specialHandles = [
{userId: 'board_members', username: 'board_members'},
{userId: 'card_members', username: 'card_members'}
];
const specialHandleNames = specialHandles.map(m => m.username);
Template.editor.onRendered(() => {
const textareaSelector = 'textarea';
const mentions = [
@ -7,13 +13,14 @@ Template.editor.onRendered(() => {
search(term, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
callback(
_.union(
currentBoard
.activeMembers()
.map(member => {
const username = Users.findOne(member.userId).username;
return username.includes(term) ? username : null;
})
.filter(Boolean),
.filter(Boolean), [...specialHandleNames])
);
},
template(value) {
@ -323,13 +330,13 @@ Blaze.Template.registerHelper(
return HTML.Raw(
DOMPurify.sanitize(content, { ALLOW_UNKNOWN_PROTOCOLS: true }),
);
const knowedUsers = currentBoard.members.map(member => {
const knowedUsers = _.union(currentBoard.members.map(member => {
const u = Users.findOne(member.userId);
if (u) {
member.username = u.username;
}
return member;
});
}), [...specialHandles]);
const mentionRegex = /\B@([\w.]*)/gi;
let currentMention;

View file

@ -317,6 +317,9 @@ kbd
.grabbing
cursor: grabbing
.textcomplete-dropdown
z-index: 2000 !important;
// Implement a thiner close icon as suggested in
// https://github.com/FortAwesome/Font-Awesome/issues/1540#issuecomment-68689950
.fa.fa-times-thin:before

View file

@ -189,6 +189,13 @@ template(name="boardCardSettingsPopup")
span
i.fa.fa-tags
| {{_ 'labels'}}
div.check-div
a.flex.js-field-has-card-number(class="{{#if allowsCardNumber}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCardNumber}}is-checked{{/if}}")
span
i.fa.fa-hashtag
| {{_ 'card'}}
| {{_ 'number'}}
div.check-div
a.flex.js-field-has-description-title(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")

View file

@ -776,6 +776,10 @@ BlazeComponent.extendComponent({
return this.currentBoard.allowsComments;
},
allowsCardNumber() {
return this.currentBoard.allowsCardNumber;
},
allowsDescriptionTitle() {
return this.currentBoard.allowsDescriptionTitle;
},
@ -1019,6 +1023,22 @@ BlazeComponent.extendComponent({
this.currentBoard.allowsDescriptionTitle,
);
},
'click .js-field-has-card-number'(evt) {
evt.preventDefault();
this.currentBoard.allowsCardNumber = !this.currentBoard
.allowsCardNumber;
this.currentBoard.setAllowsCardNumber(
this.currentBoard.allowsCardNumber,
);
$(`.js-field-has-card-number ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsCardNumber,
);
$('.js-field-has-card-number').toggleClass(
CKCLS,
this.currentBoard.allowsCardNumber,
);
},
'click .js-field-has-description-text'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionText = !this.currentBoard

6
helm/wekan/Chart.lock Normal file
View file

@ -0,0 +1,6 @@
dependencies:
- name: mongodb
repository: https://charts.bitnami.com/bitnami
version: 10.0.5
digest: sha256:f6520f39b687cb52574ec2fda514662ce913665c0fd2391b68fdb4d2eb059497
generated: "2021-07-27T22:16:39.945592552+02:00"

View file

@ -1,14 +1,24 @@
name: wekan
version: 1.0.3
apiVersion: v1
apiVersion: v2
appVersion: "5.47"
dependencies:
- condition: mongodb.enabled
name: mongodb
repository: https://charts.bitnami.com/bitnami
version: 10.0.x
description: Open Source kanban
home: https://wekan.github.io/
home: https://wekan.github.io
icon: https://wekan.github.io/wekan-logo.svg
keywords:
- kanban
maintainers:
- email: github@randall.cc
name: technotaff
- email: jiangyt.cn@gmail.com
name: jiangytcn
- email: varac@varac.net
name: varac
name: wekan
sources:
- https://github.com/wekan/wekan
maintainers:
- name: technotaff
email: github@randall.cc
- name: jiangytcn
email: jiangyt.cn@gmail.com
engine: gotpl
type: application
version: 1.1.0

View file

@ -1,5 +0,0 @@
dependencies:
- name: mongodb
version: 10.0.x
repository: "https://charts.bitnami.com/bitnami"
condition: mongodb.enabled

View file

@ -14,7 +14,7 @@ serviceAccounts:
##
image:
repository: quay.io/wekan/wekan
tag: latest
tag: v5.47
pullPolicy: IfNotPresent
## Configuration for wekan component

View file

@ -89,7 +89,7 @@
"add-subtask": "Teilaufgabe hinzufügen",
"add-checklist": "Checkliste hinzufügen",
"add-checklist-item": "Element zu Checkliste hinzufügen",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"convertChecklistItemToCardPopup-title": "in Karte konvertieren",
"add-cover": "Cover hinzufügen",
"add-label": "Label hinzufügen",
"add-list": "Liste hinzufügen",

View file

@ -89,7 +89,7 @@
"add-subtask": "Adicionar Sub-tarefa",
"add-checklist": "Adicionar Lista de Verificação",
"add-checklist-item": "Adicionar um item à lista de verificação",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"convertChecklistItemToCardPopup-title": "Converter para Cartão",
"add-cover": "Adicionar Capa",
"add-label": "Adicionar Etiqueta",
"add-list": "Adicionar Lista",
@ -199,7 +199,7 @@
"poker-forty": "40",
"poker-oneHundred": "100",
"poker-unsure": "?",
"poker-finish": "Finish",
"poker-finish": "Finalizar",
"poker-result-votes": "Votos",
"poker-result-who": "Who",
"poker-replay": "Replay",

View file

@ -210,15 +210,30 @@ if (Meteor.isServer) {
// ignore commenter mention himself?
continue;
}
const atUser = _.findWhere(knownUsers, { username });
if (!atUser) {
continue;
if (activity.boardId && username === 'board_members') {
// mentions all board members
const knownUids = knownUsers.map(u => u.userId);
watchers = _.union(watchers, [...knownUids]);
title = 'act-atUserComment';
} else if (activity.cardId && username === 'card_members') {
// mentions all card members if assigned
const card = activity.card();
watchers = _.union(watchers, [...card.members]);
title = 'act-atUserComment';
} else {
const atUser = _.findWhere(knownUsers, { username });
if (!atUser) {
continue;
}
const uid = atUser.userId;
params.atUsername = username;
params.atEmails = atUser.emails;
title = 'act-atUserComment';
watchers = _.union(watchers, [uid]);
}
const uid = atUser.userId;
params.atUsername = username;
params.atEmails = atUser.emails;
title = 'act-atUserComment';
watchers = _.union(watchers, [uid]);
}
}
params.commentId = comment._id;

View file

@ -375,6 +375,14 @@ Boards.attachSchema(
defaultValue: true,
},
allowsCardNumber: {
/**
* Does the board allows card numbers?
*/
type: Boolean,
defaultValue: false,
},
allowsActivities: {
/**
* Does the board allows comments?
@ -1056,6 +1064,26 @@ Boards.helpers({
return result;
},
getNextCardNumber() {
const boardCards = Cards.find(
{
boardId: this._id
},
{
sort: { cardNumber: -1 },
limit: 1
}
).fetch();
// If no card is assigned to the board, return 1
if (!boardCards || boardCards.length === 0) {
return 1;
}
const maxCardNr = !!boardCards[0].cardNumber ? boardCards[0].cardNumber : 0;
return maxCardNr + 1;
},
cardsDueInBetween(start, end) {
return Cards.find({
boardId: this._id,
@ -1285,6 +1313,10 @@ Boards.mutations({
return { $set: { allowsDescriptionTitle } };
},
setAllowsCardNumber(allowsCardNumber) {
return { $set: { allowsCardNumber } };
},
setAllowsDescriptionText(allowsDescriptionText) {
return { $set: { allowsDescriptionText } };
},

View file

@ -470,6 +470,16 @@ Cards.attachSchema(
optional: true,
defaultValue: [],
},
cardNumber: {
/**
* A boardwise sequentially increasing number that is assigned
* to every newly created card
*/
type: Number,
decimal: true,
optional: true,
defaultValue: 0,
},
}),
);
@ -567,6 +577,7 @@ Cards.helpers({
delete this._id;
this.boardId = boardId;
this.cardNumber = Boards.findOne(boardId).getNextCardNumber();
this.swimlaneId = swimlaneId;
this.listId = listId;
const _id = Cards.insert(this);
@ -1647,6 +1658,10 @@ Cards.helpers({
}
},
getCardNumber() {
return this.cardNumber;
},
getBoardTitle() {
if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId });
@ -1975,8 +1990,12 @@ Cards.mutations({
'_id',
);
// assign the new card number from the target board
const newCardNumber = newBoard.getNextCardNumber();
Object.assign(mutatedFields, {
labelIds: newCardLabelIds,
cardNumber: newCardNumber
});
mutatedFields.customFields = this.mapCustomFieldsToBoard(newBoard._id);
@ -3207,6 +3226,8 @@ if (Meteor.isServer) {
Authentication.checkAdminOrCondition(req.userId, addPermission);
const paramListId = req.params.listId;
const paramParentId = req.params.parentId;
const nextCardNumber = board.getNextCardNumber();
const currentCards = Cards.find(
{
listId: paramListId,
@ -3229,6 +3250,7 @@ if (Meteor.isServer) {
userId: req.body.authorId,
swimlaneId: req.body.swimlaneId,
sort: currentCards.count(),
cardNumber: nextCardNumber,
members,
assignees,
});

6774
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v5.41.0",
"version": "v5.47.0",
"description": "Open-Source kanban",
"private": true,
"repository": {

View file

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Wekan REST API v5.41</title>
<title>Wekan REST API v5.47</title>
<style>
</style>
@ -1555,7 +1555,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<ul class="toc-list-h1">
<li>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.41">Wekan REST API v5.41</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.47">Wekan REST API v5.47</a>
</li>
@ -2128,7 +2128,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="wekan-rest-api">Wekan REST API v5.41</h1>
<h1 id="wekan-rest-api">Wekan REST API v5.47</h1>
<blockquote>
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
</blockquote>
@ -3554,6 +3554,7 @@ System.out.println(response.toString());
<span class="hljs-attr">&quot;allowsComments&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionTitle&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionText&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCardNumber&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsActivities&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsLabels&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCreator&quot;</span>: <span class="hljs-literal">true</span>,
@ -9138,7 +9139,8 @@ System.out.println(response.toString());
],
<span class="hljs-attr">&quot;linkId_gantt&quot;</span>: [
<span class="hljs-string">&quot;string&quot;</span>
]
],
<span class="hljs-attr">&quot;cardNumber&quot;</span>: <span class="hljs-number">0</span>
}
</code></pre>
<h3 id="get_card-responses">Responses</h3>
@ -18346,6 +18348,7 @@ UserSecurity
<span class="hljs-attr">&quot;allowsComments&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionTitle&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionText&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCardNumber&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsActivities&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsLabels&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCreator&quot;</span>: <span class="hljs-literal">true</span>,
@ -18551,6 +18554,13 @@ UserSecurity
<td>Does the board allows description text?</td>
</tr>
<tr>
<td>allowsCardNumber</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Does the board allows card numbers?</td>
</tr>
<tr>
<td>allowsActivities</td>
<td>boolean</td>
<td>true</td>
@ -19302,7 +19312,8 @@ UserSecurity
],
<span class="hljs-attr">&quot;linkId_gantt&quot;</span>: [
<span class="hljs-string">&quot;string&quot;</span>
]
],
<span class="hljs-attr">&quot;cardNumber&quot;</span>: <span class="hljs-number">0</span>
}
</code></pre>
@ -19563,6 +19574,13 @@ UserSecurity
<td>none</td>
<td>ID of card which is the parent link in gantt view</td>
</tr>
<tr>
<td>cardNumber</td>
<td>number¦null</td>
<td>false</td>
<td>none</td>
<td>A boardwise sequentially increasing number that is assigned<br />to every newly created card</td>
</tr>
</tbody>
</table>
<h4 id="enumerated-values-3">Enumerated Values</h4>

View file

@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v5.41
version: v5.47
description: |
The REST API allows you to control and extend Wekan with ease.
@ -2770,6 +2770,10 @@ definitions:
description: |
Does the board allows description text?
type: boolean
allowsCardNumber:
description: |
Does the board allows card numbers?
type: boolean
allowsActivities:
description: |
Does the board allows comments?
@ -2888,6 +2892,7 @@ definitions:
- allowsComments
- allowsDescriptionTitle
- allowsDescriptionText
- allowsCardNumber
- allowsActivities
- allowsLabels
- allowsCreator
@ -3268,6 +3273,12 @@ definitions:
type: string
x-nullable: true
x-nullable: true
cardNumber:
description: |
A boardwise sequentially increasing number that is assigned
to every newly created card
type: number
x-nullable: true
required:
- archived
- swimlaneId

View file

@ -18,8 +18,8 @@ REM Install chocolatey
choco install -y git curl python2 dotnet4.5.2 nano mongodb-3 mongoclient meteor
curl -O https://nodejs.org/dist/v12.22.3/node-v12.22.3-x64.msi
call node-v12.22.3-x64.msi
curl -O https://nodejs.org/dist/v12.22.4/node-v12.22.4-x64.msi
call node-v12.22.4-x64.msi
call npm config -g set msvs_version 2015
call meteor npm config -g set msvs_version 2015

View file

@ -28,7 +28,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.22.3
sudo n 12.22.4
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then

View file

@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 541,
appVersion = 547,
# Increment this for every release.
appMarketingVersion = (defaultText = "5.41.0~2021-07-26"),
appMarketingVersion = (defaultText = "5.47.0~2021-08-05"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,

View file

@ -1061,3 +1061,42 @@ Migrations.add('add-hide-logo-by-default', () => {
noValidateMulti,
);
});
Migrations.add('add-card-number-allowed', () => {
Boards.update(
{
allowsCardNumber: {
$exists: false,
},
},
{
$set: {
allowsCardNumber: false,
},
},
noValidateMulti,
);
});
Migrations.add('assign-boardwise-card-numbers', () => {
Boards.find().forEach(board => {
let nextCardNumber = board.getNextCardNumber();
Cards.find(
{
boardId: board._id,
cardNumber: {
$exists: false
}
},
{
sort: { createdAt: 1 }
}
).forEach(card => {
Cards.update(
card._id,
{ $set: { cardNumber: nextCardNumber } },
noValidate);
nextCardNumber++;
});
})
});

View file

@ -1,5 +1,5 @@
name: wekan
version: '5.41'
version: '5.47'
summary: The open-source kanban
description: |
Wekan is an open-source and collaborative kanban board application.
@ -80,7 +80,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.22.3
node-engine: 12.22.4
node-packages:
- node-gyp
- node-pre-gyp

View file

@ -2,7 +2,7 @@
set -euxo pipefail
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
NODE_VERSION=v12.22.3
NODE_VERSION=v12.22.4
#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