Skip to content

Releases: tess1o/geopulse

Release v1.21.0

09 Mar 20:48

Choose a tag to compare

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

image

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

image

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.
image

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

05 Mar 08:46

Choose a tag to compare

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.
image

If the trip type is UNKNOWN we suggest to set it manually:
image

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.

image

Quick Stay Renaming from Timeline Cards

You can now quickly rename a related favorite location or geocoding entity directly from Timeline cards.

image

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

03 Mar 15:41

Choose a tag to compare

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

02 Mar 15:34

Choose a tag to compare

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

  • Fixed Refresh JWT token API failure caused by missing GraalVM configuration. See #365
  • Fixed an issue on Place Details where not all Immich photos were shown by improving photo-fetching logic from Immich. See #360

Release v1.19.0

27 Feb 20:57

Choose a tag to compare

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

26 Feb 09:19
7ca639c

Choose a tag to compare

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

  1. 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.
  2. Coverage Explorer visuals were tuned:

    • Coverage overlay color is darker for better contrast.
    • Zoom-to-grid transitions were adjusted for smoother behavior while zooming.
  3. 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

24 Feb 10:43

Choose a tag to compare

GeoPulse 1.18.1

📝 What's Changed

Improved Location Analytics Map

Fixed some UI/UX issues and improved the overall Location Analytics Map. See #333

Fixed GPSLogger issue - 401 error

See #335

Release v1.18.0

23 Feb 09:38

Choose a tag to compare

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 Explorer page in the app navigation.
    • Shows explored areas as a grid overlay on the map.
    • Cell opacity indicates repeat visits (more visits = stronger opacity).
  • 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 Map tab in Location 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

See issue: #333

3. GPSLogger source type (dedicated integration)

GeoPulse now supports GPSLogger as a first-class location source type.

  • What it is:

    • New GPSLogger option in Location Sources.
    • Dedicated setup instructions and quick setup flow in the UI.
    • New HTTP endpoint for GPSLogger payloads: /api/gpslogger.
  • 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 null scenarios).
    • Cleared stale highlighted trip paths when changing the date range so old trip overlays do not remain visible while new data loads.

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

21 Feb 20:33

Choose a tag to compare

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

18 Feb 10:24

Choose a tag to compare

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