16768 Commits
Author SHA1 Message Date
Frederick [Bot] d2c9aee4f8 chore(i18n): update translations via Crowdin 2026-11-08 00:07:20 +00:00
kolaente 1790458067 feat(ci): include PR number in preview build version 2026-11-07 18:37:49 +01:00
kolaente 1a7ea96a3b fix(ci): describe PR head commit in preview builds 2026-11-07 18:37:49 +01:00
kolaenteandTink e086764a9d test(e2e): cover date and time reminders through the shared date picker 2026-11-07 17:54:37 +01:00
kolaenteandTink 7dd6cf569a fix(reminders): use the regular date picker for date and time reminders
The absolute reminder form had its own chips-only calendar and confirm button. It now shows the same panel as the due, start and end date pickers. Clear only resets the selection; nothing is saved until Confirm.
2026-11-07 17:54:37 +01:00
kolaenteandTink 8132a02b91 refactor(datepicker): extract the popup content into DatepickerPanel
The calendar, shortcuts and footer can now be reused outside the trigger-and-popup Datepicker. The bottom-sheet header action style moves to Modal so other sheets can use it.
2026-11-07 17:54:37 +01:00
kolaenteandTink 1f263002f1 test(e2e): check the date picker buttons carry their property name 2026-11-07 17:54:37 +01:00
kolaenteandTink 6d7e9d295a fix(task-detail): name the date picker buttons after their property
Screen readers announced the due, start and end date buttons only by their value. Datepicker now accepts ariaLabelledby and combines it with the trigger's own id, like the repeat button.
2026-11-07 17:54:37 +01:00
kolaenteandTink c3d408e62d test(e2e): pick a team member with Enter without submitting the form 2026-11-07 17:54:37 +01:00
kolaenteandTink bb537d2c19 test(e2e): keep the editor draft when Escape dismisses the slash menu 2026-11-07 17:54:37 +01:00
kolaenteandTink 7c16784741 test(e2e): close only the innermost popup on Escape in the task modal 2026-11-07 17:54:37 +01:00
kolaenteandTink 3916edbe1f fix(multiselect): stop Enter from submitting the surrounding form while results are open
Results are picked on Enter keyup, but the keydown already submitted the form, e.g. on Edit Team.
2026-11-07 17:54:37 +01:00
kolaenteandTink f48a4976bd fix(editor): let the slash and emoji menus handle Escape before discarding the edit
The discard-on-Escape extension ran before the suggestion plugins, so dismissing the slash menu threw away the unsaved description or comment.
2026-11-07 17:54:37 +01:00
kolaenteandTink 56f7acd215 fix(dropdown): keep the surrounding dialog open when Escape closes the menu
stopPropagation alone doesn't cancel the native <dialog> close request, so one Escape closed both the menu and the task modal.
2026-11-07 17:54:37 +01:00
kolaenteandTink fedbc78d14 test(e2e): keep the task modal open when the file picker is cancelled 2026-11-07 17:54:37 +01:00
kolaenteandTink 2a381def4c fix(modal): ignore cancel events bubbling up from inside the dialog
Dismissing a native file picker fires a bubbling cancel on the file input, which the task modal's <dialog> treated as its own and closed. Escape still closes the modal, since the dialog's own cancel targets the dialog.
2026-11-07 17:54:37 +01:00
kolaenteandTink bba2e0cfd6 refactor(task-detail): move the sidebar control styles out of TaskPropertyRow
The row now only styles its own layout, label, remove button and hover reveal. Overrides for the controls slotted into it live in TaskDetailView, which renders them, so their root elements match without :deep.
2026-11-07 17:54:37 +01:00
kolaenteandTink ae3693d951 refactor(form-select): add a flat variant for the task sidebar selects
Moves the borderless select styling out of TaskPropertyRow's :deep rules into the component that renders the markup.
2026-11-07 17:54:37 +01:00
kolaenteandTink c27263aa77 refactor(task-detail): build the priority and progress selects on FormSelect 2026-11-07 17:54:37 +01:00
kolaenteandTink a85ab01e07 feat(task-detail): stack assignee avatars like the task list and spread them on hover
Avatars overlap by the same proportion as in list and kanban and spread to the 4px gap on row hover or keyboard focus, so the remove buttons stay usable. Touch devices always show them spread.
2026-11-07 17:54:37 +01:00
kolaenteandTink b250b0a212 fix(task-detail): align spacing, hover and focus styles across sidebar controls 2026-11-07 17:54:37 +01:00
kolaenteandTink 393e7fdea2 test(e2e): cover tabbing past assignee suggestions 2026-11-07 17:54:37 +01:00
kolaenteandTink c489794cbb fix(multiselect): keep search results out of the tab order
Arrow keys still move into the list. The scrollable list itself is kept out too, and the results close when focus moves to another field, since the absolutely positioned list would otherwise cover it.
2026-11-07 17:54:37 +01:00
kolaenteandTink 62ad454cec refactor(task-detail): extract the property row into TaskPropertyRow
Renders the row wrapper, visibility rule and remove button once instead of in ten copies.

