Commit Graph

64 Commits

Author SHA1 Message Date
kolaente d467a06e72 feat(frontend): add bot settings page and services 2026-05-01 14:44:10 +00:00
kolaente c4e5f55b6d feat(frontend): add bot user model support and badge 2026-05-01 14:44:10 +00:00
Cristian Ivascu 67ad31c9c8
fix(webhook): use same casing for basic auth fields (#2688) 2026-04-24 11:20:07 +02:00
kolaente 23c82bd5fa feat(frontend): expose isAdmin on current user and add config feature check 2026-04-20 18:55:06 +00:00
kolaente c9b3d4775c feat(admin): add typed models for admin users and overview 2026-04-20 18:55:06 +00:00
kolaente e85f3fd84c feat(settings): add quickAddDefaultReminders field to frontend settings 2026-04-11 21:51:41 +00:00
surfingbytes 84f4c16425
feat(user): add option to hide last viewed projects on overview page (#2429) 2026-04-07 16:56:13 +02:00
kolaente f5752b97e9
feat: add inline PDF viewer for task attachments (#2541) 2026-04-04 21:25:54 +02:00
Lars de Ridder cb4f92980b
feat(task): allow changing bucket from task detail view (#2233) 2026-04-02 12:18:34 +02:00
kolaente bc47826690 feat(frontend): add configurable quick entry shortcut setting
Add desktopQuickEntryShortcut to frontend settings with a Desktop
App section in General settings, only visible when running in the
Electron app. The setting syncs to the desktop main process via
IPC whenever settings are loaded or saved.
2026-04-01 21:38:38 +00:00
kolaente 44d01a0f82 refactor: rename parseTaskText module to quickAddMagic
Rename the frontend parsing module from `parseTaskText` to `quickAddMagic`
for clarity. The module handles much more than text parsing — it's the
core of the quick add magic feature. This rename makes its purpose
immediately obvious and aligns with how the feature is referenced
throughout the UI and documentation.

No logic changes — only directory/file renames and import updates.
2026-03-25 09:38:41 +00:00
kolaente 2e1648ef4c feat: add user-level webhooks settings page
Add a new settings page for managing user-level webhooks. Extract
webhook form into shared WebhookManager component used by both
project and user webhook settings. Add routing, translations,
and navigation entry.
2026-03-08 19:45:53 +01:00
kolaente 52bee379d4 feat: add task duplicate frontend model and service 2026-03-04 17:20:26 +01:00
Weijie Zhao 7297682cad
fix: remove invalidateAvatarCache call that broke request deduplication (#2317)
When multiple avatar components mount with alternating sizes (e.g. 48
and 20), invalidateAvatarCache clears pending requests for ALL sizes of
the same user, causing each call to create a new HTTP request instead of
reusing the pending one.

I noticed this issue when I open a task with 20 comments, the avatar
requests make the service OOM.

<img width="733" height="551" alt="image"
src="https://github.com/user-attachments/assets/db45db31-294c-4363-ad27-38d454b5a6a2"
/>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-02 09:18:20 +01:00
kolaente be1db018fe feat: add frontend session management with refresh tokens
- Session model, type interface, and API service
- Sessions settings page showing active sessions with device info,
  IP address, last active time, and current session indicator
- Auth store updated to use cookie-based refresh tokens for user
  sessions and JWT-based renewal for link shares
- refreshToken() uses Web Locks API to coordinate across browser
  tabs — only one tab performs the refresh, others adopt the result
- 401 response interceptor with automatic retry: detects expired JWT
  (error code 11), refreshes the token, and replays the request
- Interceptor gated to user JWTs only (link shares skip refresh)
- checkAuth() attempts cookie refresh when JWT is expired, allowing
  seamless session resumption after short TTL expiry
- Proactive token refresh on page focus/visibility via composable
- renewToken() tolerates refresh failures when JWT is still valid
2026-02-25 10:30:25 +01:00
kolaente 1dc625f9e8 test: add unit tests for getDisplayName 2026-02-21 23:08:24 +01:00
kolaente 6555595a5c feat(comments): add sort order toggle for task comments
Allow users to switch between oldest-first and newest-first comment
ordering via a toggle button in the comments heading. The preference is
persisted as a frontend setting (commentSortOrder) and passed to the API
as the order_by query parameter so pagination works correctly.

When all comments fit on a single page, toggling reverses them
client-side to avoid an extra API call. New comments are inserted at the
correct position based on the active sort order, and in newest-first
mode the view scrolls to the top after adding a comment.

Link-share users fall back to a local (non-persisted) sort order since
they cannot save user settings.
2026-02-19 14:20:52 +01:00
rhclayto cf029cef0c
feat: add option to send Basic Auth header with webhook requests (#2137)
Resolves https://github.com/go-vikunja/vikunja/issues/2136
Docs PR: https://github.com/go-vikunja/website/pull/284
2026-01-30 15:07:31 +01:00
kolaente 49af08d3f6
feat(filters): add UI for marking saved filters as favorites (#2055)
This PR adds UI support for marking saved filters as favorites. The backend already supports the `is_favorite` field for saved filters, but the frontend didn't expose this functionality. Users can now favorite/unfavorite saved filters just like regular projects.
2026-01-07 16:21:41 +00:00
kolaente 1288d0a99c
feat: make sidebar resizable (#1965)
Closes: #525

* Sidebar width is now adjustable via dragging
* The width is automatically saved to settings and restored across sessions.
2025-12-12 10:46:46 +00:00
kolaente 8b6082e8c7
feat(kanban): add setting to always show bucket task count (#1966)
Added "Always show task count on Kanban buckets" setting in user preferences to control the visibility of task counts on Kanban bucket headers
2025-12-11 23:27:13 +00:00
Copilot 650fb94978
feat: add time display with configurable format (12h/24h) to non-relative date formats (#1807)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kolaente <k@knt.li>
2025-11-13 08:57:06 +00:00
kolaente 3baf6cd477
fix(task): do not parse task comment reactions so that they actually
appear

Resolves https://github.com/go-vikunja/vikunja/issues/1343
2025-08-31 21:25:48 +02:00
kolaente 61400e93a9
feat(task): make default project relation configurable
Resolves https://community.vikunja.io/t/change-default-task-relation/3637
2025-08-31 19:29:13 +02:00
kolaente a81a3ee0e5
feat!: rename right to permission (#1277) 2025-08-13 11:05:05 +02:00
kolaente 5fc255cb36
feat(gantt): rebuild the gantt chart (#1001) 2025-08-12 16:33:50 +02:00
kolaente ebaf4a0aa0 feat(settings): show extra settings links on user settings page 2025-08-03 13:25:32 +02:00
kolaente b444cf8d43
feat: add display setting for dates (#1192) 2025-07-30 09:43:37 +02:00
kolaente 2fd3046acc chore: rename user_id field to username
The field is actually the username, but it was called user_id for some reason. This change makes this more clear
2025-07-28 10:56:36 +02:00
kolaente a26fb787f9
fix(labels): correctly fall back to variable colors when no label color is set (#1124) 2025-07-15 21:15:09 +00:00
Dominik Pschenitschni 342bbd6192 fix: correct comments 2025-07-02 17:46:21 +02:00
kolaente 3b05f7859f
fix(users): refresh initials avatar refresh after name change (#1047) 2025-06-30 16:20:54 +00:00
kolaente bddba8646d
feat: add logo change toggle setting (#1031) 2025-06-26 15:59:34 +00:00
Dominik Pschenitschni a2ac4bdc7f
fix: correct Team.createdBy type (#965) 2025-06-16 21:27:43 +00:00
kolaente 59a0b9c40d
feat(auth): require auth to fetch avatars (#930) 2025-06-14 13:12:41 +00:00
Dominik Pschenitschni ed5d983d18 feat: consistent sorting 2025-06-02 22:27:03 +02:00
Dominik Pschenitschni bb9dc03351
fix: add newline at end of line (#827) 2025-05-24 13:57:47 +02:00
kolaente b635c96923
fix(auth): set default data to empty when initializing password reset
Resolves https://github.com/go-vikunja/vikunja/issues/776
2025-05-16 22:08:27 +02:00
kolaente fdc0860252
fix(auth): only use query parameters instead of local storage for password reset token (#770)
Resolves https://github.com/go-vikunja/vikunja/issues/682
2025-05-14 20:51:45 +00:00
kolaente d615e2038b
fix(user): show medium priority by default 2025-03-25 11:24:40 +01:00
kolaente e287364b78
fix(team): do not allow leaving exernal teams 2025-03-20 17:13:51 +01:00
kolaente 060adac797
fix(kanban): do not set filter by default
This fixes a bug where, upon updating a bucket, it would set a default filter of done = false (which is the default filter for the list view), coming from the model.

Partially resolves https://community.vikunja.io/t/bugs-around-project-duplication-with-kanban-buckets/3433/3
2025-03-19 19:46:52 +01:00
kolaente 617070f9f7
fix(kanban): use full updated kanban bucket when moving task 2025-03-19 16:06:20 +01:00
Leonardo Cossutta 357dbc1c69 feat(labels): show priority labels based on minimum priority setting (#3075)
I think showing the priority of a task regardless of its value can be useful, the option for the user to choose the minimum priority for visualization is exposed in the settings. The default value is `priority.HIGH`, that corresponds to the current behavior.

Co-authored-by: konrad <k@knt.li>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/3075
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Leonardo Cossutta <leonardo.cossutta@gmail.com>
Co-committed-by: Leonardo Cossutta <leonardo.cossutta@gmail.com>
2025-03-19 12:56:19 +00:00
kolaente 5c6be117fe
fix(kanban): increase dates when moving a task into the done bucket
Resolves https://community.vikunja.io/t/unable-to-drag-a-repeating-task-to-done-bucket/3321/2
Resolves https://github.com/go-vikunja/vikunja/issues/402
2025-03-16 17:19:51 +01:00
kolaente cd304b9e4e
feat(tasks): fetch comments with the task 2025-01-24 13:10:38 +01:00
kolaente b3040b8466
fix(notifications): handle user mentioned notification 2024-12-11 19:15:09 +01:00
kolaente 624907ad6a fix: make search in saved filter work 2024-11-19 16:27:22 +00:00
Sebastien Danthinne 75dddc9dbe fix(attachments): Add .jpeg to previewable image (#2770)
This is necessary to be able to set .jpeg images as the background for kanban tiles. This extension is equivalent to .jpg, and is the default extension for uploading from iOS.

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2770
Co-authored-by: Sebastien Danthinne <sebastien@danthinne.com>
Co-committed-by: Sebastien Danthinne <sebastien@danthinne.com>
2024-10-21 15:04:17 +00:00
kolaente 4dd9d5de67
fix(filters): correctly transform and populate saved filter when creating and editing
This fixes a bug where the checkbox "include nulls" during creation was not checked but would be saved as such.
2024-09-19 12:21:19 +02:00