renovate[bot]
49ac0348e4
chore(deps): update dev-dependencies
2026-04-22 06:31:37 +00:00
Frederick [Bot]
413e3dec1c
chore(i18n): update translations via Crowdin
2026-04-22 01:28:34 +00:00
renovate[bot]
0b2b5b580d
chore(deps): update dev-dependencies
2026-04-21 18:38:21 +00:00
kolaente
2829a851df
feat(a11y): associate errors with inputs in FormInput and FormSelect
...
Wire aria-invalid, aria-describedby and role=alert on the form
primitive components so errors raised directly on FormInput or
FormSelect are announced by assistive tech and programmatically
linked to the control.
2026-04-21 11:44:36 +00:00
kolaente
fd1a329f5d
feat(a11y): add descriptive labels to task checkboxes
...
Adds aria-label='Mark {task} as done' to task checkboxes so
screen readers can distinguish between them. Passes ariaLabel
prop through FancyCheckbox → BaseCheckbox → input.
Fixes WCAG 2.4.6 (Headings and Labels).
2026-04-21 11:44:36 +00:00
kolaente
6f85a7fb6b
feat(a11y): fix heading hierarchy across pages
...
- Home: greeting H2 → H1 (page needs a top-level heading)
- Task detail: task ID H1 → span (only title should be H1)
- Task detail: H6 breadcrumb → nav element
- App header: project title H1 → span (avoids duplicate H1)
Fixes WCAG 1.3.1 (Info and Relationships) and 2.4.6 (Headings).
2026-04-21 11:44:36 +00:00
kolaente
c1f74ae9dc
feat(a11y): add labels to color picker and sort select
...
Adds aria-label to the color input and sort select elements
so screen readers announce their purpose.
Fixes WCAG 3.3.2 (Labels or Instructions).
2026-04-21 11:44:36 +00:00
kolaente
4618f3491b
feat(a11y): associate form errors with input fields
...
Adds aria-invalid, aria-describedby, and role='alert' to error
messages in FormField and Password components so screen readers
announce validation errors.
Fixes WCAG 3.3.1 (Error Identification).
2026-04-21 11:44:36 +00:00
kolaente
a0d0379e95
feat(a11y): fix logo link accessible name to include 'Vikunja'
...
Changes aria-label from 'Overview' to 'Vikunja home' so the
accessible name includes the visible text.
Fixes WCAG 2.5.3 (Label in Name).
2026-04-21 11:44:36 +00:00
kolaente
a34c247611
feat(a11y): use autocomplete='new-password' on register form
...
Adds autocomplete prop to Password component (defaults to
'current-password'). Register page passes 'new-password' so
password managers offer to generate a strong password.
Fixes WCAG 1.3.5 (Identify Input Purpose).
2026-04-21 11:44:36 +00:00
kolaente
21b7ae3f9f
feat(a11y): add accessible names to modal dialogs
...
Passes aria-label to the <dialog> element via attribute inheritance
so screen readers announce the dialog's purpose.
Fixes WCAG 4.1.2 (Name, Role, Value).
2026-04-21 11:44:36 +00:00
kolaente
40ff558540
feat(a11y): add aria-live region to toast notifications
...
Adds role='status' and aria-live='polite' to the notification
container so screen readers announce status messages.
Fixes WCAG 4.1.3 (Status Messages).
2026-04-21 11:44:36 +00:00
kolaente
11ffb530be
feat(a11y): add accessible names to icon-only buttons
...
Adds aria-label to sidebar toggle, mobile overlay, banner close,
modal close, quick actions close, task detail close, and dropdown
trigger buttons. Adds triggerLabel prop to Dropdown component.
Fixes WCAG 4.1.2 (Name, Role, Value).
2026-04-21 11:44:36 +00:00
kolaente
732b65ba7c
feat(a11y): add skip navigation link and main landmark on auth pages
...
Adds a visually-hidden skip-to-content link as the first focusable
element. Adds id='main-content' to the <main> element. Changes
<section> to <main> on auth pages for proper landmark navigation.
Fixes WCAG 2.4.1 (Bypass Blocks).
2026-04-21 11:44:36 +00:00
kolaente
eb441f8b0c
feat(a11y): add i18n keys for accessibility labels
2026-04-21 11:44:36 +00:00
renovate[bot]
9d25864b25
chore(deps): pin dependency otplib to 12.0.1
2026-04-21 11:14:41 +00:00
kolaente
b90e67d7ca
test(e2e): await DELETE in caldav token revoke test to avoid race
2026-04-21 10:50:09 +00:00
kolaente
be28ec70d8
test(e2e): await DELETE in session revoke test to avoid race
2026-04-21 10:50:09 +00:00
kolaente
c0101afb59
test(e2e): widen recurrence due-date tolerance to 5s
...
CI shard 4 hit a ~996ms skew between the JS-constructed originalDue and
the backend's advanced due date, enough to bust the <500ms precision
bound. Bump precision to -4 (<5s) — still tight enough to confirm the
regeneration advanced by ~1 day, loose enough to absorb sub-second
round-tripping through Date → ISO → Go time.Time → JSON.
2026-04-21 10:50:09 +00:00
kolaente
c3b86b2102
test(e2e): cover link share permission tiers
2026-04-21 10:50:09 +00:00
kolaente
17e0dde7d3
test(e2e): cover link share password protection
2026-04-21 10:50:09 +00:00
kolaente
19d3b9c4bb
test(e2e): cover team share revocation
2026-04-21 10:50:09 +00:00
kolaente
f20267164f
test(e2e): cover team READ_WRITE permission
2026-04-21 10:50:09 +00:00
kolaente
be225fd4d3
test(e2e): cover team READ permission boundary
2026-04-21 10:50:09 +00:00
kolaente
01b71577d7
test(e2e): add TeamProjectFactory
2026-04-21 10:50:09 +00:00
kolaente
268c5daf8b
test(e2e): drop unused authenticatedPage from recurrence beforeEach
2026-04-21 10:50:09 +00:00
kolaente
37d7f90acf
test(e2e): cover monthly repeat mode UI
2026-04-21 10:50:09 +00:00
kolaente
637d810ff7
test(e2e): assert recurring task regenerates on complete
2026-04-21 10:50:09 +00:00
kolaente
c93f644363
test(e2e): cover recurrence preset buttons
2026-04-21 10:50:09 +00:00
kolaente
f2eee5d8a1
test(e2e): assert readers cannot delete attachments
2026-04-21 10:50:09 +00:00
kolaente
05432d3993
test(e2e): cover attachment deletion
2026-04-21 10:50:09 +00:00
kolaente
db634093e0
test(e2e): drop unused authenticatedPage from webhooks beforeEach
2026-04-21 10:50:09 +00:00
kolaente
425889b879
test(e2e): create and delete a webhook
2026-04-21 10:50:09 +00:00
kolaente
5a93149849
test(e2e): require at least one webhook event
2026-04-21 10:50:09 +00:00
kolaente
2f2aafadfd
test(e2e): validate webhook target url
2026-04-21 10:50:09 +00:00
kolaente
8bcdc314b1
test(e2e): cover data export request flow
2026-04-21 10:50:09 +00:00
kolaente
a9f8fbaba8
test(e2e): cover scheduled deletion cancel flow
2026-04-21 10:50:09 +00:00
kolaente
2a5e4f2b84
test(e2e): cover account deletion request flow
2026-04-21 10:50:09 +00:00
kolaente
0902c009f6
test(e2e): assert current session has no delete control
2026-04-21 10:50:09 +00:00
kolaente
76055b622b
test(e2e): assert session delete breaks refresh
2026-04-21 10:50:09 +00:00
kolaente
cf9d0a26ab
test(e2e): cover sessions list with current marker
2026-04-21 10:50:09 +00:00
kolaente
7145440fe6
test(e2e): assert wrong password blocks email change
2026-04-21 10:50:09 +00:00
kolaente
3dfbcae4d5
test(e2e): cover caldav token deletion
2026-04-21 10:50:09 +00:00
kolaente
cd9d2a2245
test(e2e): cover caldav token creation end-to-end
2026-04-21 10:50:09 +00:00
kolaente
912d6a134f
test(e2e): assert wrong TOTP passcode is rejected
2026-04-21 10:50:09 +00:00
kolaente
96685fdc5b
test(e2e): cover TOTP disable flow
2026-04-21 10:50:09 +00:00
kolaente
5266392bb7
test(e2e): cover TOTP enrollment flow
2026-04-21 10:50:09 +00:00
kolaente
3b7c098c84
test(e2e): add otplib dev dep for TOTP tests
2026-04-21 10:50:09 +00:00
kolaente
3816349258
test(e2e): add TotpFactory with fixed seed
2026-04-21 10:50:09 +00:00
kolaente
3271c8600a
test(e2e): add WebhookFactory
2026-04-21 10:50:09 +00:00