This PR surfaces API validation errors from the registration endpoint directly onto the corresponding form fields, instead of only showing a generic "invalid data" message. A new `parseValidationErrors` helper extracts field names and messages from the API's `invalid_fields` array (e.g. `["email: email is not a valid email address"]`) and maps them to the appropriate form fields. The Register component integrates this parser into its error handling, prioritizing client-side validation but falling back to server-side field errors when present. Errors are cleared as the user types. A follow-up commit addressed PR review feedback: the `ValidationError` interface is now exported from the parser module and reused in `Register.vue` (eliminating a duplicate `ApiValidationError` interface), the type guard was tightened to check specifically for `invalid_fields` rather than broadly matching any object with a `message` property, the fallback error message always uses the localized translation key instead of potentially surfacing raw backend messages, and the `serverValidationErrors` ref uses `Partial<Record>` to accurately reflect that keys are optional. 🐰 A parser hops through error fields, Catching field names as each one yields, Client and server now both agree, Validation flows harmoniously free! Whitespace trimmed, no colon? It hops along, Register form now validated strong! ✨ --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: kolaente <k@knt.li> |
||
|---|---|---|
| .claude | ||
| .github | ||
| .vscode | ||
| .zed | ||
| build | ||
| contrib | ||
| desktop | ||
| examples/plugins/example | ||
| frontend | ||
| pkg | ||
| rest | ||
| .devcontainer.json | ||
| .dockerignore | ||
| .editorconfig | ||
| .envrc | ||
| .gitignore | ||
| .golangci.yml | ||
| .opensourcefinder-verify | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| CRUSH.md | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| cliff.toml | ||
| code-header-template.txt | ||
| conductor.json | ||
| config-raw.json | ||
| crowdin.yml | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| go.mod | ||
| go.sum | ||
| magefile.go | ||
| main.go | ||
| nfpm.yaml | ||
| publiccode.yml | ||
| renovate.json | ||
| tools.go | ||
| tsconfig.json | ||
| vikunja.initd | ||
| vikunja.service | ||
README.md
Vikunja
The Todo-app to organize your life.
If Vikunja is useful to you, please consider buying me a coffee, sponsoring me on GitHub or buying a sticker pack. I'm also offering a hosted version of Vikunja if you want a hassle-free solution for yourself or your team.
Table of contents
Security Reports
If you find any security-related issues you don't want to disclose publicly, please use the contact information on our website.
Features
See the features page on our website for a more exhaustive list or try it on try.vikunja.io!
Docs
All docs can be found on the Vikunja home page.
Roadmap
See the roadmap (hosted on Vikunja!) for more!
Contributing
Please check out the contribution guidelines on the website.
License
Most of this repository is licensed under AGPL‑3.0‑or‑later.
The contents of desktop/ are licensed under
GPL‑3.0‑or‑later.
Unsplash Images
Background images from Unsplash are distributed under the Unsplash License. The license requires giving credit to the photographer and Unsplash. See Unsplash’s terms for more information.