Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.25.0 - 2025-03-09
This release is focused on improving the visits experience.
Addedβ
- A new button to open the visits drawer.
- User can now confirm or decline visits directly from the visits drawer.
- Visits are now being shown on the map: orange circles for suggested visits and slightly bigger blue circles for confirmed visits.
- User can click on a visit circle to rename it and select a place for it.
- User can click on a visit card in the drawer panel to move to it on the map.
- User can select click on the "Select area" button in the top right corner of the map to select an area on the map. Once area is selected, visits for all times in that area will be shown on the map, regardless of whether they are in the selected time range or not.
- User can now select two or more visits in the visits drawer and merge them into a single visit. This operation is not reversible.
- User can now select two or more visits in the visits drawer and confirm or decline them at once. This operation is not reversible.
- Status field to the User model. Inactive users are now being restricted from accessing some of the functionality, which is mostly about writing data to the database. Reading is remaining unrestricted.
Changedβ
- Links to Points, Visits & Places, Imports and Exports were moved under "My data" section in the navbar.
- Restrict access to Sidekiq in non self-hosted mode.
- Restrict access to background jobs in non self-hosted mode.
- Restrict access to users management in non self-hosted mode.
- Points are now using
lonlatcolumn for storing longitude and latitude. - Semantic history points are now being imported much faster.
- GPX files are now being imported much faster.
- Distance calculation are now using Postgis functions and expected to be more accurate.
Fixedβ
- Fixed a bug where non-admin users could not import Immich and Photoprism geolocation data.
- Fixed a bug where upon point deletion it was not being removed from the map, while it was actually deleted from the database. #883
- Fixed a bug where upon import deletion stats were not being recalculated. #824
0.24.1 - 2025-02-13
Custom map tilesβ
In the user settings, you can now set a custom tile URL for the map. This is useful if you want to use a custom map tile provider or if you want to use a map tile provider that is not listed in the dropdown.
To set a custom tile URL, go to the user settings and set the Maps section to your liking. Be mindful that currently, only raster tiles are supported. The URL should be a valid tile URL, like https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png. You, as the user, are responsible for any extra costs that may occur due to using a custom tile URL.
Addedβ
- Safe settings for user with default values.
- Nominatim API is now supported as a reverse geocoding provider.
- In the user settings, you can now set a custom tile URL for the map. #429 #715
- In the user map settings, you can now see a chart of map tiles usage.
- If you have Prometheus exporter enabled, you can now see a
ruby_dawarich_map_tilesmetric in Prometheus, which shows the total number of map tiles loaded. Example:
# HELP ruby_dawarich_map_tiles_usage
# TYPE ruby_dawarich_map_tiles_usage counter
ruby_dawarich_map_tiles_usage 99
Fixedβ
- Speed on the Points page is now being displayed in kilometers per hour. #700
- Fog of war displacement #774
Revertedβ
- #748
0.24.0 - 2025-02-10
Points speed unitsβ
Dawarich expects speed to be sent in meters per second. It's already known that OwnTracks and GPSLogger (in some configurations) are sending speed in kilometers per hour.
In GPSLogger it's easily fixable: if you previously had "vel": "%SPD_KMH", change it to "vel": "%SPD", like it's described in the docs.
In OwnTracks it's a bit more complicated. You can't change the speed unit in the settings, so Dawarich will expect speed in kilometers per hour and will convert it to meters per second. Nothing is needed to be done from your side.
Now, we need to fix existing points with speed in kilometers per hour. The following guide assumes that you have been tracking your location exclusively with speed in kilometers per hour. If you have been using both speed units (say, were tracking with OwnTracks in kilometers per hour and with GPSLogger in meters per second), you need to decide what to do with points that have speed in kilometers per hour, as there is no easy way to distinguish them from points with speed in meters per second.
To convert speed in kilometers per hour to meters per second in your points, follow these steps:
- Enter Dawarich console
- Run
points = Point.where(import_id: nil).where.not(velocity: [nil, "0"]).where("velocity NOT LIKE '%.%'"). This will return all tracked (not imported) points. - Run
points.update_all("velocity = CAST(ROUND(CAST((CAST(velocity AS FLOAT) * 1000 / 3600) AS NUMERIC), 1) AS TEXT)")
This will convert speed in kilometers per hour to meters per second and round it to 1 decimal place.
If you have been using both speed units, but you know the dates where you were tracking with speed in kilometers per hour, on the second step of the instruction above, you can add where("timestamp BETWEEN ? AND ?", Date.parse("2025-01-01").beginning_of_day.to_i, Date.parse("2025-01-31").end_of_day.to_i) to the query to convert speed in kilometers per hour to meters per second only for a specific period of time. Resulting query will look like this:
start_at = DateTime.new(2025, 1, 1, 0, 0, 0).in_time_zone(Time.current.time_zone).to_i
end_at = DateTime.new(2025, 1, 31, 23, 59, 59).in_time_zone(Time.current.time_zone).to_i
points = Point.where(import_id: nil).where.not(velocity: [nil, "0"]).where("timestamp BETWEEN ? AND ?", start_at, end_at).where("velocity NOT LIKE '%.%'")
This will select points tracked between January 1st and January 31st 2025. Then just use step 3 to convert speed in kilometers per hour to meters per second.
Changedβ
- Speed for points, that are sent to Dawarich via
POST /api/v1/owntracks/pointsendpoint, will now be converted to meters per second, iftopicparam is sent. The official GPSLogger instructions are assuming user won't be sendingtopicparam, so this shouldn't affect you if you're using GPSLogger.
Fixedβ
- After deleting one point from the map, other points can now be deleted as well. #723 #678
- Fixed a bug where export file was not being deleted from the server after it was deleted. #808
- After an area was drawn on the map, a popup is now being shown to allow user to provide a name and save the area. #740
- Docker entrypoints now use database name to fix problem with custom database names.
- Garmin GPX files with empty tracks are now being imported correctly. #827
Addedβ
X-Dawarich-Versionheader to theGET /api/v1/healthendpoint response.
0.23.6 - 2025-02-06
Addedβ
- Enabled Postgis extension for PostgreSQL.
- Trips are now store their paths in the database independently of the points.
- Trips are now being rendered on the map using their precalculated paths instead of list of coordinates.
Changedβ
- Ruby version was updated to 3.4.1.
- Requesting photos on the Map page now uses the start and end dates from the URL params. #589
0.23.5 - 2025-01-22
Addedβ
- A test for building rc Docker image.
Fixedβ
- Fix authentication to
GET /api/v1/countries/visited_citieswith headerAuthorization: Bearer YOUR_API_KEYinstead ofapi_keyquery param. #679 - Fix a bug where a gpx file with empty tracks was not being imported. #646
- Fix a bug where rc version was being checked as a stable release. #711
0.23.3 - 2025-01-21
Changedβ
- Synology-related files are now up to date. #684
Fixedβ
- Drastically improved performance for Google's Records.json import. It will now take less than 5 minutes to import 500,000 points, which previously took a few hours.
Fixedβ
- Add index only if it doesn't exist.
0.23.1 - 2025-01-21
Fixedβ
- Renamed unique index on points to
unique_points_lat_long_timestamp_user_id_indexto fix naming conflict withunique_points_index.
0.23.0 - 2025-01-20
β οΈ IMPORTANT β οΈβ
This release includes a data migration to remove duplicated points from the database. It will not remove anything except for duplcates from the points table, but please make sure to create a backup before updating to this version.
Addedβ
POST /api/v1/points/createendpoint added.- An index to guarantee uniqueness of points across
latitude,longitude,timestampanduser_idvalues. This is introduced to make sure no duplicates will be created in the database in addition to previously existing validations. GET /api/v1/users/meendpoint added to get current user.
0.22.4 - 2025-01-20
Addedβ
- You can now drag-n-drop a point on the map to update its position. Enable the "Points" layer on the map to see the points.
PATCH /api/v1/points/:idendpoint added to update a point. It only acceptslatitudeandlongitudeparams. #51 #503
Changedβ
- Run seeds even in prod env so Unraid users could have default user.
- Precompile assets in production env using dummy secret key base.
Fixedβ
- Fixed a bug where route wasn't highlighted when it was hovered or clicked.
0.22.3 - 2025-01-14
Changedβ
- The Map now uses a canvas to draw polylines, points and fog of war. This should improve performance in browser with a lot of points and polylines.
0.22.2 - 2025-01-13
β¨ The Fancy Routes release β¨
Addedβ
- In the Map Settings (coggle in the top left corner of the map), you can now enable/disable the Fancy Routes feature. Simply said, it will color your routes based on the speed of each segment.
- Hovering over a polyline now shows the speed of the segment. Move cursor over a polyline to see the speed of different segments.
- Distance and points number in the custom control to the map.
Changedβ
- The name of the "Polylines" feature is now "Routes".
β οΈ Important note on the Prometheus monitoring β οΈ
In the previous release, bin/dev command in the default docker-compose.yml file was replaced with bin/rails server -p 3000 -b ::, but this way Dawarich won't be able to start Prometheus Exporter. If you want to use Prometheus monitoring, you need to use bin/dev command instead.
Example:
dawarich_app:
image: freikin/dawarich:latest
...
- command: ['bin/rails', 'server', '-p', '3000', '-b', '::']
+ command: ['bin/dev']
0.22.1 - 2025-01-09
Removedβ
- Gems caching volume from the
docker-compose.ymlfile.
To update existing docker-compose.yml to new changes, refer to the following:
dawarich_app:
image: freikin/dawarich:latest
...
volumes:
- - dawarich_gem_cache_app:/usr/local/bundle/gems
...
dawarich_sidekiq:
image: freikin/dawarich:latest
...
volumes:
- - dawarich_gem_cache_app:/usr/local/bundle/gems
...
volumes:
dawarich_db_data:
- dawarich_gem_cache_app:
- dawarich_gem_cache_sidekiq:
dawarich_shared:
dawarich_public:
dawarich_watched:
Changedβ
GET /api/v1/healthendpoint now returns aX-Dawarich-Response: Hey, Im alive and authenticated!header if user is authenticated.
0.22.0 - 2025-01-09
β οΈ This release introduces a breaking change. β οΈ
Please read this release notes carefully before upgrading.
Docker-related files were moved to the docker directory and some of them were renamed. Before upgrading, study carefully changes in the docker/docker-compose.yml file and update your docker-compose file accordingly, so it uses the new files and commands. Copying docker/docker-compose.yml blindly may lead to errors.
No volumes were removed or renamed, so with a proper docker-compose file, you should be able to upgrade without any issues.
To update existing docker-compose.yml to new changes, refer to the following:
dawarich_app:
image: freikin/dawarich:latest
...
- entrypoint: dev-entrypoint.sh
- command: ['bin/dev']
+ entrypoint: web-entrypoint.sh
+ command: ['bin/rails', 'server', '-p', '3000', '-b', '::']
...
dawarich_sidekiq:
image: freikin/dawarich:latest
...
- entrypoint: dev-entrypoint.sh
- command: ['bin/dev']
+ entrypoint: sidekiq-entrypoint.sh
+ command: ['bundle', 'exec', 'sidekiq']
Although docker-compose.production.yml was added, it's not being used by default. It's just an example of how to configure Dawarich for production. The default docker-compose.yml file is still recommended for running the app.
Changedβ
- All docker-related files were moved to the
dockerdirectory. - Default memory limit for
dawarich_appanddawarich_sidekiqservices was increased to 4GB. dawarich_appanddawarich_sidekiqservices now use separate entrypoint scripts.- Gems (dependency libraries) are now being shipped as part of the Dawarich Docker image.
Fixedβ
- Visit suggesting job does nothing if user has no tracked points.
BulkStatsCalculationJobnow being called without arguments in the data migration.
Addedβ
- A proper production Dockerfile, docker-compose and env files.
0.21.6 - 2025-01-07
Changedβ
- Disabled visit suggesting job after import.
- Improved performance of the
User#years_trackedmethod.
Fixedβ
- Inconsistent password for the
dawarich_dbservice indocker-compose_mounted_volumes.yml. #605 - Points are now being rendered with higher z-index than polylines. #577
- Run cache cleaning and preheating jobs only on server start. #594
0.21.5 - 2025-01-07
You may now use Geoapify API for reverse geocoding. To obtain an API key, sign up at https://myprojects.geoapify.com/ and create a new project. Make sure you have read and understood the pricing policy and Terms and Conditions.
Addedβ
- Geoapify API support for reverse geocoding. Provide
GEOAPIFY_API_KEYenv var to use it.
Removedβ
- Photon ENV vars from the
.env.developmentand docker-compose.yml files. APPLICATION_HOSTenv var.REVERSE_GEOCODING_ENABLEDenv var.
0.21.4 - 2025-01-05
Fixedβ
- Fixed a bug where Photon API for patreon supporters was not being used for reverse geocoding.
0.21.3 - 2025-01-04
Addedβ
- A notification about Photon API being under heavy load.
Removedβ
- The notification about telemetry being enabled.
Revertedβ
Imported points will now be reverse geocoded only after import is finished.
0.21.2 - 2024-12-25
Addedβ
- Logging for Immich responses.
- Watcher now supports all data formats that can be imported via web interface.
Changedβ
- Imported points will now be reverse geocoded only after import is finished.
Fixedβ
- Markers on the map are now being rendered with higher z-index than polylines. #577
0.21.1 - 2024-12-24
Addedβ
- Cache cleaning and preheating upon application start.
PHOTON_API_KEYenv var to set Photon API key. It's an optional env var, but it's required if you want to use Photon API as a Patreon supporter.- 'X-Dawarich-Response' header to the
GET /api/v1/healthendpoint. It's set to 'Hey, I'm alive!' to make it easier to check if the API is working.
Changedβ
- Custom config for PostgreSQL is now optional in
docker-compose.yml.
0.21.0 - 2024-12-20
β οΈ This release introduces a breaking change. β οΈ
The dawarich_db service now uses a custom postgresql.conf file.
As @tabacha pointed out in #549, the default shm_size for the dawarich_db service is too small and it may lead to database performance issues. This release introduces a shm_size parameter to the dawarich_db service to increase the size of the shared memory for PostgreSQL. This should help database with performing vacuum and other operations. Also, it introduces a custom postgresql.conf file to the dawarich_db service.
To mount a custom postgresql.conf file, you need to create a postgresql.conf file in the dawarich_db service directory and add the following line to it:
dawarich_db:
image: postgis/postgis:14-3.5-alpine
shm_size: 1G
container_name: dawarich_db
volumes:
- dawarich_db_data:/var/lib/postgresql/data
- dawarich_shared:/var/shared
+ - ./postgresql.conf:/etc/postgresql/postgres.conf # Provide path to custom config
...
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres -d dawarich_development" ]
interval: 10s
retries: 5
start_period: 30s
timeout: 10s
+ command: postgres -c config_file=/etc/postgresql/postgres.conf # Use custom config
To ensure your database is using custom config, you can connect to the container (docker exec -it dawarich_db psql -U postgres) and run SHOW config_file; command. It should return the following path: /etc/postgresql/postgresql.conf.
An example of a custom postgresql.conf file is provided in the postgresql.conf.example file.
Addedβ
- A button on a year stats card to update stats for the whole year. #466
- A button on a month stats card to update stats for a specific month. #466
- A confirmation alert on the Notifications page before deleting all notifications.
- A
shm_sizeparameter to thedawarich_dbservice to increase the size of the shared memory for PostgreSQL. This should help database with performing vacuum and other operations.
...
dawarich_db:
image: postgis/postgis:14-3.5-alpine
+ shm_size: 1G
...
- In addition to
api_keyparameter,Authorizationheader is now being used to authenticate API requests. #543
Example:
Authorization: Bearer YOUR_API_KEY
Changedβ
- The map borders were expanded to make it easier to scroll around the map for New Zealanders.
- The
dawarich_dbservice now uses a custompostgresql.conffile. - The popup over polylines now shows dates in the user's format, based on their browser settings.
0.20.2 - 2024-12-17
Addedβ
- A point id is now being shown in the point popup.
Fixedβ
- North Macedonia is now being shown on the scratch map. #537
Changedβ
- The app process is now bound to :: instead of 0.0.0.0 to provide compatibility with IPV6.
- The app was updated to use Rails 8.0.1.
0.20.1 - 2024-12-16
Fixedβ
- Setting
reverse_geocoded_atfor points that don't have geodata is now being performed in background job, in batches of 10,000 points to prevent memory exhaustion and long-running data migration.
0.20.0 - 2024-12-16
Addedβ
GET /api/v1/points/tracked_monthsendpoint added to get list of tracked years and months.GET /api/v1/countries/visited_citiesendpoint added to get list of visited cities.- A link to the docs leading to a help chart for k8s. #550
- A button to delete all notifications. #548
- A support for
RAILS_LOG_LEVELenv var to change log level. More on that here: https://guides.rubyonrails.org/debugging_rails_applications.html#log-levels. The available log levels are::debug,:info,:warn,:error,:fatal, and:unknown, corresponding to the log level numbers from 0 up to 5, respectively. The default log level is:debug. #540 - A devcontainer to improve developers experience. #546
Fixedβ
- A point popup is no longer closes when hovering over a polyline. #536
- When polylines layer is disabled and user deletes a point from its popup, polylines layer is no longer being enabled right away. #552
- Paths to gems within the sidekiq and app containers. #499
Changedβ
- Months and years navigation is moved to a map panel on the right side of the map.
- List of visited cities is now being shown in a map panel on the right side of the map.
0.19.7 - 2024-12-11
Fixedβ
- Fixed a bug where upon deleting a point on the map, the confirmation dialog was shown multiple times and the point was not being deleted from the map until the page was reloaded. #435
Changedβ
- With the "Points" layer enabled on the map, points with negative speed are now being shown in orange color. Since Overland reports negative speed for points that might be faulty, this should help you to identify them.
- On the Points page, speed of the points with negative speed is now being shown in red color.
0.19.6 - 2024-12-11
β οΈ This release introduces a breaking change. β οΈ
The dawarich_shared volume now being mounted to /data instead of /var/shared within the container. It fixes Redis data being lost on container restart.
To change this, you need to update the docker-compose.yml file:
dawarich_redis:
image: redis:7.0-alpine
container_name: dawarich_redis
command: redis-server
volumes:
+ - dawarich_shared:/data
restart: always
healthcheck:
Telemetry is now disabled by default. To enable it, you need to set ENABLE_TELEMETRY env var to true. For those who have telemetry enabled using DISABLE_TELEMETRY env var set to false, telemetry is now disabled by default.
Fixedβ
- Flash messages are now being removed after 5 seconds.
- Fixed broken migration that was preventing the app from starting.
- Visits page is now loading a lot faster than before.
- Redis data should now be preserved on container restart.
- Fixed a bug where export files could have double extension, e.g.
file.gpx.gpx.
Changedβ
- Places page is now accessible from the Visits & Places tab on the navbar.
- Exporting process is now being logged.
ENABLE_TELEMETRYenv var is now used instead ofDISABLE_TELEMETRYto enable/disable telemetry.
0.19.5 - 2024-12-10
Fixedβ
- Fixed a bug where the map and visits pages were throwing an error due to incorrect approach to distance calculation.
0.19.4 - 2024-12-10
β οΈ This release introduces a breaking change. β οΈ
The GET /api/v1/trips/:id/photos endpoint now returns a different structure of the response:
{
id: 1,
latitude: 10,
longitude: 10,
localDateTime: "2024-01-01T00:00:00Z",
originalFileName: "photo.jpg",
city: "Berlin",
state: "Berlin",
country: "Germany",
type: "image",
+ orientation: "portrait",
source: "photoprism"
}
Fixedβ
- Fixed a bug where the Photoprism photos were not being shown on the trip page.
- Fixed a bug where the Immich photos were not being shown on the trip page.
- Fixed a bug where the route popup was showing distance in kilometers instead of miles. #490
Addedβ
- A link to the Photoprism photos on the trip page if there are any.
- A
orientationfield in the Api::PhotoSerializer, hence theGET /api/v1/photosendpoint now includes the orientation of the photo. Valid values areportraitandlandscape. - Examples for the
type,orientationandsourcefields in theGET /api/v1/photosendpoint in the Swagger UI. DISABLE_TELEMETRYenv var to disable telemetry. More on telemetry: https://dawarich.app/docs/self-hosting/configuration/telemetryreverse_geocoded_atcolumn added to thepointstable.
Changedβ
- On the Stats page, the "Reverse geocoding" section is now showing the number of points that were reverse geocoded based on
reverse_geocoded_atcolumn, value of which is based on the time when the point was reverse geocoded. If no geodata for the point is available,reverse_geocoded_atwill be set anyway. Number of points that were reverse geocoded but no geodata is available for them is shown below the "Reverse geocoded" number.
0.19.3 - 2024-12-06
Changedβ
- Refactored stats calculation to calculate only necessary stats, instead of calculating all stats
- Stats are now being calculated every 1 hour instead of 6 hours
- List of years on the Map page is now being calculated based on user's points instead of stats. It's also being cached for 1 day due to the fact that it's usually a heavy operation based on the number of points.
- Reverse-geocoding points is now being performed in batches of 1,000 points to prevent memory exhaustion.
Addedβ
- In-app notification about telemetry being enabled.
0.19.2 - 2024-12-04
The Telemetry releaseβ
Dawarich now can collect usage metrics and send them to InfluxDB. Before this release, the only metrics that could be somehow tracked by developers (only @Freika, as of now) were the number of stars on GitHub and the overall number of docker images being pulled, across all versions of Dawarich, non-splittable by version. New in-app telemetry will allow us to track more granular metrics, allowing me to make decisions based on facts, not just guesses.
I'm aware about the privacy concerns, so I want to be very transparent about what data is being sent and how it's used.
Data being sent:
- Number of DAU (Daily Active Users)
- App version
- Instance ID (unique identifier of the Dawarich instance built by hashing the api key of the first user in the database)
The data is being sent to a InfluxDB instance hosted by me and won't be shared with anyone.
Basically this set of metrics allows me to see how many people are using Dawarich and what versions they are using. No other data is being sent, nor it gives me any knowledge about individual users or their data or activity.
The telemetry is enabled by default, but it can be disabled by setting DISABLE_TELEMETRY env var to true. The dataset might change in the future, but any changes will be documented here in the changelog and in every release as well as on the telemetry page of the website docs.
Addedβ
- Telemetry feature. It's now collecting usage metrics and sending them to InfluxDB.
0.19.1 - 2024-12-04
Fixedβ
- Sidekiq is now being correctly exported to Prometheus with
PROMETHEUS_EXPORTER_ENABLED=trueenv var indawarich_sidekiqservice.
0.19.0 - 2024-12-04
The Photoprism integration releaseβ
β οΈ This release introduces a breaking change. β οΈ
The GET /api/v1/photos endpoint now returns following structure of the response:
[
{
"id": "1",
"latitude": 11.22,
"longitude": 12.33,
"localDateTime": "2024-01-01T00:00:00Z",
"originalFileName": "photo.jpg",
"city": "Berlin",
"state": "Berlin",
"country": "Germany",
"type": "image", // "image" or "video"
"source": "photoprism" // "photoprism" or "immich"
}
]
Addedβ
- Photos from Photoprism are now can be shown on the map. To enable this feature, you need to provide your Photoprism instance URL and API key in the Settings page. Then you need to enable "Photos" layer on the map (top right corner).
- Geodata is now can be imported from Photoprism to Dawarich. The "Import Photoprism data" button on the Imports page will start the import process.
Fixedβ
- z-index on maps so they won't overlay notifications dropdown
- Redis connectivity where it's not required
0.18.2 - 2024-11-29
Addedβ
- Demo account. You can now login with
demo@dawarich.app/passwordto see how Dawarich works. This replaces previous default credentials.
Changedβ
- The login page now shows demo account credentials if
DEMO_ENVenv var is set totrue.
0.18.1 - 2024-11-29
Fixedβ
- Fixed a bug where the trips interface was breaking when Immich integration is not configured.
Addedβ
- Flash messages are now being shown on the map when Immich integration is not configured.
0.18.0 - 2024-11-28
The Trips releaseβ
You can now create, edit and delete trips. To create a trip, click on the "New Trip" button on the Trips page. Provide a name, date and time for start and end of the trip. You can add your own notes to the trip as well.
If you have points tracked during provided timeframe, they will be automatically added to the trip and will be shown on the trip map.
Also, if you have Immich integrated, you will see photos from the trip on the trip page, along with a link to look at them on Immich.
Addedβ
- The Trips feature. Read above for more details.
Changedβ
- Maps are now not so rough on the edges.
0.17.2 - 2024-11-27
Fixedβ
- Retrieving photos from Immich now using
takenAfterandtakenBeforeinstead ofcreatedAfterandcreatedBefore. WithcreatedAfterandcreatedBeforeImmich was returning no items some years.
0.17.1 - 2024-11-27
Fixedβ
- Retrieving photos from Immich now correctly handles cases when Immich returns no items. It also logs the response from Immich for debugging purposes.
0.17.0 - 2024-11-26
The Immich Photos releaseβ
With this release, Dawarich can now show photos from your Immich instance on the map.
To enable this feature, you need to provide your Immich instance URL and API key in the Settings page. Then you need to enable "Photos" layer on the map (top right corner).
An important note to add here is that photos are heavy and hence generate a lot of traffic. The response from Immich for specific dates is being cached in Redis for 1 day, and that may lead to Redis taking a lot more space than previously. But since the cache is being expired after 24 hours, you'll get your space back pretty soon.
The other thing worth mentioning is how Dawarich gets data from Immich. It goes like this:
- When you click on the "Photos" layer, Dawarich will make a request to
GET /api/v1/photosendpoint to get photos for the selected timeframe. - This endpoint will make a request to
POST /search/metadataendpoint of your Immich instance to get photos for the selected timeframe. - The response from Immich is being cached in Redis for 1 day.
- Dawarich's frontend will make a request to
GET /api/v1/photos/:id/thumbnail.jpgendpoint to get photo thumbnail from Immich. The number of requests to this endpoint will depend on how many photos you have in the selected timeframe. - For each photo, Dawarich's frontend will make a request to
GET /api/v1/photos/:id/thumbnail.jpgendpoint to get photo thumbnail from Immich. This thumbnail request is also cached in Redis for 1 day.
Addedβ
- If you have provided your Immich instance URL and API key, the map will now show photos from your Immich instance when Photos layer is enabled.
GET /api/v1/photosendpoint added to get photos from Immich.GET /api/v1/photos/:id/thumbnail.jpgendpoint added to get photo thumbnail from Immich.
0.16.9 - 2024-11-24
Changedβ
- Rate limit for the Photon API is now 1 request per second. If you host your own Photon API instance, reverse geocoding requests will not be limited.
- Requests to the Photon API are now have User-Agent header set to "
Dawarich APP_VERSION (https://dawarich.app)"
0.16.8 - 2024-11-20
Changedβ
- Default number of Puma workers is now 2 instead of 1. This should improve the performance of the application. If you have a lot of users, you might want to increase the number of workers. You can do this by setting the
WEB_CONCURRENCYenv var in yourdocker-compose.ymlfile. Example:
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
environment:
...
WEB_CONCURRENCY: "2"
0.16.7 - 2024-11-20
Changedβ
- Prometheus exporter is now bound to 0.0.0.0 instead of localhost
PROMETHEUS_EXPORTER_HOSTandPROMETHEUS_EXPORTER_PORTenv vars were added to thedocker-compose.ymlfile to allow you to set the host and port for the Prometheus exporter. They should be added to bothdawarich_appanddawarich_sidekiqservices Example:
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
environment:
...
PROMETHEUS_EXPORTER_ENABLED: "true"
+ PROMETHEUS_EXPORTER_HOST: 0.0.0.0
+ PROMETHEUS_EXPORTER_PORT: "9394"
dawarich_sidekiq:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
environment:
...
PROMETHEUS_EXPORTER_ENABLED: "true"
+ PROMETHEUS_EXPORTER_HOST: dawarich_app
+ PROMETHEUS_EXPORTER_PORT: "9394"
0.16.6 - 2024-11-20
Addedβ
- Dawarich now can export metrics to Prometheus. You can find the metrics at
your.host:9394/metricsendpoint. The metrics are being exported in the Prometheus format and can be scraped by Prometheus server. To enable exporting, set thePROMETHEUS_EXPORTER_ENABLEDenv var in your docker-compose.yml totrue. Example:
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
environment:
...
PROMETHEUS_EXPORTER_ENABLED: "true"
0.16.5 - 2024-11-18
Changedβ
- Dawarich now uses
POST /api/search/metadataendpoint to get geodata from Immich.
0.16.4 - 2024-11-12
Addedβ
- Admins can now see all users in the system on the Users page. The path is
/settings/users.
Changedβ
- Admins can now provide custom password for new users and update passwords for existing users on the Users page.
- The
bin/devfile will no longer runbin/rails tailwindcss:watchcommand. It's useful only for development and doesn't really make sense to run it in production.
Fixedβ
- Exported files will now always have an extension when downloaded. Previously, the extension was missing in case of GPX export.
- Deleting and sorting points on the Points page will now preserve filtering and sorting params when points are deleted or sorted. Previously, the page was being reloaded and filtering and sorting params were lost.
0.16.3 - 2024-11-10
Fixedβ
- Make ActionCable respect REDIS_URL env var. Previously, ActionCable was trying to connect to Redis on localhost.
0.16.2 - 2024-11-08
Fixedβ
- Exported GPX file now being correctly recognized as valid by Garmin Connect, Adobe Lightroom and (probably) other services. Previously, the exported GPX file was not being recognized as valid by these services.
0.16.1 - 2024-11-08
Fixedβ
- Speed is now being recorded into points when a GPX file is being imported. Previously, the speed was not being recorded.
- GeoJSON file from GPSLogger now can be imported to Dawarich. Previously, the import was failing due to incorrect parsing of the file.
Changedβ
- The Vists suggestion job is disabled. It will be re-enabled in the future with a new approach to the visit suggestion process.
0.16.0 - 2024-11-07
The Websockets releaseβ
Addedβ
- New notifications are now being indicated with a blue-ish dot in the top right corner of the screen. Hovering over the bell icon will show you last 10 notifications.
- New points on the map will now be shown in real-time. No need to reload the map to see new points.
- User can now enable or disable Live Mode in the map controls. When Live Mode is enabled, the map will automatically scroll to the new points as they are being added to the map.
Changedβ
- Scale on the map now shows the distance both in kilometers and miles.
0.15.13 - 2024-11-01
Addedβ
GET /api/v1/countries/bordersendpoint to get countries for scratch map feature
0.15.12 - 2024-11-01
Addedβ
- Scratch map. You can enable it in the map controls. The scratch map highlight countries you've visited. The scratch map is working properly only if you have your points reverse geocoded.
0.15.11 - 2024-10-29
Addedβ
- Importing Immich data on the Imports page now will trigger an attempt to write raw json file with the data from Immich to
tmp/imports/immich_raw_data_CURRENT_TIME_USER_EMAIL.jsonfile. This is useful to debug the problem with the import if it fails. #270
Fixedβ
- New app version is now being checked every 6 hours instead of 1 day and the check is being performed in the background. #238
Changedβ
- β οΈ The instruction to import
Records.jsonfrom Google Takeout now mentionstmp/importsdirectory instead ofpublic/imports. β οΈ #326 - Hostname definition for Sidekiq healtcheck to solve #344. See the diff:
dawarich_sidekiq:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
healthcheck:
- test: [ "CMD-SHELL", "bundle exec sidekiqmon processes | grep $(hostname)" ]
+ test: [ "CMD-SHELL", "bundle exec sidekiqmon processes | grep ${HOSTNAME}" ]
- Renamed directories used by app and sidekiq containers for gems cache to fix #339:
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
volumes:
- - gem_cache:/usr/local/bundle/gems
+ - gem_cache:/usr/local/bundle/gems_app
...
dawarich_sidekiq:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
volumes:
- - gem_cache:/usr/local/bundle/gems
+ - gem_cache:/usr/local/bundle/gems_sidekiq
0.15.10 - 2024-10-25
Fixedβ
- Data migration that prevented the application from starting.
0.15.9 - 2024-10-24
Fixedβ
- Stats distance calculation now correctly calculates the daily distances.
Changedβ
- Refactored the stats calculation process to make it more efficient.
0.15.8 - 2024-10-22
Addedβ
- User can now select between "Raw" and "Simplified" mode in the map controls. "Simplified" mode will show less points, improving the map performance. "Raw" mode will show all points.
0.15.7 - 2024-10-19
Fixedβ
- A bug where "RuntimeError: failed to get urandom" was being raised upon importing attempt on Synology.
0.15.6 - 2024-10-19
Fixedβ
- Import of Owntracks' .rec files now correctly imports points. Previously, the import was failing due to incorrect parsing of the file.
0.15.5 - 2024-10-16
Fixedβ
- Fixed a bug where Google Takeout import was failing due to unsupported date format with milliseconds in the file.
- Fixed a bug that prevented using the Photon API host with http protocol. Now you can use both http and https protocols for the Photon API host. You now need to explicitly provide
PHOTON_API_USE_HTTPSto betrueorfalsedepending on what protocol you want to use. Example is in thedocker-compose.ymlfile.
Changedβ
- The Map page now by default uses timeframe based on last point tracked instead of the today's points. If there are no points, the map will use the today's timeframe.
- The map on the Map page can no longer be infinitely scrolled horizontally. #299
0.15.4 - 2024-10-15
Changedβ
- Use static version of
geocoderlibrary that supports http and https for Photon API host. This is a temporary solution until the change is available in a stable release.
Addedβ
- Owntracks' .rec files now can be imported to Dawarich. The import process is the same as for other kinds of files, just select the .rec file and choose "owntracks" as a source.
Removedβ
- Owntracks' .json files are no longer supported for import as Owntracks itself does not export to this format anymore.
0.15.3 - 2024-10-05
To expose the watcher functionality to the user, a new directory /tmp/imports/watched/ was created. Add new volume to the docker-compose.yml file to expose this directory to the host machine.
...
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
volumes:
- gem_cache:/usr/local/bundle/gems
- public:/var/app/public
+ - watched:/var/app/tmp/watched
...
dawarich_sidekiq:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
volumes:
- gem_cache:/usr/local/bundle/gems
- public:/var/app/public
+ - watched:/var/app/tmp/watched
...
volumes:
db_data:
gem_cache:
shared_data:
public:
+ watched:
Changedβ
- Watcher now looks into
/tmp/imports/watched/USER@EMAIL.TLDdirectory instead of/tmp/imports/watched/to allow using arbitrary file names for imports
0.15.1 - 2024-10-04
Addedβ
linux/arm/v7is added to the list of supported architectures to support Raspberry Pi 4 and other ARMv7 devices
0.15.0 - 2024-10-03
The Watcher releaseβ
The /public/imports/watched/ directory is watched by Dawarich. Any files you put in this directory will be imported into the database. The name of the file must start with an email of the user you want to import the file for. The email must be followed by an underscore symbol (_) and the name of the file.
For example, if you want to import a file for the user with the email address "email@dawarich.app", you would name the file "email@dawarich.app_2024-05-01_2024-05-31.gpx". The file will be imported into the database and the user will receive a notification in the app.
Both GeoJSON and GPX files are supported.
Addedβ
- You can now put your GPX and GeoJSON files to
tmp/imports/watcheddirectory and Dawarich will automatically import them. This is useful if you have a service that can put files to the directory automatically. The directory is being watched every 60 minutes for new files.
Changedβ
- Monkey patch for Geocoder to support http along with https for Photon API host was removed becausee it was breaking the reverse geocoding process. Now you can use only https for the Photon API host. This might be changed in the future
- Disable retries for some background jobs
Fixedβ
- Stats update is now being correctly triggered every 6 hours
[0.14.7] - 2024-10-01
Fixedβ
- Now you can use http protocol for the Photon API host if you don't have SSL certificate for it
- For stats, total distance per month might have been not equal to the sum of distances per day. Now it's fixed and values are equal
- Mobile view of the map looks better now
Changedβ
GET /api/v1/pointscan now accept optional?order=ascquery parameter to return points in ascending order by timestamp.?order=descis still available to return points in descending order by timestampGET /api/v1/pointsnow returnsidattribute for each point
[0.14.6] - 2024-29-30
Fixedβ
- Points imported from Google Location History (mobile devise) now have correct timestamps
Changedβ
GET /api/v1/points?slim=truenow returnsidattribute for each point
[0.14.5] - 2024-09-28
Fixedβ
- GPX export now finishes correctly and does not throw an error in the end
- Deleting points from the Points page now preserves
start_atandend_atvalues for the routes. #261 - Visits map now being rendered correctly in the Visits page. #262
- Fixed issue with timezones for negative UTC offsets. #194, #122
- Point page is no longer reloads losing provided timestamps when searching for points on Points page. #283
Changedβ
- Map layers from Stadia were disabled for now due to necessary API key
[0.14.4] - 2024-09-24
Fixedβ
- GPX export now has time and elevation elements for each point
Changedβ
GET /api/v1/pointswill no longer returnraw_dataattribute for each point as it's a bit too much
Addedβ
- "Slim" version of
GET /api/v1/points: pass optional param?slim=trueto it and it will return only latitude, longitude and timestamp
[0.14.3] β 2024-09-21
Fixedβ
- Optimize order of the dockerfiles to leverage layer caching by @JoeyEamigh
- Add support for alternate postgres ports and db names in docker by @JoeyEamigh
- Creating exports directory if it doesn't exist by @tetebueno
[0.14.1] β 2024-09-16β
Fixedβ
- Fixed a bug where the map was not loading due to invalid tile layer name
[0.14.0] β 2024-09-15β
Addedβ
- 17 new tile layers to choose from. Now you can select the tile layer that suits you the best. You can find the list of available tile layers in the map controls in the top right corner of the map under the layers icon.
[0.13.7] β 2024-09-15β
Addedβ
GET /api/v1/pointsresponse now will includeX-Total-PagesandX-Current-Pageheaders to make it easier to work with the endpoint- The Pages point now shows total number of points found for provided date range
Fixedβ
- Link to Visits page in notification informing about new visit suggestion
[0.13.6] β 2024-09-13β
Fixedβ
- Flatten geodata retrieved from Immich before processing it to prevent errors
[0.13.5] β 2024-09-08β
Addedβ
- Links to view import points on the map and on the Points page on the Imports page.
Fixedβ
- The Imports page now loading faster.
Changedβ
- Default value for
RAILS_MAX_THREADSwas changed to 10. - Visit suggestions background job was moved to its own low priority queue to prevent it from blocking other jobs.
[0.13.4] β 2024-09-06β
Fixedβ
- Fixed a bug preventing the application from starting, when there is no users in the database but a data migration tries to update one.
[0.13.3] β 2024-09-06β
Addedβ
- Support for miles. To switch to miles, provide
DISTANCE_UNITenvironment variable with valuemiin thedocker-compose.ymlfile. Default value iskm.
It's recommended to update your stats manually after changing the DISTANCE_UNIT environment variable. You can do this by clicking the "Update stats" button on the Stats page.
β οΈIMPORTANTβ οΈ: All settings are still should be provided in meters. All calculations though will be converted to feets and miles if DISTANCE_UNIT is set to mi.
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
environment:
APPLICATION_HOST: "localhost"
APPLICATION_PROTOCOL: "http"
APPLICATION_PORT: "3000"
TIME_ZONE: "UTC"
+ DISTANCE_UNIT: "mi"
dawarich_sidekiq:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
environment:
APPLICATION_HOST: "localhost"
APPLICATION_PROTOCOL: "http"
APPLICATION_PORT: "3000"
TIME_ZONE: "UTC"
+ DISTANCE_UNIT: "mi"
Changedβ
- Default time range on the map is now 1 day instead of 1 month. It will help you with performance issues if you have a lot of points in the database.
[0.13.2] β 2024-09-06β
Fixedβ
- GeoJSON import now correctly imports files with FeatureCollection as a root object
Changedβ
- The Points page now have number of points found for provided date range