What go-vikunja/vikunja shipped
Written by FoxPlug from the repository's own releases; not affiliated with Vikunja. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/go-vikunja/vikunja; Vikunja did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Vikunja 2.8.0 was released, fixing 19 security issues and adding a trash bin with undo for tasks and projects plus a way to link an SSO account to a local one. Release
- Deleted projects now go to the trash for 30 days, with backend support for restore, list, purge and counts. Pull request #4172
- The trash UI for tasks and projects is complete, including delete dialog counts and undo. Pull request #4173
- Soft-deleted tasks can now be restored, listed and purged through new backend endpoints that also show who deleted them. Pull request #4169
- Time entries can now exist without a project or task and stay private to their author. Pull request #4171
- Local users can link OIDC identities and then log in with either their password or the linked provider, using a new
user_identitiestable. Pull request #4330 - New v2 endpoints list, preview, link and unlink linked OIDC identities. Pull request #4331
- A Linked accounts settings page and the OpenID callback link mode let users manage linked identities in the frontend. Pull request #4333
- Webhook forms gained a Select all toggle and per-group toggles so events no longer need ticking one by one. Pull request #4111
- Copy buttons on code blocks in preview mode now copy raw code with indentation and line breaks intact. Pull request #4353
Why it matters
This week brought the 2.8.0 release with 19 security fixes and a long-requested trash bin with undo for tasks and projects. Account linking for OIDC also landed across model, endpoints and settings, giving users a password or provider login choice. Alongside that, webhook event selection and several robustness fixes reduce manual work and edge-case failures.
Changelog entry
- Release v2.8.0 with 19 security fixes, trash with undo, and SSO account linking. Release
- Projects: deleted projects move to the trash for 30 days with restore, list, purge and counts. Pull request #4172
- Frontend: project trash UI, delete dialog counts and undo for tasks and projects. Pull request #4173
- Tasks: backend for task trash with restore, list and purge, including who deleted a task. Pull request #4169
- Time tracking: time entries without a project or task, private to their author. Pull request #4171
- Auth: link local accounts to OIDC identities with a
user_identitiestable and login via either method. Pull request #4330 - Auth: v2 endpoints to list, preview, link and unlink OIDC identities. Pull request #4331
- Frontend: Linked accounts settings page and OpenID callback link mode. Pull request #4333
- Webhooks: select all events or a whole event group in project and account webhook forms. Pull request #4111
- Editor: copy buttons on code blocks copy raw code with indentation and line breaks. Pull request #4353
- Filters: saved filters now apply their stored search text, taking precedence over request search. Pull request #4365
- Kanban: collapsed buckets expand while a task is dragged over their header and re-collapse after drop. Pull request #4328
Vikunja 2.8.0 is out: 19 security fixes, a trash bin with undo for tasks and projects, and SSO account linking. Also this week: linked accounts settings, bulk webhook event selection, and code block copy buttons.
Vikunja 2.8.0 is out, fixing 19 security issues, so updating soon is recommended. It adds a trash bin with undo for tasks and projects, and lets you link your SSO account to your local one. This week also completed the trash UI with delete dialog counts, added project trash that keeps deleted projects for 30 days, and allowed time entries without a project or task. OIDC account linking now spans the data model, v2 endpoints and a Linked accounts settings page. Webhook forms gained select-all and per-group event toggles, and code blocks in preview mode got copy buttons.
Week of October 26, 2026
What shipped
- Disabled MPTCP on Vikunja's listen sockets via GODEBUG=multipathtcp=0 in the systemd unit and Docker image, closing exposure to a Linux kernel TCP use-after-free on unpatched hosts. Pull request #4285
- Reminders and overdue reminders now go only to task subscribers, so unsubscribing stops them for creators and assignees too. Pull request #4231
- Legal links are now configurable as any number of entries in the same shape as OpenID providers, with legal.imprinturl and legal.privacyurl still working but deprecated with a startup warning. Pull request #4272
- Bot user objects now include a nested
bot_ownerbuilt frombot_owner_id, so users can see who created a bot they encounter. Pull request #4282 - CalDAV calendar-query REPORT now applies prop-filter and text-match to tasks, so UID lookups return the matching task instead of every task in the project. Pull request #4270
- CalDAV uploads of VEVENT, VJOURNAL or unparsable.ics files into a project collection now return 403 instead of 500, so clients stop retrying and blocking sync. Pull request #4259
- Starting a timer with a past start time now ends the user's own entries that span that start, preventing overlapping time entries, with a hint shown in the form. Pull request #4263
- Veans login and veans init now also prompt for a pasted OAuth redirect URL while waiting for the callback, making sign-in usable on headless machines. Pull request #4280
- Admin tables no longer overflow the card, wrap dates and buttons over several lines or drop sort icons below header labels, and the invite links scroll wrapper works. Pull request #4269
- The time tracking section on task detail now uses the same header styling as related tasks and attachments, with a clock icon and a plus button that rotates when open. Pull request #4257
Why it matters
This week fixed several sync and notification problems that users hit directly: CalDAV clients could get every task back on a UID lookup or retry failed uploads forever, and unsubscribing from a task did not stop its reminders. It also addressed overlapping time entries from backdated timers and a kernel-level exposure on hosts running unpatched kernels. On top of that, legal links became configurable and bots now show who created them.
Changelog entry
- Fix(security): disable MPTCP on listen sockets via GODEBUG=multipathtcp=0 Pull request #4285
- Fix(reminders): only send reminders to task subscribers Pull request #4231
- Feat: configurable legal links Pull request #4272
- Feat: show who created a bot user Pull request #4282
- Fix(caldav): apply calendar-query filters to tasks Pull request #4270
- Fix(caldav): answer 403 instead of 500 for non-VTODO uploads Pull request #4259
- Fix(time-tracking): end overlapped entries at backdated timer's start Pull request #4263
- Feat(veans): accept pasted OAuth redirect URL on headless machines Pull request #4280
- Fix(admin): stop admin tables overflowing and wrapping oddly Pull request #4269
- Fix(time-tracking): match task section header to related tasks Pull request #4257
- Fix(shortcuts): ignore keydown events that are not KeyboardEvents Pull request #4253
This week: reminders follow subscriptions only, CalDAV UID lookups return the matching task, unsupported calendar uploads answer 403 instead of 500, backdated timers no longer create overlaps, legal links are configurable, and MPTCP is disabled on listen sockets.
This week's changes to Vikunja focus on fixes people run into daily. Reminders and overdue reminders now go only to task subscribers, so unsubscribing finally stops them for creators and assignees. CalDAV calendar-query applies prop-filter and text-match to tasks, so looking up a task by UID returns that task rather than the whole project, and uploads of VEVENT, VJOURNAL or unparsable files get a 403 instead of a 500 that made clients retry forever. Starting a timer with a past start time now ends overlapping entries. Legal links can be configured as any number of entries, with the old imprint and privacy settings still working but deprecated. Bot user objects show who created them, veans login works on headless machines via a pasted redirect URL, and MPTCP is disabled on listen sockets to
Week of October 19, 2026
What shipped
- Vikunja 2.7.1 was released with 41 security fixes, reworked attachment previews and signed Docker images. Release
- Postgres search became accent-insensitive through the unaccent extension, so manutencao now finds Manutenção and agua finds água. Pull request #4162
- Quick add magic now parses spelled-out relative dates such as in two weeks, in a week and in an hour, with word boundaries so plugin 2 days no longer sets a due date. Pull request #4175
- Time entries returned by the API now include a user object and the time tracking list shows an avatar and name column for each entry. Pull request #4225
- The time entry list now shows the start date and adds an end date when an entry spans midnight. Pull request #4205
- Image previews are now persisted as jpeg in file storage instead of keyvalue, so they survive restarts and are removed with their attachment. Pull request #4147
- A Shift+T shortcut on task detail marks the task done and returns to the list it was opened from, falling back to the task's project. Pull request #4227
- Table view gained a quick-add task input below the table with quick add magic included. Pull request #4221
- Project overview cards now show the same settings dropdown as the sidebar, next to the favorite star. Pull request #4207
- Editor toolbar buttons that do not fit now move into a More menu so the toolbar stays on one row. Pull request #4167
Why it matters
This week brought a security-focused release in 2.7.1 along with fixes that close credential and resource-exhaustion paths, and a set of changes that make daily use smoother: accent-insensitive Postgres search, spelled-out relative dates in quick add, and time entries that show who tracked them and on which date. Users on packaged installs also get a persisted service secret, so restarts no longer log everyone out.
Changelog entry
- Release v2.7.1 with 41 security fixes, reworked attachment previews and signed Docker images. Release
- Security batch of fixes from audit triage across multiple advisories. Pull request #4206
- Bound decode memory for avatars, project backgrounds and OIDC/LDAP avatar crops. Pull request #4201
- Accent-insensitive search on Postgres via the unaccent extension. Pull request #4162
- Quick add magic parses spelled-out relative dates such as in two weeks and in an hour. Pull request #4175
- Time entries return a user object and the list shows avatar and name per entry. Pull request #4225
- Time entry list shows the start date and an end date for entries spanning midnight. Pull request #4205
- Persist attachment image previews as jpeg in file storage. Pull request #4147
- Bound memory used when generating image previews for boards with many covers. Pull request #4146
- Shift+T on task detail marks the task done and returns to the list it was opened from. Pull request #4227
- Add a quick-add task input below the table view. Pull request #4221
- Persist a service secret on package install so restarts no longer log everyone out. Pull request #4197
Vikunja 2.7.1 is out with 41 security fixes, reworked attachment previews and signed Docker images. This week also adds accent-insensitive Postgres search, spelled-out relative dates in quick add, per-user time entries with dates, and jpeg previews kept in file storage. Please up
Vikunja 2.7.1 is out, with 41 security fixes from community reports and an audit, reworked attachment previews and signed Docker images. Please update as soon as you can. Also shipped this week: accent-insensitive search on Postgres using unaccent, quick add magic now understands spelled-out dates like in two weeks, time entries show who tracked them and include the date, image previews are persisted as jpeg in file storage instead of keyvalue, a Shift+T shortcut marks a task done and returns to the list, table view has a quick-add input, and packaged installs now persist a service secret so restarts no longer log everyone out.
Week of October 12, 2026
What shipped
- Bulk task updates now only modify the fields you name, so missing or empty fields no longer wipe a task's description, dates or priority. Pull request #4166
- MCP read and list tools accept an optional fields parameter and return only those paths, keeping large tasks out of the response. Pull request #4181
- Monthly repeating tasks set on the 31st now clamp to the last valid day of shorter months instead of skipping ahead. Pull request #4107
- CSV imports now decode UTF-16 and drop NUL bytes, fixing failures on Postgres with invalid UTF8 byte sequence errors. Pull request #4113
- Task updates with a seven-character
hex_colorsuch as #ff0000 no longer fail with a data too long error on MySQL. Pull request #4127 - Starting a timer now uses the start time chosen in the Log time form instead of the click time. Pull request #4157
- Kanban boards on mobile auto-scroll between buckets while dragging because scroll snapping is disabled during drags. Pull request #4164
- The datepicker moves from hours to minutes after typing the hour, and step buttons are out of the tab order. Pull request #4158
- Quick actions search updates during IME composition, so filtering and tapping results work correctly on Android keyboards. Pull request #4135
- Quick add magic no longer treats a date range as a due date, keeping both dates in the task title. Pull request #4134
Why it matters
This week brings fixes for bulk task updates wiping fields and for monthly repeating tasks that skipped shorter months, along with CSV import decoding and input handling improvements. Users also get the chosen start time for timers and optional fields on MCP read tools.
Changelog entry
- Bulk task update only modifies named fields. Pull request #4166
- Clamp day when advancing monthly repeating tasks. Pull request #4107
- MCP read tools accept optional fields to limit returned paths. Pull request #4181
- CSV import decodes UTF-16 and drops NUL bytes. Pull request #4113
- Strip leading # from
hex_coloron task update. Pull request #4127 - Start timer at the chosen start time. Pull request #4157
- Disable scroll snapping during kanban drags on mobile. Pull request #4164
- Datepicker advances from hour to minutes on typing. Pull request #4158
- Update quick actions search during IME composition. Pull request #4135
- Do not parse date ranges as due date in quick add. Pull request #4134
- Search saved filter titles case-insensitively on Postgres. Pull request #4160
- Apply default due time to explicit dates in quick add. Pull request #4132
Bulk task updates now change only the fields you name, so descriptions, dates and priority are not wiped. Monthly tasks set on the 31st clamp to the last valid day. CSV imports decode UTF-16, and starting a timer uses the start time you picked.
This week the project got fixes for several common workflow problems. Bulk task updates now write only the fields you name, so a missing or empty fields list no longer replaces descriptions, dates or priorities. Monthly repeating tasks set on the 31st now clamp to the last valid day of shorter months. CSV imports decode UTF-16 and drop NUL bytes, fixing failures on Postgres. Starting a timer uses the start time chosen in the Log time form. MCP read tools accept an optional fields parameter to return only requested paths. Kanban auto-scroll works on mobile during drags, and the datepicker jumps to minutes after typing the hour.
Week of September 28, 2026
What shipped
- Vikunja 2.7.0 released with six security fixes, a new date picker, and an MCP server for task integration. Release
- Fixed Postgres connection failures when passwords contain special characters like @ by properly percent-encoding credentials. Pull request #4092
- Due date tooltips now respect 12/24-hour time format preferences, and time inputs can be confirmed with Enter key. Pull request #4078
- Settings now save only changed fields as a JSON Merge Patch instead of re-sending all settings on every change. Pull request #4087
- General settings form no longer reverts changes made elsewhere in the interface when saving. Pull request #4076
- Due reminders now show in the notification bell menu even when the mailer is disabled. Pull request #4085
- Rate limit errors on boot now show a helpful message instead of suggesting the API URL is incorrect. Pull request #4086
- Loading spinners now only appear after 100ms, preventing fast operations from flashing the spinner briefly. Pull request #4083
- Frontend typecheck errors reduced from 183 to zero with strict checking enabled in CI. Pull request #4069
- Sentry event scrubbing now removes plaintext credentials and one-time tokens from forms and query strings. Pull request #4074
Why it matters
Version 2.7.0 brings significant improvements to reliability, security, and user experience. The security fixes address authentication, credential handling, and data exposure issues, while fixes to settings persistence and UI responsiveness make the interface more stable. The database connection fix resolves a critical issue introduced in 2.7.0 that prevented startup with certain PostgreSQL passwords.
Changelog entry
- Fixed Postgres startup failures with passwords containing @ or: characters Pull request #4092
- Due date picker now respects 12/24-hour time format and Enter key confirms time input Pull request #4078
- Settings now send only changed fields as JSON Merge Patch instead of full replacement Pull request #4087
- Settings form no longer reverts changes made by other parts of the interface Pull request #4076
- Due reminders now display in notifications without requiring email delivery enabled Pull request #4085
- Boot screen now shows rate limit message instead of generic API URL error Pull request #4086
- Loading spinners only display after 100ms to prevent flashing on fast operations Pull request #4083
- Failed token refresh no longer logs user out on transient errors or network issues Pull request #4075
- Notification inbox now fetches only once after websocket subscription completes Pull request #4077
- Sentry no longer receives plaintext credentials or one-time tokens from forms and URLs Pull request #4074
- All 183 frontend typecheck errors resolved; CI now enforces zero typecheck violations Pull request #4069
- Admin project list now supports filtering by title and owner, plus column sorting Pull request #3926
Vikunja 2.7.0 is out. Security fixes, a new date picker, settings save only what changed, and an MCP server for AI assistants. Postgres connection fix for special-character passwords included.
Vikunja 2.7.0 released with six security fixes addressing credential exposure, token leakage, and authentication issues. New features include a date picker respecting time format preferences, smarter settings that only save changes, and an MCP server for AI assistant integration. Important fix: Postgres passwords with special characters now work correctly.
Week of September 21, 2026
What shipped
- Timer and task-comment events now reconcile through QueryClient, completing cross-tab timer synchronization. Pull request #3963
- Quick add with repeat now sets first due date to today at the user's default due time instead of leaving it unset. Pull request #4011
- Pasting rich text from webpages or other Vikunja descriptions now preserves formatting instead of converting to markdown. Pull request #4021
- Dragging tasks in Gantt view no longer crashes from recursive cache updates when related tasks are involved. Pull request #3968
- Dragging projects in the sidebar no longer breaks the sidebar layout with null reference errors. Pull request #3970
- Outgoing requests now respect HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables and support private proxies. Pull request #4015
- OIDC users are now linked by verified email when username matching fails, preventing duplicate accounts. Pull request #4012
- API v2 list endpoints now respect the service.maxitemsperpage configuration instead of hardcoding limits. Pull request #3977
- Broken images in user content no longer spam error reports to Sentry. Pull request #3969
- Loading buttons remain focusable for keyboard navigation instead of being disabled. Pull request #3972
Why it matters
This week completed a major refactor of data synchronization across tabs and fixed critical regressions in drag operations, pasting, and quick-add workflows. The stack also adds proper proxy support for corporate environments and improves error reporting.
Changelog entry
- Fix(editor): keep formatting when pasting rich text Pull request #4021
- Fix: support HTTP_PROXY and private proxies for outgoing requests Pull request #4015
- Fix(auth): link OIDC users by email when username fallback misses Pull request #4012
- Feat(quick-add): set first due date for repeating tasks without a date Pull request #4011
- Refactor(websocket): reconcile task and timer query caches Pull request #3963
- Refactor(time-tracking): move timers and entries into QueryClient Pull request #3962
- Refactor(subscriptions): finish generated subscription migration Pull request #3961
- Refactor(comments): migrate comments and paging to v2 queries Pull request #3960
- Refactor(reactions): migrate task and comment reactions to v2 Pull request #3958
- Refactor(attachments): migrate uploads and previews to v2 Pull request #3957
- Fix(api): respect service.maxitemsperpage in v2 list endpoints Pull request #3977
- Fix(frontend): hold sidebar project list updates until a drag ends Pull request #3970
- Fix(tasks): stop related task cache updates from recursing forever Pull request #3968
- Fix(frontend): don't report broken images inside user content Pull request #3969
- Fix(frontend): stop dropping DOMExceptions before they reach sentry Pull request #3971
This week: rich text paste works, quick-add sets due dates, timers sync across tabs, Gantt drag crashes fixed, and HTTP proxies work.
Week highlights: pasting rich text now preserves formatting, repeating tasks get a first due date, timers synchronize across browser tabs, and drag operations in Gantt and sidebar no longer crash. We also added proxy support for corporate networks and fixed OIDC email linking.
Week of September 14, 2026
What shipped
- Expose Vikunja's v2 REST API actions to MCP clients through /api/v2/mcp, deriving 24 typed tools from the OpenAPI document including projects, tasks, labels, comments, assignees, and user search. Pull request #3860
- Users can now discover the MCP endpoint in Settings → MCP, create a token with suitable permissions, and follow connection instructions for their client. Pull request #3864
- Replace the useTaskActions facade with direct mutations, breaking up the deleted Pinia task store into a quick-add composable and direct mutation calls. Pull request #3950
- Activate query-owned tasks and boards with navigation query scopes, date/form boundaries, and quick-add orchestration. Pull request #3941
- Gantt bars narrower than their title now show a tooltip with the full task name on hover. Pull request #3917
- About dialog now shows 'Pro active' when the server advertises enabled pro features via /info. Pull request #3925
- Fix atom feed returning 500 on task assigned notifications by setting Target to feed owner instead of dereferencing nil. Pull request #3916
- Store queued import uploads in the file storage backend (local or S3) instead of temp directory, allowing any instance to run the import job. Pull request #3889
- Parse Z-suffixed timestamps as UTC in caldav instead of server timezone. Pull request #3883
- Add /.well-known/change-password redirect to password change page for password manager support. Pull request #3897
Why it matters
MCP support opens Vikunja to external tools and clients, while the v2 API refactor continues consolidating the frontend onto a modern data layer. Multiple bug fixes resolve issues with feeds, migrations, caldav, and UI stacking.
Changelog entry
- Feat(mcp): expose v2 API tools over streamable HTTP Pull request #3860
- Feat(settings): add MCP connection setup Pull request #3864
- Refactor(tasks): replace the useTaskActions facade with direct mutations Pull request #3950
- Refactor(tasks): activate query-owned tasks and boards Pull request #3941
- Feat(gantt): show full title tooltip on bars too narrow for their label Pull request #3917
- Feat(frontend): show pro license status in about dialog Pull request #3925
- Fix(feeds): don't panic on task assigned notifications in atom feed Pull request #3916
- Feat(migration): store queued import uploads in the file storage Pull request #3889
- Fix(caldav): parse Z-suffixed timestamps as UTC Pull request #3883
- Feat: add /.well-known/change-password redirect Pull request #3897
- Fix(admin): show project owner with user component Pull request #3955
- Fix(frontend): bucket dropdown stacking and close-on-select in task detail Pull request #3947
- Fix(user)!: give colliding TOTP and account-locked error codes unique values Pull request #3901
- Fix(migration): stop file imports from timing out and locking the migration slot Pull request #3827
- Fix(restore): convert numeric bools when restoring into postgres Pull request #3898
- Fix(restore): restore empty json column values as NULL Pull request #3896
MCP tools now available via /api/v2/mcp. Set up in Settings → MCP with a token. Vikunja tasks, projects, labels, and more are now discoverable and callable from MCP clients.
Vikunja now supports Model Context Protocol (MCP), allowing external tools and clients to interact with tasks, projects, labels, comments, and more through typed REST actions. Users can set up MCP connections in Settings and generate tokens with suitable permissions. The v2 API continues its frontend migration with query-owned tasks and direct mutations, while fixes address feeds, caldav timestamps, and import reliability.