diff --git a/.drone.yml b/.drone.yml index b516a40e26..77267b011e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -39,7 +39,7 @@ volumes: services: - name: test-mysql-unit - image: mariadb:10 + image: mariadb:11 environment: MYSQL_ROOT_PASSWORD: vikunjatest MYSQL_DATABASE: vikunjatest @@ -47,7 +47,7 @@ services: - name: tmp-mysql-unit path: /var/lib/mysql - name: test-mysql-integration - image: mariadb:10 + image: mariadb:11 environment: MYSQL_ROOT_PASSWORD: vikunjatest MYSQL_DATABASE: vikunjatest @@ -55,7 +55,7 @@ services: - name: tmp-mysql-integration path: /var/lib/mysql - name: test-mysql-migration - image: mariadb:10 + image: mariadb:11 environment: MYSQL_ROOT_PASSWORD: vikunjatest MYSQL_DATABASE: vikunjatest @@ -63,7 +63,7 @@ services: - name: tmp-mysql-migration path: /var/lib/mysql - name: test-postgres-unit - image: postgres:14 + image: postgres:16 environment: POSTGRES_PASSWORD: vikunjatest POSTGRES_DB: vikunjatest @@ -73,7 +73,7 @@ services: commands: - docker-entrypoint.sh -c fsync=off -c full_page_writes=off # turns of wal - name: test-postgres-integration - image: postgres:14 + image: postgres:16 environment: POSTGRES_PASSWORD: vikunjatest POSTGRES_DB: vikunjatest @@ -83,7 +83,7 @@ services: commands: - docker-entrypoint.sh -c fsync=off -c full_page_writes=off # turns of wal - name: test-postgres-migration - image: postgres:14 + image: postgres:16 environment: POSTGRES_PASSWORD: vikunjatest POSTGRES_DB: vikunjatest @@ -133,16 +133,14 @@ steps: event: [ push, tag, pull_request ] - name: lint - image: golang:1.19-alpine + image: golangci/golangci-lint:v1.54.2 pull: always environment: GOPROXY: 'https://goproxy.kolaente.de' depends_on: [ build ] commands: - export "GOROOT=$(go env GOROOT)" - - apk --no-cache add build-base git - - wget -O - -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.51.2 - - ./mage-static check:all + - ./mage-static check:golangci when: event: [ push, tag, pull_request ] @@ -338,6 +336,50 @@ steps: when: event: [ push, tag, pull_request ] +--- +kind: pipeline +type: docker +name: generate-swagger-docs + +depends_on: + - testing + +workspace: + base: /go + path: src/code.vikunja.io/api + +trigger: + branch: + include: + - main + event: + include: + - push + +steps: + - name: generate-swagger-docs + image: vikunja/golang-build:latest + pull: always + environment: + GOPROXY: 'https://goproxy.kolaente.de' + commands: + - mage do-the-swag + + - name: push + pull: always + image: appleboy/drone-git-push + depends_on: + - generate-swagger-docs + settings: + author_email: "frederik@vikunja.io" + author_name: Frederick [Bot] + branch: main + commit: true + commit_message: "[skip ci] Updated swagger docs" + remote: "ssh://git@kolaente.dev:9022/vikunja/api.git" + ssh_key: + from_secret: git_push_ssh_key + --- ######## # Build a release when tagging @@ -394,6 +436,7 @@ steps: # This path does not exist. However, when we set the gopath to /go, the build fails. Not sure why. # Leaving this here until we know how to resolve this properly. GOPATH: /srv/app + GOPROXY: https://goproxy.kolaente.de commands: - export PATH=$PATH:$GOPATH/bin - go install github.com/magefile/mage @@ -407,6 +450,7 @@ steps: # This path does not exist. However, when we set the gopath to /go, the build fails. Not sure why. # Leaving this here until we know how to resolve this properly. GOPATH: /srv/app + GOPROXY: https://goproxy.kolaente.de commands: - export PATH=$PATH:$GOPATH/bin - go install github.com/magefile/mage @@ -420,6 +464,7 @@ steps: # This path does not exist. However, when we set the gopath to /go, the build fails. Not sure why. # Leaving this here until we know how to resolve this properly. GOPATH: /srv/app + GOPROXY: https://goproxy.kolaente.de commands: - export PATH=$PATH:$GOPATH/bin - go install github.com/magefile/mage @@ -506,7 +551,7 @@ steps: # Build os packages and push it to our bucket - name: build-os-packages-unstable - image: goreleaser/nfpm:v2.27.1 + image: goreleaser/nfpm:v2.33.1 pull: always commands: - apk add git go @@ -522,7 +567,7 @@ steps: depends_on: [ after-build-compress ] - name: build-os-packages-version - image: goreleaser/nfpm:v2.27.1 + image: goreleaser/nfpm:v2.33.1 pull: always commands: - apk add git go @@ -607,7 +652,7 @@ steps: - tar -xzf vikunja-theme.tar.gz - name: build - image: klakegg/hugo:0.107.0 + image: klakegg/hugo:0.111.3 pull: always commands: - cd docs @@ -731,6 +776,6 @@ steps: - failure --- kind: signature -hmac: f1743e2bb4ca8e5d8df1e222720feb4eac91e15a5ef74d4b54f1df246f2353fe +hmac: 3ad78b828f36d4473527b8c6ee0985a5bf6f290fe73b3f7381a41d8c4937ffaa ... diff --git a/.github/workflows/lockdown.yml b/.github/workflows/lockdown.yml new file mode 100644 index 0000000000..15e1426a83 --- /dev/null +++ b/.github/workflows/lockdown.yml @@ -0,0 +1,23 @@ +name: 'Repo Lockdown' + +on: + pull_request_target: + types: opened + +permissions: + issues: write + pull-requests: write + +jobs: + action: + runs-on: ubuntu-latest + steps: + - uses: dessant/repo-lockdown@v3 + with: + pr-comment: 'Hi! Thank you for your contribution. + + This repo is only a mirror and unfortunately we can''t accept PRs made here. Please re-submit your changes to [our Gitea instance](https://kolaente.dev/vikunja/api/pulls). + + Also check out the [contribution guidelines](https://vikunja.io/docs/development/#pull-requests). + + Thank you for your understanding.' diff --git a/.gitignore b/.gitignore index 6a36098284..6cf9dc87e2 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ vikunja-dump* vendor/ os-packages/ mage_output_file.go +mage-static diff --git a/.golangci.yml b/.golangci.yml index 36ce6ef4b2..24c9e5b035 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -80,6 +80,7 @@ issues: linters: - goheader - misspell + - gosmopolitan - text: "Missed string" linters: - goheader @@ -89,6 +90,19 @@ issues: - path: pkg/models/favorites\.go linters: - nilerr + - path: pkg/models/project\.go + text: "string `parent_project_id` has 3 occurrences, make it a constant" - path: pkg/models/events\.go linters: - musttag + - path: pkg/models/task_collection.go + text: 'append result not assigned to the same slice' + - text: 'string `label_id` has 3 occurrences, make it a constant' + linters: + - goconst + - text: 'string `labels` has 3 occurrences, make it a constant' + linters: + - goconst + - text: 'string `off` has 6 occurrences, make it a constant' + linters: + - goconst diff --git a/CHANGELOG.md b/CHANGELOG.md index 12cf42dc55..1992d08499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,275 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). All releases can be found on https://code.vikunja.io/api/releases. +## [0.21.0] - 2023-07-07 + +### Bug Fixes + +* *(CalDAV)* Naming +* *(api)* License (#1457) +* *(build)* Make sure the docker image can access go tools +* *(caldav)* Do not create label if it exists by title (#1444) +* *(caldav)* Incoming tasks do not get correct time zone (#1455) +* *(ci)* Pipeline dependency +* *(cli)* Rename user project command +* *(docker)* Don't chown everything in Vikunja's default root folder +* *(docs)* Added Keycloak OpenID example (#1521) +* *(docs)* Clarify error codes in swagger docs +* *(docs)* Link to usage/api +* *(docs)* Semver link (#1470) +* *(filter)* Don't try to get the real subscription for a saved filter project +* *(filters)* Return all filters with all projects, not grouped under a pseudo project +* *(filters)* Sorting tasks from filters +* *(image)* Json type of struct property (#1469) +* *(import)* Don't try to load a nonexistant attachment file +* *(lint)* Disable misspell linter on redoc +* *(migration)* Don't try to fetch task details of tasks whose projects are deleted +* *(migration)* Enable insert from structure work recursively +* *(migration)* Make file migration work with new structure +* *(migration)* Remove unused is_deleted flag from Todoist api response +* *(migration)* Remove wunderlist leftovers +* *(migration)* Remove wunderlist leftovers +* *(migration)* Remove wunderlist leftovers +* *(migration)* Rename TickTick migration +* *(migration)* Revert wrongly changed url +* *(migration)* Use correct struct +* *(project)* Don't allow un-archiving a project when its parent project is archived +* *(project)* Don't check for namespaces in overdue reminders +* *(project)* Duplicate project into parent project +* *(project)* Recursively get all users from all parent projects +* *(project)* Remove comments, clarifications, notifications about namespaces +* *(project)* Remove namespaces checks +* *(project)* Remove namespaces from creating projects +* *(project)* Remove namespaces from getting projects +* *(projects)* Delete project in the correct order +* *(projects)* Don't allow making a project child of itself +* *(projects)* Don't check if new projects are archived +* *(projects)* Don't fail to fetch a task if there's a broken subscription record associated to it +* *(projects)* Don't return child projects twice +* *(projects)* Don't try to share for nonexisting namespace +* *(projects)* Permission check now works +* *(projects)* Properly check if a user or link share is allowed to create a new project +* *(projects)* Recalculate project's position after dragging when position would be 0 +* *(projects)* Reset pagination limit when fetching subprojects +* *(projects)* Return subprojects which were shared from another user +* *(saved filters)* Don't let query parameters override saved sorting parameters +* *(spelling)* In config sample (#1489) +* *(task)* Don't build partial task identifier +* *(task)* Don't try to return a project identifier if there is no project +* *(tasks)* Don't check for namespaces in filters +* *(tasks)* Get all tasks from parent projects +* *(tasks)* Make sure task deleted notification actually has information about the deleted task +* *(tasks)* Read all tests +* *(tasks)* Return a correct task identifier if the list does not have a good one set +* *(tasks)* Sql for overdue reminders +* *(tasks)* Task relation test +* *(test)* Adjust fixture bucket and list ids +* *(test)* Adjust fixture id +* *(test)* Fixtures +* *(test)* Use correct filter id +* *(tests)* Adjust parent projects +* *(tests)* Make the tests compile again +* *(tests)* Permission tests for parent projects +* *(tests)* Subscription test fixtures +* *(tests)* Task collection fixtures +* *(tests)* Task permissions from parents +* Accept for migrations ([8edbca3](8edbca39cf9d771645d6feb05ee94eebc6403cbf)) +* Add missing error code ([f2d943f](f2d943f5c4f1b13ef565692b893da05c6669c6d0)) +* Add missing license header ([f4e12da](f4e12dab273474c0eb27f59c00faa828bb86522c)) +* Align "ID" param for Delete and Update method of Task model ([b6d5605](b6d5605ef6b2799f939d016b1572b3d43e857d4d)) +* Align "otherTaskID" param for Delete method of TaskRelation model ([ac377a7](ac377a7a5d708ef7543d99f716ceaa1ee8502649)) +* Align namespaceID param ([7ada82e](7ada82ea926556ae39d106dc85d5a05f3c1c8cd3)) +* Align task ID param ([f76bb2b](f76bb2b4a9c8a3b53bc73d0913ba94bba350f5da)) +* Check if usernames contain spaces when creating a new user ([672fb35](672fb35bcbb47e4c0331813aa837fee28f372471)) +* Compile errors ([a21bff3](a21bff3ffb8497d6e1b6c3bb50d9a9b2469f4eb0)) +* Correctly pass unix socket to xorm ([7ad256f](7ad256f6cd3e15aeafce2bc29c28c458c3abdc0a)) +* Docs auth openID method ([4f7d69a](4f7d69a108a2836e90b3c7ffe7f05247d80bfb85)) +* Don't get favorite task projects filter multiple times ([a51bbd1](a51bbd1159fb1ada5980a5b27972ccf1404641af)) +* Don't send bad request errors to sentry ([c0c523f](c0c523f0a8c83eb164febbc508ac98142d572d7a)) +* Don't try to load subscriptions for nonexistent projects ([b519462](b5194624e021360ccdec20cb58bba57c23028c3f)) +* Fetch all tasks for all projects ([353279c](353279cbff8fd6fa6b1bb81a8726a7a5a1b6b623)) +* ILIKE helper ([dff4e01](dff4e01327907d42bf0b20a20912e5e9c69dd23e)) +* Lint ([50c922b](50c922b7d1135b8f75478b89502fe0bb4c39547f)) +* Lint ([ad06903](ad0690369f39dab3683ac5ef7664bd765fa1cb18)) +* Lint ([e17b63b](e17b63b9201889946e91e7e295f31a80055c6ae4)) +* Lint ([ef779e8](ef779e8730af169101bf1ebffb8d2522e5c6b7bc)) +* Lint ([f0dcce7](f0dcce702f03f237ecde107a7ba62f61e2c3e313)) +* Lint config ([9111db2](9111db2a16df6a4eec9e3cc2021bc6fdcace9ead)) +* Lint errors ([ebc3dd2](ebc3dd2b3e72f56880320480829aead1bf554f67)) +* Make it compile again ([d79c393](d79c393e5b4e880b8b09ce5944e8247ae07c4d58)) +* Make sure Vikunja is buildable without swagger docs present ([47e4223](47e42238ef47ad6e4e90284593aae278e77c8631)) +* Make sure projects are correctly sorted ([db3c7aa](db3c7aa8b04e828fafdf10bcfd5bde8cf19e6f10)) +* Provide a proper error message when viewing a link share with an invalid token ([aa43127](aa43127e52aeb7412b13b4aaab091442dad534db)) +* Reminder fixture ([4b00f22](4b00f224d92f0c6933f6cba14433538d64545eca)) +* Remove old saved openid provider settings from cache when starting Vikunja ([9bf535d](9bf535d06f5b9bb455979b0bf3b6f0942daa1c9e)) +* Rename after rebase ([e93a5ff](e93a5ff11fee7adac2897b3251db7abbbad4bcc5)) +* Rename incorrectly named ProjectUsers method ([7e53a21](7e53a214070ee9b48fdffffcc42de9250c323e96)) +* Rename project receiver variable ([f1cbe50](f1cbe50605b46e506c3233cc8da4b325f5727c87)) +* Spelling ([fc2cc4a](fc2cc4a1555ca7e63ff902cde62380035a60ebb8)) +* Test fixtures ([06f1d2e](06f1d2e91237195f8e720d4dd55b491b91e6547d)) +* Test import ([fb818ea](fb818ea1867f8db813ff52622695fd206c21452e)) +* Trello import tests ([61a3380](61a3380a9482312eac56f4cfd436517205f601aa)) +* Typo ([4c698dc](4c698dc7c71418239e24b1756604371dcb6a2f74)) +* Typo in email template ([2dad404](2dad4042170677af3db7be85cbe978ce6be721aa)) +* Update redoc ([8916de0](8916de03666482c2319689e950d30a6fb737f239)) +* Update xgo in dockerfile to 1.20.2 ([33f0d0f](33f0d0f85a7fdfd509bc8a4aad26df95c064468c)) +* Upgrade jwt v5 ([359d051](359d0512cc7e73cdde9d4dd145332591c6743d11)) +* Use rewrite when hosting frontend files via the api ([b56e45d](b56e45d74389d38c747887d3cb2a2b295bb549c7)) +* Users_lists name in migration ([0a3fdc0](0a3fdc0344790f059140d8e482b028ffecdb3e4b)) +* Using mysql via a socket ([0a6bbc2](0a6bbc2efd6bb4468c72cff2a70cd29350a50b75)) + + +### Dependencies + +* *(deps)* Update module github.com/imdario/mergo to v0.3.14 +* *(deps)* Update github.com/arran4/golang-ical digest to 19abf92 +* *(deps)* Update goreleaser/nfpm docker tag to v2.27.1 (#1438) +* *(deps)* Update module github.com/swaggo/swag to v1.8.11 +* *(deps)* Update module github.com/imdario/mergo to v0.3.15 (#1443) +* *(deps)* Update golangci-lint to 1.52.1 +* *(deps)* Update module github.com/wneessen/go-mail to v0.3.9 +* *(deps)* Update github.com/gocarina/gocsv digest to 9a18a84 +* *(deps)* Update module github.com/swaggo/swag to v1.8.12 +* *(deps)* Update module github.com/getsentry/sentry-go to v0.20.0 +* *(deps)* Update module github.com/redis/go-redis/v9 to v9.0.3 +* *(deps)* Update goreleaser/nfpm docker tag to v2.28.0 (#1475) +* *(deps)* Update src.techknowlogick.com/xgo digest to bff48e4 (#1474) +* *(deps)* Update module golang.org/x/sys to v0.7.0 +* *(deps)* Update github.com/gocarina/gocsv digest to 6445c2b +* *(deps)* Update module golang.org/x/term to v0.7.0 +* *(deps)* Update module github.com/spf13/cobra to v1.7.0 +* *(deps)* Update module golang.org/x/image to v0.7.0 +* *(deps)* Update module golang.org/x/oauth2 to v0.7.0 +* *(deps)* Update module golang.org/x/crypto to v0.8.0 +* *(deps)* Update module github.com/prometheus/client_golang to v1.15.0 +* *(deps)* Update module github.com/lib/pq to v1.10.8 +* *(deps)* Update module github.com/go-sql-driver/mysql to v1.7.1 +* *(deps)* Update module github.com/lib/pq to v1.10.9 +* *(deps)* Update src.techknowlogick.com/xgo digest to e65295a +* *(deps)* Update github.com/arran4/golang-ical digest to f69e132 +* *(deps)* Update module github.com/redis/go-redis/v9 to v9.0.4 +* *(deps)* Update module github.com/go-testfixtures/testfixtures/v3 to v3.9.0 +* *(deps)* Update module github.com/prometheus/client_golang to v1.15.1 +* *(deps)* Update module golang.org/x/term to v0.8.0 +* *(deps)* Update src.techknowlogick.com/xgo digest to 52d704d +* *(deps)* Update module github.com/swaggo/swag to v1.16.1 +* *(deps)* Update module golang.org/x/sync to v0.2.0 +* *(deps)* Update module github.com/getsentry/sentry-go to v0.21.0 +* *(deps)* Update module golang.org/x/oauth2 to v0.8.0 +* *(deps)* Update module golang.org/x/crypto to v0.9.0 +* *(deps)* Update alpine docker tag to v3.18 +* *(deps)* Update github.com/gocarina/gocsv digest to 7f30c79 +* *(deps)* Update module github.com/magefile/mage to v1.15.0 +* *(deps)* Update github.com/gocarina/gocsv digest to 9ddd7fd +* *(deps)* Update module github.com/coreos/go-oidc/v3 to v3.6.0 +* *(deps)* Update module github.com/stretchr/testify to v1.8.3 +* *(deps)* Update module github.com/labstack/echo-jwt/v4 to v4.2.0 +* *(deps)* Update goreleaser/nfpm docker tag to v2.29.0 (#1528) +* *(deps)* Update module github.com/ulule/limiter/v3 to v3.11.2 +* *(deps)* Update module github.com/redis/go-redis/v9 to v9.0.5 +* *(deps)* Update module github.com/imdario/mergo to v0.3.16 +* *(deps)* Update module github.com/stretchr/testify to v1.8.4 +* *(deps)* Update module github.com/spf13/viper to v1.16.0 +* *(deps)* Update github.com/vectordotdev/go-datemath digest to 640a500 (#1532) +* *(deps)* Update module github.com/mattn/go-sqlite3 to v1.14.17 +* *(deps)* Update klakegg/hugo docker tag to v0.110.0 (#1538) +* *(deps)* Update golangci +* *(deps)* Update klakegg/hugo docker tag to v0.111.0 (#1539) +* *(deps)* Update klakegg/hugo docker tag to v0.111.3 (#1542) +* *(deps)* Update src.techknowlogick.com/xgo digest to 494bc06 +* *(deps)* Update goreleaser/nfpm docker tag to v2.30.1 (#1540) +* *(deps)* Update module golang.org/x/sys to v0.9.0 +* *(deps)* Update module golang.org/x/term to v0.9.0 +* *(deps)* Update module golang.org/x/image to v0.8.0 +* *(deps)* Update module golang.org/x/crypto to v0.10.0 +* *(deps)* Update module golang.org/x/oauth2 to v0.9.0 +* *(deps)* Update module golang.org/x/sync to v0.3.0 +* *(deps)* Update github.com/gocarina/gocsv digest to 2696de6 +* *(deps)* Update module github.com/prometheus/client_golang to v1.16.0 +* *(deps)* Update module github.com/getsentry/sentry-go to v0.22.0 +* *(deps)* Update github.com/gocarina/gocsv digest to 99d496c +* *(deps)* Update module github.com/imdario/mergo to v1 (#1559) +* *(deps)* Update github.com/dustinkirkland/golang-petname digest to e794b93 +* *(deps)* Update module golang.org/x/sys to v0.10.0 +* *(deps)* Update module golang.org/x/image to v0.9.0 +* *(deps)* Update module golang.org/x/term to v0.10.0 +* *(deps)* Update module golang.org/x/crypto to v0.11.0 +* *(deps)* Update module golang.org/x/oauth2 to v0.10.0 + + +### Documentation + +* Add docs for installing with sqlite in docker (#70) ([a16fd67](a16fd67b51c02e09ef6709bee9ad2b341d80cd73)) +* Add information about our Helm Chart ([22f89c1](22f89c1ccc3a281a75db9e42702604f88eb0568b)) +* Fix menu links ([1f13b5d](1f13b5d7b4041042ea3b26ac2a850784b11ac377)) +* Remove all traces of namespaces ([3b0935d](3b0935d033c6b5060f18e955acf4a647eb10721b)) +* Remove outdated information ([327bb3b](327bb3bed99e0a4c5664251e3af15accf1a13062)) +* Update error references to list ([259cf7d](259cf7d25bbb7a289fe9569c81c6f7d3855543bf)) +* Update prometheus docs for clarity (#1458) +* Update references to list ([8dc6c95](8dc6c95333b38eb83c8053c628d05599e79dd27e)) + + +### Features + +* *(caldav)* Sync Reminders / VALARM (#1415) +* *(docs)* Change order of sections in nav (#1471) +* *(docs)* Various improvements +* *(kanban)* Return the total task count per bucket +* *(migration)* Ignore namespace changes +* *(migration)* Use new structure for migration +* *(projects)* Add parent project, migrate namespaces +* *(projects)* Check all parent projects for permissions +* *(projects)* Check parent project when checking archived status +* *(projects)* Cleanup namespace leftovers +* *(projects)* Don't allow deleting or archiving the default project +* *(projects)* Get all projects recursively +* *(projects)* Remove namespaces +* *(projects)* Return a favorites pseudo project when the user has favorite tasks +* *(subscriptions)* Make sure all subscriptions are inherited properly +* *(users)* Don't hide user email if it was the search request* Rename lists to projects ([349e6a5](349e6a59050a0beba82a7f626c2f72f6b8c88dde)) +* Add logging options to mailer settings ([9590b82](9590b82c11852666524eeab562988226574a1b1c)) +* Add relative Reminders (#1427) ([3f5252d](3f5252dc24a3dea89b2e049ccb1f9d0a59a89a88)) +* Add token example ([4417223](441722372af3349b677dc013b1863e678b0e7158)) +* Allow saving frontend settings via api ([04e2c51](04e2c51fac24a045abe1a85c8b661b6bc628686c)) +* Allow to find users with access to a project more freely ([a7231e1](a7231e197e3d86d3ef27fad89ae60863d25b5df0)) +* Check for cycles when creating or updating a project's parent ([9011894](9011894a2975d9d112dc3db453739e13261c0716)) +* Generate swagger docs at build time ([efa24ce](efa24cec44865c5a8ab42a106deeb331ad1bed91)) +* Improve relation kinds docs ([b826c13](b826c13f385b24ed1b33b8890cc5cdd5fe8b8f22)) +* Make the new inbox project the default ([0110f93](0110f933134af0460d9fed9d652148c98e94b6cd)) +* Migrate lists to projects in db identifiers ([2fba7bd](2fba7bdf02983e5cf7def09803def4cbf830f53b)) +* Remove ChildProjects project property ([edcb806](edcb806421c2181a8b85aed5b53e8da6350b9630)) +* Remove namespaces, make projects infinitely nestable (#1362) ([82beb3b](82beb3bf671ca0670b714160f0b4d9c186dfe120)) +* Rename all list files ([8f4abd2](8f4abd2fe86e7a23d80bc5ebc4fc1ae75e1b78fb)) +* Rename lists to projects ([47c2da7](47c2da7f1856e95956cdb968fa95295d3441a9f6)) +* Rename lists to projects ([96a0f5e](96a0f5e169c9e8f8d20e3fe1d9de5eecead53ac9)) +* Rename lists to projects ([fc73c84](fc73c84bf2b9a7cbd2f6cbd2a83ea9ccc3fd58fd)) +* Rename lists to projects everywhere (#1318) ([869d4a3](869d4a336cb122df894acf040e02b6b2ba786fdb)) + + +### Miscellaneous Tasks + +* *(changelog)* Fix spelling +* *(docs)* Add info about `/buckets` sorting +* *(docs)* Move login and register routes to auth category in api docs +* *(docs)* Update error docs +* *(docs)* Update list -> project +* *(docs/translation)* Remove mention of weblate +* *(export)* Remove unused events +* *(project)* Fmt +* *(projects)* use a slice again ([3e8d1b3](3e8d1b3667ccfb2960650a4506771ec3c9b3a970)) +* *(test)* Show table content when db assertion failed +* Cleanup ([7a9611c](7a9611c2daa41ec2da135a2a4e804551e4ab8ff2)) +* Disable false-positive linter for generated docs ([076e857](076e857507a4cf59e0b0399a2e51a8d8baa03065)) +* Fix comment url ([5856f21](5856f21f31fe7b81e7ffd203f70460785955411c)) +* Fix spelling ([cd90db3](cd90db3117a7fa40175ecebd3ca37cc94a46e1ee)) +* Generate swagger docs ([55410ea](55410ea73d50f5bc124eaf411c77125024b6fefa)) +* Go mod tidy ([93056da](93056da792dafa70f91f7d114669997b3f93f7f1)) +* Go mod tidy ([e5dde31](e5dde315fb6a7163546b9f88ebafacc886744db3)) +* Remove cache options ([d83e3a0](d83e3a0a037b9a4d40ce22c8c51932eb23963ac2)) +* Remove reminderDates after frontend is migrated to reminders (#1448) ([4a4ba04](4a4ba041e0f3e9c71dd4844d5191c9cbe4e4e3b7)) +* Rename files (fix typo) ([6aadaaa](6aadaaaffc1fff4a94e35e8fa3f6eab397cbc3ce)) + + ## [0.20.4] - 2023-03-12 ### Bug Fixes @@ -165,7 +434,7 @@ All releases can be found on https://code.vikunja.io/api/releases. * *(background)* Add Last-Modified header (#1376) * *(caldav)* Add support for repeating tasks -* *(caldav)* Export Labels to Caldav (#1409) +* *(caldav)* Export Labels to CalDAV (#1409) * *(caldav)* Import caldav categories as Labels (#1413) * *(migrators)* Remove wunderlist (#1346) * *(release)* Use compressed binaries for package releases @@ -1427,7 +1696,7 @@ All releases can be found on https://code.vikunja.io/api/releases. * Add option to disable totp for everyone * Add plausible to docs * Add restarting commands to all example docker compose files -* Add seperate docker pipeline for amd64 and arm +* Add separate docker pipeline for amd64 and arm * Add test mail command (#571) * Add todoist migrator to available migrators in info endpoint if it is enabled * Add unsplash image proxy for images and thumbnails @@ -1620,7 +1889,7 @@ All releases can be found on https://code.vikunja.io/api/releases. * Update Renovate Configuration (#161) * Update src.techknowlogick.com/xgo commit hash to bb0faa3 (#279) * Update src.techknowlogick.com/xgo commit hash to c43d4c4 (#224) -* Update xorm redis cacher to use the xorm logger instead of a special seperate one +* Update xorm redis cacher to use the xorm logger instead of a special separate one * Update xorm to v1 (#323) ## [0.12] - 2020-04-04 @@ -1761,7 +2030,7 @@ All releases can be found on https://code.vikunja.io/api/releases. ### Added -* Better Caldav support (#73) +* Better CalDAV support (#73) * Added settings for max open/idle connections and max connection lifetime (#74) * /info endpoint (#85) * Added http endpoint to list all users on a list (#87) @@ -1906,4 +2175,3 @@ Misc bugfixes and improvements to the build process ## [0.2] - 2018-10-17 ## [0.1] - 2018-09-20 - diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..e6a315beca --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +# Contribution Guidelines + +Please check out the guidelines on https://vikunja.io/docs/development/ diff --git a/Dockerfile b/Dockerfile index 39f0b3cdd2..5e02d1d78f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ # │─││ │││ │ │ # ┘─┘┘─┘┘┘─┘┘─┘ -FROM --platform=$BUILDPLATFORM techknowlogick/xgo:go-1.20.0 AS builder +FROM --platform=$BUILDPLATFORM techknowlogick/xgo:go-1.21.x AS builder RUN go install github.com/magefile/mage@latest && \ mv /go/bin/mage /usr/local/go/bin @@ -13,7 +13,9 @@ COPY . ./ ARG TARGETOS TARGETARCH TARGETVARIANT -RUN mage build:clean && \ +ENV GOPROXY https://goproxy.kolaente.de +RUN export PATH=$PATH:$GOPATH/bin && \ + mage build:clean && \ mage release:xgo "${TARGETOS}/${TARGETARCH}/${TARGETVARIANT}" # ┬─┐┬ ┐┌┐┐┌┐┐┬─┐┬─┐ @@ -23,7 +25,7 @@ RUN mage build:clean && \ # The actual image # Note: I wanted to use the scratch image here, but unfortunatly the go-sqlite bindings require cgo and # because of this, the container would not start when I compiled the image without cgo. -FROM alpine:3.16 AS runner +FROM alpine:3.18 AS runner LABEL maintainer="maintainers@vikunja.io" WORKDIR /app/vikunja ENTRYPOINT [ "/sbin/tini", "-g", "--", "/entrypoint.sh" ] diff --git a/README.md b/README.md index c6ed8aaa83..8f72138608 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://drone.kolaente.de/api/badges/vikunja/api/status.svg)](https://drone.kolaente.de/vikunja/api) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](LICENSE) -[![Download](https://img.shields.io/badge/download-v0.20.4-brightgreen.svg)](https://dl.vikunja.io) +[![Download](https://img.shields.io/badge/download-v0.21.0-brightgreen.svg)](https://dl.vikunja.io) [![Docker Pulls](https://img.shields.io/docker/pulls/vikunja/api.svg)](https://hub.docker.com/r/vikunja/api/) [![Swagger Docs](https://img.shields.io/badge/swagger-docs-brightgreen.svg)](https://try.vikunja.io/api/v1/docs) [![Go Report Card](https://goreportcard.com/badge/kolaente.dev/vikunja/api)](https://goreportcard.com/report/kolaente.dev/vikunja/api) @@ -26,13 +26,7 @@ If you find any security-related issues you don't want to disclose publicly, ple ## Features -* Create TODO lists with tasks - * Reminder for tasks -* Namespaces: A "group" which bundles multiple lists -* Share lists and namespaces with teams and users with granular permissions -* Plenty of details for tasks - -See [the features page](https://vikunja.io/en/features/) on our website for a more exaustive list or +See [the features page](https://vikunja.io/features/) on our website for a more exaustive list or try it on [try.vikunja.io](https://try.vikunja.io)! ## Docs @@ -58,4 +52,4 @@ Fork -> Push -> Pull-Request. Also see the [dev docs](https://vikunja.io/docs/de ## License -This project is licensed under the AGPLv3 License. See the [LICENSE](LICENSE) file for the full license text. +This project is licensed under the AGPLv3 License. See the [LICENSE](LICENSE) file for the full license text. \ No newline at end of file diff --git a/REST-Tests/attachment_from_scratch.sh b/REST-Tests/attachment_from_scratch.sh deleted file mode 100755 index 08745b736d..0000000000 --- a/REST-Tests/attachment_from_scratch.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -curl -X POST http://localhost:3456/api/v1/register -H 'Content-Type: application/json' -d '{"username":"demo","password":"demo","email":"demo@vikunja.io"}' -BEARER=`curl -X POST -H 'Content-Type: application/json' -d '{"username": "demo", "password":"demo"}' localhost:3456/api/v1/login | jq -r '.token'` - -echo "Bearer: $BEARER" - -curl -X POST localhost:3456/api/v1/tokenTest -H "Authorization: Bearer $BEARER" - -curl -X PUT localhost:3456/api/v1/namespaces/1/lists -H 'Content-Type: application/json' -H "Authorization: Bearer $BEARER" -d '{"title":"lorem"}' -curl -X PUT localhost:3456/api/v1/lists/1 -H 'Content-Type: application/json' -H "Authorization: Bearer $BEARER" -d '{"text":"lorem"}' -curl -X PUT -H "Authorization: Bearer $BEARER" localhost:3456/api/v1/tasks/1/attachments -F 'files=@/home/konrad/Pictures/Wallpaper/greg-rakozy-_Q4mepyyjMw-unsplash.jpg' diff --git a/REST-Tests/auth.http b/REST-Tests/auth.http deleted file mode 100644 index 696b19678b..0000000000 --- a/REST-Tests/auth.http +++ /dev/null @@ -1,29 +0,0 @@ -### Authorization by token, part 1. Retrieve and save token. -POST http://localhost:8080/api/v1/login -Content-Type: application/json - -{ - "username": "user3", - "password": "1234" -} - -> {% client.global.set("auth_token", response.body.token); %} - -### Register - -POST http://localhost:8080/api/v1/register -Content-Type: application/json - -{ - "username": "user", - "password": "1234", - "email": "5@knt.li" -} - -### -# Token test -POST http://localhost:8080/api/v1/tokenTest -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -### diff --git a/REST-Tests/labels.http b/REST-Tests/labels.http deleted file mode 100644 index 94b760e0c1..0000000000 --- a/REST-Tests/labels.http +++ /dev/null @@ -1,70 +0,0 @@ -# Get all labels -GET http://localhost:8080/api/v1/labels -Authorization: Bearer {{auth_token}} - -### -# Add a new label -PUT http://localhost:8080/api/v1/labels -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "title": "test5" -} - -### -# Delete a label -DELETE http://localhost:8080/api/v1/labels/6 -Authorization: Bearer {{auth_token}} - -### -# Update a label -POST http://localhost:8080/api/v1/labels/1 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "title": "testschinkenbrot", - "description": "käsebrot" -} - -### -# Get one label -GET http://localhost:8080/api/v1/labels/1 -Authorization: Bearer {{auth_token}} - -### -# Get all labels on a task -GET http://localhost:8080/api/v1/tasks/3565/labels -Authorization: Bearer {{auth_token}} - -### -# Add a new label to a task -PUT http://localhost:8080/api/v1/tasks/35236365/labels -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "label_id": 1 -} - -### -# Delete a label from a task -DELETE http://localhost:8080/api/v1/tasks/3565/labels/1 -Authorization: Bearer {{auth_token}} - -### -# Add a new label to a task -POST http://localhost:8080/api/v1/tasks/3565/labels/bulk -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "labels": [ - {"id": 1}, - {"id": 2}, - {"id": 3} - ] -} - -### \ No newline at end of file diff --git a/REST-Tests/lists.http b/REST-Tests/lists.http deleted file mode 100644 index a7e716be92..0000000000 --- a/REST-Tests/lists.http +++ /dev/null @@ -1,177 +0,0 @@ -# Get all lists -GET http://localhost:8080/api/v1/namespaces/35/lists -Authorization: Bearer {{auth_token}} - -### - -# Get one list -GET http://localhost:8080/api/v1/lists/3 -Authorization: Bearer {{auth_token}} - -### - -# Add a new list -PUT http://localhost:8080/api/v1/namespaces/35/lists -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "title": "test" -} - -### - -# Add a new item -PUT http://localhost:8080/api/v1/lists/1 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "text": "Task", - "description": "Schinken" -} - -### - -# Delete a task from a list -DELETE http://localhost:8080/api/v1/lists/14 -Authorization: Bearer {{auth_token}} - -### - -# Get all teams who have access to that list -GET http://localhost:8080/api/v1/lists/28/teams -Authorization: Bearer {{auth_token}} - -### - -# Give a team access to that list -PUT http://localhost:8080/api/v1/lists/1/teams -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"team_id":2, "right": 1} - -### - -# Update a teams access to that list -POST http://localhost:8080/api/v1/lists/1/teams/2 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"right": 0} - -### - -# Delete a team from a list -DELETE http://localhost:8080/api/v1/lists/10235/teams/1 -Authorization: Bearer {{auth_token}} - -### - -# Delete a team from a list -DELETE http://localhost:8080/api/v1/lists/10235/teams/1 -Authorization: Bearer {{auth_token}} - -### - -# Get all users who have access to that list -GET http://localhost:8080/api/v1/lists/28/users -Authorization: Bearer {{auth_token}} - -### - -# Give a user access to that list -PUT http://localhost:8080/api/v1/lists/3/users -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"userID":"user4", "right":1} - -### - -# Update a users access to that list -POST http://localhost:8080/api/v1/lists/30/users/3 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"right":2} - -### - -# Delete a user from a list -DELETE http://localhost:8080/api/v1/lists/28/users/3 -Authorization: Bearer {{auth_token}} - -### - -# Get all pending tasks -GET http://localhost:8080/api/v1/tasks/all -Authorization: Bearer {{auth_token}} - -### - -# Get all pending tasks with priorities -GET http://localhost:8080/api/v1/tasks/all?sort=priorityasc -Authorization: Bearer {{auth_token}} - -### - -# Get all pending tasks in a range -GET http://localhost:8080/api/v1/tasks/all/dueadateasc/1546784000/1548784000 -Authorization: Bearer {{auth_token}} - -### - -# Get all pending tasks in caldav -GET http://localhost:8080/api/v1/tasks/caldav -#Authorization: Bearer {{auth_token}} - -### - -# Update a task -POST http://localhost:8080/api/v1/tasks/3565 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "priority": 0 -} - -### - -# Bulk update multiple tasks at once -POST http://localhost:8080/api/v1/tasks/bulk -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "task_ids": [3518,3519,3521], - "text":"bulkupdated" -} - -### -# Get all assignees -GET http://localhost:8080/api/v1/tasks/3565/assignees -Authorization: Bearer {{auth_token}} - -### - -# Add a bunch of assignees -PUT http://localhost:8080/api/v1/tasks/3565/assignees/bulk -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "assignees": [ - {"id": 17} - ] -} - -### - -# Get all users who have access to a list -GET http://localhost:8080/api/v1/lists/3/users -Authorization: Bearer {{auth_token}} - -### diff --git a/REST-Tests/namespaces.http b/REST-Tests/namespaces.http deleted file mode 100644 index d0eef8f116..0000000000 --- a/REST-Tests/namespaces.http +++ /dev/null @@ -1,71 +0,0 @@ -# Get all namespaces -GET http://localhost:8080/api/v1/namespaces -Authorization: Bearer {{auth_token}} - -### - -# Get one namespaces -GET http://localhost:8080/api/v1/namespaces/-1 -Authorization: Bearer {{auth_token}} - -### - -# Get all users who have access to that namespace -GET http://localhost:8080/api/v1/namespaces/12/users -Authorization: Bearer {{auth_token}} - -### - -# Give a user access to that namespace -PUT http://localhost:8080/api/v1/namespaces/1/users -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"user_id":3, "right": 0} - -### - -# Update a users access to that namespace -POST http://localhost:8080/api/v1/namespaces/1/users/3 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"right": 2} - -### - -# Delete a user from a namespace -DELETE http://localhost:8080/api/v1/namespaces/1/users/2 -Authorization: Bearer {{auth_token}} - -### - -# Get all teams who have access to that namespace -GET http://localhost:8080/api/v1/namespaces/1/teams -Authorization: Bearer {{auth_token}} - -### - -# Give a team access to that namespace -PUT http://localhost:8080/api/v1/namespaces/1/teams -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"team_id":3, "right": 0} - -### - -# Update a teams access to that namespace -POST http://localhost:8080/api/v1/namespaces/1/teams/1 -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{"right": 0} - -### - -# Delete a team from a namespace -DELETE http://localhost:8080/api/v1/namespaces/1/teams/2 -Authorization: Bearer {{auth_token}} - -### \ No newline at end of file diff --git a/REST-Tests/teams.http b/REST-Tests/teams.http deleted file mode 100644 index bfbf5db642..0000000000 --- a/REST-Tests/teams.http +++ /dev/null @@ -1,29 +0,0 @@ -# Get all teams -GET http://localhost:8080/api/v1/teams -Authorization: Bearer {{auth_token}} - -### - -# Get one team -GET http://localhost:8080/api/v1/teams/28 -Authorization: Bearer {{auth_token}} - -### - -# Add a new member to that team -PUT http://localhost:8080/api/v1/teams/28/members -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "user_id": 2 -} - -### - -# Delete a member from a team -DELETE http://localhost:8080/api/v1/teams/28/members/2 -Authorization: Bearer {{auth_token}} - -### - diff --git a/REST-Tests/users.http b/REST-Tests/users.http deleted file mode 100644 index e33f4a04b8..0000000000 --- a/REST-Tests/users.http +++ /dev/null @@ -1,53 +0,0 @@ - -# Get all users -GET http://localhost:8080/api/v1/user -Authorization: Bearer {{auth_token}} - -###### -# Search for a user -GET http://localhost:8080/api/v1/users?s=3 -Authorization: Bearer {{auth_token}} - -### - -## Update password - -POST http://localhost:8080/api/v1/user/password -Authorization: Bearer {{auth_token}} -Content-Type: application/json - -{ - "old_password": "1234", - "new_password": "1234" -} - -### Request a password to reset a password -POST http://localhost:8080/api/v1/user/password/token -Content-Type: application/json -Accept: application/json - -{ - "email": "k@knt.li" -} - -### Request a token to reset a password -POST http://localhost:8080/api/v1/user/password/reset -Content-Type: application/json -Accept: application/json - -{ - "token": "eAsZzakgqARnjzXHqsHqZtSUKuiOhoJjHANhgTxUIDBSalhbtdpAdLeywGXzVDBuRQGNpHdMxoHXhLVSlzpJsFvuoJgMdkhRhkNhaQXfufuZCdtUlerZHSJQLgYMUryHIxIREcmZLtWoZVrYyARkCvkyFhcGtoCwQOEjAOEZMQQuxTVoGYfAqcfNggQnerUcXCiRIgRtkusXSnltomhaeyRwAbrckXFeXxUjslgplSGqSTOqJTYuhrSzAVTwNvuYyvuXLaZoNnJEyeVDWlRydnxfgUQjQZOKwCBRWVQPKpZhlslLUyUAMsRQkHITkruQCjDnOGCCRsSNplbNCEuDmMfpWYHSQAcQIDZtbQWkxzpfmHDMQvvKPPrxEnrTErlvTfKDKICFYPQxXNpNE", - "new_password": "1234" -} - -### Confirm a users email address - -POST http://localhost:8080/api/v1/user/confirm -Content-Type: application/json -Accept: application/json - -{ - "token": "" -} - -### diff --git a/code-header-template.txt b/code-header-template.txt index 9a2d19a768..b3c5b973cd 100644 --- a/code-header-template.txt +++ b/code-header-template.txt @@ -1,5 +1,5 @@ Vikunja is a to-do list application to facilitate your life. -Copyright 2018-2021 Vikunja and contributors. All rights reserved. +Copyright 2018-present Vikunja and contributors. All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public Licensee as published by diff --git a/config.yml.sample b/config.yml.sample index 44fb3d44c5..954118d9cd 100644 --- a/config.yml.sample +++ b/config.yml.sample @@ -3,7 +3,7 @@ service: # Default is a random token which will be generated at each startup of vikunja. # (This means all already issued tokens will be invalid once you restart vikunja) JWTSecret: "" - # The duration of the issed JWT tokens in seconds. + # The duration of the issued JWT tokens in seconds. # The default is 259200 seconds (3 Days). jwtttl: 259200 # The duration of the "remember me" time in seconds. When the login request is made with @@ -46,7 +46,7 @@ service: sentrydsn: '' # If not empty, this will enable `/test/{table}` endpoints which allow to put any content in the database. # Used to reset the db before frontend tests. Because this is quite a dangerous feature allowing for lots of harm, - # each request made to this endpoint neefs to provide an `Authorization: ` header with the token from below.
+ # each request made to this endpoint needs to provide an `Authorization: ` header with the token from below.
# **You should never use this unless you know exactly what you're doing** testingtoken: '' # If enabled, vikunja will send an email to everyone who is either assigned to a task or created it when a task reminder @@ -59,6 +59,9 @@ service: # The maximum size clients will be able to request for user avatars. # If clients request a size bigger than this, it will be changed on the fly. maxavatarsize: 1024 + # If set to true, the frontend will show a big red warning not to use this instance for real data as it will be cleared out. + # You probably don't need to set this value, it was created specifically for usage on [try](https://try.vikunja.io). + demomode: false database: # Database type to use. Supported types are mysql, postgres and sqlite. @@ -77,7 +80,7 @@ database: maxopenconnections: 100 # Sets the maximum number of idle connections to the db. maxidleconnections: 50 - # The maximum lifetime of a single db connection in miliseconds. + # The maximum lifetime of a single db connection in milliseconds. maxconnectionlifetime: 10000 # Secure connection mode. Only used with postgres. # (see https://pkg.go.dev/github.com/lib/pq?tab=doc#hdr-Connection_String_Parameters) @@ -91,29 +94,31 @@ database: # Enable SSL/TLS for mysql connections. Options: false, true, skip-verify, preferred tls: false -cache: - # If cache is enabled or not +typesense: + # Whether to enable the Typesense integration. If true, all tasks will be synced to the configured Typesense + # instance and all search and filtering will run through Typesense instead of only through the database. + # Typesense allows fast fulltext search including fuzzy matching support. It may return different results than + # what you'd get with a database-only search. enabled: false - # Cache type. Possible values are "keyvalue", "memory" or "redis". - # When choosing "keyvalue" this setting follows the one configured in the "keyvalue" section. - # When choosing "redis" you will need to configure the redis connection seperately. - type: keyvalue - # When using memory this defines the maximum size an element can take - maxelementsize: 1000 + # The url to the Typesense instance you want to use. Can be hosted locally or in Typesense Cloud as long + # as Vikunja is able to reach it. + url: '' + # The Typesense API key you want to use. + apikey: '' redis: # Whether to enable redis or not enabled: false # The host of the redis server including its port. host: 'localhost:6379' - # The password used to authenicate against the redis server + # The password used to authenticate against the redis server password: '' # 0 means default database db: 0 cors: # Whether to enable or disable cors headers. - # Note: If you want to put the frontend and the api on seperate domains or ports, you will need to enable this. + # Note: If you want to put the frontend and the api on separate domains or ports, you will need to enable this. # Otherwise the frontend won't be able to make requests to the api through the browser. enable: true # A list of origins which may access the api. These need to include the protocol (`http://` or `https://`) and port, if any. @@ -168,6 +173,10 @@ log: events: "off" # The log level for event log messages. Possible values (case-insensitive) are ERROR, INFO, DEBUG. eventslevel: "info" + # Whether or not to log mail log messages. This will not log mail contents. Possible values are stdout, stderr, file or off to disable mail-related logging. + mail: "off" + # The log level for mail log messages. Possible values (case-insensitive) are ERROR, WARNING, INFO, DEBUG. + maillevel: "info" ratelimit: # whether or not to enable the rate limit @@ -206,7 +215,7 @@ migration: # Note that the vikunja frontend expects this to be /migrate/todoist redirecturl: /migrate/todoist trello: - # Wheter to enable the trello migrator or not + # Whether to enable the trello migrator or not enable: false # The client id, required for making requests to the trello api # You need to register your vikunja instance at https://trello.com/app-key (log in before you visit that link) to get this @@ -222,7 +231,7 @@ migration: enable: false # The client id, required for making requests to the microsoft graph api # See https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app#register-an-application - # for information about how to register your vikuinja instance. + # for information about how to register your Vikunja instance. clientid: # The client secret, also required for making requests to the microsoft graph api clientsecret: @@ -265,7 +274,7 @@ legal: # Key Value Storage settings # The Key Value Storage is used for different kinds of things like metrics and a few cache systems. keyvalue: - # The type of the storage backend. Can be either "memory" or "redis". If "redis" is chosen it needs to be configured seperately. + # The type of the storage backend. Can be either "memory" or "redis". If "redis" is chosen it needs to be configured separately. type: "memory" auth: @@ -280,7 +289,7 @@ auth: # If the email is not public in those cases, authenticating will fail. # **Note 2:** The frontend expects to be redirected after authentication by the third party # to /auth/openid/. Please make sure to configure the redirect url with your third party - # auth service accordingy if you're using the default vikunja frontend. + # auth service accordingly if you're using the default vikunja frontend. # Take a look at the [default config file](https://kolaente.dev/vikunja/api/src/branch/main/config.yml.sample) for more information about how to configure openid authentication. openid: # Enable or disable OpenID Connect authentication @@ -306,7 +315,7 @@ auth: # Prometheus metrics endpoint metrics: - # If set to true, enables a /metrics endpoint for prometheus to collect metrics about Vikunja. + # If set to true, enables a /metrics endpoint for prometheus to collect metrics about Vikunja. You can query it from `/api/v1/metrics`. enabled: false # If set to a non-empty value the /metrics endpoint will require this as a username via basic auth in combination with the password below. username: @@ -333,7 +342,17 @@ defaultsettings: default_project_id: 0 # Start of the week for the user. `0` is sunday, `1` is monday and so on. week_start: 0 - # The language of the user interface. Must be an ISO 639-1 language code. Will default to the browser language the user uses when signing up. + # The language of the user interface. Must be an ISO 639-1 language code followed by an ISO 3166-1 alpha-2 country code. Check https://kolaente.dev/vikunja/frontend/src/branch/main/src/i18n/lang for a list of possible languages. Will default to the browser language the user uses when signing up. language: # The time zone of each individual user. This will affect when users get reminders and overdue task emails. timezone: