From 73e1f84e0177ed8a62a0e6b0926fb4c7c52ce220 Mon Sep 17 00:00:00 2001 From: Daniel Graf Date: Tue, 23 Jun 2026 04:52:07 +0200 Subject: [PATCH 01/11] - feat(1045): add `DatabaseJanitorService` to clean up old API token usages - feat(1045): add configuration for database janitor schedule - feat(1045): create default device for new users in `UserService` --- .../service/DatabaseJanitorService.java | 26 +++++++++++++++++++ .../reitti/service/UserService.java | 1 + src/main/resources/application.properties | 2 ++ 3 files changed, 29 insertions(+) create mode 100644 src/main/java/com/dedicatedcode/reitti/service/DatabaseJanitorService.java diff --git a/src/main/java/com/dedicatedcode/reitti/service/DatabaseJanitorService.java b/src/main/java/com/dedicatedcode/reitti/service/DatabaseJanitorService.java new file mode 100644 index 00000000..88a162c8 --- /dev/null +++ b/src/main/java/com/dedicatedcode/reitti/service/DatabaseJanitorService.java @@ -0,0 +1,26 @@ +package com.dedicatedcode.reitti.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +@Service +public class DatabaseJanitorService { + private static final Logger log = LoggerFactory.getLogger(DatabaseJanitorService.class); + private final JdbcTemplate jdbcTemplate; + + public DatabaseJanitorService(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @Scheduled(cron = "${reitti.db-janitor.schedule}") + public void runJanitor() { + log.info("Running Janitor"); + long start = System.currentTimeMillis(); + jdbcTemplate.update("DELETE FROM api_token_usages WHERE at < now() - interval '1 week';"); + log.info("Clearing old api-token-usages in {}ms", System.currentTimeMillis() - start); + jdbcTemplate.execute("VACUUM ANALYZE;"); + } +} diff --git a/src/main/java/com/dedicatedcode/reitti/service/UserService.java b/src/main/java/com/dedicatedcode/reitti/service/UserService.java index c811a07a..9c612bce 100644 --- a/src/main/java/com/dedicatedcode/reitti/service/UserService.java +++ b/src/main/java/com/dedicatedcode/reitti/service/UserService.java @@ -142,6 +142,7 @@ public User createNewUser(String username, setDefaultMapStyle(createdUser); saveDefaultVisitDetectionParameters(createdUser); saveDefaultTransportationModeDetectionParameters(createdUser); + createDefaultDeviceForUser(createdUser); userSettingsJdbcService.save(userSettings); return createdUser; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index edb3115c..17fd3e9c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -67,6 +67,8 @@ reitti.import.grace-time-seconds=30 reitti.jobs.cleanup.cron=0 0 4 * * ? reitti.jobs.cleanup.max-age-hours=24 +reitti.db-janitor.schedule=0 0 4 * * ? + reitti.geo-point-filter.max-speed-kmh=1000 reitti.geo-point-filter.max-accuracy-meters=100 reitti.geo-point-filter.history-lookback-hours=24 From aef96ae8118a076fefa5b934e779bf81468f71ae Mon Sep 17 00:00:00 2001 From: Daniel Graf Date: Tue, 23 Jun 2026 06:05:05 +0200 Subject: [PATCH 02/11] fix(1045): update Nominatim geocoder default configuration - Adjust `geocode_services` priority and URL for Nominatim geocoder --- .../db/migration/V109__fix_nominatim_default_geocoder.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/resources/db/migration/V109__fix_nominatim_default_geocoder.sql diff --git a/src/main/resources/db/migration/V109__fix_nominatim_default_geocoder.sql b/src/main/resources/db/migration/V109__fix_nominatim_default_geocoder.sql new file mode 100644 index 00000000..bc6fb219 --- /dev/null +++ b/src/main/resources/db/migration/V109__fix_nominatim_default_geocoder.sql @@ -0,0 +1 @@ +UPDATE geocode_services SET priority = 3, type = 'NOMINATIM', url = 'https://nominatim.openstreetmap.org' WHERE url = 'https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat={lat}&lon={lng}'; \ No newline at end of file From eff47cf76ba23c075c4c078a07073887dbc8bf12 Mon Sep 17 00:00:00 2001 From: Daniel Graf Date: Tue, 23 Jun 2026 06:16:33 +0200 Subject: [PATCH 03/11] fix(1045): adjust map panel background transparency --- src/main/resources/static/css/map.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/static/css/map.css b/src/main/resources/static/css/map.css index 96a02847..1bde0726 100644 --- a/src/main/resources/static/css/map.css +++ b/src/main/resources/static/css/map.css @@ -176,7 +176,7 @@ details.maplibregl-ctrl-attrib[open] { backdrop-filter: blur(14px); border: 1px solid var(--panel-line); border-radius: 8px; - background: rgba(255, 255, 255, 0.02); + background: rgba(255, 255, 255, 0.6); box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.04); } From 99acb293b3e0d53cb14c4ea041761f99a23fc994 Mon Sep 17 00:00:00 2001 From: Daniel Graf Date: Tue, 23 Jun 2026 08:51:36 +0200 Subject: [PATCH 04/11] fix(1045): remove deprecated map styles template - Delete unused `map-styles.html` template - Correct attribute handling in map style sharing (proxyTiles, shared) - Fix ordering of shared attribute in `UserMapStyleJdbcService` mapping --- .../repository/UserMapStyleJdbcService.java | 2 +- .../templates/fragments/map-styles.html | 355 ------------------ .../settings/fragments/map-styles.html | 4 +- 3 files changed, 3 insertions(+), 358 deletions(-) delete mode 100644 src/main/resources/templates/fragments/map-styles.html diff --git a/src/main/java/com/dedicatedcode/reitti/repository/UserMapStyleJdbcService.java b/src/main/java/com/dedicatedcode/reitti/repository/UserMapStyleJdbcService.java index 6a3ce248..6d5119b3 100644 --- a/src/main/java/com/dedicatedcode/reitti/repository/UserMapStyleJdbcService.java +++ b/src/main/java/com/dedicatedcode/reitti/repository/UserMapStyleJdbcService.java @@ -49,8 +49,8 @@ public UserMapStyleJdbcService(JdbcTemplate jdbcTemplate) { rs.getString("glyphs_url_override"), rs.getString("sprite_url_override") ), - rs.getBoolean("shared"), rs.getBoolean("default_style"), + rs.getBoolean("shared"), rs.getLong("version") ); diff --git a/src/main/resources/templates/fragments/map-styles.html b/src/main/resources/templates/fragments/map-styles.html deleted file mode 100644 index 75643970..00000000 --- a/src/main/resources/templates/fragments/map-styles.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - -
- - -
- - -
- -
-
-
- -
-
-

