Compare commits

...

1110 Commits

Author SHA1 Message Date
098b5fa2b1
fix(reminders): properly parse relative reminders which don't have an amount 2023-06-10 18:54:39 +02:00
5e4eb4a728
fix(reminders): custom relative highlight now only when a custom relative reminder was actually selected 2023-06-10 18:54:10 +02:00
8930f61548
fix(reminders): flatpickr styling improvements 2023-06-10 18:46:15 +02:00
9a736cf65f
fix(reminders): style flatpickr so that it blends in more 2023-06-10 18:39:33 +02:00
2677f6254d
feat(reminders): highlight which preset or custom date is selected 2023-06-10 17:35:50 +02:00
bfcb36e093
fix(reminders): align remove icon with the rest 2023-06-10 17:29:30 +02:00
9ec29cad30
fix: lint 2023-06-10 17:26:06 +02:00
dd3a5fe6b5
fix(reminders): duplicate reminder for each change 2023-06-09 14:46:34 +02:00
04642ae1ec
fix(reminders): set date over relative reminder 2023-06-09 14:43:02 +02:00
eac19e28d6
feat(reminders): add more spacing 2023-06-09 14:39:35 +02:00
11f94e4037
feat(reminders): make adding new reminders less confusing 2023-06-09 14:37:26 +02:00
39cc7a00d8
feat(reminders): make relative presets actually work 2023-06-09 14:31:32 +02:00
02da1e171e
feat(reminders): add confirm button 2023-06-09 14:27:11 +02:00
ae177c73ea
feat(reminders): move reminder settings to a popup 2023-06-09 14:23:32 +02:00
e6c4c18974
feat(reminders): translate all reminder form strings 2023-06-09 13:54:17 +02:00
95487d7569
feat(reminders): add proper time picker for relative dates 2023-06-09 13:19:47 +02:00
7b2a688b6e
feat(datepicker): separate datepicker popup and datepicker logic in different components 2023-06-09 12:07:23 +02:00
9df6950d1a
feat: start adding relative reminder picker with more options 2023-06-05 16:16:10 +02:00
6c2dc483a2
fix: redundant ) 2023-05-31 16:27:20 +02:00
811254e6a9
wip: base review
(cherry picked from commit 3bb64f078cf333f174d247dc404355f2c8437cfd)
2023-05-31 16:25:33 +02:00
85ffed4d9a
fix: review findings 2023-05-31 16:25:33 +02:00
5fb45afb12
fix: review findings 2023-05-31 16:25:33 +02:00
fb14eca634
fix: review findings 2023-05-31 16:25:32 +02:00
14e2698833
feat: edit relative reminders 2023-05-31 16:25:32 +02:00
0d6c0c8399
chore; extract code to reminder-period.vue 2023-05-31 16:25:32 +02:00
5d38b8327f
feat: allow to edit existing relative reminders 2023-05-31 16:25:32 +02:00
f747d5b2fc
feat: Use new Reminders API instead of reminder_dates 2023-05-31 16:25:30 +02:00
8a75790453
chore: remove triggered notifications as it's not supported anywhere 2023-05-31 15:21:09 +02:00
acb212ab24
feat: set the current language to the one saved by the user on login 2023-05-31 15:17:54 +02:00
4ba02ebbb6
fix: don't try to convert a null date
Resolves vikunja/frontend#3371
2023-05-31 15:07:23 +02:00
244da46e38
fix(navigation): nav item width for items without sub projects 2023-05-31 14:37:57 +02:00
f40035dc79
chore: update nix flake 2023-05-31 13:44:14 +02:00
5f71e406fc fix(deps): update dependency marked to v5.0.4 2023-05-31 05:15:46 +00:00
Frederick [Bot]
3d11a4f03a [skip ci] Updated translations via Crowdin 2023-05-31 00:30:36 +00:00
1dfd2dc4b7 fix(deps): update dependency vue-router to v4.2.2 2023-05-30 22:46:00 +00:00
e9701660d3 chore(deps): update dependency vite-plugin-pwa to v0.15.2 2023-05-30 21:04:22 +00:00
c8dbb4c7ef chore(deps): update typescript-eslint monorepo to v5.59.8 2023-05-30 20:31:05 +00:00
1241d90268 chore(deps): update workbox monorepo to v6.6.1 (#3553)
Reviewed-on: vikunja/frontend#3553
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-05-30 20:30:46 +00:00
3de5b65977 chore(deps): update dependency vitest to v0.31.2 2023-05-30 18:45:05 +00:00
4a353553c3 chore(deps): update pnpm to v8.6.0 2023-05-30 18:42:51 +00:00
1240f31c0a chore(deps): update workbox monorepo to v6.6.0 (#3548)
Reviewed-on: vikunja/frontend#3548
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-05-30 18:12:03 +00:00
01ac84ce1e
fix: don't require variant prop on loading component as it already has a default one set 2023-05-30 20:00:02 +02:00
4c969f0a42
fix: don't allow creating a new label from filter view
Resolves vikunja/frontend#1035
2023-05-30 19:54:01 +02:00
8e2c76a33e
feat: optimize print view for project views 2023-05-30 19:50:37 +02:00
b3666ec27e chore(deps): update dependency @vitejs/plugin-legacy to v4.0.4 2023-05-30 16:36:54 +00:00
2c6862c509 chore(deps): update dependency vite-plugin-pwa to v0.15.1 2023-05-30 16:36:44 +00:00
9f8c43818c chore(deps): update dependency @types/node to v18.16.16 2023-05-30 16:36:17 +00:00
0debca91c8 chore(deps): update dependency @faker-js/faker to v8.0.2 2023-05-30 16:36:08 +00:00
7b6c9fcd24 chore(deps): update dependency postcss to v8.4.24 2023-05-30 15:05:47 +00:00
55675bf41b fix(deps): update sentry-javascript monorepo to v7.53.1 2023-05-30 14:25:03 +00:00
bb24b06031 chore(deps): update dependency vite to v4.3.9 2023-05-30 14:24:37 +00:00
dbce0376d5 fix(deps): update dependency marked to v5.0.3 2023-05-30 14:24:15 +00:00
40db144a41 fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.11.0 2023-05-30 11:08:12 +00:00
f7ba3bd08f
fix: increase default auto-save timeout to 5 seconds
Related discussion: https://community.vikunja.io/t/task-description-constantly-saving-loosing-content/1350
2023-05-30 12:19:14 +02:00
ac1d374191 feat: remove namespaces, make projects infinitely nestable (#3323)
Reviewed-on: vikunja/frontend#3323
2023-05-30 10:09:39 +00:00
391992effb
fix: missing await 2023-05-30 11:37:45 +02:00
2e9ade11c3
fix: missing variant prop for loading component 2023-05-30 11:05:10 +02:00
f11a8c543b
fix(tests): project archived filter checkbox selector 2023-05-30 11:00:30 +02:00
e30a4452f2
fix(tests): new project input field 2023-05-30 10:57:08 +02:00
6cc11e64ab
fix: undefined parent project when none was selected 2023-05-30 10:56:42 +02:00
7b05ed9d3d
fix: avoid crashing browser processes during tests 2023-05-30 10:42:32 +02:00
Frederick [Bot]
dba35c0107 [skip ci] Updated translations via Crowdin 2023-05-29 00:28:01 +00:00
Frederick [Bot]
bfbc874b1d [skip ci] Updated translations via Crowdin 2023-05-28 00:29:34 +00:00
dbccdb239a
chore(tests): enable experimental memory managment for cypress tests 2023-05-24 18:32:23 +02:00
f13db9268a
fix: translation string 2023-05-24 17:41:14 +02:00
ed8de7e3eb
fix: lint 2023-05-24 15:54:37 +02:00
b34118485c
feat: allow creating a new project directly as a child project from another one 2023-05-24 15:54:37 +02:00
9c3259c660
chore: don't recalculate everything 2023-05-24 15:54:37 +02:00
a3e289c06c
chore: remove type annotation for computed 2023-05-24 15:54:37 +02:00
31b7c1f217
fix: don't set the current project when setting a project 2023-05-24 15:54:37 +02:00
c30dcff451
chore: don't show selection for parent project when no projects are available 2023-05-24 15:54:37 +02:00
086f50d4fe
chore: re-add top menu spacing 2023-05-24 15:54:36 +02:00
46e825820c
fix: sort in store 2023-05-24 15:54:36 +02:00
a3e2cbeb27
feat: replace color dot with handle icon on hover 2023-05-24 15:54:36 +02:00
a342ae67de
chore: use project id type 2023-05-24 15:54:36 +02:00
e4d97e0520
chore: don't set the current project to null if it's undefined already 2023-05-24 15:54:36 +02:00
b69a05689b
chore: move duplicate project logic to composable 2023-05-24 15:54:36 +02:00
6b824a49ab
chore: redirect to new project after creating from store 2023-05-24 15:54:36 +02:00
652db56d42
chore: remove unused code 2023-05-24 15:54:36 +02:00
afaf1846ec
chore: don't wrap a computed in another computed 2023-05-24 15:54:36 +02:00
ba452ab883
fix: move parent project handling out of useProject 2023-05-24 15:54:36 +02:00
39f699a61a
fix: rename getParentProjects method to make it clear what it does 2023-05-24 15:54:36 +02:00
4ab547810c
fix: return updated project instead of the old one 2023-05-24 15:54:35 +02:00
bbaddb9406
fix: remove leftovers of childIds 2023-05-24 15:54:35 +02:00
a2cc9ddc88
fix: properly determine if there are projects 2023-05-24 15:54:35 +02:00
175e31ca62
fix: recreate project instead of editing before 2023-05-24 15:54:35 +02:00
d414b65e7d
fix: remove unnecessary fallback 2023-05-24 15:54:35 +02:00
78158bcba5
fix: remove getProjectById and replace all usages of it 2023-05-24 15:54:35 +02:00
9402344b7e
fix: add default for level 2023-05-24 15:54:35 +02:00
3eca9f6180
fix: only bind child projects data down 2023-05-24 15:54:35 +02:00
26e3d42ed5
fix: move parent project child id mutation to store 2023-05-24 15:54:35 +02:00
6e095436e9
chore: rename flag 2023-05-24 15:54:35 +02:00
1344026494
fix: move the collapsable placeholder to the button 2023-05-24 15:54:35 +02:00
1a94496801
fix: bottom margin of project header 2023-05-24 15:54:34 +02:00
48570808e5
fix: use the color bubble as handle if the project has a color 2023-05-24 15:54:34 +02:00
a7440ed296
chore: use stores directly 2023-05-24 15:54:34 +02:00
12ebefd86a
chore: move v-if 2023-05-24 15:54:34 +02:00
6c9cbaadc8
chore: set project id from the outside 2023-05-24 15:54:34 +02:00
9b10693172
chore: replace section with a div 2023-05-24 15:54:34 +02:00
db1c6d6a41
chore: move all options to component props 2023-05-24 15:54:34 +02:00
c56787443f
chore: add types for emit 2023-05-24 15:54:34 +02:00
cb218ec0c3
feat: add setting for infinite nesting 2023-05-24 15:54:34 +02:00
0dd6f82a0e
fix: use menu tag everywhere 2023-05-24 15:54:34 +02:00
225091864f
fix: collapsing child projects 2023-05-24 15:54:34 +02:00
ebd9c4702e
feat: don't use child_projects property from api 2023-05-24 15:54:33 +02:00
4ad9773022
chore: format 2023-05-24 15:54:33 +02:00
0a17df87e9
fix: don't show child projects when the project is only a favorite 2023-05-24 15:54:33 +02:00
b567146d69
chore: move more logic to ProjectsNavigationItem.vue 2023-05-24 15:54:33 +02:00
65522a57f1
chore: move ProjectsNavigationWrapper back to navigation.vue 2023-05-24 15:54:33 +02:00
1d936618fa
feat: load all projects earlier than in the navigation and use the loading state of the store 2023-05-24 15:54:33 +02:00
76814a2d3f
chore: move loading styles to variant into the component 2023-05-24 15:54:33 +02:00
4134fcbd75
chore: remove old comment 2023-05-24 15:54:33 +02:00
49fac7db1c
chore: use <menu> instead of <ul> 2023-05-24 15:54:33 +02:00
e25273df48
fix: indention 2023-05-24 15:54:33 +02:00
638f6bea24
chore: improve prop type definition 2023-05-24 15:54:33 +02:00
ddcd6a17dc
chore: only apply padding where needed 2023-05-24 15:54:32 +02:00
4e21b463df
chore: remove old todo 2023-05-24 15:54:32 +02:00
3db4e011d4
feat: move navigation item to component 2023-05-24 15:54:32 +02:00
a0d39e6081
chore: use long variable name 2023-05-24 15:54:32 +02:00
a803bc637e
chore: rename alias 2023-05-24 15:54:32 +02:00
d4e452545a
chore: remove unused class 2023-05-24 15:54:32 +02:00
9d73ac661f
fix: remove leftover suspense 2023-05-24 15:54:32 +02:00
55e912221b
chore: use klona to clone project objet 2023-05-24 15:54:32 +02:00
d85be26761
fix: passing readonly projects data to navigation 2023-05-24 15:54:32 +02:00
ac78e85e17
chore: move loader class 2023-05-24 15:54:32 +02:00
131022da42
chore: export favorite projects from store 2023-05-24 15:54:32 +02:00
336db56316
chore: remove unnecessary map 2023-05-24 15:54:32 +02:00
b5d9afd0f7
chore: export not archived root projects 2023-05-24 15:54:31 +02:00
0be83db40f
fix: show favorite on hover 2023-05-24 15:54:31 +02:00
03f4d0b8bc
fix: don't show > for top-level projects 2023-05-24 15:54:31 +02:00
ee8f80cc70
feat: allow selecting a parent project when editing a project 2023-05-24 15:54:31 +02:00
ce887c38f3
feat: allow selecting a parent project when creating a project 2023-05-24 15:54:31 +02:00
799c0be830
feat: allow selecting a parent project when duplicating a project 2023-05-24 15:54:31 +02:00
760efa854d
feat: don't handle child projects and instead only save the ids 2023-05-24 15:54:31 +02:00
26bec05174
fix: make computed side-effect free 2023-05-24 15:54:31 +02:00
c32a198a34
chore: refactor get parents project and move to projects store 2023-05-24 15:54:31 +02:00
6a8c656dbb
feat: show all parent projects in project search 2023-05-24 15:54:31 +02:00
63ba2982c9
feat: show all parent projects in task detail view 2023-05-24 15:54:30 +02:00
9d9fb959d8
fix: add await 2023-05-24 15:54:30 +02:00
8ed201c83f
fix(filters): load projects after updating a filter 2023-05-24 15:54:30 +02:00
bfb40c9166
fix(filters): load projects after deleting a filter 2023-05-24 15:54:30 +02:00
5ea450844c
fix(filters): load projects after creating a filter 2023-05-24 15:54:30 +02:00
36bec9e64f
chore(task): move toggleFavorite to store 2023-05-24 15:54:30 +02:00
a95014dc5d
feat(projects): move hasProjects check to store 2023-05-24 15:54:30 +02:00
2579c33ee1
feat: wrap projects navigation in a <Suspense> so that we can use top level await 2023-05-24 15:54:30 +02:00
6f1baa3219
chore: use long variable name 2023-05-24 15:54:30 +02:00
4dee3a90e9
chore: rename archived message key 2023-05-24 15:54:30 +02:00
326b6eda6f
fix: use correct shortcut to open projects overview 2023-05-24 15:54:30 +02:00
85e882cc59
fix: simplify sort 2023-05-24 15:54:29 +02:00
e4379f0a22
chore: export projects as array directly from projects store 2023-05-24 15:54:29 +02:00
2bb7ff1803
chore: rename prop 2023-05-24 15:54:29 +02:00
5dd6e9a077
feat(tests): add project tests derived from old namespace tests 2023-05-24 15:54:29 +02:00
f7629c28f4
fix(projects): make sure the project hierarchy is properly updated when moving projects between parents 2023-05-24 15:54:29 +02:00
be2a38b48e
feat(navigation): show favorite projects on top 2023-05-24 15:54:29 +02:00
3ba5f531bb
fix(navigation): make sure updating a project's state works for sub projects as well. 2023-05-24 15:54:29 +02:00
10f1e69bc3
fix(navigation): make marking a project as favorite work 2023-05-24 15:54:29 +02:00
fd7d90b017
fix(navigation): make sure the Favorites project shows up when marking or unmarking a task as favorite 2023-05-24 15:54:29 +02:00
d898316918
fix(navigation): favorites project 2023-05-24 15:54:29 +02:00
a6f524e7af
fix(task detail view): make project display show the task's project 2023-05-24 15:54:29 +02:00
5e65814b8c
fix: make check if projects are available work again 2023-05-24 15:54:28 +02:00
aaa9d553d0
fix: cleanup unused translation strings 2023-05-24 15:54:28 +02:00
5685890493
fix: make tests work again 2023-05-24 15:54:28 +02:00
2e336150e0
chore: cleanup namespace leftovers 2023-05-24 15:54:28 +02:00
749dcdcd70
fix(navigation): hide left ul border 2023-05-24 15:54:28 +02:00
ab94343d07
feat(navigation): make dragging a project under another project work 2023-05-24 15:54:28 +02:00
fa71cec5c8
feat(navigation): allow dragging a project out from its parent project 2023-05-24 15:54:28 +02:00
c6f3829387
feat(navigation): make dragging a project to a parent work 2023-05-24 15:54:28 +02:00
7171b63947
fix(navigation): hover state of other menu items 2023-05-24 15:54:28 +02:00
06c4c0d921
feat(navigation): add hiding child projects 2023-05-24 15:54:28 +02:00
f2ca2d850d
feat: translate inbox project title 2023-05-24 15:54:28 +02:00
638d187a24
chore: format 2023-05-24 15:54:28 +02:00
b188d40d3c
feat(navigation): correctly show child projects 2023-05-24 15:54:27 +02:00
3ad948305f
fix(navigation): make the styles work again 2023-05-24 15:54:27 +02:00
be1f1d94c9
fix(navigation): watcher 2023-05-24 15:54:27 +02:00
06e8cdb9d2
feat: rebuild main navigation so that it works recursively with projects 2023-05-24 15:54:27 +02:00
10311b79df
fix: remove namespace routes 2023-05-24 15:54:27 +02:00
ad2690b21c
fix: remove namespace store reference 2023-05-24 15:54:27 +02:00
1bd17d6e50
feat: remove all namespace leftovers 2023-05-24 15:54:27 +02:00
a5e710bfe5
fix: route to create new project 2023-05-24 15:54:27 +02:00
e1bdabc8d6
feat: move namespaces list to projects list 2023-05-24 15:54:27 +02:00
c6ef99dde2 chore(deps): update dependency cypress to v12.13.0 2023-05-24 00:04:34 +00:00
49b508a783 fix(deps): update sentry-javascript monorepo to v7.53.0 2023-05-23 15:50:03 +00:00
52128925f5 chore(deps): update typescript-eslint monorepo to v5.59.7 2023-05-23 15:49:52 +00:00
cf0c7f9d08 chore(deps): update dependency rollup to v3.23.0 2023-05-23 15:49:28 +00:00
57d5140301 chore(deps): update dependency @types/node to v18.16.14 2023-05-23 12:04:31 +00:00
dbd9106621 chore(deps): update dependency postcss-preset-env to v8.4.1 2023-05-23 11:17:17 +00:00
e4fef0e88e chore(deps): update dependency eslint to v8.41.0 2023-05-23 11:16:31 +00:00
7ef0074ecc chore(deps): update dependency caniuse-lite to v1.0.30001489 2023-05-23 11:16:09 +00:00
17c35f6d42 chore(deps): update dependency happy-dom to v9.20.1 2023-05-23 11:15:58 +00:00
3a0844adba chore(deps): update dependency @rushstack/eslint-patch to v1.3.0 2023-05-23 11:15:13 +00:00
5b5b9022e0 chore(deps): update dependency vite-plugin-pwa to v0.15.0 2023-05-23 01:09:13 +00:00
Frederick [Bot]
0b0bd7dff6 [skip ci] Updated translations via Crowdin 2023-05-23 00:29:34 +00:00
079e3782d1 chore(deps): update dependency rollup to v3.22.0 2023-05-19 10:30:44 +00:00
a0ae9ae54c chore(deps): update dependency @types/marked to v5 2023-05-19 09:06:04 +00:00
a1b9a0ec4c fix(deps): update dependency @kyvg/vue3-notification to v2.9.1 2023-05-19 08:07:44 +00:00
1fa690670d fix(deps): update dependency vue-router to v4.2.1 2023-05-19 08:06:23 +00:00
3f0a87a5ec chore(deps): update dependency vite to v4.3.8 2023-05-19 08:05:46 +00:00
caf02f78bf chore(deps): update dependency @types/marked to v4.3.1 2023-05-18 23:05:09 +00:00
9b9fd14d27 chore(deps): update dependency vitest to v0.31.1 2023-05-17 15:05:09 +00:00
7f77efbfab chore(deps): update dependency @types/node to v18.16.11 2023-05-16 20:04:54 +00:00
53967d20cc chore(deps): update dependency vite to v4.3.7 2023-05-16 17:05:08 +00:00
ef3411f39a chore(deps): update dependency @types/node to v18.16.10 2023-05-16 11:04:50 +00:00
66e63f1363 chore(deps): update typescript-eslint monorepo to v5.59.6 2023-05-16 10:46:23 +00:00
2fe21f6b28 fix(deps): update sentry-javascript monorepo to v7.52.1 2023-05-16 10:46:09 +00:00
67df372636 chore(deps): update dependency eslint-plugin-vue to v9.13.0 2023-05-16 10:45:49 +00:00
df80e9da23 chore(deps): update dependency rollup to v3.21.8 2023-05-16 08:04:56 +00:00
13ab2efd0f chore(deps): update dependency @faker-js/faker to v8.0.1 2023-05-15 17:04:44 +00:00
0ffe96cf59 chore(deps): update dependency vite to v4.3.6 2023-05-15 16:04:58 +00:00
1808d0971d fix(deps): update sentry-javascript monorepo to v7.52.0 2023-05-15 14:05:00 +00:00
ec83a28d78 chore(deps): update pnpm to v8.5.1 2023-05-15 10:33:06 +00:00
f0320b3a58 chore(deps): update dependency caniuse-lite to v1.0.30001487 2023-05-15 10:30:51 +00:00
d93a1a4f4f chore(deps): update dependency happy-dom to v9.18.3 2023-05-15 00:05:29 +00:00
a9f9ddf6b9 chore(deps): update dependency @types/node to v18.16.9 2023-05-13 15:05:04 +00:00
6a8fe35fcf chore(deps): update dependency rollup to v3.21.7 2023-05-13 14:48:00 +00:00
94661e9e09 chore(deps): update dependency vue-tsc to v1.6.5 2023-05-13 08:04:55 +00:00
318f63d098 chore(deps): update dependency esbuild to v0.17.19 2023-05-13 01:04:45 +00:00
e2c9e83c2a chore(deps): update dependency @vitejs/plugin-vue to v4.2.3 2023-05-12 11:04:45 +00:00
cd434a0e3e chore(deps): update dependency @types/node to v18.16.8 2023-05-12 07:06:52 +00:00
9f293af804 chore(deps): update dependency @vue/tsconfig to v0.4.0 2023-05-12 07:06:24 +00:00
b175e00cfe chore(deps): update dependency @tsconfig/node18 to v2.0.1 2023-05-12 05:04:41 +00:00
Frederick [Bot]
19dd82d62a [skip ci] Updated translations via Crowdin 2023-05-12 00:29:44 +00:00
b3ddc9465a chore(deps): update dependency @vitejs/plugin-vue to v4.2.2 2023-05-11 19:57:40 +00:00
6b38f17d32 fix(deps): update dependency vue-router to v4.2.0 2023-05-11 19:57:25 +00:00
86449d4912 fix(deps): update dependency marked to v5.0.2 2023-05-11 19:57:07 +00:00
145d756251 chore(deps): update dependency @faker-js/faker to v8 2023-05-11 18:05:10 +00:00
838a11a2f6 chore(deps): update dependency eslint-plugin-vue to v9.12.0 2023-05-10 14:04:39 +00:00
3bfd3210b0 chore(deps): update dependency @types/node to v18.16.7 2023-05-10 09:46:06 +00:00
e933bfa99e fix(deps): update sentry-javascript monorepo to v7.51.2 2023-05-10 09:14:43 +00:00
f6a37a54d0 fix(deps): update dependency pinia to v2.0.36 2023-05-10 09:14:33 +00:00
e00c9bb1af feat: add hotkeys for priority, delete and favorite on the TaskDetailView (#3400)
Reviewed-on: vikunja/frontend#3400
Reviewed-by: konrad <k@knt.li>
Co-authored-by: primeapple <toni.mueller.web@mailbox.org>
Co-committed-by: primeapple <toni.mueller.web@mailbox.org>
2023-05-10 09:14:07 +00:00
018707c3d5
fix(ci): disable puppeteer chrome download 2023-05-10 10:42:44 +02:00
386727f6c5 chore(deps): update dependency @types/node to v18.16.6 2023-05-10 08:09:35 +00:00
a29ce36d6c chore(deps): update typescript-eslint monorepo to v5.59.5 2023-05-10 07:05:09 +00:00
7aed16bd6f chore(deps): update dependency rollup to v3.21.6 2023-05-10 06:03:37 +00:00
b1f3ca6e59 chore(deps): update pnpm to v8.5.0 2023-05-10 06:03:09 +00:00
4c0b8a06c5 chore(deps): update dependency cypress to v12.12.0 2023-05-09 23:05:25 +00:00
60647c50ac chore(deps): update dependency caniuse-lite to v1.0.30001486 2023-05-08 07:11:25 +00:00
59eaf1849e chore(deps): update dependency happy-dom to v9.10.9 2023-05-08 00:05:41 +00:00
fb57339050 chore(deps): update dependency eslint-plugin-vue to v9.11.1 2023-05-07 17:04:47 +00:00
f9831a6ad8 fix(deps): update dependency marked to v5.0.1 2023-05-06 21:04:51 +00:00
f25c67f80a chore(deps): update dependency eslint to v8.40.0 2023-05-06 15:26:02 +00:00
d3b0b97192 chore(deps): update dependency @types/node to v18.16.5 2023-05-06 15:25:42 +00:00
fa3be219a8 fix(deps): update dependency dompurify to v3.0.3 2023-05-06 13:04:56 +00:00
c22702d911 chore(deps): update dependency @types/node to v18.16.4 2023-05-05 14:04:43 +00:00
b25c5ff547 chore(deps): update dependency vite to v4.3.5 2023-05-05 11:04:43 +00:00
2e0a097806 chore(deps): update dependency rollup to v3.21.5 2023-05-05 05:04:46 +00:00
c2083f7924 fix(deps): update sentry-javascript monorepo to v7.51.0 2023-05-04 16:05:24 +00:00
8923261e5b fix(deps): update dependency ufo to v1.1.2 2023-05-04 07:35:00 +00:00
5391df56b0 chore(deps): update dependency vue-tsc to v1.6.4 2023-05-04 01:04:54 +00:00
d2b1f5780e chore(deps): update dependency vitest to v0.31.0 2023-05-03 19:52:49 +00:00
1717e968e1 chore(deps): update dependency rollup to v3.21.4 2023-05-03 19:04:31 +00:00
2c29bb3971 chore(deps): update pnpm to v8.4.0 2023-05-02 14:04:09 +00:00
37b8218a0a chore(deps): update node.js to v20 (#3411)
Reviewed-on: vikunja/frontend#3411
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-05-02 13:35:04 +00:00
ca7bbb5b91 chore(ci): remove netlify dependency (#3459)
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#3459
2023-05-02 10:10:14 +00:00
2f3c008d2b chore(deps): update dependency vite to v4.3.4 2023-05-02 08:04:40 +00:00
c2722b7c3d fix(deps): update dependency @vueuse/core to v10.1.2 2023-05-02 07:18:12 +00:00
312abd907f chore(deps): update dependency rollup to v3.21.3 2023-05-02 07:18:02 +00:00
1b73c1ed64 chore(deps): update dependency vue-tsc to v1.6.3 2023-05-02 07:17:43 +00:00
d442d6653b fix(deps): update dependency marked to v5 2023-05-02 05:05:40 +00:00
758b8d6e2b chore(deps): update typescript-eslint monorepo to v5.59.2 2023-05-01 18:04:39 +00:00
416fd2e2a7 chore(deps): update dependency @types/marked to v4.3.0 2023-05-01 16:45:51 +00:00
15a8335f1a chore(deps): update dependency vue-tsc to v1.6.2 2023-05-01 14:04:42 +00:00
c689583669 chore(deps): update dependency netlify-cli to v14.3.1 2023-05-01 10:44:11 +00:00
7a43a7acc9 chore(deps): update dependency happy-dom to v9.10.1 2023-05-01 00:04:51 +00:00
8843418161 fix(deps): update dependency date-fns to v2.30.0 2023-04-30 06:57:42 +00:00
7c1eab13ae chore(deps): update dependency rollup to v3.21.2 2023-04-30 06:04:44 +00:00
5a69036da7 fix(deps): update dependency highlight.js to v11.8.0 2023-04-29 14:04:50 +00:00
2ad3458873 chore(deps): update dependency @types/node to v18.16.3 2023-04-29 07:04:40 +00:00
eb464343e8 chore(deps): update dependency rollup to v3.21.1 2023-04-29 06:04:42 +00:00
2f18d0cbad
fix(docker): don't set nginx worker rlimit
Resolves https://community.vikunja.io/t/helm-chart-frontend-pod-does-not-start-because-of-permission-issues-in-raspberry-pie-4-k3s/1286
2023-04-28 10:31:15 +02:00
6cd463a514 chore(deps): pin dependency @tsconfig/node18 to 2.0.0 2023-04-28 08:04:35 +00:00
05b70632c5
fix: tsconfig as per https://github.com/vuejs/tsconfig#configuration-for-node-environments 2023-04-28 09:30:45 +02:00
ca9fe6ff21
fix: tsconfig as per https://github.com/vuejs/tsconfig#configuration-for-node-environments 2023-04-28 09:16:54 +02:00
e5754300de chore(deps): update dependency @vue/tsconfig to v0.3.2 2023-04-28 07:04:31 +00:00
65134048bf chore(deps): update dependency @vitejs/plugin-vue to v4.2.1 2023-04-28 06:04:35 +00:00
8339a99747 chore(deps): update dependency @types/node to v18.16.2 2023-04-28 05:17:36 +00:00
3e1ae41e70 fix(deps): update dependency axios to v1.4.0 2023-04-28 00:04:55 +00:00
f757ba3441 chore(deps): update dependency vue-tsc to v1.6.1 2023-04-27 19:04:37 +00:00
6499c9cb5b fix(deps): update sentry-javascript monorepo to v7.50.0 2023-04-27 09:39:32 +00:00
28e5440d8b fix(deps): update dependency codemirror to v5.65.13 2023-04-27 09:04:38 +00:00
fef8c4d0f4 chore(deps): update dependency vue-tsc to v1.6.0 2023-04-26 21:06:27 +00:00
99e5059c64 chore(deps): update dependency cypress to v12.11.0 2023-04-26 18:04:42 +00:00
5df4f39d95 chore(deps): update dependency vite to v4.3.3 2023-04-26 15:04:55 +00:00
7ec5a70ccb chore(deps): update dependency sass to v1.62.1 2023-04-26 10:05:07 +00:00
72fcab6e78 chore(deps): update dependency @types/node to v18.16.1 2023-04-26 09:04:23 +00:00
292c90425e
fix: lint 2023-04-26 10:19:49 +02:00
b80f070431
feat: show avatar and full name in team overview 2023-04-25 18:32:36 +02:00
03936c0403 chore(deps): update dependency vite to v4.3.2 2023-04-25 16:04:40 +00:00
62825d2e64
fix: add spacing between checkbox and title of related task
Related to https://github.com/go-vikunja/frontend/issues/111
2023-04-25 17:33:47 +02:00
5cd5caef45 chore(deps): update dependency @vue/eslint-config-typescript to v11.0.3 2023-04-25 15:17:58 +00:00
798e8b529d chore(deps): update dependency @vitejs/plugin-legacy to v4.0.3 2023-04-25 15:04:36 +00:00
0e3766c5a5 chore(deps): update typescript-eslint monorepo to v5.59.1 2023-04-25 13:05:07 +00:00
90207a4427 chore(deps): update dependency @vitejs/plugin-vue to v4.2.0 2023-04-25 10:05:12 +00:00
60993a886a chore(deps): update dependency caniuse-lite to v1.0.30001481 2023-04-24 06:16:59 +00:00
a6b42f9181 chore(deps): update dependency happy-dom to v9.9.2 2023-04-24 06:16:43 +00:00
98fbd7c53c chore(deps): update dependency netlify-cli to v14 2023-04-24 01:05:19 +00:00
8d533f50e8 chore(deps): update dependency rollup to v3.21.0 2023-04-23 20:04:46 +00:00
707459ec77 chore(deps): update dependency @types/node to v18.16.0 2023-04-23 06:04:51 +00:00
faf7db649e chore(deps): update dependency esbuild to v0.17.18 2023-04-22 21:04:36 +00:00
202e71be48 chore(deps): update dependency vue-tsc to v1.4.4 2023-04-22 20:04:41 +00:00
d6e8b418d3 chore(deps): update dependency vue-tsc to v1.4.3 2023-04-22 16:04:50 +00:00
a9f41f6114 chore(deps): update dependency eslint to v8.39.0 2023-04-22 15:45:11 +00:00
f6f0d52518 fix(deps): update dependency @vueuse/core to v10.1.0 2023-04-22 10:04:50 +00:00
ccb9be42c2 chore(deps): update dependency vue-tsc to v1.4.2 2023-04-21 11:04:30 +00:00
179009bfe3 chore(deps): update dependency @types/node to v18.15.13 2023-04-21 07:04:39 +00:00
8c2bd94a9f chore(deps): update dependency vue-tsc to v1.4.1 2023-04-21 06:13:48 +00:00
7757166d75 chore(deps): update dependency rollup to v3.20.7 2023-04-21 05:04:36 +00:00
7f03002972 chore(deps): update dependency vite to v4.3.1 2023-04-20 20:04:26 +00:00
8555006d9e chore(deps): update dependency vue-tsc to v1.4.0 2023-04-20 18:04:40 +00:00
713ad64658 fix(deps): update sentry-javascript monorepo to v7.49.0 2023-04-20 16:04:46 +00:00
0713d481e3 fix(deps): update dependency pinia to v2.0.35 2023-04-20 11:04:28 +00:00
ace0cf3588 chore(deps): update dependency vite to v4.3.0 2023-04-20 09:04:31 +00:00
bba3bbfe89 chore(deps): update dependency @types/dompurify to v3.0.2 2023-04-20 08:04:42 +00:00
754afc5496 chore(deps): update dependency @types/node to v18.15.12 2023-04-20 00:05:04 +00:00
f1e8892ab5 chore(deps): update dependency postcss to v8.4.23 2023-04-19 20:32:32 +00:00
c11e192c4e fix(deps): update dependency axios to v1.3.6 2023-04-19 20:05:18 +00:00
e9c704075d chore(deps): update pnpm to v8.3.1 2023-04-19 13:04:16 +00:00
35edcb5672 chore(deps): update dependency rollup to v3.20.6 2023-04-18 12:05:05 +00:00
4695798176 chore(deps): update dependency vite to v4.2.2 2023-04-18 10:05:15 +00:00
7a323fd170 chore(deps): update dependency rollup to v3.20.5 2023-04-18 06:04:54 +00:00
1d6e4b6e32 chore(deps): update pnpm to v8.3.0 2023-04-18 01:04:56 +00:00
5524aa7998 chore(deps): update dependency cypress to v12.10.0 2023-04-17 19:04:51 +00:00
15ff2008e3 chore(deps): update typescript-eslint monorepo to v5.59.0 2023-04-17 18:05:11 +00:00
9bc2e6e165 chore(deps): update dependency postcss-preset-env to v8.3.2 2023-04-17 07:04:46 +00:00
344001856c chore(deps): update dependency rollup to v3.20.4 2023-04-17 06:04:41 +00:00
ad261fcc2f chore(deps): update dependency esbuild to v0.17.17 2023-04-17 05:29:14 +00:00
5142a0ae72 chore(deps): update dependency caniuse-lite to v1.0.30001479 2023-04-17 05:27:04 +00:00
6d195f96c9 chore(deps): update dependency happy-dom to v9.7.1 2023-04-17 01:05:56 +00:00
Frederick [Bot]
1917b217a8 [skip ci] Updated translations via Crowdin 2023-04-17 00:25:34 +00:00
1f6b01bc73 chore(deps): update dependency rollup to v3.20.3 2023-04-16 17:19:59 +00:00
d47a16aa8e chore(deps): update dependency postcss to v8.4.22 2023-04-16 14:04:37 +00:00
c57d00a74b chore(deps): update dependency eslint-plugin-vue to v9.11.0 2023-04-15 01:04:45 +00:00
77ea7fa0ee fix(deps): update dependency @vueuse/core to v10.0.2 2023-04-14 22:04:52 +00:00
b92d780cda chore: formatting 2023-04-14 21:53:04 +00:00
f14e721caf fix: rename resolveRef 2023-04-14 21:53:04 +00:00
1ff6399112 fix(deps): update dependency @vueuse/core to v10 2023-04-14 21:53:04 +00:00
503fb8da76 fix(deps): update dependency dompurify to v3.0.2 2023-04-14 18:04:56 +00:00
f050cb7015 chore(deps): update histoire to v0.16.1 2023-04-14 11:04:40 +00:00
3670916f36 fix(deps): update sentry-javascript monorepo to v7.48.0 2023-04-14 10:04:35 +00:00
Frederick [Bot]
838a063eaa [skip ci] Updated translations via Crowdin 2023-04-14 00:26:31 +00:00
e1b16b11d6 chore(deps): update node.js to v18.16.0 2023-04-13 01:04:28 +00:00
314cbf471f feat: better vscode vitest integration 2023-04-12 15:39:49 +00:00
a416d26f7c
chore: better function naming in password components 2023-04-12 16:15:40 +02:00
795b26e1dd feat: improve datemathHelp.vue 2023-04-12 07:33:45 +00:00
14666cf9d8 chore(deps): update dependency sass to v1.62.0 2023-04-12 05:57:33 +00:00
c938f31935 chore(deps): update pnpm to v8 2023-04-11 23:05:49 +00:00
35a52ef01b
fix(quick add magic): date parsing with a date at the beginning
Resolves https://github.com/go-vikunja/frontend/issues/110
2023-04-11 18:12:08 +02:00
3b05ce3f10 chore(deps): update histoire to v0.16.0 2023-04-11 14:04:49 +00:00
aec4fd7a2d chore(deps): update dependency vitest to v0.30.1 2023-04-11 12:04:57 +00:00
2661af3a17 fix(deps): update sentry-javascript monorepo to v7.47.0 2023-04-11 12:01:30 +00:00
56f43bae3f chore(deps): update typescript-eslint monorepo to v5.58.0 2023-04-10 18:04:41 +00:00
84472d2e9c chore(deps): update dependency happy-dom to v9.1.9 2023-04-10 13:17:25 +00:00
c5afcd63b0 chore(deps): update dependency postcss-preset-env to v8.3.1 2023-04-10 12:05:14 +00:00
9bdb257814 chore(deps): update dependency caniuse-lite to v1.0.30001477 2023-04-10 11:14:22 +00:00
5ad9891b16 chore(deps): update pnpm to v7.32.0 2023-04-10 11:13:57 +00:00
7c04064917 chore(deps): update dependency vitest to v0.30.0 2023-04-10 11:13:43 +00:00
fb5383d86b chore(deps): update dependency esbuild to v0.17.16 2023-04-10 05:04:46 +00:00
68af314ec0 chore(deps): update dependency eslint to v8.38.0 2023-04-08 00:04:43 +00:00
8b1de5ce09 fix(deps): update dependency pinia to v2.0.34 2023-04-07 20:04:46 +00:00
724b6fe091 chore(deps): update dependency typescript to v5.0.4 2023-04-07 18:04:25 +00:00
6648cd30c3 chore(deps): update dependency sass to v1.61.0 2023-04-06 22:04:45 +00:00
8b90b45739
fix: make sure the unread notifications indicator is correctly positioned
Resolves vikunja/frontend#3358
2023-04-06 16:11:12 +02:00
39be67eecf fix(deps): update dependency axios to v1.3.5 2023-04-06 09:06:06 +00:00
Frederick [Bot]
750f0ddeab [skip ci] Updated translations via Crowdin 2023-04-05 00:06:16 +00:00
6a5ece2f24 chore(deps): update pnpm to v7.31.0 2023-04-04 01:04:32 +00:00
Frederick [Bot]
4ce33abfe6 [skip ci] Updated translations via Crowdin 2023-04-04 00:06:21 +00:00
5b7e1af87d chore(deps): update dependency @types/dompurify to v3.0.1 2023-04-03 20:04:51 +00:00
59c6605b14 chore(deps): update typescript-eslint monorepo to v5.57.1 2023-04-03 18:05:29 +00:00
820d598ecd fix(i18n): orderedList translationid 2023-04-03 09:48:03 +00:00
a263ec1273
fix(Expandable): spelling ⛈ 2023-04-03 11:31:39 +02:00
b68892492c chore(deps): update dependency happy-dom to v9 2023-04-03 05:18:07 +00:00
7c97695cec chore(deps): update dependency netlify-cli to v13.2.2 2023-04-03 05:17:16 +00:00
e764f34a2d chore(deps): update dependency caniuse-lite to v1.0.30001473 2023-04-03 00:05:10 +00:00
6892a28bb6 chore(deps): update dependency esbuild to v0.17.15 2023-04-01 23:04:45 +00:00
74d688b8d2 chore(deps): update dependency csstype to v3.1.2 2023-04-01 21:04:41 +00:00
ed84651046 chore(deps): update dependency postcss-preset-env to v8.3.0 2023-03-31 17:04:54 +00:00
7468ed21fa chore(deps): update dependency typescript to v5.0.3 2023-03-30 21:05:23 +00:00
d8015913c3 fix(deps): update sentry-javascript monorepo to v7.46.0 2023-03-30 14:04:41 +00:00
Frederick [Bot]
78789834f0 [skip ci] Updated translations via Crowdin 2023-03-30 00:06:17 +00:00
739fe0caa1
fix: move types to dev dependencies 2023-03-29 22:23:40 +02:00
4703f9c4d5
fix: has-pseudo-class polyfill 2023-03-29 17:22:06 +02:00
fd699ad777
fix: checkbox label size based on icon 2023-03-29 17:17:51 +02:00
0acf44778d
fix: undo further nesting of interactive items
This is really bad for UX and accessability
2023-03-29 17:17:50 +02:00
8fc254d2db
feat: abstract BaseCheckbox 2023-03-29 17:17:49 +02:00
Dominik Pschenitschni
7d3b97d422 feat: prepare for pnpm 8 (#3331)
Related: vikunja/frontend#3317

Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#3331
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-03-29 12:02:34 +00:00
4a34f245db
chore(deps): update flake 2023-03-29 13:41:52 +02:00
973ea39a64 chore(deps): update dependency eslint to v8.37.0 2023-03-29 07:56:52 +00:00
f94a65ce7a chore(deps): update dependency @types/node to v18.15.11 2023-03-28 22:05:12 +00:00
432fbbea78 chore(deps): update dependency cypress to v12.9.0 2023-03-28 19:05:20 +00:00
e483f1cd2e chore(deps): update dependency vitest to v0.29.8 2023-03-28 14:05:19 +00:00
eb34f6e136 chore(deps): update dependency postcss-preset-env to v8.2.0 2023-03-28 12:05:42 +00:00
91e9eef582 fix: use strict comparison 2023-03-28 10:49:34 +00:00
dea1789a00
feat: type i18n improvements 2023-03-28 12:35:19 +02:00
30adad5ae6 feat: mark undone if task moved from isDoneBucket (#3291)
Addresses #545 (not completely)

Reviewed-on: vikunja/frontend#3291
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Reviewed-by: konrad <k@knt.li>
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-28 10:21:19 +00:00
3ed6f939e5 chore(deps): update dependency vite-plugin-pwa to v0.14.7 2023-03-28 10:05:08 +00:00
a337d22c1f fix(deps): update font awesome to v6.4.0 2023-03-27 18:27:34 +00:00
addfcf2510 chore(deps): update typescript-eslint monorepo to v5.57.0 2023-03-27 18:05:13 +00:00
303034f02c chore(deps): update pnpm to v7.30.5 2023-03-27 14:04:54 +00:00
0fd44e9484 chore(deps): update dependency caniuse-lite to v1.0.30001470 2023-03-27 06:06:31 +00:00
04040f20ba chore(deps): update dependency netlify-cli to v13.2.1 2023-03-27 00:06:51 +00:00
6c999ad148 fix: ensure same protocol for configured api url (#3303)
Resolves https://github.com/go-vikunja/frontend/issues/109

Vikunja would save the api url with `http` instead of `https` when the frontend was accessed via https. This was fine in most cases when the server would redirect all requests made to http to the secure https variant. However, in newer Firefox versions (and soon, Chrome probably as well) the browser would not follow that redirect anymore. Hence, we need to make sure to only make api requests to the same protocol. Doing API requests from an https hosted fronted to an http hosted api would probably fail already anyway.

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#3303
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: konrad <k@knt.li>
Co-committed-by: konrad <k@knt.li>
2023-03-26 19:18:47 +00:00
cc519e6773 chore(deps): update dependency esbuild to v0.17.14 2023-03-26 03:05:27 +00:00
f9dcae4f65 chore(deps): update dependency @types/node to v18.15.10 2023-03-25 23:05:50 +00:00
ade6c2cb18 chore(deps): update dependency postcss-preset-env to v8.1.0 2023-03-25 09:05:19 +00:00
4566b62a93 chore(deps): update dependency @types/node to v18.15.9 2023-03-25 08:05:10 +00:00
37d3ef24d2 chore(deps): update dependency @types/node to v18.15.8 2023-03-25 00:05:22 +00:00
71265769ce fix: update logo change only every hour 2023-03-24 23:30:26 +00:00
a13c16ca03 fix: use time constant 2023-03-24 23:30:26 +00:00
a33fb72ef8 fix: use onActivated 2023-03-24 23:30:26 +00:00
c5776264c0 fix: only update daytime salutation when switching to home view 2023-03-24 23:30:26 +00:00
078d8b39a9 fix(gantt): only update today value when changing to the gantt chart view 2023-03-24 23:30:26 +00:00
b77c7c2f45 fix: add interval to uses of useNow so that it uses less resources 2023-03-24 23:30:26 +00:00
e369473dd0 chore(deps): update dependency esbuild to v0.17.13 2023-03-24 19:05:04 +00:00
70501f9da1 chore(deps): update pnpm to v7.30.3 2023-03-24 14:04:24 +00:00
9bb7019b09 chore(deps): update dependency rollup to v3.20.2 2023-03-24 13:21:24 +00:00
df4fe7a644 fix(deps): update sentry-javascript monorepo to v7.45.0 2023-03-24 10:06:38 +00:00
2f009d0b27 chore(deps): update dependency @types/node to v18.15.7 2023-03-24 09:05:25 +00:00
70d7def7d7 chore(deps): update dependency sass to v1.60.0 2023-03-24 07:11:01 +00:00
0033407f96 chore(deps): update pnpm to v7.30.2 2023-03-24 02:04:25 +00:00
b10a2329ca chore(deps): update dependency @types/node to v18.15.6 2023-03-23 22:05:08 +00:00
6870db4a72 fix: list view: don't sort tasks after marking one "done" (#3285)
See https://community.vikunja.io/t/list-view-tasks-being-sorted-after-marking-one-done-throws-you-off/1257/2

Reviewed-on: vikunja/frontend#3285
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-23 20:50:17 +00:00
3643ffe0d0 fix: improve the "pop" sound a bit
Trim the (noisy) silence (especially at the start, because
that delay from making a change and playing a sound is a little
annoying), with fade-in and fade-out

Edited with Audacity

File(s) history:
7f5140bbb4
955bd73feccefe8e8ca54d946d6223b43a0836ed
2023-03-23 23:38:52 +04:00
02971f6ff9 chore(deps): update dependency vite-plugin-pwa to v0.14.6 2023-03-23 12:05:31 +00:00
7d3c34b004 chore(deps): update pnpm to v7.30.1 2023-03-23 11:48:32 +00:00
f3ea6fd4dc chore(deps): update dependency eslint-plugin-vue to v9.10.0 2023-03-23 11:05:38 +00:00
bed6b81a58 chore(deps): update dependency rollup to v3.20.1 2023-03-23 09:05:02 +00:00
f9bf9139b8 fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.10.0 2023-03-22 18:05:17 +00:00
96e2c81b7e
fix: ignore ts deprecations for now
see https://github.com/vuejs/tsconfig/issues/6
2023-03-22 15:47:21 +01:00
e62c00a187 chore(deps): update dependency typescript to v5 2023-03-22 13:05:25 +00:00
611419888a chore(deps): update dependency vite-plugin-pwa to v0.14.5 2023-03-22 12:05:18 +00:00
5cc7e282bf fix(deps): update dependency marked to v4.3.0 2023-03-22 06:05:26 +00:00
de0b71103c chore(deps): update dependency @vue/test-utils to v2.3.2 2023-03-21 16:05:20 +00:00
537e9e8044 fix(deps): update sentry-javascript monorepo to v7.44.2 2023-03-21 11:05:19 +00:00
ac95c1fdc8 chore(deps): update dependency @types/node to v18.15.5 2023-03-20 22:44:25 +00:00
b36da9e4d9 chore(deps): update dependency @cypress/vite-dev-server to v5.0.5 2023-03-20 22:05:07 +00:00
e11ee3c136 chore(deps): update dependency vitest to v0.29.7 2023-03-20 21:05:16 +00:00
887719ea24 chore(deps): update dependency @cypress/vue to v5.0.5 2023-03-20 19:08:09 +00:00
14f1c3b26e fix(deps): update sentry-javascript monorepo to v7.44.1 2023-03-20 19:04:28 +00:00
2142729d38 chore(deps): update typescript-eslint monorepo to v5.56.0 2023-03-20 18:06:42 +00:00
9dcc2baae2 fix(deps): update sentry-javascript monorepo to v7.44.0 2023-03-20 16:50:06 +00:00
37c88d2974 chore(deps): update dependency vitest to v0.29.5 2023-03-20 15:05:22 +00:00
36fd0deec4 chore(deps): update dependency vitest to v0.29.4 2023-03-20 14:05:04 +00:00
4a4438d431 chore(deps): update dependency vite to v4.2.1 2023-03-20 12:05:22 +00:00
28a6745346 fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.9.3 2023-03-20 10:05:21 +00:00
9ae0470879 chore(deps): update pnpm to v7.30.0 2023-03-20 08:10:09 +00:00
927aed1161 chore(deps): update dependency netlify-cli to v13.1.6 2023-03-20 08:09:18 +00:00
7f3d7a656d chore(deps): update dependency caniuse-lite to v1.0.30001468 2023-03-20 08:08:31 +00:00
040a8ce095 chore(deps): update dependency rollup to v3.20.0 2023-03-20 07:05:16 +00:00
Frederick [Bot]
8974939bf2 [skip ci] Updated translations via Crowdin 2023-03-19 00:05:55 +00:00
Dominik Pschenitschni
846de369f2 chore(parseSubtasksViaIndention): fix comment (#3259)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#3259
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-03-18 07:41:36 +00:00
Frederick [Bot]
4d865af423 [skip ci] Updated translations via Crowdin 2023-03-18 00:06:08 +00:00
62ad01fc8f chore(deps): update dependency esbuild to v0.17.12 2023-03-17 07:05:23 +00:00
da0164b97d chore(deps): update histoire to v0.15.9 2023-03-16 23:05:16 +00:00
fc8711d6d8
fix: rename list to project for parsing subtasks via indention 2023-03-16 19:25:04 +01:00
03cef1f831 chore(deps): update dependency @vitejs/plugin-vue to v4.1.0 2023-03-16 15:05:00 +00:00
ee4974a494 fix: style: "favorite" button being shown on projects without hovering 2023-03-16 14:56:32 +00:00
bfbfd6a421 chore: update JSDoc example 2023-03-16 14:56:32 +00:00
49954abbbe chore(deps): update dependency vite to v4.2.0 2023-03-16 11:06:23 +00:00
2f618512cb chore(deps): update dependency @vitejs/plugin-legacy to v4.0.2 2023-03-16 09:05:39 +00:00
Frederick [Bot]
0086ebed0d [skip ci] Updated translations via Crowdin 2023-03-16 00:06:15 +00:00
1523ed9a47 chore(deps): update dependency cypress to v12.8.1 2023-03-15 22:03:55 +00:00
79c7cbedcc chore(deps): update dependency vitest to v0.29.3 2023-03-15 21:06:10 +00:00
3e128f3966 chore(deps): update pnpm to v7.29.3 2023-03-15 11:16:41 +00:00
fb45483ffc fix(deps): update dependency vue-flatpickr-component to v11.0.3 2023-03-15 10:05:24 +00:00
a9bc7d7a38 fix(deps): update dependency @types/sortablejs to v1.15.1 2023-03-15 05:05:35 +00:00
78f032d678 chore(deps): update dependency sass to v1.59.3 2023-03-14 22:05:23 +00:00
d73b71a097 fix: SortBy type import 2023-03-14 21:46:42 +00:00
2bdc6155d7 chore(deps): update dependency cypress to v12.8.0 2023-03-14 20:34:59 +00:00
f60cebf42c
fix: force usage of @types for flexsearch instead of integrated types 2023-03-14 17:06:30 +01:00
2e4c6673d4
fix(deps): update dependency flexsearch to v0.7.31 2023-03-14 17:06:30 +01:00
6e3d64d6ef fix(tests): make sure the task is created with a bucket 2023-03-14 14:04:23 +00:00
2deb66855b fix(ci): always pull latest unstable api image for testing 2023-03-14 14:04:23 +00:00
a64c0c19e5 fix: make sure redirects to a saved view work as intended 2023-03-14 14:04:23 +00:00
24b4576c00 fix(tests): wait for request instead of fixed time 2023-03-14 14:04:23 +00:00
34ad889d90 fix(link share): redirect to list view after authenticating 2023-03-14 14:04:23 +00:00
af523cfcd7 feat: add redirect for old list routes 2023-03-14 14:04:23 +00:00
842f204123 fix: improve projectView storing and add migration 2023-03-14 14:04:23 +00:00
9162002e55 fix: spacing 2023-03-14 14:04:23 +00:00
985f998a82 fix: wording 2023-03-14 14:04:23 +00:00
b93639e14e fix: rebase readd CustomTransition 2023-03-14 14:04:23 +00:00
a4be973e29 feat: improve variable naming for ProjectCardGrid 2023-03-14 14:04:23 +00:00
060a573fe9 fix: switching to view type now 2023-03-14 14:04:23 +00:00
7c43b7385d fix comment 2023-03-14 14:04:23 +00:00
befa6f27bb feat: rename list to project everywhere
fix: project table view

fix: e2e tests

fix: typo in readme

fix: list view route

fix: don't wait until background is loaded for list to show

fix: rename component imports

fix: lint

fix: parse task text

fix: use list card grid

fix: use correct class names

fix: i18n keys

fix: load project

fix: task overview

fix: list view spacing

fix: find project

fix: setLoading when updating a project

fix: loading saved filter

fix: project store loading

fix: color picker import

fix: cypress tests

feat: migrate old list settings

chore: add const for project settings

fix: wrong projecten rename from lists

chore: rename unused variable

fix: editor list

fix: shortcut list class name

fix: pagination list class name

fix: notifications list class name

fix: list view variable name

chore: clarify comment

fix: i18n keys

fix: router imports

fix: comment

chore: remove debugging leftover

fix: remove duplicate variables

fix: change comment

fix: list view variable name

fix: list view css class name

fix: list item property name

fix: name update tasks function correctly

fix: update comment

fix: project create route

fix: list view class names

fix: list view component name

fix: result list class name

fix: animation class list name

fix: change debug log

fix: revert a few navigation changes

fix: use @ for imports of all views

fix: rename link share list class

fix: remove unused css class

fix: dynamically import project components again
2023-03-14 14:04:23 +00:00
b9d3b5c756 feat: rename files with list to project 2023-03-14 14:04:23 +00:00
ee732684bc chore(deps): update dependency @types/node to v18.15.3 2023-03-14 07:05:05 +00:00
360b530dd5 chore(deps): update dependency @types/dompurify to v3 2023-03-13 21:05:38 +00:00
713c3a1a08 chore(deps): update dependency @types/node to v18.15.2 2023-03-13 19:05:09 +00:00
81b1e4035d chore(deps): update typescript-eslint monorepo to v5.55.0 2023-03-13 18:05:20 +00:00
2cde9341d4 fix(deps): update sentry-javascript monorepo to v7.43.0 2023-03-13 16:06:32 +00:00
cdf0690da6 fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.9.2 2023-03-13 10:17:16 +00:00
80335e7b95 chore(deps): update dependency netlify-cli to v13.1.2 2023-03-13 09:05:32 +00:00
dbc2de14c9 chore(deps): update dependency @types/node to v18.15.1 2023-03-13 08:14:47 +00:00
c0f711d27f chore(deps): update dependency caniuse-lite to v1.0.30001465 2023-03-13 07:04:54 +00:00
df24522490
chore: 0.20.5 release preperations 2023-03-12 10:23:07 +01:00
6cf2e574bf
fix(docker): revert unprivileged user
nginx runs the init process as root so that it can bind to port 80. All worker processes run as an unprivileged user and thus the attack surface is minimal.
The previous solution didn't change the user id of the user running Vikunja and thus didn't have an effect anyway.

Related to #3228
2023-03-11 21:56:47 +01:00
e7b89ae44f
fix(docker): add cap_net_bind to the nginx binary in the docker container 2023-03-11 21:16:31 +01:00
72a1aaa654 chore(deps): update dependency eslint to v8.36.0 2023-03-11 06:04:52 +00:00
c70c3b6080 chore(deps): update dependency sass to v1.59.2 2023-03-11 02:05:52 +00:00
401f2cdd7e
chore: 0.20.4 release preperations 2023-03-10 14:51:04 +01:00
013472e899 fix(i18n): load language files before doing anything else (#3218)
Resolves #3214

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#3218
2023-03-10 13:46:23 +00:00
e9d48c442d chore(deps): update dependency rollup to v3.19.1 2023-03-10 13:05:34 +00:00
6837038922 chore(deps): update dependency autoprefixer to v10.4.14 2023-03-10 07:05:55 +00:00
6cf7c75954 chore(deps): update dependency @types/node to v18.15.0 2023-03-10 01:06:32 +00:00
Frederick [Bot]
52d6677d93 [skip ci] Updated translations via Crowdin 2023-03-10 00:06:22 +00:00
f8f8c8ac6e chore(deps): update dependency vite-plugin-inject-preload to v1.3.1 2023-03-09 20:53:21 +00:00
97bd5d77b6 chore(deps): update dependency rollup to v3.19.0 2023-03-09 20:05:23 +00:00
5278bcbac2 fix(deps): update sentry-javascript monorepo to v7.42.0 2023-03-09 14:05:28 +00:00
194fef0dab fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.9.1 2023-03-09 11:42:49 +00:00
97b6ba06dd chore(deps): update dependency @vue/test-utils to v2.3.1 2023-03-09 05:04:25 +00:00
Frederick [Bot]
559cfde8da [skip ci] Updated translations via Crowdin 2023-03-09 00:06:07 +00:00
9db3aedde9 chore: remove an unused duplicate key
Introduced in 172d353df, feels like it was by error
2023-03-08 16:06:56 +00:00
0eb78e32f9 chore: improve @/message action type (#3209)
Reviewed-on: vikunja/frontend#3209
Reviewed-by: konrad <k@knt.li>
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-08 09:51:55 +00:00
b4dd23b85d fix: i18ze a string (#3210)
Reviewed-on: vikunja/frontend#3210
Reviewed-by: konrad <k@knt.li>
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-08 09:43:46 +00:00
2262b49aaf chore(deps): update pnpm to v7.29.1 2023-03-08 06:56:34 +00:00
c887990bad fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.9.0 2023-03-08 06:05:02 +00:00
37c5a88744 chore(deps): update node.js to v18.15.0 2023-03-07 20:03:33 +00:00
9b7770ade4 fix(keyboard-shortcuts): use card prop 2023-03-07 17:19:21 +00:00
af4a039502
chore: histoire add logo link 2023-03-07 18:07:12 +01:00
1b06112db4 fix: collapse menu on mobile when path changes 2023-03-07 15:56:09 +00:00
0952f059c0 fix(deps): update dependency pinia to v2.0.33 2023-03-07 15:08:55 +00:00
0f97ba6ec9 fix: sync sidebar transition with <main> (#3200)
Reviewed-on: vikunja/frontend#3200
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-06 18:56:13 +00:00
d4c9edb55d chore(deps): update typescript-eslint monorepo to v5.54.1 2023-03-06 18:04:27 +00:00
394f056cf4 fix(deps): update sentry-javascript monorepo to v7.41.0 2023-03-06 13:04:12 +00:00
7672676b6e chore(deps): update pnpm to v7.29.0 2023-03-06 07:30:39 +00:00
51b33fd67e chore(deps): update dependency caniuse-lite to v1.0.30001460 2023-03-06 07:30:06 +00:00
0ed3ebda94 chore(deps): update dependency netlify-cli to v13.0.1 2023-03-06 00:06:16 +00:00
danstewart
7b6f76d1b4 fix: stop revealing elements on hover if hover is not supported (#3191)
Resolves #3162

Co-authored-by: Dan Stewart <git@mail.danstewart.dev>
Reviewed-on: vikunja/frontend#3191
Reviewed-by: konrad <k@knt.li>
Co-authored-by: danstewart <danstewart@noreply.kolaente.de>
Co-committed-by: danstewart <danstewart@noreply.kolaente.de>
2023-03-04 16:13:31 +00:00
ad0029789d chore(deps): update dependency esbuild to v0.17.11 2023-03-03 23:04:25 +00:00
e13f57c30a chore(deps): update dependency @types/node to v18.14.6 2023-03-03 22:04:16 +00:00
6a3518dace chore(refactor): improve stores/config types (#3190)
Reviewed-on: vikunja/frontend#3190
Reviewed-by: konrad <k@knt.li>
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-03 14:36:59 +00:00
f1ec554d09 chore(deps): update dependency @types/node to v18.14.5 2023-03-03 06:04:12 +00:00
6aa02e29b1
chore(services): let getAll: always return Model[] 2023-03-02 16:44:01 +01:00
5f9485414b
chore(services): add examples for some functions 2023-03-02 16:43:46 +01:00
149ceaf2e5 fix(quick-actions): nothing happening on team click (#3186)
Reviewed-on: vikunja/frontend#3186
Reviewed-by: konrad <k@knt.li>
Co-authored-by: WofWca <wofwca@protonmail.com>
Co-committed-by: WofWca <wofwca@protonmail.com>
2023-03-02 15:28:43 +00:00
9b3e185dd4 chore(deps): update dependency @types/node to v18.14.4 2023-03-02 09:04:10 +00:00
779fe3e323 fix(deps): update sentry-javascript monorepo to v7.40.0 2023-03-02 08:02:54 +00:00
a27b77f24e fix(deps): update dependency dompurify to v3.0.1 2023-03-02 08:02:13 +00:00
41f22a1035 chore(deps): update dependency rollup to v3.18.0 2023-03-01 23:04:23 +00:00
28d01c5ba0 chore(deps): update dependency vitest to v0.29.2 2023-03-01 19:04:08 +00:00
Frederick [Bot]
e272dd8e64 [skip ci] Updated translations via Crowdin 2023-03-01 00:06:13 +00:00
c002275e7f
fix(table view): correctly load sort order from local storage
Resolves https://community.vikunja.io/t/table-view-sort-by-due-date-doesnt-persist-after-page-refresh/1198
2023-02-28 11:56:05 +01:00
1392d7f101 fix(deps): update dependency ufo to v1.1.1 2023-02-27 21:43:42 +00:00
e5758e21c7 chore(deps): update typescript-eslint monorepo to v5.54.0 2023-02-27 18:04:10 +00:00
e0f06999be
feat: improve recommended vscode settings 2023-02-27 16:52:48 +01:00
3b72acff27 fix(deps): update sentry-javascript monorepo to v7.39.0 2023-02-27 15:49:34 +00:00
df1c44aabe chore(deps): update dependency @types/node to v18.14.2 2023-02-27 15:04:16 +00:00
fe764a46e9
fix(task): allow clicking on the whole task to open the task detail view
Resolves #3172
2023-02-27 16:00:08 +01:00
000e3080a5 chore(deps): update dependency start-server-and-test to v2 2023-02-27 13:05:45 +00:00
f4c568e961 chore(deps): update dependency start-server-and-test to v1.15.5 2023-02-27 08:55:40 +00:00
ef70ead3f0 chore(deps): update dependency caniuse-lite to v1.0.30001458 2023-02-27 08:55:03 +00:00
7a326d6e03 chore(deps): update dependency happy-dom to v8.9.0 2023-02-27 08:54:32 +00:00
afb6383a85 chore(deps): update dependency netlify-cli to v13 2023-02-27 01:06:23 +00:00
e49969dcad chore(deps): update dependency rollup to v3.17.3 2023-02-26 13:26:09 +00:00
81e1d70847 chore(deps): update dependency eslint to v8.35.0 2023-02-26 10:04:19 +00:00
5226517954 chore(deps): update pnpm to v7.28.0 2023-02-25 17:03:54 +00:00
d5d0f9a8e2 chore(deps): update dependency vitest to v0.29.1 2023-02-25 11:04:09 +00:00
2337b6c9f3 chore(deps): update dependency vue-tsc to v1.2.0 2023-02-25 10:18:01 +00:00
289802b13d chore(deps): update dependency cypress to v12.7.0 2023-02-25 03:04:10 +00:00
5de9a2880f chore(deps): update dependency @cypress/vite-dev-server to v5.0.4 2023-02-24 04:04:04 +00:00
Frederick [Bot]
62f6895950 [skip ci] Updated translations via Crowdin 2023-02-24 00:06:10 +00:00
c198b9a164 chore(deps): update dependency @types/node to v18.14.1 2023-02-23 12:04:39 +00:00
d5f5e2a412 fix(deps): update dependency axios to v1.3.4 2023-02-22 22:04:25 +00:00
cabee68bbb
fix(docker): make sure the service worker and webmanifest are never cached 2023-02-22 12:18:46 +01:00
2fd2214a2e
fix(menu): don't show drag handle for not draggable menu items 2023-02-22 12:17:33 +01:00
64735e0c3d
fix(filter): don't allow marking a filter as favorite
Resolves https://community.vikunja.io/t/error-favouriting-filters-lists/1161/1
2023-02-22 12:13:48 +01:00
1f40b68108
fix(filter): validate title before creating or editing a filter
Resolves #3152
2023-02-22 11:04:31 +01:00
4033c28a67 chore(deps): update dependency vue-tsc to v1.1.7 2023-02-22 04:04:05 +00:00
be20a01dd6 chore(deps): update dependency vite to v4.1.4 2023-02-21 20:04:08 +00:00
8f5a628e54 chore(deps): update node.js to v18.14.2 2023-02-21 19:03:24 +00:00
e0c00b306e fix(deps): update dependency pinia to v2.0.32 2023-02-21 08:04:09 +00:00
10eaacc552 chore(deps): update dependency vue-tsc to v1.1.5 2023-02-20 20:04:05 +00:00
4b1465955a chore(deps): update typescript-eslint monorepo to v5.53.0 2023-02-20 19:16:38 +00:00
1711318212 chore(deps): update dependency esbuild to v0.17.10 2023-02-20 18:04:33 +00:00
b042547aaa chore(deps): update dependency netlify-cli to v12.13.2 2023-02-20 12:29:07 +00:00
ed0db956eb chore(deps): update dependency happy-dom to v8.6.0 2023-02-20 12:04:07 +00:00
a66f8a6484 chore(deps): update dependency rollup to v3.17.2 2023-02-20 11:34:43 +00:00
47e895149e chore(deps): update dependency vue-tsc to v1.1.4 2023-02-20 11:34:01 +00:00
8e00014feb fix(deps): update dependency pinia to v2.0.31 2023-02-20 11:33:30 +00:00
6146340034 fix(deps): update dependency codemirror to v5.65.12 2023-02-20 11:04:16 +00:00
c7b761b0eb chore(deps): update dependency caniuse-lite to v1.0.30001457 2023-02-20 09:32:51 +00:00
a1e84b3460 chore(deps): update dependency @vue/test-utils to v2.3.0 2023-02-20 09:32:12 +00:00
038debaa22 chore(deps): update dependency vite to v4.1.3 2023-02-20 09:04:17 +00:00
88faf04251 chore(deps): update dependency esbuild to v0.17.9 2023-02-19 18:04:07 +00:00
04be2b9745 chore(deps): update dependency rollup to v3.17.1 2023-02-18 20:04:05 +00:00
815e8cce0e chore(deps): update dependency sass to v1.58.3 2023-02-18 13:04:11 +00:00
d12f9247ff chore(deps): update dependency vue-tsc to v1.1.3 2023-02-18 12:38:10 +00:00
85e7a17934 chore(deps): update pnpm to v7.27.1 2023-02-18 12:37:43 +00:00
59c5d43348 chore(deps): update dependency rollup to v3.17.0 2023-02-18 12:37:10 +00:00
c011f9aa52 fix(deps): update dependency @vueuse/core to v9.13.0 2023-02-18 12:36:29 +00:00
b9f5319a4f chore(deps): update histoire to v0.15.8 2023-02-18 12:04:22 +00:00
f120ba4169 chore(deps): update dependency @types/node to v18.14.0 2023-02-17 21:04:08 +00:00
b2b70f4a9d chore(deps): update dependency @cypress/vite-dev-server to v5.0.3 2023-02-17 15:04:01 +00:00
9facffe3e9 fix(deps): update dependency blurhash to v2.0.5 2023-02-17 14:38:30 +00:00
c31aff1d88 chore(deps): update histoire to v0.15.7 2023-02-17 14:23:27 +00:00
60dea80462 chore(deps): update dependency rollup to v3.16.0 2023-02-17 14:20:21 +00:00
cd10ccfbc0 fix(deps): update sentry-javascript monorepo to v7.38.0 2023-02-17 14:04:40 +00:00
8647402038 chore(deps): update dependency vite to v4.1.2 2023-02-17 11:04:08 +00:00
990fd46302 chore(deps): update node.js to v18.14.1 2023-02-17 10:17:25 +00:00
cf0aafd9e6 fix(deps): update dependency ufo to v1.1.0 2023-02-17 09:15:10 +00:00
70d2535e93 chore(deps): update dependency sass to v1.58.2 2023-02-17 02:04:07 +00:00
Frederick [Bot]
0c6f1a4083 [skip ci] Updated translations via Crowdin 2023-02-17 00:06:13 +00:00
29eb42932a chore(deps): update dependency vue-tsc to v1.1.2 2023-02-16 17:04:00 +00:00
736e9051d8 chore(deps): update histoire to v0.15.4 2023-02-16 10:04:01 +00:00
4a4c401558 chore(deps): update dependency cypress to v12.6.0 (#3115)
Reviewed-on: vikunja/frontend#3115
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-15 22:45:51 +00:00
9198abe24d chore(deps): pin node.js to 18.14.0 2023-02-15 22:02:55 +00:00
Dominik Pschenitschni
97c8970dd6 feat: use renovate js-app as preset (#3087)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#3087
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-02-15 21:58:35 +00:00
5303b6bc97 chore(deps): update dependency vue-tsc to v1.1.0 2023-02-15 20:04:24 +00:00
24a0a8f5eb chore(deps): update histoire to v0.15.3 2023-02-15 19:03:46 +00:00
Dominik Pschenitschni
d07ad495e2 fix(postcss-preset-env): client side polyfills (#3051)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#3051
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-02-15 15:40:00 +00:00
8465afe421 chore(deps): update histoire to v0.15.1 2023-02-15 15:03:47 +00:00
d40729cbe7
fix: button styles
Partially reverts eaeddda4e4
2023-02-15 11:28:25 +01:00
fa0e46a399
chore: remove sponsor 2023-02-15 11:12:00 +01:00
b78481f9f6 fix(deps): update dependency @kyvg/vue3-notification to v2.9.0 (#3113)
Reviewed-on: vikunja/frontend#3113
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-14 15:16:03 +00:00
cbc9cf6f7f fix(deps): update dependency vue-flatpickr-component to v11.0.2 (#3112)
Reviewed-on: vikunja/frontend#3112
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-14 10:28:55 +00:00
62fd9a656e chore(deps): update dependency sass to v1.58.1 2023-02-14 01:04:11 +00:00
85269b4524 chore(deps): update dependency start-server-and-test to v1.15.4 (#3109)
Reviewed-on: vikunja/frontend#3109
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-13 20:15:41 +00:00
536d709961 fix(deps): update dependency axios to v1.3.3 2023-02-13 19:04:37 +00:00
59d6d7e786 chore(deps): update typescript-eslint monorepo to v5.52.0 2023-02-13 18:04:07 +00:00
ae86d0d42a fix(deps): update dependency dompurify to v3 (#3107)
Reviewed-on: vikunja/frontend#3107
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-13 17:39:29 +00:00
9a20b7a853 fix(deps): update sentry-javascript monorepo to v7.37.2 2023-02-13 16:04:08 +00:00
5687b66ea5 chore(deps): update dependency vitest to v0.28.5 2023-02-13 13:04:04 +00:00
1da411e1f6 chore(deps): update dependency vite-plugin-inject-preload to v1.3.0 2023-02-13 09:48:27 +00:00
e8a6d3f31b chore(deps): update dependency caniuse-lite to v1.0.30001451 2023-02-13 09:47:50 +00:00
a25a795276 chore(deps): update dependency netlify-cli to v12.12.0 2023-02-13 09:45:48 +00:00
57f6abd99f chore(deps): update dependency esbuild to v0.17.8 2023-02-13 07:04:03 +00:00
84d205f90b chore(deps): update dependency vite-plugin-pwa to v0.14.4 2023-02-11 10:04:05 +00:00
de91e7c9ae chore(deps): update histoire to v0.14.2 2023-02-11 09:04:37 +00:00
2cf9c35acb chore(deps): update dependency eslint to v8.34.0 2023-02-11 08:04:56 +00:00
db525db6eb fix(deps): histoire renovate group 2023-02-11 08:04:20 +00:00
88525ae7c8 chore(deps): include histoire main package in histoire renovate group 2023-02-11 08:03:36 +00:00
957bfdc8f1 chore(deps): update dependency histoire to v0.14.2 2023-02-11 00:05:13 +00:00
c52ae83b75 fix(deps): update sentry-javascript monorepo to v7.37.1 2023-02-10 16:03:55 +00:00
df40c4e475
chore(deps): update dependency histoire to v0.14.0 2023-02-10 14:29:39 +01:00
3f41e9a3a6 chore(deps): update dependency @histoire/plugin-vue to v0.14.0 2023-02-10 13:04:04 +00:00
1da510b5dd
chore(deps): update dependency @histoire/plugin-screenshot to v0.14.0 2023-02-10 13:35:01 +01:00
536db3fd46 chore(deps): update dependency @histoire/plugin-vue to v0.14.0 2023-02-10 12:26:56 +00:00
cefa5250c5
chore(deps): create a group for all histoire dependencies 2023-02-10 13:10:46 +01:00
f697640636
chore: remove minimist dependency (not used anywhere) 2023-02-10 12:57:48 +01:00
09b7595b68 chore(deps): update dependency rollup to v3.15.0 2023-02-10 07:08:20 +00:00
6b7f73f724 chore(deps): update dependency esbuild to v0.17.7 2023-02-09 23:04:14 +00:00
Dominik Pschenitschni
d6b55c7570 feat: fix calculation of token invalidation (#3077)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#3077
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-02-09 21:45:18 +00:00
Yurii Vlasov
3f4b08b8be Added ipv6 control script 2023-02-09 21:43:32 +00:00
791c61cabb
fix(docker): default api url 2023-02-09 22:30:36 +01:00
e3dd4ef78a feat: persistent menuActive state with Local Storage (#3011)
Reviewed-on: vikunja/frontend#3011
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-02-09 21:14:49 +00:00
830d0887b9 fix(deps): update sentry-javascript monorepo to v7.37.0 2023-02-09 17:04:06 +00:00
e8db2c2b45
feat: header improvements 2023-02-09 15:19:33 +01:00
706a13242e fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.8.2 2023-02-08 23:34:16 +00:00
13fab10584 chore(deps): update dependency histoire to v0.13.2 2023-02-08 23:05:01 +00:00
4b0c8aa66b chore(deps): update dependency @histoire/plugin-vue to v0.13.2 2023-02-08 22:04:14 +00:00
bfaf9401f4 chore(deps): update dependency @histoire/plugin-screenshot to v0.13.2 2023-02-08 21:07:12 +00:00
13607124a6
chore(deps): update dependency histoire to v0.13.1 2023-02-08 17:34:13 +01:00
9fc3d0a965 chore(deps): update dependency vite-plugin-pwa to v0.14.3 2023-02-08 16:27:37 +00:00
4d6286451e chore(deps): update dependency @histoire/plugin-vue to v0.13.1 2023-02-08 16:04:15 +00:00
0479d17e69 chore(deps): update dependency @histoire/plugin-screenshot to v0.13.1 2023-02-08 15:04:13 +00:00
5ca272959d chore(deps): update pnpm to v7.27.0 2023-02-08 14:03:48 +00:00
c502f9b840
feat: refactor to composable
- using useMediaQuery and useLocalStorage
- remove watcher in contentAuth
2023-02-08 12:56:32 +01:00
a3a313a21f fix(deps): update font awesome to v6.3.0 2023-02-07 20:04:47 +00:00
c58d1ffd2e chore(deps): update dependency vite-plugin-pwa to v0.14.2 2023-02-07 17:04:16 +00:00
99dc5cf34f
Refactor to only used local storage value when on desktop viewport widths 2023-02-07 14:58:45 +01:00
3604cb3ec7
Solve for resize() 2023-02-07 14:58:45 +01:00
aa01a92278
Persist menuActive state in Local Storage 2023-02-07 14:58:44 +01:00
Dominik Pschenitschni
7b96397e3b feat: use klona instead of lodash.clonedeep (#3073)
Resolves: vikunja/frontend#3032
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#3073
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-02-07 13:04:03 +00:00
b45a4e1aaf chore(deps): update dependency @types/node to v18.13.0 2023-02-07 09:04:26 +00:00
Frederick [Bot]
d3365d6add [skip ci] Updated translations via Crowdin 2023-02-07 00:10:26 +00:00
49cb2b9e6f chore(deps): update dependency @cypress/vue to v5.0.4 2023-02-06 22:04:02 +00:00
d4ce10e79a chore(deps): update dependency esbuild to v0.17.6 2023-02-06 20:04:01 +00:00
345c5e3588 chore(deps): update typescript-eslint monorepo to v5.51.0 2023-02-06 18:04:17 +00:00
7ff84bcd29 chore(deps): update dependency happy-dom to v8.2.6 2023-02-06 10:56:28 +00:00
d1633ef622 chore(deps): update dependency @histoire/plugin-vue to v0.13.0 2023-02-06 10:04:27 +00:00
7e92bc63ac chore(deps): update caniuse-and-related 2023-02-06 09:41:54 +00:00
be076b65cf chore(deps): update dependency histoire to v0.13.0 2023-02-06 01:05:40 +00:00
Frederick [Bot]
65b90cbee0 [skip ci] Updated translations via Crowdin 2023-02-06 00:09:40 +00:00
74aac1b245 chore(deps): update dependency @histoire/plugin-screenshot to v0.13.0 2023-02-05 23:38:03 +00:00
ade791ed43 chore(deps): update dependency @types/node to v18.11.19 2023-02-05 12:04:08 +00:00
55b008c67c chore(deps): update dependency rollup to v3.14.0 2023-02-05 06:03:59 +00:00
Frederick [Bot]
1f088cca18 [skip ci] Updated translations via Crowdin 2023-02-05 00:10:26 +00:00
6fad1e4969 fix(deps): update dependency axios to v1.3.2 2023-02-03 19:04:04 +00:00
eaeddda4e4
feat: improve naming and styles 2023-02-03 17:25:38 +01:00
7cbf0acac5
fix: always show update popup on top 2023-02-03 17:04:51 +01:00
3db5ea45d7
feat: move update from navigation to app 2023-02-03 17:04:51 +01:00
RoboMagus
dcd5c3fd6a
Disable listening on IPv6 ports when IPv6 is not supported (#102) 2023-02-03 15:55:36 +01:00
61fff44764 chore(deps): update dependency rollup to v3.13.0 2023-02-03 13:03:57 +00:00
ecdae4e03e chore(deps): update dependency vitest to v0.28.4 2023-02-03 11:04:06 +00:00
b26ea45fe0
chore: update funding links 2023-02-03 11:47:46 +01:00
7cb0cd293d
chore: update funding links 2023-02-03 11:46:37 +01:00
6572f75e5d fix: Use Build Time Base Path (#2964)
Reviewed-on: vikunja/frontend#2964
Reviewed-by: konrad <k@knt.li>
2023-02-03 08:57:27 +00:00
af55992057
feat(config): Support Setting Base Path in .env
* This uses loadEnv to load an environment file at configuration
  time.
  * Documentation:
    * https://vitejs.dev/config/#environment-variables
  * More on environment files:
    * https://vitejs.dev/guide/env-and-mode.html
  * `VIKUNJA_FRONTEND_BASE` is the variable in the environment
     file that will be used to set Vite’s base option.
* This adds a commented example to .env.local.example

Signed-off-by: Jef Oliver <jef@eljef.me>
2023-02-03 09:21:08 +01:00
e92559dc00
fix(base): Use Build Time Base Path
* If a base path is provided at build time, use it.
  * Base path can be set with `VIKUNJA_FRONTEND_BASE` at
    build time
    * `VIKUNJA_FRONTEND_BASE` sets `import.meta.env.BASE_URL` after Vite resolves it.
    * Usages of `import.meta.env.BASE_URL` are statically replaced
      at build time.
    * If base path is not provided, `import.meta.env.BASE_URL`
      defaults to '/'.
    * Documentation:
      https://vitejs.dev/guide/env-and-mode.html

* Fixes:
  * Manifest not loading because of incorrect path.
  * Service Worker not loading because path is incorrect in
    manifest.
  * Service Worker crashing because import of workbox is from
    wrong path.
  * Service Worker not loading a task because path is incorrect
    in event listener.
  * Incorrect URLs being set on window because base path is
    incorrect.
    * ex: `/login` vs `/base/login`

Signed-off-by: Jef Oliver <jef@eljef.me>
2023-02-03 09:21:06 +01:00
3dbf02fd7a chore(deps): update dependency @vue/test-utils to v2.2.10 2023-02-03 00:05:11 +00:00
81a4f2d977 chore: typo 2023-02-02 19:11:08 +00:00
2972d0d400 chore(deps): update dependency cypress to v12.5.1 2023-02-02 18:03:56 +00:00
c11ebc44c4 chore(deps): update dependency vite to v4.1.1 2023-02-02 15:04:03 +00:00
144f90c5f7 fix(deps): update sentry-javascript monorepo to v7.36.0 2023-02-02 14:14:47 +00:00
913879604a chore(deps): update dependency @vitejs/plugin-legacy to v4.0.1 2023-02-02 14:03:59 +00:00
1589ed5739 chore(deps): update dependency @vitejs/plugin-legacy to v4 2023-02-02 12:04:02 +00:00
a991c537ac chore(deps): update dependency postcss-preset-env to v8 (#3000)
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#3000
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-02 11:49:30 +00:00
69b57aa23a chore(deps): update dependency vite to v4.1.0 2023-02-02 11:04:00 +00:00
1a1939963a fix(deps): update dependency vue to v3.2.47 2023-02-02 07:03:57 +00:00
3d62c9789c fix(deps): update dependency axios to v1.3.1 2023-02-02 06:56:51 +00:00
c18df8687c chore(deps): update dependency @vue/test-utils to v2.2.9 2023-02-02 00:05:20 +00:00
d83ba0c158 fix(deps): update dependency pinia to v2.0.30 (#3042)
Reviewed-on: vikunja/frontend#3042
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-01 14:26:35 +00:00
cea31d1da7
fix(docker): cross compilation with buildx 2023-02-01 15:08:12 +01:00
12509a7e0f fix(deps): update sentry-javascript monorepo to v7.35.0 (#3041)
Reviewed-on: vikunja/frontend#3041
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-02-01 13:12:20 +00:00
dd43057a08 chore(deps): update dependency rollup to v3.12.1 2023-02-01 10:03:47 +00:00
19d3cf01cd chore(deps): update pnpm to v7.26.3 2023-02-01 09:36:45 +00:00
80012bf035 chore(deps): update dependency cypress to v12.5.0 2023-02-01 09:11:17 +00:00
899d9e1cb7 chore(deps): update dependency sass to v1.58.0 2023-02-01 02:04:06 +00:00
56830ddadc fix(deps): update dependency axios to v1.3.0 (#3036)
Reviewed-on: vikunja/frontend#3036
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-31 17:16:19 +00:00
1749d6ba0a
fix(list): make sure favorite lists are not duplicated in the menu when renaming them
Resolves vikunja/frontend#3031
2023-01-31 17:12:11 +01:00
b29008d304 chore(deps): update typescript-eslint monorepo to v5.50.0 2023-01-31 10:03:47 +00:00
8ae3054b1a chore(deps): update dependency typescript to v4.9.5 2023-01-30 22:03:50 +00:00
f9dad79b23 chore(deps): update dependency caniuse-lite to v1.0.30001449 2023-01-30 07:21:12 +00:00
30f5cb0656 chore(deps): update dependency happy-dom to v8.2.0 2023-01-30 07:20:45 +00:00
3f58c983da chore(deps): update dependency netlify-cli to v12.10.0 2023-01-30 01:04:11 +00:00
8fa8b03aa6
fix(tests): only look in src for tests 2023-01-29 20:24:44 +01:00
e4499f44b7 Docker refactoring (#3018)
Co-authored-by: Yurii Vlasov <yv@itsvit.org>
Reviewed-on: vikunja/frontend#3018
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Yurii Vlasov <yuriy@vlasov.pro>
Co-committed-by: Yurii Vlasov <yuriy@vlasov.pro>
2023-01-29 14:47:22 +00:00
b799233bca
fix(quick add magic): correctly parse "next {weekday}" on the beginning of the text
Resolves vikunja/frontend#3022
2023-01-29 15:32:01 +01:00
be0ae4bc29 chore(deps): update dependency eslint to v8.33.0 2023-01-29 13:49:19 +00:00
60d99f3bba chore(deps): update pnpm to v7.26.2 2023-01-29 13:48:52 +00:00
fa666d2817 fix(deps): update dependency @vueuse/core to v9.12.0 2023-01-29 04:04:10 +00:00
9312aa14fa fix(deps): update dependency axios to v1.2.6 2023-01-28 17:03:57 +00:00
68e4f776b9 chore(deps): update dependency esbuild to v0.17.5 2023-01-28 07:32:56 +00:00
2d137d564e chore(deps): update dependency rollup to v3.12.0 2023-01-28 06:03:58 +00:00
Frederick [Bot]
fc8824d942 [skip ci] Updated translations via Crowdin 2023-01-28 00:27:10 +00:00
6d4ca57601 chore(deps): update dependency cypress to v12.4.1 2023-01-27 16:04:04 +00:00
d2bf4e38b1 chore(deps): update dependency vitest to v0.28.3 (#3019)
Reviewed-on: vikunja/frontend#3019
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-27 13:13:52 +00:00
a5f6857a40 chore(deps): update dependency @vue/test-utils to v2.2.8 2023-01-27 07:48:21 +00:00
ed3d79fa4c chore(deps): update pnpm to v7.26.1 2023-01-27 05:03:37 +00:00
Frederick [Bot]
81c5c54aed [skip ci] Updated translations via Crowdin 2023-01-27 00:28:14 +00:00
793e06c6ac fix(deps): update sentry-javascript monorepo to v7.34.0 2023-01-26 22:04:00 +00:00
Nikola Sivkov v2
7eb07e92f8
Add Ipv6 support to nginx (#100)
(cherry picked from commit 0e68bcfd5a518b5cbd0bafce1fc48d31b25e1fa1)
2023-01-26 22:00:49 +01:00
2a15878b81 fix(deps): update dependency axios to v1.2.5 2023-01-26 16:03:45 +00:00
ebd2b1e8c0 chore(deps): update dependency @vitejs/plugin-legacy to v3.0.2 (#3012)
Reviewed-on: vikunja/frontend#3012
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-26 15:20:58 +00:00
d11fcfa072 chore(deps): update dependency rollup to v3.11.0 (#3013)
Reviewed-on: vikunja/frontend#3013
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-26 14:19:03 +00:00
Frederick [Bot]
8e6e976867 [skip ci] Updated translations via Crowdin 2023-01-26 00:28:07 +00:00
9adf1aba89
chore: simplify getting the error text from an exception 2023-01-25 18:44:02 +01:00
e67088fdb7
chore: simplify error handling for login and OpenId Auth 2023-01-25 18:41:30 +01:00
da241d21f3
fix(quick actions): hide edges of last entry on hover 2023-01-25 16:26:05 +01:00
97133010af
fix(quick actions): don't throw an error message when selecting the last items with the arrow keys 2023-01-25 16:23:46 +01:00
4576da0dd3
fix: make sure global error handler handles unrejected promises correctly
Resolves vikunja/frontend#2992
2023-01-25 15:05:54 +01:00
fd4a68daf0 chore(deps): update dependency vitest to v0.28.2 (#3008)
Reviewed-on: vikunja/frontend#3008
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-25 12:30:19 +00:00
6f02d43801 fix(deps): update dependency @infectoone/vue-ganttastic to v2.1.4 (#3009)
Reviewed-on: vikunja/frontend#3009
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-25 12:29:41 +00:00
2be784766f feat: small content auth improvements (#2998)
Reviewed-on: vikunja/frontend#2998
2023-01-24 22:09:25 +00:00
Dominik Pschenitschni
13a39be3de feat: unindent settings page (#2996)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2996
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-24 21:54:48 +00:00
d2e07efc7d chore(deps): update dependency cypress to v12.4.0 (#3006)
Reviewed-on: vikunja/frontend#3006
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-24 21:16:24 +00:00
a44299e786 chore(deps): update pnpm to v7.26.0 (#3002)
Reviewed-on: vikunja/frontend#3002
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-24 20:50:13 +00:00
221f73c347 fix(deps): update dependency axios to v1.2.4 (#3005)
Reviewed-on: vikunja/frontend#3005
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-24 18:21:26 +00:00
9b170d0d81 fix(deps): update sentry-javascript monorepo to v7.33.0 (#3004)
Reviewed-on: vikunja/frontend#3004
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-24 17:49:43 +00:00
16e61a8492
fix(ci): disable auto_tag for release docker images 2023-01-24 18:24:36 +01:00
a95f1090d7
fix(ci): save .tags file to generate release tags 2023-01-24 17:46:28 +01:00
c6026107fa
chore: 0.20.3 release preperations 2023-01-24 17:17:03 +01:00
e07e6bf677 fix(deps): update dependency @fortawesome/vue-fontawesome to v3.0.3 (#3003)
Reviewed-on: vikunja/frontend#3003
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-24 15:56:09 +00:00
c6ed925424
chore: move class name to top 2023-01-23 22:26:26 +01:00
7ed1a37de5
feat: use v-show for navigation buttons 2023-01-23 22:26:14 +01:00
1a2e9af88f chore(deps): update dependency start-server-and-test to v1.15.3 2023-01-23 21:24:26 +00:00
f5e90067f6 chore(deps): update typescript-eslint monorepo to v5.49.0 (#2994)
Reviewed-on: vikunja/frontend#2994
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 21:07:36 +00:00
188ae57dc0 chore(deps): update dependency @types/codemirror to v5.60.7 (#2993)
Reviewed-on: vikunja/frontend#2993
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 17:17:39 +00:00
3e4bbd58a3 chore(deps): update dependency vitest to v0.28.1 (#2990)
Reviewed-on: vikunja/frontend#2990
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 17:01:15 +00:00
bb8ee15a2d fix(deps): update sentry-javascript monorepo to v7.32.1 (#2991)
Reviewed-on: vikunja/frontend#2991
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 17:00:23 +00:00
4c46ae5b2f chore(deps): update dependency netlify-cli to v12.9.1 (#2988)
Reviewed-on: vikunja/frontend#2988
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 10:04:50 +00:00
ff27030e1c chore(deps): update dependency happy-dom to v8.1.5 (#2987)
Reviewed-on: vikunja/frontend#2987
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 10:04:03 +00:00
639e5e3d23 chore(deps): update dependency caniuse-lite to v1.0.30001447 (#2986)
Reviewed-on: vikunja/frontend#2986
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-23 10:03:19 +00:00
Frederick [Bot]
e49e9352e5 [skip ci] Updated translations via Crowdin 2023-01-23 00:29:07 +00:00
705afa0272 chore(deps): update dependency esbuild to v0.17.4 (#2985)
Reviewed-on: vikunja/frontend#2985
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-22 13:14:39 +00:00
83864a6bac chore(deps): update dependency vitest to v0.27.3 (#2984)
Reviewed-on: vikunja/frontend#2984
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-22 12:03:32 +00:00
664a39b70d chore(deps): update dependency vite-plugin-inject-preload to v1.2.0 (#2983)
Reviewed-on: vikunja/frontend#2983
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-22 11:59:51 +00:00
Dominik Pschenitschni
9922fcba65 fix: close button hover for sidebar (#2981)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2981
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-21 11:02:17 +00:00
Dominik Pschenitschni
489014944a feat: fix broken font preloading (#2980)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2980
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-21 11:01:32 +00:00
Frederick [Bot]
bb44beb4ba [skip ci] Updated translations via Crowdin 2023-01-21 00:29:03 +00:00
d996f24028 chore(deps): update dependency rollup to v3.10.1 2023-01-20 16:03:52 +00:00
59cac0eb38 fix(deps): update dependency @vueuse/core to v9.11.1 2023-01-20 14:03:51 +00:00
Frederick [Bot]
7adc5ceb9f [skip ci] Updated translations via Crowdin 2023-01-20 00:31:29 +00:00
a3d9cb5324 chore(deps): update pnpm to v7.25.1 (#2977)
Reviewed-on: vikunja/frontend#2977
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-19 11:14:20 +00:00
Frederick [Bot]
6c192b6f59 [skip ci] Updated translations via Crowdin 2023-01-19 00:30:50 +00:00
8ff1b3006b fix(task): don't show the list color on the task when only viewing the list (#2975)
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#2975
2023-01-18 21:12:59 +00:00
0414352b02 chore(deps): update dependency esbuild to v0.17.3 (#2976)
Reviewed-on: vikunja/frontend#2976
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-18 20:47:14 +00:00
Dominik Pschenitschni
2a2c27af92 chore: use es6 imports for deploy-preview-netlify (#2970)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2970
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-18 15:54:37 +00:00
Dominik Pschenitschni
e1b35ff023 feat: add .env.local.example (#2972)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2972
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-18 00:06:18 +00:00
95b2bcf5fb fix(deps): update dependency axios to v1.2.3 (#2974)
Reviewed-on: vikunja/frontend#2974
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-17 22:34:18 +00:00
da26ec7f1c fix(deps): update sentry-javascript monorepo to v7.31.1 (#2973)
Reviewed-on: vikunja/frontend#2973
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-17 15:15:06 +00:00
Dominik Pschenitschni
14466bf9b7 feat: add describe project better in package.json (#2971)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2971
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-17 14:46:36 +00:00
Dominik Pschenitschni
903e9a9904 chore: add has content="false" to gantt charts (#2969)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2969
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-17 14:32:56 +00:00
Dominik Pschenitschni
56fd25e888 chore: improve migrate title (#2968)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2968
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-17 14:04:48 +00:00
c815830700 fix(deps): update dependency @vueuse/core to v9.11.0 (#2967)
Reviewed-on: vikunja/frontend#2967
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-17 10:48:41 +00:00
69f398f789 chore(deps): update dependency vitest to v0.27.2 (#2966)
Reviewed-on: vikunja/frontend#2966
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-17 09:42:03 +00:00
8280bd6bf5 chore(deps): update dependency esbuild to v0.17.2 (#2965)
Reviewed-on: vikunja/frontend#2965
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-17 09:41:25 +00:00
89559557b8 chore(deps): update typescript-eslint monorepo to v5.48.2 (#2962)
Reviewed-on: vikunja/frontend#2962
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-16 19:22:16 +00:00
84b1b61af4 chore(deps): update dependency esbuild to v0.17.1 (#2963)
Reviewed-on: vikunja/frontend#2963
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-16 19:21:33 +00:00
7f84441e78 fix(deps): update sentry-javascript monorepo to v7.31.0 2023-01-16 16:04:13 +00:00
ec6d6018da chore(deps): update dependency netlify-cli to v12.7.2 (#2960)
Reviewed-on: vikunja/frontend#2960
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-16 08:24:22 +00:00
bcec4b97d2 chore(deps): update dependency happy-dom to v8.1.4 (#2959)
Reviewed-on: vikunja/frontend#2959
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-16 08:23:39 +00:00
9e9e7eaecb chore(deps): update dependency caniuse-lite to v1.0.30001445 (#2958)
Reviewed-on: vikunja/frontend#2958
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-16 08:22:55 +00:00
665f1a7a18 fix(deps): update dependency @kyvg/vue3-notification to v2.8.0 (#2957)
Reviewed-on: vikunja/frontend#2957
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-15 19:21:51 +00:00
25a56a89ae fix(deps): update dependency pinia to v2.0.29 (#2956)
Reviewed-on: vikunja/frontend#2956
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-15 16:13:03 +00:00
9b21d23245 fix(deps): update dependency vue-advanced-cropper to v2.8.8 (#2955)
Reviewed-on: vikunja/frontend#2955
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-15 15:44:36 +00:00
5c500c711e chore(deps): update dependency eslint to v8.32.0 (#2954)
Reviewed-on: vikunja/frontend#2954
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-15 09:52:49 +00:00
af65447920 chore(deps): update dependency esbuild to v0.17.0 (#2953)
Reviewed-on: vikunja/frontend#2953
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-14 07:42:39 +00:00
60fee6da7f fix(deps): update dependency marked to v4.2.12 (#2952)
Reviewed-on: vikunja/frontend#2952
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-14 07:40:28 +00:00
d1dbc7f983 chore(deps): update pnpm to v7.25.0 (#2951)
Reviewed-on: vikunja/frontend#2951
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-13 21:14:36 +00:00
28ace38ebb chore(deps): update dependency eslint-plugin-vue to v9.9.0 (#2950)
Reviewed-on: vikunja/frontend#2950
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-13 07:42:38 +00:00
2af42f8fbe
fix(quick add magic): make sure assignees which don't exist are not removed from task title
Resolves vikunja/frontend#2927
2023-01-12 13:32:00 +01:00
5999def569
fix(task): update task description when switching between related tasks
Resolves vikunja/frontend#2936
2023-01-12 12:22:56 +01:00
3b99facbfe chore(deps): update dependency rollup to v3.10.0 (#2949)
Reviewed-on: vikunja/frontend#2949
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-12 08:31:37 +00:00
c980729b0e chore(deps): update dependency esbuild to v0.16.17 (#2948)
Reviewed-on: vikunja/frontend#2948
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-11 22:20:06 +00:00
b719766062 redirect to oidc provider if configured correctly (#2805)
Co-authored-by: konrad <k@knt.li>
Reviewed-on: vikunja/frontend#2805
Reviewed-by: konrad <k@knt.li>
Co-authored-by: viehlieb <pf@pragma-shift.net>
Co-committed-by: viehlieb <pf@pragma-shift.net>
2023-01-11 21:17:53 +00:00
61592a3c33
fix(ci): sign drone config 2023-01-11 22:03:55 +01:00
e8877174d4 chore(deps): update dependency vitest to v0.27.1 (#2947)
Reviewed-on: vikunja/frontend#2947
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-11 17:21:25 +00:00
2edf3aebef
fix(ci): tagging logic for release docker images 2023-01-11 18:15:24 +01:00
63b409e3bd chore(deps): update pnpm to v7.24.3 (#2946)
Reviewed-on: vikunja/frontend#2946
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-11 06:46:05 +00:00
de45568a17 fix(deps): update sentry-javascript monorepo to v7.30.0 (#2945)
Reviewed-on: vikunja/frontend#2945
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-10 14:23:55 +00:00
c3224a72c1 chore(deps): update pnpm to v7.24.2 (#2944)
Reviewed-on: vikunja/frontend#2944
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-10 14:23:26 +00:00
6a151a8cf3 chore(deps): update typescript-eslint monorepo to v5.48.1 (#2942)
Reviewed-on: vikunja/frontend#2942
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-09 18:12:51 +00:00
a61ce6f1d6 chore(deps): update dependency vitest to v0.27.0 (#2941)
Reviewed-on: vikunja/frontend#2941
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-09 14:37:26 +00:00
0124f60bac chore(deps): update dependency caniuse-lite to v1.0.30001442 (#2938)
Reviewed-on: vikunja/frontend#2938
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-09 10:21:24 +00:00
1a14b1dac6 chore(deps): update dependency esbuild to v0.16.16 (#2937)
Reviewed-on: vikunja/frontend#2937
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-09 10:17:22 +00:00
9662c79b95 chore(deps): update dependency happy-dom to v8.1.3 (#2939)
Reviewed-on: vikunja/frontend#2939
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-09 10:16:29 +00:00
43b67a9d33 chore(deps): update pnpm to v7.23.0 (#2940)
Reviewed-on: vikunja/frontend#2940
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-09 10:15:58 +00:00
37368a64df chore(deps): update dependency vue-tsc to v1.0.24 2023-01-08 14:04:14 +00:00
098113b3a4 chore(deps): update dependency esbuild to v0.16.15 (#2934)
Reviewed-on: vikunja/frontend#2934
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-07 08:48:07 +00:00
5c13945393 chore(deps): update dependency postcss to v8.4.21 (#2933)
Reviewed-on: vikunja/frontend#2933
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-06 21:17:25 +00:00
Dominik Pschenitschni
86d957be4f fix(drone): pnpm cache folder path (#2932)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#2932
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-06 17:48:40 +00:00
9fe2b4ad73 fix(deps): update dependency dompurify to v2.4.3 (#2931)
Reviewed-on: vikunja/frontend#2931
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-06 15:14:54 +00:00
Dominik Pschenitschni
72e80f637d feat(postcss): mock plugin types (#2930)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2930
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-06 09:27:55 +00:00
a4424e089c feat: add histoire (#2724)
Reviewed-on: vikunja/frontend#2724
2023-01-06 09:27:09 +00:00
Frederick [Bot]
945128c3cd [skip ci] Updated translations via Crowdin 2023-01-06 00:34:21 +00:00
35cfb2f3ca
feat: add card story 2023-01-05 23:12:58 +01:00
ccc85b9a82
feat: add XButton story 2023-01-05 23:12:58 +01:00
9523f60763
fix(BaseButton): prop type 2023-01-05 23:12:58 +01:00
7be8e892e2
feat: add histoire 2023-01-05 23:12:58 +01:00
2a6aff6ffa fix(deps): update dependency dompurify to v2.4.2 2023-01-05 17:04:34 +00:00
Dominik Pschenitschni
6a03972f16 feat(netlify): abstract createSlug helper function (#2923)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2923
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 16:46:38 +00:00
Dominik Pschenitschni
4023ebcdd1 fix(drone): use correct property value (#2920)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#2920
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 13:50:32 +00:00
Dominik Pschenitschni
6049427322 chore(config): remove unused URL_PREFIX const (#2926)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2926
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 13:35:28 +00:00
Dominik Pschenitschni
f658d3bbba fix(cypress): use env for API_URL (#2925)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2925
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 13:34:40 +00:00
Dominik Pschenitschni
a029887102 fix(useOnline): only log if actually faking state (#2924)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2924
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 13:33:37 +00:00
Dominik Pschenitschni
0f7b7f72d0 fix(faker): remove mock types (#2921)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2921
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 13:27:36 +00:00
Dominik Pschenitschni
a29131e7d4 feat: remove formatISO from list-view-gantt.spec (#2922)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2922
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 13:27:04 +00:00
Dominik Pschenitschni
b71d41c5ec chore(package): use pnpm commands (#2919)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2919
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-05 10:29:16 +00:00
81594e234a chore(deps): update dependency vue-tsc to v1.0.22 2023-01-05 02:05:01 +00:00
0846d1dc5e chore(deps): update dependency vue-tsc to v1.0.21 2023-01-04 23:26:07 +00:00
5dfaa48ea5 fix(deps): update dependency axios to v1 2023-01-04 23:13:25 +00:00
63671efbe2 chore(deps): update dependency esbuild to v0.16.14 2023-01-04 21:04:20 +00:00
Dominik Pschenitschni
4be53b098c feat: add-task usability improvements (#2767)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2767
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-04 15:54:09 +00:00
5a89bc0183 fix(deps): update sentry-javascript monorepo to v7.29.0 (#2915)
Reviewed-on: vikunja/frontend#2915
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-04 14:14:26 +00:00
97b1149a90 chore(deps): update dependency vite to v4.0.4 (#2908)
Reviewed-on: vikunja/frontend#2908
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-04 13:14:24 +00:00
2ca33671aa chore(deps): update dependency @vue/test-utils to v2.2.7 (#2914)
Reviewed-on: vikunja/frontend#2914
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-04 13:13:44 +00:00
d82f377f94 chore(deps): update pnpm to v7.22.0 (#2910)
Reviewed-on: vikunja/frontend#2910
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-04 12:20:17 +00:00
a2cd08a7af
fix(ci): sign drone config 2023-01-04 11:38:06 +01:00
830d6d0a38 fix(deps): update dependency @vueuse/core to v9.10.0 (#2911)
Reviewed-on: vikunja/frontend#2911
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-04 09:48:37 +00:00
6cc23ff7aa chore(deps): update dependency cypress to v12.3.0 2023-01-04 03:32:05 +00:00
bb4ed3d223 chore(tests): fix macos cypress and align with create vite (#2898)
Reviewed-on: vikunja/frontend#2898
Reviewed-by: konrad <k@knt.li>
2023-01-04 03:19:36 +00:00
f56302a99f chore(deps): update dependency vue-tsc to v1.0.20 2023-01-04 00:05:43 +00:00
d850d5b98f
fix(cypress): use ts for updateUserSettings 2023-01-03 16:30:46 +01:00
4908469d49
feat(cypress): use cy.session
Also align repo closer to `create-vue` template and improve cypress integration
2023-01-03 16:30:46 +01:00
Dominik Pschenitschni
1f25386f54 feat: remove date-fns formatISO (#2899)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2899
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2023-01-03 14:20:06 +00:00
c97ed67f50 chore(deps): update typescript-eslint monorepo to v5.48.0 (#2906)
Reviewed-on: vikunja/frontend#2906
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-03 14:05:36 +00:00
be53474eeb chore(deps): update dependency esbuild to v0.16.13 (#2907)
Reviewed-on: vikunja/frontend#2907
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-03 14:04:57 +00:00
c6cb2343ae chore(deps): update dependency vite-plugin-pwa to v0.14.1 (#2909)
Reviewed-on: vikunja/frontend#2909
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-01-03 14:03:50 +00:00
76bb081db5 chore(deps): update dependency vitest to v0.26.3 2023-01-02 16:51:44 +00:00
8e9468228e chore(deps): update dependency rollup to v3.9.1 2023-01-02 14:04:05 +00:00
61ba2facbc chore(deps): update dependency @types/codemirror to v5.60.6 2022-12-31 11:02:14 +00:00
1bec289021 chore(deps): update dependency vue-tsc to v1.0.19 2022-12-31 11:01:28 +00:00
82b108a79d chore(deps): update dependency eslint to v8.31.0 2022-12-31 06:04:13 +00:00
54c49391d1 chore(deps): update pnpm to v7.21.0 (#2895)
Reviewed-on: vikunja/frontend#2895
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-30 16:50:17 +00:00
6ddfba4f1f
feat(cypress): remove getSettled 2022-12-30 16:39:51 +01:00
b2bf39fffa fix(deps): update dependency marked to v4.2.5 (#2880)
Reviewed-on: vikunja/frontend#2880
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-30 14:13:11 +00:00
Dominik Pschenitschni
09d13520b0 feat: enable ts for rollup-plugin-visualizer (#2897)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2897
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-12-30 13:37:31 +00:00
0d91d2845f chore(deps): update dependency rollup-plugin-visualizer to v5.9.0 (#2896)
Reviewed-on: vikunja/frontend#2896
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-30 13:13:05 +00:00
1b69b1b527 chore(deps): update dependency rollup to v3.9.0 (#2894)
Reviewed-on: vikunja/frontend#2894
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-28 08:30:18 +00:00
e14b34fca2 chore(deps): update dependency esbuild to v0.16.12 (#2893)
Reviewed-on: vikunja/frontend#2893
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-28 08:29:39 +00:00
ce5e4aad6f chore(deps): update dependency esbuild to v0.16.11 2022-12-27 02:03:43 +00:00
12e85909b2 chore(deps): update typescript-eslint monorepo to v5.47.1 (#2890)
Reviewed-on: vikunja/frontend#2890
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 20:08:47 +00:00
5c245d8921 chore(deps): update dependency @types/node to v18.11.18 (#2889)
Reviewed-on: vikunja/frontend#2889
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 20:08:10 +00:00
ee89aa3b46 chore(deps): update dependency happy-dom to v8.1.1 (#2885)
Reviewed-on: vikunja/frontend#2885
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 11:15:55 +00:00
efe22c339a chore(deps): update dependency vue-tsc to v1.0.18 (#2888)
Reviewed-on: vikunja/frontend#2888
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 10:59:09 +00:00
0aa4d1cb65 chore(deps): update pnpm to v7.20.0 (#2887)
Reviewed-on: vikunja/frontend#2887
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 08:45:09 +00:00
5b6ad786ee chore(deps): update dependency netlify-cli to v12.5.0 (#2886)
Reviewed-on: vikunja/frontend#2886
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 08:44:18 +00:00
53b4352e04 chore(deps): update dependency caniuse-lite to v1.0.30001441 (#2884)
Reviewed-on: vikunja/frontend#2884
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-26 08:43:38 +00:00
ac5b849d06 chore(deps): update dependency vue-tsc to v1.0.17 (#2883)
Reviewed-on: vikunja/frontend#2883
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-25 20:32:50 +00:00
3a8a45375c chore(deps): update dependency vite-svg-loader to v4 (#2882)
Reviewed-on: vikunja/frontend#2882
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-24 10:36:36 +00:00
93f2ccf2e6 [skip ci] Updated translations via Crowdin 2022-12-24 00:34:12 +00:00
a910b263cb chore(deps): update dependency rollup to v3.8.1 (#2879)
Reviewed-on: vikunja/frontend#2879
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-23 21:17:25 +00:00
a6e4bbebec fix(deps): update dependency @vueuse/core to v9.9.0 (#2881)
Reviewed-on: vikunja/frontend#2881
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-23 20:17:16 +00:00
96dd0aab34
fix(i18n): incorrect translation string 2022-12-23 17:19:05 +01:00
a6a0c3b121
fix(ci): sign drone config 2022-12-23 11:22:20 +01:00
367f55c04a [skip ci] Updated translations via Crowdin 2022-12-23 00:34:13 +00:00
c2fd41b80a
fix(ci): make sure the i18n sync cron job actually runs 2022-12-22 13:06:16 +01:00
373b04bd58
feat(i18n): add Norwegian translation 2022-12-22 13:05:42 +01:00
60890e4bb7 fix(deps): update sentry-javascript monorepo to v7.28.1 (#2878)
Reviewed-on: vikunja/frontend#2878
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-22 10:24:04 +00:00
aaa8a3859a chore(deps): update dependency rollup to v3.8.0 (#2877)
Reviewed-on: vikunja/frontend#2877
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-22 08:52:22 +00:00
7f886bc6ac chore(deps): update pnpm to v7.19.0 (#2875)
Reviewed-on: vikunja/frontend#2875
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-21 15:20:56 +00:00
cacb59d6e3 chore(deps): update dependency vite to v4.0.3 (#2876)
Reviewed-on: vikunja/frontend#2876
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-21 15:19:56 +00:00
017dad9b4b chore(deps): update dependency vitest to v0.26.2 (#2874)
Reviewed-on: vikunja/frontend#2874
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-21 11:23:36 +00:00
7123bbc440 chore(deps): update dependency cypress to v12.2.0 (#2873)
Reviewed-on: vikunja/frontend#2873
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-21 09:39:42 +00:00
4eb63452cb fix(deps): update sentry-javascript monorepo to v7.28.0 2022-12-20 17:13:54 +00:00
4ee201e7bd fix(deps): update dependency @vueuse/core to v9.8.2 2022-12-20 15:03:43 +00:00
7eb971890c fix(deps): update dependency @vueuse/core to v9.8.1 (#2870)
Reviewed-on: vikunja/frontend#2870
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-20 14:14:58 +00:00
872197414d chore(deps): update dependency vitest to v0.26.1 2022-12-20 12:53:40 +00:00
59b99407cc fix(deps): update dependency @vueuse/core to v9.8.0 2022-12-20 12:51:57 +00:00
f5d30ccd44 fix(deps): update dependency codemirror to v5.65.11 2022-12-20 11:03:43 +00:00
46f89bd5ed chore(deps): update dependency vue-tsc to v1.0.16 (#2867)
Reviewed-on: vikunja/frontend#2867
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-20 09:14:33 +00:00
65167c5989 chore(deps): update dependency sass to v1.57.1 (#2866)
Reviewed-on: vikunja/frontend#2866
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-20 07:23:10 +00:00
e8b46829dd chore(deps): update dependency esbuild to v0.16.10 (#2865)
Reviewed-on: vikunja/frontend#2865
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-20 07:22:38 +00:00
865172951a chore(deps): update typescript-eslint monorepo to v5.47.0 (#2864)
Reviewed-on: vikunja/frontend#2864
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-19 18:14:54 +00:00
f152a84847 chore(deps): update dependency netlify-cli to v12.4.0 (#2862)
Reviewed-on: vikunja/frontend#2862
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-19 07:57:24 +00:00
c09fbe9abe
fix(migration): actually pass migration oauth code from query param 2022-12-18 20:38:38 +01:00
a6bafe1a9a chore(deps): update dependency vite to v4.0.2 (#2861)
Reviewed-on: vikunja/frontend#2861
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-18 12:17:39 +00:00
3dfb8b858e
chore: 0.20.2 release preperations 2022-12-18 12:23:51 +01:00
ebccd6f411 chore(deps): update dependency @types/node to v18.11.17 (#2858)
Reviewed-on: vikunja/frontend#2858
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-18 11:16:10 +00:00
f465576baa chore(deps): update dependency esbuild to v0.16.9 (#2859)
Reviewed-on: vikunja/frontend#2859
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-18 10:43:41 +00:00
25b082c45d chore(deps): update dependency vue-tsc to v1.0.14 (#2860)
Reviewed-on: vikunja/frontend#2860
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-18 10:04:35 +00:00
3e42eeba2c chore(deps): update dependency sass to v1.57.0 (#2856)
Reviewed-on: vikunja/frontend#2856
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-17 10:19:44 +00:00
263265157a chore(deps): update dependency esbuild to v0.16.8 (#2854)
Reviewed-on: vikunja/frontend#2854
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-17 09:05:23 +00:00
fc95c8e2be chore(deps): update dependency rollup to v3.7.5 (#2857)
Reviewed-on: vikunja/frontend#2857
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-17 09:04:25 +00:00
f58013fc32 chore(deps): update dependency eslint to v8.30.0 2022-12-17 00:06:14 +00:00
563ff7b20e chore(deps): update dependency @types/node to v18.11.16 (#2853)
Reviewed-on: vikunja/frontend#2853
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-16 21:18:15 +00:00
44821b4f24 chore(deps): update dependency wait-on to v7 (#2852)
Reviewed-on: vikunja/frontend#2852
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-16 20:53:31 +00:00
344b38bf93 fix(deps): update dependency @vueuse/core to v9.7.0 (#2851)
Reviewed-on: vikunja/frontend#2851
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-16 16:20:03 +00:00
f6171935ca
fix(tasks): translation for multiple related tasks now works
Resolves https://github.com/go-vikunja/frontend/issues/98
2022-12-16 14:42:58 +01:00
5f96407dc0 fix(deps): update sentry-javascript monorepo to v7.27.0 (#2850)
Reviewed-on: vikunja/frontend#2850
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-16 13:24:53 +00:00
Dominik Pschenitschni
b6a89a0cde feat: use variable fonts with subsetting (#2817)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2817
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-12-15 21:37:02 +00:00
a3978bb359 chore(deps): update dependency esbuild to v0.16.7 2022-12-14 23:05:51 +00:00
43eb7c4abf chore(deps): update dependency esbuild to v0.16.6 (#2848)
Reviewed-on: vikunja/frontend#2848
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-14 07:19:37 +00:00
6dd566ba46 chore(deps): update dependency @types/node to v18.11.15 2022-12-13 22:05:16 +00:00
Dominik Pschenitschni
318e8c83a6 fix: vite.config imports (#2843)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2843
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-12-13 19:02:23 +00:00
Dominik Pschenitschni
f6c6f52abe feat: use vite preview for serve:dist:dev (#2842)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2842
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-12-13 19:01:56 +00:00
Dominik Pschenitschni
c449925826 fix(bug-report.yml): list (#2845)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2845
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-12-13 19:00:50 +00:00
c6eb72bdeb chore(deps): update dependency esbuild to v0.16.5 (#2846)
Reviewed-on: vikunja/frontend#2846
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-13 18:15:34 +00:00
aecfe7e15f fix(deps): update sentry-javascript monorepo to v7.26.0 2022-12-13 17:03:45 +00:00
f3a7093ed8 chore(deps): update dependency vitest to v0.25.8 2022-12-13 11:03:48 +00:00
b37ae37116 chore(deps): update dependency rollup to v3.7.4 (#2840)
Reviewed-on: vikunja/frontend#2840
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-13 10:30:01 +00:00
a3a482769d chore(deps): update dependency cypress to v12.1.0 (#2838)
Reviewed-on: vikunja/frontend#2838
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-13 08:36:05 +00:00
7cc6cf233f chore(deps): update dependency @types/node to v18.11.14 (#2839)
Reviewed-on: vikunja/frontend#2839
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-13 08:35:15 +00:00
ce529579c3 chore(deps): update dependency @4tw/cypress-drag-drop to v2.2.3 (#2836)
Reviewed-on: vikunja/frontend#2836
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 22:08:18 +00:00
7680c82ce1 chore(deps): update typescript-eslint monorepo to v5.46.1 (#2837)
Reviewed-on: vikunja/frontend#2837
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 22:07:10 +00:00
1bb6bedd6e chore(deps): update pnpm to v7.18.2 (#2834)
Reviewed-on: vikunja/frontend#2834
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 22:06:35 +00:00
4b29e3d9dd chore(deps): update dependency vite to v4 (#2816)
Reviewed-on: vikunja/frontend#2816
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 20:15:40 +00:00
00b869c727 fix(deps): update sentry-javascript monorepo to v7.25.0 2022-12-12 13:03:44 +00:00
fe2db90c4a chore(deps): update dependency vue-tsc to v1.0.13 (#2832)
Reviewed-on: vikunja/frontend#2832
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 10:32:57 +00:00
5b566178b3 chore(deps): update dependency rollup to v3.7.3 (#2825)
Reviewed-on: vikunja/frontend#2825
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 10:32:10 +00:00
c887e15421 chore(deps): update dependency vite-plugin-pwa to v0.14.0 (#2833)
Reviewed-on: vikunja/frontend#2833
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 10:31:07 +00:00
99813772ef chore(deps): update dependency netlify-cli to v12.2.10 (#2829)
Reviewed-on: vikunja/frontend#2829
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 10:30:32 +00:00
4d280a26d3 fix(deps): update dependency @intlify/unplugin-vue-i18n to v0.8.1 (#2826)
Reviewed-on: vikunja/frontend#2826
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 09:35:23 +00:00
6d6922c90b chore(deps): update dependency caniuse-lite to v1.0.30001439 (#2828)
Reviewed-on: vikunja/frontend#2828
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 09:34:53 +00:00
ab65276e6b chore(deps): update dependency postcss to v8.4.20 (#2827)
Reviewed-on: vikunja/frontend#2827
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 09:34:12 +00:00
3b6dfcec78 chore(deps): update dependency happy-dom to v8 (#2831)
Reviewed-on: vikunja/frontend#2831
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-12 09:33:05 +00:00
a72cd31202 [skip ci] Updated translations via Crowdin 2022-12-11 00:30:17 +00:00
2141171529
fix(task): move task color bubble next to task index and done badge on mobile 2022-12-10 22:28:19 +01:00
9b050846a4
Revert "feat: use img for logo so that it's not part of the main bundle (#2684)"
This reverts commit 02de481297.
2022-12-10 22:21:50 +01:00
f6b8d2c4ca chore(deps): update dependency @types/node to v18.11.13 (#2823)
Reviewed-on: vikunja/frontend#2823
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-10 21:18:26 +00:00
86119ff414 chore(deps): update dependency vitest to v0.25.7 (#2824)
Reviewed-on: vikunja/frontend#2824
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-10 20:25:24 +00:00
7c5622af11 chore(deps): update dependency esbuild to v0.16.4 (#2821)
Reviewed-on: vikunja/frontend#2821
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-10 09:04:33 +00:00
6ac3ce65b4 chore(deps): update dependency rollup to v3.7.2 (#2822)
Reviewed-on: vikunja/frontend#2822
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-10 09:03:41 +00:00
07f9784e0d chore(deps): update dependency rollup to v3.7.1 (#2820)
Reviewed-on: vikunja/frontend#2820
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 20:12:45 +00:00
fb751236d1 chore(deps): update dependency @cypress/vite-dev-server to v5.0.2 (#2819)
Reviewed-on: vikunja/frontend#2819
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 18:51:31 +00:00
396943b3a6 chore(deps): update dependency @vitejs/plugin-legacy to v3.0.1 (#2818)
Reviewed-on: vikunja/frontend#2818
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 14:23:13 +00:00
b8a19ac88a fix(deps): update dependency pinia to v2.0.28 (#2815)
Reviewed-on: vikunja/frontend#2815
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 11:33:27 +00:00
02fac73e07 chore(deps): update dependency @vitejs/plugin-legacy to v3 (#2813)
Reviewed-on: vikunja/frontend#2813
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 11:32:49 +00:00
21e52c3b1f chore(deps): update dependency @vitejs/plugin-vue to v4 (#2814)
Reviewed-on: vikunja/frontend#2814
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 10:17:24 +00:00
213ef84586 chore(deps): update dependency cypress to v12.0.2 (#2807)
Reviewed-on: vikunja/frontend#2807
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 10:14:38 +00:00
25852ffac3 chore(deps): update dependency @types/node to v18.11.12 (#2808)
Reviewed-on: vikunja/frontend#2808
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 10:14:10 +00:00
1255b50ed7 chore(deps): update dependency vue-tsc to v1.0.12 (#2811)
Reviewed-on: vikunja/frontend#2811
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 10:13:23 +00:00
afe8198158 chore(deps): update dependency @types/marked to v4.0.8 (#2812)
Reviewed-on: vikunja/frontend#2812
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 09:34:43 +00:00
abe43c4ef8 chore(deps): update dependency sass to v1.56.2 (#2810)
Reviewed-on: vikunja/frontend#2810
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 09:33:58 +00:00
8d5ddd695a chore(deps): update dependency esbuild to v0.16.3 (#2809)
Reviewed-on: vikunja/frontend#2809
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 09:33:28 +00:00
a0087bc34a chore(deps): update dependency @cypress/vite-dev-server to v5.0.1 (#2806)
Reviewed-on: vikunja/frontend#2806
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-09 09:32:51 +00:00
18a73c39e5 chore(deps): update dependency vitest to v0.25.6 (#2804)
Reviewed-on: vikunja/frontend#2804
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-08 11:14:02 +00:00
e0351495ff chore(deps): update typescript-eslint monorepo to v5.46.0 (#2803)
Reviewed-on: vikunja/frontend#2803
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-08 10:26:51 +00:00
b97e045118 chore(deps): update dependency esbuild to v0.16.2 (#2802)
Reviewed-on: vikunja/frontend#2802
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-08 09:32:28 +00:00
a052305adf chore(deps): update dependency rollup to v3.7.0 (#2801)
Reviewed-on: vikunja/frontend#2801
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-08 09:30:16 +00:00
237de35b25 chore(deps): update dependency typescript to v4.9.4 (#2800)
Reviewed-on: vikunja/frontend#2800
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-08 09:29:39 +00:00
85beebf0d8 fix(deps): update sentry-javascript monorepo to v7.24.2 (#2799)
Reviewed-on: vikunja/frontend#2799
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-07 20:14:23 +00:00
e81b216f85 fix(deps): update sentry-javascript monorepo to v7.24.1 (#2798)
Reviewed-on: vikunja/frontend#2798
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-07 13:32:51 +00:00
fc9e75e9b3 fix(deps): update sentry-javascript monorepo to v7.24.0 (#2797)
Reviewed-on: vikunja/frontend#2797
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-07 11:15:30 +00:00
b576621569 chore(deps): update dependency cypress to v12.0.1 (#2794)
Reviewed-on: vikunja/frontend#2794
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-07 10:12:16 +00:00
08a031ca07 chore(deps): update dependency esbuild to v0.16.1 (#2795)
Reviewed-on: vikunja/frontend#2795
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-07 09:13:46 +00:00
d306bb967c fix(deps): update dependency marked to v4.2.4 (#2796)
Reviewed-on: vikunja/frontend#2796
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-07 09:12:25 +00:00
3f6a64d7f9 chore(deps): update dependency vitest to v0.25.5 (#2793)
Reviewed-on: vikunja/frontend#2793
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-06 21:48:16 +00:00
2d392c9973 chore(deps): update dependency cypress to v12 (#2792)
Reviewed-on: vikunja/frontend#2792
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-06 18:47:02 +00:00
9897bc9b43 fix(deps): update dependency dayjs to v1.11.7 (#2791)
Reviewed-on: vikunja/frontend#2791
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-06 16:25:41 +00:00
92546f4b34 chore(deps): update pnpm to v7.18.1 (#2790)
Reviewed-on: vikunja/frontend#2790
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-06 14:35:50 +00:00
8d326aca03 chore(deps): update dependency @types/node to v18.11.11 (#2789)
Reviewed-on: vikunja/frontend#2789
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 21:13:45 +00:00
4bf9284b38 chore(deps): update dependency vitest to v0.25.4 (#2788)
Reviewed-on: vikunja/frontend#2788
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 19:14:26 +00:00
0de9376b2b chore(deps): update typescript-eslint monorepo to v5.45.1 (#2787)
Reviewed-on: vikunja/frontend#2787
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 18:38:15 +00:00
0602f6693b chore(deps): update dependency rollup to v3.6.0 (#2786)
Reviewed-on: vikunja/frontend#2786
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 12:14:06 +00:00
7d5cde53e3 chore(deps): update dependency vite to v3.2.5 (#2785)
Reviewed-on: vikunja/frontend#2785
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 09:27:20 +00:00
8361640559 chore(deps): update dependency happy-dom to v7.7.2 (#2781)
Reviewed-on: vikunja/frontend#2781
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 08:13:36 +00:00
517a6cea1e chore(deps): update dependency netlify-cli to v12.2.8 (#2782)
Reviewed-on: vikunja/frontend#2782
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 07:40:17 +00:00
ed4dd93bba chore(deps): update dependency esbuild to v0.15.18 (#2783)
Reviewed-on: vikunja/frontend#2783
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 07:39:38 +00:00
d50de97490 chore(deps): update dependency @vue/test-utils to v2.2.6 (#2784)
Reviewed-on: vikunja/frontend#2784
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 07:38:49 +00:00
aa719d3a68 chore(deps): update dependency caniuse-lite to v1.0.30001436 (#2780)
Reviewed-on: vikunja/frontend#2780
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-05 07:38:08 +00:00
463d22b07c
fix(quick add magic): don't create a new label multiple times if it is used in multiple tasks
Resolves https://github.com/go-vikunja/frontend/issues/94
2022-12-04 20:19:43 +01:00
33494cab6b chore(deps): update dependency esbuild to v0.15.17 (#2779)
Reviewed-on: vikunja/frontend#2779
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-04 12:51:12 +00:00
8fa922a0ca chore(deps): update pnpm to v7.18.0 (#2778)
Reviewed-on: vikunja/frontend#2778
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-03 23:19:41 +00:00
e5815e21cb chore(deps): update dependency @cypress/vite-dev-server to v5 (#2776)
Reviewed-on: vikunja/frontend#2776
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-03 10:12:17 +00:00
529b47e488 chore(deps): update dependency vue-tsc to v1.0.11 (#2777)
Reviewed-on: vikunja/frontend#2777
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-03 09:33:19 +00:00
63c3e4ea58 chore(deps): update dependency @cypress/vue to v5.0.3 (#2775)
Reviewed-on: vikunja/frontend#2775
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-03 09:32:32 +00:00
d52e917357 chore(deps): update dependency eslint to v8.29.0 (#2774)
Reviewed-on: vikunja/frontend#2774
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-03 09:31:53 +00:00
b2da4fd126
fix(task): pass a list specified via quick add magic down to all subtasks created via indention
Resolves vikunja/frontend#2771
2022-12-02 18:39:52 +01:00
83fb8c3ded
fix(tasks): missing space when showing parent tasks and list title
See vikunja/frontend#2771
2022-12-02 18:05:48 +01:00
Dominik Pschenitschni
b44d11cfc0 feat: add @intlify/unplugin-vue-i18n (#2772)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2772
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-12-02 15:16:15 +00:00
d4133b9e78 chore(deps): update dependency @vue/test-utils to v2.2.5 (#2773)
Reviewed-on: vikunja/frontend#2773
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-02 14:27:23 +00:00
c478926038 fix(deps): update sentry-javascript monorepo to v7.23.0 2022-12-01 17:03:38 +00:00
00e40a0f53 chore(deps): update dependency rollup to v3.5.1 (#2769)
Reviewed-on: vikunja/frontend#2769
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-12-01 07:23:21 +00:00
0567ba2a47 chore(deps): update dependency @types/node to v18.11.10 (#2768)
Reviewed-on: vikunja/frontend#2768
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-30 21:39:34 +00:00
Dominik Pschenitschni
3b95824f58 feat: use Intl.DateTimeFormat for gantt weekdays (#2766)
Fixes vikunja/frontend#2728

Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2766
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-30 15:58:04 +00:00
963f3bfb07 fix(deps): update sentry-javascript monorepo to v7.22.0 (#2765)
Reviewed-on: vikunja/frontend#2765
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-29 14:16:53 +00:00
d1c05eb3fb chore(deps): update dependency vue-tsc to v1.0.10 (#2764)
Reviewed-on: vikunja/frontend#2764
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-29 14:15:48 +00:00
2326e50d5d fix(deps): update dependency ufo to v1.0.1 (#2763)
Reviewed-on: vikunja/frontend#2763
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-29 13:13:46 +00:00
b7fa1a3ca1 [skip ci] Updated translations via Crowdin 2022-11-29 00:29:59 +00:00
a3e1e43ec7 chore(deps): update typescript-eslint monorepo to v5.45.0 (#2762)
Reviewed-on: vikunja/frontend#2762
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-28 18:15:03 +00:00
39f163df4a fix(deps): update dependency @kyvg/vue3-notification to v2.7.0 (#2761)
Reviewed-on: vikunja/frontend#2761
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-28 11:13:49 +00:00
f0e8ff93ff chore(deps): update dependency netlify-cli to v12.2.7 (#2760)
Reviewed-on: vikunja/frontend#2760
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-28 10:13:47 +00:00
Dominik Pschenitschni
3ee0bc345d feat: remove useRouteQuery (#2751)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2751
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-28 09:06:07 +00:00
b4ffee8929 chore(deps): update dependency caniuse-lite to v1.0.30001434 (#2759)
Reviewed-on: vikunja/frontend#2759
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-28 09:04:04 +00:00
e3c3d3ee53 fix(deps): update dependency pinia to v2.0.27 (#2757)
Reviewed-on: vikunja/frontend#2757
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-28 09:03:03 +00:00
67e7b94f5d chore(deps): update dependency esbuild to v0.15.16 2022-11-27 17:03:30 +00:00
6bbddeae8c chore(deps): update pnpm to v7.17.1 (#2755)
Reviewed-on: vikunja/frontend#2755
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-27 09:49:01 +00:00
94a0e1e25f chore(deps): update dependency rollup to v3.5.0 (#2756)
Reviewed-on: vikunja/frontend#2756
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-27 09:48:26 +00:00
4df9bc33df fix(deps): update dependency @infectoone/vue-ganttastic to v2.1.3 2022-11-26 18:03:30 +00:00
5c64e8a2d7 [skip ci] Updated translations via Crowdin 2022-11-25 00:12:02 +00:00
e10791f28c chore(deps): update dependency eslint-plugin-vue to v9.8.0 (#2753)
Reviewed-on: vikunja/frontend#2753
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-24 07:44:19 +00:00
44b58ff34b [skip ci] Updated translations via Crowdin 2022-11-24 00:11:48 +00:00
da17f78d30 fix(deps): update dependency highlight.js to v11.7.0 (#2752)
Reviewed-on: vikunja/frontend#2752
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-23 23:15:37 +00:00
61cdb7a91f chore(deps): update dependency @cypress/vue to v5.0.2 2022-11-23 19:03:58 +00:00
1b8ed9417a fix(deps): update dependency pinia to v2.0.26 2022-11-23 14:04:04 +00:00
4657da8c90 fix(deps): update sentry-javascript monorepo to v7.21.1 (#2747)
Reviewed-on: vikunja/frontend#2747
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-23 12:41:33 +00:00
6cd2908040 chore(deps): update dependency @4tw/cypress-drag-drop to v2.2.2 2022-11-23 09:03:55 +00:00
4dd99ae6fc fix(deps): update sentry-javascript monorepo to v7.21.0 2022-11-22 20:22:49 +00:00
0d5fa1326d chore(deps): update dependency cypress to v11.2.0 2022-11-22 20:03:57 +00:00
dd692de7c4 chore(deps): update dependency vitest to v0.25.3 (#2743)
Reviewed-on: vikunja/frontend#2743
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-22 13:26:18 +00:00
Dominik Pschenitschni
93d95b0821 feat: use fetch instead of axios for deploy preview (#2719)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2719
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-22 13:11:26 +00:00
Dominik Pschenitschni
422e731fe0 fix: add all json files in src (#2737)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2737
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-22 13:08:32 +00:00
Dominik Pschenitschni
7db79ff04e fix: only load buckets if listId set (#2741)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2741
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-22 13:00:36 +00:00
59cc241226 fix(deps): update vueuse to v9.6.0 (#2742)
Reviewed-on: vikunja/frontend#2742
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-22 12:58:21 +00:00
2ac2e95cf2 chore(deps): update typescript-eslint monorepo to v5.44.0 2022-11-22 09:32:54 +00:00
f8ce3d6ed6 chore(deps): update dependency rollup to v3.4.0 2022-11-22 06:04:25 +00:00
93f33d9647 [skip ci] Updated translations via Crowdin 2022-11-22 00:12:21 +00:00
6d32b22da3 fix(deps): update dependency pinia to v2.0.25 2022-11-21 22:04:33 +00:00
b333898595 fix(deps): update sentry-javascript monorepo to v7.20.1 2022-11-21 13:04:18 +00:00
ccc633f3d9 fix(deps): update dependency codemirror to v5.65.10 2022-11-21 10:39:30 +00:00
d39b0675d3 fix(deps): update dependency marked to v4.2.3 2022-11-21 10:38:45 +00:00
274092bfc4 chore(deps): update pnpm to v7.17.0 2022-11-21 10:38:05 +00:00
cb2c032e60 chore(deps): update dependency @vue/test-utils to v2.2.4 2022-11-21 10:37:06 +00:00
fdf294bcb3 chore(deps): update dependency netlify-cli to v12.2.4 2022-11-21 10:36:15 +00:00
58baa5960c chore(deps): update dependency esbuild to v0.15.15 2022-11-21 05:04:34 +00:00
e948678e42 chore(deps): update dependency eslint to v8.28.0 2022-11-19 01:04:33 +00:00
Dominik Pschenitschni
5ccedc6f67 [skip ci] Updated translations via Crowdin 2022-11-19 00:12:18 +00:00
74ad98de68 fix: icon offset and color 2022-11-18 15:49:38 +00:00
3282f55c34 chore: add TODO comment 2022-11-18 15:49:38 +00:00
d9984b28f7 feat: move link color location together 2022-11-18 15:49:38 +00:00
4fc7b9c67e feat: group navigation styles further 2022-11-18 15:49:38 +00:00
ff9efe7889 feat: outdent navigation logo styles 2022-11-18 15:49:38 +00:00
66be0e6ac4 feat: undent and order navigation css 2022-11-18 15:49:38 +00:00
Dominik Pschenitschni
da8df8b667 feat: move avatar class to where it is used (#2725)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2725
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-18 13:30:41 +00:00
42e9f306e8
feat: grid for list cards 2022-11-18 14:04:20 +01:00
Angelo Delicato
4b47478440
feat: change list-content style (#91)
Co-authored-by: thelicato <thelicato@users.noreply.github.com>
Reviewed-on: https://github.com/go-vikunja/frontend/pull/91
2022-11-17 17:35:06 +01:00
Dominik Pschenitschni
b42e4cca59 feat: more horizontal space on mobile (#2722)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2722
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-17 16:17:18 +00:00
Dominik Pschenitschni
33d4efecc4 feat: move useAutoHeightTextarea to composable (#2723)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2723
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-17 15:39:34 +00:00
Dominik Pschenitschni
45ec1623d5 feat: remove edit-task from list view (#2721)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2721
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-17 15:35:18 +00:00
Dominik Pschenitschni
8ef309243d feat: improve loadTask logic (#2715)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2715
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-17 15:31:21 +00:00
Dominik Pschenitschni
3aaacf4533 fix: remove vuex leftover from setModuleLoading (#2716)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2716
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-17 15:02:26 +00:00
0350e37fbb fix(deps): update sentry-javascript monorepo to v7.20.0 (#2720)
Reviewed-on: vikunja/frontend#2720
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-17 12:13:40 +00:00
244c436202 fix(deps): update dependency pinia to v2.0.24 2022-11-17 08:04:15 +00:00
18d0c8ba2c [skip ci] Updated translations via Crowdin 2022-11-17 00:12:14 +00:00
3891d5b876
feat: only automatically redirect to provider if the url contains ?redirectToProvider=true and it's the only one
Resolves https://github.com/go-vikunja/frontend/issues/90
2022-11-16 16:37:00 +01:00
Dominik Pschenitschni
98b38af43c feat: disable fullscreen for EasyMDE side-by-side mode (#2710)
Fixes https://github.com/go-vikunja/frontend/issues/92
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2710
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-16 14:37:03 +00:00
77ff0aa256 feat: move transition in component (#2694)
Reviewed-on: vikunja/frontend#2694
Reviewed-by: konrad <k@knt.li>
2022-11-16 14:36:17 +00:00
2ab26ee7c5 chore(deps): update pnpm to v7.16.1 (#2717)
Reviewed-on: vikunja/frontend#2717
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-16 14:16:20 +00:00
58f38bcfc3 fix(deps): update font awesome to v6.2.1 (#2712)
Reviewed-on: vikunja/frontend#2712
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-16 09:04:05 +00:00
bcb5190365 chore(deps): update dependency cypress to v11.1.0 2022-11-15 21:06:37 +00:00
c99d09c83e chore(deps): update dependency typescript to v4.9.3 2022-11-15 19:04:55 +00:00
f49ea9752d chore(deps): update dependency vite to v3.2.4 2022-11-15 14:04:41 +00:00
a56683cdc2 chore(deps): update dependency @vue/test-utils to v2.2.3 (#2707)
Reviewed-on: vikunja/frontend#2707
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-15 09:17:14 +00:00
7f4af63003 chore(deps): update dependency esbuild to v0.15.14 (#2706)
Reviewed-on: vikunja/frontend#2706
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-15 08:36:58 +00:00
8c44ed83e6
feat: use transition component everywhere 2022-11-14 22:08:54 +01:00
b388677eaf fix(deps): update dependency ufo to v1 2022-11-14 18:42:12 +00:00
bd7430b405 chore(deps): update typescript-eslint monorepo to v5.43.0 2022-11-14 18:05:00 +00:00
4baed8fe79 chore(deps): update pnpm to v7.16.0 (#2703)
Reviewed-on: vikunja/frontend#2703
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-14 16:01:36 +00:00
fdbe4e8314 chore(deps): update dependency vitest to v0.25.2 (#2702)
Reviewed-on: vikunja/frontend#2702
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-14 16:00:57 +00:00
4a7f839449 chore(deps): update dependency postcss-preset-env to v7.8.3 (#2701)
Reviewed-on: vikunja/frontend#2701
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-14 10:15:12 +00:00
c359f4d4dd chore(deps): update dependency netlify-cli to v12.1.1 (#2699)
Reviewed-on: vikunja/frontend#2699
Reviewed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-14 09:16:36 +00:00
79d6212e48 chore(deps): update dependency happy-dom to v7.7.0 2022-11-14 08:54:27 +00:00
e541213872 chore(deps): update dependency caniuse-lite to v1.0.30001431 2022-11-14 00:05:39 +00:00
Dominik Pschenitschni
fd1d01164f feature/load-views-async (#2672)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2672
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-13 21:52:28 +00:00
34edf0dc5f chore(deps): update dependency @vue/test-utils to v2.2.2 (#2696)
Reviewed-on: vikunja/frontend#2696
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-13 10:17:32 +00:00
631a19fa92
feat: move transition in own component 2022-11-12 19:32:39 +01:00
fba402fcd0
feat: reduce TaskDetailView selector specificity 2022-11-12 19:29:20 +01:00
Dominik Pschenitschni
4c4adfdf4e fix: reactive const assignment (#2692)
Resolves #2691

Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2692
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 16:14:32 +00:00
Dominik Pschenitschni
06775cf4c7 fix: use scss for datemathHelp (#2690)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2690
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 14:38:31 +00:00
c07954f2b8
feat(ci): use docker buildx for multiarch builds 2022-11-12 14:43:29 +01:00
995cc12880
fix(tasks): remove a task from its bucket when it is in the first kanban bucket
Resolves https://github.com/go-vikunja/frontend/issues/89
2022-11-12 12:13:00 +01:00
Dominik Pschenitschni
293402b6fd fix: move heading styles to component (#2686)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2686
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:52:16 +00:00
Dominik Pschenitschni
708ef2d72e feat: improve user component (#2687)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2687
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:51:35 +00:00
Dominik Pschenitschni
4c458a1ad0 fix: move createdUpdated styles to component (#2685)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2685
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:50:48 +00:00
Dominik Pschenitschni
02de481297 feat: use img for logo so that it's not part of the main bundle (#2684)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2684
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:48:52 +00:00
Dominik Pschenitschni
9d604f7a3b feat: reduce ready selector specificity (#2683)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2683
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:48:15 +00:00
Dominik Pschenitschni
0f1f131f7a feat: reduce attachments selector specificity (#2682)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2682
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:47:46 +00:00
Dominik Pschenitschni
eb4c2a4b9d feat: reduce dropdown-item selector specificity (#2680)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2680
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:46:39 +00:00
Dominik Pschenitschni
599c1ba4b5 feat: reduce ListWrapper selector specificity (#2679)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2679
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:46:00 +00:00
Dominik Pschenitschni
12a8f7ebe9 feat: reduce contentAuth selector specifity (#2677)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2677
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:45:24 +00:00
Dominik Pschenitschni
9f0f0b39f8 feat: reduce multiselect selector specificity (#2678)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2678
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-12 10:44:49 +00:00
4a550da6a6 feat: filters script setup (#2671)
Reviewed-on: vikunja/frontend#2671
2022-11-12 10:43:24 +00:00
52ba168d41 chore(deps): update dependency @types/dompurify to v2.4.0 (#2688)
Reviewed-on: vikunja/frontend#2688
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-12 10:42:19 +00:00
9c7680aa55 chore(deps): update dependency rollup to v3.3.0 (#2689)
Reviewed-on: vikunja/frontend#2689
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2022-11-12 10:41:30 +00:00
Dominik Pschenitschni
83bb030c6e [skip ci] Updated translations via Crowdin 2022-11-12 00:12:21 +00:00
Dominik Pschenitschni
163d9366d3 feat: add vite build target esnext (#2674)
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Reviewed-on: vikunja/frontend#2674
Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
2022-11-11 14:43:23 +00:00
bb58dba8e0
feat: move select filters to dedicated components 2022-11-10 17:11:56 +01:00
4bad685f39
feat: filters script setup 2022-11-10 17:11:56 +01:00
386 changed files with 21887 additions and 22122 deletions

View File

@ -15,6 +15,7 @@ trigger:
services:
- name: api
image: vikunja/api:unstable
pull: always
environment:
VIKUNJA_SERVICE_TESTINGTOKEN: averyLongSecretToSe33dtheDB
VIKUNJA_LOG_LEVEL: DEBUG
@ -41,11 +42,12 @@ steps:
# - .cache
- name: dependencies
image: node:18-alpine
image: node:20-alpine
pull: always
environment:
PNPM_CACHE_FOLDER: .cache/pnpm
CYPRESS_CACHE_FOLDER: .cache/cypress
PUPPETEER_SKIP_DOWNLOAD: true
commands:
- corepack enable && pnpm config set store-dir .cache/pnpm
- pnpm install --fetch-timeout 100000
@ -53,7 +55,7 @@ steps:
# - restore-cache
- name: lint
image: node:18-alpine
image: node:20-alpine
pull: always
environment:
PNPM_CACHE_FOLDER: .cache/pnpm
@ -64,7 +66,7 @@ steps:
- dependencies
- name: build-prod
image: node:18-alpine
image: node:20-alpine
pull: always
environment:
PNPM_CACHE_FOLDER: .cache/pnpm
@ -75,7 +77,7 @@ steps:
- dependencies
- name: test-unit
image: node:18-alpine
image: node:20-alpine
pull: always
commands:
- corepack enable && pnpm config set store-dir .cache/pnpm
@ -85,7 +87,7 @@ steps:
- name: typecheck
failure: ignore
image: node:18-alpine
image: node:20-alpine
pull: always
environment:
PNPM_CACHE_FOLDER: .cache/pnpm
@ -96,7 +98,7 @@ steps:
- dependencies
- name: test-frontend
image: cypress/browsers:node18.12.0-chrome106-ff106
image: cypress/browsers:node18.12.0-chrome107
pull: always
environment:
CYPRESS_API_URL: http://api:3456/api/v1
@ -110,8 +112,7 @@ steps:
- sed -i 's/localhost/api/g' dist/index.html
- corepack enable && pnpm config set store-dir .cache/pnpm
- pnpm cypress install
- pnpm run serve:dist & npx wait-on http://localhost:4173
- pnpm run test:frontend --browser chrome --record
- pnpm run test:e2e-record
depends_on:
- build-prod
@ -136,8 +137,9 @@ steps:
# - dependencies
- name: deploy-preview
image: node:18-alpine
image: williamjackson/netlify-cli
pull: always
user: root # The rest runs as root and thus the permissions wouldn't work
environment:
NETLIFY_AUTH_TOKEN:
from_secret: netlify_auth_token
@ -150,8 +152,10 @@ steps:
# Override the default api url used for preview
- sed -i 's|http://localhost:3456|https://try.vikunja.io|g' dist-preview/index.html
- apk add --no-cache perl-utils
- shasum -a 384 -c ./scripts/deploy-preview-netlify.js.sha384
- node ./scripts/deploy-preview-netlify.js
# create via:
# `shasum -a 384 ./scripts/deploy-preview-netlify.mjs > ./scripts/deploy-preview-netlify.mjs.sha384`
- shasum -a 384 -c ./scripts/deploy-preview-netlify.mjs.sha384
- node ./scripts/deploy-preview-netlify.mjs
depends_on:
- build-prod
when:
@ -198,13 +202,13 @@ steps:
# - .cache
- name: build
image: node:18-alpine
image: node:20-alpine
pull: always
environment:
PNPM_CACHE_FOLDER: .cache/pnpm
commands:
- apk add git
- corepack enable && pnpm config set store-dir .cache/.pnpm
- corepack enable && pnpm config set store-dir .cache/pnpm
- pnpm install --fetch-timeout 100000 --frozen-lockfile
- pnpm run lint
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json"
@ -275,7 +279,7 @@ steps:
# - .cache
- name: build
image: node:18-alpine
image: node:20-alpine
pull: always
environment:
PNPM_CACHE_FOLDER: .cache/pnpm
@ -342,111 +346,7 @@ steps:
---
kind: pipeline
type: docker
name: docker-arm-release
depends_on:
- release-latest
- release-version
platform:
os: linux
arch: arm64
trigger:
ref:
- refs/heads/main
- "refs/tags/**"
event:
exclude:
- cron
steps:
- name: docker-unstable
image: plugins/docker:linux-arm
pull: always
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: vikunja/frontend
tags: unstable-linux-arm
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=unstable
when:
ref:
- refs/heads/main
depends_on:
- clone
- name: docker-version
image: plugins/docker:linux-arm
pull: always
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: vikunja/frontend
auto_tag: true
auto_tag_suffix: linux-arm
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=${DRONE_TAG##v}
when:
ref:
- "refs/tags/**"
depends_on:
- clone
- name: docker-unstable-arm64
image: plugins/docker:linux-arm64
pull: always
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: vikunja/frontend
tags: unstable-linux-arm64
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=unstable
when:
ref:
- refs/heads/main
depends_on:
- clone
- name: docker-version-arm64
image: plugins/docker:linux-arm64
pull: always
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
type: docker
name: docker-amd64-release
platform:
os: linux
arch: amd64
name: docker-release
depends_on:
- release-latest
@ -461,8 +361,14 @@ trigger:
- cron
steps:
- name: fetch-tags
image: docker:git
commands:
- git fetch --tags
- name: docker-unstable
image: plugins/docker:linux-amd64
image: thegeeklab/drone-docker-buildx
privileged: true
pull: always
settings:
username:
@ -470,92 +376,52 @@ steps:
password:
from_secret: docker_password
repo: vikunja/frontend
tags: unstable-linux-amd64
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=unstable
when:
ref:
- refs/heads/main
- name: docker-version
image: plugins/docker:linux-amd64
pull: always
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: vikunja/frontend
auto_tag: true
auto_tag_suffix: linux-amd64
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=${DRONE_TAG##v}
when:
ref:
- "refs/tags/**"
---
kind: pipeline
type: docker
name: docker-manifest
trigger:
ref:
- refs/heads/main
- "refs/tags/**"
event:
exclude:
- cron
depends_on:
- docker-amd64-release
- docker-arm-release
steps:
- name: manifest-unstable
pull: always
image: plugins/manifest
settings:
tags: unstable
spec: docker-manifest-unstable.tmpl
password:
from_secret: docker_password
username:
from_secret: docker_username
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=unstable
platforms:
- linux/386
- linux/amd64
- linux/arm/v6
- linux/arm/v7
- linux/arm64/v8
depends_on: [ fetch-tags ]
when:
ref:
- refs/heads/main
- name: manifest-release
pull: always
image: plugins/manifest
settings:
auto_tag: true
ignore_missing: true
spec: docker-manifest.tmpl
password:
from_secret: docker_password
username:
from_secret: docker_username
- name: generate-tags
image: thegeeklab/docker-autotag
environment:
DOCKER_AUTOTAG_VERSION: ${DRONE_TAG}
DOCKER_AUTOTAG_EXTRA_TAGS: latest
DOCKER_AUTOTAG_OUTPUT_FILE: .tags
depends_on: [ fetch-tags ]
when:
ref:
- "refs/tags/**"
- name: manifest-release-latest
- name: docker-release
image: thegeeklab/drone-docker-buildx
privileged: true
pull: always
image: plugins/manifest
depends_on:
- clone
settings:
tags: latest
ignore_missing: true
spec: docker-manifest.tmpl
password:
from_secret: docker_password
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: vikunja/frontend
build_args:
- USE_RELEASE=true
- RELEASE_VERSION=${DRONE_TAG##v}
platforms:
- linux/386
- linux/amd64
- linux/arm/v6
- linux/arm/v7
- linux/arm64/v8
depends_on: [ generate-tags ]
when:
ref:
- "refs/tags/**"
@ -578,9 +444,7 @@ depends_on:
- release-version
- release-latest
- trigger-desktop-update
- docker-arm-release
- docker-amd64-release
- docker-manifest
- docker-release
steps:
- name: notify
@ -601,9 +465,6 @@ kind: pipeline
type: docker
name: update-translations
depends_on:
- build
trigger:
branch:
- main
@ -663,6 +524,6 @@ steps:
from_secret: crowdin_key
---
kind: signature
hmac: 6784e836f6568c67abfb909449c6e845cc73cbe9a31e9e7ad9166a0eb59e30a2
hmac: 511c2a090e9efd4c942980d971204adb6321540bb01c92409dd9bf8463b7f6f4
...

13
.env.local.example Normal file
View File

@ -0,0 +1,13 @@
# (1) Duplicate this file and remove the '.example' suffix.
# Naming this file '.env.local' is a Vite convention to prevent accidentally
# submitting to git.
# For more info see: https://vitejs.dev/guide/env-and-mode.html#env-files
# (2) Comment in and adjust the values as needed.
# VITE_IS_ONLINE=true
# VITE_WORKBOX_DEBUG=false
# SENTRY_AUTH_TOKEN=YOUR_TOKEN
# SENTRY_ORG=vikunja
# SENTRY_PROJECT=frontend-oss
# VIKUNJA_FRONTEND_BASE=/custom-subpath

3
.github/FUNDING.yml vendored
View File

@ -1,2 +1,3 @@
github: kolaente
custom: https://www.buymeacoffee.com/kolaente
open_collective: vikunja
custom: ["https://vikunja.cloud", "https://www.buymeacoffee.com/kolaente"]

View File

@ -1,6 +1,7 @@
name: Bug Report
description: Found something you weren't expecting? Report it here!
labels: kind/bug
labels:
- kind/bug
body:
- type: markdown
attributes:

37
.gitignore vendored
View File

@ -1,26 +1,31 @@
.DS_Store
node_modules
/dist*
*.zip
.direnv/
# local env files
.env.local
.env.*.local
# Log files
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
stats.html
pnpm-debug.log*
lerna-debug.log*
stats.html
node_modules
.DS_Store
/dist*
coverage
*.zip
.direnv/
# Test files
cypress/screenshots
cypress/videos
# local env files
.env.local
.env.*.local
# Editor directories and files
.idea
.vscode
.idea
*.suo
*.ntvs*
*.njsproj
@ -28,9 +33,9 @@ lerna-debug.log*
*.sw*
!rollup.sw.js
# Test files
cypress/screenshots
cypress/videos
# Local Netlify folder
.netlify
# histoire
.histoire

14
.npmrc
View File

@ -1,2 +1,14 @@
fetch-timeout=100000
# pnpm settings
# The following settings prepare for the new default value of pnpm 8
# they can be removed directly after having moved to pnpm 8
auto-install-peers=true
fetch-timeout=100000
dedupe-peer-dependents=true
resolve-peers-from-workspace-root=true
save-workspace-protocol=rolling
resolution-mode=lowest-direct
publishConfig.linkDirectory=true
# remove some time after having moved to pnpm 8
use-lockfile-v6=true

2
.nvmrc
View File

@ -1 +1 @@
v18
18.16.0

View File

@ -8,6 +8,7 @@
"lokalise.i18n-ally",
"mgmcdermott.vscode-language-babel",
"mikestead.dotenv",
"Syler.sass-indented"
"Syler.sass-indented",
"zixuanchen.vitest-explorer"
]
}

View File

@ -18,6 +18,12 @@
"javascriptreact",
"vue"
],
"volar.completion.preferredTagNameCase": "pascal",
// disable vetur in case it is installed
"vetur.validation.template": false,
// i18n ally
"i18n-ally.localesPaths": [
"src/i18n/lang"

View File

@ -9,6 +9,651 @@ All releases can be found on https://code.vikunja.io/frontend/releases.
The releases aim at the api versions which is why there are missing versions.
## [0.20.5] - 2023-03-12
### Bug Fixes
* *(docker)* Add cap_net_bind to the nginx binary in the docker container
* *(docker)* Revert unprivileged user
### Dependencies
* *(deps)* Update dependency sass to v1.59.2
* *(deps)* Update dependency eslint to v8.36.0
## [0.20.4] - 2023-03-10
### Bug Fixes
* *(base)* Use Build Time Base Path
* *(docker)* Cross compilation with buildx
* *(docker)* Default api url
* *(docker)* Make sure the service worker and webmanifest are never cached
* *(filter)* Validate title before creating or editing a filter
* *(filter)* Don't allow marking a filter as favorite
* *(i18n)* Load language files before doing anything else (#3218)
* *(keyboard-shortcuts)* Use card prop
* *(list)* Make sure favorite lists are not duplicated in the menu when renaming them
* *(menu)* Don't show drag handle for not draggable menu items
* *(postcss-preset-env)* Client side polyfills (#3051)
* *(quick actions)* Don't throw an error message when selecting the last items with the arrow keys
* *(quick actions)* Hide edges of last entry on hover
* *(quick add magic)* Correctly parse "next {weekday}" on the beginning of the text
* *(quick-actions)* Nothing happening on team click (#3186)
* *(table view)* Correctly load sort order from local storage
* *(task)* Allow clicking on the whole task to open the task detail view
* *(tests)* Only look in src for tests
* Make sure global error handler handles unrejected promises correctly ([4576da0](4576da0dd394ee68801b1dc424c9550896d63737))
* Use Build Time Base Path (#2964) ([6572f75](6572f75e5d111f7f2dd06e8c2ad0e0d16091fca6))
* Always show update popup on top ([7cbf0ac](7cbf0acac503c508a44e0491ae51e6d5749dfa04))
* Button styles ([d40729c](d40729cbe70b760bcc64d56130a410b05ef9d3dc))
* Stop revealing elements on hover if hover is not supported (#3191) ([7b6f76d](7b6f76d1b4698d0d6c6889aaab3f1cdad80469f8))
* Sync sidebar transition with `<main>` (#3200) ([0f97ba6](0f97ba6ec904226ed91cd3ade8223e2959e9207a))
* Collapse menu on mobile when path changes ([1b06112](1b06112db4ba5ad4144b5868dd04e954be1d77f7))
* I18ze a string (#3210) ([b4dd23b](b4dd23b85d909f7e629e953f1d8543ccbf963a1c))
### Dependencies
* *(deps)* Update sentry-javascript monorepo to v7.33.0 (#3004)
* *(deps)* Update dependency axios to v1.2.4 (#3005)
* *(deps)* Update pnpm to v7.26.0 (#3002)
* *(deps)* Update dependency cypress to v12.4.0 (#3006)
* *(deps)* Update dependency @infectoone/vue-ganttastic to v2.1.4 (#3009)
* *(deps)* Update dependency vitest to v0.28.2 (#3008)
* *(deps)* Update dependency rollup to v3.11.0 (#3013)
* *(deps)* Update dependency @vitejs/plugin-legacy to v3.0.2 (#3012)
* *(deps)* Update dependency axios to v1.2.5
* *(deps)* Update sentry-javascript monorepo to v7.34.0
* *(deps)* Update pnpm to v7.26.1
* *(deps)* Update dependency @vue/test-utils to v2.2.8
* *(deps)* Update dependency vitest to v0.28.3 (#3019)
* *(deps)* Update dependency cypress to v12.4.1
* *(deps)* Update dependency rollup to v3.12.0
* *(deps)* Update dependency esbuild to v0.17.5
* *(deps)* Update dependency axios to v1.2.6
* *(deps)* Update dependency @vueuse/core to v9.12.0
* *(deps)* Update pnpm to v7.26.2
* *(deps)* Update dependency eslint to v8.33.0
* *(deps)* Update dependency netlify-cli to v12.10.0
* *(deps)* Update dependency happy-dom to v8.2.0
* *(deps)* Update dependency caniuse-lite to v1.0.30001449
* *(deps)* Update dependency typescript to v4.9.5
* *(deps)* Update typescript-eslint monorepo to v5.50.0
* *(deps)* Update dependency axios to v1.3.0 (#3036)
* *(deps)* Update dependency sass to v1.58.0
* *(deps)* Update dependency cypress to v12.5.0
* *(deps)* Update pnpm to v7.26.3
* *(deps)* Update dependency rollup to v3.12.1
* *(deps)* Update sentry-javascript monorepo to v7.35.0 (#3041)
* *(deps)* Update dependency pinia to v2.0.30 (#3042)
* *(deps)* Update dependency @vue/test-utils to v2.2.9
* *(deps)* Update dependency axios to v1.3.1
* *(deps)* Update dependency vue to v3.2.47
* *(deps)* Update dependency vite to v4.1.0
* *(deps)* Update dependency postcss-preset-env to v8 (#3000)
* *(deps)* Update dependency @vitejs/plugin-legacy to v4
* *(deps)* Update dependency @vitejs/plugin-legacy to v4.0.1
* *(deps)* Update sentry-javascript monorepo to v7.36.0
* *(deps)* Update dependency vite to v4.1.1
* *(deps)* Update dependency cypress to v12.5.1
* *(deps)* Update dependency @vue/test-utils to v2.2.10
* *(deps)* Update dependency vitest to v0.28.4
* *(deps)* Update dependency rollup to v3.13.0
* *(deps)* Update dependency axios to v1.3.2
* *(deps)* Update dependency rollup to v3.14.0
* *(deps)* Update dependency @types/node to v18.11.19
* *(deps)* Update dependency @histoire/plugin-screenshot to v0.13.0
* *(deps)* Update dependency histoire to v0.13.0
* *(deps)* Update caniuse-and-related
* *(deps)* Update dependency @histoire/plugin-vue to v0.13.0
* *(deps)* Update dependency happy-dom to v8.2.6
* *(deps)* Update typescript-eslint monorepo to v5.51.0
* *(deps)* Update dependency esbuild to v0.17.6
* *(deps)* Update dependency @cypress/vue to v5.0.4
* *(deps)* Update dependency @types/node to v18.13.0
* *(deps)* Update dependency vite-plugin-pwa to v0.14.2
* *(deps)* Update font awesome to v6.3.0
* *(deps)* Update pnpm to v7.27.0
* *(deps)* Update dependency @histoire/plugin-screenshot to v0.13.1
* *(deps)* Update dependency @histoire/plugin-vue to v0.13.1
* *(deps)* Update dependency vite-plugin-pwa to v0.14.3
* *(deps)* Update dependency histoire to v0.13.1
* *(deps)* Update dependency @histoire/plugin-screenshot to v0.13.2
* *(deps)* Update dependency @histoire/plugin-vue to v0.13.2
* *(deps)* Update dependency histoire to v0.13.2
* *(deps)* Update dependency @intlify/unplugin-vue-i18n to v0.8.2
* *(deps)* Update sentry-javascript monorepo to v7.37.0
* *(deps)* Update dependency esbuild to v0.17.7
* *(deps)* Update dependency rollup to v3.15.0
* *(deps)* Create a group for all histoire dependencies
* *(deps)* Update dependency @histoire/plugin-vue to v0.14.0
* *(deps)* Update dependency @histoire/plugin-screenshot to v0.14.0
* *(deps)* Update dependency @histoire/plugin-vue to v0.14.0
* *(deps)* Update dependency histoire to v0.14.0
* *(deps)* Update sentry-javascript monorepo to v7.37.1
* *(deps)* Update dependency histoire to v0.14.2
* *(deps)* Include histoire main package in histoire renovate group
* *(deps)* Histoire renovate group
* *(deps)* Update dependency eslint to v8.34.0
* *(deps)* Update histoire to v0.14.2
* *(deps)* Update dependency vite-plugin-pwa to v0.14.4
* *(deps)* Update dependency esbuild to v0.17.8
* *(deps)* Update dependency netlify-cli to v12.12.0
* *(deps)* Update dependency caniuse-lite to v1.0.30001451
* *(deps)* Update dependency vite-plugin-inject-preload to v1.3.0
* *(deps)* Update dependency vitest to v0.28.5
* *(deps)* Update sentry-javascript monorepo to v7.37.2
* *(deps)* Update dependency dompurify to v3 (#3107)
* *(deps)* Update typescript-eslint monorepo to v5.52.0
* *(deps)* Update dependency axios to v1.3.3
* *(deps)* Update dependency start-server-and-test to v1.15.4 (#3109)
* *(deps)* Update dependency sass to v1.58.1
* *(deps)* Update dependency vue-flatpickr-component to v11.0.2 (#3112)
* *(deps)* Update dependency @kyvg/vue3-notification to v2.9.0 (#3113)
* *(deps)* Update histoire to v0.15.1
* *(deps)* Update histoire to v0.15.3
* *(deps)* Update dependency vue-tsc to v1.1.0
* *(deps)* Pin node.js to 18.14.0
* *(deps)* Update dependency cypress to v12.6.0 (#3115)
* *(deps)* Update histoire to v0.15.4
* *(deps)* Update dependency vue-tsc to v1.1.2
* *(deps)* Update dependency sass to v1.58.2
* *(deps)* Update dependency ufo to v1.1.0
* *(deps)* Update node.js to v18.14.1
* *(deps)* Update dependency vite to v4.1.2
* *(deps)* Update sentry-javascript monorepo to v7.38.0
* *(deps)* Update dependency rollup to v3.16.0
* *(deps)* Update histoire to v0.15.7
* *(deps)* Update dependency blurhash to v2.0.5
* *(deps)* Update dependency @cypress/vite-dev-server to v5.0.3
* *(deps)* Update dependency @types/node to v18.14.0
* *(deps)* Update histoire to v0.15.8
* *(deps)* Update dependency @vueuse/core to v9.13.0
* *(deps)* Update dependency rollup to v3.17.0
* *(deps)* Update pnpm to v7.27.1
* *(deps)* Update dependency vue-tsc to v1.1.3
* *(deps)* Update dependency sass to v1.58.3
* *(deps)* Update dependency rollup to v3.17.1
* *(deps)* Update dependency esbuild to v0.17.9
* *(deps)* Update dependency vite to v4.1.3
* *(deps)* Update dependency @vue/test-utils to v2.3.0
* *(deps)* Update dependency caniuse-lite to v1.0.30001457
* *(deps)* Update dependency codemirror to v5.65.12
* *(deps)* Update dependency pinia to v2.0.31
* *(deps)* Update dependency vue-tsc to v1.1.4
* *(deps)* Update dependency rollup to v3.17.2
* *(deps)* Update dependency happy-dom to v8.6.0
* *(deps)* Update dependency netlify-cli to v12.13.2
* *(deps)* Update dependency esbuild to v0.17.10
* *(deps)* Update typescript-eslint monorepo to v5.53.0
* *(deps)* Update dependency vue-tsc to v1.1.5
* *(deps)* Update dependency pinia to v2.0.32
* *(deps)* Update node.js to v18.14.2
* *(deps)* Update dependency vite to v4.1.4
* *(deps)* Update dependency vue-tsc to v1.1.7
* *(deps)* Update dependency axios to v1.3.4
* *(deps)* Update dependency @types/node to v18.14.1
* *(deps)* Update dependency @cypress/vite-dev-server to v5.0.4
* *(deps)* Update dependency cypress to v12.7.0
* *(deps)* Update dependency vue-tsc to v1.2.0
* *(deps)* Update dependency vitest to v0.29.1
* *(deps)* Update pnpm to v7.28.0
* *(deps)* Update dependency eslint to v8.35.0
* *(deps)* Update dependency rollup to v3.17.3
* *(deps)* Update dependency netlify-cli to v13
* *(deps)* Update dependency happy-dom to v8.9.0
* *(deps)* Update dependency caniuse-lite to v1.0.30001458
* *(deps)* Update dependency start-server-and-test to v1.15.5
* *(deps)* Update dependency start-server-and-test to v2
* *(deps)* Update dependency @types/node to v18.14.2
* *(deps)* Update sentry-javascript monorepo to v7.39.0
* *(deps)* Update typescript-eslint monorepo to v5.54.0
* *(deps)* Update dependency ufo to v1.1.1
* *(deps)* Update dependency vitest to v0.29.2
* *(deps)* Update dependency rollup to v3.18.0
* *(deps)* Update dependency dompurify to v3.0.1
* *(deps)* Update sentry-javascript monorepo to v7.40.0
* *(deps)* Update dependency @types/node to v18.14.4
* *(deps)* Update dependency @types/node to v18.14.5
* *(deps)* Update dependency @types/node to v18.14.6
* *(deps)* Update dependency esbuild to v0.17.11
* *(deps)* Update dependency netlify-cli to v13.0.1
* *(deps)* Update dependency caniuse-lite to v1.0.30001460
* *(deps)* Update pnpm to v7.29.0
* *(deps)* Update sentry-javascript monorepo to v7.41.0
* *(deps)* Update typescript-eslint monorepo to v5.54.1
* *(deps)* Update dependency pinia to v2.0.33
* *(deps)* Update node.js to v18.15.0
* *(deps)* Update dependency @intlify/unplugin-vue-i18n to v0.9.0
* *(deps)* Update pnpm to v7.29.1
* *(deps)* Update dependency @vue/test-utils to v2.3.1
* *(deps)* Update dependency @intlify/unplugin-vue-i18n to v0.9.1
* *(deps)* Update sentry-javascript monorepo to v7.42.0
* *(deps)* Update dependency rollup to v3.19.0
* *(deps)* Update dependency vite-plugin-inject-preload to v1.3.1
* *(deps)* Update dependency @types/node to v18.15.0
* *(deps)* Update dependency autoprefixer to v10.4.14
* *(deps)* Update dependency rollup to v3.19.1
### Features
* *(config)* Support Setting Base Path in .env
* Use v-show for navigation buttons ([7ed1a37](7ed1a37de53cb8c15994e9524a52080170db5950))
* Unindent settings page (#2996) ([13a39be](13a39be3de4d0f7e0f6be9c20e0464e86b87c676))
* Small content auth improvements (#2998) ([2be7847](2be784766f54810f8969e48291ce9181f2854a5b))
* Move update from navigation to app ([3db5ea4](3db5ea45d768d10458eaab0f5ee9dad0df2996e4))
* Improve naming and styles ([eaeddda](eaeddda4e468c2040862d18c9b2d37a1c0ba099e))
* Use klona instead of lodash.clonedeep (#3073) ([7b96397](7b96397e3bfa43a393ca84439069290bc4c8a5c8))
* Refactor to composable ([c502f9b](c502f9b840ee2d65193aa4ef29c7f260b49db0d2))
* Header improvements ([e8db2c2](e8db2c2b458bcae592609d5a5bc3f1b333651b25))
* Persistent menuActive state with Local Storage (#3011) ([e3dd4ef](e3dd4ef78ac818add138d0323bf65abe8a4caa29))
* Fix calculation of token invalidation (#3077) ([d6b55c7](d6b55c757067413bbc34acd48af9fb553f36db8a))
* Use renovate js-app as preset (#3087) ([97c8970](97c8970dd60b2ba1e894ca0039524c8f6a5cd5df))
* Improve recommended vscode settings ([e0f0699](e0f06999beb0a9fb5da817323744307401e85e47))
### Miscellaneous Tasks
* *(refactor)* Improve `stores/config` types (#3190)
* *(services)* Add examples for some functions
* *(services)* Let `getAll`: always return `Model[]`
* Move class name to top ([c6ed925](c6ed9254247efeb43e0763e095b145d6ec1965e1))
* Simplify error handling for login and OpenId Auth ([e67088f](e67088fdb7bd3b24cea6ee37851ef45f1fb7bdad))
* Simplify getting the error text from an exception ([9adf1ab](9adf1aba895a02f416148ddf8b6925689d6e2687))
* Typo ([81a4f2d](81a4f2d9775716bc0056348664fc24185af040d4))
* Update funding links ([7cb0cd2](7cb0cd293d6d277172eccf2558a62427bc86dfe6))
* Update funding links ([b26ea45](b26ea45fe0d1d6f5f070ef42a5d68aa6db8e6b70))
* Remove minimist dependency (not used anywhere) ([f697640](f697640636466e8f035c7d31597ee589379fa017))
* Remove sponsor ([fa0e46a](fa0e46a3991ab423c9364b65439d9e8e5a28cb7b))
* Histoire add logo link ([af4a039](af4a039502b29e9e7e21cf30d44715c7af056c15))
* Improve `@/message` `action` type (#3209) ([0eb78e3](0eb78e32f994e7032725e38d564320a5a04cbf2a))
* Remove an unused duplicate key ([9db3aed](9db3aedde9566fb94717e1dd66a21abdbda6e84a))
### Other
* *(other)* Add Ipv6 support to nginx (#100)
* *(other)* Added ipv6 control script
* *(other)* Disable listening on IPv6 ports when IPv6 is not supported (#102)
* *(other)* Docker refactoring (#3018)
* *(other)* Persist menuActive state in Local Storage
* *(other)* Refactor to only used local storage value when on desktop viewport widths
* *(other)* Solve for resize()
* *(other)* [skip ci] Updated translations via Crowdin
## [0.20.3] - 2023-01-24
### Bug Fixes
* *(BaseButton)* Prop type
* *(ci)* Make sure the i18n sync cron job actually runs
* *(ci)* Sign drone config
* *(ci)* Sign drone config
* *(ci)* Tagging logic for release docker images
* *(ci)* Sign drone config
* *(cypress)* Use ts for updateUserSettings
* *(cypress)* Use env for API_URL (#2925)
* *(drone)* Use correct property value (#2920)
* *(drone)* Pnpm cache folder path (#2932)
* *(faker)* Remove mock types (#2921)
* *(i18n)* Incorrect translation string
* *(migration)* Actually pass migration oauth code from query param
* *(quick add magic)* Make sure assignees which don't exist are not removed from task title
* *(task)* Update task description when switching between related tasks
* *(task)* Don't show the list color on the task when only viewing the list (#2975)
* *(useOnline)* Only log if actually faking state (#2924)
* Close button hover for sidebar (#2981) ([9922fcb](9922fcba65c8dc2c46c4f085813c2fbc0d0a7df6))
### Dependencies
* *(deps)* Update dependency vite to v4.0.2 (#2861)
* *(deps)* Update dependency netlify-cli to v12.4.0 (#2862)
* *(deps)* Update typescript-eslint monorepo to v5.47.0 (#2864)
* *(deps)* Update dependency esbuild to v0.16.10 (#2865)
* *(deps)* Update dependency sass to v1.57.1 (#2866)
* *(deps)* Update dependency vue-tsc to v1.0.16 (#2867)
* *(deps)* Update dependency codemirror to v5.65.11
* *(deps)* Update dependency @vueuse/core to v9.8.0
* *(deps)* Update dependency vitest to v0.26.1
* *(deps)* Update dependency @vueuse/core to v9.8.1 (#2870)
* *(deps)* Update dependency @vueuse/core to v9.8.2
* *(deps)* Update sentry-javascript monorepo to v7.28.0
* *(deps)* Update dependency cypress to v12.2.0 (#2873)
* *(deps)* Update dependency vitest to v0.26.2 (#2874)
* *(deps)* Update dependency vite to v4.0.3 (#2876)
* *(deps)* Update pnpm to v7.19.0 (#2875)
* *(deps)* Update dependency rollup to v3.8.0 (#2877)
* *(deps)* Update sentry-javascript monorepo to v7.28.1 (#2878)
* *(deps)* Update dependency @vueuse/core to v9.9.0 (#2881)
* *(deps)* Update dependency rollup to v3.8.1 (#2879)
* *(deps)* Update dependency vite-svg-loader to v4 (#2882)
* *(deps)* Update dependency vue-tsc to v1.0.17 (#2883)
* *(deps)* Update dependency caniuse-lite to v1.0.30001441 (#2884)
* *(deps)* Update dependency netlify-cli to v12.5.0 (#2886)
* *(deps)* Update pnpm to v7.20.0 (#2887)
* *(deps)* Update dependency vue-tsc to v1.0.18 (#2888)
* *(deps)* Update dependency happy-dom to v8.1.1 (#2885)
* *(deps)* Update dependency @types/node to v18.11.18 (#2889)
* *(deps)* Update typescript-eslint monorepo to v5.47.1 (#2890)
* *(deps)* Update dependency esbuild to v0.16.11
* *(deps)* Update dependency esbuild to v0.16.12 (#2893)
* *(deps)* Update dependency rollup to v3.9.0 (#2894)
* *(deps)* Update dependency rollup-plugin-visualizer to v5.9.0 (#2896)
* *(deps)* Update dependency marked to v4.2.5 (#2880)
* *(deps)* Update pnpm to v7.21.0 (#2895)
* *(deps)* Update dependency eslint to v8.31.0
* *(deps)* Update dependency vue-tsc to v1.0.19
* *(deps)* Update dependency @types/codemirror to v5.60.6
* *(deps)* Update dependency rollup to v3.9.1
* *(deps)* Update dependency vitest to v0.26.3
* *(deps)* Update dependency vite-plugin-pwa to v0.14.1 (#2909)
* *(deps)* Update dependency esbuild to v0.16.13 (#2907)
* *(deps)* Update typescript-eslint monorepo to v5.48.0 (#2906)
* *(deps)* Update dependency vue-tsc to v1.0.20
* *(deps)* Update dependency cypress to v12.3.0
* *(deps)* Update dependency @vueuse/core to v9.10.0 (#2911)
* *(deps)* Update pnpm to v7.22.0 (#2910)
* *(deps)* Update dependency @vue/test-utils to v2.2.7 (#2914)
* *(deps)* Update dependency vite to v4.0.4 (#2908)
* *(deps)* Update sentry-javascript monorepo to v7.29.0 (#2915)
* *(deps)* Update dependency esbuild to v0.16.14
* *(deps)* Update dependency axios to v1
* *(deps)* Update dependency vue-tsc to v1.0.21
* *(deps)* Update dependency vue-tsc to v1.0.22
* *(deps)* Update dependency dompurify to v2.4.2
* *(deps)* Update dependency dompurify to v2.4.3 (#2931)
* *(deps)* Update dependency postcss to v8.4.21 (#2933)
* *(deps)* Update dependency esbuild to v0.16.15 (#2934)
* *(deps)* Update dependency vue-tsc to v1.0.24
* *(deps)* Update pnpm to v7.23.0 (#2940)
* *(deps)* Update dependency happy-dom to v8.1.3 (#2939)
* *(deps)* Update dependency esbuild to v0.16.16 (#2937)
* *(deps)* Update dependency caniuse-lite to v1.0.30001442 (#2938)
* *(deps)* Update dependency vitest to v0.27.0 (#2941)
* *(deps)* Update typescript-eslint monorepo to v5.48.1 (#2942)
* *(deps)* Update pnpm to v7.24.2 (#2944)
* *(deps)* Update sentry-javascript monorepo to v7.30.0 (#2945)
* *(deps)* Update pnpm to v7.24.3 (#2946)
* *(deps)* Update dependency vitest to v0.27.1 (#2947)
* *(deps)* Update dependency esbuild to v0.16.17 (#2948)
* *(deps)* Update dependency rollup to v3.10.0 (#2949)
* *(deps)* Update dependency eslint-plugin-vue to v9.9.0 (#2950)
* *(deps)* Update pnpm to v7.25.0 (#2951)
* *(deps)* Update dependency marked to v4.2.12 (#2952)
* *(deps)* Update dependency esbuild to v0.17.0 (#2953)
* *(deps)* Update dependency eslint to v8.32.0 (#2954)
* *(deps)* Update dependency vue-advanced-cropper to v2.8.8 (#2955)
* *(deps)* Update dependency pinia to v2.0.29 (#2956)
* *(deps)* Update dependency @kyvg/vue3-notification to v2.8.0 (#2957)
* *(deps)* Update dependency caniuse-lite to v1.0.30001445 (#2958)
* *(deps)* Update dependency happy-dom to v8.1.4 (#2959)
* *(deps)* Update dependency netlify-cli to v12.7.2 (#2960)
* *(deps)* Update sentry-javascript monorepo to v7.31.0
* *(deps)* Update dependency esbuild to v0.17.1 (#2963)
* *(deps)* Update typescript-eslint monorepo to v5.48.2 (#2962)
* *(deps)* Update dependency esbuild to v0.17.2 (#2965)
* *(deps)* Update dependency vitest to v0.27.2 (#2966)
* *(deps)* Update dependency @vueuse/core to v9.11.0 (#2967)
* *(deps)* Update sentry-javascript monorepo to v7.31.1 (#2973)
* *(deps)* Update dependency axios to v1.2.3 (#2974)
* *(deps)* Update dependency esbuild to v0.17.3 (#2976)
* *(deps)* Update pnpm to v7.25.1 (#2977)
* *(deps)* Update dependency @vueuse/core to v9.11.1
* *(deps)* Update dependency rollup to v3.10.1
* *(deps)* Update dependency vite-plugin-inject-preload to v1.2.0 (#2983)
* *(deps)* Update dependency vitest to v0.27.3 (#2984)
* *(deps)* Update dependency esbuild to v0.17.4 (#2985)
* *(deps)* Update dependency caniuse-lite to v1.0.30001447 (#2986)
* *(deps)* Update dependency happy-dom to v8.1.5 (#2987)
* *(deps)* Update dependency netlify-cli to v12.9.1 (#2988)
* *(deps)* Update sentry-javascript monorepo to v7.32.1 (#2991)
* *(deps)* Update dependency vitest to v0.28.1 (#2990)
* *(deps)* Update dependency @types/codemirror to v5.60.7 (#2993)
* *(deps)* Update typescript-eslint monorepo to v5.49.0 (#2994)
* *(deps)* Update dependency start-server-and-test to v1.15.3
* *(deps)* Update dependency @fortawesome/vue-fontawesome to v3.0.3 (#3003)
### Features
* *(cypress)* Remove getSettled
* *(cypress)* Use cy.session
* *(i18n)* Add Norwegian translation
* *(netlify)* Abstract createSlug helper function (#2923)
* *(postcss)* Mock plugin types (#2930)
* Enable ts for rollup-plugin-visualizer (#2897) ([09d1352](09d13520b060e47be18640865befde44f59332e3))
* Remove date-fns formatISO (#2899) ([1f25386](1f25386f54f376357722e1e589d3a8bd8288a033))
* Add-task usability improvements (#2767) ([4be53b0](4be53b098ca909194aefb464a93b6dae99f4b9ab))
* Remove formatISO from list-view-gantt.spec (#2922) ([a29131e](a29131e7d4be2c83c3e9046549924d1f7692c95e))
* Add histoire ([7be8e89](7be8e892e2480f17cb5de6a69d35287906151c0f))
* Add XButton story ([ccc85b9](ccc85b9a828488dc849758f1e89f3ba3f75967d1))
* Add card story ([35cfb2f](35cfb2f3ca42ac83a9b943fc59818c978ee95fcc))
* Add histoire (#2724) ([a4424e0](a4424e089cdfadb4ab3b753e6fdca818bbe82dc4))
* Add describe project better in package.json (#2971) ([14466bf](14466bf9b7b8a3fc455c0d601205abbaf8cba4f5))
* Add .env.local.example (#2972) ([e1b35ff](e1b35ff023679a7cb8448a06e9edeb8eccc2f727))
* Fix broken font preloading (#2980) ([4890149](489014944a1544846875910d7d5e17e3d71b7e2d))
### Miscellaneous Tasks
* *(config)* Remove unused URL_PREFIX const (#2926)
* *(package)* Use pnpm commands (#2919)
* *(tests)* Fix macos cypress and align with create vite (#2898)
* Improve migrate title (#2968) ([56fd25e](56fd25e888cae8343f64a4c14ac5a3a760bdc7be))
* Add has content="false" to gantt charts (#2969) ([903e9a9](903e9a9904c18ced59962fc03b4c36e5ac8cd688))
* Use es6 imports for deploy-preview-netlify (#2970) ([2a2c27a](2a2c27af9226f441ec80d9d4f560b55cd357126c))
### Other
* *(other)* [skip ci] Updated translations via Crowdin
* *(other)* Redirect to oidc provider if configured correctly (#2805)
## [0.20.2] - 2022-12-18
### Bug Fixes
* *(bug-report.yml)* List (#2845)
* *(quick add magic)* Don't create a new label multiple times if it is used in multiple tasks
* *(task)* Pass a list specified via quick add magic down to all subtasks created via indention
* *(task)* Move task color bubble next to task index and done badge on mobile
* *(tasks)* Remove a task from its bucket when it is in the first kanban bucket
* *(tasks)* Missing space when showing parent tasks and list title
* *(tasks)* Translation for multiple related tasks now works
* Move createdUpdated styles to component (#2685) ([4c458a1](4c458a1ad0761920868e3863982d5175664b3e6e))
* Move heading styles to component (#2686) ([293402b](293402b6fdfc699661c7f287ff1759a9ce5bea17))
* Use scss for datemathHelp (#2690) ([06775cf](06775cf4c72cf81a125b91d49c8d81e8649af661))
* Reactive const assignment (#2692) ([4c4adfd](4c4adfdf4e79eff3e101d9f0bd68bc3e5bb76495))
* Remove vuex leftover from setModuleLoading (#2716) ([3aaacf4](3aaacf4533c761864d3081edb92c9380df43f8b1))
* Icon offset and color ([74ad98d](74ad98de680f8b56e42886cd1e33874bd05772fa))
* Only load buckets if listId set (#2741) ([7db79ff](7db79ff04e4ce87d62cae7f93b67570bbc5c13be))
* Add all json files in src (#2737) ([422e731](422e731fe0d44c2e3be603b549538a05a695b95c))
* Vite.config imports (#2843) ([318e8c8](318e8c83a68bcb2f7953553c036f677a97b01c21))
### Dependencies
* *(deps)* Update dependency rollup to v3.3.0 (#2689)
* *(deps)* Update dependency @types/dompurify to v2.4.0 (#2688)
* *(deps)* Update dependency @vue/test-utils to v2.2.2 (#2696)
* *(deps)* Update dependency caniuse-lite to v1.0.30001431
* *(deps)* Update dependency happy-dom to v7.7.0
* *(deps)* Update dependency netlify-cli to v12.1.1 (#2699)
* *(deps)* Update dependency postcss-preset-env to v7.8.3 (#2701)
* *(deps)* Update dependency vitest to v0.25.2 (#2702)
* *(deps)* Update pnpm to v7.16.0 (#2703)
* *(deps)* Update typescript-eslint monorepo to v5.43.0
* *(deps)* Update dependency ufo to v1
* *(deps)* Update dependency esbuild to v0.15.14 (#2706)
* *(deps)* Update dependency @vue/test-utils to v2.2.3 (#2707)
* *(deps)* Update dependency vite to v3.2.4
* *(deps)* Update dependency typescript to v4.9.3
* *(deps)* Update dependency cypress to v11.1.0
* *(deps)* Update font awesome to v6.2.1 (#2712)
* *(deps)* Update pnpm to v7.16.1 (#2717)
* *(deps)* Update dependency pinia to v2.0.24
* *(deps)* Update sentry-javascript monorepo to v7.20.0 (#2720)
* *(deps)* Update dependency eslint to v8.28.0
* *(deps)* Update dependency esbuild to v0.15.15
* *(deps)* Update dependency netlify-cli to v12.2.4
* *(deps)* Update dependency @vue/test-utils to v2.2.4
* *(deps)* Update pnpm to v7.17.0
* *(deps)* Update dependency marked to v4.2.3
* *(deps)* Update dependency codemirror to v5.65.10
* *(deps)* Update sentry-javascript monorepo to v7.20.1
* *(deps)* Update dependency pinia to v2.0.25
* *(deps)* Update dependency rollup to v3.4.0
* *(deps)* Update typescript-eslint monorepo to v5.44.0
* *(deps)* Update vueuse to v9.6.0 (#2742)
* *(deps)* Update dependency vitest to v0.25.3 (#2743)
* *(deps)* Update dependency cypress to v11.2.0
* *(deps)* Update sentry-javascript monorepo to v7.21.0
* *(deps)* Update dependency @4tw/cypress-drag-drop to v2.2.2
* *(deps)* Update sentry-javascript monorepo to v7.21.1 (#2747)
* *(deps)* Update dependency pinia to v2.0.26
* *(deps)* Update dependency @cypress/vue to v5.0.2
* *(deps)* Update dependency highlight.js to v11.7.0 (#2752)
* *(deps)* Update dependency eslint-plugin-vue to v9.8.0 (#2753)
* *(deps)* Update dependency @infectoone/vue-ganttastic to v2.1.3
* *(deps)* Update dependency rollup to v3.5.0 (#2756)
* *(deps)* Update pnpm to v7.17.1 (#2755)
* *(deps)* Update dependency esbuild to v0.15.16
* *(deps)* Update dependency pinia to v2.0.27 (#2757)
* *(deps)* Update dependency caniuse-lite to v1.0.30001434 (#2759)
* *(deps)* Update dependency netlify-cli to v12.2.7 (#2760)
* *(deps)* Update dependency @kyvg/vue3-notification to v2.7.0 (#2761)
* *(deps)* Update typescript-eslint monorepo to v5.45.0 (#2762)
* *(deps)* Update dependency ufo to v1.0.1 (#2763)
* *(deps)* Update dependency vue-tsc to v1.0.10 (#2764)
* *(deps)* Update sentry-javascript monorepo to v7.22.0 (#2765)
* *(deps)* Update dependency @types/node to v18.11.10 (#2768)
* *(deps)* Update dependency rollup to v3.5.1 (#2769)
* *(deps)* Update sentry-javascript monorepo to v7.23.0
* *(deps)* Update dependency @vue/test-utils to v2.2.5 (#2773)
* *(deps)* Update dependency eslint to v8.29.0 (#2774)
* *(deps)* Update dependency @cypress/vue to v5.0.3 (#2775)
* *(deps)* Update dependency vue-tsc to v1.0.11 (#2777)
* *(deps)* Update dependency @cypress/vite-dev-server to v5 (#2776)
* *(deps)* Update pnpm to v7.18.0 (#2778)
* *(deps)* Update dependency esbuild to v0.15.17 (#2779)
* *(deps)* Update dependency caniuse-lite to v1.0.30001436 (#2780)
* *(deps)* Update dependency @vue/test-utils to v2.2.6 (#2784)
* *(deps)* Update dependency esbuild to v0.15.18 (#2783)
* *(deps)* Update dependency netlify-cli to v12.2.8 (#2782)
* *(deps)* Update dependency happy-dom to v7.7.2 (#2781)
* *(deps)* Update dependency vite to v3.2.5 (#2785)
* *(deps)* Update dependency rollup to v3.6.0 (#2786)
* *(deps)* Update typescript-eslint monorepo to v5.45.1 (#2787)
* *(deps)* Update dependency vitest to v0.25.4 (#2788)
* *(deps)* Update dependency @types/node to v18.11.11 (#2789)
* *(deps)* Update pnpm to v7.18.1 (#2790)
* *(deps)* Update dependency dayjs to v1.11.7 (#2791)
* *(deps)* Update dependency cypress to v12 (#2792)
* *(deps)* Update dependency vitest to v0.25.5 (#2793)
* *(deps)* Update dependency marked to v4.2.4 (#2796)
* *(deps)* Update dependency esbuild to v0.16.1 (#2795)
* *(deps)* Update dependency cypress to v12.0.1 (#2794)
* *(deps)* Update sentry-javascript monorepo to v7.24.0 (#2797)
* *(deps)* Update sentry-javascript monorepo to v7.24.1 (#2798)
* *(deps)* Update sentry-javascript monorepo to v7.24.2 (#2799)
* *(deps)* Update dependency typescript to v4.9.4 (#2800)
* *(deps)* Update dependency rollup to v3.7.0 (#2801)
* *(deps)* Update dependency esbuild to v0.16.2 (#2802)
* *(deps)* Update typescript-eslint monorepo to v5.46.0 (#2803)
* *(deps)* Update dependency vitest to v0.25.6 (#2804)
* *(deps)* Update dependency @cypress/vite-dev-server to v5.0.1 (#2806)
* *(deps)* Update dependency esbuild to v0.16.3 (#2809)
* *(deps)* Update dependency sass to v1.56.2 (#2810)
* *(deps)* Update dependency @types/marked to v4.0.8 (#2812)
* *(deps)* Update dependency vue-tsc to v1.0.12 (#2811)
* *(deps)* Update dependency @types/node to v18.11.12 (#2808)
* *(deps)* Update dependency cypress to v12.0.2 (#2807)
* *(deps)* Update dependency @vitejs/plugin-vue to v4 (#2814)
* *(deps)* Update dependency @vitejs/plugin-legacy to v3 (#2813)
* *(deps)* Update dependency pinia to v2.0.28 (#2815)
* *(deps)* Update dependency @vitejs/plugin-legacy to v3.0.1 (#2818)
* *(deps)* Update dependency @cypress/vite-dev-server to v5.0.2 (#2819)
* *(deps)* Update dependency rollup to v3.7.1 (#2820)
* *(deps)* Update dependency rollup to v3.7.2 (#2822)
* *(deps)* Update dependency esbuild to v0.16.4 (#2821)
* *(deps)* Update dependency vitest to v0.25.7 (#2824)
* *(deps)* Update dependency @types/node to v18.11.13 (#2823)
* *(deps)* Update dependency happy-dom to v8 (#2831)
* *(deps)* Update dependency postcss to v8.4.20 (#2827)
* *(deps)* Update dependency caniuse-lite to v1.0.30001439 (#2828)
* *(deps)* Update dependency @intlify/unplugin-vue-i18n to v0.8.1 (#2826)
* *(deps)* Update dependency netlify-cli to v12.2.10 (#2829)
* *(deps)* Update dependency vite-plugin-pwa to v0.14.0 (#2833)
* *(deps)* Update dependency rollup to v3.7.3 (#2825)
* *(deps)* Update dependency vue-tsc to v1.0.13 (#2832)
* *(deps)* Update sentry-javascript monorepo to v7.25.0
* *(deps)* Update dependency vite to v4 (#2816)
* *(deps)* Update pnpm to v7.18.2 (#2834)
* *(deps)* Update typescript-eslint monorepo to v5.46.1 (#2837)
* *(deps)* Update dependency @4tw/cypress-drag-drop to v2.2.3 (#2836)
* *(deps)* Update dependency @types/node to v18.11.14 (#2839)
* *(deps)* Update dependency cypress to v12.1.0 (#2838)
* *(deps)* Update dependency rollup to v3.7.4 (#2840)
* *(deps)* Update dependency vitest to v0.25.8
* *(deps)* Update sentry-javascript monorepo to v7.26.0
* *(deps)* Update dependency esbuild to v0.16.5 (#2846)
* *(deps)* Update dependency @types/node to v18.11.15
* *(deps)* Update dependency esbuild to v0.16.6 (#2848)
* *(deps)* Update dependency esbuild to v0.16.7
* *(deps)* Update sentry-javascript monorepo to v7.27.0 (#2850)
* *(deps)* Update dependency @vueuse/core to v9.7.0 (#2851)
* *(deps)* Update dependency wait-on to v7 (#2852)
* *(deps)* Update dependency @types/node to v18.11.16 (#2853)
* *(deps)* Update dependency eslint to v8.30.0
* *(deps)* Update dependency rollup to v3.7.5 (#2857)
* *(deps)* Update dependency esbuild to v0.16.8 (#2854)
* *(deps)* Update dependency sass to v1.57.0 (#2856)
* *(deps)* Update dependency vue-tsc to v1.0.14 (#2860)
* *(deps)* Update dependency esbuild to v0.16.9 (#2859)
* *(deps)* Update dependency @types/node to v18.11.17 (#2858)
### Features
* *(ci)* Use docker buildx for multiarch builds* Filters script setup ([4bad685](4bad685f39388d59fdd8ff79a1766c55f75262c2))
* Move select filters to dedicated components ([bb58dba](bb58dba8e07d683c75637ec88a378e873711eb29))
* Add vite build target esnext (#2674) ([163d936](163d9366d3061c40b5db7f3aad5c2cea01948403))
* Filters script setup (#2671) ([4a550da](4a550da6a69a50126b9d4a555b6713687347c2d3))
* Reduce multiselect selector specificity (#2678) ([9f0f0b3](9f0f0b39f8eea399b7b03003afa5893d0b8016f8))
* Reduce contentAuth selector specifity (#2677) ([12a8f7e](12a8f7ebe9fc556a7b0bc6e2d74e81d424ccfcf8))
* Reduce ListWrapper selector specificity (#2679) ([599c1ba](599c1ba4b5b0861d89755addf016e8f797b49dfe))
* Reduce dropdown-item selector specificity (#2680) ([eb4c2a4](eb4c2a4b9df93ee35404cd7143cc88b3d44f9d59))
* Reduce attachments selector specificity (#2682) ([0f1f131](0f1f131f7a2a38ee57175edfd5ed1c932225af16))
* Reduce ready selector specificity (#2683) ([9d604f7](9d604f7a3bc057bbe27ac19e73ac59736154d9b7))
* Use img for logo so that it's not part of the main bundle (#2684) ([02de481](02de481297502ad4b0b2eb2fa3e06366cce6d630))
* Improve user component (#2687) ([708ef2d](708ef2d72efbdfe6261322937b0a8f76ee19b9e4))
* Reduce TaskDetailView selector specificity ([fba402f](fba402fcd056ee397ce54f97ed4fec98845c7933))
* Move transition in own component ([631a19f](631a19fa923dba2759603e6a8b224cb4d3e1a038))
* Feature/load-views-async (#2672)
* Use transition component everywhere ([8c44ed8](8c44ed83e6530f67cc923a5e6d1a26c14575884a))
* Move transition in component (#2694) ([77ff0aa](77ff0aa256fbf388210af09d88673475386b3553))
* Disable fullscreen for EasyMDE side-by-side mode (#2710) ([98b38af](98b38af43c3acc9822f167ebca295f5aecb4908d))
* Only automatically redirect to provider if the url contains ?redirectToProvider=true and it's the only one ([3891d5b](3891d5b87634c890265477680fafaa04ff06cc3e))
* Improve loadTask logic (#2715) ([8ef3092](8ef309243db4e37d306167455987572006858cad))
* Remove edit-task from list view (#2721) ([45ec162](45ec1623d525ed31a49b6be6d609802c341fad27))
* Move useAutoHeightTextarea to composable (#2723) ([33d4efe](33d4efecc45ef8da5360fb878b7d365d1901b56c))
* More horizontal space on mobile (#2722) ([b42e4cc](b42e4cca59e338278261bc3ec613eefedde6fcce))
* Change list-content style (#91) ([4b47478](4b47478440d0af1bf24c44ea614c0f62f20723f7))
* Grid for list cards ([42e9f30](42e9f306e84120ba51d9b527c7868148730bf892))
* Move avatar class to where it is used (#2725) ([da8df8b](da8df8b667fc57798c1de7d78c1a7f88b0419d38))
* Undent and order navigation css ([66be0e6](66be0e6ac4bcf48124b33267224187b56ac9320a))
* Outdent navigation logo styles ([ff9efe7](ff9efe7889256706ac86bb1face842cd2de6f935))
* Group navigation styles further ([4fc7b9c](4fc7b9c67e2088e82760005cd530ea97cf796a4c))
* Move link color location together ([d9984b2](d9984b28f7d01da0f9d8f0afd5b6f0edf35823c2))
* Use fetch instead of axios for deploy preview (#2719) ([93d95b0](93d95b0821f39719c4a28c144ebb583c2eac754e))
* Remove useRouteQuery (#2751) ([3ee0bc3](3ee0bc345d6cd65769789ec029c50e652d80e1ca))
* Use Intl.DateTimeFormat for gantt weekdays (#2766) ([3b95824](3b95824f5834d7de50210414c56b07889db895c7))
* Add @intlify/unplugin-vue-i18n (#2772) ([b44d11c](b44d11cfc04712b9f9ec9479ba3a77a26c453532))
* Use vite preview for serve:dist:dev (#2842) ([f6c6f52](f6c6f52abe71674fa5f3951cc0ba61798758bd03))
* Use variable fonts with subsetting (#2817) ([b6a89a0](b6a89a0cde3c769e38146b05c33ff4ca4e97bca2))
### Other
* *(other)* [skip ci] Updated translations via Crowdin
## [0.20.1] - 2022-11-11
### Bug Fixes

View File

@ -1,49 +1,69 @@
# Stage 1: Build application
FROM node:18-alpine AS compile-image
# syntax=docker/dockerfile:1
# ┬─┐┬ ┐o┬ ┬─┐
# │─││ │││ │ │
# ┘─┘┘─┘┘┘─┘┘─┘
FROM --platform=$BUILDPLATFORM node:20-alpine AS builder
WORKDIR /build
ARG USE_RELEASE=false
ARG RELEASE_VERSION=main
ENV PNPM_CACHE_FOLDER .cache/pnpm/
ADD . ./
RUN \
if [ $USE_RELEASE = true ]; then \
wget https://dl.vikunja.io/frontend/vikunja-frontend-$RELEASE_VERSION.zip -O frontend-release.zip && \
unzip frontend-release.zip -d dist/ && \
exit 0; \
fi && \
# https://pnpm.io/installation#using-corepack
corepack enable && \
# we don't use corepack prepare here by intend since
# we have renovate to keep our dependencies up to date
# Build the frontend
pnpm install && \
apk add --no-cache git && \
echo '{"VERSION": "'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'"}' > src/version.json && \
pnpm run build
COPY package.json ./
COPY pnpm-lock.yaml ./
# Stage 2: copy
FROM nginx:alpine
RUN if [ "$USE_RELEASE" != true ]; then \
# https://pnpm.io/installation#using-corepack
corepack enable && \
pnpm install; \
fi
COPY nginx.conf /etc/nginx/nginx.conf
COPY scripts/run.sh /run.sh
COPY . ./
# copy compiled files from stage 1
COPY --from=compile-image /build/dist /usr/share/nginx/html
RUN if [ "$USE_RELEASE" != true ]; then \
apk add --no-cache --virtual .build-deps git jq && \
git describe --tags --always --abbrev=10 | sed 's/-/+/; s/^v//; s/-g/-/' | \
xargs -0 -I{} jq -Mcnr --arg version {} '{VERSION:$version}' | \
tee src/version.json && \
apk del .build-deps; \
fi
# Unprivileged user
ENV PUID 1000
ENV PGID 1000
RUN if [ "$USE_RELEASE" = true ]; then \
wget "https://dl.vikunja.io/frontend/vikunja-frontend-${RELEASE_VERSION}.zip" -O frontend-release.zip && \
unzip frontend-release.zip -d dist/; \
else \
# we don't use corepack prepare here by intend since
# we have renovate to keep our dependencies up to date
# Build the frontend
pnpm run build; \
fi
# ┌┐┐┌─┐o┌┐┐┐ │
# ││││ ┬││││┌┼┘
# ┘└┘┘─┘┘┘└┘┘ └
FROM nginx:stable-alpine AS runner
WORKDIR /usr/share/nginx/html
LABEL maintainer="maintainers@vikunja.io"
RUN apk add --no-cache \
# for sh file
bash \
# installs usermod and groupmod
shadow
ENV VIKUNJA_HTTP_PORT 80
ENV VIKUNJA_HTTP2_PORT 81
ENV VIKUNJA_LOG_FORMAT main
ENV VIKUNJA_API_URL /api/v1
ENV VIKUNJA_SENTRY_ENABLED false
ENV VIKUNJA_SENTRY_DSN https://85694a2d757547cbbc90cd4b55c5a18d@o1047380.ingest.sentry.io/6024480
ENV VIKUNJA_PROJECT_INFINITE_NESTING_ENABLED false
CMD "/run.sh"
COPY docker/injector.sh /docker-entrypoint.d/50-injector.sh
COPY docker/ipv6-disable.sh /docker-entrypoint.d/60-ipv6-disable.sh
COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY docker/templates/. /etc/nginx/templates/
# copy compiled files from stage 1
COPY --from=builder /build/dist ./
# manage permissions
RUN chmod 0755 /docker-entrypoint.d/*.sh /etc/nginx/templates && \
chmod -R 0644 /etc/nginx/nginx.conf && \
chown -R nginx:nginx ./ /etc/nginx/conf.d /etc/nginx/templates && \
rm -f /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh

View File

@ -4,7 +4,7 @@
[![Build Status](https://drone.kolaente.de/api/badges/vikunja/frontend/status.svg)](https://drone.kolaente.de/vikunja/frontend)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](LICENSE)
[![Download](https://img.shields.io/badge/download-v0.20.1-brightgreen.svg)](https://dl.vikunja.io)
[![Download](https://img.shields.io/badge/download-v0.20.5-brightgreen.svg)](https://dl.vikunja.io)
[![Translation](https://badges.crowdin.net/vikunja/localized.svg)](https://crowdin.com/project/vikunja)
This is the web frontend for Vikunja, written in Vue.js.
@ -18,6 +18,14 @@ If you find any security-related issues you don't want to disclose publicly, ple
## Docker
There is a [docker image available](https://hub.docker.com/r/vikunja/api) with support for http/2 and aggressive caching enabled.
In order to build it from sources run the command below. (Docker >= v19.03)
```shell
export DOCKER_BUILDKIT=1
docker build -t vikunja/frontend .
```
Refer to Refer [to multi-platform documentation](https://docs.docker.com/build/building/multi-platform/) in order to build for the different platform.
## Project setup
@ -43,6 +51,3 @@ pnpm run build
pnpm run lint
```
## Sponsors
[![Relm](https://vikunja.io/images/sponsors/relm.png)](https://relm.us)

View File

@ -11,8 +11,10 @@ export default defineConfig({
},
projectId: '181c7x',
e2e: {
baseUrl: 'http://localhost:4173',
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
specPattern: 'cypress/e2e/**/*.{cy,spec}.{js,jsx,ts,tsx}',
baseUrl: 'http://127.0.0.1:4173',
experimentalRunAllSpecs: true,
// testIsolation: false,
},
component: {
devServer: {
@ -22,4 +24,5 @@ export default defineConfig({
},
viewportWidth: 1600,
viewportHeight: 900,
experimentalMemoryManagement: true,
})

View File

@ -36,7 +36,7 @@ to get a shell inside the cypress container.
In that shell you can then execute the tests with
```shell
pnpm run test:frontend
pnpm run test:e2e
```
### Using The Cypress Dashboard
@ -44,5 +44,5 @@ pnpm run test:frontend
To open the Cypress Dashboard and run tests from there, run
```shell
pnpm run cypress:open
pnpm run test:e2e:dev
```

View File

@ -9,7 +9,7 @@ services:
ports:
- 3456:3456
cypress:
image: cypress/browsers:node16.14.0-chrome99-ff97
image: cypress/browsers:node18.12.0-chrome107
volumes:
- ..:/project
- $HOME/.cache:/home/node/.cache/

View File

@ -1,56 +0,0 @@
import {ListFactory} from '../../factories/list'
import '../../support/authenticateUser'
import {prepareLists} from './prepareLists'
describe('List History', () => {
prepareLists()
it('should show a list history on the home page', () => {
cy.intercept(Cypress.env('API_URL') + '/namespaces*').as('loadNamespaces')
cy.intercept(Cypress.env('API_URL') + '/lists/*').as('loadList')
const lists = ListFactory.create(6)
cy.visit('/')
cy.wait('@loadNamespaces')
cy.get('body')
.should('not.contain', 'Last viewed')
cy.visit(`/lists/${lists[0].id}`)
cy.wait('@loadNamespaces')
cy.wait('@loadList')
cy.visit(`/lists/${lists[1].id}`)
cy.wait('@loadNamespaces')
cy.wait('@loadList')
cy.visit(`/lists/${lists[2].id}`)
cy.wait('@loadNamespaces')
cy.wait('@loadList')
cy.visit(`/lists/${lists[3].id}`)
cy.wait('@loadNamespaces')
cy.wait('@loadList')
cy.visit(`/lists/${lists[4].id}`)
cy.wait('@loadNamespaces')
cy.wait('@loadList')
cy.visit(`/lists/${lists[5].id}`)
cy.wait('@loadNamespaces')
cy.wait('@loadList')
// cy.visit('/')
// cy.wait('@loadNamespaces')
// Not using cy.visit here to work around the redirect issue fixed in #1337
cy.get('nav.menu.top-menu a')
.contains('Overview')
.click()
cy.get('body')
.should('contain', 'Last viewed')
cy.get('.list-cards-wrapper-2-rows')
.should('not.contain', lists[0].title)
.should('contain', lists[1].title)
.should('contain', lists[2].title)
.should('contain', lists[3].title)
.should('contain', lists[4].title)
.should('contain', lists[5].title)
})
})

View File

@ -1,120 +0,0 @@
import {TaskFactory} from '../../factories/task'
import {prepareLists} from './prepareLists'
import '../../support/authenticateUser'
describe('Lists', () => {
let lists
prepareLists((newLists) => (lists = newLists))
it('Should create a new list', () => {
cy.visit('/')
cy.get('.namespace-title .dropdown-trigger')
.click()
cy.get('.namespace-title .dropdown .dropdown-item')
.contains('New list')
.click()
cy.url()
.should('contain', '/lists/new/1')
cy.get('.card-header-title')
.contains('New list')
cy.get('input.input')
.type('New List')
cy.get('.button')
.contains('Create')
.click()
cy.get('.global-notification', { timeout: 1000 }) // Waiting until the request to create the new list is done
.should('contain', 'Success')
cy.url()
.should('contain', '/lists/')
cy.get('.list-title h1')
.should('contain', 'New List')
})
it('Should redirect to a specific list view after visited', () => {
cy.visit('/lists/1/kanban')
cy.url()
.should('contain', '/lists/1/kanban')
cy.visit('/lists/1')
cy.url()
.should('contain', '/lists/1/kanban')
})
it('Should rename the list in all places', () => {
TaskFactory.create(5, {
id: '{increment}',
list_id: 1,
})
const newListName = 'New list name'
cy.visit('/lists/1')
cy.get('.list-title h1')
.should('contain', 'First List')
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-trigger')
.click()
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-content')
.contains('Edit')
.click()
cy.get('#title')
.type(`{selectall}${newListName}`)
cy.get('footer.card-footer .button')
.contains('Save')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.list-title h1')
.should('contain', newListName)
.should('not.contain', lists[0].title)
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child')
.should('contain', newListName)
.should('not.contain', lists[0].title)
cy.visit('/')
cy.get('.card-content')
.should('contain', newListName)
.should('not.contain', lists[0].title)
})
it('Should remove a list', () => {
cy.visit(`/lists/${lists[0].id}`)
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-trigger')
.click()
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-content')
.contains('Delete')
.click()
cy.url()
.should('contain', '/settings/delete')
cy.get('[data-cy="modalPrimary"]')
.contains('Do it')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.namespace-container .menu.namespaces-lists .menu-list')
.should('not.contain', lists[0].title)
cy.location('pathname')
.should('equal', '/')
})
it('Should archive a list', () => {
cy.visit(`/lists/${lists[0].id}`)
cy.get('.list-title .dropdown')
.click()
cy.get('.list-title .dropdown .dropdown-menu .dropdown-item')
.contains('Archive')
.click()
cy.get('.modal-content')
.should('contain.text', 'Archive this list')
cy.get('.modal-content [data-cy=modalPrimary]')
.click()
cy.get('.namespace-container .menu.namespaces-lists .menu-list')
.should('not.contain', lists[0].title)
cy.get('main.app-content')
.should('contain.text', 'This list is archived. It is not possible to create new or edit tasks for it.')
})
})

View File

@ -1,145 +0,0 @@
import {UserFactory} from '../../factories/user'
import '../../support/authenticateUser'
import {ListFactory} from '../../factories/list'
import {NamespaceFactory} from '../../factories/namespace'
describe('Namepaces', () => {
let namespaces
beforeEach(() => {
UserFactory.create(1)
namespaces = NamespaceFactory.create(1)
ListFactory.create(1)
})
it('Should be all there', () => {
cy.visit('/namespaces')
cy.get('[data-cy="namespace-title"]')
.should('contain', namespaces[0].title)
})
it('Should create a new Namespace', () => {
const newNamespaceTitle = 'New Namespace'
cy.visit('/namespaces')
cy.get('[data-cy="new-namespace"]')
.should('contain', 'New namespace')
.click()
cy.url()
.should('contain', '/namespaces/new')
cy.get('.card-header-title')
.should('contain', 'New namespace')
cy.get('input.input')
.type(newNamespaceTitle)
cy.get('.button')
.contains('Create')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.namespace-container')
.should('contain', newNamespaceTitle)
cy.url()
.should('contain', '/namespaces')
})
it('Should rename the namespace all places', () => {
const newNamespaces = NamespaceFactory.create(5)
const newNamespaceName = 'New namespace name'
cy.visit('/namespaces')
cy.get(`.namespace-container .menu.namespaces-lists .namespace-title:contains(${newNamespaces[0].title}) .dropdown .dropdown-trigger`)
.click()
cy.get('.namespace-container .menu.namespaces-lists .namespace-title .dropdown .dropdown-content')
.contains('Edit')
.click()
cy.url()
.should('contain', '/settings/edit')
cy.get('#namespacetext')
.invoke('val')
.should('equal', newNamespaces[0].title) // wait until the namespace data is loaded
cy.get('#namespacetext')
.type(`{selectall}${newNamespaceName}`)
cy.get('footer.card-footer .button')
.contains('Save')
.click()
cy.get('.global-notification', { timeout: 1000 })
.should('contain', 'Success')
cy.get('.namespace-container .menu.namespaces-lists')
.should('contain', newNamespaceName)
.should('not.contain', newNamespaces[0].title)
cy.get('[data-cy="namespaces-list"]')
.should('contain', newNamespaceName)
.should('not.contain', newNamespaces[0].title)
})
it('Should remove a namespace when deleting it', () => {
const newNamespaces = NamespaceFactory.create(5)
cy.visit('/')
cy.get(`.namespace-container .menu.namespaces-lists .namespace-title:contains(${newNamespaces[0].title}) .dropdown .dropdown-trigger`)
.click()
cy.get('.namespace-container .menu.namespaces-lists .namespace-title .dropdown .dropdown-content')
.contains('Delete')
.click()
cy.url()
.should('contain', '/settings/delete')
cy.get('[data-cy="modalPrimary"]')
.contains('Do it')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.namespace-container .menu.namespaces-lists')
.should('not.contain', newNamespaces[0].title)
})
it('Should not show archived lists & namespaces if the filter is not checked', () => {
const n = NamespaceFactory.create(1, {
id: 2,
is_archived: true,
}, false)
ListFactory.create(1, {
id: 2,
namespace_id: n[0].id,
}, false)
ListFactory.create(1, {
id: 3,
is_archived: true,
}, false)
// Initial
cy.visit('/namespaces')
cy.get('.namespace')
.should('not.contain', 'Archived')
// Show archived
cy.get('[data-cy="show-archived-check"] label.check span')
.should('be.visible')
.click()
cy.get('[data-cy="show-archived-check"] input')
.should('be.checked')
cy.get('.namespace')
.should('contain', 'Archived')
// Don't show archived
cy.get('[data-cy="show-archived-check"] label.check span')
.should('be.visible')
.click()
cy.get('[data-cy="show-archived-check"] input')
.should('not.be.checked')
// Second time visiting after unchecking
cy.visit('/namespaces')
cy.get('[data-cy="show-archived-check"] input')
.should('not.be.checked')
cy.get('.namespace')
.should('not.contain', 'Archived')
})
})

View File

@ -1,21 +0,0 @@
import {ListFactory} from '../../factories/list'
import {UserFactory} from '../../factories/user'
import {NamespaceFactory} from '../../factories/namespace'
import {TaskFactory} from '../../factories/task'
export function createLists() {
UserFactory.create(1)
NamespaceFactory.create(1)
const lists = ListFactory.create(1, {
title: 'First List'
})
TaskFactory.truncate()
return lists
}
export function prepareLists(setLists = () => {}) {
beforeEach(() => {
const lists = createLists()
setLists(lists)
})
}

View File

@ -1,16 +1,18 @@
import {TaskFactory} from '../../factories/task'
import {ListFactory} from '../../factories/list'
import {NamespaceFactory} from '../../factories/namespace'
import {UserListFactory} from '../../factories/users_list'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import '../../support/authenticateUser'
import {TaskFactory} from '../../factories/task'
import {ProjectFactory} from '../../factories/project'
import {UserProjectFactory} from '../../factories/users_project'
import {BucketFactory} from '../../factories/bucket'
describe('Editor', () => {
createFakeUserAndLogin()
beforeEach(() => {
NamespaceFactory.create(1)
const lists = ListFactory.create(1)
ProjectFactory.create(1)
BucketFactory.create(1)
TaskFactory.truncate()
UserListFactory.truncate()
UserProjectFactory.truncate()
})
it('Has a preview with checkable checkboxes', () => {
@ -22,6 +24,7 @@ describe('Editor', () => {
* [ ] Checklist
* [x] Checklist checked
`,
bucket_id: 1,
})
cy.visit(`/tasks/${tasks[0].id}`)

View File

@ -1,21 +1,27 @@
import '../../support/authenticateUser'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
describe('The Menu', () => {
createFakeUserAndLogin()
beforeEach(() => {
cy.visit('/')
})
it('Is visible by default on desktop', () => {
cy.get('.namespace-container')
cy.get('.menu-container')
.should('have.class', 'is-active')
})
it('Can be hidden on desktop', () => {
cy.get('button.menu-show-button:visible')
.click()
cy.get('.namespace-container')
cy.get('.menu-container')
.should('not.have.class', 'is-active')
})
it('Is hidden by default on mobile', () => {
cy.viewport('iphone-8')
cy.get('.namespace-container')
cy.get('.menu-container')
.should('not.have.class', 'is-active')
})
@ -23,7 +29,7 @@ describe('The Menu', () => {
cy.viewport('iphone-8')
cy.get('button.menu-show-button:visible')
.click()
cy.get('.namespace-container')
cy.get('.menu-container')
.should('have.class', 'is-active')
})
})

View File

@ -0,0 +1,17 @@
import {ProjectFactory} from '../../factories/project'
import {TaskFactory} from '../../factories/task'
export function createProjects() {
const projects = ProjectFactory.create(1, {
title: 'First Project'
})
TaskFactory.truncate()
return projects
}
export function prepareProjects(setProjects = (...args: any[]) => {}) {
beforeEach(() => {
const projects = createProjects()
setProjects(projects)
})
}

View File

@ -0,0 +1,50 @@
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {ProjectFactory} from '../../factories/project'
import {prepareProjects} from './prepareProjects'
describe('Project History', () => {
createFakeUserAndLogin()
prepareProjects()
it('should show a project history on the home page', () => {
cy.intercept(Cypress.env('API_URL') + '/projects*').as('loadProjectArray')
cy.intercept(Cypress.env('API_URL') + '/projects/*').as('loadProject')
const projects = ProjectFactory.create(6)
cy.visit('/')
cy.wait('@loadProjectArray')
cy.get('body')
.should('not.contain', 'Last viewed')
cy.visit(`/projects/${projects[0].id}`)
cy.wait('@loadProject')
cy.visit(`/projects/${projects[1].id}`)
cy.wait('@loadProject')
cy.visit(`/projects/${projects[2].id}`)
cy.wait('@loadProject')
cy.visit(`/projects/${projects[3].id}`)
cy.wait('@loadProject')
cy.visit(`/projects/${projects[4].id}`)
cy.wait('@loadProject')
cy.visit(`/projects/${projects[5].id}`)
cy.wait('@loadProject')
// cy.visit('/')
// Not using cy.visit here to work around the redirect issue fixed in #1337
cy.get('nav.menu.top-menu a')
.contains('Overview')
.click()
cy.get('body')
.should('contain', 'Last viewed')
cy.get('[data-cy="projectCardGrid"]')
.should('not.contain', projects[0].title)
.should('contain', projects[1].title)
.should('contain', projects[2].title)
.should('contain', projects[3].title)
.should('contain', projects[4].title)
.should('contain', projects[5].title)
})
})

View File

@ -1,15 +1,17 @@
import {formatISO, format} from 'date-fns'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {TaskFactory} from '../../factories/task'
import {prepareLists} from './prepareLists'
import {prepareProjects} from './prepareProjects'
import '../../support/authenticateUser'
describe('List View Gantt', () => {
prepareLists()
describe('Project View Gantt', () => {
createFakeUserAndLogin()
prepareProjects()
it('Hides tasks with no dates', () => {
const tasks = TaskFactory.create(1)
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.g-gantt-rows-container')
.should('not.contain', tasks[0].title)
@ -23,7 +25,7 @@ describe('List View Gantt', () => {
nextMonth.setDate(1)
nextMonth.setMonth(9)
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.g-timeunits-container')
.should('contain', format(now, 'MMMM'))
@ -33,10 +35,10 @@ describe('List View Gantt', () => {
it('Shows tasks with dates', () => {
const now = new Date()
const tasks = TaskFactory.create(1, {
start_date: formatISO(now),
end_date: formatISO(now.setDate(now.getDate() + 4)),
start_date: now.toISOString(),
end_date: new Date(new Date(now).setDate(now.getDate() + 4)).toISOString(),
})
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.g-gantt-rows-container')
.should('not.be.empty')
@ -48,7 +50,7 @@ describe('List View Gantt', () => {
start_date: null,
end_date: null,
})
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.gantt-options .fancycheckbox')
.contains('Show tasks which don\'t have dates set')
@ -60,15 +62,14 @@ describe('List View Gantt', () => {
})
it('Drags a task around', () => {
cy.intercept('**/api/v1/tasks/*')
.as('taskUpdate')
cy.intercept(Cypress.env('API_URL') + '/tasks/*').as('taskUpdate')
const now = new Date()
TaskFactory.create(1, {
start_date: formatISO(now),
end_date: formatISO(now.setDate(now.getDate() + 4)),
start_date: now.toISOString(),
end_date: new Date(new Date(now).setDate(now.getDate() + 4)).toISOString(),
})
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.g-gantt-rows-container .g-gantt-row .g-gantt-row-bars-container div .g-gantt-bar')
.first()
@ -82,9 +83,9 @@ describe('List View Gantt', () => {
const now = Date.UTC(2022, 10, 9)
cy.clock(now, ['Date'])
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.list-gantt .gantt-options .field .control input.input.form-control')
cy.get('.project-gantt .gantt-options .field .control input.input.form-control')
.click()
cy.get('.flatpickr-calendar .flatpickr-innerContainer .dayContainer .flatpickr-day')
.first()
@ -98,13 +99,13 @@ describe('List View Gantt', () => {
})
it('Should change the date range based on date query parameters', () => {
cy.visit('/lists/1/gantt?dateFrom=2022-09-25&dateTo=2022-11-05')
cy.visit('/projects/1/gantt?dateFrom=2022-09-25&dateTo=2022-11-05')
cy.get('.g-timeunits-container')
.should('contain', 'September 2022')
.should('contain', 'October 2022')
.should('contain', 'November 2022')
cy.get('.list-gantt .gantt-options .field .control input.input.form-control')
cy.get('.project-gantt .gantt-options .field .control input.input.form-control')
.should('have.value', '25 Sep 2022 to 5 Nov 2022')
})
@ -114,7 +115,7 @@ describe('List View Gantt', () => {
start_date: formatISO(now),
end_date: formatISO(now.setDate(now.getDate() + 4)),
})
cy.visit('/lists/1/gantt')
cy.visit('/projects/1/gantt')
cy.get('.gantt-container .g-gantt-chart .g-gantt-row-bars-container .g-gantt-bar')
.dblclick()

View File

@ -1,24 +1,25 @@
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {BucketFactory} from '../../factories/bucket'
import {ListFactory} from '../../factories/list'
import {ProjectFactory} from '../../factories/project'
import {TaskFactory} from '../../factories/task'
import {prepareLists} from './prepareLists'
import {prepareProjects} from './prepareProjects'
import '../../support/authenticateUser'
describe('List View Kanban', () => {
describe('Project View Kanban', () => {
createFakeUserAndLogin()
prepareProjects()
let buckets
prepareLists()
beforeEach(() => {
buckets = BucketFactory.create(2)
})
it('Shows all buckets with their tasks', () => {
const data = TaskFactory.create(10, {
list_id: 1,
project_id: 1,
bucket_id: 1,
})
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.get('.kanban .bucket .title')
.contains(buckets[0].title)
@ -33,12 +34,12 @@ describe('List View Kanban', () => {
it('Can add a new task to a bucket', () => {
TaskFactory.create(2, {
list_id: 1,
project_id: 1,
bucket_id: 1,
})
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket')
cy.get('.kanban .bucket')
.contains(buckets[0].title)
.get('.bucket-footer .button')
.contains('Add another task')
@ -54,7 +55,7 @@ describe('List View Kanban', () => {
})
it('Can create a new bucket', () => {
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.get('.kanban .bucket.new-bucket .button')
.click()
@ -68,9 +69,9 @@ describe('List View Kanban', () => {
})
it('Can set a bucket limit', () => {
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket .bucket-header .dropdown.options .dropdown-trigger')
cy.get('.kanban .bucket .bucket-header .dropdown.options .dropdown-trigger')
.first()
.click()
cy.get('.kanban .bucket .bucket-header .dropdown.options .dropdown-menu .dropdown-item')
@ -89,9 +90,9 @@ describe('List View Kanban', () => {
})
it('Can rename a bucket', () => {
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket .bucket-header .title')
cy.get('.kanban .bucket .bucket-header .title')
.first()
.type('{selectall}New Bucket Title{enter}')
cy.get('.kanban .bucket .bucket-header .title')
@ -100,9 +101,9 @@ describe('List View Kanban', () => {
})
it('Can delete a bucket', () => {
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket .bucket-header .dropdown.options .dropdown-trigger')
cy.get('.kanban .bucket .bucket-header .dropdown.options .dropdown-trigger')
.first()
.click()
cy.get('.kanban .bucket .bucket-header .dropdown.options .dropdown-menu .dropdown-item')
@ -124,12 +125,12 @@ describe('List View Kanban', () => {
it('Can drag tasks around', () => {
const tasks = TaskFactory.create(2, {
list_id: 1,
project_id: 1,
bucket_id: 1,
})
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket .tasks .task')
cy.get('.kanban .bucket .tasks .task')
.contains(tasks[0].title)
.first()
.drag('.kanban .bucket:nth-child(2) .tasks')
@ -143,12 +144,12 @@ describe('List View Kanban', () => {
it('Should navigate to the task when the task card is clicked', () => {
const tasks = TaskFactory.create(5, {
id: '{increment}',
list_id: 1,
project_id: 1,
bucket_id: 1,
})
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket .tasks .task')
cy.get('.kanban .bucket .tasks .task')
.contains(tasks[0].title)
.should('be.visible')
.click()
@ -157,20 +158,20 @@ describe('List View Kanban', () => {
.should('contain', `/tasks/${tasks[0].id}`, { timeout: 1000 })
})
it('Should remove a task from the kanban board when moving it to another list', () => {
const lists = ListFactory.create(2)
it('Should remove a task from the kanban board when moving it to another project', () => {
const projects = ProjectFactory.create(2)
BucketFactory.create(2, {
list_id: '{increment}',
project_id: '{increment}',
})
const tasks = TaskFactory.create(5, {
id: '{increment}',
list_id: 1,
project_id: 1,
bucket_id: 1,
})
const task = tasks[0]
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.getSettled('.kanban .bucket .tasks .task')
cy.get('.kanban .bucket .tasks .task')
.contains(task.title)
.should('be.visible')
.click()
@ -179,7 +180,7 @@ describe('List View Kanban', () => {
.contains('Move')
.click()
cy.get('.task-view .content.details .field .multiselect.control .input-wrapper input')
.type(`${lists[1].title}{enter}`)
.type(`${projects[1].title}{enter}`)
// The requests happen with a 200ms timeout. Because of that, the results are not yet there when cypress
// presses enter and we can't simulate pressing on enter to select the item.
cy.get('.task-view .content.details .field .multiselect.control .search-results')
@ -196,12 +197,45 @@ describe('List View Kanban', () => {
it('Shows a button to filter the kanban board', () => {
const data = TaskFactory.create(10, {
list_id: 1,
project_id: 1,
bucket_id: 1,
})
cy.visit('/lists/1/kanban')
cy.visit('/projects/1/kanban')
cy.get('.list-kanban .filter-container .base-button')
cy.get('.project-kanban .filter-container .base-button')
.should('exist')
})
it('Should remove a task from the board when deleting it', () => {
const projects = ProjectFactory.create(1)
const buckets = BucketFactory.create(2, {
project_id: projects[0].id,
})
const tasks = TaskFactory.create(5, {
project_id: 1,
bucket_id: buckets[0].id,
})
const task = tasks[0]
cy.visit('/projects/1/kanban')
cy.get('.kanban .bucket .tasks .task')
.contains(task.title)
.should('be.visible')
.click()
cy.get('.task-view .action-buttons .button')
.should('be.visible')
.contains('Delete')
.click()
cy.get('.modal-mask .modal-container .modal-content .header')
.should('contain', 'Delete this task')
cy.get('.modal-mask .modal-container .modal-content .actions .button')
.contains('Do it!')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.kanban .bucket .tasks')
.should('not.contain', task.title)
})
})

View File

@ -1,31 +1,32 @@
import {UserListFactory} from '../../factories/users_list'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {UserProjectFactory} from '../../factories/users_project'
import {TaskFactory} from '../../factories/task'
import {UserFactory} from '../../factories/user'
import {ListFactory} from '../../factories/list'
import {prepareLists} from './prepareLists'
import {ProjectFactory} from '../../factories/project'
import {prepareProjects} from './prepareProjects'
import '../../support/authenticateUser'
describe('Project View Project', () => {
createFakeUserAndLogin()
prepareProjects()
describe('List View List', () => {
prepareLists()
it('Should be an empty list', () => {
cy.visit('/lists/1')
it('Should be an empty project', () => {
cy.visit('/projects/1')
cy.url()
.should('contain', '/lists/1/list')
cy.get('.list-title h1')
.should('contain', 'First List')
cy.get('.list-title .dropdown')
.should('contain', '/projects/1/list')
cy.get('.project-title')
.should('contain', 'First Project')
cy.get('.project-title-dropdown')
.should('exist')
cy.get('p')
.contains('This list is currently empty.')
.contains('This project is currently empty.')
.should('exist')
})
it('Should create a new task', () => {
const newTaskTitle = 'New task'
cy.visit('/lists/1')
cy.visit('/projects/1')
cy.get('.task-add textarea')
.type(newTaskTitle+'{enter}')
cy.get('.tasks')
@ -35,9 +36,9 @@ describe('List View List', () => {
it('Should navigate to the task when the title is clicked', () => {
const tasks = TaskFactory.create(5, {
id: '{increment}',
list_id: 1,
project_id: 1,
})
cy.visit('/lists/1/list')
cy.visit('/projects/1/list')
cy.get('.tasks .task .tasktext')
.contains(tasks[0].title)
@ -48,37 +49,36 @@ describe('List View List', () => {
.should('contain', `/tasks/${tasks[0].id}`)
})
it('Should not see any elements for a list which is shared read only', () => {
it('Should not see any elements for a project which is shared read only', () => {
UserFactory.create(2)
UserListFactory.create(1, {
list_id: 2,
UserProjectFactory.create(1, {
project_id: 2,
user_id: 1,
right: 0,
})
const lists = ListFactory.create(2, {
const projects = ProjectFactory.create(2, {
owner_id: '{increment}',
namespace_id: '{increment}',
})
cy.visit(`/lists/${lists[1].id}/`)
cy.visit(`/projects/${projects[1].id}/`)
cy.get('.list-title .icon')
cy.get('.project-title-wrapper .icon')
.should('not.exist')
cy.get('input.input[placeholder="Add a new task..."')
.should('not.exist')
})
it('Should only show the color of a list in the navigation and not in the list view', () => {
const lists = ListFactory.create(1, {
it('Should only show the color of a project in the navigation and not in the list view', () => {
const projects = ProjectFactory.create(1, {
hex_color: '00db60',
})
TaskFactory.create(10, {
list_id: lists[0].id,
project_id: projects[0].id,
})
cy.visit(`/lists/${lists[0].id}/`)
cy.visit(`/projects/${projects[0].id}/`)
cy.get('.menu-list li .list-menu-link .color-bubble')
.should('have.css', 'background-color', 'rgb(0, 219, 96)')
cy.get('.tasks-container .tasks .color-bubble')
cy.get('.tasks .color-bubble')
.should('not.exist')
})
@ -86,13 +86,13 @@ describe('List View List', () => {
const tasks = TaskFactory.create(100, {
id: '{increment}',
title: i => `task${i}`,
list_id: 1,
project_id: 1,
})
cy.visit('/lists/1/list')
cy.visit('/projects/1/list')
cy.get('.tasks-container .tasks')
cy.get('.tasks')
.should('contain', tasks[1].title)
cy.get('.tasks-container .tasks')
cy.get('.tasks')
.should('not.contain', tasks[99].title)
cy.get('.card-content .pagination .pagination-link')
@ -101,9 +101,9 @@ describe('List View List', () => {
cy.url()
.should('contain', '?page=2')
cy.get('.tasks-container .tasks')
cy.get('.tasks')
.should('contain', tasks[99].title)
cy.get('.tasks-container .tasks')
cy.get('.tasks')
.should('not.contain', tasks[1].title)
})
})

View File

@ -1,36 +1,38 @@
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {TaskFactory} from '../../factories/task'
import '../../support/authenticateUser'
describe('Project View Table', () => {
createFakeUserAndLogin()
describe('List View Table', () => {
it('Should show a table with tasks', () => {
const tasks = TaskFactory.create(1)
cy.visit('/lists/1/table')
cy.visit('/projects/1/table')
cy.get('.list-table table.table')
cy.get('.project-table table.table')
.should('exist')
cy.get('.list-table table.table')
cy.get('.project-table table.table')
.should('contain', tasks[0].title)
})
it('Should have working column switches', () => {
TaskFactory.create(1)
cy.visit('/lists/1/table')
cy.visit('/projects/1/table')
cy.get('.list-table .filter-container .items .button')
cy.get('.project-table .filter-container .items .button')
.contains('Columns')
.click()
cy.get('.list-table .filter-container .card.columns-filter .card-content .fancycheckbox .check')
cy.get('.project-table .filter-container .card.columns-filter .card-content .fancycheckbox')
.contains('Priority')
.click()
cy.get('.list-table .filter-container .card.columns-filter .card-content .fancycheckbox .check')
cy.get('.project-table .filter-container .card.columns-filter .card-content .fancycheckbox')
.contains('Done')
.click()
cy.get('.list-table table.table th')
cy.get('.project-table table.table th')
.contains('Priority')
.should('exist')
cy.get('.list-table table.table th')
cy.get('.project-table table.table th')
.contains('Done')
.should('not.exist')
})
@ -38,11 +40,11 @@ describe('List View Table', () => {
it('Should navigate to the task when the title is clicked', () => {
const tasks = TaskFactory.create(5, {
id: '{increment}',
list_id: 1,
project_id: 1,
})
cy.visit('/lists/1/table')
cy.visit('/projects/1/table')
cy.get('.list-table table.table')
cy.get('.project-table table.table')
.contains(tasks[0].title)
.click()

View File

@ -0,0 +1,171 @@
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {TaskFactory} from '../../factories/task'
import {ProjectFactory} from '../../factories/project'
import {prepareProjects} from './prepareProjects'
describe('Projects', () => {
createFakeUserAndLogin()
let projects
prepareProjects((newProjects) => (projects = newProjects))
it('Should create a new project', () => {
cy.visit('/projects')
cy.get('.project-header [data-cy=new-project]')
.click()
cy.url()
.should('contain', '/projects/new')
cy.get('.card-header-title')
.contains('New project')
cy.get('input[name=projectTitle]')
.type('New Project')
cy.get('.button')
.contains('Create')
.click()
cy.get('.global-notification', {timeout: 1000}) // Waiting until the request to create the new project is done
.should('contain', 'Success')
cy.url()
.should('contain', '/projects/')
cy.get('.project-title')
.should('contain', 'New Project')
})
it('Should redirect to a specific project view after visited', () => {
cy.intercept(Cypress.env('API_URL') + '/projects/*/buckets*').as('loadBuckets')
cy.visit('/projects/1/kanban')
cy.url()
.should('contain', '/projects/1/kanban')
cy.wait('@loadBuckets')
cy.visit('/projects/1')
cy.url()
.should('contain', '/projects/1/kanban')
})
it('Should rename the project in all places', () => {
TaskFactory.create(5, {
id: '{increment}',
project_id: 1,
})
const newProjectName = 'New project name'
cy.visit('/projects/1')
cy.get('.project-title')
.should('contain', 'First Project')
cy.get('.menu-container .menu-list li:first-child .dropdown .menu-list-dropdown-trigger')
.click()
cy.get('.menu-container .menu-list li:first-child .dropdown .dropdown-content')
.contains('Edit')
.click()
cy.get('#title')
.type(`{selectall}${newProjectName}`)
cy.get('footer.card-footer .button')
.contains('Save')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.project-title')
.should('contain', newProjectName)
.should('not.contain', projects[0].title)
cy.get('.menu-container .menu-list li:first-child')
.should('contain', newProjectName)
.should('not.contain', projects[0].title)
cy.visit('/')
cy.get('.project-grid')
.should('contain', newProjectName)
.should('not.contain', projects[0].title)
})
it('Should remove a project when deleting it', () => {
cy.visit(`/projects/${projects[0].id}`)
cy.get('.menu-container .menu-list li:first-child .dropdown .menu-list-dropdown-trigger')
.click()
cy.get('.menu-container .menu-list li:first-child .dropdown .dropdown-content')
.contains('Delete')
.click()
cy.url()
.should('contain', '/settings/delete')
cy.get('[data-cy="modalPrimary"]')
.contains('Do it')
.click()
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.menu-container .menu-list')
.should('not.contain', projects[0].title)
cy.location('pathname')
.should('equal', '/')
})
it('Should archive a project', () => {
cy.visit(`/projects/${projects[0].id}`)
cy.get('.project-title-dropdown')
.click()
cy.get('.project-title-dropdown .dropdown-menu .dropdown-item')
.contains('Archive')
.click()
cy.get('.modal-content')
.should('contain.text', 'Archive this project')
cy.get('.modal-content [data-cy=modalPrimary]')
.click()
cy.get('.menu-container .menu-list')
.should('not.contain', projects[0].title)
cy.get('main.app-content')
.should('contain.text', 'This project is archived. It is not possible to create new or edit tasks for it.')
})
it('Should show all projects on the projects page', () => {
const projects = ProjectFactory.create(10)
cy.visit('/projects')
projects.forEach(p => {
cy.get('[data-cy="projects-list"]')
.should('contain', p.title)
})
})
it('Should not show archived projects if the filter is not checked', () => {
ProjectFactory.create(1, {
id: 2,
}, false)
ProjectFactory.create(1, {
id: 3,
is_archived: true,
}, false)
// Initial
cy.visit('/projects')
cy.get('.project-grid')
.should('not.contain', 'Archived')
// Show archived
cy.get('[data-cy="show-archived-check"] label span')
.should('be.visible')
.click()
cy.get('[data-cy="show-archived-check"] input')
.should('be.checked')
cy.get('.project-grid')
.should('contain', 'Archived')
// Don't show archived
cy.get('[data-cy="show-archived-check"] label span')
.should('be.visible')
.click()
cy.get('[data-cy="show-archived-check"] input')
.should('not.be.checked')
// Second time visiting after unchecking
cy.visit('/projects')
cy.get('[data-cy="show-archived-check"] input')
.should('not.be.checked')
cy.get('.project-grid')
.should('not.contain', 'Archived')
})
})

View File

@ -1,22 +1,22 @@
import {LinkShareFactory} from '../../factories/link_sharing'
import {ListFactory} from '../../factories/list'
import {ProjectFactory} from '../../factories/project'
import {TaskFactory} from '../../factories/task'
describe('Link shares', () => {
it('Can view a link share', () => {
const lists = ListFactory.create(1)
const projects = ProjectFactory.create(1)
const tasks = TaskFactory.create(10, {
list_id: lists[0].id
project_id: projects[0].id
})
const linkShares = LinkShareFactory.create(1, {
list_id: lists[0].id,
project_id: projects[0].id,
right: 0,
})
cy.visit(`/share/${linkShares[0].hash}/auth`)
cy.get('h1.title')
.should('contain', lists[0].title)
.should('contain', projects[0].title)
cy.get('input.input[placeholder="Add a new task..."')
.should('not.exist')
cy.get('.tasks')

View File

@ -1,9 +1,12 @@
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {TeamFactory} from '../../factories/team'
import {TeamMemberFactory} from '../../factories/team_member'
import {UserFactory} from '../../factories/user'
import '../../support/authenticateUser'
describe('Team', () => {
createFakeUserAndLogin()
it('Creates a new team', () => {
TeamFactory.truncate()
cy.visit('/teams')

View File

@ -1,45 +1,43 @@
import {ListFactory} from '../../factories/list'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {ProjectFactory} from '../../factories/project'
import {seed} from '../../support/seed'
import {TaskFactory} from '../../factories/task'
import {formatISO} from 'date-fns'
import {UserFactory} from '../../factories/user'
import {NamespaceFactory} from '../../factories/namespace'
import {BucketFactory} from '../../factories/bucket'
import {updateUserSettings} from '../../support/updateUserSettings'
import '../../support/authenticateUser'
function seedTasks(numberOfTasks = 100, startDueDate = new Date()) {
UserFactory.create(1)
NamespaceFactory.create(1)
const list = ListFactory.create()[0]
function seedTasks(numberOfTasks = 50, startDueDate = new Date()) {
const project = ProjectFactory.create()[0]
BucketFactory.create(1, {
list_id: list.id,
project_id: project.id,
})
const tasks = []
let dueDate = startDueDate
for (let i = 0; i < numberOfTasks; i++) {
const now = new Date()
dueDate = (new Date(dueDate.valueOf())).setDate((new Date(dueDate.valueOf())).getDate() + 2)
dueDate = new Date(new Date(dueDate).setDate(dueDate.getDate() + 2))
tasks.push({
id: i + 1,
list_id: list.id,
project_id: project.id,
done: false,
created_by_id: 1,
title: 'Test Task ' + i,
index: i + 1,
due_date: formatISO(dueDate),
created: formatISO(now),
updated: formatISO(now),
due_date: dueDate.toISOString(),
created: now.toISOString(),
updated: now.toISOString(),
})
}
seed(TaskFactory.table, tasks)
return {tasks, list}
return {tasks, project}
}
describe('Home Page Task Overview', () => {
createFakeUserAndLogin()
it('Should show tasks with a near due date first on the home page overview', () => {
const {tasks} = seedTasks()
const taskCount = 50
const {tasks} = seedTasks(taskCount)
cy.visit('/')
cy.get('[data-cy="showTasks"] .card .task')
@ -49,8 +47,10 @@ describe('Home Page Task Overview', () => {
})
it('Should show overdue tasks first, then show other tasks', () => {
const oldDate = (new Date()).setDate((new Date()).getDate() - 14)
const {tasks} = seedTasks(100, oldDate)
const now = new Date()
const oldDate = new Date(new Date(now).setDate(now.getDate() - 14))
const taskCount = 50
const {tasks} = seedTasks(taskCount, oldDate)
cy.visit('/')
cy.get('[data-cy="showTasks"] .card .task')
@ -68,10 +68,10 @@ describe('Home Page Task Overview', () => {
TaskFactory.create(1, {
id: 999,
title: newTaskTitle,
due_date: formatISO(new Date()),
due_date: new Date().toISOString(),
}, false)
cy.visit(`/lists/${tasks[0].list_id}/list`)
cy.visit(`/projects/${tasks[0].project_id}/list`)
cy.get('.tasks .task')
.first()
.should('contain.text', newTaskTitle)
@ -83,12 +83,12 @@ describe('Home Page Task Overview', () => {
it('Should not show a new task without a date at the bottom when there are > 50 tasks', () => {
// We're not using the api here to create the task in order to verify the flow
const {tasks} = seedTasks()
const {tasks} = seedTasks(100)
const newTaskTitle = 'New Task'
cy.visit('/')
cy.visit(`/lists/${tasks[0].list_id}/list`)
cy.visit(`/projects/${tasks[0].project_id}/list`)
cy.get('.task-add textarea')
.type(newTaskTitle+'{enter}')
cy.visit('/')
@ -111,10 +111,10 @@ describe('Home Page Task Overview', () => {
.should('contain.text', newTaskTitle)
})
it('Should show a task without a due date added via default list at the bottom', () => {
const {list} = seedTasks(40)
it('Should show a task without a due date added via default project at the bottom', () => {
const {project} = seedTasks(40)
updateUserSettings({
default_list_id: list.id,
default_project_id: project.id,
overdue_tasks_reminders_time: '9:00',
})
@ -129,23 +129,22 @@ describe('Home Page Task Overview', () => {
.should('contain.text', newTaskTitle)
})
it('Should show the cta buttons for new list when there are no tasks', () => {
it('Should show the cta buttons for new project when there are no tasks', () => {
TaskFactory.truncate()
cy.visit('/')
cy.get('.home.app-content .content')
.should('contain.text', 'You can create a new list for your new tasks:')
.should('contain.text', 'Or import your lists and tasks from other services into Vikunja:')
.should('contain.text', 'Import your projects and tasks from other services into Vikunja:')
})
it('Should not show the cta buttons for new list when there are tasks', () => {
it('Should not show the cta buttons for new project when there are tasks', () => {
seedTasks()
cy.visit('/')
cy.get('.home.app-content .content')
.should('not.contain.text', 'You can create a new list for your new tasks:')
.should('not.contain.text', 'Or import your lists and tasks from other services into Vikunja:')
.should('not.contain.text', 'You can create a new project for your new tasks:')
.should('not.contain.text', 'Or import your projects and tasks from other services into Vikunja:')
})
})

View File

@ -1,17 +1,15 @@
import {formatISO} from 'date-fns'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {TaskFactory} from '../../factories/task'
import {ListFactory} from '../../factories/list'
import {ProjectFactory} from '../../factories/project'
import {TaskCommentFactory} from '../../factories/task_comment'
import {UserFactory} from '../../factories/user'
import {NamespaceFactory} from '../../factories/namespace'
import {UserListFactory} from '../../factories/users_list'
import {UserProjectFactory} from '../../factories/users_project'
import {TaskAssigneeFactory} from '../../factories/task_assignee'
import {LabelFactory} from '../../factories/labels'
import {LabelTaskFactory} from '../../factories/label_task'
import {BucketFactory} from '../../factories/bucket'
import '../../support/authenticateUser'
import {TaskAttachmentFactory} from '../../factories/task_attachments'
function addLabelToTaskAndVerify(labelTitle: string) {
@ -46,23 +44,23 @@ function uploadAttachmentAndVerify(taskId: number) {
}
describe('Task', () => {
let namespaces
let lists
createFakeUserAndLogin()
let projects
let buckets
beforeEach(() => {
UserFactory.create(1)
namespaces = NamespaceFactory.create(1)
lists = ListFactory.create(1)
// UserFactory.create(1)
projects = ProjectFactory.create(1)
buckets = BucketFactory.create(1, {
list_id: lists[0].id,
project_id: projects[0].id,
})
TaskFactory.truncate()
UserListFactory.truncate()
UserProjectFactory.truncate()
})
it('Should be created new', () => {
cy.visit('/lists/1/list')
cy.visit('/projects/1/list')
cy.get('.input[placeholder="Add a new task…"')
.type('New Task')
cy.get('.button')
@ -73,11 +71,11 @@ describe('Task', () => {
.should('contain', 'New Task')
})
it('Inserts new tasks at the top of the list', () => {
it('Inserts new tasks at the top of the project', () => {
TaskFactory.create(1)
cy.visit('/lists/1/list')
cy.get('.list-is-empty-notice')
cy.visit('/projects/1/list')
cy.get('.project-is-empty-notice')
.should('not.exist')
cy.get('.input[placeholder="Add a new task…"')
.type('New Task')
@ -94,8 +92,8 @@ describe('Task', () => {
it('Marks a task as done', () => {
TaskFactory.create(1)
cy.visit('/lists/1/list')
cy.get('.tasks .task .fancycheckbox label.check')
cy.visit('/projects/1/list')
cy.get('.tasks .task .fancycheckbox')
.first()
.click()
cy.get('.global-notification')
@ -105,11 +103,11 @@ describe('Task', () => {
it('Can add a task to favorites', () => {
TaskFactory.create(1)
cy.visit('/lists/1/list')
cy.visit('/projects/1/list')
cy.get('.tasks .task .favorite')
.first()
.click()
cy.get('.menu.namespaces-lists')
cy.get('.menu-container')
.should('contain', 'Favorites')
})
@ -132,8 +130,7 @@ describe('Task', () => {
cy.get('.task-view h1.title.task-id')
.should('contain', '#1')
cy.get('.task-view h6.subtitle')
.should('contain', namespaces[0].title)
.should('contain', lists[0].title)
.should('contain', projects[0].title)
cy.get('.task-view .details.content.description')
.should('contain', tasks[0].description)
cy.get('.task-view .action-buttons p.created')
@ -145,7 +142,7 @@ describe('Task', () => {
id: 1,
index: 1,
done: true,
done_at: formatISO(new Date())
done_at: new Date().toISOString()
})
cy.visit(`/tasks/${tasks[0].id}`)
@ -178,21 +175,21 @@ describe('Task', () => {
.should('contain', 'Mark as undone')
})
it('Shows a task identifier since the list has one', () => {
const lists = ListFactory.create(1, {
it('Shows a task identifier since the project has one', () => {
const projects = ProjectFactory.create(1, {
id: 1,
identifier: 'TEST',
})
const tasks = TaskFactory.create(1, {
id: 1,
list_id: lists[0].id,
project_id: projects[0].id,
index: 1,
})
cy.visit(`/tasks/${tasks[0].id}`)
cy.get('.task-view h1.title.task-id')
.should('contain', `${lists[0].identifier}-${tasks[0].index}`)
.should('contain', `${projects[0].identifier}-${tasks[0].index}`)
})
it('Can edit the description', () => {
@ -235,14 +232,14 @@ describe('Task', () => {
.should('contain', 'Success')
})
it('Can move a task to another list', () => {
const lists = ListFactory.create(2)
it('Can move a task to another project', () => {
const projects = ProjectFactory.create(2)
BucketFactory.create(2, {
list_id: '{increment}'
project_id: '{increment}'
})
const tasks = TaskFactory.create(1, {
id: 1,
list_id: lists[0].id,
project_id: projects[0].id,
})
cy.visit(`/tasks/${tasks[0].id}`)
@ -250,7 +247,7 @@ describe('Task', () => {
.contains('Move')
.click()
cy.get('.task-view .content.details .field .multiselect.control .input-wrapper input')
.type(`${lists[1].title}{enter}`)
.type(`${projects[1].title}{enter}`)
// The requests happen with a 200ms timeout. Because of that, the results are not yet there when cypress
// presses enter and we can't simulate pressing on enter to select the item.
cy.get('.task-view .content.details .field .multiselect.control .search-results')
@ -259,8 +256,7 @@ describe('Task', () => {
.click()
cy.get('.task-view h6.subtitle')
.should('contain', namespaces[0].title)
.should('contain', lists[1].title)
.should('contain', projects[1].title)
cy.get('.global-notification')
.should('contain', 'Success')
})
@ -268,7 +264,7 @@ describe('Task', () => {
it('Can delete a task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
list_id: 1,
project_id: 1,
})
cy.visit(`/tasks/${tasks[0].id}`)
@ -285,17 +281,17 @@ describe('Task', () => {
cy.get('.global-notification')
.should('contain', 'Success')
cy.url()
.should('contain', `/lists/${tasks[0].list_id}/`)
.should('contain', `/projects/${tasks[0].project_id}/`)
})
it('Can add an assignee to a task', () => {
const users = UserFactory.create(5)
const tasks = TaskFactory.create(1, {
id: 1,
list_id: 1,
project_id: 1,
})
UserListFactory.create(5, {
list_id: 1,
UserProjectFactory.create(5, {
project_id: 1,
user_id: '{increment}',
})
@ -320,10 +316,10 @@ describe('Task', () => {
const users = UserFactory.create(2)
const tasks = TaskFactory.create(1, {
id: 1,
list_id: 1,
project_id: 1,
})
UserListFactory.create(5, {
list_id: 1,
UserProjectFactory.create(5, {
project_id: 1,
user_id: '{increment}',
})
TaskAssigneeFactory.create(1, {
@ -346,7 +342,7 @@ describe('Task', () => {
it('Can add a new label to a task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
list_id: 1,
project_id: 1,
})
LabelFactory.truncate()
const newLabelText = 'some new label'
@ -374,7 +370,7 @@ describe('Task', () => {
it('Can add an existing label to a task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
list_id: 1,
project_id: 1,
})
const labels = LabelFactory.create(1)
LabelTaskFactory.truncate()
@ -387,13 +383,13 @@ describe('Task', () => {
it('Can add a label to a task and it shows up on the kanban board afterwards', () => {
const tasks = TaskFactory.create(1, {
id: 1,
list_id: lists[0].id,
project_id: projects[0].id,
bucket_id: buckets[0].id,
})
const labels = LabelFactory.create(1)
LabelTaskFactory.truncate()
cy.visit(`/lists/${lists[0].id}/kanban`)
cy.visit(`/projects/${projects[0].id}/kanban`)
cy.get('.bucket .task')
.contains(tasks[0].title)
@ -411,7 +407,7 @@ describe('Task', () => {
it('Can remove a label from a task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
list_id: 1,
project_id: 1,
})
const labels = LabelFactory.create(1)
LabelTaskFactory.create(1, {
@ -421,10 +417,10 @@ describe('Task', () => {
cy.visit(`/tasks/${tasks[0].id}`)
cy.getSettled('.task-view .details.labels-list .multiselect .input-wrapper')
cy.get('.task-view .details.labels-list .multiselect .input-wrapper')
.should('be.visible')
.should('contain', labels[0].title)
cy.getSettled('.task-view .details.labels-list .multiselect .input-wrapper')
cy.get('.task-view .details.labels-list .multiselect .input-wrapper')
.children()
.first()
.get('[data-cy="taskDetail.removeLabel"]')
@ -526,13 +522,13 @@ describe('Task', () => {
TaskAttachmentFactory.truncate()
const tasks = TaskFactory.create(1, {
id: 1,
list_id: lists[0].id,
project_id: projects[0].id,
bucket_id: buckets[0].id,
})
const labels = LabelFactory.create(1)
LabelTaskFactory.truncate()
cy.visit(`/lists/${lists[0].id}/kanban`)
cy.visit(`/projects/${projects[0].id}/kanban`)
cy.get('.bucket .task')
.contains(tasks[0].title)

12
cypress/e2e/tsconfig.json Normal file
View File

@ -0,0 +1,12 @@
{
"extends": "@vue/tsconfig/tsconfig.dom.json",
"include": ["./**/*", "../support/**/*", "../factories/**/*"],
"compilerOptions": {
"baseUrl": ".",
"isolatedModules": false,
"target": "ES2015",
"lib": ["ESNext", "dom"],
"types": ["cypress"],
"ignoreDeprecations": "5.0"
}
}

View File

@ -1,26 +1,23 @@
import {UserFactory} from '../../factories/user'
const testAndAssertFailed = fixture => {
cy.intercept(Cypress.env('API_URL') + '/login*').as('login')
cy.visit('/login')
cy.get('input[id=username]').type(fixture.username)
cy.get('input[id=password]').type(fixture.password)
cy.get('.button').contains('Login').click()
cy.wait(5000) // It can take waaaayy too long to log the user in
cy.wait('@login')
cy.url().should('include', '/')
cy.get('div.message.danger').contains('Wrong username or password.')
}
const username = 'test'
context('Login', () => {
beforeEach(() => {
UserFactory.create(1, {
username: 'test',
})
cy.visit('/', {
onBeforeLoad(win) {
win.localStorage.removeItem('token')
},
})
UserFactory.create(1, {username})
})
it('Should log in with the right credentials', () => {

View File

@ -1,15 +1,17 @@
import '../../support/authenticateUser'
import {createLists} from '../list/prepareLists'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
import {createProjects} from '../project/prepareProjects'
function logout() {
cy.get('.navbar .user .username')
cy.get('.navbar .username-dropdown-trigger')
.click()
cy.get('.navbar .user .dropdown-menu .dropdown-item')
cy.get('.navbar .dropdown-item')
.contains('Logout')
.click()
}
describe('Log out', () => {
createFakeUserAndLogin()
it('Logs the user out', () => {
cy.visit('/')
@ -24,21 +26,21 @@ describe('Log out', () => {
})
})
it.skip('Should clear the list history after logging the user out', () => {
const lists = createLists()
cy.visit(`/lists/${lists[0].id}`)
it.skip('Should clear the project history after logging the user out', () => {
const projects = createProjects()
cy.visit(`/projects/${projects[0].id}`)
.then(() => {
expect(localStorage.getItem('listHistory')).to.not.eq(null)
expect(localStorage.getItem('projectHistory')).to.not.eq(null)
})
logout()
cy.wait(1000) // This makes re-loading of the list and associated entities (and the resulting error) visible
cy.wait(1000) // This makes re-loading of the project and associated entities (and the resulting error) visible
cy.url()
.should('contain', '/login')
.then(() => {
expect(localStorage.getItem('listHistory')).to.eq(null)
expect(localStorage.getItem('projectHistory')).to.eq(null)
})
})
})

View File

@ -1,11 +1,7 @@
import {UserFactory} from '../../factories/user'
import '../../support/authenticateUser'
import {createFakeUserAndLogin} from '../../support/authenticateUser'
describe('User Settings', () => {
beforeEach(() => {
UserFactory.create(1)
})
createFakeUserAndLogin()
it('Changes the user avatar', () => {
cy.intercept(`${Cypress.env('API_URL')}/user/settings/avatar/upload`).as('uploadAvatar')
@ -41,7 +37,7 @@ describe('User Settings', () => {
cy.get('.global-notification')
.should('contain', 'Success')
cy.get('.navbar .user .username')
cy.get('.navbar .username-dropdown-trigger .username')
.should('contain', 'Lorem Ipsum')
})
})

View File

@ -1,6 +1,5 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class BucketFactory extends Factory {
static table = 'buckets'
@ -11,10 +10,10 @@ export class BucketFactory extends Factory {
return {
id: '{increment}',
title: faker.lorem.words(3),
list_id: 1,
project_id: 1,
created_by_id: 1,
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString(),
}
}
}

View File

@ -1,5 +1,4 @@
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class LabelTaskFactory extends Factory {
static table = 'label_tasks'
@ -11,7 +10,7 @@ export class LabelTaskFactory extends Factory {
id: '{increment}',
task_id: 1,
label_id: 1,
created: formatISO(now),
created: now.toISOString(),
}
}
}

View File

@ -1,7 +1,6 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class LabelFactory extends Factory {
static table = 'labels'
@ -15,8 +14,8 @@ export class LabelFactory extends Factory {
description: faker.lorem.text(10),
hex_color: (Math.random()*0xFFFFFF<<0).toString(16), // random 6-digit hex number
created_by_id: 1,
created: formatISO(now),
updated: formatISO(now),
created: now.toISOString(),
updated: now.toISOString(),
}
}
}

View File

@ -1,5 +1,4 @@
import {Factory} from '../support/factory'
import {formatISO} from "date-fns"
import {faker} from '@faker-js/faker'
export class LinkShareFactory extends Factory {
@ -11,12 +10,12 @@ export class LinkShareFactory extends Factory {
return {
id: '{increment}',
hash: faker.random.word(32),
list_id: 1,
project_id: 1,
right: 0,
sharing_type: 0,
shared_by_id: 1,
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString(),
}
}
}

View File

@ -1,20 +0,0 @@
import {Factory} from '../support/factory'
import {formatISO} from "date-fns"
import {faker} from '@faker-js/faker'
export class ListFactory extends Factory {
static table = 'lists'
static factory() {
const now = new Date()
return {
id: '{increment}',
title: faker.lorem.words(3),
owner_id: 1,
namespace_id: 1,
created: formatISO(now),
updated: formatISO(now)
}
}
}

View File

@ -1,9 +1,8 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
import {faker} from '@faker-js/faker'
export class NamespaceFactory extends Factory {
static table = 'namespaces'
export class ProjectFactory extends Factory {
static table = 'projects'
static factory() {
const now = new Date()
@ -12,8 +11,8 @@ export class NamespaceFactory extends Factory {
id: '{increment}',
title: faker.lorem.words(3),
owner_id: 1,
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString(),
}
}
}
}

View File

@ -1,6 +1,5 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class TaskFactory extends Factory {
static table = 'tasks'
@ -12,12 +11,12 @@ export class TaskFactory extends Factory {
id: '{increment}',
title: faker.lorem.words(3),
done: false,
list_id: 1,
project_id: 1,
created_by_id: 1,
index: '{increment}',
position: '{increment}',
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString()
}
}
}

View File

@ -1,5 +1,4 @@
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class TaskAssigneeFactory extends Factory {
static table = 'task_assignees'
@ -11,7 +10,7 @@ export class TaskAssigneeFactory extends Factory {
id: '{increment}',
task_id: 1,
user_id: 1,
created: formatISO(now),
created: now.toISOString(),
}
}
}

View File

@ -1,5 +1,4 @@
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class TaskAttachmentFactory extends Factory {
static table = 'task_attachments'
@ -11,7 +10,7 @@ export class TaskAttachmentFactory extends Factory {
id: '{increment}',
task_id: 1,
file_id: 1,
created: formatISO(now),
created: now.toISOString(),
}
}
}

View File

@ -1,7 +1,6 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from "date-fns"
export class TaskCommentFactory extends Factory {
static table = 'task_comments'
@ -14,8 +13,8 @@ export class TaskCommentFactory extends Factory {
comment: faker.lorem.text(3),
author_id: 1,
task_id: 1,
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString()
}
}
}

View File

@ -1,6 +1,5 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class TeamFactory extends Factory {
static table = 'teams'
@ -11,8 +10,8 @@ export class TeamFactory extends Factory {
return {
name: faker.lorem.words(3),
created_by_id: 1,
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString(),
}
}
}

View File

@ -1,5 +1,4 @@
import {Factory} from '../support/factory'
import {formatISO} from 'date-fns'
export class TeamMemberFactory extends Factory {
static table = 'team_members'
@ -9,7 +8,7 @@ export class TeamMemberFactory extends Factory {
team_id: 1,
user_id: 1,
admin: false,
created: formatISO(new Date()),
created: new Date().toISOString(),
}
}
}

View File

@ -1,7 +1,6 @@
import {faker} from '@faker-js/faker'
import {Factory} from '../support/factory'
import {formatISO} from "date-fns"
export class UserFactory extends Factory {
static table = 'users'
@ -15,8 +14,8 @@ export class UserFactory extends Factory {
password: '$2a$14$dcadBoMBL9jQoOcZK8Fju.cy0Ptx2oZECkKLnaa8ekRoTFe1w7To.', // 1234
status: 0,
issuer: 'local',
created: formatISO(now),
updated: formatISO(now)
created: now.toISOString(),
updated: now.toISOString(),
}
}
}

View File

@ -1,19 +0,0 @@
import {Factory} from '../support/factory'
import {formatISO} from "date-fns"
export class UserListFactory extends Factory {
static table = 'users_lists'
static factory() {
const now = new Date()
return {
id: '{increment}',
list_id: 1,
user_id: 1,
right: 0,
created: formatISO(now),
updated: formatISO(now)
}
}
}

View File

@ -0,0 +1,18 @@
import {Factory} from '../support/factory'
export class UserProjectFactory extends Factory {
static table = 'users_projects'
static factory() {
const now = new Date()
return {
id: '{increment}',
project_id: 1,
user_id: 1,
right: 0,
created: now.toISOString(),
updated: now.toISOString(),
}
}
}

View File

@ -4,26 +4,32 @@
import {UserFactory} from '../factories/user'
let token
before(() => {
const users = UserFactory.create(1)
cy.request('POST', `${Cypress.env('API_URL')}/login`, {
username: users[0].username,
password: '1234',
})
.its('body')
.then(r => {
token = r.token
export function login(user, cacheAcrossSpecs = false) {
if (!user) {
throw new Error('Needs user')
}
// Caching session when logging in via page visit
cy.session(`user__${user.username}`, () => {
cy.request('POST', `${Cypress.env('API_URL')}/login`, {
username: user.username,
password: '1234',
}).then(({ body }) => {
window.localStorage.setItem('token', body.token)
})
})
}, {
cacheAcrossSpecs,
})
}
beforeEach(() => {
cy.log(`Using token ${token} to make authenticated requests`)
cy.visit('/', {
onBeforeLoad(win) {
win.localStorage.setItem('token', token)
},
export function createFakeUserAndLogin() {
let user
before(() => {
user = UserFactory.create(1)[0]
})
})
beforeEach(() => {
login(user, true)
})
return user
}

View File

@ -34,38 +34,4 @@
// visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element>
// }
// }
// }
/**
* Recursively gets an element, returning only after it's determined to be attached to the DOM for good.
*
* Source: https://github.com/cypress-io/cypress/issues/7306#issuecomment-850621378
*/
Cypress.Commands.add('getSettled', (selector, opts = {}) => {
const retries = opts.retries || 3
const delay = opts.delay || 100
const isAttached = (resolve, count = 0) => {
const el = Cypress.$(selector)
// is element attached to the DOM?
count = Cypress.dom.isAttached(el) ? count + 1 : 0
// hit our base case, return the element
if (count >= retries) {
return resolve(el)
}
// retry after a bit of a delay
setTimeout(() => isAttached(resolve, count), delay)
}
// wrap, so we can chain cypress commands off the result
return cy.wrap(null).then(() => {
return new Cypress.Promise((resolve) => {
return isAttached(resolve, 0)
}).then((el) => {
return cy.wrap(el)
})
})
})
// }

View File

@ -1,10 +0,0 @@
{
"extends": "@vue/tsconfig/tsconfig.web.json",
"include": ["./integration/**/*", "./support/**/*"],
"compilerOptions": {
"isolatedModules": false,
"target": "es5",
"lib": ["es5", "dom"],
"types": ["cypress"]
}
}

View File

@ -1,17 +0,0 @@
image: vikunja/frontend:unstable
manifests:
-
image: vikunja/frontend:unstable-linux-amd64
platform:
architecture: amd64
os: linux
-
image: vikunja/frontend:unstable-linux-arm64
platform:
architecture: arm64
os: linux
-
image: vikunja/frontend:unstable-linux-arm
platform:
architecture: arm
os: linux

View File

@ -1,23 +0,0 @@
image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
{{/if}}
manifests:
-
image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
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:
architecture: arm
os: linux

16
docker/injector.sh Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env sh
set -e
echo "info: API URL is $VIKUNJA_API_URL"
echo "info: Sentry enabled: $VIKUNJA_SENTRY_ENABLED"
# Escape the variable to prevent sed from complaining
VIKUNJA_API_URL="$(echo "$VIKUNJA_API_URL" | sed -r 's/([:;])/\\\1/g')"
VIKUNJA_SENTRY_DSN="$(echo "$VIKUNJA_SENTRY_DSN" | sed -r 's/([:;])/\\\1/g')"
sed -ri "s:^(\s*window.API_URL\s*=)\s*.+:\1 '${VIKUNJA_API_URL}':g" /usr/share/nginx/html/index.html
sed -ri "s:^(\s*window.SENTRY_ENABLED\s*=)\s*.+:\1 ${VIKUNJA_SENTRY_ENABLED}:g" /usr/share/nginx/html/index.html
sed -ri "s:^(\s*window.SENTRY_DSN\s*=)\s*.+:\1 '${VIKUNJA_SENTRY_DSN}':g" /usr/share/nginx/html/index.html
sed -ri "s:^(\s*window.PROJECT_INFINITE_NESTING_ENABLED\s*=)\s*.+:\1 '${VIKUNJA_PROJECT_INFINITE_NESTING_ENABLED}':g" /usr/share/nginx/html/index.html
date -uIseconds | xargs echo 'info: started at'

19
docker/ipv6-disable.sh Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env sh
set -e
if [ ! -f "/proc/net/if_inet6" ]; then
echo "info: IPv6 is not available! Removing IPv6 listen configuration"
find /etc/nginx/conf.d -name '*.conf' -type f | \
while IFS= read -r CONFIG; do
sed -r '/^\s*listen\s*\[::\]:.+$/d' "$CONFIG" > "$CONFIG.temp"
if ! diff -U 5 "$CONFIG" "$CONFIG.temp" > "$CONFIG.diff"; then
echo "info: Removing IPv6 lines from $CONFIG" | \
cat - "$CONFIG.diff"
echo "# IPv6 is disabled because /proc/net/if_inet6 was not found" | \
cat - "$CONFIG.temp" > "$CONFIG"
else
echo "info: Skipping $CONFIG because it does not have IPv6 listen"
fi
rm -f "$CONFIG.temp" "$CONFIG.diff"
done
fi

111
docker/nginx.conf Normal file
View File

@ -0,0 +1,111 @@
# Generated by nginxconfig.io
# https://www.digitalocean.com/community/tools/nginx?domains.0.server.domain=localhost&domains.0.server.documentRoot=%2Fusr%2Fshare%2Fnginx%2Fhtml&domains.0.server.cdnSubdomain=true&domains.0.https.https=false&domains.0.php.php=false&domains.0.routing.index=index.html&domains.0.routing.fallbackHtml=true&domains.0.routing.fallbackPhp=false&global.performance.assetsExpiration=1d&global.performance.mediaExpiration=1d&global.performance.svgExpiration=1d&global.performance.fontsExpiration=1d&global.logging.accessLog=%2Fdev%2Fstdout&global.logging.errorLog=%2Fdev%2Fstderr%20warn&global.logging.logNotFound=true&global.nginx.user=nginx&global.nginx.pid=%2Fvar%2Frun%2Fnginx.pid&global.nginx.clientMaxBodySize=50&global.docker.dockerfile=true&global.tools.modularizedStructure=false&global.tools.symlinkVhost=false
# and then edited manually ;)
pid /tmp/nginx.pid;
worker_processes auto;
events {
multi_accept on;
worker_connections 1024;
}
http {
charset utf-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
types_hash_max_size 2048;
types_hash_bucket_size 64;
# rootless
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
# MIME
include mime.types;
default_type application/octet-stream;
types {
application/manifest+json webmanifest;
}
# Logging
log_format json escape=json
'{'
'"bytes_sent": "$bytes_sent",'
'"http_user_agent": "$http_user_agent",'
'"nginx_version": "$nginx_version",'
'"query_string": "$query_string",'
'"realip_remote_addr": "$realip_remote_addr",'
'"remote_addr": "$remote_addr",'
'"remote_user": "$remote_user",'
'"request_length": "$request_length",'
'"request_method": "$request_method",'
'"request_time": "$request_time",'
'"server_addr": "$server_addr",'
'"server_port": "$server_port",'
'"server_protocol": "$server_protocol",'
'"status": "$status",'
'"time_local": "$time_local",'
'"uri": "$uri"'
'}';
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /dev/stdout main;
error_log /dev/stderr warn;
keepalive_timeout 65;
# compression
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
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
image/x-icon
audio/wav;
map_hash_max_size 128;
map_hash_bucket_size 128;
map $sent_http_content_type $expires {
default off;
text/css max;
application/javascript max;
text/javascript max;
application/vnd.ms-fontobject max;
application/x-font-ttf max;
font/opentype max;
font/woff2 max;
image/svg+xml max;
image/x-icon max;
audio/wav max;
~images/ max;
~font/ max;
}
include /etc/nginx/conf.d/*.conf;
}

View File

@ -0,0 +1,85 @@
server {
listen ${VIKUNJA_HTTP_PORT};
listen [::]:${VIKUNJA_HTTP_PORT};
## Needed when behind HAProxy with SSL termination + HTTP/2 support
listen ${VIKUNJA_HTTP2_PORT} default_server http2 proxy_protocol;
listen [::]:${VIKUNJA_HTTP2_PORT} default_server http2 proxy_protocol;
server_name _;
expires $expires;
root /usr/share/nginx/html;
access_log /dev/stdout ${VIKUNJA_LOG_FORMAT};
# security headers
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "interest-cohort=()" always;
# . files
location ~ /\.(?!well-known) {
deny all;
}
# assume that everything else is handled by the application router, by injecting the index.html.
location / {
autoindex off;
expires off;
add_header Cache-Control "public, max-age=0, s-maxage=0, must-revalidate" always;
try_files $uri /index.html =404;
}
# Disable caching for sw
location = /sw.js {
autoindex off;
expires off;
add_header Cache-Control "public, max-age=0, s-maxage=0, must-revalidate" always;
}
# Disable caching for webmanifest
location = /manifest.webmanifest {
autoindex off;
expires off;
add_header Cache-Control "public, max-age=0, s-maxage=0, must-revalidate" always;
}
# favicon.ico
location = /favicon.ico {
log_not_found off;
access_log off;
}
# robots.txt
location = /robots.txt {
log_not_found off;
access_log off;
expires -1; # no-cache
}
location = /ready {
return 200 "";
access_log off;
expires -1; # no-cache
}
# all assets contain hash in filename, cache forever
location ^~ /assets/ {
add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
try_files $uri =404;
}
# all workbox scripts are compiled with hash in filename, cache forever3
location ^~ /workbox- {
add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
try_files $uri =404;
}
# assets, media
location ~* .(txt|webmanifest|css|js|mjs|map|svg|jpg|jpeg|png|ico|ttf|woff|woff2|wav)$ {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html { }
}

View File

@ -30,21 +30,21 @@ A basic service can look like this:
```javascript
import AbstractService from './abstractService'
import ListModel from '../models/list'
import ProjectModel from '../models/project'
export default class ListService extends AbstractService {
export default class ProjectService extends AbstractService {
constructor() {
super({
getAll: '/lists',
get: '/lists/{id}',
create: '/namespaces/{namespaceID}/lists',
update: '/lists/{id}',
delete: '/lists/{id}',
getAll: '/projects',
get: '/projects/{id}',
create: '/namespaces/{namespaceID}/projects',
update: '/projects/{id}',
delete: '/projects/{id}',
})
}
modelFactory(data) {
return new ListModel(data)
return new ProjectModel(data)
}
}
```
@ -132,7 +132,7 @@ import AbstractModel from './abstractModel'
import TaskModel from './task'
import UserModel from './user'
export default class ListModel extends AbstractModel {
export default class ProjectModel extends AbstractModel {
constructor(data) {
// The constructor of AbstractModel handles all the default parsing.

9
env.config.d.ts vendored Normal file
View File

@ -0,0 +1,9 @@
declare module 'postcss-easings' {
import postcssEasings from 'postcss-easings'
export default postcssEasings
}
declare module 'postcss-easing-gradients' {
import postcssEasingGradients from 'postcss-easing-gradients'
export default postcssEasingGradients
}

21
env.d.ts vendored
View File

@ -1,3 +1,22 @@
/// <reference types="vite/client" />
/// <reference types="vite-svg-loader" />
/// <reference types="cypress" />
/// <reference types="cypress" />
/// <reference types="@histoire/plugin-vue/components" />
declare module 'postcss-focus-within/browser' {
import focusWithinInit from 'postcss-focus-within/browser'
export default focusWithinInit
}
declare module 'css-has-pseudo/browser' {
import cssHasPseudo from 'css-has-pseudo/browser'
export default cssHasPseudo
}
interface ImportMetaEnv {
readonly VITE_IS_ONLINE: boolean
}
interface ImportMeta {
readonly env: ImportMetaEnv
}

View File

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1664753041,
"narHash": "sha256-0ogaD8PaGHluARFeupofvk1Nq9gpVeZdlFM0Kcwguys=",
"lastModified": 1685498995,
"narHash": "sha256-rdyjnkq87tJp+T2Bm1OD/9NXKSsh/vLlPeqCc/mm7qs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a62844b302507c7531ad68a86cb7aa54704c9cb4",
"rev": "9cfaa8a1a00830d17487cb60a19bb86f96f09b27",
"type": "github"
},
"original": {

34
histoire.config.ts Normal file
View File

@ -0,0 +1,34 @@
import {defineConfig, defaultColors} from 'histoire'
import {HstVue} from '@histoire/plugin-vue'
import {HstScreenshot} from '@histoire/plugin-screenshot'
export default defineConfig({
setupFile: './src/histoire.setup.ts',
storyIgnored: [
'**/node_modules/**',
'**/dist/**',
// see https://kolaente.dev/vikunja/frontend/pulls/2724#issuecomment-42012
'**/.direnv/**',
],
plugins: [
HstVue(),
HstScreenshot({
// Options here
}),
],
theme: {
title: 'Vikunja',
colors: {
// https://histoire.dev/guide/config.html#builtin-colors
gray: defaultColors.zinc,
primary: defaultColors.cyan,
},
// logo: {
// square: './img/square.png',
// light: './img/light.png',
// dark: './img/dark.png',
// },
logoHref: 'https://vikunja.io',
// favicon: './favicon.ico',
},
})

View File

@ -9,13 +9,7 @@
<link rel="icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/images/icons/apple-touch-icon-180x180.png"/>
<link rel="preload" crossorigin="anonymous" href="/fonts/open-sans-v15-latin-700italic.woff2" as="font">
<link rel="preload" crossorigin="anonymous" href="/fonts/open-sans-v15-latin-italic.woff2" as="font">
<link rel="preload" crossorigin="anonymous" href="/fonts/quicksand-v7-latin-500.woff2" as="font">
<link rel="preload" crossorigin="anonymous" href="/fonts/quicksand-v7-latin-700.woff2" as="font">
<link rel="preload" crossorigin="anonymous" href="/fonts/open-sans-v15-latin-regular.woff2" as="font">
<link rel="preload" crossorigin="anonymous" href="/fonts/open-sans-v15-latin-700.woff2" as="font">
<link rel="preload" crossorigin="anonymous" href="/fonts/quicksand-v7-latin-regular.woff2" as="font">
<!--__vite-plugin-inject-preload__-->
</head>
<body>
<noscript>
@ -33,6 +27,9 @@
// our sentry instance to notify us of potential problems.
window.SENTRY_ENABLED = false
window.SENTRY_DSN = 'https://85694a2d757547cbbc90cd4b55c5a18d@o1047380.ingest.sentry.io/6024480'
// If enabled, allows the user to nest projects infinitely, instead of the default 2 levels.
// This setting might change in the future or be removed completely.
window.PROJECT_INFINITE_NESTING_ENABLED = false
</script>
</body>
</html>

View File

@ -1,115 +0,0 @@
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
types {
application/manifest+json webmanifest;
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
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
image/x-icon
audio/wav;
map_hash_max_size 128;
map_hash_bucket_size 128;
# Expires map
map $sent_http_content_type $expires {
default off;
text/css max;
application/javascript max;
text/javascript max;
application/vnd.ms-fontobject max;
application/x-font-ttf max;
font/opentype max;
font/woff2 max;
image/svg+xml max;
image/x-icon max;
audio/wav max;
~images/ max;
~font/ max;
}
server {
listen 80;
listen 81 default_server http2 proxy_protocol; ## Needed when behind HAProxy with SSL termination + HTTP/2 support
server_name _;
expires $expires;
root /usr/share/nginx/html;
# all assets contain hash in filename, cache forever
location ^~ /assets/ {
add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
try_files $uri =404;
}
# all workbox scripts are compiled with hash in filename, cache forever3
location ^~ /workbox- {
add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
try_files $uri =404;
}
# assume that everything else is handled by the application router, by injecting the index.html.
location / {
autoindex off;
expires off;
add_header Cache-Control "public, max-age=0, s-maxage=0, must-revalidate" always;
try_files $uri /index.html =404;
}
location ~* .(txt|webmanifest|css|js|mjs|map|svg|jpg|jpeg|png|ico|ttf|woff|woff2|wav)$ {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,114 +1,150 @@
{
"name": "vikunja-frontend",
"version": "0.10.0",
"description": "The todo app to organize your life.",
"private": true,
"version": "0.10.0",
"license": "AGPL-3.0-or-later",
"repository": {
"type": "git",
"url": "https://kolaente.dev/vikunja/frontend"
},
"bugs": {
"url": "https://kolaente.dev/vikunja/frontend/issues"
},
"homepage": "https://vikunja.io/",
"funding": "https://opencollective.com/vikunja",
"packageManager": "pnpm@8.6.0",
"keywords": [
"todo",
"productivity",
"task management",
"organisation",
"gantt",
"kanban"
],
"scripts": {
"serve": "vite",
"serve:dist-dev": "node scripts/serve-dist.js",
"serve:dist": "vite preview --port 4173",
"preview": "vite preview --port 4173",
"preview:dev": "vite preview --outDir dist-dev --mode development --port 4173",
"build": "vite build && workbox copyLibraries dist/",
"build:modern-only": "BUILD_MODERN_ONLY=true vite build && workbox copyLibraries dist/",
"build:dev": "vite build -m development --outDir dist-dev/",
"build:dev": "vite build --mode development --outDir dist-dev/",
"lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts",
"cypress:open": "cypress open",
"test:unit": "vitest --run",
"test:unit-watch": "vitest watch",
"test:frontend": "cypress run",
"test:e2e": "start-server-and-test preview http://127.0.0.1:4173 'cypress run --e2e --browser chrome'",
"test:e2e-record": "start-server-and-test preview http://127.0.0.1:4173 'cypress run --e2e --browser chrome --record'",
"test:e2e-dev-dev": "start-server-and-test preview:dev http://127.0.0.1:4173 'cypress open --e2e'",
"test:e2e-dev": "start-server-and-test preview http://127.0.0.1:4173 'cypress open --e2e'",
"test:unit": "vitest --dir ./src",
"typecheck": "vue-tsc --noEmit && vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
"browserslist:update": "npx browserslist@latest --update-db"
"browserslist:update": "pnpm dlx browserslist@latest --update-db",
"fonts:update": "pnpm fonts:download && pnpm fonts:subset",
"fonts:download": "./scripts/fonts-download.sh",
"fonts:subset": "./scripts/fonts-subset.sh",
"story:dev": "histoire dev",
"story:build": "histoire build",
"story:preview": "histoire preview"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "6.2.0",
"@fortawesome/free-regular-svg-icons": "6.2.0",
"@fortawesome/free-solid-svg-icons": "6.2.0",
"@fortawesome/vue-fontawesome": "3.0.2",
"@fortawesome/fontawesome-svg-core": "6.4.0",
"@fortawesome/free-regular-svg-icons": "6.4.0",
"@fortawesome/free-solid-svg-icons": "6.4.0",
"@fortawesome/vue-fontawesome": "3.0.3",
"@github/hotkey": "2.0.1",
"@infectoone/vue-ganttastic": "2.1.2",
"@kyvg/vue3-notification": "2.6.1",
"@sentry/tracing": "7.19.0",
"@sentry/vue": "7.19.0",
"@types/is-touch-device": "1.0.0",
"@types/lodash.clonedeep": "4.5.7",
"@types/sortablejs": "1.15.0",
"@vueuse/core": "9.5.0",
"@vueuse/router": "9.5.0",
"axios": "0.27.2",
"blurhash": "2.0.4",
"@infectoone/vue-ganttastic": "2.1.4",
"@intlify/unplugin-vue-i18n": "0.11.0",
"@kyvg/vue3-notification": "2.9.1",
"@sentry/tracing": "7.53.1",
"@sentry/vue": "7.53.1",
"@vueuse/core": "10.1.2",
"axios": "1.4.0",
"blurhash": "2.0.5",
"bulma-css-variables": "0.9.33",
"camel-case": "4.1.2",
"codemirror": "5.65.9",
"date-fns": "2.29.3",
"dayjs": "1.11.6",
"dompurify": "2.4.1",
"codemirror": "5.65.13",
"date-fns": "2.30.0",
"dayjs": "1.11.7",
"dompurify": "3.0.3",
"easymde": "2.18.0",
"fast-deep-equal": "3.1.3",
"flatpickr": "4.6.13",
"flexsearch": "0.7.21",
"flexsearch": "0.7.31",
"floating-vue": "2.0.0-beta.20",
"highlight.js": "11.6.0",
"highlight.js": "11.8.0",
"is-touch-device": "1.0.1",
"lodash.clonedeep": "4.5.0",
"klona": "2.0.6",
"lodash.debounce": "4.0.8",
"marked": "4.2.2",
"minimist": "1.2.7",
"pinia": "2.0.23",
"marked": "5.0.4",
"pinia": "2.0.36",
"register-service-worker": "1.7.2",
"snake-case": "3.0.4",
"sortablejs": "1.15.0",
"ufo": "0.8.6",
"vue": "3.2.45",
"vue-advanced-cropper": "2.8.6",
"vue-flatpickr-component": "11.0.1",
"ufo": "1.1.2",
"vue": "3.2.47",
"vue-advanced-cropper": "2.8.8",
"vue-flatpickr-component": "11.0.3",
"vue-i18n": "9.2.2",
"vue-router": "4.1.6",
"workbox-precaching": "6.5.4",
"vue-router": "4.2.2",
"workbox-precaching": "6.6.1",
"zhyswan-vuedraggable": "4.1.3"
},
"devDependencies": {
"@4tw/cypress-drag-drop": "2.2.1",
"@cypress/vite-dev-server": "4.0.1",
"@cypress/vue": "5.0.1",
"@faker-js/faker": "7.6.0",
"@rushstack/eslint-patch": "1.2.0",
"@types/codemirror": "5.60.5",
"@types/dompurify": "2.3.4",
"@4tw/cypress-drag-drop": "2.2.3",
"@cypress/vite-dev-server": "5.0.5",
"@cypress/vue": "5.0.5",
"@faker-js/faker": "8.0.2",
"@histoire/plugin-screenshot": "0.16.1",
"@histoire/plugin-vue": "0.16.1",
"@rushstack/eslint-patch": "1.3.0",
"@tsconfig/node18": "2.0.1",
"@types/codemirror": "5.60.7",
"@types/dompurify": "3.0.2",
"@types/flexsearch": "0.7.3",
"@types/is-touch-device": "1.0.0",
"@types/lodash.debounce": "4.0.7",
"@types/marked": "4.0.7",
"@types/node": "18.11.9",
"@types/marked": "5.0.0",
"@types/node": "18.16.16",
"@types/postcss-preset-env": "7.7.0",
"@typescript-eslint/eslint-plugin": "5.42.1",
"@typescript-eslint/parser": "5.42.1",
"@vitejs/plugin-legacy": "2.3.1",
"@vitejs/plugin-vue": "3.2.0",
"@vue/eslint-config-typescript": "11.0.2",
"@vue/test-utils": "2.2.1",
"@vue/tsconfig": "0.1.3",
"autoprefixer": "10.4.13",
"browserslist": "4.21.4",
"caniuse-lite": "1.0.30001430",
"csstype": "3.1.1",
"cypress": "11.0.1",
"esbuild": "0.15.13",
"eslint": "8.27.0",
"eslint-plugin-vue": "9.7.0",
"express": "4.18.2",
"happy-dom": "7.6.6",
"netlify-cli": "12.1.0",
"postcss": "8.4.19",
"postcss-preset-env": "7.8.2",
"rollup": "3.2.5",
"rollup-plugin-visualizer": "5.8.3",
"sass": "1.56.1",
"typescript": "4.8.4",
"vite": "3.2.3",
"vite-plugin-pwa": "0.13.3",
"vite-svg-loader": "3.6.0",
"vitest": "0.25.1",
"vue-tsc": "1.0.9",
"wait-on": "6.0.1",
"workbox-cli": "6.5.4"
"@types/sortablejs": "1.15.1",
"@typescript-eslint/eslint-plugin": "5.59.8",
"@typescript-eslint/parser": "5.59.8",
"@vitejs/plugin-legacy": "4.0.4",
"@vitejs/plugin-vue": "4.2.3",
"@vue/eslint-config-typescript": "11.0.3",
"@vue/test-utils": "2.3.2",
"@vue/tsconfig": "0.4.0",
"autoprefixer": "10.4.14",
"browserslist": "4.21.5",
"caniuse-lite": "1.0.30001489",
"css-has-pseudo": "5.0.2",
"csstype": "3.1.2",
"cypress": "12.13.0",
"esbuild": "0.17.19",
"eslint": "8.41.0",
"eslint-plugin-vue": "9.13.0",
"happy-dom": "9.20.1",
"histoire": "0.16.1",
"postcss": "8.4.24",
"postcss-easing-gradients": "3.0.1",
"postcss-easings": "3.0.1",
"postcss-focus-within": "7.0.2",
"postcss-preset-env": "8.4.1",
"rollup": "3.23.0",
"rollup-plugin-visualizer": "5.9.0",
"sass": "1.62.1",
"start-server-and-test": "2.0.0",
"typescript": "5.0.4",
"vite": "4.3.9",
"vite-plugin-inject-preload": "1.3.1",
"vite-plugin-pwa": "0.15.2",
"vite-svg-loader": "4.0.0",
"vitest": "0.31.2",
"vue-tsc": "1.6.5",
"wait-on": "7.0.1",
"workbox-cli": "6.6.1"
},
"license": "AGPL-3.0-or-later",
"packageManager": "pnpm@7.15.0"
"pnpm": {
"patchedDependencies": {
"flexsearch@0.7.31": "patches/flexsearch@0.7.31.patch"
}
}
}

View File

@ -0,0 +1,16 @@
diff --git a/index.d.ts b/index.d.ts
deleted file mode 100644
index 9f39f41073864b83968bdaa242ac4e3c3149685a..0000000000000000000000000000000000000000
diff --git a/package.json b/package.json
index 8968f5bf8010ff194240591c8b83299f7328e79d..6d84b6f590a841b129ed8b3860cb786df5a185c0 100644
--- a/package.json
+++ b/package.json
@@ -22,8 +22,6 @@
},
"main": "dist/flexsearch.bundle.js",
"browser": "dist/flexsearch.bundle.js",
- "module": "dist/module/index.js",
- "types": "./index.d.ts",
"preferGlobal": false,
"repository": {
"type": "git",

File diff suppressed because it is too large Load Diff

View File

@ -2,11 +2,11 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"labels": ["dependencies"],
"extends": [
"config:base"
"config:js-app"
],
"packageRules": [
{
"matchPackageNames": ["netlify-cli", "happy-dom"],
"matchPackageNames": ["happy-dom"],
"extends": ["schedule:weekly"]
},
{
@ -20,6 +20,13 @@
"@vueuse/"
]
},
{
"groupName": "histoire",
"matchPackagePrefixes": [
"@histoire/",
"histoire"
]
},
{
"matchDepTypes": ["devDependencies"],
"automerge": true,

View File

@ -1 +0,0 @@
bb46342a0a08105b340ba7976cff9d80ef89901120ec0639669caa70bb7d2dbc43e78b1f635a7654ab2456e8358c98a4 ./scripts/deploy-preview-netlify.js

View File

@ -1,15 +1,18 @@
const {exec} = require('child_process')
const axios = require('axios')
import { exec } from 'node:child_process'
function createSlug(string) {
return String(string)
.trim()
.normalize('NFKD')
.toLowerCase()
.replace(/[.\s/]/g, '-')
.replace(/[^A-Za-z\d-]/g, '')
}
const BOT_USER_ID = 513
const giteaToken = process.env.GITEA_TOKEN
const siteId = process.env.NETLIFY_SITE_ID
const branchSlug = String(process.env.DRONE_SOURCE_BRANCH)
.trim()
.normalize('NFKD')
.toLowerCase()
.replace(/[.\s/]/g, '-')
.replace(/[^A-Za-z\d-]/g, '')
const branchSlug = createSlug(process.env.DRONE_SOURCE_BRANCH)
const prNumber = process.env.DRONE_PULL_REQUEST
const prIssueCommentsUrl = `https://kolaente.dev/api/v1/repos/vikunja/frontend/issues/${prNumber}/comments`
@ -30,12 +33,12 @@ const promiseExec = cmd => {
}
(async function () {
let stdout = await promiseExec(`./node_modules/.bin/netlify link --id ${siteId}`)
let stdout = await promiseExec(`/home/node/docker-netlify-cli/node_modules/.bin/netlify link --id ${siteId}`)
console.log(stdout)
stdout = await promiseExec(`./node_modules/.bin/netlify deploy --alias ${alias}`)
stdout = await promiseExec(`/home/node/docker-netlify-cli/node_modules/.bin/netlify deploy --alias ${alias}`)
console.log(stdout)
const {data} = await axios.get(prIssueCommentsUrl)
const data = await fetch(prIssueCommentsUrl).then(response => response.json())
const hasComment = data.some(c => c.user.id === BOT_USER_ID)
if (hasComment) {
@ -43,8 +46,7 @@ const promiseExec = cmd => {
return
}
await axios.post(prIssueCommentsUrl, {
body: `
const message = `
Hi ${process.env.DRONE_COMMIT_AUTHOR}!
Thank you for creating a PR!
@ -57,14 +59,25 @@ You will need to manually connect this to an api running somehwere. The easiest
Have a nice day!
> Beep boop, I'm a bot.
`,
}, {
headers: {
'Content-Type': 'application/json',
'accept': 'application/json',
'Authorization': `token ${giteaToken}`,
},
})
`
console.log(`Preview comment sent successfully to PR #${prNumber}!`)
try {
const response = await fetch(prIssueCommentsUrl, {
method: 'POST',
body: JSON.stringify({
body: message,
}),
headers: {
'Content-Type': 'application/json',
'accept': 'application/json',
'Authorization': `token ${giteaToken}`,
},
})
if (!response.ok) {
throw new Error(`HTTP error, status = ${response.status}`)
}
console.log(`Preview comment sent successfully to PR #${prNumber}!`)
} catch (e) {
console.log(`Could not send preview comment to PR #${prNumber}! ${e.message}`)
}
})()

View File

@ -0,0 +1 @@
4a7c1293c7b12e9ab476cdf35251a407c6a1cd005d22c06df994222cccfb25cde5f47d15866a098c9d739778fee4dc19 ./scripts/deploy-preview-netlify.mjs

56
scripts/fonts-download.sh Executable file
View File

@ -0,0 +1,56 @@
#!/bin/sh
set -e
#
# This script downloads our original font files from their source repos
# and puts them in our originalMedia folder.
#
err_report() {
echo "Error on line $(caller)" >&2
}
trap err_report ERR
ORIGINAL_FONTS_DIR="./originalMedia/fonts"
# update these if there is a new version
FONT_URLS=(
"https://github.com/googlefonts/opensans/blob/27d060e1aad6886daeda67629ee28189f795f534/fonts/variable/OpenSans%5Bwdth%2Cwght%5D.ttf?raw=true"
"https://github.com/googlefonts/opensans/blob/27d060e1aad6886daeda67629ee28189f795f534/fonts/variable/OpenSans-Italic%5Bwdth%2Cwght%5D.ttf?raw=true"
"https://github.com/andrew-paglinawan/QuicksandFamily/blob/db6de44878582966f45a0debaef10d57108d93a7/fonts/Quicksand%5Bwght%5D.ttf?raw=true"
)
echo ""
echo "###################################################"
echo "# Download font files"
echo "###################################################"
echo ""
mkdir -p $ORIGINAL_FONTS_DIR
for URL in ${FONT_URLS[@]}; do
wget -L $URL \
--directory-prefix=$ORIGINAL_FONTS_DIR \
--quiet \
--timestamping \
--show-progress
done
echo ""
echo "###################################################"
echo "# Remove '?raw=true' filename suffix"
echo "###################################################"
echo ""
# Iterate over all files in directory with filetype ending in "?raw=true"
for file in $ORIGINAL_FONTS_DIR/*?raw=true; do
# Remove "?raw=true" from file name and store in variable
new_name=$(echo $file | sed 's/?raw=true//')
# Overwrite existing file with new name
mv -v $file $new_name
done
echo "Renaming files complete"

161
scripts/fonts-subset.sh Executable file
View File

@ -0,0 +1,161 @@
#!/bin/sh
set -e
#
# This script subsets our variable fonts,
# converts them to woff2 files and puts them in the
# fonts folder.
#
# We do have to update the font paths in the @font-face
# definitions manually since we use a checksum to make
#
# We use fonttools to create a partial instance of the
# variable font where we keep only our needed features.
# See more at:
# https://fonttools.readthedocs.io/en/latest/varLib/instancer.html
#
# fonttools requires python > 3.7. For up-to-date
# instructions see https://github.com/fonttools/fonttools#installation
#
# Lot's of info was gathered from:
# https://markoskon.com/creating-font-subsets/
# https://barrd.dev/article/create-a-variable-font-subset-for-smaller-file-size/
#
ORIGINAL_FONTS="./originalMedia/fonts"
TEMP_FOLDER="./.subset-fonts-temp"
FONT_FOLDER="./src/assets/fonts"
err_report() {
echo "Error on line $(caller)" >&2
}
trap err_report ERR
mkdir -p $TEMP_FOLDER
# the latin subset that google uses on GoogleFonts
# this is the same as the latin subset range that google uses on GoogleFonts
# see for examle the unicode-range definition here:
# https://fonts.googleapis.com/css2?family=Open+Sans
UNICODE_LATIN_SUBSET="U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,\
U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,\
U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD"
get_filename_without_type() {
filename=$1
dirname=$(dirname $filename)
# Extract the file type using parameter expansion
filetype=${filename##*.}
basename=$(basename $filename .$filetype)
echo $basename
}
# This function takes a font file and creates a subset of it using a specified set of unicode characters.
instance_and_subset () {
# Define default arguments for the subsetter.
DEFAULT_SUBSETTER_ARGS="--layout-features=* --unicodes=${UNICODE_LATIN_SUBSET}"
# Assign function arguments to variables with more descriptive names.
INPUT_FONT_FILE=$1
INSTANCER_ARGS=$2
OUTPUT_FONT_BASENAME=$3
OUTPUT_FOLDER=$FONT_FOLDER
# If the output font basename is not provided, use the input font file's basename as the output font basename.
if [ -z "$OUTPUT_FONT_BASENAME" ]; then
INPUT_FONT_BASENAME=$(get_filename_without_type $INPUT_FONT_FILE)
OUTPUT_FONT_BASENAME=$INPUT_FONT_BASENAME
fi
# Use the default subsetter arguments if no custom arguments are provided.
SUBSETTER_ARGS="${4:-$DEFAULT_SUBSETTER_ARGS}"
CHECKSUM=$(
# Concatenate the contents of the input font file, the instancer arguments, and the subsetter arguments
printf "%s%s" "$(cat $INPUT_FONT_FILE)" "$INSTANCER_ARGS" "$SUBSETTER_ARGS" |
# Calculate the Blake2b checksum of the concatenated string
b2sum |
# Extract the checksum from the output of b2sum (it's the first field)
awk '{print $1}'
)
# Limit the checksum to 8 characters.
CHECKSUM=$(echo "${CHECKSUM:0:8}")
# Construct the output font's filename
OUTPUT_FONT_BASENAME="${OUTPUT_FONT_BASENAME}_${CHECKSUM}"
OUTPUT_FONT_FILE="${OUTPUT_FOLDER}/${OUTPUT_FONT_BASENAME}.woff2"
# Check if the output font file already exists
if test -f $OUTPUT_FONT_FILE; then
echo "${OUTPUT_FONT_FILE} exists"
return 0
fi
FONT_INSTANCE="${TEMP_FOLDER}/${OUTPUT_FONT_BASENAME}.ttf"
if [ -n "$INSTANCER_ARGS" ]; then
# If the INSTANCER_ARGS variable is set, use fonttools to create a font instance
fonttools varLib.instancer --output $FONT_INSTANCE $INPUT_FONT_FILE $INSTANCER_ARGS
else
# Otherwise, just copy the input font file to the font instance file
cp $INPUT_FONT_FILE $FONT_INSTANCE
fi
# Use pyftsubset to create a subset of the font instance and save it to the output font file
pyftsubset $FONT_INSTANCE --output-file=$OUTPUT_FONT_FILE --flavor=woff2 $SUBSETTER_ARGS
echo "${OUTPUT_FONT_BASENAME} subsetted."
}
echo ""
echo "###################################################"
echo "# Install required libs"
echo "###################################################"
echo ""
pip install fonttools brotli
echo ""
echo "###################################################"
echo "# Create a partial instance of the variable font"
echo "# where we keep only our needed features and then"
echo "# subset fonts with latin unicode range and export"
echo "# as woff2 file"
echo "###################################################"
echo ""
mkdir -p $TEMP_FOLDER
echo "\nOpen Sans"
# we drop the wdth axis for all
instance_and_subset "${ORIGINAL_FONTS}/OpenSans[wdth,wght].ttf" "wdth=drop wght=400:700" "OpenSans[wght]"
# we restrict the wght range
instance_and_subset "${ORIGINAL_FONTS}/OpenSans[wdth,wght].ttf" "wdth=drop wght=400" "OpenSans-Regular"
instance_and_subset "${ORIGINAL_FONTS}/OpenSans[wdth,wght].ttf" "wdth=drop wght=700" "OpenSans-Bold"
echo "\nOpen Sans Italic"
# we drop the wdth axis for all
instance_and_subset "${ORIGINAL_FONTS}/OpenSans-Italic[wdth,wght].ttf" "wdth=drop wght=400:700" "OpenSans-Italic[wght]"
# we restrict the wght range
instance_and_subset "${ORIGINAL_FONTS}/OpenSans-Italic[wdth,wght].ttf" "wdth=drop wght=400" "OpenSans-RegularItalic"
instance_and_subset "${ORIGINAL_FONTS}/OpenSans-Italic[wdth,wght].ttf" "wdth=drop wght=700" "OpenSans-BoldItalic"
echo "\nQuicksand"
instance_and_subset "${ORIGINAL_FONTS}/Quicksand[wght].ttf" "wght=400:700"
# we restrict the wght range
instance_and_subset "${ORIGINAL_FONTS}/Quicksand[wght].ttf" "wght=400" "Quicksand-Regular"
instance_and_subset "${ORIGINAL_FONTS}/Quicksand[wght].ttf" "wght=600" "Quicksand-SemiBold"
instance_and_subset "${ORIGINAL_FONTS}/Quicksand[wght].ttf" "wght=700" "Quicksand-Bold"
echo "\nSubsetting files complete"
# remove temp folder
rm -r $TEMP_FOLDER

View File

@ -1,28 +0,0 @@
#!/bin/bash
# This shell script sets the api url based on an environment variable and starts nginx in foreground.
VIKUNJA_API_URL="${VIKUNJA_API_URL:-"/api/v1"}"
VIKUNJA_SENTRY_ENABLED="${VIKUNJA_SENTRY_ENABLED:-"false"}"
VIKUNJA_SENTRY_DSN="${VIKUNJA_SENTRY_DSN:-"https://85694a2d757547cbbc90cd4b55c5a18d@o1047380.ingest.sentry.io/6024480"}"
VIKUNJA_HTTP_PORT="${VIKUNJA_HTTP_PORT:-80}"
VIKUNJA_HTTPS_PORT="${VIKUNJA_HTTPS_PORT:-443}"
echo "Using $VIKUNJA_API_URL as default api url"
# Escape the variable to prevent sed from complaining
VIKUNJA_API_URL=$(echo $VIKUNJA_API_URL |sed 's/\//\\\//g')
sed -i "s/http\:\/\/localhost\:3456//g" /usr/share/nginx/html/index.html # replacing in two steps to make sure api urls from releases are properly replaced as well
sed -i "s/'\/api\/v1/'$VIKUNJA_API_URL/g" /usr/share/nginx/html/index.html
sed -i "s/\.SENTRY_ENABLED = false/\.SENTRY_ENABLED = $VIKUNJA_SENTRY_ENABLED/g" /usr/share/nginx/html/index.html
sed -i "s|\.SENTRY_DSN = '.*'|\.SENTRY_DSN = '$VIKUNJA_SENTRY_DSN'|g" /usr/share/nginx/html/index.html
sed -i "s/listen 80/listen $VIKUNJA_HTTP_PORT/g" /etc/nginx/nginx.conf
sed -i "s/listen 443/listen $VIKUNJA_HTTPS_PORT/g" /etc/nginx/nginx.conf
# Set the uid and gid of the nginx run user
usermod --non-unique --uid ${PUID} nginx
groupmod --non-unique --gid ${PGID} nginx
nginx -g "daemon off;"

View File

@ -1,16 +0,0 @@
const path = require('path')
const express = require('express')
const app = express()
const p = path.join(__dirname, '..', 'dist-dev')
const port = 4173
app.use(express.static(p))
// Handle urls set by the frontend
app.get('*', (request, response, next) => {
response.sendFile(`${p}/index.html`)
})
app.listen(port, '127.0.0.1', () => {
console.log(`Serving files from ${p}`)
console.log(`Server started on port ${port}`)
})

View File

@ -8,39 +8,46 @@
<no-auth-wrapper v-else>
<router-view/>
</no-auth-wrapper>
<Notification/>
<keyboard-shortcuts v-if="keyboardShortcutsActive"/>
<Teleport to="body">
<UpdateNotification/>
<Notification/>
</Teleport>
</ready>
</template>
<script lang="ts" setup>
import {computed, watch, type Ref} from 'vue'
import {useRouter} from 'vue-router'
import {useRouteQuery} from '@vueuse/router'
import {computed, watch} from 'vue'
import {useRoute, useRouter} from 'vue-router'
import {useI18n} from 'vue-i18n'
import isTouchDevice from 'is-touch-device'
import {success} from '@/message'
import Notification from '@/components/misc/notification.vue'
import KeyboardShortcuts from './components/misc/keyboard-shortcuts/index.vue'
import UpdateNotification from '@/components/home/UpdateNotification.vue'
import KeyboardShortcuts from '@/components/misc/keyboard-shortcuts/index.vue'
import TheNavigation from '@/components/home/TheNavigation.vue'
import ContentAuth from './components/home/contentAuth.vue'
import ContentLinkShare from './components/home/contentLinkShare.vue'
import ContentAuth from '@/components/home/contentAuth.vue'
import ContentLinkShare from '@/components/home/contentLinkShare.vue'
import NoAuthWrapper from '@/components/misc/no-auth-wrapper.vue'
import Ready from '@/components/misc/ready.vue'
import {setLanguage} from './i18n'
import {setLanguage} from '@/i18n'
import AccountDeleteService from '@/services/accountDelete'
import {success} from '@/message'
import {useAuthStore} from '@/stores/auth'
import {useBaseStore} from '@/stores/base'
import {useColorScheme} from '@/composables/useColorScheme'
import {useBodyClass} from '@/composables/useBodyClass'
import {useAuthStore} from './stores/auth'
const baseStore = useBaseStore()
const authStore = useAuthStore()
const router = useRouter()
const route = useRoute()
useBodyClass('is-touch', isTouchDevice())
const keyboardShortcutsActive = computed(() => baseStore.keyboardShortcutsActive)
@ -51,9 +58,9 @@ const authLinkShare = computed(() => authStore.authLinkShare)
const {t} = useI18n({useScope: 'global'})
// setup account deletion verification
const accountDeletionConfirm = useRouteQuery('accountDeletionConfirm') as Ref<null | string>
const accountDeletionConfirm = computed(() => route.query?.accountDeletionConfirm as (string | undefined))
watch(accountDeletionConfirm, async (accountDeletionConfirm) => {
if (accountDeletionConfirm === null) {
if (accountDeletionConfirm === undefined) {
return
}
@ -64,9 +71,9 @@ watch(accountDeletionConfirm, async (accountDeletionConfirm) => {
}, { immediate: true })
// setup password reset redirect
const userPasswordReset = useRouteQuery('userPasswordReset') as Ref<null | string>
const userPasswordReset = computed(() => route.query?.userPasswordReset as (string | undefined))
watch(userPasswordReset, (userPasswordReset) => {
if (userPasswordReset === null) {
if (userPasswordReset === undefined) {
return
}
@ -75,9 +82,9 @@ watch(userPasswordReset, (userPasswordReset) => {
}, { immediate: true })
// setup email verification redirect
const userEmailConfirm = useRouteQuery('userEmailConfirm') as Ref<null | string>
const userEmailConfirm = computed(() => route.query?.userEmailConfirm as (string | undefined))
watch(userEmailConfirm, (userEmailConfirm) => {
if (userEmailConfirm === null) {
if (userEmailConfirm === undefined) {
return
}

Binary file not shown.

4
src/assets/checkbox.svg Normal file
View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18px" height="18px" viewBox="0 0 18 18" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5">
<path d="M1,9 L1,3.5 C1,2 2,1 3.5,1 L14.5,1 C16,1 17,2 17,3.5 L17,14.5 C17,16 16,17 14.5,17 L3.5,17 C2,17 1,16 1,14.5 L1,9 Z" stroke-dasharray="60"></path>
<polyline points="1 9 7 14 15 4" stroke-dasharray="22" stroke-dashoffset="66"></polyline>
</svg>

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More