Releases: tess1o/geopulse
Release v1.21.0
New Features
Added Traccar Position Forwarding integration
Added integration with Traccar - https://www.traccar.org/
Documentation: https://tess1o.github.io/geopulse/docs/user-guide/gps-sources/traccar
Added Colota GPS source integration
Added integration with Colota app - Android GPS tracking app.
Official website: https://colota.app
Documentation: https://tess1o.github.io/geopulse/docs/user-guide/gps-sources/colota
Thanks to @dietrichmax
Added optional friend location trails on Live map
- Added a 60-minute trail view for friends sharing live locations.
- Added trail visibility toggle and dedicated fetching/rendering path controls.
Default date range preferences
- New profile setting (Profile -> Display) for default date preset (
Today,Yesterday,Last 7 days,Last 30 days). - Applies across Timeline, Dashboard, and Timeline Reports by default.
Improvements
- Timeline map readability improvements
- Improved handling of multiple timeline events at the same map point with grouped/stacked event popups.
- Better highlighted trip marker/endpoints behavior for clearer trip visualization.
- Favorites/location matching refinement
- Favorite point matching now uses the user’s stay detection radius configuration instead of a fixed 75m threshold.
- Favorite-based anchoring reduces visual scatter for frequently visited places.
Bug Fixes
-
Timezone and timestamp correctness
- Improved timestamp parsing and native query handling across GPS/friends/timeline components.
- Added migration support for timezone-safe storage (
TIMESTAMPTZ) to avoid UTC offset drift issues.
-
Fixed incorrect country flag resolution in Journey Insights.
Release v1.20.0
New Features
Manual Movement Type Override for Trips
Sometimes the classifier may misidentify movement type (walk, car, train, etc.).
Starting with this release, you can manually set the movement type for a trip.
- Manual overrides are preserved during timeline regeneration when the trip is unchanged (or only insignificantly changed).
- You can revert at any time to the movement type inferred by the algorithm.
If the trip type is UNKNOWN we suggest to set it manually:

