diff --git a/.drone.yml b/.drone.yml index efaeb8057..30c4b76fe 100644 --- a/.drone.yml +++ b/.drone.yml @@ -307,7 +307,7 @@ depends_on: platform: os: linux - arch: arm + arch: arm64 trigger: ref: @@ -332,6 +332,8 @@ steps: when: ref: - refs/heads/master + depends_on: + - clone - name: docker-version image: plugins/docker:linux-arm @@ -350,6 +352,48 @@ steps: when: ref: - "refs/tags/**" + depends_on: + - clone + + - name: docker-latest-arm64 + image: plugins/docker:linux-arm64 + pull: true + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + repo: vikunja/frontend + auto_tag: true + auto_tag_suffix: linux-arm64 + build_args: + - USE_RELEASE=true + - RELEASE_VERSION=master + when: + ref: + - refs/heads/master + depends_on: + - clone + + - name: docker-version-arm64 + image: plugins/docker:linux-arm64 + pull: true + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + repo: vikunja/frontend + auto_tag: true + auto_tag_suffix: linux-arm64 + build_args: + - USE_RELEASE=true + - RELEASE_VERSION=${DRONE_TAG##v} + when: + ref: + - "refs/tags/**" + depends_on: + - clone --- kind: pipeline diff --git a/cypress/integration/list/list.spec.js b/cypress/integration/list/list.spec.js index 6093871e6..28b6b5091 100644 --- a/cypress/integration/list/list.spec.js +++ b/cypress/integration/list/list.spec.js @@ -21,7 +21,10 @@ describe('Lists', () => { it('Should create a new list', () => { cy.visit('/') - cy.get('.namespace-title a[href="/namespaces/1/list"]') + cy.get('.namespace-title .dropdown-trigger') + .click() + cy.get('.namespace-title .dropdown .dropdown-item') + .contains('New list') .click() cy.url() .should('contain', '/namespaces/1/list') @@ -58,9 +61,8 @@ describe('Lists', () => { .should('contain', '/lists/1/list') cy.get('.list-title h1') .should('contain', 'First List') - cy.get('.list-title a.icon') - .should('have.attr', 'href') - .and('include', '/lists/1/edit') + cy.get('.list-title .dropdown') + .should('exist') cy.get('p') .contains('This list is currently empty.') .should('exist') @@ -363,6 +365,7 @@ describe('Lists', () => { cy.getAttached('.kanban .bucket .tasks .task') .contains(tasks[0].title) + .should('be.visible') .click() cy.url() diff --git a/cypress/integration/task/task.spec.js b/cypress/integration/task/task.spec.js index ced98b605..34967d10e 100644 --- a/cypress/integration/task/task.spec.js +++ b/cypress/integration/task/task.spec.js @@ -175,7 +175,7 @@ describe('Task', () => { .should('exist') }) - it.only('Can add a new comment', () => { + it('Can add a new comment', () => { const tasks = TaskFactory.create(1, { id: 1, }) @@ -377,5 +377,34 @@ describe('Task', () => { cy.get('.task-view .details.labels-list .multiselect .input-wrapper') .should('not.contain', labels[0].title) }) + + it('Can set a due date for a task', () => { + const tasks = TaskFactory.create(1, { + id: 1, + done: false, + }) + cy.visit(`/tasks/${tasks[0].id}`) + + cy.get('.task-view .action-buttons .button') + .contains('Set Due Date') + .click() + cy.get('.task-view .columns.details .column') + .contains('Due Date') + .get('.date-input .datepicker .show') + .click() + cy.get('.datepicker .datepicker-popup a') + .contains('Tomorrow') + .click() + cy.get('.datepicker .datepicker-popup a.button') + .contains('Confirm') + .click() + + cy.get('.task-view .columns.details .column') + .contains('Due Date') + .get('.date-input .datepicker-popup') + .should('not.exist') + cy.get('.global-notification') + .should('contain', 'Success') + }) }) }) diff --git a/docker-manifest.tmpl b/docker-manifest.tmpl index 4d12a36a7..d12a95525 100644 --- a/docker-manifest.tmpl +++ b/docker-manifest.tmpl @@ -11,6 +11,11 @@ manifests: platform: architecture: amd64 os: linux + - + image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 + platform: + architecture: arm64 + os: linux - image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm platform: diff --git a/nginx.conf b/nginx.conf index 2a7f59ab5..1b3d0e4f1 100644 --- a/nginx.conf +++ b/nginx.conf @@ -34,7 +34,10 @@ http { gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 256; - gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml font/woff2 image/x-icon; + gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml font/woff2 image/x-icon audio/wav; + + map_hash_max_size 128; + map_hash_bucket_size 128; # Expires map map $sent_http_content_type $expires { @@ -49,6 +52,7 @@ http { font/woff2 max; image/svg+xml max; image/x-icon max; + audio/wav max; ~image/ max; ~font/ max; } diff --git a/package.json b/package.json index bef001d45..c71fa63c6 100644 --- a/package.json +++ b/package.json @@ -16,16 +16,16 @@ "bulma": "0.9.2", "camel-case": "4.1.2", "copy-to-clipboard": "3.3.1", - "date-fns": "2.16.1", + "date-fns": "2.17.0", "dompurify": "2.2.6", - "highlight.js": "10.5.0", + "highlight.js": "10.6.0", "lodash": "4.17.20", - "marked": "1.2.8", + "marked": "2.0.0", "register-service-worker": "1.7.2", "snake-case": "3.0.4", "verte": "0.0.12", "vue": "2.6.12", - "vue-advanced-cropper": "0.20.1", + "vue-advanced-cropper": "1.3.0", "vue-drag-resize": "1.4.2", "vue-easymde": "1.3.2", "vue-shortkey": "3.1.7", @@ -44,11 +44,11 @@ "@vue/cli-service": "4.5.11", "axios": "0.21.1", "babel-eslint": "10.1.0", - "cypress": "6.3.0", + "cypress": "6.4.0", "cypress-file-upload": "5.0.2", - "eslint": "7.18.0", + "eslint": "7.19.0", "eslint-plugin-vue": "7.5.0", - "faker": "5.2.0", + "faker": "5.3.1", "jest": "26.6.3", "node-sass": "5.0.0", "sass-loader": "10.1.1", diff --git a/public/audio/pop.wav b/public/audio/pop.wav new file mode 100644 index 000000000..bc56c9416 Binary files /dev/null and b/public/audio/pop.wav differ diff --git a/public/fonts/open-sans-v15-latin-700.eot b/public/fonts/open-sans-v15-latin-700.eot deleted file mode 100644 index bf88bfad7..000000000 Binary files a/public/fonts/open-sans-v15-latin-700.eot and /dev/null differ diff --git a/public/fonts/open-sans-v15-latin-700.svg b/public/fonts/open-sans-v15-latin-700.svg deleted file mode 100644 index 8e6b61ade..000000000 --- a/public/fonts/open-sans-v15-latin-700.svg +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/open-sans-v15-latin-700italic.eot b/public/fonts/open-sans-v15-latin-700italic.eot deleted file mode 100644 index f754e4ee9..000000000 Binary files a/public/fonts/open-sans-v15-latin-700italic.eot and /dev/null differ diff --git a/public/fonts/open-sans-v15-latin-700italic.svg b/public/fonts/open-sans-v15-latin-700italic.svg deleted file mode 100644 index 80b563538..000000000 --- a/public/fonts/open-sans-v15-latin-700italic.svg +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/open-sans-v15-latin-italic.eot b/public/fonts/open-sans-v15-latin-italic.eot deleted file mode 100644 index d90868185..000000000 Binary files a/public/fonts/open-sans-v15-latin-italic.eot and /dev/null differ diff --git a/public/fonts/open-sans-v15-latin-italic.svg b/public/fonts/open-sans-v15-latin-italic.svg deleted file mode 100644 index e6a951f46..000000000 --- a/public/fonts/open-sans-v15-latin-italic.svg +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/open-sans-v15-latin-regular.eot b/public/fonts/open-sans-v15-latin-regular.eot deleted file mode 100644 index 1a8b1160d..000000000 Binary files a/public/fonts/open-sans-v15-latin-regular.eot and /dev/null differ diff --git a/public/fonts/open-sans-v15-latin-regular.svg b/public/fonts/open-sans-v15-latin-regular.svg deleted file mode 100644 index 78eb653a7..000000000 --- a/public/fonts/open-sans-v15-latin-regular.svg +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/quicksand-v7-latin-300.eot b/public/fonts/quicksand-v7-latin-300.eot deleted file mode 100644 index fc162bcc8..000000000 Binary files a/public/fonts/quicksand-v7-latin-300.eot and /dev/null differ diff --git a/public/fonts/quicksand-v7-latin-300.svg b/public/fonts/quicksand-v7-latin-300.svg deleted file mode 100644 index a5aa4ccac..000000000 --- a/public/fonts/quicksand-v7-latin-300.svg +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/quicksand-v7-latin-500.eot b/public/fonts/quicksand-v7-latin-500.eot deleted file mode 100644 index d4d73588d..000000000 Binary files a/public/fonts/quicksand-v7-latin-500.eot and /dev/null differ diff --git a/public/fonts/quicksand-v7-latin-500.svg b/public/fonts/quicksand-v7-latin-500.svg deleted file mode 100644 index fedf04e68..000000000 --- a/public/fonts/quicksand-v7-latin-500.svg +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/quicksand-v7-latin-700.eot b/public/fonts/quicksand-v7-latin-700.eot deleted file mode 100644 index 8b0d15c1b..000000000 Binary files a/public/fonts/quicksand-v7-latin-700.eot and /dev/null differ diff --git a/public/fonts/quicksand-v7-latin-700.svg b/public/fonts/quicksand-v7-latin-700.svg deleted file mode 100644 index 2c0d90af4..000000000 --- a/public/fonts/quicksand-v7-latin-700.svg +++ /dev/null @@ -1,458 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/quicksand-v7-latin-regular.eot b/public/fonts/quicksand-v7-latin-regular.eot deleted file mode 100644 index 8546c22ae..000000000 Binary files a/public/fonts/quicksand-v7-latin-regular.eot and /dev/null differ diff --git a/public/fonts/quicksand-v7-latin-regular.svg b/public/fonts/quicksand-v7-latin-regular.svg deleted file mode 100644 index e7cb778f2..000000000 --- a/public/fonts/quicksand-v7-latin-regular.svg +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/ServiceWorker/sw.js b/src/ServiceWorker/sw.js index 3917ec1ef..98d8bc293 100644 --- a/src/ServiceWorker/sw.js +++ b/src/ServiceWorker/sw.js @@ -4,7 +4,7 @@ // Cache assets workbox.routing.registerRoute( // This regexp matches all files in precache-manifest - new RegExp('.+\\.(css|json|js|eot|svg|ttf|woff|woff2|png|html|txt)$'), + new RegExp('.+\\.(css|json|js|svg|woff2|png|html|txt|wav)$'), new workbox.strategies.StaleWhileRevalidate(), ) @@ -74,7 +74,7 @@ self.addEventListener('notificationclick', function (event) { switch (event.action) { case 'mark-as-done': // FIXME: Ugly as hell, but no other way of doing this, since we can't use modules - // in service workersfor now. + // in service workers for now. fetch('/config.json') .then(r => r.json()) .then(config => { diff --git a/src/components/home/navigation.vue b/src/components/home/navigation.vue index 2942bc0d6..2dc5ff7c3 100644 --- a/src/components/home/navigation.vue +++ b/src/components/home/navigation.vue @@ -64,25 +64,7 @@ {{ n.title }} ({{ n.lists.filter(l => !l.isArchived).length }}) -
- - - - - - - - - - -
+ + @@ -134,9 +117,15 @@ diff --git a/src/components/misc/card.vue b/src/components/misc/card.vue index fc5120758..bf391039b 100644 --- a/src/components/misc/card.vue +++ b/src/components/misc/card.vue @@ -10,7 +10,7 @@ -
+
@@ -46,6 +46,10 @@ export default { type: Boolean, default: true, }, + loading: { + type: Boolean, + default: false, + }, }, } diff --git a/src/components/misc/create-edit.vue b/src/components/misc/create-edit.vue new file mode 100644 index 000000000..01aba2d34 --- /dev/null +++ b/src/components/misc/create-edit.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/components/misc/create.vue b/src/components/misc/create.vue deleted file mode 100644 index 121286bbd..000000000 --- a/src/components/misc/create.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/src/components/misc/dropdown-item.vue b/src/components/misc/dropdown-item.vue new file mode 100644 index 000000000..861b08936 --- /dev/null +++ b/src/components/misc/dropdown-item.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/misc/dropdown.vue b/src/components/misc/dropdown.vue new file mode 100644 index 000000000..9c51d06aa --- /dev/null +++ b/src/components/misc/dropdown.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/components/misc/nothing.vue b/src/components/misc/nothing.vue new file mode 100644 index 000000000..923d924b8 --- /dev/null +++ b/src/components/misc/nothing.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/modal/modal.vue b/src/components/modal/modal.vue index 1c74e59b1..3c130d096 100644 --- a/src/components/modal/modal.vue +++ b/src/components/modal/modal.vue @@ -2,7 +2,7 @@