1657 Commits
Author SHA1 Message Date
juhanikatandGitHub 5c065508b4 update project update process in frontend and backend, and add project validators (#1230)
* update project update prosess in frontend, and add project validators

* change project update process in backend

* update project backend files, projectReducer, project validators and tests

* update project api tests, and error handling in ProjectDetails

* update frontend project creation form

* remove ProjectEditPage tests and fix ProjectNewPage tests

* update project api tests, project write process, and project validators

* remove unneeded files relating to projects, and merge project/ and projects/ route files

* remove project validators from backend, and update other project files

* allow all users to view projects table

* fix import issue

* update project api tests to use correct url, and add --runInBand flag to backend unit tests

* update cypress test
2026-08-19 11:21:36 +03:00
juhanikatandGitHub c3eeb10262 add --runInBand flag to front unit test command (#1237) 2026-08-17 16:20:20 +03:00
juhanikatandGitHub dd4d1fed2f remove cache flags from lint commands (#1236) 2026-08-17 12:25:22 +03:00
juhanikatandGitHub 7143da32c1 change import statement to import type (#1227) 2026-08-04 15:45:25 +03:00
juhanikatandGitHub e9fa3e3b31 Improve loading times by splitting pages.tsx into smaller files and improving the locality map (#1224)
* split pages.tsx into multiple files, and update ui e2e test since occurrence rename

* reduce size of countryBoundingBoxes and countryPolygons

* update files again, and update countryExport script

* update files again, add more simplified geojson files, and update countryExport with Copilot
2026-08-04 13:51:13 +03:00
juhanikatandGitHub 4dff86367b Fix navigation inside tabs with a tableview replacing all query param… (#1218)
* fix navigation inside tabs with a tableview replacing all query params in url

* fix copilot suggested issues relating to encoding urls
2026-07-12 13:44:50 +03:00
juhanikatandGitHub 9b98a91ee4 fix menuitems not showing in table export menus, and give them keys (#1214) 2026-06-30 13:30:15 +03:00
juhanikatandGitHub 17eb6dda0a Change renderExtraExportMenuItems to an array of ReactNodes (#1205)
* Change renderExtraExportMenuItems from a ReactNode to an array of ReactNodes

* update typing and extramenuitem rendering

* remove useless import
2026-06-29 12:53:00 +03:00
f2aa36c13f Fix tables showing incorrect amount of pages, and some other table issues (#1198)
* fix pagination showing incorrect page amount when filtera are applied

* fix issue with occurences table resetting to first page, and make page numbers accurate in all tables

* fix error in occurences table menu bar

* remove pagination from TableView useEffect dependencies to break rerender loop

* update server side pagination useEffect with CoPilot

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* remove useless else-clause from useEffect

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-29 12:16:04 +03:00
karilint bbc11e44b9 Address Darwin Core export review comments 2026-06-15 14:09:24 +03:00
karilint 24d4248272 Update Darwin Core export metadata 2026-06-11 17:13:29 +03:00
karilint 3c9fe6f753 Remove missing markercluster sourcemap reference 2026-06-04 17:45:58 +03:00
karilint 5376e3a3ea Fix generated password validation 2026-06-04 16:00:26 +03:00
karilint 4394250980 Add occurrence row history 2026-06-04 15:20:34 +03:00
karilint 146aeeb5d7 Add locality relation entry history 2026-06-03 17:26:55 +03:00
karilint a1c105bb50 Fix taxonomy tab context mock 2026-06-03 15:02:28 +03:00
karilint 5a167a408c Address field update history review 2026-06-03 14:26:19 +03:00
karilint 3a6e14d3a4 Add field update history popover 2026-05-29 18:02:10 +03:00
Kari LintulaaksoandGitHub edcd66a4f1 Merge branch 'main' into codex/1056-web-freezing-locality-map 2026-05-29 16:05:11 +03:00
Kari LintulaaksoandGitHub 8233244ea4 Merge branch 'main' into codex/1184-time-unit-error 2026-05-29 15:47:53 +03:00
karilint 88bed7adca fix: Hide router error details in production 2026-05-29 15:22:58 +03:00
copilot-swe-agent[bot]andGitHub 5450e511bb fix: avoid duplicate country border layers 2026-05-29 12:00:42 +00:00
karilint 7e732d9faa Remove redundant blocker state guard 2026-05-29 14:55:42 +03:00
copilot-swe-agent[bot]andGitHub 694181623b fix: avoid map reinit during lazy country border loading 2026-05-29 11:55:00 +00:00
karilint 8eb60884ed fix: Lazy load country polygons to prevent UI freeze (#1056)
Fix #1056: Web freezing when loading locality map.

The countryPolygons.ts file is 4.4MB and was being imported synchronously,
causing the main thread to block and the UI to freeze.

Solution:
- Dynamically import countryPolygons using async import()
- Only load the data after the map component mounts
- Add loading state for country borders

This prevents the large module from blocking the main thread during
initial page load.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-29 14:10:44 +03:00
karilint 1d454e7d3e fix: Hide error details from production users in ErrorBoundary
Security fix for PR #1186: ErrorBoundary was leaking internal implementation
details (stack traces, error messages) to end users in production.

- Gate error details section to development mode only using import.meta.env.DEV
- In production, only show generic error message and reload button
- Prevents information disclosure while maintaining debugging capability in dev

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-29 13:59:13 +03:00
karilint 4ae003a540 fix: Fix invalid blocker state transition in UnsavedChangesProvider
Fix #1184: Time Unit error caused by invalid blocker state transition.

The error 'Invalid blocker state transition: unblocked -> proceeding' occurred
when calling blocker.proceed() in UnsavedChangesProvider.

Root cause: setDirty(false) was called before blocker.proceed?.(), which
triggered a re-render that could change the blocker state before proceed was
called. This caused React Router's internal state machine to receive a proceed
call when the blocker was no longer in the 'blocked' state.

Fix:
- Call blocker.proceed?.() before setDirty(false) in handleConfirm
- Add additional state check in isSamePathNavigation useEffect to ensure
  blocker is still 'blocked' before calling proceed()

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-29 11:35:54 +03:00
karilint 62c79a500d feat: Add ErrorBoundary and RouterError for better error UX
Implement #1185: Provide ErrorBoundary and errorElement to catch and display
application errors gracefully.

- Add ErrorBoundary component to catch React component render errors
- Add RouterError component to catch React Router v6 data router errors
- Wrap RouterProvider with ErrorBoundary in main.tsx
- Add errorElement to root route in router

This provides a better user experience when the application encounters errors,
showing a user-friendly error page with options to reload or go back instead
of the default React error screen.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-29 11:15:27 +03:00
karilint a334eca7e2 Allow new regions without existing id 2026-05-29 10:02:31 +03:00
karilint 02777ab7ae Fix full-form validation error keys 2026-05-28 17:16:31 +03:00
karilint 04a775b347 Fix time unit full-field validation 2026-05-28 15:55:24 +03:00
karilint 94092424c3 Broaden full-field validation coverage 2026-05-28 15:23:38 +03:00
karilint a78fb2d599 Fix reference full-field validation 2026-05-28 14:14:19 +03:00
karilint 4bf410b023 Update species write button test expectation 2026-05-27 19:34:31 +03:00
karilint a4bf5c050a Allow saved time unit redirect past blocker 2026-05-27 18:47:37 +03:00
karilint 699cbb125b Run time unit save navigation after clean state 2026-05-27 18:40:48 +03:00
karilint ef3b7cbe96 Clear time unit dirty state before save navigation 2026-05-27 18:31:50 +03:00
karilint bae2f2e1f4 Fix time unit save navigation state 2026-05-27 17:53:05 +03:00
karilint a5bfceb257 Clear unsaved state after detail saves 2026-05-27 17:39:33 +03:00
karilint 22d01f9ab7 Show combined time unit update history 2026-05-27 14:41:46 +03:00
karilint 8c386e150b Fix required field validation for missing keys 2026-05-27 13:34:02 +03:00
karilint 96f6831fc7 Add inline reference creation to staging 2026-05-25 17:53:12 +03:00
karilint 69c165986d Lazy-load occurrence map code 2026-05-25 16:44:19 +03:00
karilint 275f2cf11f Show person relation summaries 2026-05-25 14:41:19 +03:00
karilint a78f43bd1a Improve person delete blocker message 2026-05-25 14:25:38 +03:00
karilint 6f4428211c Add protected person deletion 2026-05-25 14:04:06 +03:00
karilint 5c29b9d8e6 Persist table column visibility with filters 2026-05-25 12:57:21 +03:00
karilint 2749baa18a Persist table column filters 2026-05-25 12:42:00 +03:00
Kari LintulaaksoandGitHub 95efbcb37f Merge branch 'main' into fix/99-request-error-handling 2026-05-25 12:33:45 +03:00
karilint dc15b29f7b Handle unanswered API requests 2026-05-25 12:25:05 +03:00