100 Commits
Author SHA1 Message Date
Kari LintulaaksoandGitHub 1fd19ba6cc Merge pull request #1200 from nowcommunity/metadata-darwincore-export
[codex] Update Darwin Core export metadata
2026-06-15 16:28:36 +03:00
karilint bae0593b5a Page filtered occurrence key export lookup 2026-06-15 16:06:22 +03:00
karilint 2b970e920b Narrow Darwin Core export validation catches 2026-06-15 15:54:44 +03:00
karilint d57a8b3a6b Skip filtered lookup for empty occurrence exports 2026-06-15 15:25:24 +03:00
karilint bf464fe579 Address filtered export review comments 2026-06-15 15:11:49 +03:00
karilint 0c4e44f947 Address follow-up Darwin Core review comments 2026-06-15 14:33:45 +03:00
karilint bbc11e44b9 Address Darwin Core export review comments 2026-06-15 14:09:24 +03:00
Kari LintulaaksoandGitHub 53ac4192ff Merge branch 'main' into metadata-darwincore-export 2026-06-11 18:25:48 +03:00
karilint 7c4199d819 Fix Darwin Core export filename tests 2026-06-11 17:54:50 +03:00
karilint 24d4248272 Update Darwin Core export metadata 2026-06-11 17:13:29 +03:00
Kari LintulaaksoandGitHub 771e3724a0 Merge pull request #1179 from nowcommunity/remove-vscode-folder-from-repo
Remove vscode folder from repo
2026-06-11 11:38:02 +03:00
Kari LintulaaksoandGitHub 07848bd7f9 Merge branch 'main' into remove-vscode-folder-from-repo 2026-06-11 11:19:09 +03:00
Kari LintulaaksoandGitHub b23f08a743 Merge pull request #1197 from nowcommunity/codex/1193-leaflet-markercluster-sourcemap
[codex] Remove missing markercluster sourcemap reference
2026-06-11 11:09:44 +03:00
karilint 3c9fe6f753 Remove missing markercluster sourcemap reference 2026-06-04 17:45:58 +03:00
Kari LintulaaksoandGitHub d6ebb0fcc7 Merge pull request #1196 from nowcommunity/codex/730-admin-password-management
[codex] Fix generated password validation
2026-06-04 17:27:37 +03:00
karilint 5376e3a3ea Fix generated password validation 2026-06-04 16:00:26 +03:00
Kari LintulaaksoandGitHub 1fed41da80 Merge pull request #1195 from nowcommunity/codex/1192-occurrence-row-history
[codex] Add occurrence row history
2026-06-04 15:54:09 +03:00
karilint 4394250980 Add occurrence row history 2026-06-04 15:20:34 +03:00
Kari LintulaaksoandGitHub 214ead702b Merge pull request #1194 from nowcommunity/codex/1191-entry-history-locality-relations
[codex] Add locality relation entry history
2026-06-03 17:47:49 +03:00
karilint 146aeeb5d7 Add locality relation entry history 2026-06-03 17:26:55 +03:00
Kari LintulaaksoandGitHub 69387fad37 Merge pull request #1190 from nowcommunity/codex/1183-single-field-update-log-ui
Add field update history popover
2026-06-03 15:06:26 +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 f819ce6909 Merge pull request #1188 from nowcommunity/codex/1056-web-freezing-locality-map
fix: Lazy load country polygons to prevent UI freeze (#1056)
2026-05-29 16:20:11 +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 5ba23e1ecd Merge pull request #1187 from nowcommunity/codex/1184-time-unit-error
fix: Fix invalid blocker state transition in UnsavedChangesProvider (#1184)
2026-05-29 16:02:38 +03:00
Kari LintulaaksoandGitHub 8233244ea4 Merge branch 'main' into codex/1184-time-unit-error 2026-05-29 15:47:53 +03:00
Kari LintulaaksoandGitHub 820b768fd3 Merge pull request #1186 from nowcommunity/codex/1185-error-boundary
feat: Add ErrorBoundary and RouterError for better error UX (#1185)
2026-05-29 15:47:02 +03:00
karilint 88bed7adca fix: Hide router error details in production 2026-05-29 15:22:58 +03:00
karilint 7e732d9faa Remove redundant blocker state guard 2026-05-29 14:55:42 +03: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
Kari LintulaaksoandGitHub 0b3ba3d759 Merge pull request #1182 from nowcommunity/codex/1176-validator-migrations
Apply full-field validation to detail saves
2026-05-29 10:58:35 +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
Kari LintulaaksoandGitHub 7b10b5b48f Merge pull request #1181 from nowcommunity/codex/563-time-unit-update-history
[codex] Show combined time unit update history
2026-05-27 19:54:57 +03:00
karilint 4bf410b023 Update species write button test expectation 2026-05-27 19:34:31 +03:00
karilint 3e201043ec Create time update summaries for time unit writes 2026-05-27 19:12:00 +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 65fbf5fe1b Expect bound logs in time unit history test 2026-05-27 14:53:03 +03:00
karilint 22d01f9ab7 Show combined time unit update history 2026-05-27 14:41:46 +03:00
Kari LintulaaksoandGitHub bfa8e785d1 Merge pull request #1175 from nowcommunity/codex/649-required-field-validation
[codex] Validate missing required fields
2026-05-27 13:53:29 +03:00
karilint 8c386e150b Fix required field validation for missing keys 2026-05-27 13:34:02 +03:00
Kari LintulaaksoandGitHub 549ba5090a Merge pull request #1174 from nowcommunity/codex/1049-add-new-reference-from-selectors
[codex] Add inline reference creation to staging
2026-05-25 18:16:54 +03:00
karilint 96f6831fc7 Add inline reference creation to staging 2026-05-25 17:53:12 +03:00
Kari LintulaaksoandGitHub 8f2d14e681 Merge pull request #1173 from nowcommunity/codex/1056-lazy-load-map-heavy-code
[codex] Lazy-load occurrence map code
2026-05-25 16:54:16 +03:00
karilint 69c165986d Lazy-load occurrence map code 2026-05-25 16:44:19 +03:00
Kari LintulaaksoandGitHub 7cbc4547fe Merge pull request #1172 from nowcommunity/feature/892-admin-delete-person
Add protected person deletion
2026-05-25 14:59:22 +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
Kari LintulaaksoandGitHub ee1421a5bd Merge pull request #1171 from nowcommunity/feature/380-persist-table-filters
Persist table column filters
2026-05-25 13:42:30 +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 157967c10a Merge pull request #1170 from nowcommunity/fix/99-request-error-handling
Handle unanswered API requests
2026-05-25 12:34:05 +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
Kari LintulaaksoandGitHub c164f932b7 Merge pull request #1169 from nowcommunity/fix/1168-freeze-main-page-map
Freeze front page map image
2026-05-25 12:19:53 +03:00
karilint 65216e84bd Freeze front page map image 2026-05-25 11:43:58 +03:00
Kari LintulaaksoandGitHub c23d9425a0 Merge pull request #1167 from nowcommunity/fix/79-table-data-cy-selectors
Add stable table data-cy selectors
2026-05-25 11:34:51 +03:00
karilint 6a5e1da6ed Add stable table data-cy selectors 2026-05-22 11:47:56 +03:00
Kari LintulaaksoandGitHub 7b840a8e91 Merge pull request #1166 from nowcommunity/fix/908-cross-search-export-transform
Optimize cross-search CSV export
2026-05-22 11:34:06 +03:00
karilint 1dff663be7 Optimize cross-search CSV export 2026-05-22 11:10:32 +03:00
Kari LintulaaksoandGitHub 696de213f0 Merge pull request #1165 from nowcommunity/fix/1164-toolbar-test-notification-provider
[codex] Fix toolbar column test notification context
2026-05-22 10:54:44 +03:00
karilint 552b91eaad Fix toolbar column test notification context 2026-05-22 10:47:18 +03:00
Kari LintulaaksoandGitHub 83f7b021cb Merge pull request #1163 from nowcommunity/codex/express-validator-crosssearch-733
Add express-validator list middleware
2026-05-21 16:17:56 +03:00
Kari Lintulaakso 143fcce2ae Add express-validator list middleware 2026-05-21 16:02:24 +03:00
Kari LintulaaksoandGitHub 23baf8f154 Merge pull request #1161 from nowcommunity/codex/crosssearch-export-content-tests-757
Add cross-search export content tests
2026-05-21 15:33:01 +03:00
Kari LintulaaksoandGitHub f974e50779 Merge branch 'main' into codex/crosssearch-export-content-tests-757 2026-05-21 14:57:58 +03:00
Kari LintulaaksoandGitHub 300f8a9856 Merge pull request #1162 from nowcommunity/codex/crosssearch-post-fallback
Fallback cross-search table requests to legacy GET
2026-05-21 14:57:36 +03:00
karilint d00e51f3a2 Fallback cross-search table requests to legacy GET 2026-05-21 14:52:24 +03:00
karilint 23906f5a4a Add cross-search export content tests 2026-05-21 14:38:11 +03:00
Kari LintulaaksoandGitHub b7c6d54c24 Merge pull request #1160 from nowcommunity/codex/crosssearch-post-filters-493
Use POST bodies for cross-search filters
2026-05-21 14:24:22 +03:00
Kari Lintulaakso 18f389bb58 Cover restoring short table state URLs 2026-05-21 14:07:45 +03:00
Kari Lintulaakso 2f3f4d64b5 Preserve stored table state on refresh 2026-05-21 14:07:26 +03:00
Kari Lintulaakso 6125471fa3 Add coverage for short table state URLs 2026-05-21 13:47:08 +03:00
Kari Lintulaakso b73b50c66c Shorten shared table state URLs 2026-05-21 13:46:47 +03:00
karilint 72b1d879b5 Use POST bodies for cross-search filters 2026-05-21 12:22:16 +03:00
Kari LintulaaksoandGitHub 9e9673bb6b Merge pull request #1159 from nowcommunity/codex/docs-entity-models-723
Add people and museum entity documentation
2026-05-21 11:47:26 +03:00
karilint 0c023331f2 Add entity documentation for people and museums 2026-05-21 11:34:42 +03:00
Kari LintulaaksoandGitHub a22e39b11b Merge pull request #1158 from nowcommunity/codex/add-locality-reference-help-text
Add locality and reference field help text
2026-05-21 11:20:22 +03:00
karilint c437fe1a73 Add locality and reference field help text 2026-05-20 15:40:59 +03:00
Kari LintulaaksoandGitHub 0d0a7a2462 Merge pull request #1157 from nowcommunity/codex/field-info-help-text
Add field info help text
2026-05-20 15:21:40 +03:00
karilint ffa1735e00 Add species field help text 2026-05-20 14:44:59 +03:00
Kari LintulaaksoandGitHub 4847c37805 Merge pull request #1156 from nowcommunity/codex/character-set-mojibake-check
[codex] Fix mojibake in test locality fixture
2026-05-20 14:15:11 +03:00
Kari LintulaaksoandGitHub 00258ee238 Merge branch 'main' into codex/character-set-mojibake-check 2026-05-20 14:14:56 +03:00
karilint d0ec88ae50 Fix mojibake in test locality fixture 2026-05-20 13:58:15 +03:00
Kari LintulaaksoandGitHub f2e003495a Merge pull request #1155 from nowcommunity/codex/locality-species-kml-svg-exports
[codex] Add locality species map exports
2026-05-20 13:56:43 +03:00
karilint fe23b89c37 Harmonize occurrence map exports 2026-05-20 13:40:56 +03:00
karilint 969287e2c6 Add occurrence table map exports 2026-05-19 16:14:49 +03:00