karilint
3a6e14d3a4
Add field update history popover
2026-05-29 18:02:10 +03:00
Kari Lintulaakso and GitHub
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 Lintulaakso and GitHub
edcd66a4f1
Merge branch 'main' into codex/1056-web-freezing-locality-map
2026-05-29 16:05:11 +03:00
Kari Lintulaakso and GitHub
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 Lintulaakso and GitHub
8233244ea4
Merge branch 'main' into codex/1184-time-unit-error
2026-05-29 15:47:53 +03:00
Kari Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
f974e50779
Merge branch 'main' into codex/crosssearch-export-content-tests-757
2026-05-21 14:57:58 +03:00
Kari Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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 Lintulaakso and GitHub
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
karilint
fd83afdd1a
Extend occurrence map exports with species lists
2026-05-19 15:50:56 +03:00
karilint
723a45d6b1
Add locality species map exports
2026-05-19 15:12:09 +03:00
Kari Lintulaakso and GitHub
3a0ce91be4
Merge pull request #1154 from nowcommunity/codex/species-taxonomy-suggestions
...
[codex] Add species taxonomy suggestions
2026-05-19 14:59:37 +03:00
karilint
801f13a47e
Use datalist for taxonomy suggestions
2026-05-19 14:43:31 +03:00
karilint
3c6d623b11
Place taxonomy suggestions above fields
2026-05-19 14:16:24 +03:00
karilint
7204ff66f3
Preserve taxonomy autocomplete input ids
2026-05-19 13:58:17 +03:00
karilint
d52d941265
Add species taxonomy suggestions
2026-05-18 17:06:57 +03:00
Kari Lintulaakso and GitHub
e9afa1d05b
Merge pull request #1153 from nowcommunity/codex/reference-validation-display-labels
...
[codex] Show reference validation display labels
2026-05-18 17:00:30 +03:00
karilint
b7cb1c2d8a
Show reference validation display labels
2026-05-18 16:42:26 +03:00
Kari Lintulaakso and GitHub
2d39e40ec7
Merge pull request #1152 from nowcommunity/feature/1150-dwc-export
...
Admin-only Darwin Core exports and progress updates
2026-05-18 16:12:41 +03:00
Kari Lintulaakso and GitHub
2656ff828a
Merge branch 'main' into feature/1150-dwc-export
2026-05-18 16:08:55 +03:00
Kari Lintulaakso and GitHub
0bea18798f
Merge pull request #1151 from nowcommunity/fix/132-filter-modes
...
Table filters: add equals/contains/startsWith modes
2026-05-18 16:08:08 +03:00
karilint
57b77ee2ed
Add full Darwin Core export progress
2026-05-18 15:55:00 +03:00
karilint
4b99fe6c6b
Add DwC-DP event occurrence export
2026-05-13 11:54:16 +03:00
karilint
647773d1c9
Harden reference date reads
2026-04-29 11:38:45 +03:00
karilint
172aa16c03
Tolerate invalid occurrence reference dates
2026-04-29 11:25:06 +03:00
karilint
190859c3b3
Tolerate invalid locality reference dates
2026-04-29 11:19:39 +03:00
karilint
3a5e68fc86
Show DwC occurrence export progress
2026-04-29 10:56:11 +03:00
karilint
e90e24d2b8
Stream DwC occurrence export
2026-04-28 18:10:12 +03:00
karilint
51fca00a5e
Add DwC occurrence export
2026-04-28 17:56:47 +03:00
karilint
ec4edd4699
Adjust locality DwC export fields
2026-04-28 13:42:35 +03:00
karilint
30040eaeeb
DwC-A localities: include remaining now_loc fields
2026-04-28 10:38:21 +03:00
karilint
101fac67b7
DwC-A localities: export climate/ecometrics/archaeology facts
2026-04-27 17:37:17 +03:00