2024-05-18 06:13:29 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2025-06-09 07:39:25 -04:00
|
|
|
require 'sidekiq/web'
|
|
|
|
|
|
2022-04-06 14:46:10 -04:00
|
|
|
Rails.application.routes.draw do
|
2024-11-03 08:37:01 -05:00
|
|
|
mount ActionCable.server => '/cable'
|
2024-05-18 07:35:48 -04:00
|
|
|
mount Rswag::Api::Engine => '/api-docs'
|
|
|
|
|
mount Rswag::Ui::Engine => '/api-docs'
|
2025-04-11 13:13:46 -04:00
|
|
|
|
2025-06-09 07:39:25 -04:00
|
|
|
unless DawarichSettings.self_hosted?
|
|
|
|
|
Sidekiq::Web.use(Rack::Auth::Basic) do |username, password|
|
|
|
|
|
ActiveSupport::SecurityUtils.secure_compare(
|
|
|
|
|
::Digest::SHA256.hexdigest(username),
|
|
|
|
|
::Digest::SHA256.hexdigest(ENV['SIDEKIQ_USERNAME'])
|
|
|
|
|
) &
|
|
|
|
|
ActiveSupport::SecurityUtils.secure_compare(
|
|
|
|
|
::Digest::SHA256.hexdigest(password),
|
|
|
|
|
::Digest::SHA256.hexdigest(ENV['SIDEKIQ_PASSWORD'])
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2025-04-11 13:13:46 -04:00
|
|
|
authenticate :user, lambda { |u|
|
|
|
|
|
(u.admin? && DawarichSettings.self_hosted?) ||
|
|
|
|
|
(u.admin? && ENV['SIDEKIQ_USERNAME'].present? && ENV['SIDEKIQ_PASSWORD'].present?)
|
|
|
|
|
} do
|
2025-06-09 07:39:25 -04:00
|
|
|
mount Sidekiq::Web => '/sidekiq'
|
2024-07-16 16:26:16 -04:00
|
|
|
end
|
2025-12-30 11:33:56 -05:00
|
|
|
mount RailsPulse::Engine => '/rails_pulse'
|
2024-05-25 06:57:39 -04:00
|
|
|
|
2025-06-09 07:39:25 -04:00
|
|
|
# We want to return a nice error message if the user is not authorized to access Sidekiq
|
|
|
|
|
match '/sidekiq' => redirect { |_, request|
|
2024-07-19 14:57:14 -04:00
|
|
|
request.flash[:error] = 'You are not authorized to perform this action.'
|
|
|
|
|
'/'
|
|
|
|
|
}, via: :get
|
|
|
|
|
|
2024-06-20 17:57:00 -04:00
|
|
|
resources :settings, only: :index
|
2024-06-30 06:31:21 -04:00
|
|
|
namespace :settings do
|
2025-06-02 14:53:35 -04:00
|
|
|
resources :background_jobs, only: %i[index create]
|
2025-06-25 15:14:33 -04:00
|
|
|
resources :users, only: %i[index create destroy edit update] do
|
|
|
|
|
collection do
|
|
|
|
|
get 'export'
|
|
|
|
|
post 'import'
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2025-02-10 14:37:20 -05:00
|
|
|
resources :maps, only: %i[index]
|
|
|
|
|
patch 'maps', to: 'maps#update'
|
2024-06-30 06:31:21 -04:00
|
|
|
end
|
2024-06-20 17:57:00 -04:00
|
|
|
|
|
|
|
|
patch 'settings', to: 'settings#update'
|
2024-05-18 06:13:29 -04:00
|
|
|
get 'settings/theme', to: 'settings#theme'
|
2024-06-20 17:57:00 -04:00
|
|
|
post 'settings/generate_api_key', to: 'settings#generate_api_key', as: :generate_api_key
|
2024-04-04 14:14:11 -04:00
|
|
|
|
2024-03-15 18:27:31 -04:00
|
|
|
resources :imports
|
2024-07-27 06:35:47 -04:00
|
|
|
resources :visits, only: %i[index update]
|
2024-08-25 14:19:02 -04:00
|
|
|
resources :places, only: %i[index destroy]
|
2024-06-12 14:29:38 -04:00
|
|
|
resources :exports, only: %i[index create destroy]
|
2024-11-28 10:11:04 -05:00
|
|
|
resources :trips
|
2025-11-24 13:45:09 -05:00
|
|
|
resources :tags, except: [:show]
|
2025-09-27 07:23:33 -04:00
|
|
|
|
2025-09-28 07:10:07 -04:00
|
|
|
# Family management routes (only if feature is enabled)
|
2025-10-04 16:39:47 -04:00
|
|
|
if DawarichSettings.family_feature_enabled?
|
|
|
|
|
resource :family, only: %i[show new create edit update destroy] do
|
2025-10-07 12:38:06 -04:00
|
|
|
resources :invitations, except: %i[edit update], controller: 'family/invitations'
|
2025-10-04 16:39:47 -04:00
|
|
|
resources :members, only: %i[destroy], controller: 'family/memberships'
|
2025-11-24 13:45:09 -05:00
|
|
|
|
|
|
|
|
patch 'location_sharing', to: 'family/location_sharing#update', as: :location_sharing
|
2025-09-27 07:23:33 -04:00
|
|
|
end
|
2025-10-04 16:39:47 -04:00
|
|
|
|
|
|
|
|
get 'invitations/:token', to: 'family/invitations#show', as: :public_invitation
|
2025-10-07 12:38:06 -04:00
|
|
|
post 'family/memberships', to: 'family/memberships#create', as: :accept_family_invitation
|
2025-09-27 07:23:33 -04:00
|
|
|
end
|
|
|
|
|
|
2024-05-23 14:12:23 -04:00
|
|
|
resources :points, only: %i[index] do
|
|
|
|
|
collection do
|
|
|
|
|
delete :bulk_destroy
|
|
|
|
|
end
|
|
|
|
|
end
|
2024-07-04 16:20:12 -04:00
|
|
|
resources :notifications, only: %i[index show destroy]
|
2024-07-04 17:00:07 -04:00
|
|
|
post 'notifications/mark_as_read', to: 'notifications#mark_as_read', as: :mark_notifications_as_read
|
2024-12-15 11:28:59 -05:00
|
|
|
post 'notifications/destroy_all', to: 'notifications#destroy_all', as: :delete_all_notifications
|
2024-03-24 14:25:33 -04:00
|
|
|
resources :stats, only: :index do
|
|
|
|
|
collection do
|
2024-12-20 09:26:25 -05:00
|
|
|
put :update_all
|
2024-03-24 14:25:33 -04:00
|
|
|
end
|
|
|
|
|
end
|
2024-03-24 14:46:55 -04:00
|
|
|
get 'stats/:year', to: 'stats#show', constraints: { year: /\d{4}/ }
|
2025-09-13 11:04:48 -04:00
|
|
|
get 'stats/:year/:month', to: 'stats#month', constraints: { year: /\d{4}/, month: /(0?[1-9]|1[0-2])/ }
|
2024-12-20 09:26:25 -05:00
|
|
|
put 'stats/:year/:month/update',
|
|
|
|
|
to: 'stats#update',
|
|
|
|
|
as: :update_year_month_stats,
|
|
|
|
|
constraints: { year: /\d{4}/, month: /\d{1,2}|all/ }
|
2025-09-29 16:27:07 -04:00
|
|
|
get 'shared/month/:uuid', to: 'shared/stats#show', as: :shared_stat
|
2025-09-12 15:08:45 -04:00
|
|
|
|
|
|
|
|
# Sharing management endpoint (requires auth)
|
2025-09-11 14:41:43 -04:00
|
|
|
patch 'stats/:year/:month/sharing',
|
2025-09-12 15:08:45 -04:00
|
|
|
to: 'shared/stats#update',
|
2025-09-11 14:41:43 -04:00
|
|
|
as: :sharing_stats,
|
|
|
|
|
constraints: { year: /\d{4}/, month: /\d{1,2}/ }
|
|
|
|
|
|
2025-12-30 11:33:56 -05:00
|
|
|
# User digests routes (yearly/monthly digest reports)
|
|
|
|
|
scope module: 'users' do
|
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 14:05:04 -05:00
|
|
|
resources :digests, only: %i[index create show destroy], param: :year, as: :users_digests,
|
|
|
|
|
constraints: { year: /\d{4}/ }
|
2025-12-30 11:33:56 -05:00
|
|
|
end
|
|
|
|
|
get 'shared/digest/:uuid', to: 'shared/digests#show', as: :shared_users_digest
|
|
|
|
|
patch 'digests/:year/sharing',
|
|
|
|
|
to: 'shared/digests#update',
|
|
|
|
|
as: :sharing_users_digest,
|
|
|
|
|
constraints: { year: /\d{4}/ }
|
|
|
|
|
|
2023-10-21 06:43:31 -04:00
|
|
|
root to: 'home#index'
|
2025-01-15 15:52:59 -05:00
|
|
|
|
2025-09-21 06:46:59 -04:00
|
|
|
get 'auth/ios/success', to: 'auth/ios#success', as: :ios_success
|
|
|
|
|
|
2025-09-28 14:53:50 -04:00
|
|
|
devise_for :users, controllers: {
|
2025-09-30 12:43:26 -04:00
|
|
|
registrations: 'users/registrations',
|
2025-11-24 13:45:09 -05:00
|
|
|
sessions: 'users/sessions',
|
|
|
|
|
omniauth_callbacks: 'users/omniauth_callbacks'
|
2025-09-28 14:53:50 -04:00
|
|
|
}
|
2024-06-30 06:31:21 -04:00
|
|
|
|
2025-07-26 06:14:08 -04:00
|
|
|
resources :metrics, only: [:index]
|
|
|
|
|
|
2025-12-06 14:54:49 -05:00
|
|
|
# Map namespace with versioning
|
|
|
|
|
namespace :map do
|
|
|
|
|
get '/v1', to: 'leaflet#index', as: :v1
|
|
|
|
|
get '/v2', to: 'maplibre#index', as: :v2
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Backward compatibility redirects
|
|
|
|
|
get '/map', to: 'map/leaflet#index'
|
|
|
|
|
get '/maps/v2', to: redirect('/map/v2')
|
2024-03-15 18:27:31 -04:00
|
|
|
|
|
|
|
|
namespace :api do
|
|
|
|
|
namespace :v1 do
|
2024-11-26 08:46:26 -05:00
|
|
|
get 'photos', to: 'photos#index'
|
2024-09-05 15:16:40 -04:00
|
|
|
get 'health', to: 'health#index'
|
2024-08-28 14:24:35 -04:00
|
|
|
patch 'settings', to: 'settings#update'
|
|
|
|
|
get 'settings', to: 'settings#index'
|
2025-01-20 09:17:56 -05:00
|
|
|
get 'users/me', to: 'users#me'
|
2024-08-28 14:24:35 -04:00
|
|
|
|
2025-12-06 14:54:49 -05:00
|
|
|
resources :areas, only: %i[index show create update destroy]
|
2025-11-24 13:45:09 -05:00
|
|
|
resources :places, only: %i[index show create update destroy] do
|
|
|
|
|
collection do
|
|
|
|
|
get 'nearby'
|
|
|
|
|
end
|
|
|
|
|
end
|
2025-08-31 06:08:33 -04:00
|
|
|
resources :locations, only: %i[index] do
|
|
|
|
|
collection do
|
|
|
|
|
get 'suggestions'
|
|
|
|
|
end
|
|
|
|
|
end
|
2025-12-06 14:54:49 -05:00
|
|
|
resources :points, only: %i[index create update destroy] do
|
2025-11-04 15:21:20 -05:00
|
|
|
collection do
|
|
|
|
|
delete :bulk_destroy
|
|
|
|
|
end
|
|
|
|
|
end
|
2025-12-06 14:54:49 -05:00
|
|
|
resources :visits, only: %i[index show create update destroy] do
|
2025-03-03 14:11:21 -05:00
|
|
|
get 'possible_places', to: 'visits/possible_places#index', on: :member
|
2025-03-05 14:04:26 -05:00
|
|
|
collection do
|
|
|
|
|
post 'merge', to: 'visits#merge'
|
|
|
|
|
post 'bulk_update', to: 'visits#bulk_update'
|
|
|
|
|
end
|
2025-03-03 14:11:21 -05:00
|
|
|
end
|
|
|
|
|
resources :stats, only: :index
|
2025-11-24 13:45:09 -05:00
|
|
|
resources :tags, only: [] do
|
|
|
|
|
collection do
|
|
|
|
|
get 'privacy_zones'
|
|
|
|
|
end
|
|
|
|
|
end
|
2024-07-21 10:45:29 -04:00
|
|
|
|
2024-04-06 13:09:38 -04:00
|
|
|
namespace :overland do
|
|
|
|
|
resources :batches, only: :create
|
|
|
|
|
end
|
2024-05-25 06:57:39 -04:00
|
|
|
|
|
|
|
|
namespace :owntracks do
|
|
|
|
|
resources :points, only: :create
|
|
|
|
|
end
|
2024-11-01 15:49:59 -04:00
|
|
|
|
|
|
|
|
namespace :countries do
|
|
|
|
|
resources :borders, only: :index
|
2024-12-11 16:00:33 -05:00
|
|
|
resources :visited_cities, only: :index
|
2024-11-01 15:49:59 -04:00
|
|
|
end
|
2024-11-26 10:36:02 -05:00
|
|
|
|
2024-12-11 14:34:49 -05:00
|
|
|
namespace :points do
|
|
|
|
|
get 'tracked_months', to: 'tracked_months#index'
|
2024-11-01 15:49:59 -04:00
|
|
|
end
|
2024-11-26 10:36:02 -05:00
|
|
|
|
2024-11-26 14:18:08 -05:00
|
|
|
resources :photos, only: %i[index] do
|
2024-11-26 10:36:02 -05:00
|
|
|
member do
|
|
|
|
|
get 'thumbnail', constraints: { id: %r{[^/]+} }
|
|
|
|
|
end
|
|
|
|
|
end
|
2025-02-11 14:45:36 -05:00
|
|
|
|
2025-02-11 15:04:12 -05:00
|
|
|
namespace :maps do
|
|
|
|
|
resources :tile_usage, only: [:create]
|
2025-09-12 02:33:51 -04:00
|
|
|
resources :hexagons, only: [:index] do
|
|
|
|
|
collection do
|
|
|
|
|
get :bounds
|
|
|
|
|
end
|
|
|
|
|
end
|
2025-02-11 15:04:12 -05:00
|
|
|
end
|
2025-04-19 07:18:39 -04:00
|
|
|
|
2025-11-24 13:45:09 -05:00
|
|
|
namespace :families do
|
|
|
|
|
resources :locations, only: [:index]
|
2025-09-29 15:31:24 -04:00
|
|
|
end
|
|
|
|
|
|
2025-04-19 07:18:39 -04:00
|
|
|
post 'subscriptions/callback', to: 'subscriptions#callback'
|
2024-03-15 18:27:31 -04:00
|
|
|
end
|
|
|
|
|
end
|
2022-04-06 14:46:10 -04:00
|
|
|
end
|