Compare commits
213
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a974bf09b5 | ||
|
|
9e39ef9397 | ||
|
|
c54181eeda | ||
|
|
b3bf92b7ce | ||
|
|
05dd05216d | ||
|
|
cd0ab54d57 | ||
|
|
a7bd9dad24 | ||
|
|
10e245f6d0 | ||
|
|
010dd1ea22 | ||
|
|
65a2814b2a | ||
|
|
4dd9d5de67 | ||
|
|
ec902b051b | ||
|
|
4b2b8e3b83 | ||
|
|
bc52da4029 | ||
|
|
2123da49a3 | ||
|
|
c53a761396 | ||
|
|
c84b50b3ee | ||
|
|
c5b82fc591 | ||
|
|
1f00180af6 | ||
|
|
33e851f543 | ||
|
|
16d7386975 | ||
|
|
6d9bda8cc1 | ||
|
|
abf92e29fa | ||
|
|
f4d628550f | ||
|
|
1d352fcbf3 | ||
|
|
a1105434bf | ||
|
|
acc7c9f8f5 | ||
|
|
cc64ca6406 | ||
|
|
89f78cd369 | ||
|
|
14c3b13823 | ||
|
|
c2a7438814 | ||
|
|
8fe37fd900 | ||
|
|
88b4ab1768 | ||
|
|
c252c8f0cd | ||
|
|
410ff28b71 | ||
|
|
d98dd7ecbb | ||
|
|
fc73085876 | ||
|
|
c71f7334b4 | ||
|
|
6a5342bd49 | ||
|
|
b4ea1bb86a | ||
|
|
378d0ae9bb | ||
|
|
6f27e1401a | ||
|
|
bf5cafc03f | ||
|
|
f4a7326b68 | ||
|
|
1451f6e46f | ||
|
|
427eb2a618 | ||
|
|
e4b541e653 | ||
|
|
45ff5907e6 | ||
|
|
5a7c3927f3 | ||
|
|
f425d98b4d | ||
|
|
4c55016c1a | ||
|
|
1a8f12ac13 | ||
|
|
7b873ec31c | ||
|
|
8b77832af2 | ||
|
|
14710d0bba | ||
|
|
945f25b818 | ||
|
|
f53b93d98a | ||
|
|
97e030a1fc | ||
|
|
b708db7025 | ||
|
|
6bfe71b30e | ||
|
|
db196bdffe | ||
|
|
9428acd5e1 | ||
|
|
58a60fb4ae | ||
|
|
f4ca22a6ad | ||
|
|
7e38a9f442 | ||
|
|
a0a77818b1 | ||
|
|
bdccd633fe | ||
|
|
1f3eb8f2a3 | ||
|
|
8891ef347e | ||
|
|
3b8ccbad4f | ||
|
|
cc1b4bbd1b | ||
|
|
9dd95101f9 | ||
|
|
20724f6fb5 | ||
|
|
e1ea84fcd4 | ||
|
|
8d730543c3 | ||
|
|
a3d133bfee | ||
|
|
7b37ad0594 | ||
|
|
4aeb228c3a | ||
|
|
b52d6dbf59 | ||
|
|
76f7797e56 | ||
|
|
55dd7d2981 | ||
|
|
44a43b9f86 | ||
|
|
eb95caf757 | ||
|
|
1085a6583b | ||
|
|
e698ac5a34 | ||
|
|
020fea686d | ||
|
|
addf8523f4 | ||
|
|
044aa1c742 | ||
|
|
552e1ce796 | ||
|
|
c1246d73d4 | ||
|
|
85fa397a46 | ||
|
|
af47e43c34 | ||
|
|
2539f15dfb | ||
|
|
5c1b2846a1 | ||
|
|
af8100d262 | ||
|
|
63f85c97ae | ||
|
|
2b1e3ffd2a | ||
|
|
5f470afd7c | ||
|
|
37c6f94ba2 | ||
|
|
b42cd5786e | ||
|
|
5072ab3d72 | ||
|
|
4b5ec018f5 | ||
|
|
efe5c7b3cb | ||
|
|
ba0c32aacf | ||
|
|
b6e142e8d0 | ||
|
|
750d565477 | ||
|
|
2b8515b91d | ||
|
|
68636f27da | ||
|
|
cf94cc8cab | ||
|
|
669b7452cd | ||
|
|
1601c9098d | ||
|
|
f132b0e718 | ||
|
|
5d12986e3f | ||
|
|
74e0197dc6 | ||
|
|
2dd133fb4c | ||
|
|
02c1de55c4 | ||
|
|
cbc63c853d | ||
|
|
b5c4a3a80c | ||
|
|
a8ea5e11ab | ||
|
|
812430b9cf | ||
|
|
9d7b6d3d9a | ||
|
|
c2b116de70 | ||
|
|
22e594e253 | ||
|
|
0d9c03e0f2 | ||
|
|
72bb6609a1 | ||
|
|
b259072e6a | ||
|
|
ffcc48ec87 | ||
|
|
5aa0b6a0cf | ||
|
|
b60efbd259 | ||
|
|
34ac29fcce | ||
|
|
75f3e930cd | ||
|
|
4ff8815fe1 | ||
|
|
850ec7efb0 | ||
|
|
115d1c3618 | ||
|
|
6d26497bbb | ||
|
|
06305eb6b3 | ||
|
|
7bd84a845c | ||
|
|
165ee9e7f3 | ||
|
|
2c9becec10 | ||
|
|
1463bce24c | ||
|
|
5c56d07215 | ||
|
|
6fb314b326 | ||
|
|
9b01666ec6 | ||
|
|
14c862d284 | ||
|
|
bcfd72c645 | ||
|
|
499f66b7ae | ||
|
|
8e37d5cb76 | ||
|
|
57ba073874 | ||
|
|
329de3aab3 | ||
|
|
74a74b7ec7 | ||
|
|
2063da9eec | ||
|
|
7a7e97770c | ||
|
|
bea131cfd9 | ||
|
|
5a0d1f1dc6 | ||
|
|
b5035f9d2b | ||
|
|
07bd9de0c6 | ||
|
|
efde364224 | ||
|
|
fde1763eef | ||
|
|
429c7ca2c1 | ||
|
|
bf56311faa | ||
|
|
c38aaeb224 | ||
|
|
1b9139b9b0 | ||
|
|
13763e3540 | ||
|
|
56bab7485f | ||
|
|
8bfd0493b2 | ||
|
|
435cb2e7f7 | ||
|
|
9ed33f5c08 | ||
|
|
83669fd9e0 | ||
|
|
35578e0021 | ||
|
|
e281de30b5 | ||
|
|
ec2c2e74f0 | ||
|
|
b031c9772f | ||
|
|
f22420d502 | ||
|
|
ebfd5f54d2 | ||
|
|
28b4eaee31 | ||
|
|
b83448b7a6 | ||
|
|
eed783e42f | ||
|
|
1d624612ee | ||
|
|
9576f72d7c | ||
|
|
7efc4d1bc8 | ||
|
|
670e605275 | ||
|
|
871b3ce071 | ||
|
|
ad3c5fcee5 | ||
|
|
e2a87036e0 | ||
|
|
40bb86bee5 | ||
|
|
4a4ed2cf89 | ||
|
|
7751e124a7 | ||
|
|
6137d07138 | ||
|
|
66d316f0b5 | ||
|
|
bf2d56c9d4 | ||
|
|
413798b321 | ||
|
|
bf1c8c6119 | ||
|
|
49fa0a8468 | ||
|
|
784cd42a7a | ||
|
|
4f74be0247 | ||
|
|
7ef1e0a3e5 | ||
|
|
bc5fd380e5 | ||
|
|
bcd306b84d | ||
|
|
ad2870335d | ||
|
|
917748777f | ||
|
|
324c966dda | ||
|
|
0984821b41 | ||
|
|
e8be657d97 | ||
|
|
75ce261f74 | ||
|
|
5f9d0fe763 | ||
|
|
bbfd5270db | ||
|
|
1e632397d2 | ||
|
|
d35454c099 | ||
|
|
2a6ba7e7f0 | ||
|
|
1e523a1a39 | ||
|
|
fb91e73a3c | ||
|
|
ebd6139c1f | ||
|
|
6990be705c |
-188
@@ -7,194 +7,6 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
All releases can be found on https://code.vikunja.io/vikunja/releases.
|
||||
|
||||
## [0.24.3] - 2024-09-20
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* *(a11y)* Hide unfocusable buttons
|
||||
* *(api)* Return 404 response when using a token and the route does not exist
|
||||
* *(auth)* Restrict max password length to 72 bytes
|
||||
* *(caldav)* Make sure colors are correctly saved and returned
|
||||
* *(caldav)* Reject invalid project id with error 400
|
||||
* *(editor)* Restore the current value, not the one from a previous task
|
||||
* *(files)* Use absolute path everywhere
|
||||
* *(filter)* Do not replace labels keyword when the value is 'label'
|
||||
* *(filter)* Make sure tasks are in a correct bucket and position when they are part of a date filter
|
||||
* *(filters)* Immediately propagate changes
|
||||
* *(filters)* Do not replace filter or project values when the id value resolves to undefined
|
||||
* *(filters)* Correctly transform and populate saved filter when creating and editing
|
||||
* *(home)* Explicitly use filter for tasks on home page when one is set
|
||||
* *(kanban)* Save updated position to store
|
||||
* *(kanban)* Make task creation loading spinner actually visible
|
||||
* *(kanban)* Make kanban full width on mobile
|
||||
* *(kanban)* Do not mark first bucked as done bucket in filter bucket mode
|
||||
* *(kanban)* Correctly paginate filtered kanban buckets
|
||||
* *(label)* Ignore existing ID during creation
|
||||
* *(labels)* Trigger task.updated event when removing a label from a task
|
||||
* *(labels)* Test error assertion
|
||||
* *(labels)* Remove input interactivity when label edit is disabled
|
||||
* *(labels)* Trigger task updated for bulk label task update
|
||||
* *(modal)* Make sure modal and its content scrolls properly on mobile
|
||||
* *(modal)* Do not prevent scrolling on mobile
|
||||
* *(modal)* Make scrolling on iOS Safari work
|
||||
* *(multiselect)* Make selectPlaceholder optional
|
||||
* *(notifications)* Only add project subscription as task subscription when the user is not already subscribed to the task
|
||||
* *(password)* Validate password before sending request to api
|
||||
* *(project)* Show description in title attribute without html
|
||||
* *(project)* Reset id before creating
|
||||
* *(projects)* Do not hide 6th project on project overview
|
||||
* *(projects)* Description not visible on mobile
|
||||
* *(reminders)* Notify subscribed users as well
|
||||
* *(service worker)* Use correct workbox version
|
||||
* *(subscription)* Always return task subscription when subscribed to task and project
|
||||
* *(subscriptions)* Ignore task subscription when the user is subscribed to the project
|
||||
* *(subscriptions)* Correctly inherit subscriptions
|
||||
* *(subscriptions)* Cleanup and simplify fetching subscribers for tasks and projects logic
|
||||
* *(subscriptions)* Do not panic when a task does not have a subscription
|
||||
* *(table)* Make sorting for two-word properties work
|
||||
* *(task)* Set done at date when moving a task to the done bucket
|
||||
* *(task)* Specify task index when creating multiple tasks at once
|
||||
* *(task)* Cyclomatic complexity
|
||||
* *(task)* Make print styles work when printing task detail view from kanban
|
||||
* *(task)* Multiple overlapping defer due date popups
|
||||
* *(task)* Align task title on mobile popup
|
||||
* *(task)* Dragging and dropping on mobile
|
||||
* *(task)* Add task to filter view after it was updated
|
||||
* *(task)* Cleanup old task positions and task buckets when adding an updated or created task to filter
|
||||
* *(task)* Mark related task as done from the task detail view
|
||||
* *(task)* Open focused task when pressing enter
|
||||
* *(test)* Cypress test selector
|
||||
* *(typesense)* Only fail silently when a project was not found during indexing
|
||||
* *(typesense)* Add new tasks to typesense properly
|
||||
* *(typesense)* Make sure task positions are recreated properly when updating them
|
||||
* *(typesense)* Use emplace instead of upsert to update documents
|
||||
* *(typesense)* Index tasks one by one
|
||||
* *(typesense)* Force position to always be float instead of auto-inferring
|
||||
* *(typesense)* Use typesense bulk insert, log all errors
|
||||
* *(user)* Do not create user with existing id
|
||||
* *(view)* Do not crash when saving a view
|
||||
* *(view)* Correctly resolve label for filtered views or buckets
|
||||
* *(view)* Correctly resolve bucket filter when paginating
|
||||
* *(view)* Correctly get paginated task results
|
||||
* *(views)* Add migration for filtered kanban buckets* Lint ([53d62d3](53d62d35f4488940a96d755de93ded64b8ac34a3))
|
||||
* Reset id before creating ([93f7dd6](93f7dd611ad288a149f5da5463867d224334815f))
|
||||
* Test selector ([063aa7a](063aa7afec717c3ed05be9d2ca73bde3d0bd8d35))
|
||||
|
||||
### Dependencies
|
||||
|
||||
* *(deps)* Update dependency @intlify/unplugin-vue-i18n to v5
|
||||
* *(deps)* Update dependency @kyvg/vue3-notification to v3.3.0
|
||||
* *(deps)* Update dependency @sentry/vue to v8.28.0
|
||||
* *(deps)* Update dependency @sentry/vue to v8.29.0
|
||||
* *(deps)* Update dependency @sentry/vue to v8.30.0
|
||||
* *(deps)* Update dependency axios to v1.7.7
|
||||
* *(deps)* Update dependency date-fns to v4
|
||||
* *(deps)* Update dependency dayjs to v1.11.13
|
||||
* *(deps)* Update dependency express to v4.20.0
|
||||
* *(deps)* Update dependency express to v4.21.0
|
||||
* *(deps)* Update dependency go to v1.23.1
|
||||
* *(deps)* Update dependency pinia to v2.2.2
|
||||
* *(deps)* Update dependency sortablejs to v1.15.3
|
||||
* *(deps)* Update dependency tailwindcss to v3.4.10
|
||||
* *(deps)* Update dependency tailwindcss to v3.4.11
|
||||
* *(deps)* Update dependency tailwindcss to v3.4.12
|
||||
* *(deps)* Update dependency vue to v3.5.3
|
||||
* *(deps)* Update dependency vue to v3.5.4
|
||||
* *(deps)* Update dependency vue to v3.5.5
|
||||
* *(deps)* Update dependency vue to v3.5.6
|
||||
* *(deps)* Update dependency vue-i18n to v10
|
||||
* *(deps)* Update dependency vue-i18n to v10.0.1
|
||||
* *(deps)* Update dependency vue-i18n to v9.14.0
|
||||
* *(deps)* Update dependency vue-router to v4.4.3
|
||||
* *(deps)* Update dependency vue-router to v4.4.4
|
||||
* *(deps)* Update dependency vue-router to v4.4.5
|
||||
* *(deps)* Update dependency vuemoji-picker to v0.3.1* Chore(deps): update goreleaser/nfpm docker tag to v2.40.0 (#2647)
|
||||
* *(deps)* Update dev-dependencies
|
||||
* *(deps)* Update dev-dependencies
|
||||
* *(deps)* Update dev-dependencies
|
||||
* *(deps)* Update dev-dependencies
|
||||
* *(deps)* Update dev-dependencies
|
||||
* *(deps)* Update dev-dependencies
|
||||
* *(deps)* Update github.com/wneessen/go-mail to v0.4.4
|
||||
* *(deps)* Update golangci
|
||||
* *(deps)* Update module dario.cat/mergo to v1.0.1
|
||||
* *(deps)* Update module github.com/gabriel-vasile/mimetype to v1.4.5
|
||||
* *(deps)* Update module github.com/getsentry/sentry-go to v0.29.0
|
||||
* *(deps)* Update module github.com/mattn/go-sqlite3 to v1.14.23
|
||||
* *(deps)* Update module github.com/prometheus/client_golang to v1.20.3
|
||||
* *(deps)* Update module github.com/prometheus/client_golang to v1.20.4
|
||||
* *(deps)* Update module github.com/redis/go-redis/v9 to v9.6.1
|
||||
* *(deps)* Update module github.com/threedotslabs/watermill to v1.3.7
|
||||
* *(deps)* Update module github.com/typesense/typesense-go to v2
|
||||
* *(deps)* Update module github.com/typesense/typesense-go to v2
|
||||
* *(deps)* Update module golang.org/x/crypto to v0.27.0
|
||||
* *(deps)* Update module golang.org/x/image to v0.20.0
|
||||
* *(deps)* Update module golang.org/x/oauth2 to v0.23.0
|
||||
* *(deps)* Update module golang.org/x/term to v0.24.0
|
||||
* *(deps)* Update module golang.org/x/text to v0.18.0
|
||||
* *(deps)* Update pnpm to v9.10.0
|
||||
* *(deps)* Update tiptap to 2.6.6
|
||||
* *(deps)* Update tiptap to v2.7.0
|
||||
* *(deps)* Update tiptap to v2.7.1
|
||||
* *(deps)* Update tiptap to v2.7.2
|
||||
* *(deps)* Update vueuse to v11
|
||||
* *(deps)* Update vueuse to v11.1.0
|
||||
* *(deps)*: update dependency flexsearch to v0.7.43 (#2095)
|
||||
* *(deps)*: update golangci/golangci-lint docker tag to v1.61.0 (#2678)
|
||||
|
||||
### Documentation
|
||||
|
||||
* *(api)* Use correct return type for the /user endpoint
|
||||
|
||||
### Features
|
||||
|
||||
* *(event)* Simplify dispatching task updated event from only a task id
|
||||
* *(navigation)* Use focus-visible for nav items
|
||||
* *(task)* Use focus-visible for task focus styles
|
||||
|
||||
### Miscellaneous Tasks
|
||||
|
||||
* *(attachments)* Refactor building image preview
|
||||
* *(devenv)* Do not install cypress on darwin
|
||||
* *(docker)* Use new env format
|
||||
* *(docs)* Clarify usage of related model creation
|
||||
* *(errors)* Always add internal error to echo error
|
||||
* *(files)* Use absolute file path to retrieve and save files
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(i18n)* Update translations via Crowdin
|
||||
* *(logging)* Simplify log template string
|
||||
* *(magefile)* Use tx.Sync instead of Sync2
|
||||
* *(subscription)* Return subscription entity type using json Marshaler
|
||||
* *(tasks)* Move drag options to direct attributes instead of v-bind
|
||||
* *(typesense)* Add more debug logging
|
||||
* *(web)* Move web handler package to Vikunja
|
||||
* *(web)* Remove unused echo context
|
||||
* *(web)* Use errors.As instead of type assertion
|
||||
* *(web)* Remove redundant use of fmt.Sprintf
|
||||
* *(web)* Directly use new db session
|
||||
* *(web)* Use config directly
|
||||
* *(web)* Use web auth factory directly
|
||||
* *(web)* Use logger directly
|
||||
* *(web)* Always set internal error* Remove console.log ([40105ee](40105ee4ced980f52565baec4c3219b0ddd4f6ec))
|
||||
* Fix comment ([1df4a4e](1df4a4ea2e2ca4332347468e8973a2dcbab06ed7))
|
||||
* Add go and direnv to recommended vscode extensions ([6ab12b9](6ab12b9dd133b52ed7267b6e9334081c2f9719ca))
|
||||
* Remove console.log ([1e7d9c9](1e7d9c982d3d472e9b4082991b41e6567556f2b2))
|
||||
* Rearrange cron registers ([4857bfb](4857bfbbdb8401b6ef02b1dc8de93f2a09e8bc3a))
|
||||
|
||||
### Other
|
||||
|
||||
* *(other)* [skip ci] Updated swagger docs
|
||||
|
||||
## [0.24.2] - 2024-08-12
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
+8
-1
@@ -35,7 +35,14 @@ RUN export PATH=$PATH:$GOPATH/bin && \
|
||||
|
||||
# The actual image
|
||||
FROM scratch
|
||||
LABEL maintainer="maintainers@vikunja.io"
|
||||
|
||||
LABEL org.opencontainers.image.authors='maintainers@vikunja.io'
|
||||
LABEL org.opencontainers.image.url='https://vikunja.io'
|
||||
LABEL org.opencontainers.image.documentation='https://vikunja.io/docs'
|
||||
LABEL org.opencontainers.image.source='https://code.vikunja.io/vikunja'
|
||||
LABEL org.opencontainers.image.licenses='AGPLv3'
|
||||
LABEL org.opencontainers.image.title='Vikunja'
|
||||
|
||||
WORKDIR /app/vikunja
|
||||
ENTRYPOINT [ "/app/vikunja/vikunja" ]
|
||||
EXPOSE 3456
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[](https://drone.kolaente.de/vikunja/vikunja)
|
||||
[](LICENSE)
|
||||
[](https://vikunja.io/docs/installing)
|
||||
[](https://vikunja.io/docs/installing)
|
||||
[](https://hub.docker.com/r/vikunja/vikunja/)
|
||||
[](https://try.vikunja.io/api/v1/docs)
|
||||
[](https://goreportcard.com/report/kolaente.dev/vikunja/vikunja)
|
||||
|
||||
@@ -29,4 +29,9 @@ in {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.mailpit = {
|
||||
enable = true;
|
||||
package = pkgs-unstable.mailpit;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
"vue-flatpickr-component": "11.0.5",
|
||||
"vue-i18n": "10.0.1",
|
||||
"vue-router": "4.4.5",
|
||||
"vuemoji-picker": "0.3.1",
|
||||
"vuemoji-picker": "0.2.1",
|
||||
"workbox-precaching": "7.1.0",
|
||||
"zhyswan-vuedraggable": "4.1.3"
|
||||
},
|
||||
@@ -150,7 +150,7 @@
|
||||
"@vue/tsconfig": "0.5.1",
|
||||
"autoprefixer": "10.4.20",
|
||||
"browserslist": "4.23.3",
|
||||
"caniuse-lite": "1.0.30001662",
|
||||
"caniuse-lite": "1.0.30001660",
|
||||
"csstype": "3.1.3",
|
||||
"cypress": "13.14.2",
|
||||
"esbuild": "0.23.1",
|
||||
@@ -162,9 +162,9 @@
|
||||
"postcss-easing-gradients": "3.0.1",
|
||||
"postcss-easings": "4.0.0",
|
||||
"postcss-preset-env": "9.6.0",
|
||||
"rollup": "4.22.0",
|
||||
"rollup": "4.21.3",
|
||||
"rollup-plugin-visualizer": "5.12.0",
|
||||
"sass": "1.79.2",
|
||||
"sass": "1.79.1",
|
||||
"start-server-and-test": "2.0.8",
|
||||
"typescript": "5.6.2",
|
||||
"unplugin-inject-preload": "2.0.5",
|
||||
|
||||
Generated
+144
-144
@@ -36,7 +36,7 @@ importers:
|
||||
version: 2.3.2(dayjs@1.11.13)(vue@3.5.6(typescript@5.6.2))
|
||||
'@intlify/unplugin-vue-i18n':
|
||||
specifier: 5.0.0
|
||||
version: 5.0.0(@vue/compiler-dom@3.5.6)(eslint@8.57.1)(rollup@4.22.0)(typescript@5.6.2)(vue-i18n@10.0.1(vue@3.5.6(typescript@5.6.2)))(vue@3.5.6(typescript@5.6.2))
|
||||
version: 5.0.0(@vue/compiler-dom@3.5.6)(eslint@8.57.1)(rollup@4.21.3)(typescript@5.6.2)(vue-i18n@10.0.1(vue@3.5.6(typescript@5.6.2)))(vue@3.5.6(typescript@5.6.2))
|
||||
'@kyvg/vue3-notification':
|
||||
specifier: 3.3.0
|
||||
version: 3.3.0(vue@3.5.6(typescript@5.6.2))
|
||||
@@ -230,8 +230,8 @@ importers:
|
||||
specifier: 4.4.5
|
||||
version: 4.4.5(vue@3.5.6(typescript@5.6.2))
|
||||
vuemoji-picker:
|
||||
specifier: 0.3.1
|
||||
version: 0.3.1(vue@3.5.6(typescript@5.6.2))
|
||||
specifier: 0.2.1
|
||||
version: 0.2.1(vue@3.5.6(typescript@5.6.2))
|
||||
workbox-precaching:
|
||||
specifier: 7.1.0
|
||||
version: 7.1.0
|
||||
@@ -253,10 +253,10 @@ importers:
|
||||
version: 8.4.1
|
||||
'@histoire/plugin-screenshot':
|
||||
specifier: 0.17.17
|
||||
version: 0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)))
|
||||
version: 0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)))
|
||||
'@histoire/plugin-vue':
|
||||
specifier: 0.17.17
|
||||
version: 0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)))(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))
|
||||
version: 0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)))(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))
|
||||
'@rushstack/eslint-patch':
|
||||
specifier: 1.10.4
|
||||
version: 1.10.4
|
||||
@@ -292,10 +292,10 @@ importers:
|
||||
version: 7.18.0(eslint@8.57.1)(typescript@5.6.2)
|
||||
'@vitejs/plugin-legacy':
|
||||
specifier: 5.4.2
|
||||
version: 5.4.2(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
version: 5.4.2(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@vitejs/plugin-vue':
|
||||
specifier: 5.1.4
|
||||
version: 5.1.4(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))
|
||||
version: 5.1.4(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))
|
||||
'@vue/eslint-config-typescript':
|
||||
specifier: 13.0.0
|
||||
version: 13.0.0(eslint-plugin-vue@9.28.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.6.2)
|
||||
@@ -312,8 +312,8 @@ importers:
|
||||
specifier: 4.23.3
|
||||
version: 4.23.3
|
||||
caniuse-lite:
|
||||
specifier: 1.0.30001662
|
||||
version: 1.0.30001662
|
||||
specifier: 1.0.30001660
|
||||
version: 1.0.30001660
|
||||
csstype:
|
||||
specifier: 3.1.3
|
||||
version: 3.1.3
|
||||
@@ -334,7 +334,7 @@ importers:
|
||||
version: 14.12.3
|
||||
histoire:
|
||||
specifier: 0.17.17
|
||||
version: 0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
version: 0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
postcss:
|
||||
specifier: 8.4.47
|
||||
version: 8.4.47
|
||||
@@ -348,14 +348,14 @@ importers:
|
||||
specifier: 9.6.0
|
||||
version: 9.6.0(postcss@8.4.47)
|
||||
rollup:
|
||||
specifier: 4.22.0
|
||||
version: 4.22.0
|
||||
specifier: 4.21.3
|
||||
version: 4.21.3
|
||||
rollup-plugin-visualizer:
|
||||
specifier: 5.12.0
|
||||
version: 5.12.0(rollup@4.22.0)
|
||||
version: 5.12.0(rollup@4.21.3)
|
||||
sass:
|
||||
specifier: 1.79.2
|
||||
version: 1.79.2
|
||||
specifier: 1.79.1
|
||||
version: 1.79.1
|
||||
start-server-and-test:
|
||||
specifier: 2.0.8
|
||||
version: 2.0.8
|
||||
@@ -367,19 +367,19 @@ importers:
|
||||
version: 2.0.5
|
||||
vite:
|
||||
specifier: 5.4.6
|
||||
version: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
version: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
vite-plugin-pwa:
|
||||
specifier: 0.20.5
|
||||
version: 0.20.5(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))(workbox-build@7.1.1)(workbox-window@7.1.0)
|
||||
version: 0.20.5(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))(workbox-build@7.1.1)(workbox-window@7.1.0)
|
||||
vite-plugin-sentry:
|
||||
specifier: 1.4.0
|
||||
version: 1.4.0(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
version: 1.4.0(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
vite-svg-loader:
|
||||
specifier: 5.1.0
|
||||
version: 5.1.0(vue@3.5.6(typescript@5.6.2))
|
||||
vitest:
|
||||
specifier: 1.6.0
|
||||
version: 1.6.0(@types/node@20.16.5)(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.79.2)(terser@5.31.6)
|
||||
version: 1.6.0(@types/node@20.16.5)(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.79.1)(terser@5.31.6)
|
||||
vue-tsc:
|
||||
specifier: 2.1.6
|
||||
version: 2.1.6(typescript@5.6.2)
|
||||
@@ -1879,83 +1879,83 @@ packages:
|
||||
rollup:
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.22.0':
|
||||
resolution: {integrity: sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw==}
|
||||
'@rollup/rollup-android-arm-eabi@4.21.3':
|
||||
resolution: {integrity: sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-android-arm64@4.22.0':
|
||||
resolution: {integrity: sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ==}
|
||||
'@rollup/rollup-android-arm64@4.21.3':
|
||||
resolution: {integrity: sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.22.0':
|
||||
resolution: {integrity: sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng==}
|
||||
'@rollup/rollup-darwin-arm64@4.21.3':
|
||||
resolution: {integrity: sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.22.0':
|
||||
resolution: {integrity: sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw==}
|
||||
'@rollup/rollup-darwin-x64@4.21.3':
|
||||
resolution: {integrity: sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.22.0':
|
||||
resolution: {integrity: sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA==}
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.21.3':
|
||||
resolution: {integrity: sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.22.0':
|
||||
resolution: {integrity: sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg==}
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.21.3':
|
||||
resolution: {integrity: sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.22.0':
|
||||
resolution: {integrity: sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg==}
|
||||
'@rollup/rollup-linux-arm64-gnu@4.21.3':
|
||||
resolution: {integrity: sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.22.0':
|
||||
resolution: {integrity: sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ==}
|
||||
'@rollup/rollup-linux-arm64-musl@4.21.3':
|
||||
resolution: {integrity: sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.22.0':
|
||||
resolution: {integrity: sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ==}
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.21.3':
|
||||
resolution: {integrity: sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.22.0':
|
||||
resolution: {integrity: sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ==}
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.21.3':
|
||||
resolution: {integrity: sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.22.0':
|
||||
resolution: {integrity: sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg==}
|
||||
'@rollup/rollup-linux-s390x-gnu@4.21.3':
|
||||
resolution: {integrity: sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.22.0':
|
||||
resolution: {integrity: sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg==}
|
||||
'@rollup/rollup-linux-x64-gnu@4.21.3':
|
||||
resolution: {integrity: sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.22.0':
|
||||
resolution: {integrity: sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw==}
|
||||
'@rollup/rollup-linux-x64-musl@4.21.3':
|
||||
resolution: {integrity: sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.22.0':
|
||||
resolution: {integrity: sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw==}
|
||||
'@rollup/rollup-win32-arm64-msvc@4.21.3':
|
||||
resolution: {integrity: sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.22.0':
|
||||
resolution: {integrity: sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ==}
|
||||
'@rollup/rollup-win32-ia32-msvc@4.21.3':
|
||||
resolution: {integrity: sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.22.0':
|
||||
resolution: {integrity: sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA==}
|
||||
'@rollup/rollup-win32-x64-msvc@4.21.3':
|
||||
resolution: {integrity: sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
@@ -2866,8 +2866,8 @@ packages:
|
||||
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
caniuse-lite@1.0.30001662:
|
||||
resolution: {integrity: sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==}
|
||||
caniuse-lite@1.0.30001660:
|
||||
resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==}
|
||||
|
||||
capital-case@1.0.4:
|
||||
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
|
||||
@@ -3362,8 +3362,8 @@ packages:
|
||||
electron-to-chromium@1.5.13:
|
||||
resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==}
|
||||
|
||||
emoji-picker-element@1.22.7:
|
||||
resolution: {integrity: sha512-lX0a8f8yeDw2YuMDRqC1YXjMFRhTxezSGcSYnvgkEvtbtUnzYuNadxFrl4VBOeiwZMtwSe81nMk1Of6muNhCtQ==}
|
||||
emoji-picker-element@1.22.4:
|
||||
resolution: {integrity: sha512-2kealqo1bvQjlspkgXqC/eUBAhgP9WymSzaV9CPH5G3DOLgq1qA88IWHypcgkgbIiedP5w6LL2redVxsg9uKIA==}
|
||||
|
||||
emoji-regex@8.0.0:
|
||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||
@@ -5320,8 +5320,8 @@ packages:
|
||||
engines: {node: '>=10.0.0'}
|
||||
hasBin: true
|
||||
|
||||
rollup@4.22.0:
|
||||
resolution: {integrity: sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg==}
|
||||
rollup@4.21.3:
|
||||
resolution: {integrity: sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==}
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -5360,8 +5360,8 @@ packages:
|
||||
safer-buffer@2.1.2:
|
||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||
|
||||
sass@1.79.2:
|
||||
resolution: {integrity: sha512-YmT1aoF1MwHsZEu/eXhbAJNsPGAhNP4UixW9ckEwWCvPcVdVF0/C104OGDVEqtoctKq0N+wM20O/rj+sSPsWeg==}
|
||||
sass@1.79.1:
|
||||
resolution: {integrity: sha512-+mA7svoNKeL0DiJqZGeR/ZGUu8he4I8o3jyUcOFyo4eBJrwNgIMmAEwCMo/N2Y3wdjOBcRzoNxZIOtrtMX8EXg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -6094,8 +6094,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
vuemoji-picker@0.3.1:
|
||||
resolution: {integrity: sha512-BfMBNBN1I6QO3vyzyiyibJx6tTczuXB51hoJFvD6gE1IKeND38AXn7R8dI0k1g61XtQeKPuiriJukqunJqrnXg==}
|
||||
vuemoji-picker@0.2.1:
|
||||
resolution: {integrity: sha512-wKRZBZclTdnQIT4jPzmkJ5Ci9ObzMFPjkuYb+/+/9h+mAZIUwdcPqYbEJCohbxJPoOvkuPVDeuOdTKR8hqqVLA==}
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.7.0
|
||||
vue: ^2.6.14 || ^3.2.0
|
||||
@@ -7677,10 +7677,10 @@ snapshots:
|
||||
dependencies:
|
||||
'@hapi/hoek': 9.3.0
|
||||
|
||||
'@histoire/app@0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))':
|
||||
'@histoire/app@0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))':
|
||||
dependencies:
|
||||
'@histoire/controls': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/controls': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/vendors': 0.17.17
|
||||
'@types/flexsearch': 0.7.6
|
||||
flexsearch: 0.7.21
|
||||
@@ -7688,7 +7688,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- vite
|
||||
|
||||
'@histoire/controls@0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))':
|
||||
'@histoire/controls@0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))':
|
||||
dependencies:
|
||||
'@codemirror/commands': 6.6.0
|
||||
'@codemirror/lang-json': 6.0.1
|
||||
@@ -7697,17 +7697,17 @@ snapshots:
|
||||
'@codemirror/state': 6.4.1
|
||||
'@codemirror/theme-one-dark': 6.1.2
|
||||
'@codemirror/view': 6.33.0
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/vendors': 0.17.17
|
||||
transitivePeerDependencies:
|
||||
- vite
|
||||
|
||||
'@histoire/plugin-screenshot@0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)))':
|
||||
'@histoire/plugin-screenshot@0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)))':
|
||||
dependencies:
|
||||
capture-website: 2.4.1
|
||||
defu: 6.1.4
|
||||
fs-extra: 10.1.0
|
||||
histoire: 0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
histoire: 0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
pathe: 1.1.2
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
@@ -7715,21 +7715,21 @@ snapshots:
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
|
||||
'@histoire/plugin-vue@0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)))(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))':
|
||||
'@histoire/plugin-vue@0.17.17(histoire@0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)))(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))':
|
||||
dependencies:
|
||||
'@histoire/controls': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/controls': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/vendors': 0.17.17
|
||||
change-case: 4.1.2
|
||||
globby: 13.2.2
|
||||
histoire: 0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
histoire: 0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
launch-editor: 2.8.1
|
||||
pathe: 1.1.2
|
||||
vue: 3.5.6(typescript@5.6.2)
|
||||
transitivePeerDependencies:
|
||||
- vite
|
||||
|
||||
'@histoire/shared@0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))':
|
||||
'@histoire/shared@0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))':
|
||||
dependencies:
|
||||
'@histoire/vendors': 0.17.17
|
||||
'@types/fs-extra': 9.0.13
|
||||
@@ -7737,7 +7737,7 @@ snapshots:
|
||||
chokidar: 3.6.0
|
||||
pathe: 1.1.2
|
||||
picocolors: 1.0.1
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
|
||||
'@histoire/vendors@0.17.17': {}
|
||||
|
||||
@@ -7794,13 +7794,13 @@ snapshots:
|
||||
|
||||
'@intlify/shared@10.0.1': {}
|
||||
|
||||
'@intlify/unplugin-vue-i18n@5.0.0(@vue/compiler-dom@3.5.6)(eslint@8.57.1)(rollup@4.22.0)(typescript@5.6.2)(vue-i18n@10.0.1(vue@3.5.6(typescript@5.6.2)))(vue@3.5.6(typescript@5.6.2))':
|
||||
'@intlify/unplugin-vue-i18n@5.0.0(@vue/compiler-dom@3.5.6)(eslint@8.57.1)(rollup@4.21.3)(typescript@5.6.2)(vue-i18n@10.0.1(vue@3.5.6(typescript@5.6.2)))(vue@3.5.6(typescript@5.6.2))':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
|
||||
'@intlify/bundle-utils': 9.0.0-beta.0(vue-i18n@10.0.1(vue@3.5.6(typescript@5.6.2)))
|
||||
'@intlify/shared': 10.0.0
|
||||
'@intlify/vue-i18n-extensions': 6.2.0(@intlify/shared@10.0.0)(@vue/compiler-dom@3.5.6)(vue-i18n@10.0.1(vue@3.5.6(typescript@5.6.2)))(vue@3.5.6(typescript@5.6.2))
|
||||
'@rollup/pluginutils': 5.1.0(rollup@4.22.0)
|
||||
'@rollup/pluginutils': 5.1.0(rollup@4.21.3)
|
||||
'@typescript-eslint/scope-manager': 7.18.0
|
||||
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2)
|
||||
debug: 4.3.7
|
||||
@@ -7975,60 +7975,60 @@ snapshots:
|
||||
optionalDependencies:
|
||||
rollup: 2.79.1
|
||||
|
||||
'@rollup/pluginutils@5.1.0(rollup@4.22.0)':
|
||||
'@rollup/pluginutils@5.1.0(rollup@4.21.3)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
estree-walker: 2.0.2
|
||||
picomatch: 2.3.1
|
||||
optionalDependencies:
|
||||
rollup: 4.22.0
|
||||
rollup: 4.21.3
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.22.0':
|
||||
'@rollup/rollup-android-arm-eabi@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm64@4.22.0':
|
||||
'@rollup/rollup-android-arm64@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.22.0':
|
||||
'@rollup/rollup-darwin-arm64@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.22.0':
|
||||
'@rollup/rollup-darwin-x64@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.22.0':
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.22.0':
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.22.0':
|
||||
'@rollup/rollup-linux-arm64-gnu@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.22.0':
|
||||
'@rollup/rollup-linux-arm64-musl@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.22.0':
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.22.0':
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.22.0':
|
||||
'@rollup/rollup-linux-s390x-gnu@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.22.0':
|
||||
'@rollup/rollup-linux-x64-gnu@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.22.0':
|
||||
'@rollup/rollup-linux-x64-musl@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.22.0':
|
||||
'@rollup/rollup-win32-arm64-msvc@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.22.0':
|
||||
'@rollup/rollup-win32-ia32-msvc@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.22.0':
|
||||
'@rollup/rollup-win32-x64-msvc@4.21.3':
|
||||
optional: true
|
||||
|
||||
'@rushstack/eslint-patch@1.10.4': {}
|
||||
@@ -8540,7 +8540,7 @@ snapshots:
|
||||
|
||||
'@ungap/structured-clone@1.2.0': {}
|
||||
|
||||
'@vitejs/plugin-legacy@5.4.2(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))':
|
||||
'@vitejs/plugin-legacy@5.4.2(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))':
|
||||
dependencies:
|
||||
'@babel/core': 7.25.2
|
||||
'@babel/preset-env': 7.25.4(@babel/core@7.25.2)
|
||||
@@ -8551,13 +8551,13 @@ snapshots:
|
||||
regenerator-runtime: 0.14.1
|
||||
systemjs: 6.15.1
|
||||
terser: 5.31.6
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@vitejs/plugin-vue@5.1.4(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))':
|
||||
'@vitejs/plugin-vue@5.1.4(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))(vue@3.5.6(typescript@5.6.2))':
|
||||
dependencies:
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
vue: 3.5.6(typescript@5.6.2)
|
||||
|
||||
'@vitest/expect@1.6.0':
|
||||
@@ -8884,7 +8884,7 @@ snapshots:
|
||||
autoprefixer@10.4.20(postcss@8.4.47):
|
||||
dependencies:
|
||||
browserslist: 4.23.3
|
||||
caniuse-lite: 1.0.30001662
|
||||
caniuse-lite: 1.0.30001660
|
||||
fraction.js: 4.3.7
|
||||
normalize-range: 0.1.2
|
||||
picocolors: 1.0.1
|
||||
@@ -8988,7 +8988,7 @@ snapshots:
|
||||
|
||||
browserslist@4.23.3:
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001662
|
||||
caniuse-lite: 1.0.30001660
|
||||
electron-to-chromium: 1.5.13
|
||||
node-releases: 2.0.18
|
||||
update-browserslist-db: 1.1.0(browserslist@4.23.3)
|
||||
@@ -9045,7 +9045,7 @@ snapshots:
|
||||
|
||||
camelcase@5.3.1: {}
|
||||
|
||||
caniuse-lite@1.0.30001662: {}
|
||||
caniuse-lite@1.0.30001660: {}
|
||||
|
||||
capital-case@1.0.4:
|
||||
dependencies:
|
||||
@@ -9584,7 +9584,7 @@ snapshots:
|
||||
|
||||
electron-to-chromium@1.5.13: {}
|
||||
|
||||
emoji-picker-element@1.22.7: {}
|
||||
emoji-picker-element@1.22.4: {}
|
||||
|
||||
emoji-regex@8.0.0: {}
|
||||
|
||||
@@ -10267,12 +10267,12 @@ snapshots:
|
||||
|
||||
highlight.js@11.8.0: {}
|
||||
|
||||
histoire@0.17.17(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)):
|
||||
histoire@0.17.17(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)):
|
||||
dependencies:
|
||||
'@akryum/tinypool': 0.3.1
|
||||
'@histoire/app': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/controls': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))
|
||||
'@histoire/app': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/controls': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/shared': 0.17.17(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))
|
||||
'@histoire/vendors': 0.17.17
|
||||
'@types/flexsearch': 0.7.6
|
||||
'@types/markdown-it': 12.2.3
|
||||
@@ -10299,8 +10299,8 @@ snapshots:
|
||||
sade: 1.8.1
|
||||
shiki-es: 0.2.0
|
||||
sirv: 2.0.4
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite-node: 0.34.7(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
vite-node: 0.34.7(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- bufferutil
|
||||
@@ -11786,39 +11786,39 @@ snapshots:
|
||||
dependencies:
|
||||
glob: 7.2.3
|
||||
|
||||
rollup-plugin-visualizer@5.12.0(rollup@4.22.0):
|
||||
rollup-plugin-visualizer@5.12.0(rollup@4.21.3):
|
||||
dependencies:
|
||||
open: 8.4.2
|
||||
picomatch: 2.3.1
|
||||
source-map: 0.7.4
|
||||
yargs: 17.7.2
|
||||
optionalDependencies:
|
||||
rollup: 4.22.0
|
||||
rollup: 4.21.3
|
||||
|
||||
rollup@2.79.1:
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
||||
rollup@4.22.0:
|
||||
rollup@4.21.3:
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-android-arm-eabi': 4.22.0
|
||||
'@rollup/rollup-android-arm64': 4.22.0
|
||||
'@rollup/rollup-darwin-arm64': 4.22.0
|
||||
'@rollup/rollup-darwin-x64': 4.22.0
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.22.0
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.22.0
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.22.0
|
||||
'@rollup/rollup-linux-arm64-musl': 4.22.0
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.22.0
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.22.0
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.22.0
|
||||
'@rollup/rollup-linux-x64-gnu': 4.22.0
|
||||
'@rollup/rollup-linux-x64-musl': 4.22.0
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.22.0
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.22.0
|
||||
'@rollup/rollup-win32-x64-msvc': 4.22.0
|
||||
'@rollup/rollup-android-arm-eabi': 4.21.3
|
||||
'@rollup/rollup-android-arm64': 4.21.3
|
||||
'@rollup/rollup-darwin-arm64': 4.21.3
|
||||
'@rollup/rollup-darwin-x64': 4.21.3
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.21.3
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.21.3
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.21.3
|
||||
'@rollup/rollup-linux-arm64-musl': 4.21.3
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.21.3
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.21.3
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.21.3
|
||||
'@rollup/rollup-linux-x64-gnu': 4.21.3
|
||||
'@rollup/rollup-linux-x64-musl': 4.21.3
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.21.3
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.21.3
|
||||
'@rollup/rollup-win32-x64-msvc': 4.21.3
|
||||
fsevents: 2.3.3
|
||||
|
||||
rope-sequence@1.3.4: {}
|
||||
@@ -11858,7 +11858,7 @@ snapshots:
|
||||
|
||||
safer-buffer@2.1.2: {}
|
||||
|
||||
sass@1.79.2:
|
||||
sass@1.79.1:
|
||||
dependencies:
|
||||
chokidar: 4.0.0
|
||||
immutable: 4.3.7
|
||||
@@ -12483,14 +12483,14 @@ snapshots:
|
||||
core-util-is: 1.0.2
|
||||
extsprintf: 1.3.0
|
||||
|
||||
vite-node@0.34.7(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6):
|
||||
vite-node@0.34.7(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6):
|
||||
dependencies:
|
||||
cac: 6.7.14
|
||||
debug: 4.3.7
|
||||
mlly: 1.7.1
|
||||
pathe: 1.1.2
|
||||
picocolors: 1.1.0
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
@@ -12502,13 +12502,13 @@ snapshots:
|
||||
- supports-color
|
||||
- terser
|
||||
|
||||
vite-node@1.6.0(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6):
|
||||
vite-node@1.6.0(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6):
|
||||
dependencies:
|
||||
cac: 6.7.14
|
||||
debug: 4.3.7
|
||||
pathe: 1.1.2
|
||||
picocolors: 1.0.1
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
@@ -12520,21 +12520,21 @@ snapshots:
|
||||
- supports-color
|
||||
- terser
|
||||
|
||||
vite-plugin-pwa@0.20.5(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6))(workbox-build@7.1.1)(workbox-window@7.1.0):
|
||||
vite-plugin-pwa@0.20.5(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6))(workbox-build@7.1.1)(workbox-window@7.1.0):
|
||||
dependencies:
|
||||
debug: 4.3.6(supports-color@8.1.1)
|
||||
pretty-bytes: 6.1.1
|
||||
tinyglobby: 0.2.5
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
workbox-build: 7.1.1
|
||||
workbox-window: 7.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
vite-plugin-sentry@1.4.0(vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)):
|
||||
vite-plugin-sentry@1.4.0(vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)):
|
||||
dependencies:
|
||||
'@sentry/cli': 2.33.1
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
@@ -12544,18 +12544,18 @@ snapshots:
|
||||
svgo: 3.3.2
|
||||
vue: 3.5.6(typescript@5.6.2)
|
||||
|
||||
vite@5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6):
|
||||
vite@5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.4.47
|
||||
rollup: 4.22.0
|
||||
rollup: 4.21.3
|
||||
optionalDependencies:
|
||||
'@types/node': 20.16.5
|
||||
fsevents: 2.3.3
|
||||
sass: 1.79.2
|
||||
sass: 1.79.1
|
||||
terser: 5.31.6
|
||||
|
||||
vitest@1.6.0(@types/node@20.16.5)(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.79.2)(terser@5.31.6):
|
||||
vitest@1.6.0(@types/node@20.16.5)(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.79.1)(terser@5.31.6):
|
||||
dependencies:
|
||||
'@vitest/expect': 1.6.0
|
||||
'@vitest/runner': 1.6.0
|
||||
@@ -12574,8 +12574,8 @@ snapshots:
|
||||
strip-literal: 2.1.0
|
||||
tinybench: 2.9.0
|
||||
tinypool: 0.8.4
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite-node: 1.6.0(@types/node@20.16.5)(sass@1.79.2)(terser@5.31.6)
|
||||
vite: 5.4.6(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
vite-node: 1.6.0(@types/node@20.16.5)(sass@1.79.1)(terser@5.31.6)
|
||||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@types/node': 20.16.5
|
||||
@@ -12657,9 +12657,9 @@ snapshots:
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
|
||||
vuemoji-picker@0.3.1(vue@3.5.6(typescript@5.6.2)):
|
||||
vuemoji-picker@0.2.1(vue@3.5.6(typescript@5.6.2)):
|
||||
dependencies:
|
||||
emoji-picker-element: 1.22.7
|
||||
emoji-picker-element: 1.22.4
|
||||
vue: 3.5.6(typescript@5.6.2)
|
||||
vue-demi: 0.14.10(vue@3.5.6(typescript@5.6.2))
|
||||
|
||||
|
||||
@@ -569,15 +569,15 @@ async function addTaskToBucket(bucketId: IBucket['id']) {
|
||||
toggleShowNewTaskInput(bucketId)
|
||||
newTaskText.value = ''
|
||||
kanbanStore.addTaskToBucket(task)
|
||||
scrollTaskContainerToBottom(bucketId)
|
||||
scrollTaskContainerToTop(bucketId)
|
||||
}
|
||||
|
||||
function scrollTaskContainerToBottom(bucketId: IBucket['id']) {
|
||||
function scrollTaskContainerToTop(bucketId: IBucket['id']) {
|
||||
const bucketEl = taskContainerRefs.value[bucketId]
|
||||
if (!bucketEl) {
|
||||
return
|
||||
}
|
||||
bucketEl.scrollTop = bucketEl.scrollHeight
|
||||
bucketEl.scrollTop = 0
|
||||
}
|
||||
|
||||
async function createNewBucket() {
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
</span>
|
||||
<div
|
||||
v-for="c in comments"
|
||||
:id="`comment-${c.id}`"
|
||||
:key="c.id"
|
||||
class="media comment"
|
||||
>
|
||||
@@ -56,6 +57,13 @@
|
||||
>
|
||||
· {{ $t('task.comment.edited', {date: formatDateSince(c.updated)}) }}
|
||||
</span>
|
||||
<a
|
||||
v-tooltip="$t('task.comment.permalink')"
|
||||
:href="`#comment-${c.id}`"
|
||||
class="comment-permalink"
|
||||
:title="$t('task.comment.permalink')"
|
||||
@click.prevent.stop="copy(getCommentUrl(`${c.id}`))"
|
||||
><Icon icon="link" /></a>
|
||||
<CustomTransition name="fade">
|
||||
<span
|
||||
v-if="
|
||||
@@ -199,6 +207,7 @@ import {getAvatarUrl, getDisplayName} from '@/models/user'
|
||||
import {useConfigStore} from '@/stores/config'
|
||||
import {useAuthStore} from '@/stores/auth'
|
||||
import Reactions from '@/components/input/Reactions.vue'
|
||||
import { useCopyToClipboard } from '@/composables/useCopyToClipboard'
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
taskId: number,
|
||||
@@ -207,6 +216,8 @@ const props = withDefaults(defineProps<{
|
||||
canWrite: true,
|
||||
})
|
||||
|
||||
const copy = useCopyToClipboard()
|
||||
|
||||
const {t} = useI18n({useScope: 'global'})
|
||||
const configStore = useConfigStore()
|
||||
const authStore = useAuthStore()
|
||||
@@ -242,6 +253,8 @@ const actions = computed(() => {
|
||||
])))
|
||||
})
|
||||
|
||||
const frontendUrl = computed(() => configStore.frontendUrl)
|
||||
|
||||
async function attachmentUpload(files: File[] | FileList): (Promise<string[]>) {
|
||||
|
||||
const uploadPromises: Promise<string>[] = []
|
||||
@@ -364,6 +377,10 @@ async function deleteComment(commentToDelete: ITaskComment) {
|
||||
showDeleteModal.value = false
|
||||
}
|
||||
}
|
||||
|
||||
function getCommentUrl(commentId: string) {
|
||||
return `${frontendUrl.value}${location.pathname}${location.search}#comment-${commentId}`
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@@ -391,10 +408,23 @@ async function deleteComment(commentToDelete: ITaskComment) {
|
||||
}
|
||||
|
||||
|
||||
span {
|
||||
span,
|
||||
.comment-permalink {
|
||||
font-size: .75rem;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.comment-permalink {
|
||||
font-size: 1rem;
|
||||
border: 1px solid transparent;
|
||||
padding: 0.25rem;
|
||||
border-radius: 1rem;
|
||||
color: var(--grey, hsl(0, 0%, 48%));
|
||||
}
|
||||
.comment-permalink:hover {
|
||||
color: var(--grey-dark, hsl(0, 0%, 29%));
|
||||
border-color: var(--grey-dark, hsl(0, 0%, 29%));
|
||||
}
|
||||
}
|
||||
|
||||
.image.is-avatar {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import {ref, shallowReactive, watchEffect} from 'vue'
|
||||
import AttachmentService from '@/services/attachment'
|
||||
import AttachmentService, {PREVIEW_SIZE} from '@/services/attachment'
|
||||
import type {IAttachment} from '@/modelTypes/IAttachment'
|
||||
import {canPreview} from '@/models/attachment'
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {ref, computed, watch} from 'vue'
|
||||
import {computed, ref, watch} from 'vue'
|
||||
import {useRouter} from 'vue-router'
|
||||
|
||||
import PriorityLabel from '@/components/tasks/partials/PriorityLabel.vue'
|
||||
@@ -105,9 +105,9 @@ import ChecklistSummary from './ChecklistSummary.vue'
|
||||
import {getHexColor} from '@/models/task'
|
||||
import type {ITask} from '@/modelTypes/ITask'
|
||||
import {SUPPORTED_IMAGE_SUFFIX} from '@/models/attachment'
|
||||
import AttachmentService from '@/services/attachment'
|
||||
import AttachmentService, {PREVIEW_SIZE} from '@/services/attachment'
|
||||
|
||||
import {formatDateLong, formatISO, formatDateSince} from '@/helpers/time/formatDate'
|
||||
import {formatDateLong, formatDateSince, formatISO} from '@/helpers/time/formatDate'
|
||||
import {colorIsDark} from '@/helpers/color/colorIsDark'
|
||||
import {useTaskStore} from '@/stores/tasks'
|
||||
import AssigneeList from '@/components/tasks/partials/AssigneeList.vue'
|
||||
|
||||
@@ -25,6 +25,7 @@ export const SUPPORTED_LOCALES = {
|
||||
'pt-BR': 'Português Brasileiro',
|
||||
'hr-HR': 'Hrvatski',
|
||||
'uk-UA': 'Українська',
|
||||
'lt-LT': 'Lietuvių Kalba',
|
||||
// IMPORTANT: Also add new languages to useDayjsLanguageSync
|
||||
} as const
|
||||
|
||||
|
||||
@@ -848,7 +848,8 @@
|
||||
"delete": "Delete this comment",
|
||||
"deleteText1": "Are you sure you want to delete this comment?",
|
||||
"deleteSuccess": "The comment was deleted successfully.",
|
||||
"addedSuccess": "The comment was added successfully."
|
||||
"addedSuccess": "The comment was added successfully.",
|
||||
"permalink": "Copy permalink to this comment"
|
||||
},
|
||||
"deferDueDate": {
|
||||
"title": "Defer due date",
|
||||
|
||||
@@ -25,6 +25,7 @@ export const DAYJS_LOCALE_MAPPING = {
|
||||
'pt-BR': 'pt',
|
||||
'hr-HR': 'hr',
|
||||
'uk-UA': 'uk',
|
||||
'lt-LT': 'lt',
|
||||
} as Record<SupportedLocale, ISOLanguage>
|
||||
|
||||
export const DAYJS_LANGUAGE_IMPORTS = {
|
||||
@@ -48,6 +49,7 @@ export const DAYJS_LANGUAGE_IMPORTS = {
|
||||
'sl-si': () => import('dayjs/locale/sl'),
|
||||
'pt-br': () => import('dayjs/locale/pt-br'),
|
||||
'uk-ua': () => import('dayjs/locale/uk'),
|
||||
'lt-lt': () => import('dayjs/locale/lt'),
|
||||
} as Record<SupportedLocale, () => Promise<ILocale>>
|
||||
|
||||
export function useDayjsLanguageSync(dayjsGlobal: typeof dayjs) {
|
||||
|
||||
@@ -5,6 +5,13 @@ import type { IAttachment } from '@/modelTypes/IAttachment'
|
||||
|
||||
import {downloadBlob} from '@/helpers/downloadBlob'
|
||||
|
||||
export enum PREVIEW_SIZE {
|
||||
SM = 'sm',
|
||||
MD = 'md',
|
||||
LG = 'lg',
|
||||
XL = 'xl',
|
||||
}
|
||||
|
||||
export default class AttachmentService extends AbstractService<IAttachment> {
|
||||
constructor() {
|
||||
super({
|
||||
|
||||
@@ -194,8 +194,8 @@ export const useKanbanStore = defineStore('kanban', () => {
|
||||
...oldBucket,
|
||||
count: (oldBucket?.count || 0) + 1,
|
||||
tasks: [
|
||||
...oldBucket.tasks,
|
||||
task,
|
||||
...oldBucket.tasks,
|
||||
],
|
||||
}
|
||||
buckets.value[bucketIndex] = newBucket
|
||||
|
||||
+20
@@ -464,6 +464,26 @@ func (Build) Build() {
|
||||
runAndStreamOutput("go", "build", Goflags[0], "-tags", Tags, "-ldflags", "-s -w "+Ldflags, "-o", Executable)
|
||||
}
|
||||
|
||||
func (Build) SaveVersionToFile() error {
|
||||
// Open the file for writing. If the file doesn't exist, create it.
|
||||
// If it exists, truncate it.
|
||||
file, err := os.Create("VERSION")
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating VERSION file: %w", err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
// Write the version number to the file
|
||||
_, err = file.WriteString(VersionNumber)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error writing to VERSION file: %w", err)
|
||||
}
|
||||
|
||||
fmt.Println("Version number saved successfully to VERSION file")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type Release mg.Namespace
|
||||
|
||||
// Runs all steps in the right order to create release packages for various platforms
|
||||
|
||||
+16
-1
@@ -17,11 +17,14 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"code.vikunja.io/api/pkg/config"
|
||||
"code.vikunja.io/api/pkg/initialize"
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
"code.vikunja.io/api/pkg/modules/dump"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -29,6 +32,8 @@ func init() {
|
||||
rootCmd.AddCommand(dumpCmd)
|
||||
}
|
||||
|
||||
var dumpPathFlag string
|
||||
|
||||
var dumpCmd = &cobra.Command{
|
||||
Use: "dump",
|
||||
Short: "Dump all vikunja data into a zip file. Includes config, files and db.",
|
||||
@@ -37,8 +42,18 @@ var dumpCmd = &cobra.Command{
|
||||
},
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
filename := "vikunja-dump_" + time.Now().Format("2006-01-02_15-03-05") + ".zip"
|
||||
if err := dump.Dump(filename); err != nil {
|
||||
|
||||
path := config.ServiceRootpath.GetString()
|
||||
if dumpPathFlag != "" {
|
||||
path = dumpPathFlag
|
||||
}
|
||||
|
||||
if err := dump.Dump(filepath.Join(path, filename)); err != nil {
|
||||
log.Critical(err.Error())
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
dumpCmd.Flags().StringVarP(&dumpPathFlag, "path", "p", "", "The folder path where the dump file should be saved. Vikunja will use the configured root path or the binary location if the flag is not provided.")
|
||||
}
|
||||
|
||||
+3
-3
@@ -26,13 +26,13 @@ import (
|
||||
)
|
||||
|
||||
// ErrFmt holds the format for all the console logging
|
||||
const ErrFmt = `${time_rfc3339}: ${level} ` + "\t" + `▶ ${prefix} ${short_file}:${line}`
|
||||
const ErrFmt = `${time_rfc3339_nano}: ${level} ` + "\t" + `▶ ${prefix} ${short_file}:${line}`
|
||||
|
||||
// WebFmt holds the format for all logging related to web requests
|
||||
const WebFmt = `${time_rfc3339}: WEB ` + "\t" + `▶ ${remote_ip} ${id} ${method} ${status} ${uri} ${latency_human} - ${user_agent}`
|
||||
const WebFmt = `${time_rfc3339_nano}: WEB ` + "\t" + `▶ ${remote_ip} ${id} ${method} ${status} ${uri} ${latency_human} - ${user_agent}`
|
||||
|
||||
// Fmt is the general log format
|
||||
const Fmt = `%{color}%{time:` + time.RFC3339 + `}: %{level}` + "\t" + `▶ %{id:03x}%{color:reset} %{message}`
|
||||
const Fmt = `%{color}%{time:` + time.RFC3339Nano + `}: %{level}` + "\t" + `▶ %{shortpkg}/%{shortfunc} %{id:03x}%{color:reset} %{message}`
|
||||
|
||||
const logModule = `vikunja`
|
||||
|
||||
|
||||
+30
-5
@@ -539,6 +539,36 @@ func (l *AddTaskToTypesense) Handle(msg *message.Message) (err error) {
|
||||
return reindexTasksInTypesense(s, task)
|
||||
}
|
||||
|
||||
func getPositionsForTask(s *xorm.Session, event *TaskCreatedEvent) (positionsMap map[int64][]*TaskPositionWithView, err error) {
|
||||
positions := []*TaskPositionWithView{}
|
||||
err = s.
|
||||
Table("project_views").
|
||||
Where("project_views.project_id = ?", event.Task.ProjectID).
|
||||
Join("LEFT", "task_positions", "project_views.id = task_positions.project_view_id AND task_positions.task_id = ?", event.Task.ID).
|
||||
Find(&positions)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
positionsMap = make(map[int64][]*TaskPositionWithView, 1)
|
||||
positionsMap[event.Task.ID] = positions
|
||||
return
|
||||
}
|
||||
|
||||
func getBucketsForTask(s *xorm.Session, event *TaskCreatedEvent) (bucketsMap map[int64][]*TaskBucket, err error) {
|
||||
buckets := []*TaskBucket{}
|
||||
err = s.
|
||||
Where("task_id = ?", event.Task.ID).
|
||||
Find(&buckets)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
bucketsMap = make(map[int64][]*TaskBucket, 1)
|
||||
bucketsMap[event.Task.ID] = buckets
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateTaskInTypesense represents a listener
|
||||
type UpdateTaskInTypesense struct {
|
||||
}
|
||||
@@ -727,11 +757,6 @@ func (l *UpdateTaskInSavedFilterViews) Handle(msg *message.Message) (err error)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
task := make(map[int64]*Task, 1)
|
||||
task[event.Task.ID] = event.Task // Will be filled with all data by the Typesense connector
|
||||
|
||||
return reindexTasksInTypesense(s, task)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
+23
-55
@@ -19,8 +19,6 @@ package models
|
||||
import (
|
||||
"time"
|
||||
|
||||
"code.vikunja.io/api/pkg/config"
|
||||
|
||||
"code.vikunja.io/api/pkg/cron"
|
||||
"code.vikunja.io/api/pkg/db"
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
@@ -398,7 +396,6 @@ func RegisterAddTaskToFilterViewCron() {
|
||||
newTaskBuckets := []*TaskBucket{}
|
||||
newTaskPositions := []*TaskPosition{}
|
||||
deleteCond := []builder.Cond{}
|
||||
taskIDsToRemove := []int64{}
|
||||
for _, view := range kanbanFilterViews {
|
||||
filterID := getSavedFilterIDFromProjectID(view.ProjectID)
|
||||
filter, exists := filters[filterID]
|
||||
@@ -483,64 +480,35 @@ func RegisterAddTaskToFilterViewCron() {
|
||||
builder.Eq{"task_id": taskID},
|
||||
builder.Eq{"project_view_id": view.ID},
|
||||
))
|
||||
taskIDsToRemove = append(taskIDsToRemove, taskID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
upsertRelatedTaskProperties(s, logPrefix, newTaskBuckets, newTaskPositions, deleteCond, taskIDsToRemove)
|
||||
if len(newTaskBuckets) > 0 {
|
||||
_, err = s.Insert(newTaskBuckets)
|
||||
if err != nil {
|
||||
log.Errorf("%sError inserting task buckets: %s", logPrefix, err)
|
||||
}
|
||||
}
|
||||
if len(newTaskPositions) > 0 {
|
||||
_, err = s.Insert(newTaskPositions)
|
||||
if err != nil {
|
||||
log.Errorf("%sError inserting task positions: %s", logPrefix, err)
|
||||
}
|
||||
}
|
||||
|
||||
if len(deleteCond) > 0 {
|
||||
_, err = s.Where(builder.Or(deleteCond...)).Delete(&TaskBucket{})
|
||||
if err != nil {
|
||||
log.Errorf("%sError deleting task buckets: %s", logPrefix, err)
|
||||
}
|
||||
_, err = s.Where(builder.Or(deleteCond...)).Delete(&TaskPosition{})
|
||||
if err != nil {
|
||||
log.Errorf("%sError deleting task positions: %s", logPrefix, err)
|
||||
}
|
||||
}
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("Could register add task to filter view cron: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func upsertRelatedTaskProperties(s *xorm.Session, logPrefix string, newTaskBuckets []*TaskBucket, newTaskPositions []*TaskPosition, deleteCond []builder.Cond, taskIDsToRemove []int64) {
|
||||
var err error
|
||||
if len(newTaskBuckets) > 0 {
|
||||
_, err = s.Insert(newTaskBuckets)
|
||||
if err != nil {
|
||||
log.Errorf("%sError inserting task buckets: %s", logPrefix, err)
|
||||
}
|
||||
}
|
||||
if len(newTaskPositions) > 0 {
|
||||
_, err = s.Insert(newTaskPositions)
|
||||
if err != nil {
|
||||
log.Errorf("%sError inserting task positions: %s", logPrefix, err)
|
||||
}
|
||||
}
|
||||
|
||||
if len(deleteCond) > 0 {
|
||||
_, err = s.Where(builder.Or(deleteCond...)).Delete(&TaskBucket{})
|
||||
if err != nil {
|
||||
log.Errorf("%sError deleting task buckets: %s", logPrefix, err)
|
||||
}
|
||||
_, err = s.Where(builder.Or(deleteCond...)).Delete(&TaskPosition{})
|
||||
if err != nil {
|
||||
log.Errorf("%sError deleting task positions: %s", logPrefix, err)
|
||||
}
|
||||
}
|
||||
|
||||
if config.TypesenseEnabled.GetBool() && (len(newTaskPositions) > 0 || len(taskIDsToRemove) > 0) {
|
||||
taskIDs := []int64{}
|
||||
for _, position := range newTaskPositions {
|
||||
taskIDs = append(taskIDs, position.TaskID)
|
||||
}
|
||||
taskIDs = append(taskIDs, taskIDsToRemove...)
|
||||
tasks, err := GetTasksSimpleByIDs(s, taskIDs)
|
||||
if err != nil {
|
||||
log.Errorf("%sError fetching tasks: %s", logPrefix, err)
|
||||
return
|
||||
}
|
||||
taskMap := make(map[int64]*Task)
|
||||
for _, t := range tasks {
|
||||
taskMap[t.ID] = t
|
||||
}
|
||||
|
||||
err = reindexTasksInTypesense(s, taskMap)
|
||||
if err != nil {
|
||||
log.Errorf("%sError reindexing tasks into Typesense: %s", logPrefix, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,3 +181,39 @@ func getPositionsForView(s *xorm.Session, view *ProjectView) (positions []*TaskP
|
||||
Find(&positions)
|
||||
return
|
||||
}
|
||||
|
||||
func calculateNewPositionForTask(s *xorm.Session, a web.Auth, t *Task, view *ProjectView) (*TaskPosition, error) {
|
||||
if t.Position == 0 {
|
||||
lowestPosition := &TaskPosition{}
|
||||
exists, err := s.Where("project_view_id = ?", view.ID).
|
||||
OrderBy("position asc").
|
||||
Get(lowestPosition)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if exists {
|
||||
if lowestPosition.Position == 0 {
|
||||
err = RecalculateTaskPositions(s, view, a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
lowestPosition = &TaskPosition{}
|
||||
_, err = s.Where("project_view_id = ?", view.ID).
|
||||
OrderBy("position asc").
|
||||
Get(lowestPosition)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
t.Position = lowestPosition.Position / 2
|
||||
}
|
||||
}
|
||||
|
||||
return &TaskPosition{
|
||||
TaskID: t.ID,
|
||||
ProjectViewID: view.ID,
|
||||
Position: calculateDefaultPosition(t.Index, t.Position),
|
||||
}, nil
|
||||
}
|
||||
|
||||
+10
-9
@@ -812,11 +812,12 @@ func createTask(s *xorm.Session, t *Task, a web.Auth, updateAssignees bool, setB
|
||||
})
|
||||
}
|
||||
|
||||
positions = append(positions, &TaskPosition{
|
||||
TaskID: t.ID,
|
||||
ProjectViewID: view.ID,
|
||||
Position: calculateDefaultPosition(t.Index, t.Position),
|
||||
})
|
||||
newPosition, err := calculateNewPositionForTask(s, a, t, view)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
positions = append(positions, newPosition)
|
||||
}
|
||||
|
||||
if len(positions) > 0 {
|
||||
@@ -976,11 +977,11 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
tp := TaskPosition{
|
||||
TaskID: t.ID,
|
||||
ProjectViewID: view.ID,
|
||||
Position: calculateDefaultPosition(t.Index, t.Position),
|
||||
tp, err := calculateNewPositionForTask(s, a, t, view)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = tp.Update(s, a)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
+72
-69
@@ -180,14 +180,6 @@ func CreateTypesenseCollections() error {
|
||||
Type: "object[]", // TODO
|
||||
Optional: pointer.True(),
|
||||
},
|
||||
{
|
||||
Name: "positions",
|
||||
Type: "object",
|
||||
},
|
||||
{
|
||||
Name: "positions.view_.*",
|
||||
Type: "float",
|
||||
},
|
||||
{
|
||||
Name: "buckets",
|
||||
Type: "int64[]",
|
||||
@@ -199,10 +191,38 @@ func CreateTypesenseCollections() error {
|
||||
_, _ = typesenseClient.Collection("tasks").Delete(context.Background())
|
||||
|
||||
_, err := typesenseClient.Collections().Create(context.Background(), taskSchema)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
taskPositionSchema := &api.CollectionSchema{
|
||||
Name: "task_positions",
|
||||
Fields: []api.Field{
|
||||
{
|
||||
Name: "task_id",
|
||||
Type: "string",
|
||||
Reference: pointer.String("tasks.id"),
|
||||
},
|
||||
{
|
||||
Name: "project_view_id",
|
||||
Type: "int64",
|
||||
},
|
||||
{
|
||||
Name: "position",
|
||||
Type: "float",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
_, _ = typesenseClient.Collection("task_positions").Delete(context.Background())
|
||||
|
||||
_, err = typesenseClient.Collections().Create(context.Background(), taskPositionSchema)
|
||||
return err
|
||||
}
|
||||
|
||||
func ReindexAllTasks() (err error) {
|
||||
tasks := make(map[int64]*Task)
|
||||
|
||||
s := db.NewSession()
|
||||
defer s.Close()
|
||||
|
||||
@@ -220,7 +240,6 @@ func ReindexAllTasks() (err error) {
|
||||
return fmt.Errorf("could not update last sync: %s", err.Error())
|
||||
}
|
||||
|
||||
tasks := make(map[int64]*Task)
|
||||
err = s.Find(tasks)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not get all tasks: %s", err.Error())
|
||||
@@ -247,8 +266,8 @@ func ReindexAllTasks() (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func getTypesenseTaskForTask(s *xorm.Session, task *Task, projectsCache map[int64]*Project, taskPositionCache map[int64][]*TaskPositionWithView, taskBucketCache map[int64][]*TaskBucket) (ttask *typesenseTask, err error) {
|
||||
ttask = convertTaskToTypesenseTask(task, taskPositionCache[task.ID], taskBucketCache[task.ID])
|
||||
func getTypesenseTaskForTask(s *xorm.Session, task *Task, projectsCache map[int64]*Project, taskBucketCache map[int64][]*TaskBucket) (ttask *typesenseTask, err error) {
|
||||
ttask = convertTaskToTypesenseTask(task, taskBucketCache[task.ID])
|
||||
|
||||
var p *Project
|
||||
if projectsCache == nil {
|
||||
@@ -298,50 +317,65 @@ func reindexTasksInTypesense(s *xorm.Session, tasks map[int64]*Task) (err error)
|
||||
projects := make(map[int64]*Project)
|
||||
typesenseTasks := []interface{}{}
|
||||
|
||||
positionsByTask, err := getPositionsByTask(s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
bucketsByTask, err := getBucketsByTask(s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
taskIDs := []int64{}
|
||||
for _, task := range tasks {
|
||||
|
||||
ttask, err := getTypesenseTaskForTask(s, task, projects, positionsByTask, bucketsByTask)
|
||||
ttask, err := getTypesenseTaskForTask(s, task, projects, bucketsByTask)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if ttask == nil {
|
||||
log.Debugf("Converted typesense task %d is nil, not indexing", task.ID)
|
||||
continue
|
||||
}
|
||||
|
||||
typesenseTasks = append(typesenseTasks, ttask)
|
||||
taskIDs = append(taskIDs, task.ID)
|
||||
}
|
||||
|
||||
response, err := typesenseClient.Collection("tasks").
|
||||
_, err = typesenseClient.Collection("tasks").
|
||||
Documents().
|
||||
Import(context.Background(), typesenseTasks, &api.ImportDocumentsParams{
|
||||
Action: pointer.String("emplace"),
|
||||
Action: pointer.String("upsert"),
|
||||
BatchSize: pointer.Int(100),
|
||||
})
|
||||
if err != nil {
|
||||
log.Errorf("Could not upsert tasks into Typesense: %s", err)
|
||||
log.Errorf("Could not upsert task into Typesense: %s", err)
|
||||
return err
|
||||
}
|
||||
for _, r := range response {
|
||||
if r.Success {
|
||||
continue
|
||||
}
|
||||
log.Errorf("Errors during index: [error=%s, document=%s]", r.Error, r.Document)
|
||||
|
||||
positions := []*TaskPosition{}
|
||||
err = s.In("task_id", taskIDs).Find(&positions)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
log.Debugf("Indexed %d tasks into Typesense", len(typesenseTasks))
|
||||
typesensePositions := []interface{}{}
|
||||
for _, p := range positions {
|
||||
typesensePositions = append(typesensePositions, &typesenseTaskPosition{
|
||||
TaskID: strconv.FormatInt(p.TaskID, 10),
|
||||
ProjectViewID: p.ProjectViewID,
|
||||
Position: p.Position,
|
||||
})
|
||||
}
|
||||
_, err = typesenseClient.Collection("task_positions").
|
||||
Documents().
|
||||
Import(context.Background(), typesensePositions, &api.ImportDocumentsParams{
|
||||
Action: pointer.String("upsert"),
|
||||
BatchSize: pointer.Int(100),
|
||||
})
|
||||
if err != nil {
|
||||
log.Errorf("Could not upsert task positions into Typesense: %s", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
log.Debugf("Indexed %d tasks into Typesense", len(tasks))
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
type TaskPositionWithView struct {
|
||||
@@ -349,27 +383,6 @@ type TaskPositionWithView struct {
|
||||
TaskPosition `xorm:"extends"`
|
||||
}
|
||||
|
||||
func getPositionsByTask(s *xorm.Session) (positionsByTask map[int64][]*TaskPositionWithView, err error) {
|
||||
rawPositions := []*TaskPositionWithView{}
|
||||
err = s.
|
||||
Table("project_views").
|
||||
Join("LEFT", "task_positions", "project_views.id = task_positions.project_view_id").
|
||||
Find(&rawPositions)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
positionsByTask = make(map[int64][]*TaskPositionWithView, len(rawPositions))
|
||||
for _, p := range rawPositions {
|
||||
_, has := positionsByTask[p.TaskID]
|
||||
if !has {
|
||||
positionsByTask[p.TaskID] = []*TaskPositionWithView{}
|
||||
}
|
||||
positionsByTask[p.TaskID] = append(positionsByTask[p.TaskID], p)
|
||||
}
|
||||
return positionsByTask, nil
|
||||
}
|
||||
|
||||
func getBucketsByTask(s *xorm.Session) (positionsByTask map[int64][]*TaskBucket, err error) {
|
||||
rawBuckets := []*TaskBucket{}
|
||||
err = s.Find(&rawBuckets)
|
||||
@@ -449,12 +462,6 @@ func indexDummyTask() (err error) {
|
||||
},
|
||||
},
|
||||
},
|
||||
Positions: map[string]float64{
|
||||
"view_1": 10,
|
||||
"view_2": 30,
|
||||
"view_3": 5450,
|
||||
"view_4": 42,
|
||||
},
|
||||
Buckets: []int64{42},
|
||||
}
|
||||
|
||||
@@ -497,13 +504,18 @@ type typesenseTask struct {
|
||||
Assignees interface{} `json:"assignees"`
|
||||
Labels interface{} `json:"labels"`
|
||||
//RelatedTasks interface{} `json:"related_tasks"` // TODO
|
||||
Attachments interface{} `json:"attachments"`
|
||||
Comments interface{} `json:"comments"`
|
||||
Positions map[string]float64 `json:"positions"`
|
||||
Buckets []int64 `json:"buckets"`
|
||||
Attachments interface{} `json:"attachments"`
|
||||
Comments interface{} `json:"comments"`
|
||||
Buckets []int64 `json:"buckets"`
|
||||
}
|
||||
|
||||
func convertTaskToTypesenseTask(task *Task, positions []*TaskPositionWithView, buckets []*TaskBucket) *typesenseTask {
|
||||
type typesenseTaskPosition struct {
|
||||
TaskID string `json:"task_id"`
|
||||
ProjectViewID int64 `json:"project_view_id"`
|
||||
Position float64 `json:"position"`
|
||||
}
|
||||
|
||||
func convertTaskToTypesenseTask(task *Task, buckets []*TaskBucket) *typesenseTask {
|
||||
|
||||
tt := &typesenseTask{
|
||||
ID: fmt.Sprintf("%d", task.ID),
|
||||
@@ -532,7 +544,6 @@ func convertTaskToTypesenseTask(task *Task, positions []*TaskPositionWithView, b
|
||||
Labels: task.Labels,
|
||||
//RelatedTasks: task.RelatedTasks,
|
||||
Attachments: task.Attachments,
|
||||
Positions: make(map[string]float64, len(positions)),
|
||||
Buckets: make([]int64, 0, len(buckets)),
|
||||
}
|
||||
|
||||
@@ -549,14 +560,6 @@ func convertTaskToTypesenseTask(task *Task, positions []*TaskPositionWithView, b
|
||||
tt.EndDate = nil
|
||||
}
|
||||
|
||||
for _, position := range positions {
|
||||
pos := position.TaskPosition.Position
|
||||
if pos == 0 {
|
||||
pos = float64(task.ID)
|
||||
}
|
||||
tt.Positions["view_"+strconv.FormatInt(position.ProjectView.ID, 10)] = pos
|
||||
}
|
||||
|
||||
for _, bucket := range buckets {
|
||||
tt.Buckets = append(tt.Buckets, bucket.BucketID)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user