feat: presence records, unknown species, landing translations, confirm modals, CI fixes#10
Merged
Conversation
…m modals, CI type fixes Individual registration: - Add "Register Individual or Presence" form with 3-way mapping selector (no location / generally present / pin to specific location) - Presence-only records saved with isPresenceOnly flag; shown with teal "Presence" badge in grid and list views; name auto-fills from species - Add "not yet identified" species picker (fauna / flora) that creates or reuses a shared Unknown Fauna/Flora Species per project; static SVG placeholder images at public/unknown-fauna.svg and public/unknown-flora.svg avoid the base64 upload pipeline that was producing .svgxml files UI / UX: - Replace all browser confirm()/alert() delete dialogs with a reusable ConfirmModal component (SpeciesManager, IndividualManager, IndividualDetail) - Add loading/saved feedback to all four Super Admin settings save buttons - Landing page: Auto-translate button sends heroTitle, heroSubtitle, registrationBanner, customContentHtml and feature cards to all supported languages via Gemini; translations saved immediately to localStorage; Landing.tsx reads the active-language translation with fallback chain TypeScript / CI: - tsconfig.json: exclude src/ (stale pre-reorganisation copies) and backend/ so tsc --noEmit no longer picks up files with wrong relative imports - IndividualDetail.tsx: change e: L.LeafletMouseEvent to e: any (L is a value not a namespace, so the type annotation was invalid) - App.tsx: declare missing localOnlySpecies / localOnlyInds variables from server vs local ID diff - IndividualManager.tsx: remove duplicate weightkg key in COL_MAP; fix Set<unknown> inference by explicitly typing the intermediate string array Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Addresses 2 high-severity CVEs flagged by npm audit: - GHSA-49rj-9fvp-4h2h (RCE via turbo-stream deserialization) - GHSA-2j2x-hqr9-3h42 (open redirect via protocol-relative URL) - GHSA-8646-j5j9-6r62 (XSS in RSC redirect handling) - GHSA-f22v-gfqf-p8f3 (stored XSS via unescaped Location header) - GHSA-8x6r-g9mw-2r78 (DoS via unbounded path expansion) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
?? Generated with Claude Code