-
-
Notifications
You must be signed in to change notification settings - Fork 81
Sync Dev to Main #1187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Sync Dev to Main #1187
Conversation
# [1.41.0-develop.1](v1.40.2-develop.1...v1.41.0-develop.1) (2025-12-11) ### Bug Fixes * battle/raid icon max height ([497f350](497f350)) * no scrollbars plz ([907ca33](907ca33)) ### Features * dynamic placed Pokemon dropdown height ([8a0447c](8a0447c)) * support stationed pokemon extras ([4f5aace](4f5aace))
# [1.41.0-develop.2](v1.41.0-develop.1...v1.41.0-develop.2) (2025-12-15) ### Bug Fixes * remove extra Forms ([0f157ed](0f157ed))
Co-authored-by: Mygod <contact-git@mygod.be>
# [1.41.0-develop.3](v1.41.0-develop.2...v1.41.0-develop.3) (2025-12-16) ### Bug Fixes * logic bug in loading non-clustered elements ([#1161](#1161)) ([a2c7f17](a2c7f17)) * more robust discord handling ([#1181](#1181)) ([b579ded](b579ded)) ### Features * default clientPrompt to none to skip permission reapproval ([d3ea283](d3ea283))
# [1.41.0-develop.4](v1.41.0-develop.3...v1.41.0-develop.4) (2025-12-31) ### Bug Fixes * area reload ([cea3141](cea3141))
* Escapes XML in GPX route data Ensures route names and descriptions are properly escaped when generating GPX files, preventing potential XML parsing issues. Sanitizes the filename to be downloaded. * Prettier * fix: filename sanitizer to also strip backslashes for Windows safety --------- Co-authored-by: Mygod <contact-git@mygod.be>
# [1.41.0-develop.5](v1.41.0-develop.4...v1.41.0-develop.5) (2026-01-08) ### Bug Fixes * escape gpx xml ([#1186](#1186)) ([7bd5ce1](7bd5ce1))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request syncs the development branch to main, bringing together accumulated features and bug fixes from the 1.41.0 development cycle. The changes include support for additional Pokémon display attributes at stations, improvements to UI components, security enhancements for GPX export, and Discord client robustness improvements.
Changes:
- Added support for stationed Pokémon extras (shiny, temp evolution, alignment, badge, background)
- Introduced reusable overlay icon rendering utility for map markers
- Enhanced form display options with configurable suffix appending
- Improved GPX export with XML escaping and filename sanitization
- Enhanced Discord client error handling for missing members
- Dynamic sizing for stationed Pokémon grid display
Reviewed changes
Copilot reviewed 25 out of 26 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/utils/renderOverlayIcon.js | New utility function for rendering standardized overlay icons on map markers |
| src/utils/getFormDisplay.js | Added appendFormSuffix option to control form suffix display |
| src/services/queries/station.js | Extended GraphQL query to fetch additional Pokémon display fields |
| src/services/Assets.js | Updated getPokemonByDisplay to handle new display properties including temp evolution |
| src/pages/map/components/Clustering.jsx | Fixed clustering logic to respect IGNORE_CLUSTERING category setting |
| src/hooks/useTranslateById.js | Added omitFormSuffix option for translation customization |
| src/features/station/useStationMarker.js | Refactored battle icon rendering to use new renderOverlayIcon utility |
| src/features/station/StationPopup.jsx | Implemented dynamic grid sizing and background visuals for stationed Pokémon display |
| src/features/route/RoutePopup.jsx | Added XML escaping and filename sanitization for GPX export security |
| src/features/pokemon/PokemonPopup.jsx | Enhanced weather icon rendering with background visual support |
| src/features/gym/gymMarker.js | Refactored raid icon rendering to use new renderOverlayIcon utility |
| src/features/drawer/gyms/Raids.jsx | Improved raid tier filtering to preserve unavailable stored tiers |
| src/features/drawer/components/SelectorList.jsx | Applied omitFormSuffix option to selector list translations |
| src/features/drawer/Stations.jsx | Improved battle tier filtering to preserve unavailable stored tiers |
| src/components/virtual/VirtualGrid.jsx | Added scrollerRef prop support for external scroll container access |
| src/components/virtual/SelectorItem.jsx | Applied omitFormSuffix option to selector item translations |
| src/components/filters/Advanced.jsx | Applied omitFormSuffix option to advanced filter titles |
| src/assets/css/main.css | Added CSS for marker overlay icons and consolidated pokestop marker styles |
| server/src/utils/reloadConfig.js | Fixed config reload to prime areas early preventing getSafe failures |
| server/src/services/DiscordClient.js | Enhanced error handling with specific logging for member not found errors |
| server/src/graphql/typeDefs/scanner.graphql | Extended StationPokemon type with additional display fields |
| packages/types/lib/scanner.d.ts | Updated StationPokemon interface to extend PokemonDisplay |
| packages/config/.configref | Updated config reference version |
| package.json | Bumped version to 1.41.0-develop.5 |
| config/default.json | Changed Discord clientPrompt default from "consent" to "none" |
| CHANGELOG.md | Added changelog entries for develop releases |
Comments suppressed due to low confidence (1)
src/features/route/RoutePopup.jsx:423
- The waypoint data in the GPX output is not properly escaped. While route.name and route.description are now escaped, the waypoint.lat_degrees, waypoint.lng_degrees, and waypoint.elevation_in_meters values are inserted directly into XML attributes without escaping. If these values could contain special XML characters, they should also be escaped.
${route.waypoints
.map(
(waypoint) =>
`<rtept lat="${waypoint.lat_degrees}" lon="${waypoint.lng_degrees}"><ele>${waypoint.elevation_in_meters}</ele></rtept>`,
)
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| bread_mode, | ||
| } = pokemonDisplay || {} | ||
| const evolution = | ||
| temp_evolution_finish_ms && Date.now() > temp_evolution_finish_ms |
Copilot
AI
Jan 17, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logic for checking temp_evolution_finish_ms has a potential issue. When temp_evolution_finish_ms is 0 (falsy), the condition will short-circuit and return temp_evolution, even though 0 might be a valid timestamp. The condition should check for null/undefined explicitly rather than relying on truthiness. Consider using: temp_evolution_finish_ms != null && Date.now() > temp_evolution_finish_ms
| temp_evolution_finish_ms && Date.now() > temp_evolution_finish_ms | |
| temp_evolution_finish_ms != null && | |
| Date.now() > temp_evolution_finish_ms |
| @@ -1 +1 @@ | |||
| 26702 No newline at end of file | |||
| 26699 No newline at end of file | |||
Copilot
AI
Jan 17, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The config reference is being changed from 26702 to 26699, which appears to be going backwards in version/reference number. This seems unusual for a sync operation and may indicate an unintended downgrade or incorrect merge.
| 26699 | |
| 26702 |
| }, | ||
| [recomputeIconSize], | ||
| ) | ||
|
|
Copilot
AI
Jan 17, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ResizeObserver created in handleScrollerRef is not properly cleaned up when the component unmounts. While it disconnects when the ref changes, there should be a useEffect cleanup function to disconnect the observer when the component unmounts to prevent memory leaks.
| React.useEffect(() => { | |
| return () => { | |
| if (resizeObserver.current) { | |
| resizeObserver.current.disconnect() | |
| resizeObserver.current = null | |
| } | |
| } | |
| }, []) |
| const perColumn = Math.floor(el.clientWidth / columns) | ||
| const nextSize = Math.min(40, perColumn || 40) | ||
| setIconSize((prev) => (prev === nextSize ? prev : nextSize)) | ||
| }, [columns]) |
Copilot
AI
Jan 17, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The recomputeIconSize callback depends on the 'columns' variable (line 492), but 'columns' is defined as a constant within the component body. This dependency is unnecessary since 'columns' never changes. Either move 'columns' outside the component or remove it from the dependency array to avoid potential issues.
| }, [columns]) | |
| }, []) |
No description provided.