go-vikunja / vikunja Goto Github PK
View Code? Open in Web Editor NEWMirror of vikunja from https://code.vikunja.io/api
License: GNU Affero General Public License v3.0
Mirror of vikunja from https://code.vikunja.io/api
License: GNU Affero General Public License v3.0
Hi! I am testing Vikunja and I really like it! How do I configure the URLs for tasks in email notifications? They don't include the domain. I have tried setting the variable VIKUNJA_FRONTEND_URL but it seems to be ignored. Thanks!
Currently you can only see tasks in the gantt that have the start date and end date parameters, it would be great if tasks that have the due date parameters could also be seen. In case you think that not all users would like this it could be an additional checkbox like "Show tasks wich don't have a dates set" which is already present.
I'd be interested in trying out vikunja hosted on my TrueNAS server at home, to replace Kanboard (which doesn't look nearly as pretty as vikunja!).
Since there are no binary downloads for FreeBSD my only option is to build it from source, however when I try to do so, it fails with a rather unhelpful error message (I'm running FreeBSD 12.2):
# mage -v build:build
Running target: Build:Build
Running dependency: initVars
Error getting packages: exit status 1
Every time an image is referenced via html code, Google forces it Gmail users to load that image through their web caching service.
As it turns out, Google doesn't support svg files, which is what Vikunja uses in the notification email (images/logo-full.svg).
Therefore, all notifications sent to gmail users have the image broken and it looks like this:
A quick fix would be to convert the images that are meant to be displayed on gmail to jpg or other compatible format, more info here: https://stackoverflow.com/questions/51471607/email-thumbnail-url-changed-to-googleusercontent-com-in-gmail
Can you please look into this and consider a fix in a future release of Vikunja?
Thanks!
Much like how you can hit the share button in any app to e.g. save a URL to Google Keep, I'd like to have this functionality for my Vikunja lists as well.
I figured, since the Vikunja frontend is just a webapp it might not be possible, but then I came across this webpage that seems to suggest this can be implemented in a fairly straightforward way.
Ideally users would be able to select what should be done with the received content (e.g. to which list to add, to add a 'Shared' tag, etc.), but by default adding it to a separate list called 'shared' so the items can be sorted by hand and moved to their intended location later on.
Hello Sir, your vikunja is really a fantastic app, recently, while using your app, I found a bug, when I upload image file to list's description, a bug will happen, in browser console:
In frontend:
my platform:
client: linux x86 64, firefox 89.0;
server: docker-compose, follow your website's example;
If you need more info about this situation, please tell me : )
could u help me deal with this question? Thank you Sir!
It would be useful to enable bulk edit for tasks. This could be used, for instance, to reschedule multiple tasks at once.
The run.sh
in docker image :latest
tag fail to replace API_URL in index.html. The API_URL stay at /api/v1
, vice versa in :unstable
tag the API URL replaced correctly.
Compose file exact same:
version: "3.5"
services:
frontend:
image: vikunja/frontend:latest
ports:
- 80:80
environment:
VIKUNJA_API_URL: http://192.168.0.22:3456/api/v1
restart: unless-stopped
version: "3.5"
services:
frontend:
image: vikunja/frontend:unstable
ports:
- 80:80
environment:
VIKUNJA_API_URL: http://192.168.0.22:3456/api/v1
restart: unless-stopped
I installed vikunja with docker-compose and nginx configuration.
After 10 seconds my acocunt will be automatically log out.
In develper console I see some errors:
GET http://192.168.178.15:10001/api/v1/avatar/user?size=50 502 (Bad Gateway)
Image (async)
_i @ user-settings.9c5ddbb4.js:1
wi @ user-settings.9c5ddbb4.js:1
bi @ user-settings.9c5ddbb4.js:1
v @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
p @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
p @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
p @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
e._update @ user-settings.9c5ddbb4.js:1
i @ user-settings.9c5ddbb4.js:1
_n.get @ user-settings.9c5ddbb4.js:1
_n @ user-settings.9c5ddbb4.js:1
e @ user-settings.9c5ddbb4.js:1
$n.$mount @ user-settings.9c5ddbb4.js:1
init @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
e._update @ user-settings.9c5ddbb4.js:1
i @ user-settings.9c5ddbb4.js:1
_n.get @ user-settings.9c5ddbb4.js:1
_n.run @ user-settings.9c5ddbb4.js:1
bn @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
tt @ user-settings.9c5ddbb4.js:1
Promise.then (async)
Ze @ user-settings.9c5ddbb4.js:1
st @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
_n.update @ user-settings.9c5ddbb4.js:1
pe.notify @ user-settings.9c5ddbb4.js:1
set @ user-settings.9c5ddbb4.js:1
authenticated @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr._withCommit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
r.commit @ user-settings.9c5ddbb4.js:6
checkAuth @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
r.dispatch @ user-settings.9c5ddbb4.js:6
(anonymous) @ index.3c6ccad3.js:18
Promise.then (async)
login @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
submit @ index.3c6ccad3.js:13
keyup @ index.3c6ccad3.js:13
Xe @ user-settings.9c5ddbb4.js:1
n @ user-settings.9c5ddbb4.js:1
Ri.a._wrapper @ user-settings.9c5ddbb4.js:1
Show 3 more frames
user-settings.9c5ddbb4.js:6 POST http://192.168.178.15:10001/api/v1/user/token 401 (Unauthorized)
(anonymous) @ user-settings.9c5ddbb4.js:6
cs @ user-settings.9c5ddbb4.js:6
js @ user-settings.9c5ddbb4.js:6
Is.request @ user-settings.9c5ddbb4.js:6
$s.forEach.Is.<computed> @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
nf @ user-settings.9c5ddbb4.js:20
(anonymous) @ index.3c6ccad3.js:18
setTimeout (async)
renewToken @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
renewTokenOnFocus @ index.3c6ccad3.js:8
created @ index.3c6ccad3.js:8
Xe @ user-settings.9c5ddbb4.js:1
ln @ user-settings.9c5ddbb4.js:1
$n._init @ user-settings.9c5ddbb4.js:1
s @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
init @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
e._update @ user-settings.9c5ddbb4.js:1
i @ user-settings.9c5ddbb4.js:1
_n.get @ user-settings.9c5ddbb4.js:1
_n.run @ user-settings.9c5ddbb4.js:1
bn @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
tt @ user-settings.9c5ddbb4.js:1
Promise.then (async)
Ze @ user-settings.9c5ddbb4.js:1
st @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
_n.update @ user-settings.9c5ddbb4.js:1
pe.notify @ user-settings.9c5ddbb4.js:1
set @ user-settings.9c5ddbb4.js:1
authenticated @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr._withCommit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
r.commit @ user-settings.9c5ddbb4.js:6
checkAuth @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
r.dispatch @ user-settings.9c5ddbb4.js:6
(anonymous) @ index.3c6ccad3.js:18
Promise.then (async)
login @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
submit @ index.3c6ccad3.js:13
keyup @ index.3c6ccad3.js:13
Xe @ user-settings.9c5ddbb4.js:1
n @ user-settings.9c5ddbb4.js:1
Ri.a._wrapper @ user-settings.9c5ddbb4.js:1
user-settings.9c5ddbb4.js:20 Error renewing token: Error: Request failed with status code 401
at Ha (user-settings.9c5ddbb4.js:6)
at ts (user-settings.9c5ddbb4.js:6)
at XMLHttpRequest.u (user-settings.9c5ddbb4.js:6)
I changed port to 10001 in docker-compose.yml but not in nginx.conf
ports:
- 10001:80
Frontend Version: 0.18.1
API Version: v0.18.1
I start the process, authorize the Vikunja Migration app via Trello, and it says "Importing in progress"
The result is one board without cards – and that is the only one that is a "personal board" – the rest is in different workspaces (where I'm admin – and I gave permissions to when authorizing the "Vikunja app").
So in summary:
I've tried to look at the logs, but nothing related pops up as far as I can see (maybe I'm looking in the wrong place, or need debugging on).
I see it says ´Vikunja Migration will be able to use your account for an hour (or until you disable it).` on the Trello authorization page – is it too little time.
Let me know if you want me to check something specific.
I have nginx Installed in my server and also Vikunja installed as docker container. I dont know to setup it as Https.
If i use Frontend in HTTP. Its working fine and all my setting are going great but When i try to shift it to HTTPS using nginx it Doesnt work properly.
Here is my Nginx Conf
server {
server_name planner.realmx.space;
access_log /var/log/nginx/planner.realmx.space.access;
error_log /var/log/nginx/planner.realmx.space.error;
location / {
proxy_pass http://localhost:8890/;
proxy_set_header X-Forwarded-Host $server_name:$server_port;
proxy_hide_header Referer;
proxy_hide_header Origin;
proxy_set_header Referer '';
proxy_set_header Origin '';
add_header X-Frame-Options "SAMEORIGIN";
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/realmx.space/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/realmx.space/privkey.pem; # managed by Certbot
#include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot
ssl_trusted_certificate /etc/letsencrypt/live/realmx.space//chain.pem; # managed by Certbot
ssl_stapling on; # managed by Certbot
ssl_stapling_verify on; # managed by Certbot
}
server {
if ($host = planner.realmx.space) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name planner.realmx.space;
access_log /var/log/nginx/planner.realmx.space.access;
error_log /var/log/nginx/planner.realmx.space.error;
location / {
proxy_pass http://localhost:8890/;
proxy_set_header X-Forwarded-Host $server_name:$server_port;
proxy_hide_header Referer;
proxy_hide_header Origin;
proxy_set_header Referer '';
proxy_set_header Origin '';
add_header X-Frame-Options "SAMEORIGIN";
}
}
Apprise is a platform-rich notifier. I think it would be a huge addition to notifications on Vikunja. It is a Python package which would make it awkward for integrating, but it also exposes a CLI util which could make this easier if you wanted to go down that route.
I have no experience with Go so I'm just filing this as a feature request and not accompanying it with a PR!
When changing the due day of a task, the due time is automatically reset (typically to 12 pm) instead of remaining as previously set. It would be more natural if the due day could be changed without affecting the due time. A user case would be someone trying to reschedule a task due today in the evening (say 7 pm) to another day at the same time in the evening (7 pm). I am using the latest Vijunja version (0.18.2) on Cloudron.
Currently the exact user name has to be typed into the assign user field.
It would be much more intuitive and beneficial for the workflow, if this field was case insensitive.
Hello,
I'd like to use the Vikunja api outside of the UI. I'm having problems with authentication though. So far, what I've done is copy the Authorization token via the chrome inspector... I'm planning to write a cron job through code with the vikunja data (Tasks, etc.) to post them on a slack thread regularly. I haven't ready anything on the api documentation that could solve this problem...
Thanks!
After changing the list properties (color and name), the change in the Upcoming and Overview view is only updated after a full page reload.
Only a small bug, but it still would be nice to see it fixed.
Btw: I'm very new to Vikunja, but I love it so far, keep up the excellent work!
Much of the time, I don't want a full KanBan board, but I do want to control the order of items in my to-do list. It would be nice to be able to manually re-order the items in the "List" view. Maybe this should also re-order the items in the KanBan view relative to that task's bucket.
It's quite a few clicks to move an item from one list to another. My ideal workflow is to put everything to a default list, then be able to click and drag that item into a new list, most likely in the sidebar.
Does this make sense? Can post screenshots if it would help explain
Hi, i have a strange issue:
Frontend: 0.18.2
Api: 0.18.1
Usually after a few days i get the constant "invalid or expired jwt"-Message from /api/v1/notifications on Firefox. Everything else works and uses the new token, but this request keeps using the expired one.
Tried to give this a spin under docker, I saw a similar problem over on kolaente.dev but this one is even working less.
Using the docker-compose.yml from the docs, only replacing the IP of my host, the two containers come up.
The frontend has the same problems as described on other issues site:
I've got an "Info" box with no content, am I even connected to the back end?
If I just click Log In, it just says "Request failed with status code 405". What does that mean?
Also the Register Button is missing, the entire layout is misaligned. I can browse there with the subpath but otherwise it wouldn't be accessible.
The problem is that with the provided docker-compose.yml from the docs the db user vikunja cant access the database, docker logs of the container show the error "Access denied for user 'vikunja'@'docker-ip' (Using password: yes)". If I exec into the container and log myself in (mysql -u vikunja -p) I get in just fine. The user vikunja isn't restricted from which host ('vikunja'@'%').
So far I have no idea why the provided standard docker-compose would do that. Any ideas?
I am trying to deploy via docker-compose the vikunja/api
image, using as database PostgreSQL.
When the VIKUNJA_DATABASE_PASSWORD environment variable contains any special character like:
#
$
!
@
the deployment fails with the following error: pq: password authentication failed for user "<my_database_user>" usermod: no changes
.
Only if i remove every special character the deployment suceeds.
I also tried escaping the password but nothing changed. A tool you can use for escaping the password can be found here.
Below you can find an example of the docker-compose.yml i tried:
vikunja_api:
image: "vikunja/api:latest"
container_name: "vikunja_api"
restart: "unless-stopped"
networks:
- "public"
- "local"
ports:
- "${VIKUNJA_API_PORT?Variable not set}:${VIKUNJA_API_PORT?Variable not set}"
depends_on:
- "postgresql"
environment:
- "VIKUNJA_DATABASE_TYPE=${VIKUNJA_DATABASE_TYPE?Variable not set}"
- "VIKUNJA_DATABASE_HOST=${POSTGRESQL_SERVER?Variable not set}:${POSTGRESQL_PORT?Variable not set}"
# Escape special charactes in passwords using the following tool: https://www.urlencoder.org/.
- "VIKUNJA_DATABASE_PASSWORD=${VIKUNJA_DATABASE_ESCAPED_PASSWORD?Variable not set}"
- "VIKUNJA_DATABASE_USER=${VIKUNJA_DATABASE_USER?Variable not set}"
- "VIKUNJA_DATABASE_DATABASE=${VIKUNJA_DATABASE?Variable not set}"
- "VIKUNJA_SERVICE_ENABLEREGISTRATION=${VIKUNJA_API_ENABLE_REGISTRATION?Variable not set}"
- "VIKUNJA_SERVICE_TIMEZONE=${DOCKER_TIMEZONE?Variable not set}"
- "PUID=${DOCKER_USER_UID?Variable not set}"
- "PGID=${DOCKER_USER_UID?Variable not set}"
- "VIKUNJA_FIRST_CHILD=${VIKUNJA_FIRST_CHILD?Variable not set}"
volumes:
- "vikunja_api_data:/app/vikunja/files"
labels:
- "traefik.enable=true"
- "traefik.http.routers.vikunja_api.rule=Host(`${VIKUNJA_API_HOST?Variable not set}`) && PathPrefix(`/api/v1`, `/dav/`, `/.well-known/`)"
- "traefik.http.routers.vikunja_api.service=vikunja_api"
- "traefik.http.routers.vikunja_api.tls=true"
- "traefik.http.routers.vikunja_api.entrypoints=web_secure"
- "traefik.http.services.vikunja_api.loadbalancer.server.port=${VIKUNJA_API_PORT?Variable not set}"
How should i face this problem and proceed with the deployment?
Thank you in advance.
I am experiencing an issue with the frontend of Vikunja. When I use the "edit task" menu to assign a user, this fails. The console reports the following two errors upon triggering this:
Could not add assignee to task in kanban, task not found Object { bucketIndex: null, taskIndex: null, task: null } app.e6497677.js:1:45839
This browser does not support triggered notifications app.e6497677.js:1:213568
This happens with both Firefox and Chromium. However, I am able to assign users by clicking on a task and clicking the "Assign This Task To A User" button on the right.
I am running Vikunja in docker behind an nginx reverse proxy. Apologies if I'm missing any pertinent info in this bug report.
Hello,
I need to deploy Vikunja frontend in /vikunja context and I failed to make it work.
It seems the plugin used should support it: vite-pwa/vite-plugin-pwa#4 so I tried adding base: '/vikunja'
in both build
section and plugins.VitePWA
but after building the resulting index.html always references assets with absolute path on /.
Any idea ?
Regards.
Without a hard refresh, the "Overview" view will show the old name in front of the tasks from that namespace.
Whatever cache is holding the old name of the namespace should be updated or invalidated when a namespace is renamed. The Overview should always show up-to-date names for namespaces.
Good day!
Tell me, does migration with Trello work now?
It gives me an error:
Invalid return_url. Wildcard ("*") allowed origins are no longer supported. Contact the developer. See https://community.developer.atlassian.com/t/52093
Here is an example of a simple kanban board in vikunja:
The green arrows show where I can drag the selected item ("item 4") to move it to one of the other columns. The red arrows show places where I would like to be able to drag the item but that I can't (it doesn't recognise that this is part of the other column).
It'd be helpful if the columns extended all the way to the bottom of the screen (conceptually, for the purposes of drag-and-drop) because that would make it much easier & faster to drag items between columns. Currently you have to drag the item to a fairly small & specific position to get it to detect that this item should go to another column.
Hi,
I wanted to request LDAP capability be added to your roadmap to link with the Vikunja user database.
This ideal for an organization with >5 people to share / collaborate on tasks which is an awesome capability of Vikunja. Duplicating users/passwords or keeping this in sync with a central database always becomes problematic, LDAP / ActiveDirectory is very mature and works well for this.
Hey,
I run the latest unstable in docker which is updated daily. Ony android phone the menue next to the avatar does not work. It opens but notvin the front so not usable. After the api update I can not log out and in again. Thanks for the awesome work!!
Regards:)
Problem: When assigning a card to a user that works well, however when that user does something on a card, a comment, adds a new sub-task; there is no notification at all that it has transpired.
As a result, we have users commenting on issues and it goes un-noticed for weeks on end. Is there a way to enable notification via email on these types of actions?
Emails work well for the reminder emails, but there is nothing for actual actions that take place.
Edit: i would have commented on the gitea repo, but I can't get the email confirmation to actually get sent to me to create an account.
Just a feature request, definitely in the nice-to-have department: being able to either mark notifications as read either individually or all as a group so that the red dot next to the bell goes away.
I also noticed that there's no space between the name of the user and the word "assigned".
As far as I understand, Vikunja intends to be used as a caldav server and not as a caldav client.
I'd like to point out that there is already rock solid floss caldav servers (sabredav, radicale, etc.).
I think that a better strategy would be to repurpose Vikunja as a caldav client-only. In my opinion, it's a waste of energy to develop a new caldav server: simply ship vikunja with sabredav/radicale server if you really want a caldav server, and just make them collaborate together.
Vikunja could be incredibly useful as a cross-platform front-end task management software able to connect and sync to a caldav server. You'll get integration with Nextcloud Tasks for free (based on sabredav). Caldav is the only floss widespread solution to get a way to synchronize tasks through different devices (mobile, web, desktop), and Vikunja could fill a gap right away.
I've desperately dig into the internet, and such a software simply does not exist in 2022 !
Look for instance here :
tasks/tasks#1256
https://www.reddit.com/r/kde/comments/gs2acz/todo_manager_with_caldav_sync/
https://www.reddit.com/r/selfhosted/comments/grlrtr/has_anyone_gotten_personal_task_management_right/
Why writing an opensource caldav server (which is quite hard, and exists already), instead of just focusing on writing a cross-platform caldav client (which does not exist at this level of quality) ?
Moreover, a restful api frontend library for the caldav task protocol would be awesome, there is simply none in the web AFAIK.
Anyway, thank you very much for offering to the world this really neat software, it's the best cross-platform floss alternative task management client I know of.
Hello, beforehand I want to thank you for this amazing project !
I'm not sure if this error is really a bug or just a simple permission error.
The problem:
When uploading an attachment or setting a wallpaper I get the following error message: " Error Request failed with status code 500 Internal Server Error". In the docker container log I got the following error message: "ERROR ▶ handler/UploadBackground 1f7 open files/3: permission denied"
My docker compose file looks like the following:
version: '3'
services:
api:
image: vikunja/api
environment:
VIKUNJA_DATABASE_TYPE: sqlite
VIKUNJA_SERVICE_FRONTENDURL: URL
VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: 1
VIKUNJA_SERVICE_ENABLEREGISTRATION: 1
VIKUNJA_SERVICE_ENABLELINKSHARING: 1
VIKUNJA_SERVICE_ENABLETASKCOMMENTS: 1
VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: 1
VIKUNJA_SERVICE_ENABLEUSERDELETION: 1
VIKUNJA_MAILER_ENABLED: 1
VIKUNJA_MAILER_HOST: SERVER
VIKUNJA_MAILER_PORT: 587
VIKUNJA_MAILER_USERNAME: EMAIL
VIKUNJA_MAILER_PASSWORD: PASSWORD
VIKUNJA_RATELIMIT_ENABLED: 0
VIKUNJA_FILES_MAXSIZE: 8000MB
VIKUNJA_SERVICE_ENABLETOTP: 1
VIKUNJA_SERVICE_TIMEZONE: Europe/Berlin
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
restart: unless-stopped
frontend:
image: vikunja/frontend
ports:
- 4242:80
environment:
VIKUNJA_API_URL: URL/api/v1
restart: unless-stopped
I've been toying around with using Oauth2 login on Vikunja, and as a result of that some additional unintended users have been created.
When trying to delete these accounts through CLI (./vikunja user delete 3 --now
) I get the following output:
2022/03/20 15:13:17 Using config file: /app/vikunja/config.yaml
2022-03-20T15:13:17.330165405Z: INFO ▶ migration/Migrate 048 Ran all migrations successfully.
2022-03-20T15:13:17.330984133Z: INFO ▶ models/RegisterReminderCron 049 Mailer is disabled, not sending reminders per mail
2022-03-20T15:13:17.331467773Z: INFO ▶ models/RegisterOverdueReminderCron 04a Mailer is disabled, not sending overdue per mail
You requested to delete the user immediately. Are you sure?
To confirm, please type "yes, I confirm" in all uppercase:
2022-03-20T15:13:17.333698517Z: INFO ▶ [EVENTS] 04e Adding handler, handler_name=poison.logger, topic=poison
2022-03-20T15:13:17.333989771Z: INFO ▶ [EVENTS] 050 Adding handler, handler_name=team.member.added.team.member.added.notification, topic=team.member.added
2022-03-20T15:13:17.334122269Z: INFO ▶ [EVENTS] 051 Adding handler, handler_name=user.export.requested.handle.user.data.export, topic=user.export.requested
2022-03-20T15:13:17.33420049Z: INFO ▶ [EVENTS] 052 Adding handler, handler_name=namespace.created.namespace.counter.increase, topic=namespace.created
2022-03-20T15:13:17.334244952Z: INFO ▶ [EVENTS] 053 Adding handler, handler_name=team.created.team.counter.increase, topic=team.created
2022-03-20T15:13:17.334289637Z: INFO ▶ [EVENTS] 054 Adding handler, handler_name=task.created.task.counter.increase, topic=task.created
2022-03-20T15:13:17.334329507Z: INFO ▶ [EVENTS] 055 Adding handler, topic=task.created, handler_name=task.created.task.created.mentions
2022-03-20T15:13:17.334365339Z: INFO ▶ [EVENTS] 056 Adding handler, handler_name=team.deleted.team.counter.decrease, topic=team.deleted
2022-03-20T15:13:17.334401691Z: INFO ▶ [EVENTS] 057 Adding handler, handler_name=task.assignee.created.task.assigned.notification.send, topic=task.assignee.created
2022-03-20T15:13:17.334445116Z: INFO ▶ [EVENTS] 058 Adding handler, handler_name=task.assignee.created.task.assignee.subscribe, topic=task.assignee.created
2022-03-20T15:13:17.33448219Z: INFO ▶ [EVENTS] 059 Adding handler, topic=list.deleted, handler_name=list.deleted.list.counter.decrease
2022-03-20T15:13:17.334546207Z: INFO ▶ [EVENTS] 05a Adding handler, handler_name=namespace.deleted.namespace.counter.decrease, topic=namespace.deleted
2022-03-20T15:13:17.334645576Z: INFO ▶ [EVENTS] 05b Adding handler, handler_name=task.updated.task.updated.mentions, topic=task.updated
2022-03-20T15:13:17.334710649Z: INFO ▶ [EVENTS] 05c Adding handler, handler_name=user.created.increase.user.counter, topic=user.created
2022-03-20T15:13:17.334776889Z: INFO ▶ [EVENTS] 05d Adding handler, handler_name=list.created.list.counter.increase, topic=list.created
2022-03-20T15:13:17.334838295Z: INFO ▶ [EVENTS] 05e Adding handler, handler_name=list.created.send.list.created.notification, topic=list.created
2022-03-20T15:13:17.334918942Z: INFO ▶ [EVENTS] 05f Adding handler, handler_name=task.comment.created.task.comment.notification.send, topic=task.comment.created
2022-03-20T15:13:17.334982663Z: INFO ▶ [EVENTS] 060 Adding handler, handler_name=task.deleted.task.counter.decrease, topic=task.deleted
2022-03-20T15:13:17.335042422Z: INFO ▶ [EVENTS] 061 Adding handler, handler_name=task.deleted.task.deleted.notification.send, topic=task.deleted
2022-03-20T15:13:17.335102717Z: INFO ▶ [EVENTS] 062 Adding handler, topic=task.comment.edited, handler_name=task.comment.edited.handle.task.comment.edit.mentions
2022-03-20T15:13:17.338781215Z: INFO ▶ [EVENTS] 079 Starting handler, subscriber_name=team.deleted.team.counter.decrease, topic=team.deleted
2022-03-20T15:13:17.338815344Z: INFO ▶ [EVENTS] 07a Starting handler, subscriber_name=namespace.created.namespace.counter.increase, topic=namespace.created
2022-03-20T15:13:17.339021119Z: INFO ▶ [EVENTS] 07b Starting handler, subscriber_name=poison.logger, topic=poison
2022-03-20T15:13:17.339120562Z: INFO ▶ [EVENTS] 07c Starting handler, subscriber_name=namespace.deleted.namespace.counter.decrease, topic=namespace.deleted
2022-03-20T15:13:17.339321892Z: INFO ▶ [EVENTS] 07e Starting handler, subscriber_name=list.deleted.list.counter.decrease, topic=list.deleted
2022-03-20T15:13:17.339510445Z: INFO ▶ [EVENTS] 081 Starting handler, subscriber_name=task.comment.edited.handle.task.comment.edit.mentions, topic=task.comment.edited
2022-03-20T15:13:17.339652257Z: INFO ▶ [EVENTS] 083 Starting handler, subscriber_name=task.comment.created.task.comment.notification.send, topic=task.comment.created
2022-03-20T15:13:17.339708145Z: INFO ▶ [EVENTS] 084 Starting handler, subscriber_name=user.export.requested.handle.user.data.export, topic=user.export.requested
2022-03-20T15:13:17.339735923Z: INFO ▶ [EVENTS] 085 Starting handler, subscriber_name=task.created.task.counter.increase, topic=task.created
2022-03-20T15:13:17.339826773Z: INFO ▶ [EVENTS] 086 Starting handler, subscriber_name=list.created.send.list.created.notification, topic=list.created
2022-03-20T15:13:17.33992092Z: INFO ▶ [EVENTS] 087 Starting handler, subscriber_name=user.created.increase.user.counter, topic=user.created
2022-03-20T15:13:17.339417409Z: INFO ▶ [EVENTS] 07f Starting handler, subscriber_name=team.created.team.counter.increase, topic=team.created
2022-03-20T15:13:17.339646202Z: INFO ▶ [EVENTS] 082 Starting handler, topic=team.member.added, subscriber_name=team.member.added.team.member.added.notification
2022-03-20T15:13:17.340030363Z: INFO ▶ [EVENTS] 08a Starting handler, subscriber_name=task.assignee.created.task.assigned.notification.send, topic=task.assignee.created
2022-03-20T15:13:17.339927827Z: INFO ▶ [EVENTS] 088 Starting handler, subscriber_name=task.deleted.task.counter.decrease, topic=task.deleted
2022-03-20T15:13:17.339977937Z: INFO ▶ [EVENTS] 089 Starting handler, subscriber_name=task.deleted.task.deleted.notification.send, topic=task.deleted
2022-03-20T15:13:17.340216841Z: INFO ▶ [EVENTS] 08c Starting handler, subscriber_name=task.assignee.created.task.assignee.subscribe, topic=task.assignee.created
2022-03-20T15:13:17.339122784Z: INFO ▶ [EVENTS] 07d Starting handler, subscriber_name=task.updated.task.updated.mentions, topic=task.updated
2022-03-20T15:13:17.33948113Z: INFO ▶ [EVENTS] 080 Starting handler, subscriber_name=list.created.list.counter.increase, topic=list.created
2022-03-20T15:13:17.340178971Z: INFO ▶ [EVENTS] 08b Starting handler, subscriber_name=task.created.task.created.mentions, topic=task.created
YES, I CONFIRM
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0xca3774]
goroutine 1 [running]:
code.vikunja.io/api/pkg/user.(*User).GetName(...)
/go/src/code.vikunja.io/api/pkg/user/user.go:144
code.vikunja.io/api/pkg/user.(*AccountDeletedNotification).ToMail(0x4000296010, 0x119de18)
/go/src/code.vikunja.io/api/pkg/user/notifications.go:259 +0x54
code.vikunja.io/api/pkg/notifications.notifyMail(0x14dee68, 0x400015f0e0, 0x14e6f78, 0x4000296010, 0x400050f938, 0xcf15e8)
/go/src/code.vikunja.io/api/pkg/notifications/notification.go:65 +0x30
code.vikunja.io/api/pkg/notifications.Notify(0x14dee68, 0x400015f0e0, 0x14e6f78, 0x4000296010, 0x0, 0x0)
/go/src/code.vikunja.io/api/pkg/notifications/notification.go:56 +0x144
code.vikunja.io/api/pkg/models.DeleteUser(0x4000107450, 0x400015f0e0, 0x1, 0x400015f0e0)
/go/src/code.vikunja.io/api/pkg/models/user_delete.go:170 +0x684
code.vikunja.io/api/pkg/cmd.glob..func24(0x1b86620, 0x4000456860, 0x1, 0x2)
/go/src/code.vikunja.io/api/pkg/cmd/user.go:342 +0x158
github.com/spf13/cobra.(*Command).execute(0x1b86620, 0x4000456840, 0x2, 0x2, 0x1b86620, 0x4000456840)
/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x1d0
github.com/spf13/cobra.(*Command).ExecuteC(0x1b86da0, 0x40d1fc, 0x4000000180, 0x4000044800)
/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x274
github.com/spf13/cobra.(*Command).Execute(...)
/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
code.vikunja.io/api/pkg/cmd.Execute()
/go/src/code.vikunja.io/api/pkg/cmd/cmd.go:44 +0x30
main.main()
/go/src/code.vikunja.io/api/main.go:22 +0x20
Probably also imporant to mention here, is that both my regular (non Oauth) user on Vikunja, and the added Oauth accounts have the exact same email address linked to it.
The task description and comments text show up white rather than black (or at least light rather than dark) over the light background when opening task details from Kanban view specifically.
Opening tasks from the other views navigates to a page dedicated to that task. These have the correct text colour. However when opening (clicking on) a task in Kanban view, tasks open in a modal and in that modal the text is the wrong colour, as shown in the screenshot below (red arrows are mine):
This is on frontend version: 0.18.1+1124-28af46bcd3
When trying to change the due time of a task, changing the value of the due time and pressing on "confirm" doesn't produce any change. Instead, the following steps need to be taken: 1) change the due time, 2) move the cursor to another field, 3) press "confirm". The same issue exists when changing minutes. I am using the latest Vijunja version (0.18.2) on Cloudron.
Currently it seems to be only possible to add a 'subtask' relation for existing tasks using the 'add task relations' option.
However it would be a great improvement to be able to add such a subtask from the same menu as well, if a task with the provided name does not already exist.
This is a pretty annoying bug that has started happening to me recently. I can provide any additional information/test things for debugging if you let me know what to do! I run Vikunja with docker-compose behind Traefik on a home server. I ran docker pull vikunja/frontend
and docker pull vikunja/api
to get the newest latest
. The frontend tells me:
Frontend Version: 0.18.2
API Version: v0.18.1
The issue I'm seeing is whenever I specify a list when creating an item, the item doesn't go to that list and just gets added to the default list regardless. e.g. If list A
is my default list and B
is another list, and I create the item Do this #B
it will just add the item Do this
to list A
and nothing to list B
. Other "Quick Add Magic" works fine (e.g. specifying the time) but this aspect does not.
Hey, I noticed a minor UX inconsistency today:
There's also proximity with the green "Done" status button. By mistake I marked a task as Done instead of saving the description.
Suggestion: Keep the copy "Save" and the blue button background consistent through the frontend.
When undoing a repeating task by clicking on the interaction bubble, the task is not only undone but also postponed according to the repeat schedule (e.g. by 2 days if the task repeats every 2 days). I am using Vikunja 0.18.2 on Cloudron.
Hi! Thanks for this awesome app, I really like it. It seems that it is not possible at the moment to set a reminder for repeating tasks, is that correct? If yes, any plans to add this? It would be awesome. Thanks! :)
I may be wrong, but it seems that deleting a task doesn't update the tasklist updated
timestamp. Creating a new task does.
I'm writing a script that uses the api to send notifications when a list has been updated
. Maybe I'm missing something. I'm not a developer and this may be r/badcode lol.
example code:
import requests
from time import sleep
import json
def get_token(url, username, password):
credentials = {"username": f"{username}", "password": f"{password}"}
token = requests.post(f"{url}/api/v1/login", json=credentials).json()["token"]
return (url, token)
def get_tasks(auth):
db = {}
tasklists = requests.get(
f"{auth[0]}/api/v1/lists", headers={"Authorization": f"Bearer {auth[1]}"}
).json()
tasks = requests.get(
f"{auth[0]}/api/v1/tasks/all", headers={"Authorization": f"Bearer {auth[1]}"}
).json()
for tasklist in tasklists:
db[tasklist["id"]] = dict(
name=tasklist["title"], updated=tasklist["updated"], tasks={}, num_tasks=0
)
for task in tasks:
db[task["list_id"]]["tasks"][task["id"]] = dict(
name=task["title"],
created=task["created"],
done=task["done"],
done_ts=task["done_at"],
created_by=task["created_by"]["name"],
updated=task["updated"],
labels=task["labels"],
priority=task["priority"],
notes=task["description"],
)
for tasklist in tasklists:
db[tasklist["id"]]["num_tasks"] = len(db[tasklist["id"]]["tasks"])
return db
def main():
auth = get_token("https://vikunja.tld", "user", "password")
current_db = get_tasks(auth)
while True:
sleep(30)
auth = get_token("https://vikunja.tld", "user", "password")
new_db = get_tasks(auth)
for tasklist in current_db.keys():
# Get Deleted Tasks
# FIXME: Should be able to check if tasklist has been updated first to avoid unnecesary runs
deleted_tasks = [
("current_db", tasklist, task)
for task in current_db[tasklist]["tasks"]
if task not in new_db[tasklist]["tasks"]
]
if len(deleted_tasks) > 0:
print(deleted_tasks)
# Check if tasklist has been updated
if current_db[tasklist]["updated"] == new_db[tasklist]["updated"]:
continue
# Get new Tasks
new_tasks = [
("new_db", tasklist, task)
for task in new_db[tasklist]["tasks"]
if task not in current_db[tasklist]["tasks"]
]
print("New Tasks:", set_tasks)
# Get tasks that in both dicts
set_tasks = [
("new_db", tasklist, task)
for task in new_db[tasklist]["tasks"] and current_db[tasklist]["tasks"]
if task not in [tup[2] for tup in new_tasks]
or task not in [tup[2] for tup in deleted_tasks]
]
print("Task Set:", set_tasks)
# Look for Task Changes
for task in new_db[tasklist]["tasks"]:
pass
current_db = new_db
main()
When tasks with a repeating interval are postponed several (~3) times, the repeating interval settings are lost. I am using the latest Vijunja version (0.18.2) on Cloudron.
Issue: Unable to move a task to a list which has its title beginning with numbers.
Example: List titled "2021/01/04". A task cannot be moved to it, it does not find such list. If you change the title to "Daily 2021/01/04" then you can reassign any task to this list.
Frontend Version: 0.18.2
API Version: v0.18.1
https://vikunja.io/docs/reverse-proxy/#nginx-proxy-manager-npm
This doc is outdated.
You no longer have console into the container and edit the config, you can do it all via the GUI.
Here's an example -- can replace api with IP of the api service if it has one set.
There are no issues with the latest tag v0.17.1, but the same Dockerfile will exit with an error in mage build:clean build
. Even with the --debug
flag enabled, there's no clue what's going wrong. The output is the same until the error occurs.
Hi,
I have running a nginx proxy manager instance in docker.
Now I want to configure vikunja with nginx proxy manager.
The vikunja instance in available from the WAN. Just the login failed: Network Error
// 20211005000721
// http://192.168.178.15:3456/api/v1/login
{
"message": "missing or malformed jwt"
}
In npm I set the domain name with
Scheme http
Forward Hostname / IP: 192.168.178.15
Forward Port: 10002
SSL Certificate
No Advanced configuration
docker-compose von vikunja:
version: '3'
services:
db:
image: mariadb:10
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: supersecret
MYSQL_USER: vikunja
MYSQL_PASSWORD: secret
MYSQL_DATABASE: vikunja
volumes:
- ./db:/var/lib/mysql
restart: unless-stopped
api:
image: vikunja/api
environment:
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_PASSWORD: secret
VIKUNJA_DATABASE_TYPE: mysql
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_DATABASE: vikunja
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
depends_on:
- db
restart: unless-stopped
frontend:
image: vikunja/frontend:unstable
ports:
- 10002:80
environment:
VIKUNJA_API_URL: http://192.168.178.15:3456/api/v1/
restart: unless-stopped
Does anyone have a proxy configuration for npm?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.