Commit Graph

21 Commits

Author SHA1 Message Date
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 cdca790325 fix: guard against undefined route.name in auth layout check
route.name can be undefined during initial route resolution or for
unnamed routes. Without this guard, AUTH_ROUTE_NAMES.has() would
return false and the authenticated layout could flash briefly.
2026-02-06 10:58:50 +01:00
kolaente e9a6abfe44 refactor: extract auth route names into shared constant
Move the list of authentication route names (login, register, password
reset, openid, link-share) into a shared constant in
src/constants/authRouteNames.ts. Use it in both App.vue (layout gate)
and router/index.ts (auth redirect guard) to keep them in sync.
2026-02-06 10:58:50 +01:00
kolaente 5d9f62cc93 fix: prevent auth layout swap while still on login/register route
The v-if in App.vue switches to the authenticated layout (navbar +
sidebar) as soon as authStore.authUser becomes truthy. But Vue's
reactivity flush runs before the await continuation in submit(), so
the layout swaps while the route is still /login, causing the login
form to flash inside the authenticated shell for ~250ms.

Fix by adding a route check: don't show the authenticated layout while
the current route is an auth page (login, register, password reset,
openid). The NoAuthWrapper stays visible until redirectIfSaved()
navigates away, then the authenticated layout renders cleanly.
2026-02-06 10:58:50 +01:00
kolaente a89855a9d1 fix: default language in App.vue types 2025-11-22 17:23:03 +01:00
kolaente 2d37c0fede
fix(user): race condition during email confirmation (#1575) 2025-09-30 20:14:25 +02:00
kolaente 3658cde42f refactor: use query parameter only when looking for password reset token 2025-06-03 19:28:45 +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 f6bfe2f13c
fix(quick actions): show saved filters in search results
This fixes a bug where saved filters would not show up in quick actions search results. It was caused by explicitely only searching for projects.
During the debugging of this, I've discovered the search parameter is ignored when searching for filters.

Resolves https://community.vikunja.io/t/virtual-projects-a-k-a-saved-filters-do-not-show-up-in-search-bar-results/3180/4
2025-01-21 11:07:28 +01:00
Dominik Pschenitschni 460d6ac8a4 fix: vue/no-boolean-default NoAuthWrapper
I'm still unsure if we should keep this rule in general, in this specific case I think it makes sense to reverse the logic and enable this api config explicitly
2025-01-20 11:30:39 +00:00
Dominik Pschenitschni a6644d9c89 feat: move loading logic from ready to base store 2024-12-28 10:36:26 +00:00
Dominik Pschenitschni e8bf5e33f7 feat: use sass-embedded 2024-11-02 17:39:20 +00:00
Dominik Pschenitschni 43e38fae17 feat: rename TheNavigation to AppHeader 2024-07-07 14:57:23 +00:00
Dominik Pschenitschni 23707fc493 feat: eslint enforce vue/component-name-in-template-casing 2024-06-17 21:01:36 +00:00
Dominik Pschenitschni f07d291bc7
feat(components): align component name casing Ready 2024-06-17 13:41:36 +02:00
Dominik Pschenitschni ec2e1ab982
feat(components): align component name casing Notification 2024-06-17 13:41:35 +02:00
Dominik Pschenitschni 8e8846454c
feat(components): align component name casing NoAuthWrapper 2024-06-17 13:41:35 +02:00
Dominik Pschenitschni 2bd80aa505
feat(components): align component name casing ContentLinkShare 2024-06-17 13:08:00 +02:00
Dominik Pschenitschni 58baf141d5 feat(components): align component name casing ContentAuth 2024-06-17 09:29:12 +00:00
kolaente 6ad83c0685
chore: do not import message dynamically
Since it was not done consistently, it would not get imported dynamically anyway. This fixes the compile warnings.
2024-03-20 10:52:59 +01:00
kolaente fc4676315d
chore: move frontend files 2024-02-07 14:56:56 +01:00
Renamed from src/App.vue (Browse further)