Compare commits

...

802 commits

Author SHA1 Message Date
Evgenii Burmakin
f00460c786
0.37.3 (#2146)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

* Bump sentry-rails from 6.0.0 to 6.1.0 (#1945)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.1.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump turbo-rails from 2.0.17 to 2.0.20 (#1944)

Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.17 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.17...v2.0.20)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump webmock from 3.25.1 to 3.26.1 (#1943)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump brakeman from 7.1.0 to 7.1.1 (#1942)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump redis from 5.4.0 to 5.4.1 (#1941)

Bumps [redis](https://github.com/redis/redis-rb) from 5.4.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 5.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Put import deletion into background job (#2045)

* Put import deletion into background job

* Update changelog

* fix null type error and update heatmap styling (#2037)

* fix: use constant weight for maplibre heatmap layer

* fix null type, update heatmap styling

* improve heatmap styling

* fix typo

* Fix stats calculation to recursively reduce H3 resolution when too ma… (#2065)

* Fix stats calculation to recursively reduce H3 resolution when too many hexagons are generated

* Update CHANGELOG.md

* Validate trip start and end dates (#2066)

* Validate trip start and end dates

* Update changelog

* Update migration to clean up duplicate stats before adding unique index

* Fix fog of war radius setting being ignored and applying settings causing errors (#2068)

* Update changelog

* Add Rack::Deflater middleware to config/application.rb to enable gzip compression for responses.

* Add composite index to points on user_id and timestamp

* Deduplicte points based on timestamp brought to unix time

* Fix/stats cache invalidation (#2072)

* Fix family layer toggle in Map v2 settings for non-selfhosted env

* Invalidate cache

* Remove comments

* Remove comment

* Add new indicies to improve performance and remove unused ones to opt… (#2078)

* Add new indicies to improve performance and remove unused ones to optimize database.

* Remove comments

* Update map search suggestions panel styling

* Add yearly digest (#2073)

* Add yearly digest

* Rename YearlyDigests to Users::Digests

* Minor changes

* Update yearly digest layout and styles

* Add flags and chart to email

* Update colors

* Fix layout of stats in yearly digest view

* Remove cron job for yearly digest scheduling

* Update CHANGELOG.md

* Update digest email setting handling

* Allow sharing digest for 1 week or 1 month

* Change Digests Distance to Bigint

* Fix settings page

* Update changelog

* Add RailsPulse (#2079)

* Add RailsPulse

* Add RailsPulse monitoring tool with basic HTTP authentication

* Bring points_count to integer

* Update migration and version

* Update rubocop issues

* Fix migrations and data verification to remove safety_assured blocks and handle missing points gracefully.

* Update version

* Update calculation of time spent in a country for year-end digest email (#2110)

* Update calculation of time spent in a country for year-end digest email

* Add a filter to exclude raw data points when calculating yearly digests.

* Bump trix from 2.1.15 to 2.1.16 in the npm_and_yarn group across 1 directory (#2098)

* 0.37.1 (#2092)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

* Bump sentry-rails from 6.0.0 to 6.1.0 (#1945)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.1.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump turbo-rails from 2.0.17 to 2.0.20 (#1944)

Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.17 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.17...v2.0.20)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump webmock from 3.25.1 to 3.26.1 (#1943)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump brakeman from 7.1.0 to 7.1.1 (#1942)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump redis from 5.4.0 to 5.4.1 (#1941)

Bumps [redis](https://github.com/redis/redis-rb) from 5.4.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 5.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Put import deletion into background job (#2045)

* Put import deletion into background job

* Update changelog

* fix null type error and update heatmap styling (#2037)

* fix: use constant weight for maplibre heatmap layer

* fix null type, update heatmap styling

* improve heatmap styling

* fix typo

* Fix stats calculation to recursively reduce H3 resolution when too ma… (#2065)

* Fix stats calculation to recursively reduce H3 resolution when too many hexagons are generated

* Update CHANGELOG.md

* Validate trip start and end dates (#2066)

* Validate trip start and end dates

* Update changelog

* Update migration to clean up duplicate stats before adding unique index

* Fix fog of war radius setting being ignored and applying settings causing errors (#2068)

* Update changelog

* Add Rack::Deflater middleware to config/application.rb to enable gzip compression for responses.

* Add composite index to points on user_id and timestamp

* Deduplicte points based on timestamp brought to unix time

* Fix/stats cache invalidation (#2072)

* Fix family layer toggle in Map v2 settings for non-selfhosted env

* Invalidate cache

* Remove comments

* Remove comment

* Add new indicies to improve performance and remove unused ones to opt… (#2078)

* Add new indicies to improve performance and remove unused ones to optimize database.

* Remove comments

* Update map search suggestions panel styling

* Add yearly digest (#2073)

* Add yearly digest

* Rename YearlyDigests to Users::Digests

* Minor changes

* Update yearly digest layout and styles

* Add flags and chart to email

* Update colors

* Fix layout of stats in yearly digest view

* Remove cron job for yearly digest scheduling

* Update CHANGELOG.md

* Update digest email setting handling

* Allow sharing digest for 1 week or 1 month

* Change Digests Distance to Bigint

* Fix settings page

* Update changelog

* Add RailsPulse (#2079)

* Add RailsPulse

* Add RailsPulse monitoring tool with basic HTTP authentication

* Bring points_count to integer

* Update migration and version

* Update rubocop issues

* Fix migrations and data verification to remove safety_assured blocks and handle missing points gracefully.

* Update version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump trix in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [trix](https://github.com/basecamp/trix).


Updates `trix` from 2.1.15 to 2.1.16
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.15...v2.1.16)

---
updated-dependencies:
- dependency-name: trix
  dependency-version: 2.1.16
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Map v2 will no longer block the UI when Immich/Photoprism integration has a bad URL or is unreachable (#2113)

* Bump rubocop-rails from 2.33.4 to 2.34.2 (#2080)

Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.4 to 2.34.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.4...v2.34.2)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump chartkick from 5.2.0 to 5.2.1 (#2081)

Bumps [chartkick](https://github.com/ankane/chartkick) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: chartkick
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump rubyzip from 3.2.0 to 3.2.2 (#2082)

Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 3.2.0 to 3.2.2.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v3.2.0...v3.2.2)

---
updated-dependencies:
- dependency-name: rubyzip
  dependency-version: 3.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump sentry-ruby from 6.0.0 to 6.2.0 (#2083)

Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.2.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.2.0)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump sidekiq from 8.0.8 to 8.1.0 (#2084)

Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 8.0.8 to 8.1.0.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v8.0.8...v8.1.0)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-version: 8.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Update digest calculation to use actual time spent in countries based… (#2115)

* Update digest calculation to use actual time spent in countries based on consecutive points, avoiding double-counting days when crossing borders.

* Move methods to private

* Update Gemfile and Gemfile.lock to pin connection_pool and sidekiq versions

* Rework country tracked days calculation

* Adjust calculate_duration_in_minutes to only count continuous presence within cities, excluding long gaps.

* Move helpers for digest city progress to a helper method

* Implement globe projection option for Map v2 using MapLibre GL JS.

* Update time spent calculation for country minutes in user digests

* Stats are now calculated with more accuracy by storing total minutes spent per country.

* Add globe_projection setting to safe settings

* Remove console.logs from most of map v2

* Implement some performance improvements and caching for various featu… (#2133)

* Implement some performance improvements and caching for various features.

* Fix failing tests

* Implement routes behaviour in map v2 to match map v1

* Fix route highlighting

* Add fallbacks when retrieving full route features to handle cases where source data access methods vary.

* Fix some e2e tests

* Add immediate verification and count validation to raw data archiving (#2138)

* Add immediate verification and count validation to raw data archiving

* Remove verifying job

* Add archive metrics reporting

* Disable RailsPulse in Self-hosted Environments

* Remove user_id and points_count parameters from Metrics::Archives::Operation and related calls.

* Move points creation logic from background jobs to service objects (#2145)

* Move points creation logic from background jobs to service objects

* Remove unused point creation jobs

* Update changelog

* Add tracks to map v2 (#2142)

* Add tracks to map v2

* Remove console log

* Update tracks generation behavior to ignore distance threshold for frontend parity

* Extract logic to services from TracksController#index and add tests

* Move query logic for track listing into a service object.

* Minor changes

* Fix minor issues

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-11 19:51:03 +01:00
Evgenii Burmakin
29f81738df
0.37.2 (#2114)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

* Bump sentry-rails from 6.0.0 to 6.1.0 (#1945)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.1.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump turbo-rails from 2.0.17 to 2.0.20 (#1944)

Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.17 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.17...v2.0.20)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump webmock from 3.25.1 to 3.26.1 (#1943)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump brakeman from 7.1.0 to 7.1.1 (#1942)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump redis from 5.4.0 to 5.4.1 (#1941)

Bumps [redis](https://github.com/redis/redis-rb) from 5.4.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 5.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Put import deletion into background job (#2045)

* Put import deletion into background job

* Update changelog

* fix null type error and update heatmap styling (#2037)

* fix: use constant weight for maplibre heatmap layer

* fix null type, update heatmap styling

* improve heatmap styling

* fix typo

* Fix stats calculation to recursively reduce H3 resolution when too ma… (#2065)

* Fix stats calculation to recursively reduce H3 resolution when too many hexagons are generated

* Update CHANGELOG.md

* Validate trip start and end dates (#2066)

* Validate trip start and end dates

* Update changelog

* Update migration to clean up duplicate stats before adding unique index

* Fix fog of war radius setting being ignored and applying settings causing errors (#2068)

* Update changelog

* Add Rack::Deflater middleware to config/application.rb to enable gzip compression for responses.

* Add composite index to points on user_id and timestamp

* Deduplicte points based on timestamp brought to unix time

* Fix/stats cache invalidation (#2072)

* Fix family layer toggle in Map v2 settings for non-selfhosted env

* Invalidate cache

* Remove comments

* Remove comment

* Add new indicies to improve performance and remove unused ones to opt… (#2078)

* Add new indicies to improve performance and remove unused ones to optimize database.

* Remove comments

* Update map search suggestions panel styling

* Add yearly digest (#2073)

* Add yearly digest

* Rename YearlyDigests to Users::Digests

* Minor changes

* Update yearly digest layout and styles

* Add flags and chart to email

* Update colors

* Fix layout of stats in yearly digest view

* Remove cron job for yearly digest scheduling

* Update CHANGELOG.md

* Update digest email setting handling

* Allow sharing digest for 1 week or 1 month

* Change Digests Distance to Bigint

* Fix settings page

* Update changelog

* Add RailsPulse (#2079)

* Add RailsPulse

* Add RailsPulse monitoring tool with basic HTTP authentication

* Bring points_count to integer

* Update migration and version

* Update rubocop issues

* Fix migrations and data verification to remove safety_assured blocks and handle missing points gracefully.

* Update version

* Update calculation of time spent in a country for year-end digest email (#2110)

* Update calculation of time spent in a country for year-end digest email

* Add a filter to exclude raw data points when calculating yearly digests.

* Bump trix from 2.1.15 to 2.1.16 in the npm_and_yarn group across 1 directory (#2098)

* 0.37.1 (#2092)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

* Bump sentry-rails from 6.0.0 to 6.1.0 (#1945)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.1.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump turbo-rails from 2.0.17 to 2.0.20 (#1944)

Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.17 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.17...v2.0.20)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump webmock from 3.25.1 to 3.26.1 (#1943)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump brakeman from 7.1.0 to 7.1.1 (#1942)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump redis from 5.4.0 to 5.4.1 (#1941)

Bumps [redis](https://github.com/redis/redis-rb) from 5.4.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 5.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Put import deletion into background job (#2045)

* Put import deletion into background job

* Update changelog

* fix null type error and update heatmap styling (#2037)

* fix: use constant weight for maplibre heatmap layer

* fix null type, update heatmap styling

* improve heatmap styling

* fix typo

* Fix stats calculation to recursively reduce H3 resolution when too ma… (#2065)

* Fix stats calculation to recursively reduce H3 resolution when too many hexagons are generated

* Update CHANGELOG.md

* Validate trip start and end dates (#2066)

* Validate trip start and end dates

* Update changelog

* Update migration to clean up duplicate stats before adding unique index

* Fix fog of war radius setting being ignored and applying settings causing errors (#2068)

* Update changelog

* Add Rack::Deflater middleware to config/application.rb to enable gzip compression for responses.

* Add composite index to points on user_id and timestamp

* Deduplicte points based on timestamp brought to unix time

* Fix/stats cache invalidation (#2072)

* Fix family layer toggle in Map v2 settings for non-selfhosted env

* Invalidate cache

* Remove comments

* Remove comment

* Add new indicies to improve performance and remove unused ones to opt… (#2078)

* Add new indicies to improve performance and remove unused ones to optimize database.

* Remove comments

* Update map search suggestions panel styling

* Add yearly digest (#2073)

* Add yearly digest

* Rename YearlyDigests to Users::Digests

* Minor changes

* Update yearly digest layout and styles

* Add flags and chart to email

* Update colors

* Fix layout of stats in yearly digest view

* Remove cron job for yearly digest scheduling

* Update CHANGELOG.md

* Update digest email setting handling

* Allow sharing digest for 1 week or 1 month

* Change Digests Distance to Bigint

* Fix settings page

* Update changelog

* Add RailsPulse (#2079)

* Add RailsPulse

* Add RailsPulse monitoring tool with basic HTTP authentication

* Bring points_count to integer

* Update migration and version

* Update rubocop issues

* Fix migrations and data verification to remove safety_assured blocks and handle missing points gracefully.

* Update version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump trix in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [trix](https://github.com/basecamp/trix).


Updates `trix` from 2.1.15 to 2.1.16
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.15...v2.1.16)

---
updated-dependencies:
- dependency-name: trix
  dependency-version: 2.1.16
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Map v2 will no longer block the UI when Immich/Photoprism integration has a bad URL or is unreachable (#2113)

* Bump rubocop-rails from 2.33.4 to 2.34.2 (#2080)

Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.4 to 2.34.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.4...v2.34.2)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump chartkick from 5.2.0 to 5.2.1 (#2081)

Bumps [chartkick](https://github.com/ankane/chartkick) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: chartkick
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump rubyzip from 3.2.0 to 3.2.2 (#2082)

Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 3.2.0 to 3.2.2.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v3.2.0...v3.2.2)

---
updated-dependencies:
- dependency-name: rubyzip
  dependency-version: 3.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump sentry-ruby from 6.0.0 to 6.2.0 (#2083)

Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.2.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.2.0)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump sidekiq from 8.0.8 to 8.1.0 (#2084)

Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 8.0.8 to 8.1.0.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v8.0.8...v8.1.0)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-version: 8.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Update digest calculation to use actual time spent in countries based… (#2115)

* Update digest calculation to use actual time spent in countries based on consecutive points, avoiding double-counting days when crossing borders.

* Move methods to private

* Update Gemfile and Gemfile.lock to pin connection_pool and sidekiq versions

* Rework country tracked days calculation

* Adjust calculate_duration_in_minutes to only count continuous presence within cities, excluding long gaps.

* Move helpers for digest city progress to a helper method

* Implement globe projection option for Map v2 using MapLibre GL JS.

* Update time spent calculation for country minutes in user digests

* Stats are now calculated with more accuracy by storing total minutes spent per country.

* Add globe_projection setting to safe settings

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-04 20:05:04 +01:00
Evgenii Burmakin
6ed6a4fd89
0.37.1 (#2092)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

* Bump sentry-rails from 6.0.0 to 6.1.0 (#1945)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.1.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump turbo-rails from 2.0.17 to 2.0.20 (#1944)

Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.17 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.17...v2.0.20)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump webmock from 3.25.1 to 3.26.1 (#1943)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump brakeman from 7.1.0 to 7.1.1 (#1942)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump redis from 5.4.0 to 5.4.1 (#1941)

Bumps [redis](https://github.com/redis/redis-rb) from 5.4.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 5.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Put import deletion into background job (#2045)

* Put import deletion into background job

* Update changelog

* fix null type error and update heatmap styling (#2037)

* fix: use constant weight for maplibre heatmap layer

* fix null type, update heatmap styling

* improve heatmap styling

* fix typo

* Fix stats calculation to recursively reduce H3 resolution when too ma… (#2065)

* Fix stats calculation to recursively reduce H3 resolution when too many hexagons are generated

* Update CHANGELOG.md

* Validate trip start and end dates (#2066)

* Validate trip start and end dates

* Update changelog

* Update migration to clean up duplicate stats before adding unique index

* Fix fog of war radius setting being ignored and applying settings causing errors (#2068)

* Update changelog

* Add Rack::Deflater middleware to config/application.rb to enable gzip compression for responses.

* Add composite index to points on user_id and timestamp

* Deduplicte points based on timestamp brought to unix time

* Fix/stats cache invalidation (#2072)

* Fix family layer toggle in Map v2 settings for non-selfhosted env

* Invalidate cache

* Remove comments

* Remove comment

* Add new indicies to improve performance and remove unused ones to opt… (#2078)

* Add new indicies to improve performance and remove unused ones to optimize database.

* Remove comments

* Update map search suggestions panel styling

* Add yearly digest (#2073)

* Add yearly digest

* Rename YearlyDigests to Users::Digests

* Minor changes

* Update yearly digest layout and styles

* Add flags and chart to email

* Update colors

* Fix layout of stats in yearly digest view

* Remove cron job for yearly digest scheduling

* Update CHANGELOG.md

* Update digest email setting handling

* Allow sharing digest for 1 week or 1 month

* Change Digests Distance to Bigint

* Fix settings page

* Update changelog

* Add RailsPulse (#2079)

* Add RailsPulse

* Add RailsPulse monitoring tool with basic HTTP authentication

* Bring points_count to integer

* Update migration and version

* Update rubocop issues

* Fix migrations and data verification to remove safety_assured blocks and handle missing points gracefully.

* Update version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 19:06:10 +01:00
Evgenii Burmakin
8d2ade1bdc
0.37.0 (#2067)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

* Bump sentry-rails from 6.0.0 to 6.1.0 (#1945)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/6.0.0...6.1.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump turbo-rails from 2.0.17 to 2.0.20 (#1944)

Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.17 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.17...v2.0.20)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump webmock from 3.25.1 to 3.26.1 (#1943)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evgenii Burmakin <Freika@users.noreply.github.com>

* Bump brakeman from 7.1.0 to 7.1.1 (#1942)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump redis from 5.4.0 to 5.4.1 (#1941)

Bumps [redis](https://github.com/redis/redis-rb) from 5.4.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 5.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Put import deletion into background job (#2045)

* Put import deletion into background job

* Update changelog

* fix null type error and update heatmap styling (#2037)

* fix: use constant weight for maplibre heatmap layer

* fix null type, update heatmap styling

* improve heatmap styling

* fix typo

* Fix stats calculation to recursively reduce H3 resolution when too ma… (#2065)

* Fix stats calculation to recursively reduce H3 resolution when too many hexagons are generated

* Update CHANGELOG.md

* Validate trip start and end dates (#2066)

* Validate trip start and end dates

* Update changelog

* Update migration to clean up duplicate stats before adding unique index

* Fix fog of war radius setting being ignored and applying settings causing errors (#2068)

* Update changelog

* Add Rack::Deflater middleware to config/application.rb to enable gzip compression for responses.

* Add composite index to points on user_id and timestamp

* Deduplicte points based on timestamp brought to unix time

* Fix/stats cache invalidation (#2072)

* Fix family layer toggle in Map v2 settings for non-selfhosted env

* Invalidate cache

* Remove comments

* Remove comment

* Add new indicies to improve performance and remove unused ones to opt… (#2078)

* Add new indicies to improve performance and remove unused ones to optimize database.

* Remove comments

* Update map search suggestions panel styling

* Add yearly digest (#2073)

* Add yearly digest

* Rename YearlyDigests to Users::Digests

* Minor changes

* Update yearly digest layout and styles

* Add flags and chart to email

* Update colors

* Fix layout of stats in yearly digest view

* Remove cron job for yearly digest scheduling

* Update CHANGELOG.md

* Update digest email setting handling

* Allow sharing digest for 1 week or 1 month

* Change Digests Distance to Bigint

* Fix settings page

* Update changelog

* Add RailsPulse (#2079)

* Add RailsPulse

* Add RailsPulse monitoring tool with basic HTTP authentication

* Bring points_count to integer

* Update migration and version

* Update rubocop issues

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Robin Tuszik <mail@robin.gg>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 17:33:56 +01:00
Evgenii Burmakin
3f0aaa09f5
0.36.4 (#2062)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

* Add composite index to stats table if not exists

* Update changelog

* Update entrypoint to always sync static assets (not only new ones)

* Add family layer to MapLibre maps (#2055)

* Add family layer to MapLibre maps

* Update migration

* Don't show family toggle if feature is disabled

* Update changelog

* Return changelog

* Update changelog

* Update tailwind file

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>
2025-12-26 14:57:55 +01:00
Eugene Burmakin
2a1584e0b8 Fix storage configuration and file extraction 2025-12-26 14:35:04 +01:00
Evgenii Burmakin
c8242ce902
0.36.3 (#2013)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>
2025-12-14 12:05:59 +01:00
Eugene Burmakin
0ed20df08b Remove sideEffects field from package.json 2025-12-06 21:49:30 +01:00
Eugene Burmakin
d50f2cc416 Remove esbuild scripts from package.json 2025-12-06 21:41:59 +01:00
Evgenii Burmakin
8934c29fce
0.36.2 (#2007)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>
2025-12-06 20:54:49 +01:00
Evgenii Burmakin
d5dbf002e0
0.36.1 (#1986)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>
2025-11-29 19:59:26 +01:00
Eugene Burmakin
52eb80503d Rework usage of OIDC auto-registration and email/password registration settings to use constants instead of direct ENV access. 2025-11-24 20:04:31 +01:00
Eugene Burmakin
f8be3ecdca Merge branch 'dev' 2025-11-24 19:47:00 +01:00
Eugene Burmakin
573ed510a5 Update changelog 2025-11-24 19:46:27 +01:00
Evgenii Burmakin
b1393ee674
0.36.0 (#1952)
* Implement OmniAuth GitHub authentication

* Fix omniauth GitHub scope to include user email access

* Remove margin-bottom

* Implement Google OAuth2 authentication

* Implement OIDC authentication for Dawarich using omniauth_openid_connect gem.

* Add patreon account linking and patron checking service

* Update docker-compose.yml to use boolean values instead of strings

* Add support for KML files

* Add tests

* Update changelog

* Remove patreon OAuth integration

* Move omniauthable to a concern

* Update an icon in integrations

* Update changelog

* Update app version

* Fix family location sharing toggle

* Move family location sharing to its own controller

* Update changelog

* Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags.

* Add places management API and tags feature

* Add some changes related to places management feature

* Fix some tests

* Fix sometests

* Add places layer

* Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control

* Rework tag form

* Add hashtag

* Add privacy zones to tags

* Add notes to places and manage place tags

* Update changelog

* Update e2e tests

* Extract tag serializer to its own file

* Fix some tests

* Fix tags request specs

* Fix some tests

* Fix rest of the tests

* Revert some changes

* Add missing specs

* Revert changes in place export/import code

* Fix some specs

* Fix PlaceFinder to only consider global places when finding existing places

* Fix few more specs

* Fix visits creator spec

* Fix last tests

* Update place creating modal

* Add home location based on "Home" tagged place

* Save enabled tag layers

* Some fixes

* Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data

* Update migration to use disable_ddl_transaction! and add up/down methods

* Fix tag layers restoration and filtering logic

* Update OIDC auto-registration and email/password registration settings

* Fix potential xss
2025-11-24 19:45:09 +01:00
Eugene Burmakin
fa4e368003 Fix potential xss 2025-11-24 19:44:21 +01:00
Eugene Burmakin
4aa6edc3cc Update OIDC auto-registration and email/password registration settings 2025-11-24 19:33:51 +01:00
Eugene Burmakin
f447039bbe Fix tag layers restoration and filtering logic 2025-11-23 23:16:37 +01:00
Eugene Burmakin
289a2a5373 Update migration to use disable_ddl_transaction! and add up/down methods 2025-11-23 01:21:37 +01:00
Eugene Burmakin
6dfc0099e1 Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data 2025-11-23 01:12:38 +01:00
Eugene Burmakin
78ac365c00 Some fixes 2025-11-23 00:43:31 +01:00
Evgenii Burmakin
5266436396
Merge pull request #1955 from Freika/feature/places-management
Feature/places management
2025-11-23 00:13:24 +01:00
Eugene Burmakin
e965838f14 Save enabled tag layers 2025-11-22 23:22:37 +01:00
Eugene Burmakin
a33373ae7c Add home location based on "Home" tagged place 2025-11-22 20:46:35 +01:00
Eugene Burmakin
e1013b1ae1 Update place creating modal 2025-11-22 20:35:51 +01:00
Eugene Burmakin
64d299b363 Fix last tests 2025-11-22 19:45:53 +01:00
Eugene Burmakin
e4fa282eb8 Fix visits creator spec 2025-11-22 18:51:11 +01:00
Eugene Burmakin
ba6314231a Fix few more specs 2025-11-22 18:38:20 +01:00
Eugene Burmakin
b18fc392cc Fix PlaceFinder to only consider global places when finding existing places 2025-11-22 18:32:26 +01:00
Eugene Burmakin
02cbf65781 Fix some specs 2025-11-22 18:27:54 +01:00
Eugene Burmakin
1e2c709047 Revert changes in place export/import code 2025-11-22 13:28:38 +01:00
Eugene Burmakin
50bfece971 Add missing specs 2025-11-20 00:04:37 +01:00
Eugene Burmakin
c99f6597f0 Revert some changes 2025-11-19 21:40:43 +01:00
Eugene Burmakin
491767b114 Fix rest of the tests 2025-11-19 21:19:59 +01:00
Eugene Burmakin
ebd0f8d6bc Fix some tests 2025-11-19 20:56:46 +01:00
Eugene Burmakin
01df22d080 Fix tags request specs 2025-11-19 20:35:43 +01:00
Eugene Burmakin
e02b397b87 Fix some tests 2025-11-19 20:08:49 +01:00
Eugene Burmakin
1d07eb652d Extract tag serializer to its own file 2025-11-19 19:33:28 +01:00
Eugene Burmakin
449884796f Update e2e tests 2025-11-19 19:17:30 +01:00
Eugene Burmakin
4f5903e220 Update changelog 2025-11-18 22:16:43 +01:00
Eugene Burmakin
2ab24201c1 Add notes to places and manage place tags 2025-11-18 22:16:34 +01:00
Eugene Burmakin
c711bed383 Add privacy zones to tags 2025-11-18 21:57:06 +01:00
Eugene Burmakin
bce1052608 Add hashtag 2025-11-18 21:24:14 +01:00
Eugene Burmakin
807672170f Rework tag form 2025-11-18 21:14:12 +01:00
Eugene Burmakin
e8e7bcc91b Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control 2025-11-18 21:03:53 +01:00
Eugene Burmakin
602975eeaa Add places layer 2025-11-17 22:34:38 +01:00
Eugene Burmakin
8a36a69987 Fix sometests 2025-11-17 19:05:58 +01:00
Eugene Burmakin
c462d34efa Fix some tests 2025-11-17 00:23:48 +01:00
Eugene Burmakin
e1f16c98a2 Add some changes related to places management feature 2025-11-16 17:50:24 +01:00
Eugene Burmakin
78851c5f98 Add places management API and tags feature 2025-11-16 17:28:40 +01:00
Eugene Burmakin
69c8779164 Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. 2025-11-16 15:01:54 +01:00
Evgenii Burmakin
284f763be4
Merge pull request #1954 from Freika/fix/family-location-toggle
Fix family location sharing toggle
2025-11-16 13:18:26 +01:00
Eugene Burmakin
541dba1bc6 Update changelog 2025-11-16 13:15:37 +01:00
Eugene Burmakin
3b5f775a4e Move family location sharing to its own controller 2025-11-16 13:12:46 +01:00
Eugene Burmakin
3a2dc1da5a Fix family location sharing toggle 2025-11-16 13:06:31 +01:00
Eugene Burmakin
d1ffc15fea Update app version 2025-11-14 19:11:23 +01:00
Evgenii Burmakin
88134a0a2b
Merge pull request #1880 from Freika/feature/omniauth
Feature/omniauth
2025-11-14 19:10:57 +01:00
Eugene Burmakin
bb574f5aa3 Update changelog 2025-11-14 19:09:57 +01:00
Eugene Burmakin
8ecd75429b Update an icon in integrations 2025-11-14 19:06:16 +01:00
Eugene Burmakin
bedac89821 Move omniauthable to a concern 2025-11-14 18:54:35 +01:00
Eugene Burmakin
a4dcd0387f Remove patreon OAuth integration 2025-11-14 18:39:15 +01:00
Eugene Burmakin
fde478e2a4 Merge branch 'dev' into feature/omniauth 2025-11-14 18:22:36 +01:00
Evgenii Burmakin
cfe5a77a47
Merge pull request #1951 from Freika/feature/kml
Feature/kml
2025-11-14 18:21:01 +01:00
Eugene Burmakin
943b551f4c Update changelog 2025-11-14 18:19:50 +01:00
Eugene Burmakin
3bd59c20c1 Add tests 2025-11-14 18:16:51 +01:00
Eugene Burmakin
8c4d4d5cbe Add support for KML files 2025-11-14 18:04:46 +01:00
Eugene Burmakin
59508ceeff Update docker-compose.yml to use boolean values instead of strings 2025-11-12 22:49:38 +01:00
Eugene Burmakin
8c48c173fb Update docker-compose.yml to use boolean values instead of strings 2025-11-12 22:49:18 +01:00
Evgenii Burmakin
c64dc8b789
Merge pull request #1933 from Freika/dev
0.35.1
2025-11-09 23:09:42 +01:00
Eugene Burmakin
32667590fd Update changelog 2025-11-09 23:09:15 +01:00
Eugene Burmakin
b6d1f1d46d Disable StrongMigrations 2025-11-09 23:08:10 +01:00
Eugene Burmakin
eaf66c8bbd Merge branch 'dev' 2025-11-09 19:42:58 +01:00
Eugene Burmakin
d707bace78 Change node version 2025-11-09 19:42:46 +01:00
Eugene Burmakin
6d905a4466 Merge branch 'dev' 2025-11-09 19:32:27 +01:00
Eugene Burmakin
749d1d0031 Add authorization for updating location sharing in FamiliesController 2025-11-09 19:32:24 +01:00
Eugene Burmakin
dbe5997495 Update compose file 2025-11-09 19:32:07 +01:00
Evgenii Burmakin
58ae4cf2ae
Merge pull request #1922 from Freika/dev
0.35.0
2025-11-09 16:27:29 +01:00
Eugene Burmakin
b0585b2a97 Update changelog 2025-11-09 16:27:00 +01:00
Evgenii Burmakin
6e1c9d7600
Merge branch 'master' into dev 2025-11-09 16:20:06 +01:00
Eugene Burmakin
b0bd2bf93c Update tests 2025-11-09 16:03:05 +01:00
Eugene Burmakin
3061f3e86f Update changelog 2025-11-08 20:21:23 +01:00
Evgenii Burmakin
28bc68ffe2
Merge pull request #1928 from Freika/fix/map-side-panel
Fix/map side panel
2025-11-08 20:00:45 +01:00
Eugene Burmakin
23aa533279 Add a button to close the visits side panel 2025-11-08 19:57:15 +01:00
Eugene Burmakin
18de91e562 Make sure visits keep their collapsible sections open/closed state when the side panel is refreshed. 2025-11-08 19:35:44 +01:00
Eugene Burmakin
486974b993 Make visits look nicer 2025-11-08 17:04:38 +01:00
Eugene Burmakin
73f93b6a57 Side panel content centered 2025-11-08 16:41:42 +01:00
Eugene Burmakin
4a022d9695 Open side panel on the left of controls 2025-11-08 16:05:46 +01:00
Evgenii Burmakin
2a8522272d
Merge pull request #1925 from Freika/chore/single-dockerfile
Unify Dockerfile
2025-11-07 23:53:23 +01:00
Eugene Burmakin
a6687eca18 Update changelog 2025-11-07 23:52:58 +01:00
Eugene Burmakin
c05402b6f3 Allow S3 storage backend to be used in self-hosted instances 2025-11-07 23:50:18 +01:00
Eugene Burmakin
98a157bd0b Update changelog 2025-11-07 23:42:21 +01:00
Eugene Burmakin
e4f80dbf2b Remove safety_assured 2025-11-07 20:23:53 +01:00
Eugene Burmakin
f48a512b10 Remove strong_migrations gem for now 2025-11-07 20:18:56 +01:00
Eugene Burmakin
b272c7407f Update strong_migrations config 2025-11-07 20:09:29 +01:00
Eugene Burmakin
691ff63b87 Update strong_migrations config 2025-11-07 20:02:51 +01:00
Eugene Burmakin
f9d5762533 Update migrations to validate foreign keys immediately upon creation. 2025-11-07 19:19:29 +01:00
Eugene Burmakin
cb9fb9911c Add default REDIS_URL value to cable.yml 2025-11-07 14:15:16 +01:00
Eugene Burmakin
b469836d19 Remove dockerfiles that are no longer needed after consolidating into a single Dockerfile. 2025-11-07 14:08:49 +01:00
Eugene Burmakin
fa8cbed15b Use strings for booleans 2025-11-07 14:08:01 +01:00
Eugene Burmakin
8444ee461d Update Dockerfile 2025-11-07 14:05:46 +01:00
Eugene Burmakin
f9f013c628 Remove development-specific logic from Dockerfile 2025-11-07 12:45:28 +01:00
Eugene Burmakin
6a42a170e7 Unify Dockerfile 2025-11-07 12:38:44 +01:00
Eugene Burmakin
d40514c5f8 Remove email from navbar user menu 2025-11-07 12:26:08 +01:00
Evgenii Burmakin
100e645c52
Merge pull request #1677 from Freika/fix/gpx-export-attrs
Update gpx serializer
2025-11-07 12:24:18 +01:00
Evgenii Burmakin
a8e9df6f1a
Merge pull request #1924 from Freika/fix/family-invitation-email
Move sending family invitation email to a background job
2025-11-07 12:20:34 +01:00
Eugene Burmakin
7b9008445a Fix missing confirmation dialogs and methods on family invitation actions 2025-11-07 12:19:05 +01:00
Eugene Burmakin
313354bf7c Add invitation link to pending family invitations email 2025-11-07 12:07:58 +01:00
Eugene Burmakin
eed9480a9e Move sending family invitation email to a background job 2025-11-07 11:49:21 +01:00
Evgenii Burmakin
a6f2bd3662
Merge pull request #1923 from Freika/feature/unlimited-family
Remove limit on number of family members for self-hosted instances.
2025-11-07 11:35:35 +01:00
Eugene Burmakin
adcf6aceca Fix tests and remove unused policy files 2025-11-07 11:34:34 +01:00
Eugene Burmakin
19f6715218 Remove limit on number of family members for self-hosted instances. 2025-11-07 11:20:36 +01:00
Evgenii Burmakin
9378e330e4
Merge pull request #1901 from Freika/snyk-fix-aea4b5cbee2b3982ae9efca09e791ad1
[Snyk] Fix for 6 vulnerabilities
2025-11-07 11:17:09 +01:00
Evgenii Burmakin
d2ee93f51a
Merge pull request #1885 from Freika/dependabot/bundler/sentry-rails-6.0.0
Bump sentry-rails from 5.26.0 to 6.0.0
2025-11-07 11:16:25 +01:00
Evgenii Burmakin
3626ccd830
Merge pull request #1883 from Freika/dependabot/bundler/rails-8.0.3
Bump rails from 8.0.2.1 to 8.0.3
2025-11-07 11:15:51 +01:00
Evgenii Burmakin
71943a46e1
Merge pull request #1882 from Freika/dependabot/bundler/brakeman-7.1.0
Bump brakeman from 7.0.2 to 7.1.0
2025-11-07 11:15:19 +01:00
Evgenii Burmakin
1043c105ed
Merge pull request #1886 from Freika/dependabot/bundler/super_diff-0.17.0
Bump super_diff from 0.16.0 to 0.17.0
2025-11-07 11:14:48 +01:00
Evgenii Burmakin
bbd0fe1e4d
Merge pull request #1907 from Freika/dependabot/bundler/bundler-3ddb009f6e
Bump rack from 3.2.2 to 3.2.3 in the bundler group across 1 directory
2025-11-07 11:14:08 +01:00
Eugene Burmakin
2f160b8d97 Fix missing error messages on user registration and other forms 2025-11-07 11:08:57 +01:00
Evgenii Burmakin
888e48ccf2
Merge pull request #1916 from Freika/tests/map
Tests/map
2025-11-07 10:35:28 +01:00
Eugene Burmakin
ef46c84ce1 Remove some debug logging statements. 2025-11-07 10:32:49 +01:00
Eugene Burmakin
57149cfc17 Fix visits not being shown in the side panel 2025-11-07 10:29:32 +01:00
Eugene Burmakin
accf8ffbc9 Add tests for bulk_destroy action in PointsController 2025-11-07 10:03:15 +01:00
Eugene Burmakin
07224723ed Add more tests 2025-11-05 21:09:37 +01:00
Eugene Burmakin
bf96acf92e Fix some of the issues with the bulk delete points feature 2025-11-05 00:03:16 +01:00
Eugene Burmakin
282441db0b Add e2e map tests and implement points bulk delete feature 2025-11-04 21:21:20 +01:00
Eugene Burmakin
18836975ca Update migration 2025-11-03 20:06:04 +01:00
Evgenii Burmakin
5a9bdfea5f
Merge pull request #1912 from Freika/dev
0.34.2
2025-10-31 19:30:31 +01:00
Eugene Burmakin
6c62edb593 Fix UTM parameter assignment and update version to 0.34.2 2025-10-31 19:29:20 +01:00
dependabot[bot]
6a3f7aebac
Bump rails from 8.0.2.1 to 8.0.3
Bumps [rails](https://github.com/rails/rails) from 8.0.2.1 to 8.0.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v8.0.2.1...v8.0.3)

---
updated-dependencies:
- dependency-name: rails
  dependency-version: 8.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 19:02:17 +00:00
dependabot[bot]
3d6f953063
Bump sentry-rails from 5.26.0 to 6.0.0
Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 5.26.0 to 6.0.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/5.26.0...6.0.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 19:02:15 +00:00
dependabot[bot]
9b50bc0a48
Bump super_diff from 0.16.0 to 0.17.0
Bumps [super_diff](https://github.com/splitwise/super_diff) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/splitwise/super_diff/releases)
- [Changelog](https://github.com/splitwise/super_diff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/splitwise/super_diff/compare/v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: super_diff
  dependency-version: 0.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 19:02:14 +00:00
dependabot[bot]
60f80ec2da
Bump rack from 3.2.2 to 3.2.3 in the bundler group across 1 directory
Bumps the bundler group with 1 update in the / directory: [rack](https://github.com/rack/rack).


Updates `rack` from 3.2.2 to 3.2.3
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.2.2...v3.2.3)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 3.2.3
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 19:02:02 +00:00
Evgenii Burmakin
55e1f4a161
Merge pull request #1905 from Freika/dev
0.34.1
2025-10-30 20:01:09 +01:00
Eugene Burmakin
2ffac60dbb Update changelog 2025-10-30 20:00:45 +01:00
Eugene Burmakin
8e35b8e09f Move UTM parameter tracking logic into a concern 2025-10-30 19:59:31 +01:00
Eugene Burmakin
5a40f9fe90 Add patreon account linking and patron checking service 2025-10-30 19:18:08 +01:00
Eugene Burmakin
6787273713 Updte map view 2025-10-30 19:16:38 +01:00
snyk-bot
67d3c9c9f5
fix: Gemfile to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-RUBY-RACK-13535097
- https://snyk.io/vuln/SNYK-RUBY-RACK-13378928
- https://snyk.io/vuln/SNYK-RUBY-RACK-13378930
- https://snyk.io/vuln/SNYK-RUBY-RACK-13378932
- https://snyk.io/vuln/SNYK-RUBY-RACK-13524628
- https://snyk.io/vuln/SNYK-RUBY-URI-13506785
2025-10-30 10:26:19 +00:00
Eugene Burmakin
7bc579e563 REVERT: Patreon account connection 2025-10-29 13:27:43 +01:00
dependabot[bot]
e70d7781e4
Bump brakeman from 7.0.2 to 7.1.0
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.0.2 to 7.1.0.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.0.2...v7.1.0)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 7.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 14:34:01 +00:00
Eugene Burmakin
e6c8bd30df Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. 2025-10-26 18:10:48 +01:00
Eugene Burmakin
48e50c2ee8 Implement Google OAuth2 authentication 2025-10-26 15:50:47 +01:00
Eugene Burmakin
af71661e2b Remove margin-bottom 2025-10-26 15:34:12 +01:00
Eugene Burmakin
44bbbd09b7 Fix omniauth GitHub scope to include user email access 2025-10-26 15:32:26 +01:00
Eugene Burmakin
f5dc7a10a3 Implement OmniAuth GitHub authentication 2025-10-26 15:27:43 +01:00
Eugene Burmakin
8c9fc5a5e0 Add titles to family views for better SEO and UX and update map tile URLs to use the planet dataset. 2025-10-26 11:59:06 +01:00
Eugene Burmakin
cd9c02324b Update readme 2025-10-26 10:54:18 +01:00
Eugene Burmakin
4a226638c3 Update gems 2025-10-26 10:40:47 +01:00
Evgenii Burmakin
0f14e32fb9
Merge pull request #1854 from Freika/snyk-fix-21fbcb4a3ab995dda78811462b6f003a
[Snyk] Fix for 3 vulnerabilities
2025-10-26 10:27:17 +01:00
Evgenii Burmakin
8ba5fae588
Merge branch 'dev' into snyk-fix-21fbcb4a3ab995dda78811462b6f003a 2025-10-26 10:27:08 +01:00
Evgenii Burmakin
e4bc701581
Merge pull request #1859 from Freika/dependabot/bundler/puma-7.1.0
Bump puma from 6.6.1 to 7.1.0
2025-10-26 10:25:51 +01:00
Evgenii Burmakin
64bf9f7cb3
Merge pull request #1860 from Freika/dependabot/bundler/rubyzip-3.2.0
Bump rubyzip from 3.1.0 to 3.2.0
2025-10-26 10:25:13 +01:00
Evgenii Burmakin
39dd1b41e0
Merge pull request #1862 from Freika/dependabot/npm_and_yarn/npm_and_yarn-0c3072c8cf
Bump playwright from 1.54.1 to 1.56.1 in the npm_and_yarn group across 1 directory
2025-10-26 10:24:42 +01:00
Evgenii Burmakin
17c88ede25
Merge pull request #1836 from Freika/dependabot/bundler/bundler-b7dfa6c3a6
Bump rack from 3.2.1 to 3.2.2 in the bundler group across 1 directory
2025-10-26 10:24:06 +01:00
Evgenii Burmakin
a7ba4187f6
Merge pull request #1813 from Freika/dependabot/bundler/turbo-rails-2.0.17
Bump turbo-rails from 2.0.16 to 2.0.17
2025-10-26 10:23:41 +01:00
Evgenii Burmakin
37cf712111
Merge pull request #1810 from Freika/dependabot/bundler/rubocop-rails-2.33.4
Bump rubocop-rails from 2.32.0 to 2.33.4
2025-10-26 10:23:14 +01:00
Evgenii Burmakin
832325896c
Merge pull request #1808 from Freika/dependabot/bundler/sentry-ruby-5.28.0
Bump sentry-ruby from 5.26.0 to 5.28.0
2025-10-26 10:22:40 +01:00
Evgenii Burmakin
8c24764aa5
Merge pull request #1868 from Freika/dev
0.34.0
2025-10-25 19:36:53 +02:00
Eugene Burmakin
e1ee39ec52 Fix failing spec 2025-10-25 16:32:39 +02:00
Eugene Burmakin
d23e118645 Make sure family invitations are handled after sign-in 2025-10-22 21:36:51 +02:00
Eugene Burmakin
4f4ac08caf Remove unnecessary migration 2025-10-22 21:06:14 +02:00
Eugene Burmakin
7ee2cb22ba Small fixes 2025-10-22 20:39:02 +02:00
Eugene Burmakin
4677bcc698 Fix confirmation dialogs to show only once. 2025-10-21 20:01:13 +02:00
Eugene Burmakin
05237995cf Fix remembering family members layer state and refreshing locations 2025-10-21 19:54:25 +02:00
dependabot[bot]
2a1792c2d3
Bump playwright in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [playwright](https://github.com/microsoft/playwright).


Updates `playwright` from 1.54.1 to 1.56.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.54.1...v1.56.1)

---
updated-dependencies:
- dependency-name: playwright
  dependency-version: 1.56.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 19:04:27 +00:00
Evgenii Burmakin
07216e00dd
Merge pull request #1848 from Freika/fix/family-stuff
Fix/family stuff
2025-10-20 20:41:27 +02:00
Eugene Burmakin
18551fb940 Update map settings button size and styling 2025-10-20 20:41:01 +02:00
Eugene Burmakin
1e63b03b49 Show battery status on family member popup 2025-10-20 20:34:05 +02:00
Eugene Burmakin
1bf02bc063 Merge branch 'dev' into fix/family-stuff 2025-10-20 20:21:20 +02:00
Evgenii Burmakin
b2f831c9fa
Merge pull request #1861 from Freika/feature/remember-enabled-map-layers
Remember enabled map layers for users
2025-10-20 20:20:02 +02:00
Eugene Burmakin
801e0c9bfa Don't c hange map.html.erb 2025-10-20 20:19:21 +02:00
Eugene Burmakin
04a9d4b418 Show flash message 2025-10-20 20:18:35 +02:00
Eugene Burmakin
632f389ace Remember enabled map layers for users 2025-10-20 20:11:28 +02:00
Eugene Burmakin
e7884b1f4f Properly provide default distance unit in user settings 2025-10-20 19:42:24 +02:00
dependabot[bot]
2accbeef3d
Bump rubyzip from 3.1.0 to 3.2.0
Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: rubyzip
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 14:49:44 +00:00
dependabot[bot]
b413c51c4f
Bump puma from 6.6.1 to 7.1.0
Bumps [puma](https://github.com/puma/puma) from 6.6.1 to 7.1.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/main/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.6.1...v7.1.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 14:44:36 +00:00
Evgenii Burmakin
84f8ec0d04
Merge pull request #1856 from Freika/fix/google-imports-speedup
Improve performance of Google Maps imports by batching database inserts.
2025-10-16 19:01:59 +02:00
Eugene Burmakin
cdd5525ff4 Update changelog 2025-10-16 19:01:39 +02:00
Eugene Burmakin
1671a781b0 Improve performance of Google Maps imports by batching database inserts. 2025-10-16 18:59:21 +02:00
snyk-bot
d46cd2dc74
fix: Gemfile to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-RUBY-RACK-13535097
- https://snyk.io/vuln/SNYK-RUBY-RACK-13524628
- https://snyk.io/vuln/SNYK-RUBY-URI-13506785
2025-10-16 11:00:00 +00:00
Eugene Burmakin
e3c6da1332 Add tooltips to map controls 2025-10-15 12:01:51 +02:00
Eugene Burmakin
44cbfff8ff Extract map controls to a separate file 2025-10-15 11:43:49 +02:00
Eugene Burmakin
36289d2469 Use margins for left and right spacing instead of padding to prevent horizontal overflow on small screens. 2025-10-14 18:29:31 +02:00
Eugene Burmakin
79a2140e6f Make sure date nav not being hidden when clicking next/prev day button 2025-10-14 17:39:17 +02:00
Eugene Burmakin
6da1019bf3 Add collapsible footer to map controls and update location search icon 2025-10-14 17:30:53 +02:00
Eugene Burmakin
e72b2d9182 Update map navigation control for better responsiveness 2025-10-14 14:58:21 +02:00
Eugene Burmakin
4d5088a014 Add collapsible map controls panel for mobile view 2025-10-14 14:21:48 +02:00
Eugene Burmakin
9953c2fb88 Merge branch 'dev' into fix/family-stuff 2025-10-14 13:49:46 +02:00
Evgenii Burmakin
b8ad1a8a5c
Merge pull request #1661 from Freika/feature/full-screen-map
Feature/full screen map
2025-10-14 13:49:34 +02:00
Eugene Burmakin
b1dd654463 Merge branch 'dev', remote-tracking branch 'origin' into feature/full-screen-map 2025-10-14 13:47:58 +02:00
Eugene Burmakin
732839d586 Update icons on the map 2025-10-14 13:47:41 +02:00
Eugene Burmakin
b4fbe6dbda Add a button to copy invitation link for pending invitations 2025-10-14 13:28:56 +02:00
Eugene Burmakin
ce33cf3fb6 Update app version 2025-10-13 15:08:32 +02:00
Evgenii Burmakin
ea340df343
Merge pull request #1803 from Freika/feature/family
Family
2025-10-13 15:08:06 +02:00
Eugene Burmakin
ff70773ea8 Update changelog 2025-10-13 15:07:49 +02:00
Eugene Burmakin
39c3c157c8 Implement real-time family member location updates via ActionCable 2025-10-13 14:10:36 +02:00
Eugene Burmakin
0ee3deedd8 Fix family members tooltip and popup styles 2025-10-13 13:15:54 +02:00
Eugene Burmakin
aff44d6669 Fix stats layout 2025-10-13 12:45:42 +02:00
Evgenii Burmakin
99281317d7
Merge branch 'dev' into feature/family 2025-10-13 12:30:27 +02:00
Eugene Burmakin
a93cb8ff41 Remove comments 2025-10-13 12:25:30 +02:00
Eugene Burmakin
29ae5c04f1 Refactor family membership and invitation policies for clarity and security 2025-10-13 12:23:01 +02:00
Eugene Burmakin
923ea113c8 Fix some minor stuff 2025-10-11 14:17:48 +02:00
Evgenii Burmakin
493db274f5
Merge pull request #1830 from Freika/dev
0.33.1
2025-10-07 22:26:01 +02:00
Eugene Burmakin
d3aa3bd067 Fix missing default map layer when user settings are not set 2025-10-07 22:25:41 +02:00
Eugene Burmakin
cde5af7c24 Rename method call to not shadow variable name 2025-10-07 22:10:48 +02:00
Eugene Burmakin
20d0ed8ec6 Fix dockerfiles 2025-10-07 22:06:42 +02:00
Eugene Burmakin
c2e2a01d2a Update version to 0.33.1 2025-10-07 22:03:46 +02:00
Evgenii Burmakin
e14abb715d
Merge pull request #1837 from Freika/fix/minor-bugs-2025-10
Small fixes
2025-10-07 22:03:26 +02:00
Eugene Burmakin
a7b92c10f5 Fix time shift when creating visits manually 2025-10-07 22:00:11 +02:00
Eugene Burmakin
194f8c3c45 Show visited countries in a modal window on the Trip page 2025-10-07 21:49:58 +02:00
Evgenii Burmakin
8ad5afe216
Merge pull request #1794 from shaman007/issue-1793
Add apt-get upgrade to Dockerfiles
2025-10-07 21:30:50 +02:00
Eugene Burmakin
ab4786d7b9 Fix minor bugs in Stat model related to sharing settings 2025-10-07 21:24:38 +02:00
Eugene Burmakin
87d7b8be7c Fix minor bugs in map visit interactivity and popup styling 2025-10-07 21:16:42 +02:00
Eugene Burmakin
56a20d4db6 Fix popup styling for manual visit creation 2025-10-07 21:02:20 +02:00
dependabot[bot]
62725a55e7
Bump rack from 3.2.1 to 3.2.2 in the bundler group across 1 directory
Bumps the bundler group with 1 update in the / directory: [rack](https://github.com/rack/rack).


Updates `rack` from 3.2.1 to 3.2.2
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.2.1...v3.2.2)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 3.2.2
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 17:44:05 +00:00
Eugene Burmakin
e711ff25fe Refactor family invitations and memberships into separate models and controllers 2025-10-07 18:38:06 +02:00
Eugene Burmakin
c9861663c9 Remove a file related to import optimization plan. 2025-10-05 22:19:48 +02:00
Evgenii Burmakin
8f128bafff
Merge pull request #1829 from Freika/fix/user-data-import
Stream points during user data import
2025-10-05 22:18:41 +02:00
Eugene Burmakin
99110f023b Update changelog 2025-10-05 22:18:25 +02:00
Eugene Burmakin
e31265fdad Compile assets in staging environment 2025-10-05 21:24:47 +02:00
Eugene Burmakin
87c5c34fb4 Update batch size for streaming imports to 5000 2025-10-05 21:18:16 +02:00
Eugene Burmakin
fa995a7f84 Update json_stream_handler_spec.rb path and remove tmp.json 2025-10-05 21:01:34 +02:00
Eugene Burmakin
6591a629ad Stream points during user data import 2025-10-05 20:59:03 +02:00
Eugene Burmakin
6fb5d98b19 Extract update location sharing logic to a service object 2025-10-05 19:40:42 +02:00
Eugene Burmakin
018760812a Extract family functionality to a concern 2025-10-05 14:24:45 +02:00
Eugene Burmakin
c1cff10de3 Update migrations 2025-10-05 14:02:18 +02:00
Eugene Burmakin
0b9a1005e5 Fix tests 2025-10-05 01:09:46 +02:00
Eugene Burmakin
6057240888 Fix some tests 2025-10-05 00:42:21 +02:00
Eugene Burmakin
cd303bce01 Clean up some code 2025-10-04 23:19:00 +02:00
Eugene Burmakin
e7df54d738 Fix routes to use singular resource for family 2025-10-04 23:08:02 +02:00
Eugene Burmakin
54661a1d52 Update some tests and svg icons 2025-10-04 22:52:08 +02:00
Eugene Burmakin
9bc0e2accc Use family path instead of families/id 2025-10-04 22:39:47 +02:00
Eugene Burmakin
cfe319df9b Move family controllers to their own namespace 2025-10-04 20:48:44 +02:00
Eugene Burmakin
f898f3aab0 Fix tests 2025-10-04 20:31:36 +02:00
Eugene Burmakin
8389cd85a3 Fix devise views styling 2025-10-04 18:26:41 +02:00
Eugene Burmakin
0a61f9bf68 Use DaisyUI for styling the Family feature 2025-10-04 16:41:35 +02:00
Andrey Bondarenko
d35f94c33d
Merge branch 'master' into issue-1793 2025-10-04 16:38:24 +02:00
Andrey Bondarenko
d90413bfe1
Resolve conflict
Resolve conflict, add curl
2025-10-04 16:36:49 +02:00
Eugene Burmakin
c6fc4328d7 Remove memberships page 2025-10-04 16:17:26 +02:00
Eugene Burmakin
2a85735aee Add "Edit" and "Delete" icons to family show page 2025-10-04 16:08:21 +02:00
Eugene Burmakin
a3b5210b41 Return rails ujs 2025-10-04 16:01:32 +02:00
Eugene Burmakin
78693f3001 Merge branch 'dev' into feature/family 2025-10-04 15:57:03 +02:00
Eugene Burmakin
6648d9e593 Fix stats endpoint returning null for totalPointsTracked 2025-10-04 15:53:25 +02:00
Eugene Burmakin
eb4f5d6e1b Merge branch 'master' into dev 2025-10-04 14:47:57 +02:00
Eugene Burmakin
e86264a4f4 Change asset compilation setting in production 2025-10-02 21:54:18 +02:00
Eugene Burmakin
ab90180cbf Pin maps, remove ujs 2025-10-02 21:18:54 +02:00
Eugene Burmakin
d070eb40b9 Disable the web manfifest hook 2025-10-02 21:05:17 +02:00
Eugene Burmakin
6ec6330ada Rvert web_app_manifest.rb changes 2025-10-02 21:03:26 +02:00
Eugene Burmakin
acac57c465 Merge remote-tracking branch 'origin' into dev 2025-10-01 19:21:14 +02:00
Eugene Burmakin
e8cc4c5b8b Update Dockerfile.dev 2025-09-30 20:27:02 +02:00
Eugene Burmakin
4e9e1e933a Update Dockerfile.dev 2025-09-30 20:09:02 +02:00
Eugene Burmakin
ffa90b50f7 Update Dockerfile.dev 2025-09-30 19:17:26 +02:00
Eugene Burmakin
284884fc1d Add missing quotes to PLATFORMS in build_and_push.yml 2025-09-30 18:56:02 +02:00
Eugene Burmakin
e569b7739d Merge remote-tracking branch 'origin' into dev 2025-09-30 18:45:29 +02:00
Eugene Burmakin
3806ba9a14 Remove arm/v6 from build platforms 2025-09-30 18:44:11 +02:00
Eugene Burmakin
db8d886ee2 Use ids instead of uuids for primary keys in family tables 2025-09-30 18:43:26 +02:00
dependabot[bot]
dd2e6a49bc
Bump turbo-rails from 2.0.16 to 2.0.17
Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.16 to 2.0.17.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.16...v2.0.17)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 00:51:48 +00:00
Eugene Burmakin
698198db4b Update navbar for better responsiveness 2025-09-30 00:45:09 +02:00
Eugene Burmakin
045655fa73 Update changelog 2025-09-29 23:16:43 +02:00
Eugene Burmakin
2b91d04675 Update changelog 2025-09-29 23:16:21 +02:00
dependabot[bot]
240d90cea1
Bump sentry-ruby from 5.26.0 to 5.28.0
Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 5.26.0 to 5.28.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/5.26.0...5.28.0)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 5.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 21:15:26 +00:00
dependabot[bot]
480142b494
Bump rubocop-rails from 2.32.0 to 2.33.4
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.32.0 to 2.33.4.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.32.0...v2.33.4)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.33.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 21:15:18 +00:00
Evgenii Burmakin
dfdfbf1feb
Merge pull request #1783 from Freika/dev
0.32.1
2025-09-29 23:14:09 +02:00
Eugene Burmakin
db9322049b Update changelog and app version 2025-09-29 23:13:46 +02:00
Eugene Burmakin
0728c21c61 Update stuff, fix stuff 2025-09-29 22:27:07 +02:00
Eugene Burmakin
f6b32371ec Show family members on the map 2025-09-29 21:31:24 +02:00
Eugene Burmakin
fa3d926a92 Change registration flow to support family invitations and self-hosted mode restrictions. 2025-09-28 20:53:50 +02:00
Eugene Burmakin
f30b4bcafd Use id to cancel invitations 2025-09-28 18:50:02 +02:00
Eugene Burmakin
2eb374676a Hide invitation form when family is at capacity 2025-09-28 18:23:05 +02:00
Eugene Burmakin
5252388b8c Fix leaving and deleting family confirmation dialogs 2025-09-28 14:49:32 +02:00
Eugene Burmakin
1f67e889e3 Complete phase 5 2025-09-28 13:10:07 +02:00
Eugene Burmakin
e17f732706 Minor changes 2025-09-27 21:14:40 +02:00
Eugene Burmakin
2af0147505 Fix tests 2025-09-27 20:14:57 +02:00
Eugene Burmakin
f817e3513c Fix some tests 2025-09-27 14:26:08 +02:00
Eugene Burmakin
f0f0f20200 Complete phase 4 2025-09-27 14:04:10 +02:00
Eugene Burmakin
cc5da3e7e2 Complete phase 3 2025-09-27 13:23:33 +02:00
Eugene Burmakin
40fff59ec6 Complete Phase 2 implementation of Family feature with robust error handling 2025-09-27 13:03:48 +02:00
Eugene Burmakin
976a4cf361 Update plan 2025-09-27 12:03:42 +02:00
Eugene Burmakin
0d02f08199 Add implementation plan and complete phase 1 2025-09-27 00:46:29 +02:00
Eugene Burmakin
4287fee93d Fix tests after updating rubyzip 2025-09-26 23:31:45 +02:00
Eugene Burmakin
7a028cd246 Update changelog 2025-09-26 20:15:29 +02:00
Evgenii Burmakin
0bf3ada3b9
Merge pull request #1740 from Freika/dependabot/bundler/ffaker-2.25.0
Bump ffaker from 2.24.0 to 2.25.0
2025-09-26 19:55:55 +02:00
Evgenii Burmakin
3adfcc03c3
Merge branch 'dev' into dependabot/bundler/ffaker-2.25.0 2025-09-26 19:55:46 +02:00
Evgenii Burmakin
ce7a1c9a69
Merge pull request #1741 from Freika/dependabot/bundler/pg-1.6.2
Bump pg from 1.5.9 to 1.6.2
2025-09-26 19:55:13 +02:00
Evgenii Burmakin
4666a0790d
Merge pull request #1742 from Freika/dependabot/bundler/factory_bot_rails-6.5.1
Bump factory_bot_rails from 6.5.0 to 6.5.1
2025-09-26 19:53:16 +02:00
Evgenii Burmakin
dd5ae17b0f
Merge pull request #1743 from Freika/dependabot/bundler/rubyzip-3.1.0
Bump rubyzip from 2.4.1 to 3.1.0
2025-09-26 19:52:59 +02:00
Evgenii Burmakin
7ae6901e4c
Merge pull request #1744 from Freika/dependabot/bundler/rubocop-rails-2.33.3
Bump rubocop-rails from 2.32.0 to 2.33.3
2025-09-26 19:52:25 +02:00
Evgenii Burmakin
24c7676497
Merge pull request #1788 from Freika/dependabot/bundler/rexml-3.4.4
Bump rexml from 3.4.1 to 3.4.4
2025-09-26 19:51:27 +02:00
Evgenii Burmakin
87931ded03
Merge pull request #1802 from Freika/staging-env
Add staging environment configuration
2025-09-26 19:50:36 +02:00
Evgenii Burmakin
8807950180
Merge branch 'dev' into staging-env 2025-09-26 19:50:25 +02:00
Eugene Burmakin
a53bd0a4bd Add staging environment configuration 2025-09-26 19:48:52 +02:00
Evgenii Burmakin
0ad84379ee
Merge pull request #1790 from Freika/refactoring/user-data-import
Rework importing user data archive
2025-09-26 19:47:45 +02:00
Eugene Burmakin
15e27c87d5 Remove unused code 2025-09-26 19:47:12 +02:00
Eugene Burmakin
1506633441 Revert import changes 2025-09-26 19:45:18 +02:00
Eugene Burmakin
ea0d03f4b0 Merge branch 'dev', remote-tracking branch 'origin' into refactoring/user-data-import 2025-09-26 19:31:31 +02:00
Evgenii Burmakin
3013ce9e8c
Merge pull request #1801 from Freika/chore/ruby-346
Update map layers based on user theme preference (light/dark) and add…
2025-09-26 19:30:07 +02:00
Eugene Burmakin
abebf5e9eb Update changelog 2025-09-26 19:29:46 +02:00
Eugene Burmakin
38e3915404 Remove forced theme switching for maps based on OS theme. 2025-09-26 19:28:46 +02:00
Eugene Burmakin
7990298066 Update ruby version 2025-09-26 19:01:21 +02:00
Eugene Burmakin
7a7f0b09df Update map layers based on user theme preference (light/dark) and add theme-aware styling to map controls and buttons. 2025-09-26 18:49:13 +02:00
Evgenii Burmakin
d05e5d71d3
Merge pull request #1799 from Freika/feature/posthog
Add optional posthog analytics
2025-09-25 18:50:41 +02:00
Eugene Burmakin
78ce3d9438 Add posthog analytics 2025-09-25 18:49:31 +02:00
Andrey Bondarenko
47704d2297
Refactor Dockerfiles for improved readability
Split long RUN commands in Dockerfile.dev and Dockerfile.prod into multiple lines for better readability and maintainability. No functional changes were made.
2025-09-24 14:00:51 +02:00
Andrey Bondarenko
175dca7a49
Add apt-get upgrade to Dockerfiles
Updated both Dockerfile.dev and Dockerfile.prod to include 'apt-get upgrade -qq' after 'apt-get update -qq' to ensure all packages are upgraded before installing dependencies. Addresses issue #1793
2025-09-24 13:54:49 +02:00
Eugene Burmakin
315659d871 Fix path issue 2025-09-23 21:27:42 +02:00
Evgenii Burmakin
da3d7ccdf4
Merge pull request #1792 from Freika/feature/trial-imports-limit
Feature/trial imports limit
2025-09-23 21:17:09 +02:00
Eugene Burmakin
63aa197a29 Update error message 2025-09-23 21:16:25 +02:00
Eugene Burmakin
6a0cc112dc Introduce limit for trial users: max 5 imports, 10MB per file 2025-09-23 21:14:55 +02:00
Evgenii Burmakin
13659d73e2
Merge pull request #1791 from Freika/fix/import-visits-scheduling-job
Speed up scheduling of visits suggestions job after import
2025-09-23 21:04:36 +02:00
Eugene Burmakin
4627ed7a6f Speed up scheduling of visits suggestions job after import 2025-09-23 21:03:49 +02:00
Eugene Burmakin
031104cdaa Rework importing user data archive 2025-09-23 20:39:12 +02:00
Eugene Burmakin
a84fde553e Fix failed specs 2025-09-23 00:18:04 +02:00
Eugene Burmakin
54a2a29c18 Fix quietest_week to correctly calculate the quietest week in a month 2025-09-22 22:40:00 +02:00
Evgenii Burmakin
537cbb7cb5
Merge pull request #1786 from Freika/feature/ios-auth
Feature/ios auth
2025-09-22 22:20:19 +02:00
Eugene Burmakin
6e44425e4e Recalculate stats when an import is deleted. 2025-09-22 20:30:10 +02:00
Eugene Burmakin
f8a05e68e3 Fix api point serializer to return correct latitude and longitude values 2025-09-22 20:01:58 +02:00
dependabot[bot]
8ffb80c265
Bump rexml from 3.4.1 to 3.4.4
Bumps [rexml](https://github.com/ruby/rexml) from 3.4.1 to 3.4.4.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.1...v3.4.4)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 14:12:58 +00:00
Eugene Burmakin
2af1aab787 Add specs for updated user serializer 2025-09-21 16:33:45 +02:00
Eugene Burmakin
14f6f4dcc1 Add new tests to cover ios auth 2025-09-21 16:27:43 +02:00
Eugene Burmakin
6d97ecff3c Update changelog 2025-09-21 15:41:51 +02:00
Eugene Burmakin
ce4fcc29c3 Add data on subscription status to user serializer unless self-hosted 2025-09-21 15:41:07 +02:00
Eugene Burmakin
e3795981e3 Update registratuion_controller.rb to handle turbo_stream format for iOS auth 2025-09-21 15:27:17 +02:00
Eugene Burmakin
550b405398 Update form 2025-09-21 15:18:11 +02:00
Eugene Burmakin
c8d54f0ed6 Update application_controller to store client header in session 2025-09-21 14:12:18 +02:00
Eugene Burmakin
69cae258c9 Save html format if iOS client header is present 2025-09-21 14:00:24 +02:00
Eugene Burmakin
20c2bc34cd Store client header in session to persist across redirects 2025-09-21 13:51:26 +02:00
Eugene Burmakin
5347232376 Update spec/requests/authentication_spec.rb 2025-09-21 13:22:07 +02:00
Eugene Burmakin
c0e756d085 Introduce iOS authentication flow with JWT token generation 2025-09-21 12:46:59 +02:00
Eugene Burmakin
d6a3200632 Update migration 2025-09-20 15:55:10 +02:00
Eugene Burmakin
f223feb854 Add safety_assured block for index creation 2025-09-20 15:53:27 +02:00
Evgenii Burmakin
482c0928fe
Merge pull request #1763 from Freika/feature/precalculating-month-stats-data
Precalculate hexagons for stats
2025-09-20 14:46:39 +02:00
Eugene Burmakin
1043d572fe Fix failing specs 2025-09-20 14:25:16 +02:00
Eugene Burmakin
339ba3130e Fix missing hexagons 2025-09-20 14:05:14 +02:00
Eugene Burmakin
c756346569 Refactor H3 hexagon calculation logic to improve clarity and maintainability 2025-09-20 13:23:24 +02:00
Eugene Burmakin
798e98e52e Don't start prometheus in console 2025-09-20 12:58:18 +02:00
Eugene Burmakin
3450ca35b0 Extract hexagon calculation to its own service 2025-09-20 12:57:30 +02:00
Eugene Burmakin
2c55ca07e7 Remove permanent option from stats sharing options, default to 24h expiration. 2025-09-19 23:49:32 +02:00
Eugene Burmakin
a20a3c5b36 Fix missing hexes 2025-09-19 22:52:08 +02:00
Eugene Burmakin
2fe36f02d6 Fix failing model spec 2025-09-19 22:12:34 +02:00
Eugene Burmakin
a1e83991fa Fix jobs specs 2025-09-19 21:48:43 +02:00
Eugene Burmakin
e169cc7074 Fix failing specs 2025-09-19 21:37:31 +02:00
Eugene Burmakin
584daadb5c Fix failing specs 2025-09-19 19:55:27 +02:00
Eugene Burmakin
2bd0390d1a Rename hexagon_centers to h3_hex_ids and update related logic 2025-09-19 00:23:12 +02:00
Eugene Burmakin
440b031a0c Remove redundant spec 2025-09-18 22:57:58 +02:00
Eugene Burmakin
0cce4929f0 Remove unused code 2025-09-18 22:23:47 +02:00
Eugene Burmakin
5db2ac7fac Refactor hexagon services to remove Maps::HexagonContextResolver and improve date parsing 2025-09-18 21:21:54 +02:00
Eugene Burmakin
a97e133b35 Remove unsed class 2025-09-18 20:15:49 +02:00
Eugene Burmakin
ab765a4370 Rename params 2025-09-18 20:10:00 +02:00
Eugene Burmakin
3fd7634657 Simplify some services by removing unused parameters and validations 2025-09-18 20:02:18 +02:00
Eugene Burmakin
0905ef65a5 Don't pass h3_resolution from frontend; use default in backend service 2025-09-18 19:45:53 +02:00
Eugene Burmakin
5b3fe84933 Update onborading popup 2025-09-18 18:29:46 +02:00
Eugene Burmakin
c67532bb10 Reimplement hexagons with H3 2025-09-17 01:55:42 +02:00
Eugene Burmakin
eb16959b9a Extract logic to service classes 2025-09-16 20:41:53 +02:00
Eugene Burmakin
8c45404420 Fix hexagons render 2025-09-15 20:10:53 +02:00
Eugene Burmakin
6314442770 Calculate only centers of hexagons 2025-09-14 12:41:16 +02:00
Eugene Burmakin
dc13bc1fd2 Update public_month page 2025-09-13 23:23:48 +02:00
Eugene Burmakin
a2aa1be271 Precalculate hexagons for stats 2025-09-13 23:11:42 +02:00
Evgenii Burmakin
bab666b182
Merge pull request #1761 from Freika/fix/stat-sharing-migration
Update migration
2025-09-13 21:35:28 +02:00
Eugene Burmakin
8a6156a56c Update migration 2025-09-13 21:26:55 +02:00
dependabot[bot]
ac6490818d
Bump rubocop-rails from 2.32.0 to 2.33.3
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.32.0 to 2.33.3.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.32.0...v2.33.3)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.33.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-13 16:58:34 +00:00
dependabot[bot]
591c12da61
Bump factory_bot_rails from 6.5.0 to 6.5.1
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.5.0 to 6.5.1.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.5.0...v6.5.1)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-version: 6.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-13 16:58:33 +00:00
dependabot[bot]
8e75a51c41
Bump rubyzip from 2.4.1 to 3.1.0
Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 2.4.1 to 3.1.0.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v2.4.1...v3.1.0)

---
updated-dependencies:
- dependency-name: rubyzip
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-13 16:58:32 +00:00
dependabot[bot]
a1c34ba7e9
Bump pg from 1.5.9 to 1.6.2
Bumps [pg](https://github.com/ged/ruby-pg) from 1.5.9 to 1.6.2.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.5.9...v1.6.2)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 1.6.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-13 16:58:31 +00:00
dependabot[bot]
6c77b56489
Bump ffaker from 2.24.0 to 2.25.0
Bumps [ffaker](https://github.com/ffaker/ffaker) from 2.24.0 to 2.25.0.
- [Release notes](https://github.com/ffaker/ffaker/releases)
- [Changelog](https://github.com/ffaker/ffaker/blob/main/Changelog.md)
- [Commits](https://github.com/ffaker/ffaker/commits)

---
updated-dependencies:
- dependency-name: ffaker
  dependency-version: 2.25.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-13 16:58:30 +00:00
Evgenii Burmakin
7f4403021f
Merge pull request #1748 from Freika/dev
0.32.0
2025-09-13 18:57:24 +02:00
Eugene Burmakin
e6f74fc6ab Update query to use lonlat column for bounds calculation 2025-09-13 18:54:02 +02:00
Eugene Burmakin
f99319b23d Update app version 2025-09-13 18:37:03 +02:00
Eugene Burmakin
f80b2a1aff Fix last failing specs 2025-09-13 18:30:26 +02:00
Eugene Burmakin
0ed71c3cc6 Fix failing specs 2025-09-13 17:46:45 +02:00
Eugene Burmakin
1394d6202c Fix potential sql injection 2025-09-13 17:04:48 +02:00
Eugene Burmakin
dcd1c7ab2b Add some refactorings 2025-09-13 16:41:28 +02:00
Evgenii Burmakin
608fa41fa8
Merge pull request #1734 from Freika/feature/follow-up-emails
Add follow up emails
2025-09-13 16:11:07 +02:00
Eugene Burmakin
662d819f47 Update spec name 2025-09-13 16:10:46 +02:00
Eugene Burmakin
dd31563653 Add missing vars to specs 2025-09-13 16:05:52 +02:00
Eugene Burmakin
ea2fbfb325 Fix caching job specs 2025-09-13 15:58:36 +02:00
Eugene Burmakin
774860220e Add missing email templates for post-trial reminders 2025-09-13 15:37:09 +02:00
Eugene Burmakin
bfeeeee234 Merge branch 'dev', remote-tracking branch 'origin' into feature/follow-up-emails 2025-09-13 14:03:04 +02:00
Evgenii Burmakin
6c81884f49
Merge pull request #1757 from Freika/feature/stats-page
Feature/stats page
2025-09-13 14:00:45 +02:00
Eugene Burmakin
5fe7a47ee2 Fix last failing test 2025-09-13 12:44:47 +02:00
Eugene Burmakin
b7ae9097be Fix tests 2025-09-13 12:28:43 +02:00
Eugene Burmakin
d33a083f98 Replace bell in navbar with lucide icon 2025-09-13 12:12:40 +02:00
Eugene Burmakin
ef01d028ba Load leaflet protomaps only if not selfhosted on public month page 2025-09-13 12:07:29 +02:00
Eugene Burmakin
cc1fecfd22 Show QR code by default and use map tiles based on self-hosted setting 2025-09-13 11:58:50 +02:00
Eugene Burmakin
e583a8fb52 Remove unused js code 2025-09-12 23:08:11 +02:00
Eugene Burmakin
52a69ecf3d Fix hexagons 2025-09-12 22:23:17 +02:00
Eugene Burmakin
09174de6e9 Add refresh-ccw icon and use it in stats page for refresh link 2025-09-12 22:11:36 +02:00
Eugene Burmakin
9afbf3458d Remove unused icons 2025-09-12 22:04:16 +02:00
Eugene Burmakin
88e9c85766 Extract hexagon query to separate class 2025-09-12 21:38:25 +02:00
Eugene Burmakin
57ecda2b1b Extract stats sharing logic to its own controller 2025-09-12 21:08:45 +02:00
Eugene Burmakin
34e71b5d17 Add specs for hexagon API and public sharing; remove debug logs 2025-09-12 20:44:53 +02:00
Eugene Burmakin
5ff35136f2 Add images for stats page backgrounds 2025-09-12 20:11:14 +02:00
Eugene Burmakin
612c30026c Add hexagons to public stats page 2025-09-12 08:33:51 +02:00
Eugene Burmakin
5cd05f8d3a Update public month page 2025-09-11 22:25:31 +02:00
Eugene Burmakin
1426fa53df Add header gradient based on month 2025-09-11 22:22:08 +02:00
Eugene Burmakin
d3bbd08890 Make year page more colorful and add month page 2025-09-11 22:12:44 +02:00
Eugene Burmakin
e8c5b3dfdc Update stats page 2025-09-11 21:41:52 +02:00
Eugene Burmakin
fc068ec79d Add Lucide icons and stats sharing 2025-09-11 20:41:43 +02:00
Eugene Burmakin
acd3b20ef5 Add stats month page 2025-09-11 00:19:34 +02:00
Eugene Burmakin
8604effbe1 Refactor some bits 2025-09-10 21:46:03 +02:00
Eugene Burmakin
fb4d5a94b5 Update .app_version to 0.31.1 2025-09-09 00:09:14 +02:00
Evgenii Burmakin
4c5e2b787a
Merge pull request #1746 from Freika/fix/daily-tracks-gen
Implement a new daily track generation job to replace the old cleanup…
2025-09-09 00:08:58 +02:00
Eugene Burmakin
492cf1290a Fix tests 2025-09-08 23:52:07 +02:00
Eugene Burmakin
e68279fd3e Update changelog 2025-09-08 21:16:49 +02:00
Eugene Burmakin
99b227adfd Refactor specs 2025-09-08 21:15:41 +02:00
Eugene Burmakin
17b09c91da Refactor daily track generation to avoid cleaning existing tracks 2025-09-08 21:09:28 +02:00
Eugene Burmakin
410cd86c4e Implement a new daily track generation job to replace the old cleanup job. 2025-09-08 20:46:30 +02:00
Evgenii Burmakin
be09937a0c
Merge pull request #1719 from Freika/dependabot/bundler/importmap-rails-2.2.2
Bump importmap-rails from 2.1.0 to 2.2.2
2025-09-07 21:00:39 +02:00
Evgenii Burmakin
edd30201c6
Merge pull request #1721 from Freika/dependabot/bundler/foreman-0.90.0
Bump foreman from 0.88.1 to 0.90.0
2025-09-07 21:00:08 +02:00
Evgenii Burmakin
414018fca8
Merge pull request #1723 from Freika/dependabot/bundler/selenium-webdriver-4.35.0
Bump selenium-webdriver from 4.33.0 to 4.35.0
2025-09-07 20:59:39 +02:00
Eugene Burmakin
68a0a8f23c Add follow up emails 2025-09-05 19:39:50 +02:00
Evgenii Burmakin
757a200ffa
Merge pull request #1712 from Freika/dev
0.31.0
2025-09-04 22:14:50 +02:00
Eugene Burmakin
e3b2fcd415 Sanitize input 2025-09-04 00:12:33 +02:00
Eugene Burmakin
5c6b76dd63 Hide search if reverse geocoding is disabled 2025-09-03 23:57:38 +02:00
Evgenii Burmakin
c471534acf
Merge pull request #1717 from Freika/feature/search
Feature/search
2025-09-03 23:42:46 +02:00
Eugene Burmakin
9967434edc Escape search query 2025-09-03 23:27:59 +02:00
Eugene Burmakin
2b1f6d66bc Fix missing var 2025-09-03 20:05:03 +02:00
Eugene Burmakin
689b8cb0f1 Remove caching from geocoder 2025-09-03 19:56:38 +02:00
Eugene Burmakin
690f80766e Update location search to instantiate GeocodingService with query 2025-09-03 19:48:41 +02:00
Eugene Burmakin
b276828af3 Remove provider detection 2025-09-03 19:28:26 +02:00
Eugene Burmakin
7ca488802e Remove text queries to location search endpoint 2025-09-03 19:01:50 +02:00
Eugene Burmakin
e965c8c67c Remove system spec 2025-09-03 18:51:00 +02:00
Eugene Burmakin
e3e5770843 Fix spatial queries to use correct geography column 2025-09-03 18:22:39 +02:00
Eugene Burmakin
83fc3106a0 Fix failing specs 2025-09-02 23:25:21 +02:00
Eugene Burmakin
d4c0eaa549 Fix request specs 2025-09-02 23:12:10 +02:00
Eugene Burmakin
71bb224524 Fix some tests 2025-09-02 21:55:47 +02:00
Eugene Burmakin
4f402a0c2a Make search look nicer 2025-09-02 21:21:22 +02:00
dependabot[bot]
01defa7a7f
Bump selenium-webdriver from 4.33.0 to 4.35.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.33.0 to 4.35.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.33.0...selenium-4.35.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.35.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 02:55:39 +00:00
dependabot[bot]
12ef66a066
Bump foreman from 0.88.1 to 0.90.0
Bumps [foreman](https://github.com/ddollar/foreman) from 0.88.1 to 0.90.0.
- [Changelog](https://github.com/ddollar/foreman/blob/main/Changelog.md)
- [Commits](https://github.com/ddollar/foreman/compare/v0.88.1...v0.90.0)

---
updated-dependencies:
- dependency-name: foreman
  dependency-version: 0.90.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 02:22:54 +00:00
dependabot[bot]
46479fbead
Bump importmap-rails from 2.1.0 to 2.2.2
Bumps [importmap-rails](https://github.com/rails/importmap-rails) from 2.1.0 to 2.2.2.
- [Release notes](https://github.com/rails/importmap-rails/releases)
- [Commits](https://github.com/rails/importmap-rails/compare/v2.1.0...v2.2.2)

---
updated-dependencies:
- dependency-name: importmap-rails
  dependency-version: 2.2.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 01:46:03 +00:00
Eugene Burmakin
5eb3eb0024 Move search bar to left 2025-09-01 23:11:33 +02:00
Eugene Burmakin
daa3b4eed1 Move search bar to center 2025-09-01 22:58:33 +02:00
Eugene Burmakin
99dace21e4 Put search to a sidebar 2025-09-01 22:04:55 +02:00
Eugene Burmakin
2d240c2094 Implement search by user's points 2025-08-31 12:08:33 +02:00
Eugene Burmakin
1709aa612d Add search bar 2025-08-30 23:18:16 +02:00
Eugene Burmakin
5b9ed23cae Add Claude md 2025-08-30 21:39:25 +02:00
Eugene Burmakin
ed5e4d1664 Update qr code 2025-08-30 21:32:25 +02:00
Eugene Burmakin
006456966d Fix last failing spec 2025-08-29 14:32:04 +02:00
Eugene Burmakin
e95ad88382 Remove obsolete specs 2025-08-29 14:23:38 +02:00
Eugene Burmakin
30fb51940c Remove logs and unused code 2025-08-29 13:59:46 +02:00
Eugene Burmakin
289ce5dabb Enable tracks toggle when debug flag present 2025-08-29 12:21:26 +02:00
Eugene Burmakin
cf987894fe Fix failing specs 2025-08-29 11:52:56 +02:00
Eugene Burmakin
504bb92cdb Update points relation 2025-08-29 11:05:25 +02:00
Eugene Burmakin
5ab382936d Merge branch 'dev', remote-tracking branch 'origin' into feature/tracks-on-ruby 2025-08-29 10:57:08 +02:00
Evgenii Burmakin
04d063ba1c
Merge pull request #1709 from Freika/fix/pounts-count-default-value
Add default value for points_count attribute
2025-08-29 10:53:17 +02:00
Eugene Burmakin
3e1ba6d183 Update changelog 2025-08-29 10:43:49 +02:00
Eugene Burmakin
9856ab56c6 Add default value for points_count attribute 2025-08-29 10:07:00 +02:00
Evgenii Burmakin
332e52f6f2
Update issue templates 2025-08-27 12:39:10 +02:00
Evgenii Burmakin
45e550705d
Merge pull request #1699 from Freika/dev
0.30.12
2025-08-26 17:02:09 +02:00
Eugene Burmakin
2020979b83 Update changelog and app version 2025-08-26 16:38:49 +02:00
Eugene Burmakin
22daed7291 Move welcome emails placement 2025-08-26 16:37:21 +02:00
Eugene Burmakin
b9c1a5ccdb Show api key to trial users 2025-08-26 16:09:58 +02:00
Evgenii Burmakin
38fd8ddc92
Merge pull request #1667 from Freika/feature/points-counter-cache
Introduce points counter cache to optimize performance
2025-08-26 16:07:45 +02:00
Eugene Burmakin
e9b8d9a673 Update changelog 2025-08-26 15:28:10 +02:00
Eugene Burmakin
b8d69a6797 Reset counters for points counter cache 2025-08-26 15:26:05 +02:00
Evgenii Burmakin
02e6fb8a85
Merge branch 'dev' into feature/points-counter-cache 2025-08-26 15:09:48 +02:00
Eugene Burmakin
ce5ae8dc70 Fix logout bug 2025-08-25 23:35:11 +02:00
Evgenii Burmakin
4b80f77768
Merge pull request #1676 from Freika/dev
0.30.11
2025-08-23 22:30:14 +02:00
Eugene Burmakin
86bfe1b1d9 Update app version 2025-08-23 22:29:53 +02:00
Eugene Burmakin
625b8e614f Fix failing spec 2025-08-23 21:57:25 +02:00
Eugene Burmakin
d400d3c9fd Fix minor issues 2025-08-23 19:09:18 +02:00
Eugene Burmakin
a6f4a931af Make sure no errors raised if source is nil or unknown 2025-08-23 18:46:00 +02:00
Eugene Burmakin
4a704ed608 Update gpx serializer 2025-08-23 18:37:51 +02:00
Evgenii Burmakin
6491d0433a
Merge pull request #1675 from Freika/fix/unified-imports
Fix import detection
2025-08-23 16:55:23 +02:00
Eugene Burmakin
b9ab38ec6c Fix unified imports source handling 2025-08-23 16:39:42 +02:00
Eugene Burmakin
5a85a56897 Update imports table 2025-08-23 16:37:53 +02:00
Eugene Burmakin
432e1d2669 Return self-hosted validation 2025-08-23 16:28:25 +02:00
Eugene Burmakin
edb9287bcf Fix schema 2025-08-23 16:13:52 +02:00
Eugene Burmakin
b049c11542 Fix import detection 2025-08-23 16:07:15 +02:00
Evgenii Burmakin
758b31d6bd
Merge pull request #1666 from Freika/dev
0.30.10
2025-08-22 22:14:25 +02:00
Eugene Burmakin
001d294885 Source to_s 2025-08-22 22:14:03 +02:00
Eugene Burmakin
76a7c12133 Fix range issue 2025-08-22 21:27:50 +02:00
Eugene Burmakin
7b122f2780 Merge branch 'dev', remote-tracking branch 'origin' into feature/points-counter-cache 2025-08-22 21:01:51 +02:00
Eugene Burmakin
b5758db1c1 Add sources info to new import page 2025-08-22 21:01:16 +02:00
Evgenii Burmakin
6e36a73b30
Merge pull request #1668 from Freika/feature/unify-import-form
Unify imports form
2025-08-22 20:53:01 +02:00
Eugene Burmakin
1459336134 Update changelog 2025-08-22 20:42:34 +02:00
Eugene Burmakin
7eb3103645 Rename a method 2025-08-22 20:40:06 +02:00
Eugene Burmakin
96c9f1030c Move json loading to a module 2025-08-22 20:13:10 +02:00
Eugene Burmakin
ed3bb4fb67 Unify imports form 2025-08-22 19:10:40 +02:00
Eugene Burmakin
6e4934a93d Introduce points counter cache to optimize performance 2025-08-21 22:32:29 +02:00
Evgenii Burmakin
8a716aaae1
Merge pull request #1665 from Freika/feature/visits-creation-api
Add visits manual creation
2025-08-21 21:04:19 +02:00
Eugene Burmakin
a4605f9b3e Add swagger spec for visits api 2025-08-21 20:53:23 +02:00
Eugene Burmakin
550d20c555 Imlement visits deletion API 2025-08-21 20:41:53 +02:00
Eugene Burmakin
6e773b6b51 Add current location to a visit popup as a fallback 2025-08-21 19:52:51 +02:00
Eugene Burmakin
6f842e8143 Make visit popup look nicer 2025-08-21 19:48:32 +02:00
Eugene Burmakin
e68bbc9220 Add test for visits creation API 2025-08-21 19:09:43 +02:00
Eugene Burmakin
efc7ffa579 Extract visit creation to a service 2025-08-21 18:58:59 +02:00
Eugene Burmakin
1da3ef5c44 Add visits manual creation 2025-08-21 18:42:45 +02:00
Eugene Burmakin
86a76db2c0 Fix date nav hidden under navbar 2025-08-19 23:53:10 +02:00
Eugene Burmakin
c3c997be02 Add a separate layout for full screen map 2025-08-19 23:32:06 +02:00
Evgenii Burmakin
4e75943da5
Merge pull request #1658 from Freika/dev
0.30.9
2025-08-19 21:32:10 +02:00
Eugene Burmakin
4b55e1b29a Update Readme 2025-08-19 21:27:34 +02:00
Evgenii Burmakin
15b5391391
Merge pull request #1647 from Freika/feature/trial
Add trial mode
2025-08-19 21:09:37 +02:00
Evgenii Burmakin
ead1673cc5
Merge branch 'dev' into feature/trial 2025-08-19 20:58:00 +02:00
Eugene Burmakin
a60e7f4124 Fix mailer specs 2025-08-19 20:56:07 +02:00
Eugene Burmakin
b9764d39c3 Skip trial emails for active users 2025-08-19 18:55:22 +02:00
Eugene Burmakin
cdbd51c9f9 Update mailers 2025-08-19 18:31:37 +02:00
Eugene Burmakin
464a183e8f Fix spec 2025-08-19 18:29:34 +02:00
Evgenii Burmakin
e25caf27c5
Merge pull request #1648 from Freika/dependabot/bundler/bundler-4416b985a6
Bump activerecord from 8.0.2 to 8.0.2.1 in the bundler group
2025-08-18 20:56:34 +02:00
Evgenii Burmakin
1d4bfe4027
Merge pull request #1616 from Freika/dependabot/bundler/puma-6.6.1
Bump puma from 6.6.0 to 6.6.1
2025-08-18 20:55:55 +02:00
Evgenii Burmakin
130a5a5412
Merge pull request #1610 from Freika/fix/trip-visited-countries
Calculate trip's visited countries from points
2025-08-18 20:55:01 +02:00
Evgenii Burmakin
4918ae94f4
Merge branch 'dev' into fix/trip-visited-countries 2025-08-18 20:54:16 +02:00
Eugene Burmakin
7b46a663ce Update changelog and app version 2025-08-18 20:53:32 +02:00
Eugene Burmakin
6708e11ab3 Add limits for import size for trial users 2025-08-14 20:50:22 +02:00
dependabot[bot]
4ef47a1c85
Bump activerecord from 8.0.2 to 8.0.2.1 in the bundler group
Bumps the bundler group with 1 update: [activerecord](https://github.com/rails/rails).


Updates `activerecord` from 8.0.2 to 8.0.2.1
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v8.0.2.1/activerecord/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v8.0.2...v8.0.2.1)

---
updated-dependencies:
- dependency-name: activerecord
  dependency-version: 8.0.2.1
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 22:43:19 +00:00
Eugene Burmakin
71488c9fb1 Add trial mode 2025-08-13 20:25:48 +02:00
Eugene Burmakin
f6b7652a01 Return dawarich headers on all API responses 2025-08-11 00:21:58 +02:00
Evgenii Burmakin
f2857db45e
Merge pull request #1605 from Freika/dev
0.30.8
2025-08-10 12:15:40 +02:00
Eugene Burmakin
da438d9c93 Fix borders specs 2025-08-10 12:05:34 +02:00
dependabot[bot]
542fb94375
Bump puma from 6.6.0 to 6.6.1
Bumps [puma](https://github.com/puma/puma) from 6.6.0 to 6.6.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.6.0...v6.6.1)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 6.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 18:31:03 +00:00
Eugene Burmakin
dfbe9a9821 Dry out scratch map. 2025-08-03 23:35:29 +02:00
Evgenii Burmakin
7e82b1b2d8
Merge pull request #1613 from Freika/fix/scratch-map
Fix/scratch map
2025-08-03 22:21:55 +02:00
Eugene Burmakin
c8fadaa91d Update changelog. 2025-08-03 22:20:28 +02:00
Eugene Burmakin
0918bb1b8d Extract scratch map to a separate file. 2025-08-03 22:19:57 +02:00
Eugene Burmakin
74112c0d04 Calculate trip's visited countries from points 2025-08-02 00:06:09 +02:00
Evgenii Burmakin
b523a99391
Merge pull request #1604 from Freika/fix/fog-of-war-zoom
Fix fog of war on zoom and map movement
2025-08-01 22:56:16 +02:00
Eugene Burmakin
f2f0e824c8 Fix fog of war on zoom and map movement 2025-08-01 22:14:23 +02:00
Eugene Burmakin
ad5670072e Merge branch 'dev' into feature/tracks-on-ruby 2025-08-01 20:37:32 +02:00
Evgenii Burmakin
a1bca21367
Merge pull request #1600 from Freika/dev
0.30.7
2025-08-01 18:55:17 +02:00
Eugene Burmakin
559e7c2951 Pluck country name instead of country 2025-08-01 18:42:53 +02:00
Evgenii Burmakin
5224daeddc
Merge pull request #1601 from Freika/fix/live-map-memory-bloat
Fix some nitpicks
2025-08-01 18:39:43 +02:00
Eugene Burmakin
c4c829b4b0 Fix some nitpicks 2025-08-01 18:39:01 +02:00
Evgenii Burmakin
67eb333746
Merge pull request #1599 from Freika/fix/live-map-memory-bloat
Fix/live map memory bloat
2025-08-01 18:18:35 +02:00
Eugene Burmakin
0e8baf493e Extract markers to separate file 2025-08-01 18:05:26 +02:00
Eugene Burmakin
9118fb9604 Update app version 2025-08-01 17:19:39 +02:00
Eugene Burmakin
050b98fb5d Extract live mode to separate file 2025-08-01 17:18:05 +02:00
Eugene Burmakin
eec8706fbe Fix live map memory bloat 2025-08-01 17:03:05 +02:00
Evgenii Burmakin
c51e9627f8
Merge pull request #1594 from Freika/fix/photos-layer
Fix maps layers
2025-08-01 15:58:01 +02:00
Eugene Burmakin
868e5b78ac Remove AWS_ENDPOINT from storage config 2025-08-01 15:57:32 +02:00
Eugene Burmakin
343645b709 Add condition 2025-08-01 15:28:05 +02:00
Eugene Burmakin
d90b09e78a Add force_path_style to storage config 2025-08-01 15:16:55 +02:00
Eugene Burmakin
e1370fc793 Add AWS_ENDPOINT to storage config 2025-08-01 15:08:27 +02:00
Eugene Burmakin
4506d30f42 Fix track builder spec 2025-08-01 14:23:59 +02:00
Eugene Burmakin
712a483fd4 Add e2e tests for map page. 2025-08-01 14:14:46 +02:00
Eugene Burmakin
89de7c5506 Update map e2e tests 2025-07-30 22:38:09 +02:00
Eugene Burmakin
356067b151 Fix e2e map tests 2025-07-30 20:56:22 +02:00
Eugene Burmakin
2f3ba0c8db Merge branch 'dev', remote-tracking branch 'origin' into fix/photos-layer 2025-07-30 19:02:16 +02:00
Evgenii Burmakin
d7c1a7408a
Merge pull request #1589 from Freika/pw/map
Add Playwright tests for map functionality.
2025-07-30 19:01:13 +02:00
Eugene Burmakin
84c35ea5fa Fix maps layers 2025-07-30 19:00:00 +02:00
Eugene Burmakin
087c01535d Add Playwright tests for map functionality. 2025-07-30 00:41:30 +02:00
Evgenii Burmakin
2c4e6b07cf
Merge pull request #1586 from Freika/dev
0.30.6
2025-07-29 21:52:00 +02:00
Evgenii Burmakin
379b1a6377
Merge pull request #1585 from Freika/fix/area-butto
Fix missing areas button
2025-07-29 21:42:13 +02:00
Eugene Burmakin
5f259a5bcc Fix missing areas button 2025-07-29 21:40:49 +02:00
Evgenii Burmakin
a8375c4385
Merge pull request #1579 from Freika/fix/country-name-in-points
Add country_name to points and fix some bugs.
2025-07-29 21:27:29 +02:00
Eugene Burmakin
6870be2045 Fix country name in points 2025-07-29 21:17:33 +02:00
Eugene Burmakin
a2b20cfdf1 Fix tests 2025-07-29 20:14:24 +02:00
Eugene Burmakin
599af37109 Implement language-sided tracks generation 2025-07-28 22:30:36 +02:00
Eugene Burmakin
f492a69fbb Add country_name to points and fix some bugs. 2025-07-28 18:53:19 +02:00
Eugene Burmakin
fb4eedfe92 Add battery statuses. 2025-07-27 21:38:51 +02:00
Evgenii Burmakin
9dfbe8cd11
Merge pull request #1574 from Freika/chore/n-minus-ones
Eliminate some n-plus-ones.
2025-07-27 20:31:47 +02:00
Eugene Burmakin
25b74716ee Fix chart 2025-07-27 20:14:36 +02:00
Eugene Burmakin
d0bb9ef8d1 Add test for places reverse geocoding. 2025-07-27 01:39:39 +02:00
Eugene Burmakin
125f51e77e Update .gitignore. 2025-07-27 01:10:36 +02:00
Eugene Burmakin
66e6112ad8 Eliminate some n-plus-ones. 2025-07-27 01:08:29 +02:00
Evgenii Burmakin
ff2db07eee
Merge pull request #1572 from Freika/dev
0.30.5
2025-07-26 21:06:05 +02:00
Eugene Burmakin
3264725d2a Fix trips page. 2025-07-26 21:05:28 +02:00
Evgenii Burmakin
0a4756a5fd
Merge pull request #1569 from Freika/dev
0.30.4
2025-07-26 15:37:30 +02:00
Eugene Burmakin
b995594b8b Use constants for metrics username and password. 2025-07-26 15:27:22 +02:00
Evgenii Burmakin
f8c509912b
Merge pull request #1567 from Freika/fix/basecamp-gpx
Implement Basecamp GPX import
2025-07-26 15:17:23 +02:00
Evgenii Burmakin
f3d4a1431b
Merge branch 'dev' into fix/basecamp-gpx 2025-07-26 15:17:11 +02:00
Evgenii Burmakin
7f5d84e18f
Merge pull request #1568 from Freika/fix/delete-selected-button
Hide "Delete Selected" button when no points are selected.
2025-07-26 15:16:45 +02:00
Eugene Burmakin
60802a6f44 Disable settings panel functionality spec. 2025-07-26 15:06:08 +02:00
Eugene Burmakin
460d008152 Use Tailwind CSS classes for buttons. 2025-07-26 14:52:01 +02:00
Eugene Burmakin
31b23745f8 Add spec for no points selected. 2025-07-26 14:46:53 +02:00
Eugene Burmakin
e3d3a92faa Hide "Delete Selected" button when no points are selected. 2025-07-26 14:41:03 +02:00
Eugene Burmakin
2e6d1bdef6 Return 0.0 if speed is nil 2025-07-26 13:37:50 +02:00
Eugene Burmakin
b2d8f85d35 Implement Basecamp GPX import 2025-07-26 13:32:13 +02:00
Evgenii Burmakin
b94be44cbf
Merge pull request #1566 from Freika/fix/live-map-checkbox
Fix live map checkbox
2025-07-26 13:11:24 +02:00
Eugene Burmakin
cb9525cb77 Add missing live map info modal. 2025-07-26 13:10:24 +02:00
Eugene Burmakin
e127511262 Fix live map checkbox 2025-07-26 13:06:06 +02:00
Evgenii Burmakin
6fdecb1724
Merge pull request #1564 from Freika/feature/prometheus-exporter
Expose prometheus metrics at /metrics
2025-07-26 12:50:25 +02:00
Eugene Burmakin
b55b1eb018 Merge branch 'dev', remote-tracking branch 'origin' into feature/prometheus-exporter 2025-07-26 12:49:58 +02:00
Evgenii Burmakin
4e93f60eac
Merge pull request #1565 from Freika/fix/warden-in-jobs
Fix/warden in jobs
2025-07-26 12:49:21 +02:00
Eugene Burmakin
5090a52f79 Update app version and changelog 2025-07-26 12:39:30 +02:00
Eugene Burmakin
9c7084a10b Fix request to a user in partial 2025-07-26 12:37:46 +02:00
Eugene Burmakin
17340079ce Expose prometheus metrics at /metrics 2025-07-26 12:14:08 +02:00
Evgenii Burmakin
abe0129d03
Merge pull request #1560 from Freika/dev
0.30.3
2025-07-23 21:07:43 +02:00
Evgenii Burmakin
9631696231
Merge pull request #1559 from Freika/fix/tracks-generator-speedup
Fix/tracks generator speedup
2025-07-23 21:01:58 +02:00
Eugene Burmakin
9fb251fa4a Sanitize input in distanceable 2025-07-23 20:52:02 +02:00
Eugene Burmakin
7920209187 Return tailwind.css 2025-07-23 20:35:42 +02:00
Eugene Burmakin
94f6dbe18e Extract timestamp range calculation to separate methods 2025-07-23 20:27:55 +02:00
Eugene Burmakin
51dd2e0a4b Fix auth rules for export and import 2025-07-23 20:21:33 +02:00
Eugene Burmakin
bf199de2a0 Fix non-selfhosted users export and import 2025-07-23 20:17:07 +02:00
Eugene Burmakin
2e46069fcc Clean up code a bit 2025-07-23 20:08:24 +02:00
Eugene Burmakin
7ea149bd4e Fix specs 2025-07-23 20:02:38 +02:00
Eugene Burmakin
88e3f53cc5 Remove old code 2025-07-23 19:48:39 +02:00
Eugene Burmakin
278a4d28b5 Remove tailwind.css 2025-07-23 19:33:38 +02:00
Eugene Burmakin
4239f5b31a Remove bullet gem 2025-07-23 19:32:51 +02:00
Eugene Burmakin
5a4a5e9625 Add composite index for track generation 2025-07-23 19:30:56 +02:00
Eugene Burmakin
d8033a1e27 Update track generation 2025-07-23 18:21:21 +02:00
Evgenii Burmakin
2ac8fba058
Merge pull request #1554 from Freika/dev
0.30.2
2025-07-23 00:24:16 +02:00
Evgenii Burmakin
4044e77fcd
Merge pull request #1553 from Freika/fix/stats-calculation-performance
Fix stats calculation performance
2025-07-23 00:23:19 +02:00
Eugene Burmakin
25a185b206 Add timezone validation to Stats::DailyDistanceQuery 2025-07-23 00:10:48 +02:00
Eugene Burmakin
dfec1afd7e Remove example migration file 2025-07-23 00:01:41 +02:00
Eugene Burmakin
04a16029a4 Remove benchmark_stats.rb 2025-07-22 23:57:54 +02:00
Eugene Burmakin
bdcfb5eb62 Stats calculation is now timezone-aware. 2025-07-22 23:57:25 +02:00
Eugene Burmakin
9803ccc6a8 Remove unused method 2025-07-22 22:44:41 +02:00
Eugene Burmakin
0c904a6b84 Fix stats calculation performance 2025-07-22 22:41:12 +02:00
Evgenii Burmakin
abfd3be1c5
Merge pull request #1552 from Freika/dev
0.30.1
2025-07-22 20:46:11 +02:00
Eugene Burmakin
bd2558ed29 Enable assets compilation in production 2025-07-22 20:35:45 +02:00
Evgenii Burmakin
685f7eebd2
Merge pull request #1551 from Freika/chore/disable-tracks-generation
Temporary disable track creation
2025-07-22 20:29:03 +02:00
Eugene Burmakin
0bfddd932f Disable specs for track generation 2025-07-22 20:28:46 +02:00
Eugene Burmakin
27857ba078 Disable tracks panel on the map 2025-07-22 20:26:58 +02:00
Eugene Burmakin
7c8a7e7f38 Temporary disable track creation 2025-07-22 20:25:44 +02:00
Evgenii Burmakin
962983aa82
Merge pull request #1498 from Freika/dependabot/bundler/chartkick-5.2.0
Bump chartkick from 5.1.5 to 5.2.0
2025-07-22 20:24:54 +02:00
Evgenii Burmakin
c22b260e28
Merge pull request #1497 from Freika/dependabot/bundler/debug-1.11.0
Bump debug from 1.10.0 to 1.11.0
2025-07-22 20:24:27 +02:00
Evgenii Burmakin
1158444c0a
Merge pull request #1496 from Freika/dependabot/bundler/super_diff-0.16.0
Bump super_diff from 0.15.0 to 0.16.0
2025-07-22 20:23:37 +02:00
Evgenii Burmakin
bf9b0d037a
Merge pull request #1550 from Freika/fix/stats-page-performance
Fix/stats page performance
2025-07-22 20:17:13 +02:00
Eugene Burmakin
c14054fdc3 Disable track generation failure notification for self-hosted users 2025-07-22 20:15:52 +02:00
Eugene Burmakin
cbdef5fa43 Parameterize stats query 2025-07-22 19:56:12 +02:00
Eugene Burmakin
6e5dd4bed6 Update stats query 2025-07-22 19:52:24 +02:00
Eugene Burmakin
58ffca74f6 Remove bullet 2025-07-22 19:44:50 +02:00
Evgenii Burmakin
18aed4a10c
Merge pull request #1542 from Freika/dependabot/bundler/bundler-f02c9c4a61
Bump the bundler group with 2 updates
2025-07-22 19:44:27 +02:00
Eugene Burmakin
da38c12819 Extract stats query 2025-07-22 19:43:27 +02:00
Eugene Burmakin
88909b3e9f Optimize stats page performance 2025-07-22 19:17:28 +02:00
dependabot[bot]
97d6037448
Bump the bundler group with 2 updates
Bumps the bundler group with 2 updates: [nokogiri](https://github.com/sparklemotion/nokogiri) and [thor](https://github.com/rails/thor).


Updates `nokogiri` from 1.18.8 to 1.18.9
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.8...v1.18.9)

Updates `thor` from 1.3.2 to 1.4.0
- [Release notes](https://github.com/rails/thor/releases)
- [Commits](https://github.com/rails/thor/compare/v1.3.2...v1.4.0)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.9
  dependency-type: indirect
  dependency-group: bundler
- dependency-name: thor
  dependency-version: 1.4.0
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 05:39:51 +00:00
Evgenii Burmakin
ed350971ee
Merge pull request #1540 from Freika/fix/place-osm-id-index
Add index on places geodata osm id
2025-07-21 23:30:44 +02:00
Eugene Burmakin
c18b09181e Add index on places geodata osm id 2025-07-21 22:45:57 +02:00
Evgenii Burmakin
7c1c42dfc1
Merge pull request #1539 from Freika/fix/cache-point-limit-result
Add cache to points limit exceeded check
2025-07-21 22:35:22 +02:00
Eugene Burmakin
7afc399724 Add cache to points limit exceeded check 2025-07-21 22:27:20 +02:00
Evgenii Burmakin
3f22162cf0
Merge pull request #1527 from Freika/dev
0.29.2
2025-07-21 20:36:11 +02:00
Eugene Burmakin
2206622726 Release 0.30.0 2025-07-21 20:35:43 +02:00
Eugene Burmakin
9bcd522e25 Update specs 2025-07-21 20:22:18 +02:00
Eugene Burmakin
6a6c3c938f Fix distance calculation 2025-07-21 19:00:28 +02:00
Eugene Burmakin
59a4d760bf Fix owntracks points creation 2025-07-21 18:59:13 +02:00
Eugene Burmakin
fbdf630502 Update changelog 2025-07-20 22:23:08 +02:00
Eugene Burmakin
c74ba7d1fe Revert "Optimize bulk visits suggesting job" 2025-07-20 21:54:00 +02:00
Eugene Burmakin
6ec24ffc3d Optimize bulk visits suggesting job 2025-07-20 21:38:46 +02:00
Eugene Burmakin
b7aa05f4ea Fix specs 2025-07-20 21:29:05 +02:00
Eugene Burmakin
8b03b0c7f5 Recalculate stats after changing distance units 2025-07-20 19:14:20 +02:00
Eugene Burmakin
f969d5d3e6 Clean up some mess 2025-07-20 18:57:53 +02:00
Eugene Burmakin
708bca26eb Fix owntracks point creation 2025-07-20 17:43:55 +02:00
Eugene Burmakin
45713f46dc Fix domain in development and production 2025-07-20 17:31:31 +02:00
Evgenii Burmakin
3149767675
Merge pull request #1531 from Freika/fix/map-tracks-popup
Fix/map tracks popup
2025-07-20 17:31:26 +02:00
Eugene Burmakin
f5c399a8cc Fix domain in development and production 2025-07-20 17:11:11 +02:00
Eugene Burmakin
002b3bd635 Fix settings controller spec and tracks popup 2025-07-20 17:06:45 +02:00
Evgenii Burmakin
5ad660ccd4
Merge pull request #1525 from Freika/fix/tracks-refactoring
Refactor tracks jobs and services
2025-07-17 21:15:29 +02:00
Eugene Burmakin
9d616c7957 Remove logging from tracks generator 2025-07-17 21:02:45 +02:00
Eugene Burmakin
7cdb7d2f21 Add some more tests to make sure points are properly cleaned up 2025-07-17 20:57:55 +02:00
Eugene Burmakin
dc8460a948 Fix tracks create job spec 2025-07-17 20:46:07 +02:00
Eugene Burmakin
91f4cf7c7a Fix range objects in generator 2025-07-17 20:36:21 +02:00
Eugene Burmakin
f5ef2ab9ef Fix potential issue with time range data types 2025-07-17 20:20:14 +02:00
Eugene Burmakin
1f5325d9bb Remove doc file 2025-07-17 19:22:50 +02:00
Eugene Burmakin
10777714b1 Clean up a bit 2025-07-17 19:19:50 +02:00
Eugene Burmakin
eca09ce3eb Remove bulk generator job 2025-07-16 22:25:50 +02:00
Eugene Burmakin
c31d09e5c3 Refactor tracks jobs and services 2025-07-16 22:22:33 +02:00
Eugene Burmakin
54aaf03453 Merge branch 'master' into dev 2025-07-14 21:30:51 +02:00
Eugene Burmakin
49d1e7014b Add simple analytics 2025-07-14 21:26:19 +02:00
Evgenii Burmakin
699504f4e9
Merge pull request #1517 from Freika/fix/api-user-serializer
Add user serializer and update CHANGELOG.md
2025-07-14 21:23:48 +02:00
Eugene Burmakin
878d863569 Fix some tests 2025-07-14 21:15:45 +02:00
Eugene Burmakin
24378b150d Add user serializer and update CHANGELOG.md 2025-07-13 12:50:24 +02:00
Evgenii Burmakin
d2e2e50298
Merge pull request #1515 from Freika/fix/existing-tracks-generation
Fixes for bulk creating job
2025-07-12 23:46:12 +02:00
Eugene Burmakin
7885374993 Refactor Tracks::BulkTrackCreator to use start_at and end_at as datetime objects 2025-07-12 23:45:43 +02:00
Eugene Burmakin
244fb2b192 Move bulk track creation to service 2025-07-12 23:04:15 +02:00
Eugene Burmakin
418df71c53 Fixes for bulk creating job 2025-07-12 22:04:14 +02:00
Evgenii Burmakin
2425b2423a
Merge pull request #1512 from Freika/fix/suggested-places
Fix/suggested places
2025-07-12 18:07:55 +02:00
Eugene Burmakin
43bc8c444c Fix name fetcher 2025-07-12 17:57:22 +02:00
Eugene Burmakin
6b96e1f0be Revert specs 2025-07-12 17:21:53 +02:00
Eugene Burmakin
0dff80e12b Fix some tests 2025-07-12 13:43:15 +02:00
Eugene Burmakin
58a7972976 Fix bulk name fetching job queue 2025-07-12 11:30:51 +02:00
Eugene Burmakin
cf50541be1 Update changelog 2025-07-12 11:23:58 +02:00
Eugene Burmakin
bc36882e73 Add name fetcher for places and visits 2025-07-12 11:21:38 +02:00
Eugene Burmakin
e9eeb6aae2 Add rails-ujs to manifest.js and application.js. 2025-07-10 22:14:52 +02:00
Evgenii Burmakin
bfeb936638
Merge pull request #1488 from Freika/feature/tracks
Feature/tracks
2025-07-09 22:11:31 +02:00
Eugene Burmakin
ee6666e7bf Skip some tests in map interaction spec. 2025-07-09 22:09:27 +02:00
Eugene Burmakin
ceef7702fa Add data migration to recalculate trips distance. 2025-07-09 21:51:48 +02:00
Eugene Burmakin
13fd9da1f9 Add a scheduled job to create tracks for all users for the past 24 hours. 2025-07-09 21:25:56 +02:00
Eugene Burmakin
9a326733c7 Return missing map buttons 2025-07-09 00:58:33 +02:00
Eugene Burmakin
0295d3f2a0 Fix year page charts 2025-07-08 21:23:55 +02:00
Eugene Burmakin
b7e5296235 Fix tracks layer 2025-07-08 21:14:46 +02:00
Eugene Burmakin
f4687a101c Remove unused helper methods 2025-07-08 20:51:51 +02:00
Eugene Burmakin
042696caeb Show correct miles value on the map 2025-07-08 20:31:25 +02:00
Eugene Burmakin
b3e8155e43 Don't use bang save 2025-07-08 20:24:07 +02:00
Eugene Burmakin
f4605989b6 Fix rest of failing tests 2025-07-08 20:04:19 +02:00
Eugene Burmakin
6dd048cee3 Fix a few tests 2025-07-08 19:23:08 +02:00
Eugene Burmakin
f1720b859b Store distance in meters in the database and convert to user's preferred unit on the fly. 2025-07-08 18:10:10 +02:00
Eugene Burmakin
81eb759fb8 Remove tracks api 2025-07-08 00:05:22 +02:00
Eugene Burmakin
e64e706b0f Unify timestamps 2025-07-07 23:38:10 +02:00
Eugene Burmakin
a66f41d9fb Add documentation 2025-07-07 23:12:02 +02:00
Eugene Burmakin
f33dcdfe21 Store track distance in user's preferred unit 2025-07-07 22:23:37 +02:00
Eugene Burmakin
0d657b9d6e Add incremental track generation 2025-07-07 21:48:07 +02:00
Eugene Burmakin
92a15c8ad3 Handle unfinished tracks 2025-07-07 18:59:42 +02:00
dependabot[bot]
4e35cdd305
Bump chartkick from 5.1.5 to 5.2.0
Bumps [chartkick](https://github.com/ankane/chartkick) from 5.1.5 to 5.2.0.
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v5.1.5...v5.2.0)

---
updated-dependencies:
- dependency-name: chartkick
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 16:47:02 +00:00
dependabot[bot]
d0aaa3c674
Bump debug from 1.10.0 to 1.11.0
Bumps [debug](https://github.com/ruby/debug) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.10.0...v1.11.0)

---
updated-dependencies:
- dependency-name: debug
  dependency-version: 1.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 16:31:00 +00:00
dependabot[bot]
90efb5b0bb
Bump super_diff from 0.15.0 to 0.16.0
Bumps [super_diff](https://github.com/splitwise/super_diff) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/splitwise/super_diff/releases)
- [Changelog](https://github.com/splitwise/super_diff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/splitwise/super_diff/compare/v0.15.0...v0.16.0)

---
updated-dependencies:
- dependency-name: super_diff
  dependency-version: 0.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 16:30:16 +00:00
Eugene Burmakin
7619feff69 Add data migration to create tracks from points 2025-07-06 13:49:53 +02:00
Eugene Burmakin
15be46b604 Fix tests 2025-07-04 20:55:05 +02:00
Eugene Burmakin
1468f1f9dc Remove tracks api endpoint 2025-07-04 20:09:06 +02:00
Eugene Burmakin
565f92c463 Add tracks to map 2025-07-04 19:49:56 +02:00
Eugene Burmakin
7bd098b54f Extract tracks calculation to serializer 2025-07-03 20:34:41 +02:00
Eugene Burmakin
862f601e1d Add tracks calculation and storage in the database 2025-07-03 20:18:18 +02:00
Evgenii Burmakin
fd4b785a19
Merge pull request #1486 from Freika/feature/disable-visits-suggestion
Feature/disable visits suggestion
2025-07-02 23:53:09 +02:00
Eugene Burmakin
3b474704ea Fixes for visits suggestions. 2025-07-02 23:50:32 +02:00
Eugene Burmakin
12a53aac20 Don't check for new version in production. 2025-07-02 21:58:19 +02:00
Evgenii Burmakin
b25647879f
Merge pull request #1484 from Freika/dev
0.29.1
2025-07-02 21:54:51 +02:00
Eugene Burmakin
3138a25ab1 Update CHANGELOG.md 2025-07-02 21:50:52 +02:00
Eugene Burmakin
2e825d08e0 Update app version 2025-07-02 21:42:28 +02:00
Eugene Burmakin
48d464d5bb Add parallel gem to Gemfile 2025-07-02 21:38:00 +02:00
Eugene Burmakin
ce720d089a Update app version 2025-07-02 21:23:30 +02:00
Eugene Burmakin
0fcf70834e Allow customizing Redis database numbers for caching, background jobs and websocket connections. 2025-07-02 21:22:31 +02:00
Eugene Burmakin
787dd9cde8 Fix docker-compose.yml 2025-07-02 21:17:29 +02:00
Eugene Burmakin
de8c79395f Fixed imports page buttons in both light and dark mode. #1481 2025-07-02 21:17:29 +02:00
Evgenii Burmakin
e53f509abe
Merge pull request #1428 from tetebueno/patch-4
Using Redis default directory for data
2025-07-02 21:16:17 +02:00
Evgenii Burmakin
5278afef92
Merge pull request #1431 from Freika/dependabot/bundler/factory_bot_rails-6.5.0
Bump factory_bot_rails from 6.4.4 to 6.5.0
2025-07-02 21:13:34 +02:00
Evgenii Burmakin
4140e6ef06
Merge pull request #1473 from Freika/dependabot/bundler/sentry-rails-5.26.0
Bump sentry-rails from 5.24.0 to 5.26.0
2025-07-02 21:13:00 +02:00
Evgenii Burmakin
792f679af9
Merge pull request #1474 from Freika/dependabot/bundler/sentry-ruby-5.26.0
Bump sentry-ruby from 5.24.0 to 5.26.0
2025-07-02 21:12:37 +02:00
dependabot[bot]
f71c5eb620
Bump sentry-ruby from 5.24.0 to 5.26.0
Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 5.24.0 to 5.26.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/5.24.0...5.26.0)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 5.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 18:55:49 +00:00
dependabot[bot]
2a1bd2a183
Bump sentry-rails from 5.24.0 to 5.26.0
Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 5.24.0 to 5.26.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-ruby/compare/5.24.0...5.26.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 5.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 18:55:48 +00:00
Evgenii Burmakin
902718cf8b
Merge pull request #1482 from Freika/dev
0.29.0
2025-07-02 20:54:44 +02:00
Evgenii Burmakin
fd166c2a2f
Merge pull request #1465 from Freika/feature/user-export
Feature/user export
2025-07-02 20:54:02 +02:00
Eugene Burmakin
00be1e8245 Update export data format example 2025-07-02 20:38:38 +02:00
Eugene Burmakin
98467bdbf2 Fix minor issues 2025-07-02 20:29:12 +02:00
Eugene Burmakin
d518603719 Update importing process 2025-07-02 20:22:40 +02:00
Eugene Burmakin
f86487f742 Fix exception reporter 2025-06-30 23:54:45 +02:00
Eugene Burmakin
c75e037a5a Clean up and fix specs 2025-06-30 23:49:07 +02:00
Eugene Burmakin
1ebe2da84a Update changelog 2025-06-30 22:51:25 +02:00
Eugene Burmakin
32a00db9b9 Clean up some code 2025-06-30 22:29:28 +02:00
Eugene Burmakin
d10ca668a9 Map country codes instead of guessing 2025-06-30 22:08:34 +02:00
Eugene Burmakin
cabd63344a Fix failing test 2025-06-30 20:51:18 +02:00
Eugene Burmakin
f37039ad8e Add export and import specs 2025-06-30 20:29:47 +02:00
Eugene Burmakin
aeac8262df Update importing process 2025-06-29 11:49:44 +02:00
Eugene Burmakin
8ad0b20d3d Add import data feature 2025-06-28 12:22:56 +02:00
Eugene Burmakin
4898cd82ac Update specs 2025-06-26 22:05:32 +02:00
Eugene Burmakin
8dd7ba8363 Fix specs 2025-06-26 20:05:26 +02:00
Eugene Burmakin
631ee0e64c Clean up specs a bit 2025-06-26 19:48:42 +02:00
Eugene Burmakin
2088b769d7 Add tests 2025-06-26 19:24:40 +02:00
Eugene Burmakin
22a7d662c9 Update exporting process to use minimal compression for speed/size balance 2025-06-26 00:31:21 +02:00
Eugene Burmakin
dd87f57971 Use as_json to export points data 2025-06-25 22:23:56 +02:00
Eugene Burmakin
36e426433e Extract exporting data to services 2025-06-25 22:23:43 +02:00
Eugene Burmakin
347233dbb2 User export: exporting all data with ids 2025-06-25 21:44:36 +02:00
Eugene Burmakin
7fc2207810 User export: exporting areas, stats, notifications, trips 2025-06-25 21:26:08 +02:00
Eugene Burmakin
6ebf58d7ad Export trips data 2025-06-25 21:21:03 +02:00
Eugene Burmakin
7988fadd5f User export: exporting exports and imports data with files 2025-06-25 21:14:33 +02:00
dependabot[bot]
0a9b45bcac
Bump factory_bot_rails from 6.4.4 to 6.5.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.4 to 6.5.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.4.4...v6.5.0)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-version: 6.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 16:30:33 +00:00
tetebueno
421a20ba8c
Using Redis default directory for data.
For some reason for original Docker compose configuration path `/data` was correct, but for production this directory is used which isn't used by Redis, except if it's configured expressly.

Checked here: https://github.com/redis/docker-library-redis/blob/master/7.4/alpine/Dockerfile#L134
2025-06-16 12:58:39 -03:00
Evgenii Burmakin
131e0eb345
Merge pull request #1408 from Freika/dev
0.28.1
2025-06-11 21:37:21 +02:00
Eugene Burmakin
58e3b65714 Fix notifications scroll 2025-06-11 21:12:03 +02:00
Eugene Burmakin
2d3ca155f2 Merge branch 'dev' 2025-06-09 21:00:43 +02:00
Eugene Burmakin
715a996021 Fix docker-compose.yml 2025-06-09 21:00:19 +02:00
Evgenii Burmakin
6b068f4363
Merge pull request #1389 from Freika/dev
0.28.0
2025-06-09 20:27:42 +02:00
Eugene Burmakin
24e628d2ee Update changelog 2025-06-09 20:16:41 +02:00
Eugene Burmakin
303c08ae06 Update changelog 2025-06-09 20:11:29 +02:00
Eugene Burmakin
dcab905faa Update README 2025-06-09 20:09:03 +02:00
Evgenii Burmakin
efe846f2bb
Merge pull request #1384 from Freika/revert/sidekiq-and-redis
Revert/sidekiq and redis
2025-06-09 20:08:36 +02:00
Evgenii Burmakin
452029b4de
Merge pull request #1388 from Freika/dependabot/bundler/groupdate-6.7.0
Bump groupdate from 6.6.0 to 6.7.0
2025-06-09 19:36:49 +02:00
Evgenii Burmakin
ed2b97384a
Merge pull request #1387 from Freika/dependabot/bundler/gpx-1.2.1
Bump gpx from 1.2.0 to 1.2.1
2025-06-09 19:35:14 +02:00
Evgenii Burmakin
a9b3446047
Merge pull request #1386 from Freika/dependabot/bundler/turbo-rails-2.0.16
Bump turbo-rails from 2.0.13 to 2.0.16
2025-06-09 19:34:33 +02:00
dependabot[bot]
9ec2eb1f95
Bump groupdate from 6.6.0 to 6.7.0
Bumps [groupdate](https://github.com/ankane/groupdate) from 6.6.0 to 6.7.0.
- [Changelog](https://github.com/ankane/groupdate/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/groupdate/compare/v6.6.0...v6.7.0)

---
updated-dependencies:
- dependency-name: groupdate
  dependency-version: 6.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 15:07:32 +00:00
dependabot[bot]
99495af059
Bump gpx from 1.2.0 to 1.2.1
Bumps [gpx](https://github.com/dougfales/gpx) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/dougfales/gpx/releases)
- [Changelog](https://github.com/dougfales/gpx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dougfales/gpx/commits)

---
updated-dependencies:
- dependency-name: gpx
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 15:02:02 +00:00
dependabot[bot]
c63db9c306
Bump turbo-rails from 2.0.13 to 2.0.16
Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.13 to 2.0.16.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.13...v2.0.16)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 15:01:15 +00:00
Eugene Burmakin
c718eba6ef Add release notes 2025-06-09 16:00:34 +02:00
Eugene Burmakin
3d26a49627 Fix redis urls 2025-06-09 14:10:49 +02:00
Eugene Burmakin
1ed01a0c0b Fix some issues and clean up compose files 2025-06-09 14:05:19 +02:00
Eugene Burmakin
e8e4417f2d Remove gems 2025-06-09 13:54:13 +02:00
Eugene Burmakin
767629b21e Remove solid trifecta 2025-06-09 13:50:43 +02:00
Eugene Burmakin
b76602d9c8 Return sidekiq and redis to Dawarich 2025-06-09 13:39:25 +02:00
Eugene Burmakin
c09558a6bd Fixed text size of countries being calculated. 2025-06-09 13:04:04 +02:00
Eugene Burmakin
b6a7896119 Revert cities and countries logic 2025-06-09 12:09:42 +02:00
Evgenii Burmakin
d8516fc4e5
Merge pull request #1374 from Freika/fix/route-popup
Fixed a bug where hovering over a route when another route is clicked…
2025-06-09 12:09:16 +02:00
Evgenii Burmakin
19efd64b42
Merge pull request #1300 from Sea-n/fix-tw-code
Fix ISO3166-Alpha2 for Taiwan
2025-06-09 11:43:43 +02:00
Eugene Burmakin
cb2b2c465b Added minimum password length to 6 characters. #1373 2025-06-09 11:27:32 +02:00
Evgenii Burmakin
8d464214c3
Merge pull request #1380 from Freika/revert-1350-fix_viewport
Revert "fix map container height to fit viewport"
2025-06-09 11:21:05 +02:00
Evgenii Burmakin
f99775994a
Revert "fix map container height to fit viewport" 2025-06-09 11:20:44 +02:00
Evgenii Burmakin
4da1cba18b
Merge pull request #1350 from rtuszik/fix_viewport
fix map container height to fit viewport
2025-06-08 23:45:47 +02:00
Eugene Burmakin
1435f20aa3 Fix missing popup 2025-06-08 23:44:53 +02:00
Eugene Burmakin
1c38f691cf Use geocoder from a private fork for debugging purposes. 2025-06-08 17:02:56 +02:00
Eugene Burmakin
3426f2d66b Fixed a bug where points from Immich and Photoprism did not have lonlat attribute set. #1318 2025-06-08 16:41:01 +02:00
Robin Tuszik
5a0ea4306f fix map container height to fit viewport 2025-06-08 15:31:04 +02:00
Evgenii Burmakin
5f6b957561
Merge pull request #1362 from Freika/dev
0.27.4
2025-06-08 13:19:05 +02:00
Eugene Burmakin
8f4c10240e Update web-entrypoint.sh to use default values for queue database connection parameters 2025-06-08 13:09:34 +02:00
Eugene Burmakin
910a2feefe Update CircleCI config 2025-06-08 13:01:26 +02:00
Eugene Burmakin
0000326498 Update CI config 2025-06-08 12:54:19 +02:00
Eugene Burmakin
4340cc042a Fix SQLite database directory path 2025-06-08 12:44:02 +02:00
Eugene Burmakin
6546da2939 Update compose files 2025-06-08 12:43:05 +02:00
Eugene Burmakin
3f545d5011 Update CHANGELOG.md 2025-06-08 12:36:21 +02:00
Eugene Burmakin
832beffb62 Update CHANGELOG.md 2025-06-08 12:35:53 +02:00
Eugene Burmakin
bded0f4ad9 Update CHANGELOG.md and docker-compose.yml 2025-06-08 12:34:41 +02:00
Eugene Burmakin
ce43b3f1a0 Add missing queue database configuration variables to CHANGELOG.md 2025-06-08 12:07:42 +02:00
Eugene Burmakin
f85eef199f Switch SolidQueue to PostgreSQL 2025-06-06 19:36:36 +02:00
Evgenii Burmakin
e87fc15da3
Merge pull request #1342 from Freika/dev
0.27.3
2025-06-05 21:15:02 +02:00
Eugene Burmakin
b6d21975b8 Fix readme 2025-06-05 21:12:35 +02:00
Evgenii Burmakin
0f7fd301e9
Merge pull request #1330 from Freika/dependabot/bundler/bundler-b051ec43b1
Bump rack from 3.1.15 to 3.1.16 in the bundler group
2025-06-05 21:11:56 +02:00
Eugene Burmakin
3d2666c4ee Fix a few issues and implement location iq support 2025-06-05 21:10:40 +02:00
dependabot[bot]
585ed66a90
Bump rack from 3.1.15 to 3.1.16 in the bundler group
Bumps the bundler group with 1 update: [rack](https://github.com/rack/rack).


Updates `rack` from 3.1.15 to 3.1.16
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.1.15...v3.1.16)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 3.1.16
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 05:31:57 +00:00
Eugene Burmakin
b86aa06bbb Fix rails env call 2025-06-05 00:55:45 +02:00
Evgenii Burmakin
396b9003b0
Merge pull request #1313 from Freika/dev
0.27.2
2025-06-02 23:45:02 +02:00
Evgenii Burmakin
24eaef1ae4
Merge pull request #1304 from Freika/dependabot/bundler/oj-3.16.11
Bump oj from 3.16.10 to 3.16.11
2025-06-02 21:49:01 +02:00
Evgenii Burmakin
9f5bedf525
Merge branch 'dev' into dependabot/bundler/oj-3.16.11 2025-06-02 21:48:52 +02:00
Evgenii Burmakin
4fbee8ad81
Merge pull request #1305 from Freika/dependabot/bundler/data_migrate-11.3.0
Bump data_migrate from 11.2.0 to 11.3.0
2025-06-02 21:47:03 +02:00
Evgenii Burmakin
cc9a798222
Merge pull request #1308 from Freika/dependabot/bundler/dotenv-rails-3.1.8
Bump dotenv-rails from 3.1.7 to 3.1.8
2025-06-02 21:46:25 +02:00
Evgenii Burmakin
03cff3bb29
Merge pull request #1312 from Freika/chore/remove-sidekiq-and-redis
Remove Redis and Sidekiq from Dawarich
2025-06-02 21:38:03 +02:00
Eugene Burmakin
29a74fa08c Update tests 2025-06-02 21:17:06 +02:00
Eugene Burmakin
bad0ba2402 Update changelog 2025-06-02 21:01:18 +02:00
Eugene Burmakin
6d39f4306f Remove Redis and Sidekiq from Dawarich 2025-06-02 20:53:35 +02:00
dependabot[bot]
3f755922ef
Bump dotenv-rails from 3.1.7 to 3.1.8
Bumps [dotenv-rails](https://github.com/bkeepers/dotenv) from 3.1.7 to 3.1.8.
- [Release notes](https://github.com/bkeepers/dotenv/releases)
- [Changelog](https://github.com/bkeepers/dotenv/blob/main/Changelog.md)
- [Commits](https://github.com/bkeepers/dotenv/compare/v3.1.7...v3.1.8)

---
updated-dependencies:
- dependency-name: dotenv-rails
  dependency-version: 3.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 15:02:57 +00:00
dependabot[bot]
84e28c35a5
Bump data_migrate from 11.2.0 to 11.3.0
Bumps [data_migrate](https://github.com/ajvargo/data-migrate) from 11.2.0 to 11.3.0.
- [Release notes](https://github.com/ajvargo/data-migrate/releases)
- [Changelog](https://github.com/ilyakatz/data-migrate/blob/main/Changelog.md)
- [Commits](https://github.com/ajvargo/data-migrate/compare/11.2.0...11.3.0)

---
updated-dependencies:
- dependency-name: data_migrate
  dependency-version: 11.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:58:07 +00:00
dependabot[bot]
5ab260d3c9
Bump oj from 3.16.10 to 3.16.11
Bumps [oj](https://github.com/ohler55/oj) from 3.16.10 to 3.16.11.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.10...v3.16.11)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:50:30 +00:00
Sean Wei
62c1125241 Fix ISO3166-Alpha2 for Taiwan 2025-06-01 19:54:50 -04:00
Evgenii Burmakin
52fd8982d8
Merge pull request #1294 from Freika/dev
0.27.1
2025-06-01 15:34:34 +02:00
Eugene Burmakin
296e2c08fa Move cache jobs to initializers 2025-06-01 15:31:53 +02:00
Evgenii Burmakin
c6ba487617
Merge pull request #1290 from Freika/dev
0.27.0
2025-06-01 11:56:43 +02:00
Eugene Burmakin
06042708c8 Update CHANGELOG.md 2025-05-31 23:36:51 +02:00
Eugene Burmakin
48eb55f621 Update changelog and add a spec 2025-05-31 21:58:50 +02:00
975 changed files with 139331 additions and 6101 deletions

View file

@ -1 +1 @@
0.27.0
0.37.2

View file

@ -7,14 +7,19 @@ orbs:
jobs:
test:
docker:
- image: cimg/ruby:3.4.1-browsers
- image: cimg/ruby:3.4.6-browsers
environment:
RAILS_ENV: test
CI: true
DATABASE_HOST: localhost
DATABASE_NAME: dawarich_test
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: mysecretpassword
DATABASE_PORT: 5432
- image: cimg/postgres:13.3-postgis
environment:
POSTGRES_USER: postgres
POSTGRES_DB: test_database
POSTGRES_DB: dawarich_test
POSTGRES_PASSWORD: mysecretpassword
- image: redis:7.0
- image: selenium/standalone-chrome:latest
@ -40,8 +45,10 @@ jobs:
- run:
name: Database Setup
command: |
bundle exec rails db:create
bundle exec rails db:schema:load
bundle exec rails db:create RAILS_ENV=test
bundle exec rails db:schema:load RAILS_ENV=test
# Create the queue database manually if it doesn't exist
PGPASSWORD=mysecretpassword createdb -h localhost -U postgres dawarich_test_queue || true
- run:
name: Run RSpec tests
command: bundle exec rspec

View file

@ -1,5 +1,5 @@
# Base-Image for Ruby and Node.js
FROM ruby:3.4.1-alpine
FROM ruby:3.4.6-alpine
ENV APP_PATH=/var/app
ENV BUNDLE_VERSION=2.5.21

View file

@ -19,7 +19,7 @@ services:
tty: true
environment:
RAILS_ENV: development
REDIS_URL: redis://dawarich_redis:6379/0
REDIS_URL: redis://dawarich_redis:6379
DATABASE_HOST: dawarich_db
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: password

View file

@ -3,4 +3,7 @@ DATABASE_USERNAME=postgres
DATABASE_PASSWORD=password
DATABASE_NAME=dawarich_development
DATABASE_PORT=5432
REDIS_URL=redis://localhost:6379/1
REDIS_URL=redis://localhost:6379
# Fix for macOS fork() issues with Sidekiq
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

View file

View file

@ -3,4 +3,4 @@ DATABASE_USERNAME=postgres
DATABASE_PASSWORD=password
DATABASE_NAME=dawarich_test
DATABASE_PORT=5432
REDIS_URL=redis://localhost:6379/1
REDIS_URL=redis://localhost:6379

View file

@ -7,6 +7,8 @@ assignees: ''
---
**BEFORE OPENING AN ISSUE, MAKE SURE YOU READ THIS: https://github.com/Freika/dawarich/issues/1382**
**OS & Hardware**
Provide your software and hardware specs
@ -30,7 +32,7 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Logs**
If applicable, add logs from containers `dawarich_app` and `dawarich_sidekiq` to help explain your problem.
If applicable, add logs from the `dawarich_app` container to help explain your problem.
**Additional context**
Add any other context about the problem here.

View file

@ -71,8 +71,8 @@ jobs:
TAGS="freikin/dawarich:${VERSION}"
# Set platforms based on release type
PLATFORMS="linux/amd64,linux/arm64,linux/arm/v8,linux/arm/v7,linux/arm/v6"
# Set platforms based on version type and release type
PLATFORMS="linux/amd64,linux/arm64,linux/arm/v8,linux/arm/v7"
# Add :rc tag for pre-releases
if [ "${{ github.event.release.prerelease }}" = "true" ]; then
@ -96,7 +96,7 @@ jobs:
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/Dockerfile.dev
file: ./docker/Dockerfile
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View file

@ -19,7 +19,6 @@ jobs:
ports:
- 5432:5432
options: --health-cmd="pg_isready" --health-interval=10s --health-timeout=5s --health-retries=3
redis:
image: redis
ports:
@ -35,7 +34,7 @@ jobs:
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4.1'
ruby-version: '3.4.6'
bundler-cache: true
- name: Set up Node.js

9
.gitignore vendored
View file

@ -65,6 +65,7 @@
.dotnet/
.cursorrules
.cursormemory.md
.serena/**/*
/config/credentials/production.key
/config/credentials/production.yml.enc
@ -76,3 +77,11 @@ Makefile
/db/*.sqlite3
/db/*.sqlite3-shm
/db/*.sqlite3-wal
# Playwright
node_modules/
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
/e2e/temp/

View file

@ -1 +1 @@
3.4.1
3.4.6

26
AGENTS.md Normal file
View file

@ -0,0 +1,26 @@
# Repository Guidelines
## Project Structure & Module Organization
Dawarich is a Rails 8 monolith. Controllers, models, jobs, services, policies, and Stimulus/Turbo JS live in `app/`, while shared POROs sit in `lib/`. Configuration, credentials, and cron/Sidekiq settings live in `config/`; API documentation assets are in `swagger/`. Database migrations and seeds live in `db/`, Docker tooling sits in `docker/`, and docs or media live in `docs/` and `screenshots/`. Runtime artifacts in `storage/`, `tmp/`, and `log/` stay untracked.
## Architecture & Key Services
The stack pairs Rails 8 with PostgreSQL + PostGIS, Redis-backed Sidekiq, Devise/Pundit, Tailwind + DaisyUI, and Leaflet/Chartkick. Imports, exports, sharing, and trip analytics lean on PostGIS geometries plus workers, so queue anything non-trivial instead of blocking requests.
## Build, Test, and Development Commands
- `docker compose -f docker/docker-compose.yml up` — launches the full stack for smoke tests.
- `bundle exec rails db:prepare` — create/migrate the PostGIS database.
- `bundle exec bin/dev` and `bundle exec sidekiq` — start the web/Vite/Tailwind stack and workers locally.
- `make test` — runs Playwright (`npx playwright test e2e --workers=1`) then `bundle exec rspec`.
- `bundle exec rubocop` / `npx prettier --check app/javascript` — enforce formatting before commits.
## Coding Style & Naming Conventions
Use two-space indentation, snake_case filenames, and CamelCase classes. Keep Stimulus controllers under `app/javascript/controllers/*_controller.ts` so names match DOM `data-controller` hooks. Prefer service objects in `app/services/` for multi-step imports/exports, and let migrations named like `202405061210_add_indexes_to_events` manage schema changes. Follow Tailwind ordering conventions and avoid bespoke CSS unless necessary.
## Testing Guidelines
RSpec mirrors the app hierarchy inside `spec/` with files suffixed `_spec.rb`; rely on FactoryBot/FFaker for data, WebMock for HTTP, and SimpleCov for coverage. Browser journeys live in `e2e/` and should use `data-testid` selectors plus seeded demo data to reset state. Run `make test` before pushing and document intentional gaps when coverage dips.
## Commit & Pull Request Guidelines
Write short, imperative commit subjects (`Add globe_projection setting`) and include the PR/issue reference like `(#2138)` when relevant. Target `dev`, describe migrations, configs, and verification steps, and attach screenshots or curl examples for UI/API work. Link related Discussions for larger changes and request review from domain owners (imports, sharing, trips, etc.).
## Security & Configuration Tips
Start from `.env.example` or `.env.template` and store secrets in encrypted Rails credentials; never commit files from `gps-env/` or real trace data. Rotate API keys, scrub sensitive coordinates in fixtures, and use the synthetic traces in `db/seeds.rb` when demonstrating imports.

File diff suppressed because it is too large Load diff

296
CLAUDE.md Normal file
View file

@ -0,0 +1,296 @@
# CLAUDE.md - Dawarich Development Guide
This file contains essential information for Claude to work effectively with the Dawarich codebase.
## Project Overview
**Dawarich** is a self-hostable web application built with Ruby on Rails 8.0 that serves as a replacement for Google Timeline (Google Location History). It allows users to track, visualize, and analyze their location data through an interactive web interface.
### Key Features
- Location history tracking and visualization
- Interactive maps with multiple layers (heatmap, points, lines, fog of war)
- Import from various sources (Google Maps Timeline, OwnTracks, Strava, GPX, GeoJSON, photos)
- Export to GeoJSON and GPX formats
- Statistics and analytics (countries visited, distance traveled, etc.)
- Public sharing of monthly statistics with time-based expiration
- Trips management with photo integration
- Areas and visits tracking
- Integration with photo management systems (Immich, Photoprism)
## Technology Stack
### Backend
- **Framework**: Ruby on Rails 8.0
- **Database**: PostgreSQL with PostGIS extension
- **Background Jobs**: Sidekiq with Redis
- **Authentication**: Devise
- **Authorization**: Pundit
- **API Documentation**: rSwag (Swagger)
- **Monitoring**: Prometheus, Sentry
- **File Processing**: AWS S3 integration
### Frontend
- **CSS Framework**: Tailwind CSS with DaisyUI components
- **JavaScript**: Stimulus, Turbo Rails, Hotwired
- **Maps**: Leaflet.js
- **Charts**: Chartkick
### Key Gems
- `activerecord-postgis-adapter` - PostgreSQL PostGIS support
- `geocoder` - Geocoding services
- `rgeo` - Ruby Geometric Library
- `gpx` - GPX file processing
- `parallel` - Parallel processing
- `sidekiq` - Background job processing
- `chartkick` - Chart generation
## Project Structure
```
├── app/
│ ├── controllers/ # Rails controllers
│ ├── models/ # ActiveRecord models with PostGIS support
│ ├── views/ # ERB templates
│ ├── services/ # Business logic services
│ ├── jobs/ # Sidekiq background jobs
│ ├── queries/ # Database query objects
│ ├── policies/ # Pundit authorization policies
│ ├── serializers/ # API response serializers
│ ├── javascript/ # Stimulus controllers and JS
│ └── assets/ # CSS and static assets
├── config/ # Rails configuration
├── db/ # Database migrations and seeds
├── docker/ # Docker configuration
├── spec/ # RSpec test suite
└── swagger/ # API documentation
```
## Core Models
### Primary Models
- **User**: Authentication and user management
- **Point**: Individual location points with coordinates and timestamps
- **Track**: Collections of related points forming routes
- **Area**: Geographic areas drawn by users
- **Visit**: Detected visits to areas
- **Trip**: User-defined travel periods with analytics
- **Import**: Data import operations
- **Export**: Data export operations
- **Stat**: Calculated statistics and metrics with public sharing capabilities
### Geographic Features
- Uses PostGIS for advanced geographic queries
- Implements distance calculations and spatial relationships
- Supports various coordinate systems and projections
## Development Environment
### Setup
1. **Docker Development**: Use `docker-compose -f docker/docker-compose.yml up`
2. **DevContainer**: VS Code devcontainer support available
3. **Local Development**:
- `bundle exec rails db:prepare`
- `bundle exec sidekiq` (background jobs)
- `bundle exec bin/dev` (main application)
### Default Credentials
- Username: `demo@dawarich.app`
- Password: `password`
## Testing
### Test Suite
- **Framework**: RSpec
- **System Tests**: Capybara + Selenium WebDriver
- **E2E Tests**: Playwright
- **Coverage**: SimpleCov
- **Factories**: FactoryBot
- **Mocking**: WebMock
### Test Commands
```bash
bundle exec rspec # Run all specs
bundle exec rspec spec/models/ # Model specs only
npx playwright test # E2E tests
```
## Background Jobs
### Sidekiq Jobs
- **Import Jobs**: Process uploaded location data files
- **Calculation Jobs**: Generate statistics and analytics
- **Notification Jobs**: Send user notifications
- **Photo Processing**: Extract EXIF data from photos
### Key Job Classes
- `Tracks::ParallelGeneratorJob` - Generate track data in parallel
- Various import jobs for different data sources
- Statistical calculation jobs
## Public Sharing System
### Overview
Dawarich includes a comprehensive public sharing system that allows users to share their monthly statistics with others without requiring authentication. This feature enables users to showcase their location data while maintaining privacy control through configurable expiration settings.
### Key Features
- **Time-based expiration**: Share links can expire after 1 hour, 12 hours, 24 hours, or be permanent
- **UUID-based access**: Each shared stat has a unique, unguessable UUID for security
- **Public API endpoints**: Hexagon map data can be accessed via API without authentication when sharing is enabled
- **Automatic cleanup**: Expired shares are automatically inaccessible
- **Privacy controls**: Users can enable/disable sharing and regenerate sharing URLs at any time
### Technical Implementation
- **Database**: `sharing_settings` (JSONB) and `sharing_uuid` (UUID) columns on `stats` table
- **Routes**: `/shared/month/:uuid` for public viewing, `/stats/:year/:month/sharing` for management
- **API**: `/api/v1/maps/hexagons` supports public access via `uuid` parameter
- **Controllers**: `Shared::StatsController` handles public views, sharing management integrated into existing stats flow
### Security Features
- **No authentication bypass**: Public sharing only exposes specifically designed endpoints
- **UUID-based access**: Sharing URLs use unguessable UUIDs rather than sequential IDs
- **Expiration enforcement**: Automatic expiration checking prevents access to expired shares
- **Limited data exposure**: Only monthly statistics and hexagon data are publicly accessible
### Usage Patterns
- **Social sharing**: Users can share interesting travel months with friends and family
- **Portfolio/showcase**: Travel bloggers and photographers can showcase location statistics
- **Data collaboration**: Researchers can share aggregated location data for analysis
- **Public demonstrations**: Demo instances can provide public examples without compromising user data
## API Documentation
- **Framework**: rSwag (Swagger/OpenAPI)
- **Location**: `/api-docs` endpoint
- **Authentication**: API key (Bearer) for API access, UUID-based access for public shares
## Database Schema
### Key Tables
- `users` - User accounts and settings
- `points` - Location points with PostGIS geometry
- `tracks` - Route collections
- `areas` - User-defined geographic areas
- `visits` - Detected area visits
- `trips` - Travel periods
- `imports`/`exports` - Data transfer operations
- `stats` - Calculated metrics with sharing capabilities (`sharing_settings`, `sharing_uuid`)
### PostGIS Integration
- Extensive use of PostGIS geometry types
- Spatial indexes for performance
- Geographic calculations and queries
## Configuration
### Environment Variables
See `.env.template` for available configuration options including:
- Database configuration
- Redis settings
- AWS S3 credentials
- External service integrations
- Feature flags
### Key Config Files
- `config/database.yml` - Database configuration
- `config/sidekiq.yml` - Background job settings
- `config/schedule.yml` - Cron job schedules
- `docker/docker-compose.yml` - Development environment
## Deployment
### Docker
- Production: `docker/docker-compose.production.yml`
- Development: `docker/docker-compose.yml`
- Multi-stage Docker builds supported
### Procfiles
- `Procfile` - Production Heroku deployment
- `Procfile.dev` - Development with Foreman
- `Procfile.production` - Production processes
## Code Quality
### Tools
- **Linting**: RuboCop with Rails extensions
- **Security**: Brakeman, bundler-audit
- **Dependencies**: Strong Migrations for safe database changes
- **Performance**: Stackprof for profiling
### Commands
```bash
bundle exec rubocop # Code linting
bundle exec brakeman # Security scan
bundle exec bundle-audit # Dependency security
```
## Important Notes for Development
1. **Location Data**: Always handle location data with appropriate precision and privacy considerations
2. **PostGIS**: Leverage PostGIS features for geographic calculations rather than Ruby-based solutions
2.1 **Coordinates**: Use `lonlat` column in `points` table for geographic calculations
3. **Background Jobs**: Use Sidekiq for any potentially long-running operations
4. **Testing**: Include both unit and integration tests for location-based features
5. **Performance**: Consider database indexes for geographic queries
6. **Security**: Never log or expose user location data inappropriately
7. **Public Sharing**: When implementing features that interact with stats, consider public sharing access patterns:
- Use `public_accessible?` method to check if a stat can be publicly accessed
- Support UUID-based access in API endpoints when appropriate
- Respect expiration settings and disable sharing when expired
- Only expose minimal necessary data in public sharing contexts
### Route Drawing Implementation (Critical)
⚠️ **IMPORTANT: Unit Mismatch in Route Splitting Logic**
Both Map v1 (Leaflet) and Map v2 (MapLibre) contain an **intentional unit mismatch** in route drawing that must be preserved for consistency:
**The Issue**:
- `haversineDistance()` function returns distance in **kilometers** (e.g., 0.5 km)
- Route splitting threshold is stored and compared as **meters** (e.g., 500)
- The code compares them directly: `0.5 > 500` = always **FALSE**
**Result**:
- The distance threshold (`meters_between_routes` setting) is **effectively disabled**
- Routes only split on **time gaps** (default: 60 minutes between points)
- This creates longer, more continuous routes that users expect
**Code Locations**:
- **Map v1**: `app/javascript/maps/polylines.js:390`
- Uses `haversineDistance()` from `maps/helpers.js` (returns km)
- Compares to `distanceThresholdMeters` variable (value in meters)
- **Map v2**: `app/javascript/maps_maplibre/layers/routes_layer.js:82-104`
- Has built-in `haversineDistance()` method (returns km)
- Intentionally skips `/1000` conversion to replicate v1 behavior
- Comment explains this is matching v1's unit mismatch
**Critical Rules**:
1. ❌ **DO NOT "fix" the unit mismatch** - this would break user expectations
2. ✅ **Keep both versions synchronized** - they must behave identically
3. ✅ **Document any changes** - route drawing changes affect all users
4. ⚠️ If you ever fix this bug:
- You MUST update both v1 and v2 simultaneously
- You MUST migrate user settings (multiply existing values by 1000 or divide by 1000 depending on direction)
- You MUST communicate the breaking change to users
**Additional Route Drawing Details**:
- **Time threshold**: 60 minutes (default) - actually functional
- **Distance threshold**: 500 meters (default) - currently non-functional due to unit bug
- **Sorting**: Map v2 sorts points by timestamp client-side; v1 relies on backend ASC order
- **API ordering**: Map v2 must request `order: 'asc'` to match v1's chronological data flow
## Contributing
- **Main Branch**: `master`
- **Development**: `dev` branch for pull requests
- **Issues**: GitHub Issues for bug reports
- **Discussions**: GitHub Discussions for feature requests
- **Community**: Discord server for questions
## Resources
- **Documentation**: https://dawarich.app/docs/
- **Repository**: https://github.com/Freika/dawarich
- **Discord**: https://discord.gg/pHsBjpt5J8
- **Changelog**: See CHANGELOG.md for version history
- **Development Setup**: See DEVELOPMENT.md

57
Gemfile
View file

@ -5,54 +5,62 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby File.read('.ruby-version').strip
gem 'activerecord-postgis-adapter', '11.0'
# https://meta.discourse.org/t/cant-rebuild-due-to-aws-sdk-gem-bump-and-new-aws-data-integrity-protections/354217/40
gem 'aws-sdk-s3', '~> 1.177.0', require: false
gem 'aws-sdk-core', '~> 3.215.1', require: false
gem 'aws-sdk-kms', '~> 1.96.0', require: false
gem 'aws-sdk-s3', '~> 1.177.0', require: false
gem 'bootsnap', require: false
gem 'chartkick'
gem 'connection_pool', '< 3' # Pin to 2.x - version 3.0+ has breaking API changes with Rails RedisCacheStore
gem 'data_migrate'
gem 'devise'
gem 'geocoder'
gem 'foreman'
gem 'geocoder', github: 'Freika/geocoder', branch: 'master'
gem 'gpx'
gem 'groupdate'
gem 'h3', '~> 3.7'
gem 'httparty'
gem 'importmap-rails'
gem 'jwt', '~> 2.8'
gem 'kaminari'
gem 'lograge'
gem 'mission_control-jobs'
gem 'oj'
gem 'omniauth-github', '~> 2.0.0'
gem 'omniauth-google-oauth2'
gem 'omniauth_openid_connect'
gem 'omniauth-rails_csrf_protection'
gem 'parallel'
gem 'pg'
gem 'sqlite3', '~> 2.6'
gem 'prometheus_exporter'
gem 'activerecord-postgis-adapter'
gem 'puma'
gem 'pundit'
gem 'pundit', '>= 2.5.1'
gem 'rails', '~> 8.0'
gem 'rails_icons'
gem 'rails_pulse'
gem 'redis'
gem 'rexml'
gem 'rgeo'
gem 'rgeo-activerecord'
gem 'rgeo-activerecord', '~> 8.0.0'
gem 'rgeo-geojson'
gem 'rqrcode', '~> 3.0'
gem 'rswag-api'
gem 'rswag-ui'
gem 'rubyzip', '~> 3.2'
gem 'sentry-rails', '>= 5.27.0'
gem 'sentry-ruby'
gem 'sentry-rails'
gem 'stackprof'
gem 'sidekiq'
gem 'sidekiq-cron'
gem 'sidekiq', '8.0.10' # Pin to 8.0.x - sidekiq 8.1+ requires connection_pool 3.0+ which has breaking changes with Rails
gem 'sidekiq-cron', '>= 2.3.1'
gem 'sidekiq-limit_fetch'
gem 'sprockets-rails'
gem 'stackprof'
gem 'stimulus-rails'
gem 'strong_migrations'
gem 'solid_cable', '~> 3.0'
gem 'solid_cache', '1.0.7'
gem 'solid_queue', '~> 1.1'
gem 'tailwindcss-rails'
gem 'turbo-rails'
gem 'tailwindcss-rails', '= 3.3.2'
gem 'turbo-rails', '>= 2.0.17'
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
gem 'jwt'
gem 'with_advisory_lock'
group :development, :test do
group :development, :test, :staging do
gem 'brakeman', require: false
gem 'bundler-audit', require: false
gem 'debug', platforms: %i[mri mingw x64_mingw]
@ -61,7 +69,7 @@ group :development, :test do
gem 'ffaker'
gem 'pry-byebug'
gem 'pry-rails'
gem 'rspec-rails'
gem 'rspec-rails', '>= 8.0.1'
gem 'rswag-specs'
end
@ -76,10 +84,7 @@ group :test do
end
group :development do
gem 'database_consistency', require: false
gem 'foreman'
gem 'rubocop-rails', require: false
gem 'database_consistency', '>= 2.0.5', require: false
gem 'rubocop-rails', '>= 2.33.4', require: false
gem 'strong_migrations', '>= 2.4.0'
end
# Use Redis for Action Cable
gem 'redis'

View file

@ -1,29 +1,38 @@
GIT
remote: https://github.com/Freika/geocoder.git
revision: 12ac3e659fc5b57c1ffd12f04b8cad2f73d0939c
branch: master
specs:
geocoder (1.8.5)
base64 (>= 0.1.0)
csv (>= 3.0.0)
GEM
remote: https://rubygems.org/
specs:
actioncable (8.0.2)
actionpack (= 8.0.2)
activesupport (= 8.0.2)
actioncable (8.0.3)
actionpack (= 8.0.3)
activesupport (= 8.0.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (8.0.2)
actionpack (= 8.0.2)
activejob (= 8.0.2)
activerecord (= 8.0.2)
activestorage (= 8.0.2)
activesupport (= 8.0.2)
actionmailbox (8.0.3)
actionpack (= 8.0.3)
activejob (= 8.0.3)
activerecord (= 8.0.3)
activestorage (= 8.0.3)
activesupport (= 8.0.3)
mail (>= 2.8.0)
actionmailer (8.0.2)
actionpack (= 8.0.2)
actionview (= 8.0.2)
activejob (= 8.0.2)
activesupport (= 8.0.2)
actionmailer (8.0.3)
actionpack (= 8.0.3)
actionview (= 8.0.3)
activejob (= 8.0.3)
activesupport (= 8.0.3)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (8.0.2)
actionview (= 8.0.2)
activesupport (= 8.0.2)
actionpack (8.0.3)
actionview (= 8.0.3)
activesupport (= 8.0.3)
nokogiri (>= 1.8.5)
rack (>= 2.2.4)
rack-session (>= 1.0.1)
@ -31,38 +40,38 @@ GEM
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (8.0.2)
actionpack (= 8.0.2)
activerecord (= 8.0.2)
activestorage (= 8.0.2)
activesupport (= 8.0.2)
actiontext (8.0.3)
actionpack (= 8.0.3)
activerecord (= 8.0.3)
activestorage (= 8.0.3)
activesupport (= 8.0.3)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (8.0.2)
activesupport (= 8.0.2)
actionview (8.0.3)
activesupport (= 8.0.3)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (8.0.2)
activesupport (= 8.0.2)
activejob (8.0.3)
activesupport (= 8.0.3)
globalid (>= 0.3.6)
activemodel (8.0.2)
activesupport (= 8.0.2)
activerecord (8.0.2)
activemodel (= 8.0.2)
activesupport (= 8.0.2)
activemodel (8.0.3)
activesupport (= 8.0.3)
activerecord (8.0.3)
activemodel (= 8.0.3)
activesupport (= 8.0.3)
timeout (>= 0.4.0)
activerecord-postgis-adapter (11.0.0)
activerecord (~> 8.0.0)
rgeo-activerecord (~> 8.0.0)
activestorage (8.0.2)
actionpack (= 8.0.2)
activejob (= 8.0.2)
activerecord (= 8.0.2)
activesupport (= 8.0.2)
activestorage (8.0.3)
actionpack (= 8.0.3)
activejob (= 8.0.3)
activerecord (= 8.0.3)
activesupport (= 8.0.3)
marcel (~> 1.0)
activesupport (8.0.2)
activesupport (8.0.3)
base64
benchmark (>= 0.3)
bigdecimal
@ -77,8 +86,10 @@ GEM
uri (>= 0.13.1)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
aes_key_wrap (1.1.0)
ast (2.4.3)
attr_extras (7.1.0)
attr_required (1.0.2)
aws-eventstream (1.3.2)
aws-partitions (1.1072.0)
aws-sdk-core (3.215.1)
@ -95,13 +106,14 @@ GEM
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-eventstream (~> 1, >= 1.0.2)
base64 (0.2.0)
base64 (0.3.0)
bcrypt (3.1.20)
benchmark (0.4.0)
bigdecimal (3.1.9)
benchmark (0.5.0)
bigdecimal (4.0.1)
bindata (2.5.1)
bootsnap (1.18.6)
msgpack (~> 1.2)
brakeman (7.0.2)
brakeman (7.1.1)
racc
builder (3.3.0)
bundler-audit (0.9.2)
@ -117,25 +129,27 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
chartkick (5.1.5)
chartkick (5.2.1)
chunky_png (1.4.0)
coderay (1.1.3)
concurrent-ruby (1.3.5)
connection_pool (2.5.3)
crack (1.0.0)
concurrent-ruby (1.3.6)
connection_pool (2.5.5)
crack (1.0.1)
bigdecimal
rexml
crass (1.0.6)
cronex (0.15.0)
tzinfo
unicode (>= 0.4.4.5)
css-zero (1.1.15)
csv (3.3.4)
data_migrate (11.2.0)
data_migrate (11.3.1)
activerecord (>= 6.1)
railties (>= 6.1)
database_consistency (2.0.4)
database_consistency (2.0.6)
activerecord (>= 3.2)
date (3.4.1)
debug (1.10.0)
date (3.5.0)
debug (1.11.0)
irb (~> 1.10)
reline (>= 0.3.8)
devise (4.9.4)
@ -146,54 +160,81 @@ GEM
warden (~> 1.2.3)
diff-lcs (1.6.2)
docile (1.4.1)
dotenv (3.1.7)
dotenv-rails (3.1.7)
dotenv (= 3.1.7)
dotenv (3.1.8)
dotenv-rails (3.1.8)
dotenv (= 3.1.8)
railties (>= 6.1)
drb (2.2.3)
erb (5.0.1)
email_validator (2.2.4)
activemodel
erb (6.0.0)
erubi (1.13.1)
et-orbi (1.2.11)
et-orbi (1.4.0)
tzinfo
factory_bot (6.5.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.4.4)
factory_bot (6.5.5)
activesupport (>= 6.1.0)
factory_bot_rails (6.5.1)
factory_bot (~> 6.5)
railties (>= 5.0.0)
railties (>= 6.1.0)
fakeredis (0.1.4)
ffaker (2.24.0)
foreman (0.88.1)
fugit (1.11.1)
et-orbi (~> 1, >= 1.2.11)
faraday (2.14.0)
faraday-net_http (>= 2.0, < 3.5)
json
logger
faraday-follow_redirects (0.4.0)
faraday (>= 1, < 3)
faraday-net_http (3.4.1)
net-http (>= 0.5.0)
ffaker (2.25.0)
ffi (1.17.2-aarch64-linux-gnu)
ffi (1.17.2-arm-linux-gnu)
ffi (1.17.2-arm64-darwin)
ffi (1.17.2-x86-linux-gnu)
ffi (1.17.2-x86_64-darwin)
ffi (1.17.2-x86_64-linux-gnu)
foreman (0.90.0)
thor (~> 1.4)
fugit (1.12.1)
et-orbi (~> 1.4)
raabro (~> 1.4)
geocoder (1.8.5)
base64 (>= 0.1.0)
csv (>= 3.0.0)
globalid (1.2.1)
globalid (1.3.0)
activesupport (>= 6.1)
gpx (1.2.0)
gpx (1.2.1)
csv
nokogiri (~> 1.7)
rake
groupdate (6.6.0)
groupdate (6.7.0)
activesupport (>= 7.1)
hashdiff (1.1.2)
h3 (3.7.4)
ffi (~> 1.9)
rgeo-geojson (~> 2.1)
zeitwerk (~> 2.5)
hashdiff (1.2.1)
hashie (5.0.0)
httparty (0.23.1)
csv
mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2)
i18n (1.14.7)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
importmap-rails (2.1.0)
importmap-rails (2.2.2)
actionpack (>= 6.0.0)
activesupport (>= 6.0.0)
railties (>= 6.0.0)
io-console (0.8.0)
irb (1.15.2)
io-console (0.8.1)
irb (1.15.3)
pp (>= 0.6.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jmespath (1.6.2)
json (2.12.0)
json (2.18.0)
json-jwt (1.17.0)
activesupport (>= 4.2)
aes_key_wrap
base64
bindata
faraday (~> 2.0)
faraday-follow_redirects
json-schema (5.0.1)
addressable (~> 2.8)
jwt (2.10.1)
@ -221,32 +262,26 @@ GEM
loofah (2.24.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
mail (2.9.0)
logger
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
marcel (1.0.4)
marcel (1.1.0)
matrix (0.4.2)
method_source (1.1.0)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
minitest (5.25.5)
mission_control-jobs (1.0.2)
actioncable (>= 7.1)
actionpack (>= 7.1)
activejob (>= 7.1)
activerecord (>= 7.1)
importmap-rails (>= 1.2.1)
irb (~> 1.13)
railties (>= 7.1)
stimulus-rails
turbo-rails
minitest (6.0.1)
prism (~> 1.5)
msgpack (1.7.3)
multi_json (1.15.0)
multi_xml (0.7.1)
bigdecimal (~> 3.1)
net-imap (0.5.8)
multi_xml (0.8.0)
bigdecimal (>= 3.1, < 5)
net-http (0.6.0)
uri
net-imap (0.5.12)
date
net-protocol
net-pop (0.1.2)
@ -256,36 +291,86 @@ GEM
net-smtp (0.5.1)
net-protocol
nio4r (2.7.4)
nokogiri (1.18.8)
nokogiri (1.18.10)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.18.8-aarch64-linux-gnu)
nokogiri (1.18.10-aarch64-linux-gnu)
racc (~> 1.4)
nokogiri (1.18.8-arm-linux-gnu)
nokogiri (1.18.10-arm-linux-gnu)
racc (~> 1.4)
nokogiri (1.18.8-arm64-darwin)
nokogiri (1.18.10-arm64-darwin)
racc (~> 1.4)
nokogiri (1.18.8-x86_64-darwin)
nokogiri (1.18.10-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.18.8-x86_64-linux-gnu)
nokogiri (1.18.10-x86_64-linux-gnu)
racc (~> 1.4)
oj (3.16.10)
oauth2 (2.0.17)
faraday (>= 0.17.3, < 4.0)
jwt (>= 1.0, < 4.0)
logger (~> 1.2)
multi_xml (~> 0.5)
rack (>= 1.2, < 4)
snaky_hash (~> 2.0, >= 2.0.3)
version_gem (~> 1.1, >= 1.1.9)
oj (3.16.11)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
optimist (3.2.0)
omniauth (2.1.4)
hashie (>= 3.4.6)
logger
rack (>= 2.2.3)
rack-protection
omniauth-github (2.0.1)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.8)
omniauth-google-oauth2 (1.2.1)
jwt (>= 2.9.2)
oauth2 (~> 2.0)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.8)
omniauth-oauth2 (1.8.0)
oauth2 (>= 1.4, < 3)
omniauth (~> 2.0)
omniauth-rails_csrf_protection (1.0.2)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth_openid_connect (0.8.0)
omniauth (>= 1.9, < 3)
openid_connect (~> 2.2)
openid_connect (2.3.1)
activemodel
attr_required (>= 1.0.0)
email_validator
faraday (~> 2.0)
faraday-follow_redirects
json-jwt (>= 1.16)
mail
rack-oauth2 (~> 2.2)
swd (~> 2.0)
tzinfo
validate_url
webfinger (~> 2.0)
optimist (3.2.1)
orm_adapter (0.5.0)
ostruct (0.6.1)
pagy (43.2.2)
json
yaml
parallel (1.27.0)
parser (3.3.8.0)
parser (3.3.10.0)
ast (~> 2.4.1)
racc
patience_diff (1.2.0)
optimist (~> 3.0)
pg (1.5.9)
pp (0.6.2)
pg (1.6.2)
pg (1.6.2-aarch64-linux)
pg (1.6.2-arm64-darwin)
pg (1.6.2-x86_64-darwin)
pg (1.6.2-x86_64-linux)
pp (0.6.3)
prettyprint
prettyprint (0.2.0)
prism (1.4.0)
prism (1.7.0)
prometheus_exporter (2.2.0)
webrick
pry (0.15.2)
@ -299,14 +384,25 @@ GEM
psych (5.2.6)
date
stringio
public_suffix (6.0.1)
puma (6.6.0)
public_suffix (6.0.2)
puma (7.1.0)
nio4r (~> 2.0)
pundit (2.5.0)
pundit (2.5.2)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.8.1)
rack (3.1.15)
rack (3.2.4)
rack-oauth2 (2.3.0)
activesupport
attr_required
faraday (~> 2.0)
faraday-follow_redirects
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-protection (4.2.1)
base64 (>= 0.1.0)
logger (>= 1.6.0)
rack (>= 3.0.0, < 4)
rack-session (2.1.1)
base64 (>= 0.1.0)
rack (>= 3.0.0)
@ -314,20 +410,20 @@ GEM
rack (>= 1.3)
rackup (2.2.1)
rack (>= 3)
rails (8.0.2)
actioncable (= 8.0.2)
actionmailbox (= 8.0.2)
actionmailer (= 8.0.2)
actionpack (= 8.0.2)
actiontext (= 8.0.2)
actionview (= 8.0.2)
activejob (= 8.0.2)
activemodel (= 8.0.2)
activerecord (= 8.0.2)
activestorage (= 8.0.2)
activesupport (= 8.0.2)
rails (8.0.3)
actioncable (= 8.0.3)
actionmailbox (= 8.0.3)
actionmailer (= 8.0.3)
actionpack (= 8.0.3)
actiontext (= 8.0.3)
actionview (= 8.0.3)
activejob (= 8.0.3)
activemodel (= 8.0.3)
activerecord (= 8.0.3)
activestorage (= 8.0.3)
activesupport (= 8.0.3)
bundler (>= 1.15.0)
railties (= 8.0.2)
railties (= 8.0.3)
rails-dom-testing (2.3.0)
activesupport (>= 5.0.0)
minitest
@ -335,32 +431,49 @@ GEM
rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
railties (8.0.2)
actionpack (= 8.0.2)
activesupport (= 8.0.2)
rails_icons (1.4.0)
nokogiri (~> 1.16, >= 1.16.4)
rails (> 6.1)
rails_pulse (0.2.4)
css-zero (~> 1.1, >= 1.1.4)
groupdate (~> 6.0)
pagy (>= 8, < 44)
rails (>= 7.1.0, < 9.0.0)
ransack (~> 4.0)
request_store (~> 1.5)
turbo-rails (~> 2.0.11)
railties (8.0.3)
actionpack (= 8.0.3)
activesupport (= 8.0.3)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
tsort (>= 0.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
rake (13.2.1)
rdoc (6.14.0)
rake (13.3.1)
ransack (4.4.1)
activerecord (>= 7.2)
activesupport (>= 7.2)
i18n
rdoc (6.16.1)
erb
psych (>= 4.0.0)
redis (5.4.0)
tsort
redis (5.4.1)
redis-client (>= 0.22.0)
redis-client (0.24.0)
redis-client (0.26.2)
connection_pool
regexp_parser (2.10.0)
reline (0.6.1)
regexp_parser (2.11.3)
reline (0.6.3)
io-console (~> 0.5)
request_store (1.7.0)
rack (>= 1.4)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.4.1)
rexml (3.4.4)
rgeo (3.0.1)
rgeo-activerecord (8.0.0)
activerecord (>= 7.0)
@ -368,15 +481,19 @@ GEM
rgeo-geojson (2.2.0)
multi_json (~> 1.15)
rgeo (>= 1.0.0)
rqrcode (3.1.0)
chunky_png (~> 1.0)
rqrcode_core (~> 2.0)
rqrcode_core (2.0.0)
rspec-core (3.13.3)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.4)
rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.4)
rspec-mocks (3.13.6)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (8.0.0)
rspec-rails (8.0.2)
actionpack (>= 7.2)
activesupport (>= 7.2)
railties (>= 7.2)
@ -385,18 +502,18 @@ GEM
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-support (3.13.3)
rswag-api (2.16.0)
activesupport (>= 5.2, < 8.1)
railties (>= 5.2, < 8.1)
rswag-specs (2.16.0)
activesupport (>= 5.2, < 8.1)
json-schema (>= 2.2, < 6.0)
railties (>= 5.2, < 8.1)
rswag-api (2.17.0)
activesupport (>= 5.2, < 8.2)
railties (>= 5.2, < 8.2)
rswag-specs (2.17.0)
activesupport (>= 5.2, < 8.2)
json-schema (>= 2.2, < 7.0)
railties (>= 5.2, < 8.2)
rspec-core (>= 2.14)
rswag-ui (2.16.0)
actionpack (>= 5.2, < 8.1)
railties (>= 5.2, < 8.1)
rubocop (1.75.6)
rswag-ui (2.17.0)
actionpack (>= 5.2, < 8.2)
railties (>= 5.2, < 8.2)
rubocop (1.82.1)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@ -404,42 +521,42 @@ GEM
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.44.0, < 2.0)
rubocop-ast (>= 1.48.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.44.1)
rubocop-ast (1.49.0)
parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-rails (2.32.0)
prism (~> 1.7)
rubocop-rails (2.34.2)
activesupport (>= 4.2.0)
lint_roller (~> 1.1)
rack (>= 1.1)
rubocop (>= 1.75.0, < 2.0)
rubocop-ast (>= 1.44.0, < 2.0)
ruby-progressbar (1.13.0)
rubyzip (2.4.1)
rubyzip (3.2.2)
securerandom (0.4.1)
selenium-webdriver (4.33.0)
selenium-webdriver (4.35.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
rubyzip (>= 1.2.2, < 4.0)
websocket (~> 1.0)
sentry-rails (5.24.0)
railties (>= 5.0)
sentry-ruby (~> 5.24.0)
sentry-ruby (5.24.0)
sentry-rails (6.2.0)
railties (>= 5.2.0)
sentry-ruby (~> 6.2.0)
sentry-ruby (6.2.0)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
shoulda-matchers (6.5.0)
activesupport (>= 5.2.0)
sidekiq (7.3.9)
base64
connection_pool (>= 2.3.0)
logger
rack (>= 2.2.4)
redis-client (>= 0.22.2)
sidekiq-cron (2.2.0)
sidekiq (8.0.10)
connection_pool (>= 2.5.0)
json (>= 2.9.0)
logger (>= 1.6.2)
rack (>= 3.1.0)
redis-client (>= 0.23.2)
sidekiq-cron (2.3.1)
cronex (>= 0.13.0)
fugit (~> 1.8, >= 1.11.1)
globalid (>= 1.0.1)
@ -452,22 +569,9 @@ GEM
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.1)
simplecov_json_formatter (0.1.4)
solid_cable (3.0.8)
actioncable (>= 7.2)
activejob (>= 7.2)
activerecord (>= 7.2)
railties (>= 7.2)
solid_cache (1.0.7)
activejob (>= 7.2)
activerecord (>= 7.2)
railties (>= 7.2)
solid_queue (1.1.5)
activejob (>= 7.1)
activerecord (>= 7.1)
concurrent-ruby (>= 1.3.1)
fugit (~> 1.11.0)
railties (>= 7.1)
thor (~> 1.3.1)
snaky_hash (2.0.3)
hashie (>= 0.1.0, < 6)
version_gem (>= 1.1.8, < 3)
sprockets (4.2.1)
concurrent-ruby (~> 1.0)
rack (>= 2.2.4, < 4)
@ -475,23 +579,22 @@ GEM
actionpack (>= 6.1)
activesupport (>= 6.1)
sprockets (>= 3.0.0)
sqlite3 (2.6.0-aarch64-linux-gnu)
sqlite3 (2.6.0-arm-linux-gnu)
sqlite3 (2.6.0-arm64-darwin)
sqlite3 (2.6.0-x86-linux-gnu)
sqlite3 (2.6.0-x86_64-darwin)
sqlite3 (2.6.0-x86_64-linux-gnu)
stackprof (0.2.27)
stimulus-rails (1.3.4)
railties (>= 6.0.0)
stringio (3.1.7)
strong_migrations (2.3.0)
activerecord (>= 7)
super_diff (0.15.0)
stringio (3.1.8)
strong_migrations (2.5.1)
activerecord (>= 7.1)
super_diff (0.17.0)
attr_extras (>= 6.2.4)
diff-lcs
patience_diff
tailwindcss-rails (3.3.1)
swd (2.0.3)
activesupport (>= 3)
attr_required (>= 0.0.5)
faraday (~> 2.0)
faraday-follow_redirects
tailwindcss-rails (3.3.2)
railties (>= 7.0.0)
tailwindcss-ruby (~> 3.0)
tailwindcss-ruby (3.4.17)
@ -500,33 +603,46 @@ GEM
tailwindcss-ruby (3.4.17-arm64-darwin)
tailwindcss-ruby (3.4.17-x86_64-darwin)
tailwindcss-ruby (3.4.17-x86_64-linux)
thor (1.3.2)
timeout (0.4.3)
turbo-rails (2.0.13)
thor (1.4.0)
timeout (0.4.4)
tsort (0.2.0)
turbo-rails (2.0.20)
actionpack (>= 7.1.0)
railties (>= 7.1.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode (0.4.4.5)
unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
uri (1.0.3)
unicode-display_width (3.2.0)
unicode-emoji (~> 4.1)
unicode-emoji (4.2.0)
uri (1.1.1)
useragent (0.16.11)
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
version_gem (1.1.9)
warden (1.2.9)
rack (>= 2.0.9)
webmock (3.25.1)
webfinger (2.1.3)
activesupport
faraday (~> 2.0)
faraday-follow_redirects
webmock (3.26.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.9.1)
websocket (1.2.11)
websocket-driver (0.7.7)
websocket-driver (0.8.0)
base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
with_advisory_lock (7.0.2)
activerecord (>= 7.2)
zeitwerk (>= 2.7)
xpath (3.2.0)
nokogiri (~> 1.8)
yaml (0.4.0)
zeitwerk (2.7.3)
PLATFORMS
@ -538,7 +654,7 @@ PLATFORMS
x86_64-linux
DEPENDENCIES
activerecord-postgis-adapter
activerecord-postgis-adapter (= 11.0)
aws-sdk-core (~> 3.215.1)
aws-sdk-kms (~> 1.96.0)
aws-sdk-s3 (~> 1.177.0)
@ -547,8 +663,9 @@ DEPENDENCIES
bundler-audit
capybara
chartkick
connection_pool (< 3)
data_migrate
database_consistency
database_consistency (>= 2.0.5)
debug
devise
dotenv-rails
@ -556,57 +673,63 @@ DEPENDENCIES
fakeredis
ffaker
foreman
geocoder
geocoder!
gpx
groupdate
h3 (~> 3.7)
httparty
importmap-rails
jwt
jwt (~> 2.8)
kaminari
lograge
mission_control-jobs
oj
omniauth-github (~> 2.0.0)
omniauth-google-oauth2
omniauth-rails_csrf_protection
omniauth_openid_connect
parallel
pg
prometheus_exporter
pry-byebug
pry-rails
puma
pundit
pundit (>= 2.5.1)
rails (~> 8.0)
rails_icons
rails_pulse
redis
rexml
rgeo
rgeo-activerecord
rgeo-activerecord (~> 8.0.0)
rgeo-geojson
rspec-rails
rqrcode (~> 3.0)
rspec-rails (>= 8.0.1)
rswag-api
rswag-specs
rswag-ui
rubocop-rails
rubocop-rails (>= 2.33.4)
rubyzip (~> 3.2)
selenium-webdriver
sentry-rails
sentry-rails (>= 5.27.0)
sentry-ruby
shoulda-matchers
sidekiq
sidekiq-cron
sidekiq (= 8.0.10)
sidekiq-cron (>= 2.3.1)
sidekiq-limit_fetch
simplecov
solid_cable (~> 3.0)
solid_cache (= 1.0.7)
solid_queue (~> 1.1)
sprockets-rails
sqlite3 (~> 2.6)
stackprof
stimulus-rails
strong_migrations
strong_migrations (>= 2.4.0)
super_diff
tailwindcss-rails
turbo-rails
tailwindcss-rails (= 3.3.2)
turbo-rails (>= 2.0.17)
tzinfo-data
webmock
with_advisory_lock
RUBY VERSION
ruby 3.4.1p0
ruby 3.4.6p54
BUNDLED WITH
2.5.21

View file

@ -1,2 +1,3 @@
release: bundle exec rails db:migrate
web: bundle exec puma -C config/puma.rb
worker: bundle exec bin/jobs
worker: bundle exec sidekiq -C config/sidekiq.yml

3
Procfile.production Normal file
View file

@ -0,0 +1,3 @@
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -C config/sidekiq.yml
prometheus_exporter: bundle exec prometheus_exporter -b ANY

View file

@ -1,30 +1,38 @@
# 🌍 Dawarich: Your Self-Hosted Location History Tracker
# 🌍 Dawarich: Your Self-Hostable Location History Tracker
[![Discord](https://dcbadge.limes.pink/api/server/pHsBjpt5J8)](https://discord.gg/pHsBjpt5J8) | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H3IDYDD) | [![Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Dfreika%26type%3Dpatrons&style=for-the-badge)](https://www.patreon.com/freika)
Donate using crypto: [0x6bAd13667692632f1bF926cA9B421bEe7EaEB8D4](https://etherscan.io/address/0x6bAd13667692632f1bF926cA9B421bEe7EaEB8D4)
[![CircleCI](https://circleci.com/gh/Freika/dawarich.svg?style=svg)](https://app.circleci.com/pipelines/github/Freika/dawarich)
---
## 📸 Screenshots
![Map](screenshots/map.jpeg)
![Map](screenshots/map.png)
*Map View*
![Stats](screenshots/stats.jpeg)
![Family](screenshots/family.png)
*Family Page*
![Stats](screenshots/stats.png)
*Statistics Overview*
![Import](screenshots/imports.jpeg)
*Imports page*
![Trips](screenshots/trips.png)
*Trips page*
---
## 🗺️ About Dawarich
**Dawarich** is a self-hosted web app designed to replace Google Timeline (aka Google Location History). It enables you to:
If you're looking for Dawarich Cloud, where everything is managed for you, check out [Dawarich Cloud](https://dawarich.app).
**Dawarich** is a self-hostable web app designed to replace Google Timeline (aka Google Location History).
It enables you to:
- Track your location history.
- Visualize your data on an interactive map.
- Import your location history from Google Maps Timeline and Owntracks.
- Create trips and analyze your travel history.
- Share your location with family members.
- Integrate with photo management apps like Immich and Photoprism to visualize geotagged photos.
- Import your location history from Google Maps Timeline, OwnTracks, GPX, GeoJSON and some other sources
- Explore statistics like the number of countries and cities visited, total distance traveled, and more!
📄 **Changelog**: Find the latest updates [here](CHANGELOG.md).
@ -39,6 +47,7 @@ Donate using crypto: [0x6bAd13667692632f1bF926cA9B421bEe7EaEB8D4](https://ethers
- ❌ **Do not delete your original data** after importing into Dawarich.
- 📦 **Backup before updates**: Always [backup your data](https://dawarich.app/docs/tutorials/backup-and-restore) before upgrading.
- 🔄 **Stay up-to-date**: Make sure you're running the latest version for the best experience.
- ⚠️ **DO NOT USE PRODUCTION ENVIRONMENT**: Dawarich is not yet ready for production.
---
@ -51,7 +60,7 @@ You can track your location with the following apps:
- 🛰️ [OwnTracks](https://dawarich.app/docs/tutorials/track-your-location#owntracks)
- 🗺️ [GPSLogger](https://dawarich.app/docs/tutorials/track-your-location#gps-logger)
- 📱 [PhoneTrack](https://dawarich.app/docs/tutorials/track-your-location#phonetrack)
- 🏡 [Home Assistant](https://dawarich.app/docs/tutorials/track-your-location#homeassistant)
- 🏡 [Home Assistant](https://dawarich.app/docs/tutorials/track-your-location#home-assistant)
Simply install one of the supported apps on your device and configure it to send location updates to your Dawarich instance.
@ -62,12 +71,14 @@ Simply install one of the supported apps on your device and configure it to send
1. Clone the repository.
2. Run the following command to start the app:
```bash
docker-compose up
docker compose -f docker/docker-compose.yml up
```
3. Access the app at `http://localhost:3000`.
⏹️ **To stop the app**, press `Ctrl+C`.
You can use default values or create a `.env` file based on `.env.example` to customize your setup.
---
## 🔧 How to Install Dawarich
@ -94,6 +105,11 @@ Feel free to change them in the account settings.
- Lines between points
- Fog of War
### 👪 Family Sharing
- Share your location with family members.
- View locations of family members on the map (with their consent).
- Each family member can enable or disable location sharing individually.
### 🔵 Areas
- Draw areas on the map so Dawarich could suggest your visits there.
@ -104,7 +120,6 @@ Feel free to change them in the account settings.
- Analyze your travel history: number of countries/cities visited, distance traveled, and time spent, broken down by year and month.
### ✈️ Trips
- Create a trip to visualize your travels between two points in time. You'll be able to see the route, distance, and time spent, and also add notes to your trip. If you have Immich or Photoprism integration, you'll also be able to see photos from your trips!
### 📸 Integrations

View file

@ -5,9 +5,16 @@
{ "url": "https://github.com/heroku/heroku-buildpack-nodejs.git" },
{ "url": "https://github.com/heroku/heroku-buildpack-ruby.git" }
],
"scripts": {
"dokku": {
"predeploy": "bundle exec rails db:migrate"
}
"healthchecks": {
"web": [
{
"type": "startup",
"name": "web check",
"description": "Checking if the app responds to the /api/v1/health endpoint",
"path": "/api/v1/health",
"attempts": 10,
"interval": 10
}
]
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,4 @@
//= link rails-ujs.js
//= link_tree ../images
//= link_directory ../stylesheets .css
//= link_tree ../builds

View file

@ -0,0 +1,46 @@
<svg id="livetype" xmlns="http://www.w3.org/2000/svg" width="119.66407" height="40" viewBox="0 0 119.66407 40">
<title>Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917</title>
<g>
<g>
<g>
<path d="M110.13477,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H110.13477c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269-.3594-.002-.7246-.002-1.084-.002Z" style="fill: #a6a6a6"/>
<path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875H111.21387l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993,5.76267,5.76267,0,0,1,.5352,1.64892,12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"/>
</g>
<g id="_Group_" data-name="&lt;Group&gt;">
<g id="_Group_2" data-name="&lt;Group&gt;">
<g id="_Group_3" data-name="&lt;Group&gt;">
<path id="_Path_" data-name="&lt;Path&gt;" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"/>
<path id="_Path_2" data-name="&lt;Path&gt;" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"/>
</g>
</g>
<g>
<path d="M42.30227,27.13965h-4.7334l-1.13672,3.35645H34.42727l4.4834-12.418h2.083l4.4834,12.418H43.438ZM38.0591,25.59082h3.752l-1.84961-5.44727h-.05176Z" style="fill: #fff"/>
<path d="M55.15969,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H48.4302v1.50586h.03418a3.21162,3.21162,0,0,1,2.88281-1.60059C53.645,21.34766,55.15969,23.16406,55.15969,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C52.30227,29.01563,53.24953,27.81934,53.24953,25.96973Z" style="fill: #fff"/>
<path d="M65.12453,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H58.395v1.50586h.03418A3.21162,3.21162,0,0,1,61.312,21.34766C63.60988,21.34766,65.12453,23.16406,65.12453,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C62.26711,29.01563,63.21438,27.81934,63.21438,25.96973Z" style="fill: #fff"/>
<path d="M71.71047,27.03613c.1377,1.23145,1.334,2.04,2.96875,2.04,1.56641,0,2.69336-.80859,2.69336-1.91895,0-.96387-.67969-1.541-2.28906-1.93652l-1.60937-.3877c-2.28027-.55078-3.33887-1.61719-3.33887-3.34766,0-2.14258,1.86719-3.61426,4.51855-3.61426,2.624,0,4.42285,1.47168,4.4834,3.61426h-1.876c-.1123-1.23926-1.13672-1.9873-2.63379-1.9873s-2.52148.75684-2.52148,1.8584c0,.87793.6543,1.39453,2.25488,1.79l1.36816.33594c2.54785.60254,3.60645,1.626,3.60645,3.44238,0,2.32324-1.85059,3.77832-4.79395,3.77832-2.75391,0-4.61328-1.4209-4.7334-3.667Z" style="fill: #fff"/>
<path d="M83.34621,19.2998v2.14258h1.72168v1.47168H83.34621v4.99121c0,.77539.34473,1.13672,1.10156,1.13672a5.80752,5.80752,0,0,0,.61133-.043v1.46289a5.10351,5.10351,0,0,1-1.03223.08594c-1.833,0-2.54785-.68848-2.54785-2.44434V22.91406H80.16262V21.44238H81.479V19.2998Z" style="fill: #fff"/>
<path d="M86.065,25.96973c0-2.84863,1.67773-4.63867,4.29395-4.63867,2.625,0,4.29492,1.79,4.29492,4.63867,0,2.85645-1.66113,4.63867-4.29492,4.63867C87.72609,30.6084,86.065,28.82617,86.065,25.96973Zm6.69531,0c0-1.9541-.89551-3.10742-2.40137-3.10742s-2.40039,1.16211-2.40039,3.10742c0,1.96191.89453,3.10645,2.40039,3.10645S92.76027,27.93164,92.76027,25.96973Z" style="fill: #fff"/>
<path d="M96.18606,21.44238h1.77246v1.541h.043a2.1594,2.1594,0,0,1,2.17773-1.63574,2.86616,2.86616,0,0,1,.63672.06934v1.73828a2.59794,2.59794,0,0,0-.835-.1123,1.87264,1.87264,0,0,0-1.93652,2.083v5.37012h-1.8584Z" style="fill: #fff"/>
<path d="M109.3843,27.83691c-.25,1.64355-1.85059,2.77148-3.89844,2.77148-2.63379,0-4.26855-1.76465-4.26855-4.5957,0-2.83984,1.64355-4.68164,4.19043-4.68164,2.50488,0,4.08008,1.7207,4.08008,4.46582v.63672h-6.39453v.1123a2.358,2.358,0,0,0,2.43555,2.56445,2.04834,2.04834,0,0,0,2.09082-1.27344Zm-6.28223-2.70215h4.52637a2.1773,2.1773,0,0,0-2.2207-2.29785A2.292,2.292,0,0,0,103.10207,25.13477Z" style="fill: #fff"/>
</g>
</g>
</g>
<g id="_Group_4" data-name="&lt;Group&gt;">
<g>
<path d="M37.82619,8.731a2.63964,2.63964,0,0,1,2.80762,2.96484c0,1.90625-1.03027,3.002-2.80762,3.002H35.67092V8.731Zm-1.22852,5.123h1.125a1.87588,1.87588,0,0,0,1.96777-2.146,1.881,1.881,0,0,0-1.96777-2.13379h-1.125Z" style="fill: #fff"/>
<path d="M41.68068,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C44.57522,13.99463,45.01369,13.42432,45.01369,12.44434Z" style="fill: #fff"/>
<path d="M51.57326,14.69775h-.92187l-.93066-3.31641h-.07031l-.92676,3.31641h-.91309l-1.24121-4.50293h.90137l.80664,3.436h.06641l.92578-3.436h.85254l.92578,3.436h.07031l.80273-3.436h.88867Z" style="fill: #fff"/>
<path d="M53.85354,10.19482H54.709v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915h-.88867V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
<path d="M59.09377,8.437h.88867v6.26074h-.88867Z" style="fill: #fff"/>
<path d="M61.21779,12.44434a2.13346,2.13346,0,1,1,4.24756,0,2.1338,2.1338,0,1,1-4.24756,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C64.11232,13.99463,64.5508,13.42432,64.5508,12.44434Z" style="fill: #fff"/>
<path d="M66.4009,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76563.562,1.76563,1.51318v3.07666h-.85547v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,66.4009,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,69.29543,13.03955Z" style="fill: #fff"/>
<path d="M71.34816,12.44434c0-1.42285.73145-2.32422,1.86914-2.32422a1.484,1.484,0,0,1,1.38086.79h.06641V8.437h.88867v6.26074h-.85156v-.71143h-.07031a1.56284,1.56284,0,0,1-1.41406.78564C72.0718,14.772,71.34816,13.87061,71.34816,12.44434Zm.918,0c0,.95508.4502,1.52979,1.20313,1.52979.749,0,1.21191-.583,1.21191-1.52588,0-.93848-.46777-1.52979-1.21191-1.52979C72.72121,10.91846,72.26613,11.49707,72.26613,12.44434Z" style="fill: #fff"/>
<path d="M79.23,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C82.12453,13.99463,82.563,13.42432,82.563,12.44434Z" style="fill: #fff"/>
<path d="M84.66945,10.19482h.85547v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915H87.605V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
<path d="M93.51516,9.07373v1.1416h.97559v.74854h-.97559V13.2793c0,.47168.19434.67822.63672.67822a2.96657,2.96657,0,0,0,.33887-.02051v.74023a2.9155,2.9155,0,0,1-.4834.04541c-.98828,0-1.38184-.34766-1.38184-1.21582v-2.543h-.71484v-.74854h.71484V9.07373Z" style="fill: #fff"/>
<path d="M95.70461,8.437h.88086v2.48145h.07031a1.3856,1.3856,0,0,1,1.373-.80664,1.48339,1.48339,0,0,1,1.55078,1.67871v2.90723H98.69v-2.688c0-.71924-.335-1.0835-.96289-1.0835a1.05194,1.05194,0,0,0-1.13379,1.1416v2.62988h-.88867Z" style="fill: #fff"/>
<path d="M104.76125,13.48193a1.828,1.828,0,0,1-1.95117,1.30273A2.04531,2.04531,0,0,1,100.73,12.46045a2.07685,2.07685,0,0,1,2.07617-2.35254c1.25293,0,2.00879.856,2.00879,2.27V12.688h-3.17969v.0498a1.1902,1.1902,0,0,0,1.19922,1.29,1.07934,1.07934,0,0,0,1.07129-.5459Zm-3.126-1.45117h2.27441a1.08647,1.08647,0,0,0-1.1084-1.1665A1.15162,1.15162,0,0,0,101.63527,12.03076Z" style="fill: #fff"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

View file

@ -1,19 +0,0 @@
{
"name": "Dawarich",
"short_name": "Dawarich",
"icons": [
{
"src": "<%= asset_path 'favicon/android-chrome-192x192.png' %>",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "<%= asset_path 'favicon/android-chrome-512x512.png' %>",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

View file

@ -27,9 +27,13 @@
/* Style for the settings panel */
.leaflet-settings-panel {
background-color: white;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
position: absolute !important;
top: 10px !important;
left: 60px !important;
transform: none;
z-index: 1000;
}
.leaflet-settings-panel label {
@ -92,7 +96,7 @@
}
.loading-spinner::before {
content: '🔵';
content: '';
font-size: 18px;
animation: spinner 1s linear infinite;
}
@ -101,3 +105,63 @@
content: '✅';
animation: none;
}
/* Flash message animations */
@keyframes slideInFromRight {
0% {
transform: translateX(100%);
opacity: 0;
}
100% {
transform: translateX(0);
opacity: 1;
}
}
@keyframes slideOutToRight {
0% {
transform: translateX(0);
opacity: 1;
}
100% {
transform: translateX(100%);
opacity: 0;
}
}
/* Family feature specific styles */
.family-member-card {
transition: all 0.2s ease-in-out;
}
.family-member-card:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.invitation-card {
border-left: 4px solid #f59e0b;
}
.family-invitation-form {
max-width: 500px;
}
/* Loading states */
.btn:disabled {
opacity: 0.7;
cursor: not-allowed;
}
.loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.8);
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
}

View file

@ -13,6 +13,7 @@
*/
@import 'actiontext.css';
@import 'leaflet_theme.css';
@layer components {
.fade-out {
@ -23,7 +24,8 @@
/* Leaflet Panel Styles */
.leaflet-right-panel {
margin-top: 80px; /* Give space for controls above */
margin-top: 80px;
/* Give space for controls above */
margin-right: 10px;
transform: none;
transition: right 0.3s ease-in-out;
@ -33,49 +35,95 @@
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}
/* Add Visit Marker Styles */
.add-visit-marker {
display: flex !important;
align-items: center;
justify-content: center;
font-size: 20px;
background: white;
border: 2px solid #007bff;
border-radius: 50%;
box-shadow: 0 2px 8px rgba(0, 123, 255, 0.3);
animation: pulse-visit 2s infinite;
}
@keyframes pulse-visit {
0% {
transform: scale(1);
box-shadow: 0 2px 8px rgba(0, 123, 255, 0.3);
}
50% {
transform: scale(1.1);
box-shadow: 0 4px 12px rgba(0, 123, 255, 0.5);
}
100% {
transform: scale(1);
box-shadow: 0 2px 8px rgba(0, 123, 255, 0.3);
}
}
/* Visit Form Popup Styles */
.visit-form-popup .leaflet-popup-content-wrapper {
border-radius: 8px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
.leaflet-right-panel.controls-shifted {
right: 310px;
}
.leaflet-control-button {
background-color: white !important;
color: #374151 !important;
}
.leaflet-control-button:hover {
background-color: #f3f4f6 !important;
}
/* Drawer Panel Styles */
.leaflet-drawer {
position: absolute;
top: 0;
right: 0;
width: 338px;
height: 100%;
top: 10px;
right: 70px;
/* Position to the left of the control buttons with margin */
width: 24rem;
max-height: calc(100% - 20px);
background: rgba(255, 255, 255, 0.5);
transform: translateX(100%);
transition: transform 0.3s ease-in-out;
border-radius: 8px;
opacity: 0;
visibility: hidden;
transform: scale(0.95);
transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out, visibility 0.2s;
z-index: 450;
box-shadow: -2px 0 5px rgba(0, 0, 0, 0.1);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
height: auto;
/* Make height fit content */
cursor: default;
/* Override map cursor */
}
.leaflet-drawer * {
cursor: default;
/* Ensure all children have default cursor */
}
.leaflet-drawer a,
.leaflet-drawer button,
.leaflet-drawer .btn,
.leaflet-drawer input[type="checkbox"] {
cursor: pointer;
/* Interactive elements get pointer cursor */
}
.leaflet-drawer.open {
transform: translateX(0);
opacity: 1;
visibility: visible;
transform: scale(1);
}
/* Controls transition */
/* Controls remain in place - no transition needed */
.leaflet-control-layers,
.leaflet-control-button,
.toggle-panel-button {
transition: right 0.3s ease-in-out;
z-index: 500;
}
.controls-shifted {
right: 338px !important;
}
/* Selection Tool Styles */
.leaflet-control-custom {
background-color: white;
@ -100,6 +148,61 @@
/* Cancel Selection Button */
#cancel-selection-button {
margin-bottom: 1rem;
width: 100%;
}
/* Emoji Picker Styles */
em-emoji-picker {
--color-border-over: rgba(0, 0, 0, 0.1);
--color-border: rgba(0, 0, 0, 0.05);
--font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--rgb-accent: 96, 165, 250;
/* Blue accent to match application */
position: absolute;
z-index: 1000;
max-width: 400px;
min-width: 318px;
resize: horizontal;
overflow: auto;
border-radius: 8px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
/* Dark mode support for emoji picker */
[data-theme="dark"] em-emoji-picker,
html.dark em-emoji-picker {
--color-border-over: rgba(255, 255, 255, 0.1);
--color-border: rgba(255, 255, 255, 0.05);
--rgb-accent: 96, 165, 250;
}
/* Responsive emoji picker on mobile */
@media (max-width: 768px) {
em-emoji-picker {
max-width: 90vw;
min-width: 280px;
}
}
/* Color Picker Styles */
.color-input {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
padding: 0;
}
.color-input::-webkit-color-swatch-wrapper {
padding: 0;
}
.color-input::-webkit-color-swatch {
border: none;
border-radius: 0.5rem;
}
.color-input::-moz-color-swatch {
border: none;
border-radius: 0.5rem;
}

View file

@ -0,0 +1,36 @@
.leaflet-control-layers-toggle.leaflet-layerstree-named-toggle {
margin: 2px 5px;
width: auto;
height: auto;
background-image: none;
}
.leaflet-layerstree-header input {
margin-left: 0px;
}
.leaflet-layerstree-header label {
display: inline-block;
cursor: pointer;
}
.leaflet-layerstree-header-pointer,
.leaflet-layerstree-expand-collapse {
cursor: pointer;
}
.leaflet-layerstree-children {
padding-left: 10px;
}
.leaflet-layerstree-children-nopad {
padding-left: 0px;
}
.leaflet-layerstree-hide,
.leaflet-layerstree-nevershow {
display: none;
}
.leaflet-control-layers label {
line-height: 1.5rem!important;
}

View file

@ -0,0 +1,347 @@
/* Leaflet Theme Styles - Light and Dark mode support */
/* CSS Custom Properties for Light Theme */
[data-theme="light"] {
--leaflet-bg-color: #ffffff;
--leaflet-text-color: #000000;
--leaflet-border-color: #e5e7eb;
--leaflet-shadow-color: rgba(0, 0, 0, 0.1);
--leaflet-hover-color: #f3f4f6;
--leaflet-link-color: #0066cc;
--leaflet-scale-bg: rgba(255, 255, 255, 0.9);
}
/* CSS Custom Properties for Dark Theme */
[data-theme="dark"] {
--leaflet-bg-color: #374151;
--leaflet-text-color: #ffffff;
--leaflet-border-color: #4b5563;
--leaflet-shadow-color: rgba(0, 0, 0, 0.3);
--leaflet-hover-color: #4b5563;
--leaflet-link-color: #66b3ff;
--leaflet-scale-bg: rgba(55, 65, 81, 0.9);
}
/* Leaflet default controls theme override */
.leaflet-control-layers,
.leaflet-control-zoom,
.leaflet-control-attribution,
.leaflet-bar a,
.leaflet-control-layers-toggle,
.leaflet-control-layers-list,
.leaflet-control-draw {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border-color: var(--leaflet-border-color) !important;
box-shadow: 0 1px 4px var(--leaflet-shadow-color) !important;
}
/* Leaflet zoom buttons */
.leaflet-control-zoom a {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border-bottom: 1px solid var(--leaflet-border-color) !important;
}
.leaflet-control-zoom a:hover {
background-color: var(--leaflet-hover-color) !important;
}
/* Leaflet layer control */
.leaflet-control-layers {
border: none !important;
border-radius: 0.5rem !important;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
padding: 0 !important;
}
.leaflet-control-layers-expanded {
padding: 1rem !important;
min-width: 200px;
}
/* Hide the toggle icon when expanded */
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none !important;
}
.leaflet-control-layers-toggle {
width: 44px !important;
height: 44px !important;
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border-radius: 0.5rem !important;
/* Replace default icon with custom SVG */
background-image: none !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
transition: background-color 0.2s;
}
.leaflet-control-layers-toggle:hover {
background-color: var(--leaflet-hover-color) !important;
}
.leaflet-control-layers-toggle::before {
content: '' !important;
display: block !important;
width: 24px !important;
height: 24px !important;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"/><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"/><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"/></svg>') !important;
background-size: contain !important;
background-repeat: no-repeat !important;
background-position: center !important;
}
/* Dark theme - use white stroke for the icon */
[data-theme="dark"] .leaflet-control-layers-toggle::before {
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"/><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"/><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"/></svg>') !important;
}
/* Light theme - use black stroke for the icon */
[data-theme="light"] .leaflet-control-layers-toggle::before {
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"/><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"/><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"/></svg>') !important;
}
/* Layer list styling */
.leaflet-control-layers-list {
margin-bottom: 0 !important;
}
.leaflet-control-layers-base,
.leaflet-control-layers-overlays {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.leaflet-control-layers-separator {
height: 1px;
margin: 0.75rem 0;
background-color: var(--leaflet-border-color);
}
/* Label styling */
.leaflet-control-layers label {
display: flex !important;
align-items: center !important;
margin-bottom: 0 !important;
cursor: pointer;
font-size: 0.875rem;
line-height: 1.25rem;
color: var(--leaflet-text-color) !important;
}
.leaflet-control-layers label:hover {
opacity: 0.8;
}
.leaflet-control-layers label span {
margin-left: 0.5rem;
}
/* Custom Checkbox/Radio styling using DaisyUI/Tailwind logic */
.leaflet-control-layers input[type="checkbox"],
.leaflet-control-layers input[type="radio"] {
appearance: none;
width: 1.25rem;
height: 1.25rem;
border: 1px solid var(--leaflet-border-color);
border-radius: 0.25rem;
/* Rounded for checkbox */
background-color: var(--leaflet-bg-color);
cursor: pointer;
position: relative;
margin: 0 !important;
flex-shrink: 0;
}
.leaflet-control-layers input[type="radio"] {
border-radius: 9999px;
/* Circle for radio */
}
.leaflet-control-layers input[type="checkbox"]:checked,
.leaflet-control-layers input[type="radio"]:checked {
background-color: var(--leaflet-link-color);
border-color: var(--leaflet-link-color);
}
/* Checkbox checkmark */
.leaflet-control-layers input[type="checkbox"]:checked::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0.65rem;
height: 0.65rem;
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
background-size: contain;
background-repeat: no-repeat;
transform: translate(-50%, -50%);
}
/* Radio dot */
.leaflet-control-layers input[type="radio"]:checked::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0.5rem;
height: 0.5rem;
background-color: white;
border-radius: 50%;
transform: translate(-50%, -50%);
}
/* Leaflet Draw controls */
.leaflet-draw-toolbar a {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border-bottom: 1px solid var(--leaflet-border-color) !important;
}
.leaflet-draw-toolbar a:hover {
background-color: var(--leaflet-hover-color) !important;
}
.leaflet-draw-actions a {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
}
/* Leaflet popups */
.leaflet-popup-content-wrapper {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
}
.leaflet-popup-tip {
background-color: var(--leaflet-bg-color) !important;
}
/* Attribution control */
.leaflet-control-attribution a {
color: var(--leaflet-link-color) !important;
}
/* Custom control buttons */
.leaflet-control-button,
.add-visit-button,
.leaflet-bar button {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border: 1px solid var(--leaflet-border-color) !important;
box-shadow: 0 1px 4px var(--leaflet-shadow-color) !important;
}
.leaflet-control-button:hover,
.add-visit-button:hover,
.leaflet-bar button:hover {
background-color: var(--leaflet-hover-color) !important;
}
/* Any other custom controls */
.leaflet-top .leaflet-control button,
.leaflet-bottom .leaflet-control button,
.leaflet-left .leaflet-control button,
.leaflet-right .leaflet-control button {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border: 1px solid var(--leaflet-border-color) !important;
}
/* Location search button */
.location-search-toggle,
#location-search-toggle {
background-color: var(--leaflet-bg-color) !important;
color: var(--leaflet-text-color) !important;
border: 1px solid var(--leaflet-border-color) !important;
box-shadow: 0 1px 4px var(--leaflet-shadow-color) !important;
}
.location-search-toggle:hover,
#location-search-toggle:hover {
background-color: var(--leaflet-hover-color) !important;
}
/* Distance scale control */
.leaflet-control-scale {
background: var(--leaflet-scale-bg) !important;
border-radius: 3px !important;
padding: 2px !important;
}
/* Family member tooltip - dark styled like the visit popup */
.leaflet-tooltip.family-member-tooltip {
background-color: #374151 !important;
color: #ffffff !important;
border: 1px solid #4b5563 !important;
border-radius: 4px !important;
padding: 4px 8px !important;
font-size: 11px !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}
.leaflet-tooltip.family-member-tooltip::before {
border-top-color: #374151 !important;
}
/* Family member popup - just override colors, keep default layout */
.leaflet-popup-content-wrapper:has(.family-member-popup) {
background-color: #1f2937 !important;
color: #f9fafb !important;
}
.leaflet-popup-content-wrapper:has(.family-member-popup)+.leaflet-popup-tip {
background-color: #1f2937 !important;
}
/* Family member marker pulse animation for recent updates */
@keyframes family-marker-pulse {
0% {
box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
}
50% {
box-shadow: 0 0 0 10px rgba(16, 185, 129, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
}
}
.family-member-marker-recent {
animation: family-marker-pulse 2s infinite;
border-radius: 50% !important;
}
.family-member-marker-recent .leaflet-marker-icon>div {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2), 0 0 0 0 rgba(16, 185, 129, 0.7);
border-radius: 50%;
}
/* Fix bottom controls being cut off */
.leaflet-bottom {
padding-bottom: 10px !important;
transition: padding-bottom 0.3s ease;
}
.leaflet-bottom.leaflet-left {
padding-left: 10px !important;
}
.leaflet-bottom.leaflet-right {
padding-right: 10px !important;
}
/* DaisyUI tooltips on map buttons - ensure they appear above date navigation (z-index: 9999) */
.tooltip:before,
.tooltip:after {
z-index: 10000 !important;
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,187 @@
/* Maps V2 Styles */
/* Loading Overlay */
.loading-overlay {
position: absolute;
inset: 0;
background: rgba(255, 255, 255, 0.9);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 1000;
}
.loading-overlay.hidden {
display: none;
}
.loading-spinner {
width: 40px;
height: 40px;
border: 4px solid #e5e7eb;
border-top-color: #3b82f6;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.loading-text {
margin-top: 16px;
font-size: 14px;
color: #6b7280;
}
/* Popup Styles */
.point-popup {
font-family: system-ui, -apple-system, sans-serif;
}
.popup-header {
margin-bottom: 8px;
padding-bottom: 8px;
border-bottom: 1px solid #e5e7eb;
}
.popup-body {
font-size: 13px;
}
.popup-row {
display: flex;
justify-content: space-between;
gap: 16px;
padding: 4px 0;
}
.popup-row .label {
color: #6b7280;
}
.popup-row .value {
font-weight: 500;
color: #111827;
}
/* MapLibre Popup Theme Support */
.maplibregl-popup-content {
padding: 16px;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
/* Larger close button */
.maplibregl-popup-close-button {
width: 32px;
height: 32px;
font-size: 24px;
line-height: 32px;
right: 4px;
top: 4px;
padding: 0;
border-radius: 4px;
transition: background-color 0.2s;
}
.maplibregl-popup-close-button:hover {
background-color: rgba(0, 0, 0, 0.08);
}
/* Light theme (default) */
.maplibregl-popup-content {
background-color: #ffffff;
color: #111827;
}
.maplibregl-popup-close-button {
color: #6b7280;
}
.maplibregl-popup-close-button:hover {
background-color: #f3f4f6;
color: #111827;
}
.maplibregl-popup-tip {
border-top-color: #ffffff;
}
/* Dark theme */
html[data-theme="dark"] .maplibregl-popup-content,
html.dark .maplibregl-popup-content {
background-color: #1f2937;
color: #f9fafb;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
html[data-theme="dark"] .maplibregl-popup-close-button,
html.dark .maplibregl-popup-close-button {
color: #d1d5db;
}
html[data-theme="dark"] .maplibregl-popup-close-button:hover,
html.dark .maplibregl-popup-close-button:hover {
background-color: #374151;
color: #f9fafb;
}
html[data-theme="dark"] .maplibregl-popup-tip,
html.dark .maplibregl-popup-tip {
border-top-color: #1f2937;
}
/* Connection Indicator */
.connection-indicator {
position: absolute;
top: 16px;
left: 50%;
transform: translateX(-50%);
padding: 8px 16px;
background: white;
border-radius: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: none; /* Hidden by default, shown when family sharing is active */
align-items: center;
gap: 8px;
font-size: 13px;
font-weight: 500;
z-index: 20;
transition: all 0.3s;
}
/* Show connection indicator when family sharing is active */
.connection-indicator.active {
display: flex;
}
.indicator-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: #ef4444;
animation: pulse 2s ease-in-out infinite;
}
.connection-indicator.connected .indicator-dot {
background: #22c55e;
}
.connection-indicator.connected .indicator-text::before {
content: 'Connected';
}
.connection-indicator.disconnected .indicator-text::before {
content: 'Connecting...';
}
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}

View file

@ -0,0 +1,286 @@
/* Maps V2 Control Panel Styles */
.map-control-panel {
position: absolute;
top: 0;
right: -480px; /* Hidden by default */
width: 480px;
height: 100%;
background: oklch(var(--b1));
box-shadow: -4px 0 24px rgba(0, 0, 0, 0.15);
z-index: 9999;
transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
overflow: hidden;
}
.map-control-panel.open {
right: 0;
}
/* Vertical Tab Bar */
.panel-tabs {
width: 64px;
background: oklch(var(--b2));
border-right: 1px solid oklch(var(--bc) / 0.1);
display: flex;
flex-direction: column;
align-items: center;
padding: 16px 0;
gap: 8px;
flex-shrink: 0;
}
.tab-btn {
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
border: none;
background: transparent;
cursor: pointer;
transition: all 0.2s;
position: relative;
color: oklch(var(--bc) / 0.6);
}
.tab-btn:hover {
background: oklch(var(--b3));
color: oklch(var(--bc));
}
.tab-btn.active {
background: oklch(var(--p));
color: oklch(var(--pc));
}
.tab-btn.active::after {
content: '';
position: absolute;
right: -1px;
top: 50%;
transform: translateY(-50%);
width: 3px;
height: 24px;
background: oklch(var(--p));
border-radius: 2px 0 0 2px;
}
.tab-icon {
width: 24px;
height: 24px;
}
/* Panel Content */
.panel-content {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
min-width: 0;
}
.panel-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 24px;
border-bottom: 1px solid oklch(var(--bc) / 0.1);
background: oklch(var(--b1));
flex-shrink: 0;
}
.panel-title {
font-size: 1.25rem;
font-weight: 600;
margin: 0;
color: oklch(var(--bc));
}
.panel-body {
flex: 1;
overflow-y: auto;
padding: 24px;
}
/* Tab Content */
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
/* Custom Scrollbar */
.panel-body::-webkit-scrollbar {
width: 8px;
}
.panel-body::-webkit-scrollbar-track {
background: transparent;
}
.panel-body::-webkit-scrollbar-thumb {
background: oklch(var(--bc) / 0.2);
border-radius: 4px;
}
.panel-body::-webkit-scrollbar-thumb:hover {
background: oklch(var(--bc) / 0.3);
}
/* Toggle Focus State - Remove all focus indicators */
.toggle:focus,
.toggle:focus-visible,
.toggle:focus-within {
outline: none !important;
box-shadow: none !important;
border-color: inherit !important;
}
/* Override DaisyUI toggle focus styles */
.toggle:focus-visible:checked,
.toggle:checked:focus,
.toggle:checked:focus-visible {
outline: none !important;
box-shadow: none !important;
}
/* Ensure no outline on the toggle container */
.form-control .toggle:focus {
outline: none !important;
}
/* Prevent indeterminate visual state on toggles */
.toggle:indeterminate {
opacity: 1;
}
/* Ensure smooth toggle transitions without intermediate states */
.toggle {
transition: background-color 0.2s ease, border-color 0.2s ease;
}
.toggle:checked {
transition: background-color 0.2s ease, border-color 0.2s ease;
}
/* Remove any active/pressed state that might cause intermediate appearance */
.toggle:active,
.toggle:active:focus {
outline: none !important;
box-shadow: none !important;
}
/* Responsive Breakpoints */
/* Large tablets and smaller desktops (1024px - 1280px) */
@media (max-width: 1280px) {
.map-control-panel {
width: 420px;
right: -420px;
}
}
/* Tablets (768px - 1024px) */
@media (max-width: 1024px) {
.map-control-panel {
width: 380px;
right: -380px;
}
.panel-body {
padding: 20px;
}
}
/* Small tablets and large phones (640px - 768px) */
@media (max-width: 768px) {
.map-control-panel {
width: 95%;
right: -95%;
max-width: 480px;
}
.panel-header {
padding: 16px 20px;
}
.panel-title {
font-size: 1.125rem;
}
.panel-body {
padding: 16px 20px;
}
}
/* Mobile phones (< 640px) */
@media (max-width: 640px) {
.map-control-panel {
width: 100%;
right: -100%;
max-width: none;
}
.panel-tabs {
width: 56px;
padding: 12px 0;
gap: 6px;
}
.tab-btn {
width: 44px;
height: 44px;
}
.tab-icon {
width: 20px;
height: 20px;
}
.panel-header {
padding: 14px 16px;
}
.panel-title {
font-size: 1rem;
}
.panel-body {
padding: 16px;
}
/* Reduce spacing on mobile */
.space-y-4 > * + * {
margin-top: 0.75rem;
}
.space-y-6 > * + * {
margin-top: 1rem;
}
}
/* Very small phones (< 375px) */
@media (max-width: 375px) {
.panel-tabs {
width: 52px;
padding: 10px 0;
}
.tab-btn {
width: 40px;
height: 40px;
}
.panel-header {
padding: 12px;
}
.panel-body {
padding: 12px;
}
}

View file

@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2" />
</svg>

After

Width:  |  Height:  |  Size: 346 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-big-down-icon lucide-arrow-big-down"><path d="M15 11a1 1 0 0 0 1 1h2.939a1 1 0 0 1 .75 1.811l-6.835 6.836a1.207 1.207 0 0 1-1.707 0L4.31 13.81a1 1 0 0 1 .75-1.811H8a1 1 0 0 0 1-1V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1z"/></svg>

After

Width:  |  Height:  |  Size: 429 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-icon lucide-bell"><path d="M10.268 21a2 2 0 0 0 3.464 0"/><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"/></svg>

After

Width:  |  Height:  |  Size: 409 B

View file

@ -0,0 +1,23 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 10h.01" />
<path d="M12 14h.01" />
<path d="M12 6h.01" />
<path d="M16 10h.01" />
<path d="M16 14h.01" />
<path d="M16 6h.01" />
<path d="M8 10h.01" />
<path d="M8 14h.01" />
<path d="M8 6h.01" />
<path d="M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3" />
<rect x="4" y="2" width="16" height="20" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 545 B

View file

@ -0,0 +1,19 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M8 6v6" />
<path d="M15 6v6" />
<path d="M2 12h19.6" />
<path d="M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3" />
<circle cx="7" cy="18" r="2" />
<path d="M9 18h5" />
<circle cx="16" cy="18" r="2" />
</svg>

After

Width:  |  Height:  |  Size: 492 B

View file

@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M8 2v4" />
<path d="M16 2v4" />
<path d="M21 14V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8" />
<path d="M3 10h18" />
<path d="m16 20 2 2 4-4" />
</svg>

After

Width:  |  Height:  |  Size: 380 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar-plus2-icon lucide-calendar-plus-2"><path d="M8 2v4"/><path d="M16 2v4"/><rect width="18" height="18" x="3" y="4" rx="2"/><path d="M3 10h18"/><path d="M10 16h4"/><path d="M12 14v4"/></svg>

After

Width:  |  Height:  |  Size: 399 B

View file

@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z" />
<circle cx="12" cy="13" r="3" />
</svg>

After

Width:  |  Height:  |  Size: 437 B

View file

@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2" />
<circle cx="7" cy="17" r="2" />
<path d="M9 17h6" />
<circle cx="17" cy="17" r="2" />
</svg>

After

Width:  |  Height:  |  Size: 486 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-column-icon lucide-chart-column"><path d="M3 3v16a2 2 0 0 0 2 2h16"/><path d="M18 17V9"/><path d="M13 17V5"/><path d="M8 17v-3"/></svg>

After

Width:  |  Height:  |  Size: 344 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>

After

Width:  |  Height:  |  Size: 272 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left-icon lucide-chevron-left"><path d="m15 18-6-6 6-6"/></svg>

After

Width:  |  Height:  |  Size: 274 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right"><path d="m9 18 6-6-6-6"/></svg>

After

Width:  |  Height:  |  Size: 275 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up-icon lucide-chevron-up"><path d="m18 15-6-6-6 6"/></svg>

After

Width:  |  Height:  |  Size: 270 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-alert-icon lucide-circle-alert"><circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/></svg>

After

Width:  |  Height:  |  Size: 360 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-icon lucide-circle-check"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>

After

Width:  |  Height:  |  Size: 305 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-plus-icon lucide-circle-plus"><circle cx="12" cy="12" r="10"/><path d="M8 12h8"/><path d="M12 8v8"/></svg>

After

Width:  |  Height:  |  Size: 316 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-x-icon lucide-circle-x"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>

After

Width:  |  Height:  |  Size: 313 B

View file

@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="14" height="14" x="8" y="8" rx="2" ry="2" />
<path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" />
</svg>

After

Width:  |  Height:  |  Size: 339 B

View file

@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21.54 15H17a2 2 0 0 0-2 2v4.54" />
<path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17" />
<path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05" />
<circle cx="12" cy="12" r="10" />
</svg>

After

Width:  |  Height:  |  Size: 469 B

View file

@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z" />
</svg>

After

Width:  |  Height:  |  Size: 393 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flower-icon lucide-flower"><circle cx="12" cy="12" r="3"/><path d="M12 16.5A4.5 4.5 0 1 1 7.5 12 4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 1 1 4.5 4.5 4.5 4.5 0 1 1-4.5 4.5"/><path d="M12 7.5V9"/><path d="M7.5 12H9"/><path d="M16.5 12H15"/><path d="M12 16.5V15"/><path d="m8 8 1.88 1.88"/><path d="M14.12 9.88 16 8"/><path d="m8 16 1.88-1.88"/><path d="M14.12 14.12 16 16"/></svg>

After

Width:  |  Height:  |  Size: 572 B

View file

@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" />
<path d="M2 12h20" />
</svg>

After

Width:  |  Height:  |  Size: 331 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-goal-icon lucide-goal"><path d="M12 13V2l8 4-8 4"/><path d="M20.561 10.222a9 9 0 1 1-12.55-5.29"/><path d="M8.002 9.997a5 5 0 1 0 8.9 2.02"/></svg>

After

Width:  |  Height:  |  Size: 350 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-grid2x2-icon lucide-grid-2x2"><path d="M12 3v18"/><path d="M3 12h18"/><rect x="3" y="3" width="18" height="18" rx="2"/></svg>

After

Width:  |  Height:  |  Size: 328 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart-icon lucide-heart"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"/></svg>

After

Width:  |  Height:  |  Size: 395 B

View file

@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" />
<path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
</svg>

After

Width:  |  Height:  |  Size: 383 B

View file

@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M12 16v-4" />
<path d="M12 8h.01" />
</svg>

After

Width:  |  Height:  |  Size: 294 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers-icon lucide-layers"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"/><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"/><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"/></svg>

After

Width:  |  Height:  |  Size: 526 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-leaf-icon lucide-leaf"><path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"/><path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"/></svg>

After

Width:  |  Height:  |  Size: 384 B

View file

@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5" />
<path d="M9 18h6" />
<path d="M10 22h4" />
</svg>

After

Width:  |  Height:  |  Size: 371 B

View file

@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />
</svg>

After

Width:  |  Height:  |  Size: 359 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lock-open-icon lucide-lock-open"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 9.9-1"/></svg>

After

Width:  |  Height:  |  Size: 334 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail-icon lucide-mail"><path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"/><rect x="2" y="4" width="20" height="16" rx="2"/></svg>

After

Width:  |  Height:  |  Size: 332 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-check-icon lucide-map-pin-check"><path d="M19.43 12.935c.357-.967.57-1.955.57-2.935a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32.197 32.197 0 0 0 .813-.728"/><circle cx="12" cy="10" r="3"/><path d="m16 18 2 2 4-4"/></svg>

After

Width:  |  Height:  |  Size: 457 B

View file

@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M19.914 11.105A7.298 7.298 0 0 0 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738" />
<circle cx="12" cy="10" r="3" />
<path d="M16 18h6" />
<path d="M19 15v6" />
</svg>

After

Width:  |  Height:  |  Size: 434 B

View file

@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" />
<circle cx="12" cy="10" r="3" />
</svg>

After

Width:  |  Height:  |  Size: 359 B

View file

@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m11 19-1.106-.552a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0l4.212 2.106a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619V12" />
<path d="M15 5.764V12" />
<path d="M18 15v6" />
<path d="M21 18h-6" />
<path d="M9 3.236v15" />
</svg>

After

Width:  |  Height:  |  Size: 513 B

View file

@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z" />
<path d="M15 5.764v15" />
<path d="M9 3.236v15" />
</svg>

After

Width:  |  Height:  |  Size: 516 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle-question-mark-icon lucide-message-circle-question-mark"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>

After

Width:  |  Height:  |  Size: 485 B

View file

@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z" />
</svg>

After

Width:  |  Height:  |  Size: 421 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pocket-knife-icon lucide-pocket-knife"><path d="M3 2v1c0 1 2 1 2 2S3 6 3 7s2 1 2 2-2 1-2 2 2 1 2 2"/><path d="M18 6h.01"/><path d="M6 18h.01"/><path d="M20.83 8.83a4 4 0 0 0-5.66-5.66l-12 12a4 4 0 1 0 5.66 5.66Z"/><path d="M18 11.66V22a4 4 0 0 0 4-4V6"/></svg>

After

Width:  |  Height:  |  Size: 463 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-ccw-icon lucide-refresh-ccw"><path d="M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"/><path d="M16 16h5v5"/></svg>

After

Width:  |  Height:  |  Size: 413 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-ccw-icon lucide-rotate-ccw"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/></svg>

After

Width:  |  Height:  |  Size: 325 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-route-icon lucide-route"><circle cx="6" cy="19" r="3"/><path d="M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15"/><circle cx="18" cy="5" r="3"/></svg>

After

Width:  |  Height:  |  Size: 358 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-save-icon lucide-save"><path d="M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"/><path d="M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"/><path d="M7 3v4a1 1 0 0 0 1 1h7"/></svg>

After

Width:  |  Height:  |  Size: 429 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search-icon lucide-search"><path d="m21 21-4.34-4.34"/><circle cx="11" cy="11" r="8"/></svg>

After

Width:  |  Height:  |  Size: 295 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings-icon lucide-settings"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"/><circle cx="12" cy="12" r="3"/></svg>

After

Width:  |  Height:  |  Size: 610 B

View file

@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 2v13" />
<path d="m16 6-4-4-4 4" />
<path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" />
</svg>

After

Width:  |  Height:  |  Size: 318 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check-icon lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></svg>

After

Width:  |  Height:  |  Size: 447 B

View file

@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="8" cy="21" r="1" />
<circle cx="19" cy="21" r="1" />
<path d="M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12" />
</svg>

After

Width:  |  Height:  |  Size: 373 B

View file

@ -0,0 +1,24 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m10 20-1.25-2.5L6 18" />
<path d="M10 4 8.75 6.5 6 6" />
<path d="m14 20 1.25-2.5L18 18" />
<path d="m14 4 1.25 2.5L18 6" />
<path d="m17 21-3-6h-4" />
<path d="m17 3-3 6 1.5 3" />
<path d="M2 12h6.5L10 9" />
<path d="m20 10-1.5 2 1.5 2" />
<path d="M22 12h-6.5L14 15" />
<path d="m4 10 1.5 2L4 14" />
<path d="m7 21 3-6-1.5-3" />
<path d="m7 3 3 6h4" />
</svg>

After

Width:  |  Height:  |  Size: 596 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-dashed-mouse-pointer-icon lucide-square-dashed-mouse-pointer"><path d="M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z"/><path d="M5 3a2 2 0 0 0-2 2"/><path d="M19 3a2 2 0 0 1 2 2"/><path d="M5 21a2 2 0 0 1-2-2"/><path d="M9 3h1"/><path d="M9 21h2"/><path d="M14 3h1"/><path d="M3 9v1"/><path d="M21 9v2"/><path d="M3 14v1"/></svg>

After

Width:  |  Height:  |  Size: 623 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-pen-icon lucide-square-pen"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"/></svg>

After

Width:  |  Height:  |  Size: 445 B

View file

@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z" />
</svg>

After

Width:  |  Height:  |  Size: 588 B

Some files were not shown because too many files have changed in this diff Show more