Ver código fonte

Merge branch 'devel'

Lauri Ojansivu 6 anos atrás
pai
commit
676140f5c8

+ 12 - 0
CHANGELOG.md

@@ -1,3 +1,15 @@
+# v1.34 2018-08-22 Wekan release
+
+This release fixes the following bugs:
+
+- [Restored SMTP settings at Admin Panel, and disabled showing password](https://github.com/wekan/wekan/issues/1790);
+- [Move color labels on minicard to bottom of minicard](https://github.com/wekan/wekan/issues/1842);
+- [Fix and improve linked cards](https://github.com/wekan/wekan/pull/1849);
+- [Allow Sandstorm to serve Wekan HTTP API](https://github.com/wekan/wekan/pull/1851);
+- [Add Favicon for pinned tab on Safari browser](https://github.com/wekan/wekan/issues/1795).
+
+Thanks to GitHub users andresmanelli, ocdtrekkie, therampagerado, woodyart and xet7 for their contributions.
+
 # v1.33 2018-08-16 Wekan release
 # v1.33 2018-08-16 Wekan release
 
 
 This release fixes the following bugs:
 This release fixes the following bugs:

+ 5 - 4
client/components/cards/minicard.jade

@@ -4,10 +4,6 @@ template(name="minicard")
     class="{{#if isLinkedBoard}}linked-board{{/if}}")
     class="{{#if isLinkedBoard}}linked-board{{/if}}")
     if cover
     if cover
       .minicard-cover(style="background-image: url('{{cover.url}}');")
       .minicard-cover(style="background-image: url('{{cover.url}}');")
-    if labels
-      .minicard-labels
-        each labels
-          .minicard-label(class="card-label-{{color}}" title="{{name}}")
     .minicard-title
     .minicard-title
       if $eq 'prefix-with-full-path' currentBoard.presentParentTask
       if $eq 'prefix-with-full-path' currentBoard.presentParentTask
         .parent-prefix
         .parent-prefix
@@ -80,3 +76,8 @@ template(name="minicard")
         .badge(class="{{#if checklistFinished}}is-finished{{/if}}")
         .badge(class="{{#if checklistFinished}}is-finished{{/if}}")
           span.badge-icon.fa.fa-check-square-o
           span.badge-icon.fa.fa-check-square-o
           span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
           span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
+
+    if labels
+      .minicard-labels
+        each labels
+          .minicard-label(class="card-label-{{color}}" title="{{name}}")

+ 1 - 1
client/components/lists/listBody.jade

@@ -70,7 +70,7 @@ template(name="linkCardPopup")
   label {{_ 'cards'}}:
   label {{_ 'cards'}}:
   select.js-select-cards
   select.js-select-cards
     each cards
     each cards
-      option(value="{{_id}}") {{title}}
+      option(value="{{getId}}") {{getTitle}}
 
 
   .edit-controls.clearfix
   .edit-controls.clearfix
     input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
     input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")

+ 7 - 6
client/components/lists/listBody.js

@@ -333,21 +333,22 @@ BlazeComponent.extendComponent({
   },
   },
 
 
   cards() {
   cards() {
+    const ownCardsIds = this.board.cards().map((card) => { return card.linkedId || card._id; });
     return Cards.find({
     return Cards.find({
       boardId: this.selectedBoardId.get(),
       boardId: this.selectedBoardId.get(),
       swimlaneId: this.selectedSwimlaneId.get(),
       swimlaneId: this.selectedSwimlaneId.get(),
       listId: this.selectedListId.get(),
       listId: this.selectedListId.get(),
       archived: false,
       archived: false,
-      linkedId: null,
-      _id: {$nin: this.board.cards().map((card) => { return card.linkedId || card._id; })},
+      linkedId: {$nin: ownCardsIds},
+      _id: {$nin: ownCardsIds},
     });
     });
   },
   },
 
 
   events() {
   events() {
     return [{
     return [{
       'change .js-select-boards'(evt) {
       'change .js-select-boards'(evt) {
+        subManager.subscribe('board', $(evt.currentTarget).val());
         this.selectedBoardId.set($(evt.currentTarget).val());
         this.selectedBoardId.set($(evt.currentTarget).val());
-        subManager.subscribe('board', this.selectedBoardId.get());
       },
       },
       'change .js-select-swimlanes'(evt) {
       'change .js-select-swimlanes'(evt) {
         this.selectedSwimlaneId.set($(evt.currentTarget).val());
         this.selectedSwimlaneId.set($(evt.currentTarget).val());
@@ -438,14 +439,14 @@ BlazeComponent.extendComponent({
 
 
   results() {
   results() {
     const board = Boards.findOne(this.selectedBoardId.get());
     const board = Boards.findOne(this.selectedBoardId.get());
-    return board.searchCards(this.term.get(), true);
+    return board.searchCards(this.term.get(), false);
   },
   },
 
 
   events() {
   events() {
     return [{
     return [{
       'change .js-select-boards'(evt) {
       'change .js-select-boards'(evt) {
+        subManager.subscribe('board', $(evt.currentTarget).val());
         this.selectedBoardId.set($(evt.currentTarget).val());
         this.selectedBoardId.set($(evt.currentTarget).val());
-        subManager.subscribe('board', this.selectedBoardId.get());
       },
       },
       'submit .js-search-term-form'(evt) {
       'submit .js-search-term-form'(evt) {
         evt.preventDefault();
         evt.preventDefault();
@@ -461,7 +462,7 @@ BlazeComponent.extendComponent({
           boardId: this.boardId,
           boardId: this.boardId,
           sort: Lists.findOne(this.listId).cards().count(),
           sort: Lists.findOne(this.listId).cards().count(),
           type: 'cardType-linkedCard',
           type: 'cardType-linkedCard',
-          linkedId: card._id,
+          linkedId: card.linkedId || card._id,
         });
         });
         Filter.addException(_id);
         Filter.addException(_id);
         Popup.close();
         Popup.close();

+ 1 - 0
client/components/main/layouts.jade

@@ -9,6 +9,7 @@ head
     packages.
     packages.
   link(rel="shortcut icon" href="/wekan-favicon.png")
   link(rel="shortcut icon" href="/wekan-favicon.png")
   link(rel="apple-touch-icon" href="/wekan-favicon.png")
   link(rel="apple-touch-icon" href="/wekan-favicon.png")
+  link(rel="mask-icon" href="/wekan-150.svg")
   link(rel="manifest" href="/wekan-manifest.json")
   link(rel="manifest" href="/wekan-manifest.json")
 
 
 template(name="userFormsLayout")
 template(name="userFormsLayout")

+ 34 - 0
client/components/settings/settingBody.jade

@@ -55,6 +55,40 @@ template(name="general")
 
 
 template(name='email')
 template(name='email')
   ul#email-setting.setting-detail
   ul#email-setting.setting-detail
+    li.smtp-form
+      .title {{_ 'smtp-host'}}
+      .description {{_ 'smtp-host-description'}}
+      .form-group
+        input.form-control#mail-server-host(type="text", placeholder="smtp.domain.com" value="{{currentSetting.mailServer.host}}")
+    li.smtp-form
+      .title {{_ 'smtp-port'}}
+      .description {{_ 'smtp-port-description'}}
+      .form-group
+        input.form-control#mail-server-port(type="text", placeholder="25" value="{{currentSetting.mailServer.port}}")
+    li.smtp-form
+      .title {{_ 'smtp-username'}}
+      .form-group
+        input.form-control#mail-server-username(type="text", placeholder="{{_ 'username'}}" value="{{currentSetting.mailServer.username}}")
+    li.smtp-form
+      .title {{_ 'smtp-password'}}
+      .form-group
+        input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="")
+    li.smtp-form
+      .title {{_ 'smtp-tls'}}
+      .form-group
+        a.flex.js-toggle-tls
+          .materialCheckBox#mail-server-tls(class="{{#if currentSetting.mailServer.enableTLS}}is-checked{{/if}}")
+
+          span {{_ 'smtp-tls-description'}}
+
+    li.smtp-form
+      .title {{_ 'send-from'}}
+      .form-group
+        input.form-control#mail-server-from(type="email", placeholder="no-reply@domain.com" value="{{currentSetting.mailServer.from}}")
+
+    li
+      button.js-save.primary {{_ 'save'}}
+
     li
     li
       button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}}
       button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}}
 
 

+ 3 - 11
client/components/settings/settingBody.js

@@ -20,7 +20,7 @@ BlazeComponent.extendComponent({
   setLoading(w) {
   setLoading(w) {
     this.loading.set(w);
     this.loading.set(w);
   },
   },
-  /*
+
   checkField(selector) {
   checkField(selector) {
     const value = $(selector).val();
     const value = $(selector).val();
     if (!value || value.trim() === '') {
     if (!value || value.trim() === '') {
@@ -30,7 +30,7 @@ BlazeComponent.extendComponent({
       return value;
       return value;
     }
     }
   },
   },
-*/
+
   currentSetting() {
   currentSetting() {
     return Settings.findOne();
     return Settings.findOne();
   },
   },
@@ -55,11 +55,9 @@ BlazeComponent.extendComponent({
       $('.invite-people').slideDown();
       $('.invite-people').slideDown();
     }
     }
   },
   },
-  /*
   toggleTLS() {
   toggleTLS() {
     $('#mail-server-tls').toggleClass('is-checked');
     $('#mail-server-tls').toggleClass('is-checked');
   },
   },
-*/
   switchMenu(event) {
   switchMenu(event) {
     const target = $(event.target);
     const target = $(event.target);
     if (!target.hasClass('active')) {
     if (!target.hasClass('active')) {
@@ -101,13 +99,11 @@ BlazeComponent.extendComponent({
         // if (!err) {
         // if (!err) {
         //   TODO - show more info to user
         //   TODO - show more info to user
         // }
         // }
-
         this.setLoading(false);
         this.setLoading(false);
       });
       });
     }
     }
   },
   },
 
 
-  /*
   saveMailServerInfo() {
   saveMailServerInfo() {
     this.setLoading(true);
     this.setLoading(true);
     $('li').removeClass('has-error');
     $('li').removeClass('has-error');
@@ -132,7 +128,7 @@ BlazeComponent.extendComponent({
     }
     }
 
 
   },
   },
-*/
+
   sendSMTPTestEmail() {
   sendSMTPTestEmail() {
     Meteor.call('sendSMTPTestEmail', (err, ret) => {
     Meteor.call('sendSMTPTestEmail', (err, ret) => {
       if (!err && ret) { /* eslint-disable no-console */
       if (!err && ret) { /* eslint-disable no-console */
@@ -152,15 +148,11 @@ BlazeComponent.extendComponent({
   events() {
   events() {
     return [{
     return [{
       'click a.js-toggle-registration': this.toggleRegistration,
       'click a.js-toggle-registration': this.toggleRegistration,
-      /*
       'click a.js-toggle-tls': this.toggleTLS,
       'click a.js-toggle-tls': this.toggleTLS,
-*/
       'click a.js-setting-menu': this.switchMenu,
       'click a.js-setting-menu': this.switchMenu,
       'click a.js-toggle-board-choose': this.checkBoard,
       'click a.js-toggle-board-choose': this.checkBoard,
       'click button.js-email-invite': this.inviteThroughEmail,
       'click button.js-email-invite': this.inviteThroughEmail,
-      /*
       'click button.js-save': this.saveMailServerInfo,
       'click button.js-save': this.saveMailServerInfo,
-*/
       'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
       'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
     }];
     }];
   },
   },

+ 7 - 7
i18n/es.i18n.json

@@ -109,7 +109,7 @@
     "bucket-example": "Como “Cosas por hacer” por ejemplo",
     "bucket-example": "Como “Cosas por hacer” por ejemplo",
     "cancel": "Cancelar",
     "cancel": "Cancelar",
     "card-archived": "Esta tarjeta se ha enviado a la papelera de reciclaje.",
     "card-archived": "Esta tarjeta se ha enviado a la papelera de reciclaje.",
-    "board-archived": "This board is moved to Recycle Bin.",
+    "board-archived": "Este tablero  se ha enviado a la papelera de reciclaje.",
     "card-comments-title": "Esta tarjeta tiene %s comentarios.",
     "card-comments-title": "Esta tarjeta tiene %s comentarios.",
     "card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
     "card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
     "card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
     "card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
@@ -136,9 +136,9 @@
     "cards": "Tarjetas",
     "cards": "Tarjetas",
     "cards-count": "Tarjetas",
     "cards-count": "Tarjetas",
     "casSignIn": "Iniciar sesión con CAS",
     "casSignIn": "Iniciar sesión con CAS",
-    "cardType-card": "Card",
-    "cardType-linkedCard": "Linked Card",
-    "cardType-linkedBoard": "Linked Board",
+    "cardType-card": "Tarjeta",
+    "cardType-linkedCard": "Tarjeta enlazada",
+    "cardType-linkedBoard": "Tablero enlazado",
     "change": "Cambiar",
     "change": "Cambiar",
     "change-avatar": "Cambiar el avatar",
     "change-avatar": "Cambiar el avatar",
     "change-password": "Cambiar la contraseña",
     "change-password": "Cambiar la contraseña",
@@ -175,8 +175,8 @@
     "confirm-subtask-delete-dialog": "¿Seguro que quieres eliminar la subtarea?",
     "confirm-subtask-delete-dialog": "¿Seguro que quieres eliminar la subtarea?",
     "confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
     "confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
     "copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
     "copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
-    "linkCardPopup-title": "Link Card",
-    "searchCardPopup-title": "Search Card",
+    "linkCardPopup-title": "Enlazar tarjeta",
+    "searchCardPopup-title": "Buscar tarjeta",
     "copyCardPopup-title": "Copiar la tarjeta",
     "copyCardPopup-title": "Copiar la tarjeta",
     "copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
     "copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
     "copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
     "copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
@@ -267,7 +267,7 @@
     "headerBarCreateBoardPopup-title": "Crear tablero",
     "headerBarCreateBoardPopup-title": "Crear tablero",
     "home": "Inicio",
     "home": "Inicio",
     "import": "Importar",
     "import": "Importar",
-    "link": "Link",
+    "link": "Enlace",
     "import-board": "importar un tablero",
     "import-board": "importar un tablero",
     "import-board-c": "Importar un tablero",
     "import-board-c": "Importar un tablero",
     "import-board-title-trello": "Importar un tablero desde Trello",
     "import-board-title-trello": "Importar un tablero desde Trello",

+ 13 - 13
i18n/fr.i18n.json

@@ -109,7 +109,7 @@
     "bucket-example": "Comme « todo list » par exemple",
     "bucket-example": "Comme « todo list » par exemple",
     "cancel": "Annuler",
     "cancel": "Annuler",
     "card-archived": "Cette carte est déplacée vers la corbeille.",
     "card-archived": "Cette carte est déplacée vers la corbeille.",
-    "board-archived": "This board is moved to Recycle Bin.",
+    "board-archived": "Ce tableau a été déplacé dans la Corbeille.",
     "card-comments-title": "Cette carte a %s commentaires.",
     "card-comments-title": "Cette carte a %s commentaires.",
     "card-delete-notice": "La suppression est permanente. Vous perdrez toutes les actions associées à cette carte.",
     "card-delete-notice": "La suppression est permanente. Vous perdrez toutes les actions associées à cette carte.",
     "card-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser cette carte. Cette action est irréversible.",
     "card-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser cette carte. Cette action est irréversible.",
@@ -136,9 +136,9 @@
     "cards": "Cartes",
     "cards": "Cartes",
     "cards-count": "Cartes",
     "cards-count": "Cartes",
     "casSignIn": "Se connecter avec CAS",
     "casSignIn": "Se connecter avec CAS",
-    "cardType-card": "Card",
-    "cardType-linkedCard": "Linked Card",
-    "cardType-linkedBoard": "Linked Board",
+    "cardType-card": "Carte",
+    "cardType-linkedCard": "Carte liée",
+    "cardType-linkedBoard": "Tableau lié",
     "change": "Modifier",
     "change": "Modifier",
     "change-avatar": "Modifier l'avatar",
     "change-avatar": "Modifier l'avatar",
     "change-password": "Modifier le mot de passe",
     "change-password": "Modifier le mot de passe",
@@ -175,8 +175,8 @@
     "confirm-subtask-delete-dialog": "Êtes-vous sûr de vouloir supprimer la sous-tâche ?",
     "confirm-subtask-delete-dialog": "Êtes-vous sûr de vouloir supprimer la sous-tâche ?",
     "confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer la checklist ?",
     "confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer la checklist ?",
     "copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
     "copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
-    "linkCardPopup-title": "Link Card",
-    "searchCardPopup-title": "Search Card",
+    "linkCardPopup-title": "Lier une Carte",
+    "searchCardPopup-title": "Chercher une Carte",
     "copyCardPopup-title": "Copier la carte",
     "copyCardPopup-title": "Copier la carte",
     "copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
     "copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
     "copyChecklistToManyCardsPopup-instructions": "Titres et descriptions des cartes de destination dans ce format JSON",
     "copyChecklistToManyCardsPopup-instructions": "Titres et descriptions des cartes de destination dans ce format JSON",
@@ -267,7 +267,7 @@
     "headerBarCreateBoardPopup-title": "Créer un tableau",
     "headerBarCreateBoardPopup-title": "Créer un tableau",
     "home": "Accueil",
     "home": "Accueil",
     "import": "Importer",
     "import": "Importer",
-    "link": "Link",
+    "link": "Lien",
     "import-board": "importer un tableau",
     "import-board": "importer un tableau",
     "import-board-c": "Importer un tableau",
     "import-board-c": "Importer un tableau",
     "import-board-title-trello": "Importer le tableau depuis Trello",
     "import-board-title-trello": "Importer le tableau depuis Trello",
@@ -463,7 +463,7 @@
     "OS_Platform": "OS Plate-forme",
     "OS_Platform": "OS Plate-forme",
     "OS_Release": "OS Version",
     "OS_Release": "OS Version",
     "OS_Totalmem": "OS Mémoire totale",
     "OS_Totalmem": "OS Mémoire totale",
-    "OS_Type": "OS Type",
+    "OS_Type": "Type d'OS",
     "OS_Uptime": "OS Durée de fonctionnement",
     "OS_Uptime": "OS Durée de fonctionnement",
     "hours": "heures",
     "hours": "heures",
     "minutes": "minutes",
     "minutes": "minutes",
@@ -473,7 +473,7 @@
     "no": "Non",
     "no": "Non",
     "accounts": "Comptes",
     "accounts": "Comptes",
     "accounts-allowEmailChange": "Autoriser le changement d'adresse mail",
     "accounts-allowEmailChange": "Autoriser le changement d'adresse mail",
-    "accounts-allowUserNameChange": "Permettre la modification de l'identifiant",
+    "accounts-allowUserNameChange": "Autoriser le changement d'identifiant",
     "createdAt": "Créé le",
     "createdAt": "Créé le",
     "verified": "Vérifié",
     "verified": "Vérifié",
     "active": "Actif",
     "active": "Actif",
@@ -485,7 +485,7 @@
     "editCardEndDatePopup-title": "Changer la date de fin",
     "editCardEndDatePopup-title": "Changer la date de fin",
     "assigned-by": "Assigné par",
     "assigned-by": "Assigné par",
     "requested-by": "Demandé par",
     "requested-by": "Demandé par",
-    "board-delete-notice": "La suppression est définitive. Vous perdrez toutes vos listes, cartes et actions associées à ce tableau.",
+    "board-delete-notice": "La suppression est définitive. Vous perdrez toutes les listes, cartes et actions associées à ce tableau.",
     "delete-board-confirm-popup": "Toutes les listes, cartes, étiquettes et activités seront supprimées et vous ne pourrez pas retrouver le contenu du tableau. Il n'y a pas d'annulation possible.",
     "delete-board-confirm-popup": "Toutes les listes, cartes, étiquettes et activités seront supprimées et vous ne pourrez pas retrouver le contenu du tableau. Il n'y a pas d'annulation possible.",
     "boardDeletePopup-title": "Supprimer le tableau ?",
     "boardDeletePopup-title": "Supprimer le tableau ?",
     "delete-board": "Supprimer le tableau",
     "delete-board": "Supprimer le tableau",
@@ -497,11 +497,11 @@
     "show-subtasks-field": "Les cartes peuvent avoir des sous-tâches",
     "show-subtasks-field": "Les cartes peuvent avoir des sous-tâches",
     "deposit-subtasks-board": "Déposer des sous-tâches dans ce tableau :",
     "deposit-subtasks-board": "Déposer des sous-tâches dans ce tableau :",
     "deposit-subtasks-list": "Liste de destination pour les sous-tâches déposées ici :",
     "deposit-subtasks-list": "Liste de destination pour les sous-tâches déposées ici :",
-    "show-parent-in-minicard": "Voir le parent dans la mini-carte :",
+    "show-parent-in-minicard": "Voir la carte parente dans la mini-carte :",
     "prefix-with-full-path": "Préfixer avec le chemin complet",
     "prefix-with-full-path": "Préfixer avec le chemin complet",
     "prefix-with-parent": "Préfixer avec le parent",
     "prefix-with-parent": "Préfixer avec le parent",
-    "subtext-with-full-path": "Sous-texte avec le chemin complet",
-    "subtext-with-parent": "Sous-texte avec le parent",
+    "subtext-with-full-path": "Sous-titre avec le chemin complet",
+    "subtext-with-parent": "Sous-titre avec le parent",
     "change-card-parent": "Changer le parent de la carte",
     "change-card-parent": "Changer le parent de la carte",
     "parent-card": "Carte parente",
     "parent-card": "Carte parente",
     "source-board": "Tableau source",
     "source-board": "Tableau source",

+ 8 - 0
models/cards.js

@@ -712,6 +712,14 @@ Cards.helpers({
     }
     }
   },
   },
 
 
+  getId() {
+    if (this.isLinked()) {
+      return this.linkedId;
+    } else {
+      return this._id;
+    }
+  },
+
   getTitle() {
   getTitle() {
     if (this.isLinkedCard()) {
     if (this.isLinkedCard()) {
       const card = Cards.findOne({ _id: this.linkedId });
       const card = Cards.findOne({ _id: this.linkedId });

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "wekan",
   "name": "wekan",
-  "version": "1.33.0",
+  "version": "1.34.0",
   "description": "The open-source kanban",
   "description": "The open-source kanban",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {

+ 3 - 3
sandstorm-pkgdef.capnp

@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
     appTitle = (defaultText = "Wekan"),
     appTitle = (defaultText = "Wekan"),
     # The name of the app as it is displayed to the user.
     # The name of the app as it is displayed to the user.
 
 
-    appVersion = 118,
+    appVersion = 119,
     # Increment this for every release.
     # Increment this for every release.
 
 
-    appMarketingVersion = (defaultText = "1.33.0~2018-08-16"),
+    appMarketingVersion = (defaultText = "1.34.0~2018-08-22"),
     # Human-readable presentation of the app version.
     # Human-readable presentation of the app version.
 
 
     minUpgradableAppVersion = 0,
     minUpgradableAppVersion = 0,
@@ -226,7 +226,7 @@ const pkgdef :Spk.PackageDefinition = (
         verbPhrase = (defaultText = "removed from card"),
         verbPhrase = (defaultText = "removed from card"),
       ), ],
       ), ],
     ),
     ),
-
+    apiPath = "/api",
     saveIdentityCaps = true,
     saveIdentityCaps = true,
   ),
   ),
 );
 );