Custom Styles

- -
- -
- -
-
-
- - -
-
No custom styles yet
-
-
-
Style name
-
- Vector - · - Tile Template - URL - · Shared - · Proxied -
-
-
- - -
-
-
- - -
- - -
- Edit Custom Style - Add Custom Style -
- -
- - -
- -
- -
-
- -

Tile requests for this style are fetched through Reitti.

-
- -
-
-
- -

Other users can select this style, but only you can edit it.

-
- -
- - - -
- - -
-
- - -
-
- Map Type -
- - -
-
- - -
-
- - -
- -
- -
- Advanced Options -
- - -
-
- - -
-
- - -
-
-
- - -
-
- Style Input -
- - -
-
- - -
- - -
-
- - -
-
- - -
- -
- -
- Tile Settings -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- Source Input -
- - -
-
- - -
- - -
-
- - -
-
- - -
-
- - -
-
- - - diff --git a/src/main/resources/templates/settings/fragments/map-styles.html b/src/main/resources/templates/settings/fragments/map-styles.html index 58151e62..8eb18451 100644 --- a/src/main/resources/templates/settings/fragments/map-styles.html +++ b/src/main/resources/templates/settings/fragments/map-styles.html @@ -210,7 +210,7 @@

+ th:checked="${style?.dataSource.proxyTiles}">