Documentation: Manual Movement Type Override
Full Screen Mode for Maps
Added a Full Screen button next to zoom controls on all maps, so you can quickly expand any map view.
Quick Stay Renaming from Timeline Cards
You can now quickly rename a related favorite location or geocoding entity directly from Timeline cards.
Improvements
- Improved backend SQL queries to speed up timeline generation.
- Database now implicitly uses UTC timezone to avoid timezone-related issues for users running non-UTC containers.
- Renamed menu item Preferences to Timeline Preferences for clarity.
- Expanded and improved backend unit and integration tests.
Release v1.19.2
GeoPulse 1.19.2
Improved Immich Integration in Location Analytics
We’ve improved how GeoPulse fetches photos from Immich on the Place, City, and Country pages within Location Analytics.
Previously, the city and country names in GeoPulse had to match exactly with those stored in Immich. This often caused photos not to appear if naming differed slightly.
Starting from this version:
- GeoPulse normalizes city and country names using data from the GeoNames database.
- The GeoNames dump is downloaded and stored locally in GeoPulse (one time background operation, no extra configuration/step is needed)
- The normalized values are sent to Immich when requesting photos.
Important:
- This does not modify your existing data in GeoPulse.
- Your custom city and country names remain unchanged.
- Normalization is applied only when querying Immich.
This makes photo matching significantly more reliable while keeping your data fully intact.
Release v1.19.1
GeoPulse 1.19.1
Improvements
-
Optional CAR movement type
Previously, both WALK and CAR movement types were mandatory. Starting with this release, you can optionally disable CAR if you don’t need it. See #346
-
Date Picker: first day of week now follows date format
Previously, Sunday was always used as the first day of the week. Starting with this release, if you select DD/MM/YYYY (European) or YYYY-MM-DD (ISO) in Profile (/app/profile?tab=profile), Monday is used as the first day of the week. See #364
Bug Fixes
Release v1.19.0
GeoPulse 1.19.0
New Features
- Added a Date Format setting in the Profile page: US (MM/DD/YYYY), European (DD/MM/YYYY), or ISO (YYYY-MM-DD). The default remains US. Applies to all dates in UI.
- Expanded Immich integration in Location Analytics and Timeline:
- Country, City, and Place pages now show latest Immich photos for that location.
- Photos can be previewed and opened on the map.
- Timeline Stay/Trip cards now show an icon when matching Immich photos exist.
- Note: Immich photos must include GPS coordinates; city/country in GeoPulse must match the names used in Immich GeoData.
- Added a third UI theme mode: System (in addition to Light and Dark), which follows the OS theme.
- Added automatic refresh for the Friends > Live tab (every 15 seconds).
- Added automatic refresh/recovery on the Error page; when backend connectivity is restored, users are redirected back to Home.
Improvements
- Refreshed the Photo Viewer dialog UX (better navigation and multi-photo browsing).
- Improved mobile UI styling for map/photo-related components.
Bug Fixes
- Fixed incorrect visit counts on the Location Analytics map.
- Fixed a marker “jumping” issue on the Location Analytics map.
- Fixed a Timeline map edge case where stale/old path data could remain visible.
Release v1.18.2
GeoPulse 1.18.2
New features
- Trip/period tags now appear in the Place Visits table as a new Trip column (shown only when matching tags exist).
- Trip/period tags now appear in the Location Analytics map side panel (for places with a tagged last visit).
Improved
-
Date range preset dropdown was upgraded with a richer UI for period tags:
- Period tags are grouped separately from regular presets.
- Period tag presets are color-coded.
- Labels are clearer (trip name + date range).
- Dropdown sizing is improved for smaller screens.
-
Coverage Explorer visuals were tuned:
- Coverage overlay color is darker for better contrast.
- Zoom-to-grid transitions were adjusted for smoother behavior while zooming.
-
Digest heatmap visuals were improved:
- Trip heatmap rendering is more readable across zoom levels.
- Trip heatmap point size/blur now adapts to zoom.
- Trip intensity/opacity tuning improves visibility and balance.
- Default heatmap mode now starts on Trips.
Fixed
-
Fixed heatmap layer instability during animated zooms / view resets (Leaflet heat layer guard added to prevent intermittent rendering errors).
-
Fixed heatmap zoom handling cleanup to avoid stale zoom listeners when the component is re-mounted.
-
Fixed trips heatmap zoom behavior so it can render correctly at deeper zoom levels.
-
Countries / Cities with slashes are not correctly opened in UI.
-
Gap stay inference now handles more real-world cases
- Stay -> gap -> same place (existing behavior, unchanged)
- short local movement -> gap -> same place is now treated as a continuous stay
- trip -> arrived/stopped -> gap -> same place -> trip can now become:
- finalized trip
- continuous stay across the gap
- next trip
Release v1.18.1
Release v1.18.0
GeoPulse 1.18.0
This release includes new location visualization tools, a new GPS source integration, a major Location Sources UX cleanup, and a couple of important fixes.
New Features
1. Coverage Explorer (new page)
Coverage Explorer adds a map-based view of the areas you have already traveled through, built from your GPS history.
-
What it is:
- A new
Coverage Explorerpage in the app navigation. - Shows explored areas as a grid overlay on the map.
- Cell opacity indicates repeat visits (more visits = stronger opacity).
- A new
-
How it works:
- GeoPulse processes GPS points in the background and builds coverage cells at multiple grid sizes.
- Grid resolution can be set manually or automatically based on zoom level (20/50/250/1000/5000/20000/40000 meters grid).
- A per-user toggle lets you enable/disable coverage processing.
See issue: #331
2. Location Analytics Map (on Location Analytics page)
Location Analytics now includes a map tab so users can explore places visually, not only via city/country lists.
- What it is:
- New
Maptab inLocation Analytics. - Displays aggregated places as markers (clustered when zoomed out).
- Includes a “recent places in view” rail for quick selection and navigation.
- Similarly how Google Timeline used to work on Web
- New
See issue: #333
3. GPSLogger source type (dedicated integration)
GeoPulse now supports GPSLogger as a first-class location source type.
-
What it is:
- New
GPSLoggeroption in Location Sources. - Dedicated setup instructions and quick setup flow in the UI.
- New HTTP endpoint for GPSLogger payloads:
/api/gpslogger.
- New
-
How it works:
- Uses HTTP + Basic Auth with an OwnTracks-compatible JSON payload.
- GeoPulse authenticates GPSLogger credentials using the configured source.
- GPSLogger speed values are correctly interpreted as m/s and converted to km/h before filtering/storage.
- The UI now generates GPSLogger-specific setup instructions (URL, JSON body, headers, auth).
Documentation: https://tess1o.github.io/geopulse/docs/user-guide/gps-sources/gps_logger
See issue: #335
Improvements
1. Location Sources page refactor and UX cleanup
The Location Sources screen was reworked to be easier to use and maintain.
-
What changed:
- Split the large page into focused components (quick setup guide, configured sources list, instructions card, source dialog).
- Added a guided add-source dialog flow (choose source first, then configure).
- Improved source summary and validation behavior in the dialog.
-
User impact:
- Cleaner setup experience for new users.
- Easier editing of existing sources.
- More consistent instructions across source types.
Bug Fixes
1. Timeline trip click/map highlight stability
Fixed issues on the Timeline page when clicking trips, especially during quick interactions.
- Fixes include:
- Prevented map animation race conditions that could trigger Leaflet errors (including detached marker callbacks /
_map is nullscenarios). - Cleared stale highlighted trip paths when changing the date range so old trip overlays do not remain visible while new data loads.
- Prevented map animation race conditions that could trigger Leaflet errors (including detached marker callbacks /
See issue: #334
2. Helm chart crashes with permission errors
Fixed a bug in the Helm chart that prevented GeoPulse backend from starting on Kubernetes clusters
See issue: #330
Release v1.17.0
GeoPulse 1.17.0
New Features
HeatMap on Rewind page
On the Rewind page (with stats for given month or year) I added a Heat map that shows the most visited locations or trips for selected month or year. Additional Layer with the HeatMap can be enabled on the Timeline map. See #326
Drop Folder Imports (Server‑Side)
New and improved drop‑folder import support lets you automate imports by dropping files into a server‑side directory. The backend watches a configured folder and processes files from per‑user subfolders (folder name = user email, case‑insensitive).
To use it:
- Add the bind mount in docker-compose.yml:
./import-drop:/data/geopulse-import(SELinux hosts: :Z or :z). - Enable the feature in Admin → Settings → Import or via GEOPULSE_IMPORT_DROP_FOLDER_ENABLED=true.
- Ensure permissions allow the backend user (UID 1001) to read files and write/move them (fix with chown/chmod or setfacl).
- Docs with detailed information and instructions: Drop Folder Imports
Bug Fixes
- Fixed Test Connection button for Immich. The issue was actual for Immich v2.XXX. See #318
- GPS Track Simplification was enabled even if disabled in the settings. Now it respects the configuration. See #320
Improvements
- Renamed buttons om Import page to make them clearer. See #322
- Added button "Delete all data" on the GPS Data page to quickly wipe all GPS data and timeline for user. See #321
- If you have a trip (or stay) then data gap and then again trip or stay they won't be connected with a line to respect that there is a data gap in between. See #323
- If you have Period Tags created those dates will be added as Presets in timeline calendar. See #325
- Allow to make NodePort static for helm deployment. See #329
- Fixed keygen job in helm chart. See #330
- Updated default database transaction timeout to 60 minutes.
GEOPULSE_DATABASE_TRANSACTION_TIMEOUT_MINUTES=60. See #332
Release v1.16.2
GeoPulse 1.16.2
📝 What's Changed
Created new tab "Display" on Profile page
Created new tab "Display" and moved there "GPS Simplification Path" setting from "Preferences" page and "Custom Tile URL" from "profile" tab. This is needed for better parameters organization
Improved UI for Profile page
Made profile page more consistent from UI perspective
Added title to each page
Previously we had "GeoPulse" title for all UI pages, now it's "Profile - GeoPulse", "Timeline - GeoPulse", etc.
Improved e2e tests
Improved e2e tests, fixed issues, code refactoring, etc
Manual installation documentation
Added documentation how to install GeoPulse without docker or k8s - https://tess1o.github.io/geopulse/docs/getting-started/deployment/manual-installation