feat: Import Places / Activities From Keyhole Markdown (KMZ/KML)#488
Closed
biasutti wants to merge 9 commits intomauriceboe:devfrom
Closed
feat: Import Places / Activities From Keyhole Markdown (KMZ/KML)#488biasutti wants to merge 9 commits intomauriceboe:devfrom
biasutti wants to merge 9 commits intomauriceboe:devfrom
Conversation
…port # Conflicts: # server/tests/integration/places.test.ts
jubnl
added a commit
that referenced
this pull request
Apr 15, 2026
Resolves conflicts with Naver list import (PR #662) — kept both unified list-import dialog and new KMZ/KML dialog. Dropped duplicate react-dom import and unused CustomSelect import from PlacesSidebar.
jubnl
added a commit
that referenced
this pull request
Apr 15, 2026
- Strip BOM (U+FEFF) from 14 translation files injected by editor - Guard KMZ unpack against zip-bomb: check entry.uncompressedSize against 50 MB cap (KMZ_DECOMPRESSED_SIZE_LIMIT) before calling .buffer(); limit is an exported constant so tests can override it - Fix non-BMP HTML entity decoding: replace String.fromCharCode with String.fromCodePoint + 0x10FFFF bounds check so emoji like 😀 round-trip correctly - Switch KML namespace stripping from regex to fast-xml-parser's removeNSPrefix option; XMLValidator accepts namespaced XML natively, making the pre-strip step unnecessary - Remove dead skippedCount overwrite after transaction; per-loop increment already tracks it alongside per-item error messages - Type multer req.file as Express.Multer.File on both /import/gpx and /import/map routes instead of (req as any).file - Add unit tests: emoji entity decoding (decimal + hex), KMZ zip-bomb rejection, KMZ-with-no-KML rejection
Collaborator
|
Closed in favor of #663 |
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.
See points to discuss
Feature summary:
Tests:
Points to discuss / maybe further merge requests:
The implementation in the frontend is prepared to support further formats. A GPX integration into the same dialog would also be possible. This would free up some space in the sidebar. What are your thought on this?
Not all imported data can be matched to some places on Google maps. This causes some 404 api errors when loading images for those place. I have to look further into it what a solution could look like.
Update to discussion-point 3.:
The picture cant be found for some places as the KMZ import does not provide a Google PlaceID and therefore the picture search algo is using a fallback with coordinates which not always returns a picture.
Currently for every unmatched place there is a warning in the log:
[WARN] 2026-04-07T19:31:17 GET /place-photo/coords%3A34.951474%3A135.7923898 404 1ms ip=::1Are we okay with this warning as its not directly caused by this change or should I improve this?