vikunja/pkg/routes/api/shared
kolaente 6e851e2ec2 fix(tasks): add labels sequentially when the backend db serializes writes
Quick Add Magic with multiple labels (`*a *b *c`) fired all
`PUT /tasks/{id}/labels` requests concurrently via `Promise.all`. On
SQLite these overlap as read-then-write upgrade transactions, which the
busy_timeout can't resolve, so some requests fail with HTTP 500
("database is locked") and the labels are silently dropped while the
quick-add input gets stuck.

Expose a `concurrent_writes` flag on the shared `/info` response (true
for Postgres/MySQL, false for SQLite). The frontend config store reads
it and `addLabelsToTask` now branches: parallel `Promise.all` when the
backend supports concurrent writes, sequential awaits otherwise.

Fixes #2680
2026-06-19 15:58:02 +02:00
..
admin_user.go feat(api/v2): add admin actions on /api/v2 2026-06-11 19:32:42 +00:00
auth.go fix(auth): return ErrAccountLocked for locked accounts on login 2026-06-17 19:43:41 +00:00
auth_provider.go refactor(user): extract shared account orchestration into models/user/shared for v1+v2 2026-06-11 07:02:31 +00:00
info.go fix(tasks): add labels sequentially when the backend db serializes writes 2026-06-19 15:58:02 +02:00
testing.go refactor(testing): extract e2e fixture reset/truncate into shared package 2026-06-17 12:13:50 +00:00