Commit Graph

124 Commits

Author SHA1 Message Date
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
Noah Neukam d7722d0193
fix(menu): prevent dropdown from closing when cursor crosses offset gap (#2367) 2026-03-05 12:50:04 +01:00
kolaente 79cd3433f5 refactor(shortcuts): use event.code for raw keyboard handlers
Change e.key to e.code in global keyboard shortcut handlers for
consistency with the new event.code-based shortcut system:
- ProjectList.vue: 'j'/'k'/'Enter' -> 'KeyJ'/'KeyK'/'Enter'
- useGanttBar.ts: 'ArrowLeft'/'ArrowRight' (identical values, for consistency)
- Modal.vue: 'Escape' (identical value, for consistency)
2026-03-03 14:00:25 +01:00
kolaente e3fdaed94a refactor(shortcuts): replace eventToHotkeyString with eventToShortcutString
Migrate all imperative shortcut matching from @github/hotkey's
eventToHotkeyString to the new event.code-based eventToShortcutString.

Updated comparison strings:
- 'Meta+k'/'Control+k' -> 'Meta+KeyK'/'Control+KeyK'
- 'Control+s'/'Meta+s' -> 'Control+KeyS'/'Meta+KeyS'
- 'Control+.' -> 'Control+Period'
- '.' -> 'Period'
- 'Enter' stays 'Enter' (identical in event.code)
2026-03-03 14:00:25 +01:00
kolaente 958bd133fd fix(frontend): use mbs-2 utility class instead of scoped CSS
Replace the scoped .notification-actions rule with the project's
mbs-2 utility class for margin-block-start spacing.
2026-03-03 11:46:18 +01:00
kolaente 59b3dd32ac fix(frontend): use semantic class instead of targeting Tailwind utility
Replace .tw\:flex CSS selector with a .notification-actions class
in Notification.vue, as suggested in review.
2026-03-03 11:46:18 +01:00
kolaente a08667b669 feat(frontend): upgrade Tailwind CSS from v3 to v4
- Replace tailwindcss v3 with tailwindcss v4 + @tailwindcss/vite plugin
- Create dedicated tailwind.css entry with granular imports (skip preflight)
- Use CSS-first config with prefix(tw) instead of JS config
- Switch from PostCSS plugin to Vite plugin for better performance
- Update class prefix from tw- (dash) to tw: (colon) in all Vue files
- Remove @tailwind directives from global.scss
- Delete tailwind.config.js (replaced by CSS directives)
- Update stylelint at-rules for v4 directives
2026-03-03 11:46:18 +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
kolaente 65980423c9 fix: remove usage of .buttons 2026-01-08 13:23:38 +01:00
kolaente 0ebecb99ba
feat: merge duplicate notifications (#2056)
Use the `ignoreDuplicates` prop from vue3-notification to ignore duplicate notifications, show a count (×N) instead when notifications are merged.

Superseeds and closes https://github.com/go-vikunja/vikunja/pull/971

---------

Co-authored-by: Dominik Pschenitschni <6173598+dpschen@users.noreply.github.com>
2026-01-06 17:36:29 +00:00
kolaente 6afb166dd2
feat: add shortcut to quickly copy task identifier, title and url to clipboard (#2028)
This adds the following shortcuts:

- `.` to copy the task identifier
- `..` to copy the task identifier and title
- `...` to copy the task identifier, title, and url
- `Control + .` to copy the task url
2025-12-28 10:54:41 +01:00
kolaente 2976d6f676 fix: use shift+r for reminder shortcut on apple devices 2025-11-26 23:58:01 +01:00
Copilot 6b0a05b5ca
Use Cmd+K for quick actions on macOS instead of Ctrl+K (#1837)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kolaente <13721712+kolaente@users.noreply.github.com>
2025-11-17 22:56:54 +00:00
kolaente 4383948275
fix: prevent duplicate CreateEdit submissions (#1541) 2025-10-11 20:24:21 +00:00
kolaente 5568d751bf
fix(rtl): make sure modals are centered
Resolves https://github.com/go-vikunja/vikunja/issues/1544
2025-10-08 18:28:54 +02:00
Weijie Zhao d7d3078de5
fix: prevent keyboard events during IME composition (#1535) 2025-10-06 18:17:52 +02:00
kolaente a7eebaffb0
fix: position dropdown absolute, not fixed (#1552)
Fixes a regression introduced in 32501bc93b
2025-09-28 16:18:25 +02:00
kolaente 32501bc93b
fix(menu): make sure dropdown menu changes direction when screen is too
small

Resolves https://github.com/go-vikunja/vikunja/issues/1523
2025-09-22 14:03:13 +02:00
kolaente 0dee1789a2
fix(filter): ensure filter query param is added to the page correctly (#1471) 2025-09-11 15:24:12 +00:00
kolaente d147a01c18
fix(filter): add close button for filter popup on mobile with accurate spacing (#1466)
Resolves #1464
2025-09-11 11:27:05 +00:00
kolaente 2394d1f8e0
fix: lint 2025-08-14 17:15:15 +02:00
kolaente 1173f83525
fix(auth): make text always white on image 2025-08-14 17:08:40 +02:00
kolaente 5fc255cb36
feat(gantt): rebuild the gantt chart (#1001) 2025-08-12 16:33:50 +02:00
kolaente b99b7bf131 feat(filter): rebuild filter input component 2025-08-11 17:22:48 +02:00
kolaente 63319e19ad fix: style issues 2025-08-06 10:55:23 +02:00
kolaente 8fce55753c fix(rtl): modal positioning 2025-08-03 15:05:48 +02:00
kolaente a9924881c2 feat: replace bottom with logical properties 2025-08-03 15:05:48 +02:00
kolaente 0f5e0019ae feat: replace right with logical properties 2025-08-03 15:05:48 +02:00
kolaente 0159ddc313 feat: replace top with logical properties 2025-08-03 15:05:48 +02:00
kolaente 55180b60a1 feat: replace border-left with logical properties 2025-08-03 15:05:48 +02:00
kolaente 5cd256c485 feat: replace border-bottom with logical properties 2025-08-03 15:05:48 +02:00
kolaente 21943b61eb feat: replace border-top with logical properties 2025-08-03 15:05:48 +02:00
kolaente a25a4a00c9 feat: replace absolute left position with inset-inline-start 2025-08-03 15:05:48 +02:00
kolaente d290f2e99c feat: add logical utils 2025-08-03 15:05:48 +02:00
kolaente 16f7fa087a fix: convert all css properties to logical 2025-08-03 15:05:48 +02:00
kolaente ebaf4a0aa0 feat(settings): show extra settings links on user settings page 2025-08-03 13:25:32 +02:00
kolaente adaafafe90
fix: add close button to keyboard shortcut button
Resolves https://community.vikunja.io/t/ios-view-bug-project-info-screen-has-no-way-to-exit/3457/10
2025-07-25 09:53:27 +02:00
kolaente 1f8150b167
feat(list): add j/k keyboard navigation (#1040)
Partially resolves https://community.vikunja.io/t/keyboard-shortcut-next-previous-tasks-in-a-project/1971/7?u=kolaente
2025-06-27 11:46:48 +00:00
Dominik Pschenitschni 454418ee63 chore: fix indentation 2025-06-19 10:53:35 +02:00
kolaente 9bab44d5de
feat: add keyboard shortcut to open project from task detail (#940) 2025-06-16 12:31:02 +00:00
kolaente 59a0b9c40d
feat(auth): require auth to fetch avatars (#930) 2025-06-14 13:12:41 +00:00
kolaente 58236884dd
fix: close modals by pressing escape (#932) 2025-06-12 11:34:19 +00:00
Dominik Pschenitschni 1f56b3615c feat: unify component name 2025-05-28 15:13:08 +02:00
Dominik Pschenitschni bb9dc03351
fix: add newline at end of line (#827) 2025-05-24 13:57:47 +02:00
kolaente 4e6a272a0f chore: do not set default for required value in Subscription 2025-05-13 22:01:54 +02:00
kolaente 22c1fa2be1 chore: make prop optional in Flatpickr 2025-05-13 22:01:54 +02:00
kolaente 359b75feac chore: make prop optional in PaginationEmit 2025-05-13 22:01:54 +02: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 ce57d85f04
fix: show close button on mobile popups
Resolves https://community.vikunja.io/t/ios-view-bug-project-info-screen-has-no-way-to-exit/3457/4
2025-03-09 12:32:01 +01:00
Dominik Pschenitschni 522f1cb596 feat: arm 'vue/no-setup-props-reactivity-loss' rule 2025-01-26 21:27:32 +01:00