Conversation
…mproved functionality.
Remove leftovers from the create-react-app era and the docker-compose setup that nobody uses anymore. - Delete VERSION, test.sh, Dockerfile.test and .gitconfig, which nothing references (.gitconfig pointed at a .githooks folder that doesn't exist). - Delete the docker-compose dev stack (docker-compose.yml, Dockerfile.dev, restart.sh, nginx/) and mock-api/. Remove the REACT_APP_MOCK_* flags and their URL switches in the events, event types and event schemas ducks. Drop the matching eslint ignores. - Delete public/index.html, the old CRA template. Vite builds from the root index.html. - Trim the env files: drop GENERATE_SOURCEMAP (CRA only), the stale REACT_APP_FF_ notes, and the values that repeat .env. - Rewrite .gitignore and .dockerignore from scratch. The Docker context now also excludes local env files, public/config.js, build output and non-build folders. - Move dev-only tools (babel-jest, eslint, jest, jest-watch-typeahead, workbox-build) to devDependencies. - Drop the obsolete shrink-to-fit=no from the viewport meta. Production builds are unchanged apart from the viewport meta and the order of entries in the bundled package.json.
…'s rule set, remove unused React imports, fix the remaining problems without changing behavior, and suppress the React Compiler rules where the current logic is intended Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…andard-scss in an ESM config with camelCase module classes, migrate @import and the legacy Sass functions to the module system, and fix every remaining problem without changing the rendered styles Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tylelint commands with a unified format command, introduce a new ESLint configuration file, and update documentation to reflect these changes. Remove outdated test todos from event tests.
… for improved compatibility.
Contributor
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
No unresolved review comments, but the repository-wide scope and unrun builds and project tests warrant human approval.
Review effort: Balanced
Findings: None
What changed in this PR
Repository-wide maintenance for the EarthRanger client, modernizing source and styles and removing legacy tooling.
Changes:
- Remove unused React imports and modernize property checks and catch clauses.
- Update Sass modules, mixin references, formatting, and targeted lint annotations.
- Remove obsolete infrastructure, container, mock API, and script files; simplify environment settings.
| File | Description |
|---|---|
VERSION |
Remove legacy version marker. |
test.sh |
Remove legacy test wrapper. |
terraform/remote_state.tf |
Remove remote-state configuration. |
terraform/outputs.tf |
Remove infrastructure outputs. |
src/WithTracker/index.js |
React import cleanup. |
src/withSocketConnection/useRealTimeImplementation/index.js |
React import cleanup. |
src/withSocketConnection/index.js |
React import cleanup. |
src/WithMapViewConfig/index.js |
React import cleanup. |
src/views/EULA/index.test.js |
React import cleanup. |
src/utils/toast.test.js |
React import cleanup. |
src/utils/toast.js |
React import cleanup. |
src/utils/subjects.js |
Use Object.hasOwn. |
src/utils/patrols.js |
React import cleanup. |
src/utils/geometry.js |
Remove unused catch binding. |
src/UserMenu/index.test.js |
React import cleanup. |
src/UserMenu/index.js |
React import cleanup. |
src/UserCurrentLocationPopup/styles.module.scss |
Normalize spacing. |
src/UserCurrentLocationPopup/index.js |
React import cleanup. |
src/UserCurrentLocationLayer/styles.module.scss |
Migrate to Sass @use. |
src/TrackToggleButton/PatrolAwareTrackToggleButton.js |
React import cleanup. |
src/TrackToggleButton/index.js |
React import cleanup. |
src/TracksLayer/track.test.js |
React import cleanup. |
src/TracksLayer/index.js |
React import cleanup. |
src/TrackLegend/TracksList/index.test.js |
React import cleanup. |
src/TrackLegend/TracksList/index.js |
React import cleanup. |
src/TrackLegend/TrackSettings/index.test.js |
React import cleanup. |
src/TrackLegend/TrackSettings/index.js |
React import cleanup. |
src/TrackLegend/TimeOfDaySettings/TimeZoneSelect/index.test.js |
React import cleanup. |
src/TrackLegend/TimeOfDaySettings/styles.module.scss |
Correct button mixin reference. |
src/TrackLegend/TimeOfDaySettings/index.test.js |
React import cleanup. |
src/TrackLegend/TimeOfDaySettings/index.js |
React import cleanup. |
src/TrackLegend/index.test.js |
React import cleanup. |
src/TrackLegend/index.js |
React import cleanup. |
src/ToastBody/index.js |
React import cleanup. |
src/TimeSliderMapControl/index.js |
React import cleanup. |
src/TimeSlider/index.test.js |
React import cleanup. |
src/TimeSlider/index.js |
React import cleanup. |
src/TimepointPopup/index.test.js |
React import cleanup. |
src/TimepointPopup/index.js |
React import cleanup. |
src/TimePicker/styles.module.scss |
Normalize import spacing. |
src/TimePicker/OptionsPopover/index.test.js |
React import cleanup. |
src/TimePicker/index.test.js |
React import cleanup. |
src/TimeAgo/index.js |
React import cleanup. |
src/TileEventFeaturesProvider/index.test.js |
React import cleanup. |
src/TextCopyBtn/index.test.js |
React import cleanup. |
src/TextCopyBtn/index.js |
React import cleanup. |
src/test-utils.jsx |
React import cleanup. |
src/SystemStatus/index.test.js |
React import cleanup. |
src/SystemStatus/index.js |
React import cleanup. |
src/Switch/index.test.js |
React import cleanup. |
src/Switch/index.js |
React import cleanup. |
src/sw-custom.js |
Remove redundant lint suppression. |
src/SvgIcon/index.test.js |
React import cleanup. |
src/SvgIcon/index.js |
React import cleanup. |
src/SubjectTrackLegend/index.js |
React import cleanup. |
src/SubjectsLayer/index.test.js |
React import cleanup. |
src/SubjectPopup/index.js |
React import cleanup. |
src/SubjectMessagesPopup/index.js |
React import cleanup. |
src/SubjectMessagesPopover/index.js |
React import cleanup. |
src/SubjectMessagePopup/index.js |
React import cleanup. |
src/SubjectHistoryButton/PatrolAwareTrackToggleButton.js |
React import cleanup. |
src/SubjectHistoryButton/index.js |
React import cleanup. |
src/SubjectHistoricalDataModal/index.test.js |
React import cleanup. |
src/SubjectHeatmapLegend/index.js |
React import cleanup. |
src/SubjectControls/index.js |
React import cleanup. |
src/SubjectControls/button.js |
React import cleanup. |
src/StaticSensorsLayer/index.test.js |
React import cleanup. |
src/StaticSensorsLayer/index.js |
Document memoization lint exception. |
src/StateManagedSocketConsumer/index.js |
React import cleanup. |
src/SpatialFeaturesLayer/index.test.js |
React import cleanup. |
src/SpatialFeaturesLayer/index.js |
React import cleanup. |
src/SoundNotificationsPlayer/RadioStateChangeToAlarmNotificationPlayer/styles.module.scss |
Migrate to Sass @use. |
src/SoundNotificationsPlayer/RadioStateChangeToAlarmNotificationPlayer/index.test.js |
React import cleanup. |
src/SoundNotificationsPlayer/NewInReachMessageNotificationPlayer/index.test.js |
React import cleanup. |
src/SoundNotificationsPlayer/NewInReachMessageNotificationPlayer/index.js |
React import cleanup. |
src/SoundNotificationsPlayer/NewEventNotificationPlayer/index.test.js |
React import cleanup. |
src/SoundNotificationsPlayer/index.test.js |
React import cleanup. |
src/SoundNotificationsPlayer/index.js |
React import cleanup. |
src/SleepDetector/index.test.js |
React import cleanup. |
src/SleepDetector/index.js |
React import cleanup. |
src/SkyLayer/index.test.js |
React import cleanup. |
src/SkyLayer/index.js |
React import cleanup. |
src/SidebarScrollContext/index.test.js |
React import cleanup. |
src/SidebarScrollContext/index.js |
React import cleanup. |
src/SideBar/utils/navigateMenuWithKeyboard/index.test.js |
React import cleanup. |
src/SideBar/useReportsFeed/index.test.js |
React import cleanup. |
src/SideBar/useFetchPatrolsFeed/index.test.js |
React import cleanup. |
src/SideBar/TitleInput/index.test.js |
React import cleanup. |
src/SideBar/TitleInput/index.js |
React import cleanup. |
src/SideBar/SettingsPane/MapTab/MainMapSettingsView/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/MapTab/MainMapSettingsView/index.js |
React import cleanup. |
src/SideBar/SettingsPane/MapTab/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/MapTab/index.js |
React import cleanup. |
src/SideBar/SettingsPane/MapTab/CoordinateSystemSettingsView/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/index.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/SoundFieldSet/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/SoundFieldSet/index.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/LanguageSelect/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/LanguageSelect/index.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/index.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/AppRefreshFieldSet/index.test.js |
React import cleanup. |
src/SideBar/SettingsPane/GeneralTab/AppRefreshFieldSet/index.js |
React import cleanup. |
src/SideBar/PatrolsManager/StatusPill/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/StatusPill/index.js |
React import cleanup. |
src/SideBar/PatrolsManager/PatrolsFeed/Filters/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/PatrolOverview/Overview/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/PatrolOverview/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/PatrolOverview/Footer/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/NewPatrol/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/NewPatrol/Footer/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/NewPatrol/Footer/index.js |
React import cleanup. |
src/SideBar/PatrolsManager/LegManager/NewLeg/Footer/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/LegManager/LegOverview/Footer/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/LegManager/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/LegManager/EditLeg/Footer/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/LegForm/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/index.js |
React import cleanup. |
src/SideBar/PatrolsManager/DetailViewLoader/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/DetailViewLoader/index.js |
React import cleanup. |
src/SideBar/PatrolsManager/Activity/SummaryStats/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/Activity/index.test.js |
React import cleanup. |
src/SideBar/PatrolsManager/Activity/index.js |
React import cleanup. |
src/SideBar/PatrolsManager/_shared.scss |
Normalize import spacing. |
src/SideBar/PatrolsFeed/index.test.js |
React import cleanup. |
src/SideBar/PatrolsFeed/index.js |
React import cleanup. |
src/SideBar/MapLayersTab/SubjectsTab/index.test.js |
React import cleanup. |
src/SideBar/MapLayersTab/index.test.js |
React import cleanup. |
src/SideBar/MapLayersTab/index.js |
React import cleanup. |
src/SideBar/MapLayersTab/Filters/index.test.js |
React import cleanup. |
src/SideBar/MapLayersTab/Filters/index.js |
React import cleanup. |
src/SideBar/MapLayersTab/FeaturesTab/Content.js |
React import cleanup. |
src/SideBar/MapLayersTab/EventsTab/styles.module.scss |
Normalize spacing. |
src/SideBar/MapLayersTab/EventsTab/index.js |
React import cleanup. |
src/SideBar/MapLayersTab/AnalyzersTab/index.test.js |
React import cleanup. |
src/SideBar/index.test.js |
React import cleanup. |
src/SideBar/GearTab/index.test.js |
React import cleanup. |
src/SideBar/GearTab/index.js |
React import cleanup. |
src/SideBar/EventsManager/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/index.js |
React import cleanup. |
src/SideBar/EventsManager/EventsFeed/styles.module.scss |
Correct button mixin reference. |
src/SideBar/EventsManager/EventsFeed/SortControls/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventsFeed/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventsFeed/EventRow/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventsFeed/EventRow/Actions/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/LinksSection/index.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Header/StatusSelect/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Header/ReportMenu/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Header/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Header/index.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Footer/SaveSplitButton/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Footer/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/Footer/index.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/DetailsSection/index.test.js |
React import cleanup. |
src/SideBar/EventsManager/EventOverview/DetailsSection/AreaPicker/styles.module.scss |
Normalize import spacing. |
src/SideBar/EventsManager/EventOverview/DetailsSection/AreaPicker/index.test.js |
React import cleanup. |
src/SideBar/DetailViewLoader/index.test.js |
React import cleanup. |
src/SideBar/DetailViewLoader/index.js |
React import cleanup. |
src/SideBar/DetailViewHeader/index.test.js |
React import cleanup. |
src/SideBar/DetailViewHeader/index.js |
React import cleanup. |
src/SideBar/DetailViewHeader/Breadcrumb/index.test.js |
React import cleanup. |
src/SideBar/DetailViewHeader/Breadcrumb/index.js |
React import cleanup. |
src/SelectListGroup/SelectableItem/styles.module.scss |
Normalize import spacing. |
src/SelectListGroup/SelectableItem/index.js |
React import cleanup. |
src/SelectListGroup/index.test.js |
React import cleanup. |
src/SelectListGroup/index.js |
React import cleanup. |
src/Select/index.test.js |
React import cleanup. |
src/Select/index.js |
React import cleanup. |
src/SearchBar/index.test.js |
React import cleanup. |
src/SearchBar/index.js |
React import cleanup. |
src/SchemaFormSummary/Section/index.test.js |
React import cleanup. |
src/SchemaFormSummary/Section/index.js |
React import cleanup. |
src/SchemaFormSummary/index.test.js |
React import cleanup. |
src/SchemaFormSummary/index.js |
React import cleanup. |
src/SchemaForm/utils/useUploadValidations/index.test.js |
React import cleanup. |
src/SchemaForm/utils/useSchemaValidations/index.test.js |
React import cleanup. |
src/SchemaForm/utils/useMapLocationMarkers/index.test.js |
React import cleanup. |
src/SchemaForm/utils/useFormElementDomId/index.test.js |
React import cleanup. |
src/SchemaForm/index.test.js |
React import cleanup. |
src/SchemaForm/index.js |
React import cleanup. |
src/SchemaForm/formElements/Text/styles.module.scss |
Normalize import spacing. |
src/SchemaForm/formElements/Text/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Text/index.js |
React import cleanup. |
src/SchemaForm/formElements/Section/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Section/index.js |
React import cleanup. |
src/SchemaForm/formElements/Numeric/styles.module.scss |
Normalize import spacing. |
src/SchemaForm/formElements/Numeric/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Numeric/index.js |
React import cleanup. |
src/SchemaForm/formElements/Location/styles.module.scss |
Normalize import spacing. |
src/SchemaForm/formElements/Location/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Location/index.js |
React import cleanup. |
src/SchemaForm/formElements/Header/styles.module.scss |
Shorten equivalent color notation. |
src/SchemaForm/formElements/Header/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Header/index.js |
React import cleanup. |
src/SchemaForm/formElements/DateTime/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/DateTime/index.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/SortableList/SortableItem/index.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/SortableList/Item/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/SortableList/Item/FormPreview/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/SortableList/Item/FormPreview/index.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/SortableList/Item/FormModal/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Collection/index.js |
React import cleanup. |
src/SchemaForm/formElements/ChoiceList/List.js |
React import cleanup. |
src/SchemaForm/formElements/ChoiceList/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/ChoiceList/index.js |
React import cleanup. |
src/SchemaForm/formElements/ChoiceList/Dropdown.js |
React import cleanup. |
src/SchemaForm/formElements/Boolean/index.test.js |
React import cleanup. |
src/SchemaForm/formElements/Boolean/index.js |
React import cleanup. |
src/SchemaForm/formElements/Attachment/index.test.js |
React import cleanup. |
src/SchemaFields/index.test.js |
React import cleanup. |
src/RequireEulaConfirmation/index.test.js |
React import cleanup. |
src/RequireAccessToken/index.test.js |
React import cleanup. |
src/RequireAccessToken/index.js |
React import cleanup. |
src/ReportsHeatLayer/index.test.js |
React import cleanup. |
src/ReportsHeatLayer/index.js |
React import cleanup. |
src/ReportListItem/index.test.js |
React import cleanup. |
src/ReportListItem/index.js |
React import cleanup. |
src/ReportGeometryDrawer/InformationModal/index.js |
React import cleanup. |
src/ReportGeometryDrawer/index.test.js |
React import cleanup. |
src/ReportGeometryDrawer/Footer/index.test.js |
React import cleanup. |
src/ReportGeometryDrawer/Footer/index.js |
React import cleanup. |
src/ReportGeometryDrawer/CancelationConfirmationModal/index.test.js |
React import cleanup. |
src/ReportGeometryDrawer/CancelationConfirmationModal/index.js |
React import cleanup. |
src/ReportFormSummary/V1SchemaFormSummary/index.js |
React import cleanup. |
src/ReportFormSummary/index.test.js |
React import cleanup. |
src/ReportFormSummary/index.js |
React import cleanup. |
src/ReporterSelect/index.test.js |
React import cleanup. |
src/ReporterSelect/index.js |
React import cleanup. |
src/ReportedBySelect/index.js |
React import cleanup. |
src/QuickLinks/index.test.js |
React import cleanup. |
src/QuickLinks/index.js |
React import cleanup. |
src/PrintTitle/index.test.js |
React import cleanup. |
src/PrintTitle/index.js |
React import cleanup. |
src/PopupLayer/index.js |
React import cleanup. |
src/Popup/styles.module.scss |
No textual diff supplied. |
src/PickMapLocationButton/index.test.js |
React import cleanup. |
src/PickMapLocationButton/index.js |
React import cleanup. |
src/PatrolTracks/index.js |
React import cleanup. |
src/PatrolTrackLegend/index.test.js |
React import cleanup. |
src/PatrolTrackLegend/index.js |
React import cleanup. |
src/PatrolTrackLayer/index.js |
React import cleanup. |
src/PatrolTrackControls/index.js |
React import cleanup. |
src/PatrolStartStopLayer/index.test.js |
React import cleanup. |
src/PatrolStartStopLayer/index.js |
React import cleanup. |
src/PatrolMenu/index.js |
React import cleanup. |
src/PatrolListItem/index.js |
React import cleanup. |
src/PatrolList/index.js |
React import cleanup. |
src/PatrolFilter/PatrolFilterSettings.js |
React import cleanup. |
src/PatrolFilter/index.test.js |
React import cleanup. |
src/PatrolFilter/FiltersPopover/index.js |
React import cleanup. |
src/PatrolFilter/DateRangePopover/index.test.js |
React import cleanup. |
src/PatrolFilter/DateRangePopover/index.js |
React import cleanup. |
src/PatrolFilter/DateRange.js |
React import cleanup. |
src/PatrolDetailView/InvalidDatesModal/index.test.js |
React import cleanup. |
src/PatrolDetailView/InvalidDatesModal/index.js |
React import cleanup. |
src/PatrolDetailView/Header/index.test.js |
React import cleanup. |
src/PatrolDetailView/Header/index.js |
React import cleanup. |
src/NumericInput/index.test.js |
React import cleanup. |
src/NumericInput/index.js |
React import cleanup. |
src/NoteModal/index.js |
React import cleanup. |
src/NavigationPromptModal/index.js |
React import cleanup. |
src/NavigationContextProvider/index.test.js |
React import cleanup. |
src/NavigationContextProvider/index.js |
React import cleanup. |
src/Nav/NavHomeMenu/index.js |
React import cleanup. |
src/Nav/NavHomeItem/index.js |
React import cleanup. |
src/Nav/MessageMenu.js |
React import cleanup. |
src/Nav/index.test.js |
React import cleanup. |
src/Nav/index.js |
React import cleanup. |
src/MouseMarkerPopup/index.js |
React import cleanup. |
src/MouseMarkerLayer/index.js |
React import cleanup. |
src/ModalRenderer/index.test.js |
React import cleanup. |
src/ModalRenderer/index.js |
React import cleanup. |
src/MessagingSelect/index.js |
React import cleanup. |
src/MessageList/SenderDetails.js |
React import cleanup. |
src/MessageList/MessageSummaryListItem.js |
React import cleanup. |
src/MessageList/MessageListItem.js |
React import cleanup. |
src/MessageList/index.js |
React import cleanup. |
src/MessageInput/index.js |
React import cleanup. |
src/MediaModal/index.test.js |
React import cleanup. |
src/MediaModal/index.js |
React import cleanup. |
src/MapTerrain/index.test.js |
React import cleanup. |
src/MapTerrain/index.js |
React import cleanup. |
src/MapRulerControl/PointPopup.test.js |
React import cleanup. |
src/MapRulerControl/PointPopup.js |
React import cleanup. |
src/MapRulerControl/index.test.js |
React import cleanup. |
src/MapMarkerDropper/index.js |
React import cleanup. |
src/MapLocationSelectionOverview/index.js |
React import cleanup. |
src/MapLegend/index.test.js |
React import cleanup. |
src/MapLegend/index.js |
React import cleanup. |
src/MapDrawingTools/MapLayers.js |
React import cleanup. |
src/MapDrawingTools/ContextProvider.js |
React import cleanup. |
src/Map/layers/useCrsBoundingBoxLayer/index.test.js |
React import cleanup. |
src/Map/index.test.js |
React import cleanup. |
src/Login/index.test.js |
React import cleanup. |
src/Login/index.js |
React import cleanup. |
src/LogarithmicSlider/index.js |
React import cleanup. |
src/LocationPicker/MenuPopover/index.test.js |
React import cleanup. |
src/LocationPicker/index.test.js |
React import cleanup. |
src/LocationPicker/index.js |
React import cleanup. |
src/LocationJumpButton/styles.module.scss |
Migrate Sass imports and correct mixins. |
src/LocationJumpButton/index.test.js |
React import cleanup. |
src/LocationJumpButton/index.js |
React import cleanup. |
src/LoadingOverlay/styles.module.scss |
Modernize equivalent color syntax. |
src/LoadingOverlay/index.test.js |
React import cleanup. |
src/LoadingOverlay/index.js |
React import cleanup. |
src/Link/index.test.js |
React import cleanup. |
src/LegacySelect/index.js |
React import cleanup. |
src/LayerSelectorPopup/index.test.js |
React import cleanup. |
src/LabeledPatrolSymbolLayer/index.js |
React import cleanup. |
src/KMLExportModal/index.js |
React import cleanup. |
src/KebabMenu/index.test.js |
React import cleanup. |
src/KebabMenu/index.js |
React import cleanup. |
src/JiraSupportWidget/index.js |
React import cleanup. |
src/InReach/index.js |
React import cleanup. |
src/index.js |
React import cleanup. |
src/IconTooltip/index.test.js |
React import cleanup. |
src/IconTooltip/index.js |
React import cleanup. |
src/hooks/useWebVitals/index.test.js |
React import cleanup. |
src/hooks/useTileEventFeatures/index.test.js |
React import cleanup. |
src/hooks/useStringifyCoordinates/index.test.js |
React import cleanup. |
src/hooks/useSortedNodes/index.test.js |
React import cleanup. |
src/hooks/useSortedNodes/index.js |
React import cleanup. |
src/hooks/useReport/index.test.js |
React import cleanup. |
src/hooks/usePermissions/index.test.js |
React import cleanup. |
src/hooks/usePatrol/index.test.js |
React import cleanup. |
src/hooks/useOnScreen/index.js |
Document effect-state lint exception. |
src/hooks/useNavigationBlocker/index.test.js |
React import cleanup. |
src/hooks/useNavigate/index.test.js |
React import cleanup. |
src/hooks/useModalPopover/index.test.js |
React import cleanup. |
src/hooks/useMapSources/index.test.js |
React import cleanup. |
src/hooks/useMapLayers/index.test.js |
React import cleanup. |
src/hooks/useMapLayers/index.js |
Remove unused catch binding. |
src/hooks/useJumpToLocation/index.test.js |
React import cleanup. |
src/hooks/useClusterPolygon/index.test.js |
React import cleanup. |
src/hooks/index.js |
Document render-ref lint exception. |
src/hooks/geometry.test.js |
React import cleanup. |
src/HeatmapToggleButton/index.js |
React import cleanup. |
src/HeatmapStyleControls/index.js |
React import cleanup. |
src/HeatmapLegend/styles.module.scss |
Normalize spacing. |
src/HeatmapLegend/index.js |
React import cleanup. |
src/HamburgerMenuIcon/index.js |
React import cleanup. |
src/GpsInput/index.test.js |
React import cleanup. |
src/GpsFormatTogglePopup/index.js |
React import cleanup. |
src/GpsFormatToggle/index.test.js |
React import cleanup. |
src/GpsFormatToggle/index.js |
React import cleanup. |
src/GlobalMenuDrawer/index.js |
React import cleanup. |
src/GetUserLocationButton/styles.module.scss |
Normalize import spacing. |
src/GetUserLocationButton/index.js |
React import cleanup. |
src/GeoLocationWatcher/index.test.js |
React import cleanup. |
src/GearPopup/index.test.js |
React import cleanup. |
src/GearLayer/index.test.js |
React import cleanup. |
src/FriendlyFilterString/index.test.js |
React import cleanup. |
src/FriendlyFilterString/index.js |
React import cleanup. |
src/FeedListItem/index.js |
React import cleanup. |
src/FeedDateFilter/index.js |
React import cleanup. |
src/FeatureSymbolPopup/index.test.js |
React import cleanup. |
src/FeatureSymbolPopup/index.js |
React import cleanup. |
src/EventTypeListItem/index.js |
React import cleanup. |
src/EventsVectorLayer/index.test.js |
React import cleanup. |
src/EventsTileLayers/index.test.js |
React import cleanup. |
src/EventsRealtimeOverlayLayer/index.test.js |
React import cleanup. |
src/EventsClusterSymbolsLayer/index.test.js |
React import cleanup. |
src/EventIcon/index.test.js |
React import cleanup. |
src/EventIcon/index.js |
React import cleanup. |
src/EventGeometryLayer/index.test.js |
React import cleanup. |
src/EventFilter/index.test.js |
React import cleanup. |
src/EventFilter/index.js |
React import cleanup. |
src/EventFilter/FiltersPopover/index.test.js |
React import cleanup. |
src/EventFilter/FiltersPopover/index.js |
React import cleanup. |
src/EventFilter/FiltersPopover/EventTypesFilter/styles.module.scss |
Correct button mixin reference. |
src/EventFilter/FiltersPopover/EventTypesFilter/index.test.js |
React import cleanup. |
src/EventFilter/FiltersPopover/EventTypesFilter/index.js |
React import cleanup. |
src/EventFilter/DateRangePopover/index.test.js |
React import cleanup. |
src/ErrorMessages/index.js |
React import cleanup. |
src/ErrorMessage/index.js |
React import cleanup. |
src/ErrorBoundary/index.js |
React import cleanup. |
src/EditableItem/Modal.js |
React import cleanup. |
src/EditableItem/index.js |
React import cleanup. |
src/EditableItem/Footer.js |
React import cleanup. |
src/EditableItem/context.js |
React import cleanup. |
src/EditableItem/Body.js |
React import cleanup. |
src/EditableItem/AttachmentList.js |
React import cleanup. |
src/EditableItem/AttachmentControls.js |
React import cleanup. |
src/EarthRangerMap/Attribution.js |
React import cleanup. |
src/EarthRangerLogo/index.js |
React import cleanup. |
src/EarthRangerIconLoadingOverlay/styles.module.scss |
Normalize keyframe spacing. |
src/EarthRangerIconLoadingOverlay/index.js |
React import cleanup. |
src/ducks/popup.js |
Use Object.hasOwn. |
src/ducks/features.js |
Remove unused catch binding. |
src/DroppedMarkerPopup/styles.module.scss |
Normalize selector syntax and spacing. |
src/DroppedMarkerPopup/index.js |
React import cleanup. |
src/Drawer/index.test.js |
React import cleanup. |
src/Drawer/index.js |
React import cleanup. |
src/DetectOffline/index.js |
React import cleanup. |
src/DetailViewComponents/HistorySection/UpdateListItem/index.js |
React import cleanup. |
src/DetailViewComponents/HistorySection/index.test.js |
React import cleanup. |
src/DetailViewComponents/HistorySection/index.js |
React import cleanup. |
src/DetailViewComponents/AddReportButton/styles.module.scss |
Correct button mixin reference. |
src/DetailViewComponents/AddReportButton/index.js |
React import cleanup. |
src/DetailViewComponents/ActivitySection/NoteListItem/index.test.js |
React import cleanup. |
src/DetailViewComponents/ActivitySection/index.test.js |
React import cleanup. |
src/DetailViewComponents/ActivitySection/index.js |
React import cleanup. |
src/DetailViewComponents/ActivitySection/DateListItem/index.test.js |
React import cleanup. |
src/DetailViewComponents/ActivitySection/ContainedReportListItem/index.test.js |
React import cleanup. |
src/DetailViewComponents/ActivitySection/AttachmentListItem/index.test.js |
React import cleanup. |
src/DelayedUnmount/index.js |
Document effect-state lint exception. |
src/DateTimePicker/index.test.js |
React import cleanup. |
src/DateTimePicker/index.js |
React import cleanup. |
src/DateTime/index.js |
React import cleanup. |
src/DateRangeSelector/DateRangeSelectionString.js |
React import cleanup. |
src/DatePicker/index.test.js |
React import cleanup. |
src/DatePicker/index.js |
React import cleanup. |
src/DatePicker/CalendarPopper/MonthPicker/index.test.js |
React import cleanup. |
src/DatePicker/CalendarPopper/index.test.js |
React import cleanup. |
src/DatePicker/CalendarPopper/index.js |
React import cleanup. |
src/DataExportModal/index.js |
React import cleanup. |
src/DailyReportModal/index.js |
React import cleanup. |
src/CursorGpsDisplay/MenuPopover/index.test.js |
React import cleanup. |
src/CursorGpsDisplay/MenuPopover/index.js |
React import cleanup. |
src/CursorGpsDisplay/index.test.js |
React import cleanup. |
src/CursorGpsDisplay/index.js |
React import cleanup. |
src/CommunityPage/index.js |
Document effect-state lint exception. |
src/common/styles/vars/controls.module.scss |
Namespace Sass variable export. |
src/common/styles/vars/_controls.scss |
Modernize equivalent color syntax. |
src/common/styles/_filter-popovers.scss |
Correct box-shadow mixin reference. |
src/ClustersLayer/index.test.js |
React import cleanup. |
src/ClustersLayer/index.js |
React import cleanup. |
src/Checkmark/index.js |
React import cleanup. |
src/CheckboxList/index.test.js |
React import cleanup. |
src/CheckboxList/index.js |
React import cleanup. |
src/CheckableList/index.js |
React import cleanup. |
src/BaseLayerRenderer/TileLayerRenderer.test.js |
React import cleanup. |
src/BaseLayerRenderer/TileLayerRenderer.js |
React import cleanup. |
src/BaseLayerRenderer/index.js |
React import cleanup. |
src/Badge/index.js |
React import cleanup. |
src/Auth0TokenManager/accountLinkingGate.integration.test.js |
React import cleanup. |
src/App.js |
React import cleanup. |
src/AnalyzerConfigPopup/index.js |
React import cleanup. |
src/AlertsModal/index.js |
React import cleanup. |
src/AddToIncidentModal/index.test.js |
React import cleanup. |
src/AddToIncidentModal/index.js |
React import cleanup. |
src/AddNoteButton/styles.module.scss |
Correct button mixin reference. |
src/AddNoteButton/index.test.js |
React import cleanup. |
src/AddNoteButton/index.js |
React import cleanup. |
src/AdditionalDeviceProperties/styles.module.scss |
Correct link-button mixin reference. |
src/AdditionalDeviceProperties/index.test.js |
React import cleanup. |
src/AdditionalDeviceProperties/index.js |
React import cleanup. |
src/AddItemButton/index.test.js |
React import cleanup. |
src/AddItemButton/AddItemModal/TypesList/index.test.js |
React import cleanup. |
src/AddItemButton/AddItemModal/TypesList/index.js |
React import cleanup. |
src/AddItemButton/AddItemModal/AddReportTab/index.test.js |
React import cleanup. |
src/AddItemButton/AddItemModal/AddPatrolTab/index.test.js |
React import cleanup. |
src/AddAttachmentButton/styles.module.scss |
Correct mixin and normalize spacing. |
src/AddAttachmentButton/index.test.js |
React import cleanup. |
src/AddAttachmentButton/index.js |
React import cleanup. |
src/__test-helpers/navigationWrapper.js |
React import cleanup. |
src/__test-helpers/MockSocketContext.js |
React import cleanup. |
restart.sh |
Remove legacy restart wrapper. |
nginx/Dockerfile.dev |
Remove legacy development image. |
mock-api/api/v2.0/index.js |
Remove obsolete mock router. |
mock-api/api/v1.0/activity/eventtypes/index.js |
Remove obsolete mock schema endpoint. |
mock-api/.gitignore |
Remove obsolete mock ignore configuration. |
mock-api/.dockerignore |
Remove obsolete mock container configuration. |
Dockerfile.test |
Remove legacy test image. |
Dockerfile.dev |
Remove legacy development image. |
.gitconfig |
Remove legacy hooks configuration. |
.env.production |
Remove redundant environment settings. |
.env.development |
Remove redundant and obsolete settings. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…e tooling - System status: a service without a heartbeat or datasource date stores null instead of an Invalid Date, which crashed the app when the menu opened. - Map marker names: stop deleting `_persist` from the store during render, so the setting survives a reload again. - Analyzers: stable map handlers, so the hover highlight clears when the pointer leaves. - Track length: derive it during render, so it disappears with the track. - ESLint, Jest and the Vite dev server ignore Claude Code worktrees under `.claude/`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The favicon was a single black 16x16 bitmap, blurry on high-density screens and nearly invisible on dark tab strips, and the manifest listed sizes it did not contain. - Add a teal favicon.svg drawn on a pixel grid, with a dark mode color - Rebuild favicon.ico with 16, 32 and 48px images - Add an apple-touch-icon and 192, 512 and maskable PWA icons - Declare them in index.html and the manifest, set the theme color to white, and point start_url and id at the root - Precache the icons and the manifest in the service worker - Add yarn build-app-icons to regenerate them from their SVG sources Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
luixlive
marked this pull request as ready for review
October 2, 2026 20:27
The icons are static files that rarely change, so they are kept as plain assets in public/ rather than regenerated by tooling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 PR Environment Deployed
|
This branch has not been deployed
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.
What does this PR do?
Repository maintenance. Linting now passes cleanly across the whole repository, and the files nothing uses are gone. The only behavior changes are fixes for four bugs the new lint rules uncovered.
Cleanup
docker-compose.yml,Dockerfile.dev,Dockerfile.test,nginx/),mock-api/,restart.sh,test.sh,VERSION,.gitconfig, the leftover CRApublic/index.html, and two unused Terraform files (outputs.tf,remote_state.tf)..gitignoreand.dockerignorefor this project, in commented groups. ESLint, Jest and the Vite dev server now also ignore Claude Code worktrees under.claude/..env*files to the variables the app still reads.eslint,jest,babel-jest,jest-watch-typeahead,workbox-build) todevDependencies, and bumpsdotenvto 18.0.5.vite-ignoreto the/config.jsscript tag. Vite no longer warns at build time, and the runtime config still loads the same way.ESLint
eslint.config.mjs, which ends Node's module-type warning.Reactimports.--fix, andjest/valid-expectthen awaits anyexpect(...).rejectsthat is not awaited on the line where it is written. So a fake-timer test advances the timers and awaits the rejection in onePromise.all(seeutils/auth-recovery.test.js).src/__test-helpers/, and deletes 4 emptytest.todoplaceholders.Stylelint and Sass
.stylelintrc.jsonwithstylelint.config.mjsonstylelint-config-standard-scss, with camelCase class names in CSS modules. Global stylesheets are exempt, because they target Bootstrap and Mapbox markup.@importto@useand the deprecated global Sass color functions tosass:color.appearancereplaces-webkit-appearance, chained:not()selectors merge into one,clip-pathreplacesclip,overflow: overlaybecomesauto, andword-break: break-wordgoes away.Bug fixes
The new rules flagged these, and each one now has a regression test:
_persistfrom the store while rendering.Tooling and docs
yarn lintandyarn stylelintwith a singleyarn format, which runseslint --fix .and thenstylelint --fix "**/*.scss", matching report-form-builder.README.md,AGENTS.mdandCONTRIBUTING.mdto recommendyarn format.CONTRIBUTING.mdalso drops its outdated Airbnb style guide andnpm run lintreferences.🤖 Generated with Claude Code