mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-05-08 21:08:04 -05:00
Closed
opened 2026-04-20 16:46:32 -05:00 by GiteaMirror
·
9 comments
No Branch/Tag Specified
main
renovate/dev-dependencies
claude/analyze-beans-project-9VxoS
feat-huma-api-v2-migration
feat-v2-foundation
spike-huma-openapi3
claude/investigate-swagger3-support-nyyUa
feat-list-view-buckets
ci-mysql-8-test
codex/analyze-codebase-for-email-task-feature
feat-project-templates
csv-import-feature
claude/email-reply-comments-wpdcQ
fix-oidc-pkce-support
fix/overview-subtasks-expand
feat/bucket-select-task-detail
feat-soft-delete-projects
claude/review-bot-design-plan-cf5C3
claude/project-scoped-api-tokens-KTqR3
claude/explore-openclaw-integration-KQEzg
claude/project-scoped-api-tokens-yv5KS
fix-duplicate-close-button
feat-list-view-sorting
feat/official-vite-sentry-plugin
feat/highlight-overdue-tasks
feat/add-enter-key-form-submission-handling
feat/TipTap-nits
feat/update-caldavtimetotimestamp-parsing
feat-phosphor-icons
wip-plans
claude/investigate-issue-2173-llKme
fix-description-text-drag
feat-custom-keyboard-shortcuts
pr-1845-ci
codex/fix-drag-and-drop-behavior-inconsistency
copilot/add-clickable-labels-for-filtering
copilot/fix-issue-1786
playwright-migration
fix-kanban-repeating-wip
copilot/fix-1498
feature/replace-axios
codex/upgrade-to-tailwind-4.1.8-using-pnpm
codex/add-cypress-test-for-avatar-types
feature/biome
feature/oxc
codex/update-flexsearch-to-0.8.205
4r6ni9-codex/fix-deprecated-sass-@import-usage
codex/fix-deprecated-sass-@import-usage
codex/add-cypress-test-for-task-list-refresh-fix
codex/fix-quick-add-magic-not-adding-tasks
codex/fix-all-type-errors
codex/fix-mimetype-for-docs.json
feature/caldav-from-scratch
feature/gh-actions-hetzner
fix-ci
feat/new-logger
jyte-better-dev-config
feat/add-team-member-with-enter
fix/button-and-icon-types
fix/notifications-component-name-collision
feature/null-time
renovate/tailwindcss-4.x
feature/unplugin-vue-router
fix/deprecated-import
feature/zod-schema
renovate/golangci-golangci-lint-1.x
fix/tiptap-editor-reactive-destructuring
release/0.24
feat/improve-add-task
fix/saved-filter-search
feat/webp-and-avif-attachment-previews
feature/migrate-back-to-bulma
fix/sass-add-missing-list-import
feature/sticky-demo-bar
fix/gantt-view-switch
feature/typesense-position-join
feature/focus-visible
dependencies/golangci-lint
feature/better-filter-syntax
fix/tiptap-task-list
renovate/github.com-golang-jwt-jwt-v4-5.x
feature/hide-forbidden-related-tasks
renovate/golang-1.x
release/0.20
release/0.17
release/0.16
release/0.15
release/0.14
v2.3.0
v2.2.2
v2.2.1
v2.2.0
v2.1.0
v2.0.0
v1.1.0
v1.0.0
v1.0.0-rc4
v1.0.0-rc3
v1.0.0-rc2
v1.0.0-rc1
v1.0.0-rc0
v0.24.6
v0.24.5
v0.24.4
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.0
v0.22.1
v0.22.0
0.21.0
v0.21.0
v0.20.4
v0.20.5
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.2
v0.19.1
v0.19.0
vue3
v0.18.1
v0.18.0
v0.17.1
v0.17.0
v0.16.1
v0.16.0
v0.15.1
v0.15.0
v0.14.1
v0.14.0
v0.13.1
v0.13
v0.12
v0.11
v0.10
v0.9
v0.8
v0.7
v0.6
v0.5
v0.4
v0.3
v0.2
v0.1
Labels
Clear labels
area/api
area/attachments
area/auth
area/avatars
area/backup-restore
area/caldav
area/calendar-view
area/comments
area/config
area/database
area/desktop
area/docker
area/email
area/favorites
area/filters
area/frontend
area/gantt
area/i18n
area/import-export
area/internal-code
area/kanban
area/labels
area/list-view
area/mobile
area/notifications
area/permissions
area/projects
area/pwa
area/recurring-tasks
area/reminders
area/search
area/shortcuts
area/subtasks
area/sync
area/table-view
area/task-editor
area/task-metadata
area/task-relations
area/teams
area/theming
area/time-tracking
area/typesense
area/views
area/webhooks
bug
changes requested
concern/accessibility
concern/performance
concern/regression
concern/ux
confirmed
db/mysql
dependencies
enhancement
good first issue
help wanted
integration/inbound
integration/outbound
kind/bug
kind/feature
needs reproduction
pull-request
question
security
support
upstream issue
waiting for reply
wontfix
Mirrored from GitHub Pull Request
No Label
area/caldav
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/vikunja#6168
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @vikunja-bot on GitHub (Apr 1, 2025).
Original GitHub issue: https://github.com/go-vikunja/vikunja/issues/475
Original issue by profi248 on 2020-12-28T15:49:27.000Z
[caldav]
I'm trying to add Vikunja to iOS via CalDAV, and it mostly doesn't work. Adding an account works, and listing of lists worked fine once, after that it only showed one list (the last one). Listing of tasks on a list didn't work at all. Adding a task worked, except when it had a specified timestamp. In that case it failed with a timestamp parsing error (bottom of the log).
Everything was tested in native iOS 14.3 Reminders app.
Log from the server is below, there are a lot of failures with PROPPATCH, and some timestamp parsing errors.
Vikunja version v0.15.0+71-be7b53b9bc
Original issue on Gitea
@kolaente commented on 2020-12-28T17:54:08.000Z:
The
PROPPATCHmethods don't have a handler, hence the errors in the log. This could be related to the issues you described.I can see some more 500 errors which do not seem to be related to date parsing errors.
There should be more logging available - could you set the log level to
debug, restart vikunja, do again what you did and then send the logs? (obfuscate any private data before sending)profi248 commented on 2020-12-28T18:23:03.000Z:
Here you go, I hope it's useful. Some
ParseInterrors showed up now.@kolaente commented on 2021-04-15T21:55:38.000Z:
Is this still an issue? Can you reproduce it with the latest version on the demo?
profi248 commented on 2021-04-15T22:34:10.000Z:
Just tried it out, displaying of lists still doesn't work properly, after the initial load, only the last on shows up. Tasks in lists are still not shown. Adding a task with a timestamp does sort of work, but the timestamp is discarded.
fivetwoseven commented on 2021-05-10T17:49:25.000Z:
I'm having issues with the iOS Reminders as well. The first time I add the CalDAV account, the list shows up but shows blank. If I add a task on the phone, it shows online. Nothing added online shows on the phone, however. And after a bit of time, all tasks disappear on the phone. Happy to submit any information needed, I just need some guidance on how/where to set the log level to debug. I am using Portainer and running Vikunja in Docker.
@kolaente commented on 2021-05-10T20:22:55.000Z:
@fivetwoseven I guess it would be worth a try if you would set the log level to
debug. For portainer I think the best way to set this would be through an env variableVIKUNJA_LOG_LEVEL=debug(been a while since I've used portainer but iirc you can set env variables there?).@kolaente commented on 2021-07-11T14:35:51.000Z:
So I finally got around testing this with an ios device. Here's what I found.
I first tried to connect it through the local wifi to my dev instance running locally. That did not work. I only got an error "this did not work" and this in the Vikunja api logs:
Status 401 means "unauthorized". That's the status a client gets when they don't send their basic auth credentials. In combination with the very fast response (40µs) it looks like the iOS implementation simply did not send any client credentials.
However, also sends this header in case the authentication credentials were missing:
Www-Authenticate: basic realm=Restricted. That essentially means "hey please come back with proper basic auth credentials". And yet, iOS did not come back, instead it tried a few other urls:As you can see from the status codes, with no success. It just gave up when the first try did not succeed.
Next, I tried connecting to try. And that seemed to have worked, creating the account in the ios settings worked. In the logs I was able to see it also tried to connect without any credentials first but then provided them when that did not work:
I suspect that's due to try being available over https while my local dev instance isn't. That should not be an issue but it looks like it is.
After that it did a bunch of requests to get all lists:
And they all showed up:
But without any tasks. When I tried to create a task that did not work either.
Another interesting thing to note is there's a bunch of failing
PROPPATCHrequests:I suspect these are the actual cause of lists going missing (maybe iOS removes a list when it tried to do something with it and that failed?)
So in conclusion, I'm not sure how to proceed with this problem. I can see there's issues with it but I can't reproduce it all the time (the lists were all there) and I can't look into it bc iOS won't connect to my local dev instance.
Open for ideas.
realcanadrian commented on 2022-01-19T23:49:29.000Z:
Is it just a cert issue? I know Nextcloud tasks users were having trouble syncing CalDav to iOS until they figured out that Apple made https mandatory and tightened their cert requirements. Letsencrypt certs work fine though. Could you add a Letsencrypt cert to your dev instance and see if it resolves the issue?
@kolaente commented on 2022-01-20T07:57:25.000Z:
@realcanadrian I guess that would make sense. Try has a Let's Encrypt certificate. Will check with my local dev instance.
AverageMarcus commented on 2022-01-31T08:29:33.000Z:
I have a valid certificate on mine and I'm still seeing issues with CalDAV on iOS and MacOS.
The lists are retrieved but all show as having 0 tasks (when they do in fact have tasks).
I've been able to add a new tasks to one of the lists which does save into Vikunja but almost immediately after creating it it disappears from the iOS/MacOS app and the list shows 0 tasks again.
Snuggle commented on 2022-09-08T00:43:23.000Z:
I've been testing with a valid certificate and have the same results as @AverageMarcus.
It almost seems as if the iOS client is able to write new tasks but not read.
I also set up an SMTP server and during this behaviour my emails get spammed every few seconds with the following, even though adding new tasks works correctly and the lists are showing up (albeit with 0 tasks still which is not correct) so it absolutely has the correct credentials.
@kolaente commented on 2022-09-08T11:36:51.000Z:
Hmmm that's strange. Can you check the server logs?
Snuggle commented on 2022-09-11T13:48:29.000Z:
Sure! This is what my logs look like when one of those emails is sent. I am using Fastmail as my email hosting provider, I wouldn't be surprised if the
Error closing the mail server connectionis caused by them rate-limiting requests due to the spam.To create the errors above, I 'Enabled' Vikunja in the iOS accounts menu and then opened the iOS Reminders app. I was also sent this email at the same time as the errors above:
Snuggle commented on 2022-09-11T14:09:53.000Z:
If you'd like to see the log with debug mode enabled, here you go: https://pastebin.com/yTyrez3G
@kolaente commented on 2022-09-13T15:13:25.000Z:
@Snuggle Are you using db caching? Does it work if you disable it?
Skotticus commented on 2022-09-18T16:09:28.000Z:
Is this possibly related to Apple's .well-known specification? I ran into this when setting up dockerized Baikal with Traefik — it needed a bunch of middleware to play nice with iOS.
@kolaente commented on 2022-09-20T15:35:56.000Z:
@Skotticus Might be. Do you have any info about this specifically?
LucaBernstein commented on 2022-09-24T17:28:55.000Z:
About the emails: They will be solved with my PR: https://kolaente.dev/vikunja/api/pulls/1252
ch88ba commented on 2023-03-05T11:28:10.000Z:
I've been trying out Vikunja lately and it's been great, but the lack of iOS support is stopping me using it full time. Anyway, I decided to dig more into this and I think I've worked out the issue.
iOS seems to send HTTP Auth headers with square brackets:
Authorization:[Basic blahtoken], which Vikunja does not like.You can test this yourself with cURL. The following always returns a 401:
curl -v https://tasks.example.com/dav/lists/1 -H "Authorization:[Basic footoken]"...but the following works fine
curl -v https://tasks.example.com/dav/lists/1 -H "Authorization: Basic footoken"I don't know Go, but happy to try and take a look at a fix if no one is available.
@kolaente commented on 2023-03-05T11:36:47.000Z:
@chrisbanes okay that's interesting. How did you figure that out?
From my own testing it looks like it kind of works initially but then doesn't. If the problem is the brackets, then it wouldn't work at all.
ch88ba commented on 2023-03-05T11:39:19.000Z:
Just looking through the debug logs. It is an assumption based on the cURL requests I used above, I haven't actually got iOS to sync yet. I'm trying to work out if I can modify the request headers with Traefik to verify.
@kolaente commented on 2023-03-05T11:41:16.000Z:
If it's only in the logs, it might be the log format - headers are usually string slices so the
[]around them could just denote that.ch88ba commented on 2023-03-05T11:44:22.000Z:
Ah you're right. That was silly of me 🤦♂️
fiigivi commented on 2023-05-09T11:45:17.000Z:
I would love to see some progress on this bug. It's the only blocker stopping me from actually using Vikunja.
Maybe post a bugbounty or something?
@kolaente commented on 2023-05-09T14:36:03.000Z:
Please, go ahead :)
fiigivi commented on 2023-05-09T16:44:43.000Z:
Where would you prefer one to be posted?
ch88ba commented on 2023-05-17T13:22:33.000Z:
From my limited time debugging this, I was 80% sure this is an issue in https://github.com/samedi/caldav-go which Vikunja uses underneath, but I couldn't find the direct cause.
Skotticus commented on 2023-05-17T18:47:47.000Z:
Oh man, I let this one go, didn't I? I don't know where exactly y'all are at with this, but I can copy what I have in my Traefik config for you.
My fileconfig.yml for Traefik contains this:
For what it's worth, this didn't stop me from setting up Vikunja for my business, and my team seems to be fans.
fiigivi commented on 2023-05-20T06:57:31.000Z:
samedi/caldav-go hasn't been updated since 2019, and seems abandoned. Might be time to switch this out with simething like emersion/go-webdav?
As mentioned earlier, I'd be willing to put up money to get this fixed. Maybe something like US$50? But unless someone can point me towards a service that facilitates transactions like this, all I can do is promise to paypal someone :)
@kolaente commented on 2023-05-23T14:47:18.000Z:
Is there any documentation for go-webdav? I'd be open to switch in hope of some issues going away but not if that would mean to figure out most of the implementation details.
We haven't yet set up a bounty program on a platform so let's say if someone wants to tackle this please comment here and then paypal it I guess? Open for alternatives.
adamshand commented on 2023-06-07T19:44:15.000Z:
Also happy to chuck some money into a bounty, say NZD$100?
LucaBernstein commented on 2023-06-17T09:29:50.000Z:
Seems the auto-generated documentation could be quote helpful: https://pkg.go.dev/github.com/emersion/go-webdav@v0.4.0/caldav
Internally, it seems to be using: https://github.com/emersion/go-ical
fiigivi commented on 2023-07-17T13:37:30.000Z:
I really want this to work, so I created a work-around.
Be aware - this work-around is really fragile. It also just syncs one project to one calendar*.
The work-around is to use vdirsyncer to sync a vikunja project (via caldav) to disk, and then sync that up to another caldav-host (I use Baïkal).
In this example-config for vdirsyncer, I sync project 1 to the calendar named vikunja in baikal.
And now you can run
vdirsyncer sync vkandvdirsyncer sync bkto sync a project in vikunja and a calendar in baikal (after having runvdirsyncer discoverwhen first setting this up).As noted, this is really fragile, and I've come across two semi-big problems so far.
The first problem is that vikunja creates a field for
METHOD:which baikal does not support (I getUnknown error occurred for bk: 415 Client Error: Unsupported Media Type), so before runningvdirsyncer sync bkyou have to remove those lines (I just runsed -i '/^METHOD/d' ~/.vdirsyncer/vkbk/* && vdirsyncer sync bk). I don't know if you can expect the same error with other caldav-servers. Also, this problem is why you have to sync to disc before syncing to baikal. If not for this, it would be possible to directly sync baikal and vikunja.The second problem is that vikunja only does VTODO, so if one of your caldav-clients creates a more advanced object, the sync will fail. Just creating a reminder on iOS/macOS works fine. You can even add a due-date. But, if you add a due-time from iOS/macOS, it creates a VCALENDAR-object, and syncing to vikunja will fail.
I'd recommend to keep it as simple as possible (KISS!) when interacting with this calendar from other clients.
[*]: As mentioned, this also just syncs one project to one calendar. You can probably sync more project and calendars using the same config, without duplicating all of it, but you'll have to read up on
collectionsin the vdirsyncer-config, and match up names in vikunja and on the caldav-server.luwol03 commented on 2023-09-25T11:01:04.000Z:
Hello, I'd love to have this feature too, but I have no skill in go. So I tried to analyze where the problem is by using a proxy to check the requests made by iOS to vikunja and a nextcloud server in comparison. The first requests look more or less the same, but then vikunja doesn't return the todo items, which seems like why they don't show up in the reminders app. Hope this helps someone.
Discover all lists
Nextcloud
PROPFIND /remote.php/dav/calendars/{user-id}/Request:
Response:
Vikunja
PROPFIND /dav/projects/Request:
Response:
Get sync token request
Nextcloud
PROPFIND /remote.php/dav/calendars/{user-id}/{list-id-#1}Request:
Response:
Vikunja
PROPFIND /dav/projects/2/Request:
Response:
List reminders todos
Nextcloud
PROPFIND /remote.php/dav/calendars/{user-id}/{list-id-#1}Request:
Response:
Vikunja
PROPFIND /dav/projects/2/Request:
Response:
Get todo items by their id
Nextcloud
REPORT /remote.php/dav/calendars/{user-id}/{list-id-#1}/Request:
Response:
Vikunja
REPORT /dav/projects/2/This request is not made, because there were no todo items returend before
pinpox commented on 2024-01-11T11:32:48.000Z:
Still want this feature very much. If you decide to put up a bounty for it, I'm willing to add something to it.
Maybe if all the people who want this very useful feature chime in, someone actually fixes it :)
PterX commented on 2024-01-14T14:54:06.000Z:
This is a very useful feature. I really hope the author can spend some effort to upgrade it.
fiigivi commented on 2024-03-01T06:29:44.000Z:
Though no "official" bugbounty have been posted, at least two of us have piped up that we want to put money towards a fix [1][2]. I still stand by that.
This workaround was too fragile to be usable.
I believe the simplest solution is to move on to a new library. I've been learning some go, and have been planning on taking a crack at this, but life keeps coming in the way 🙃
@boexler commented on GitHub (Jul 17, 2025):
any updates on this?
@kolaente commented on GitHub (Jul 17, 2025):
There's a PR with partial fixes: https://github.com/go-vikunja/vikunja/pull/748
@xeruf commented on GitHub (Sep 4, 2025):
so it mostly works nowadays? will test soon then!
@mareklat commented on GitHub (Sep 5, 2025):
In my case, it works quite unusually. After generating the token in Vikunja and adding the calendar to the Apple Reminders app, all projects appear and it works as expected. After some time (maybe 1 day), only one random project remains, and the others disappear. This happens on both iOS and macOS.
@TheSander562 commented on GitHub (Sep 5, 2025):
I want to extend on that, that for me the one project that remains is my username but without any tasks. So it is unusable when it happens.
@xeruf commented on GitHub (Sep 10, 2025):
Having a similar issue:
I set it up, then all lists appear, then they disappear barring one.
A fixing PR is merged and should be available with the upcoming 1.0, will test on my nightly instance...
@PalatinCoder commented on GitHub (Sep 28, 2025):
Hi everyone,
I installed Vikunja on my cluster today and tried setting up CalDAV sync with my iPhone. I can confirm that all projects showed up (as "Lists") in the native reminder app. Also, after opening one list all the others disappeared, similar to what others have described in this thread. However, after the projects went missing I noticed that iOS quietly changed the URL in the account settings! Initially it was
/dav/principals/username/, as shown by the web ui and as set by me creating the account. After opening one of the lists, the URL got changed todav/projects/3/- which explains why there was only one project left. I manually changed the URL back to the initial one and since then, all projects are shown (and don't disappear anymore)!I have no idea why iOS does this but it seems that manually correcting the URL once did the trick for me!
I should note that I have disabled Calendar sync in the account settings and only kept reminder sync enabled.
iOS Version:
user_agent="iOS/18.7 (22H20) remindd/3740", Vikunja v1.0.0-rc2Edit: Celebrated too early. After about half an hour iOS's
remindddecided to to anOPTIONS /dav/projects/request instead ofOPTIONS /dav/principals/username/as it did initially. After that it only syncs one project again (the one with the highest id)@internationils commented on GitHub (Mar 8, 2026):
https://github.com/go-vikunja/vikunja/pull/748 ... this was closed dec 2025 and some mods made
@hcuk94 commented on GitHub (Mar 19, 2026):
I have submitted a PR #2417 with some changes to resolve the latest documented issue here with Apple Reminders (in that it always defaults back to the /dav/projects/ endpoint rather than that specified by Vikunja).