Address pr-swarm finding (maintainer decision): duplicated property rows.
2026-11-07 17:54:37 +01:00
kolaenteandTink e9a4d71179 test(e2e): check typing in the emoji picker fires no task shortcuts
Address pr-swarm finding: shadow DOM guard only covered at helper level.
2026-11-07 17:54:37 +01:00
kolaenteandTink bf3b2e4e74 test(e2e): cover the label and assignee shortcuts with values set
Address pr-swarm finding: shortcuts besides d untested.
2026-11-07 17:54:37 +01:00
kolaenteandTink 73f5de1b0b test(e2e): cover the read-only task detail view for link shares
Address pr-swarm finding: read-only reminder fix untested.
2026-11-07 17:54:37 +01:00
kolaenteandTink 380e4872f8 test(e2e): check the bucket dropdown stacks above the remove assignee buttons 2026-11-07 17:54:37 +01:00
kolaenteandTink 8197b5bfbb test(e2e): adapt task detail specs to the property sidebar 2026-11-07 17:54:37 +01:00
kolaenteandTink 8b78180a66 test(task-detail): cover property rows, revealed sections and repeat summary 2026-11-07 17:54:37 +01:00
kolaenteandTink 604f367e0d fix(assignees): preload project members when the input itself gets focus
The preload listened for focus on the Multiselect root, which only fires when
the root is focused programmatically. Clicking straight into the input showed
no suggestions until the user typed.
2026-11-07 17:54:37 +01:00
kolaenteandTink 1a1dfc0676 feat(task-detail): replace reveal-on-click sidebar with always-visible property panel
Value fields (assignees, labels, priority, progress, dates, reminders,
repeat, color) are now compact rows in the sidebar that show their current
state and are edited in place. One-shot actions (subscribe, attachments,
relation, time tracking, move, duplicate, delete) move into an ellipsis
menu next to the mark-done and favorite buttons.

Read-only users only see the rows that have a value. The sidebar stacks
label above value when its column gets narrow, and the properties render
above the description on mobile.

See https://community.vikunja.io/t/ux-proposal-task-detail-simplify-sidebar/4755
2026-11-07 17:54:37 +01:00
kolaenteandTink 6bb38aae8d feat(color-picker): allow hiding the reset button 2026-11-07 17:54:37 +01:00
kolaenteandTink fa8aeee749 fix(reminders): don't let read-only users open the reminder editor
ReminderDetail ignored the disabled prop, so the popup opened and edited the
local draft even without write access. Reminders also kept showing the
"Add a reminder" trigger when disabled.
2026-11-07 17:54:37 +01:00
kolaenteandTink 3f3eb56aa3 fix(dropdown): style slotted dividers with the theme border color 2026-11-07 17:54:37 +01:00
kolaente 8de2bd8ea5 fix(kanban): stop bucket search leaking into other filter buckets
In filter bucket mode a bucket's search was written into the shared search options and never reset, so buckets processed afterwards (random map order) inherited it.
2026-11-07 17:38:21 +01:00
kolaente 8ba44b4122 fix(filters): apply stored search text of saved filters
TaskCollection.ReadAll built the saved filter's collection but recursed with the request search only, so filters.s was never applied. The stored search now takes precedence, matching view and bucket filter searches.
2026-11-07 12:58:48 +01:00
kolaente 38899c19a5 feat(emoji): hide emoji the OS cannot render
Like the previous picker, detect the newest emoji version the OS font draws in colour with a canvas test and filter the shared catalog, so the picker and the editor autocomplete don't offer blank boxes.
2026-11-07 11:13:53 +01:00
kolaente bd598dcbac feat(emoji): load emoji data from emoji-picker-element-data package
Replaces the hand-copied public/emojis.json (1.6.0) with a pinned
devDependency so Renovate keeps it current. Bumps data to 1.8.0 (Emoji 17).
2026-11-07 11:13:53 +01:00
kolaente af289045d2 feat(emoji): replace reaction picker with native Vue component 2026-11-07 11:13:53 +01:00
kolaente 7f993449af refactor(emoji): share catalog loading with autocomplete 2026-11-07 11:13:53 +01:00
kolaente bea70c0afd fix(auth): require a password model in every form 2026-11-06 17:51:10 +01:00
kolaente aa96c68277 fix(auth): validate password before Enter submission 2026-11-06 17:51:10 +01:00
kolaente b9063c79cf fix(editor): show code copy buttons only in preview mode 2026-11-06 12:37:31 +01:00
kolaente 0b0b424e83 feat(editor): add copy buttons to code blocks 2026-11-06 12:37:31 +01:00
Frederick [Bot] 54bc7d316c chore(i18n): update translations via Crowdin 2026-11-05 21:57:28 +00:00
kolaente aa9e8b16d0 fix(navigation): highlight trash on both tabs 2026-11-05 22:37:27 +01:00
kolaente 6e788bf87c chore: v2.8.0 release preparations v2.8.0 2026-11-05 16:08:13 +01:00
kolaente 0b749163dc [skip ci] Updated yaegi symbols 2026-11-05 16:08:13 +01:00
Frederick [Bot] 986ce06e5c chore(i18n): update translations via Crowdin 2026-11-05 14:43:53 +00:00