Commit Graph

58 Commits

Author SHA1 Message Date
slothful-vassal
6baeafe755 waypoint editing while drawing a route (#1060)
* waypoint editing while drawing a route

* fix waypoint click while drawing

---------

Co-authored-by: Christian Beutel <>
2026-06-16 19:55:46 +02:00
Pål Håland
197cd8d04e feat: implement server-side map clustering (#991)
* feat: meilisearch bounding box intersection and map filtering

* feat: tiered clustering and polyline filtering based on bounding box diagonal

Addressing review comments with optimized performance and data accuracy:
- Implemented a two-tiered search strategy (Summary vs. Detailed) to provide 100% accurate cluster counts while minimizing metadata traffic.
- Added a client-side ID-based cache to eliminate redundant network requests for trails already in memory.
- Introduced tiered 'detail shedding' that dynamically hides small trail lines when zooming out to maintain smooth panning performance.
- Fixed Svelte 5 reactivity issues to ensure clusters reappear instantly when trail detail is shed.
- Consolidated zoom thresholds into centralized constants for system-wide consistency.
- Updated Meilisearch configuration to support efficient ID-based filtering.

* feat: implement server-side map clustering using Meilisearch and Supercluster

- Implemented SvelteKit server-side clustering route at `/api/v1/search/trails/cluster` using the `supercluster` library.
- Integrated backend search results with the new clustering endpoint to improve performance for large trail datasets.
- Fixed Svelte 5 reactivity in `MapWithElevationMaplibre.svelte` by making `mapLoaded` reactive and fixing destructuring of `` map data.
- Removed obsolete client-side zoom constraints (`minzoom`/`maxzoom`) from `TrailLayer`, `PreviewLayer`, and `ClusterLayer` to allow dynamic visibility controlled by backend attributes.
- Fixed a bug where unauthenticated users generated invalid Meilisearch filters.
- Optimized map page performance by caching bounding box and filter values in the route loader.
- Updated `ClusterLayer` font to `Noto Sans Regular` to match available tileserver resources.

* feat: implement dynamic polyline visibility based on result density

- Replaced static zoom-based diagonal thresholds with a dynamic "Top N" approach for polyline visibility.
- Updated `/api/v1/search/trails/cluster` to mark only the top `MAP_MAX_POLYLINES` (default 100) trails by bounding box diagonal as "large".
- Modified `trails_search_bounding_box` store function to always fetch polylines for trails marked as large, regardless of zoom level.
- Removed obsolete `MAP_*_ZOOM_DIAGONAL_LIMIT` constants and simplified map layer constructors by removing tier-based filtering.
- Updated environment configurations and documentation to use the new `PUBLIC_MAP_MAX_POLYLINES` variable.

* refactor: remove obsolete zoom-based map clustering thresholds

Following the transition to dynamic server-side clustering based on result density (Top N polylines), this commit removes all remaining zoom-based thresholds and logic.

- Removed PUBLIC_MAP_LOW_ZOOM_THRESHOLD, PUBLIC_MAP_MEDIUM_ZOOM_THRESHOLD, and PUBLIC_MAP_HIGH_ZOOM_THRESHOLD environment variables.
- Removed the 'mapClusterMinZoom' user setting from the schema, models, and settings UI.
- Simplified the map component and MapLibre layer managers by removing unused 'clusterMinZoom', 'minZoom', and 'maxZoom' parameters.
- Cleaned up obsolete 'map-cluster-zoom-level' translation keys across all locales.
- Updated documentation to reflect the removal of these variables.

* chore: remove map clustering debug logs

* docs: update changelog and fix global zoom feature disappearance

* fix: address PR reviews and refine map cluster/preview visuals

* feat: implement configurable map cluster zoom and trail start marker settings

* feat: render single unclustered shedded trails as start markers instead of cluster circles

* minor fixes

* minor ui changes

* fix missing entries in map list

* remove redundant map clustering zoom clamp

* fix merge issues

* fix merge issues

* fixes

* hide popup for trails without details

* several improvements

* prevent import of client trail_store in server cluster code

* update changelog

---------

Co-authored-by: slothful-vassal <89943360+slothful-vassal@users.noreply.github.com>
2026-06-07 13:00:26 +02:00
slothful-vassal
44cd092065 Improve trail planning: option to re-order route anchors (#1007)
* trail anchor list added

* add search location card to extend route endpoint in drawing mode

* add POI popup endpoint action in route drawing mode

* fix anchor stats, improve anchor list entries and refine route marker behavior

* fix map marker spinner

* docs updated

* fix spinner when delete an anchor

* further improvements

* fix adding first anchor from POI

* optimize drag handle area

---------

Co-authored-by: Flomp <Flomp@users.noreply.github.com>
2026-06-06 11:56:12 +02:00
Flomp
d2ac49470a Federation Refactoring & Architecture Improvements (#930)
* initial commit

* add lists

* update permissions

* fix waypoint create

* needs_full_sync for activitypub trails

* fixes build issues

* fix list get

* further CSRF protection

* update API docs

* adds rate limiter

* fix tiptap mentions

* a bit more cleanup of main.go

* Fix migration order

* fixes reviewed notes

* require context for activitpub server calls

* improve hashing for identifier

* fix copy paste error

* fix sync trail/list issues

* fix summit log/comment duplicates

* adaptions after trail merge

* fix dockerignore

---------

Co-authored-by: Christian Beutel <>
Co-authored-by: slothful-vassal <89943360+slothful-vassal@users.noreply.github.com>
2026-05-09 17:30:34 +02:00
slothful-vassal
7e84e39cda fix hillshading visibility (#942)
Co-authored-by: Flomp <Flomp@users.noreply.github.com>
2026-04-27 16:31:58 +02:00
Flomp
0623287206 initial commit (#881)
Co-authored-by: Christian Beutel <>
2026-03-10 21:48:54 +01:00
slothful-vassal
bd293e6739 new setting: begin drawing a new trail from current location (#592)
* new setting: begin drawing a new trail from  current location

* apply only when drawing

* fix application when editing an existing route

* documentation

* ignore pointer events on location circles

* fix i18n

---------

Co-authored-by: Flomp <Flomp@users.noreply.github.com>
Co-authored-by: Christian Beutel <>
2026-02-28 10:15:43 +01:00
slothful-vassal
b09675f2b2 Select number of search items per page (#577)
* select items per pages

* fix 'all'

* fix page switch

* fix filter update when 'all'

* startDrawing: set map to current user position

* remove startDrawing change from other branch

* handle 413

* remove 'all', cange increment, use local storage

* remove obsolete import, fix 413
2025-10-04 17:22:46 +02:00
Christian Beutel
1cc70c4e4b adds polyline simplyfication 2025-08-23 14:28:00 +02:00
Christian Beutel
380c1802f2 adds trail preview on high map zoom 2025-08-22 15:41:34 +02:00
Christian Beutel
482d90c893 allows categories with spaces in filter 2025-08-04 19:04:10 +02:00
Christian Beutel
b7c06fcaf2 switches to layer manager 2025-08-04 18:01:26 +02:00
Christian Beutel
1c10e90db7 speed improvements for map (tbc) 2025-08-02 22:02:59 +02:00
Christian Beutel
634c34ce65 adds split gpx function 2025-07-20 11:35:21 +02:00
Christian Beutel
ef1571c54e adds route edit menu 2025-07-19 19:40:11 +02:00
Christian Beutel
f46f8055c4 fixes POI overlay 2025-07-18 20:02:06 +02:00
Christian Beutel
eac9b2e489 adds layer manager 2025-07-13 22:22:08 +02:00
Christian Beutel
baa7bb4ecf add overlay layers 2025-07-12 20:37:51 +02:00
Christian Beutel
95377f03c3 fixes hidden trail after map style switch 2025-07-10 13:45:07 +02:00
Christian Beutel
247f02c2fc allows removing hillshade 2025-07-04 11:57:30 +02:00
Christian Beutel
87334e2532 updates default map 2025-06-24 18:33:45 +02:00
Christian Beutel
369202ec42 fixes map attribution && adds OpenFreeMap 2025-06-21 13:44:11 +02:00
Flomp
9276690d60 Federation (#327)
* initial commit federation

* more federation

* more federation

* more federation

* completes follow, accept, undo

* add trail create activity

* process trail create activity

* more trail create activity

* adds missing endpoints

* adds update and delete activity

* adds comment activities

* adds activities back

* adds summit logs activities

* deletes follow counts table

* fixes migrations

* fixes migrations

* fixes migrations

* fixes migrations

* adds remote profiles

* ctd

* ctd

* we are getting closer...

* adds public summit logs

* fixes federated trails in lists

* adds remote lists

* adds list activites

* fixes lists

* adds notifications

* adds iri redirect

* fixes comments and summitlogs

* fixes follows and profiles

* adds asynchronous send

* fixes list search

* adds encryption key

* bug fixes

* fixes activity signing

* removes custon activity object types

* adds html editor

* fixes html editor

* fixes display issues on mastodon

* adds federated sharing

* finishes announcements

* fixes small summit log issues

* adds trail likes

* finalizes likes

* fixes images for komoot

* add disable federation option

* adds private profiles

* updates docs

* adds federated comments

* adds trail and comments actvitiypub routes

* adds mentions to editor

* adds mentions to trails, comments, summit logs

* updates theme

* updates theme

* update docs

* update docs

* updates docs

* fixes various frontend problems

* fixes activitypub follows api

* updates docs

* updates docs

---------

Co-authored-by: Christian Beutel <>
2025-06-21 10:09:22 +02:00
Christian Beutel
e1bc3be698 map performance improvements 2025-04-24 19:22:32 +02:00
Christian Beutel
da253a5867 fixes list not loading with link 2025-04-21 20:54:17 +02:00
Christian Beutel
29b8a0352e adds clustering on map 2025-04-16 18:49:46 +02:00
Christian Beutel
5db80db06f fixes tags in list view 2025-04-15 13:18:52 +02:00
Christian Beutel
5390b9cf72 major performance improvements map 2025-04-14 20:22:39 +02:00
Christian Beutel
88f6d6e67c adds toggle hotkeys to map 2025-03-29 15:31:34 +01:00
Christian Beutel
1f3aabda37 adds proper total calculation for routing 2025-03-29 14:27:55 +01:00
Christian Beutel
4e5c900ed9 fixes map style switch trail display 2025-03-22 13:36:11 +01:00
Christian Beutel
8706fe7ac9 adds video support 2025-03-16 18:01:12 +01:00
Christian Beutel
ae3ef0e0a1 updates trail panel view 2025-01-28 00:38:27 +01:00
Christian Beutel
e837b6e04b updates trail panel view 2025-01-27 19:38:54 +01:00
Christian Beutel
3721b7f537 Migrates to svelte 5 2025-01-24 17:46:13 +01:00
Christian Beutel
72d6701a51 adds geolocation to map 2025-01-16 00:32:53 +01:00
Christian Beutel
aeaf8e49ce cosmetic changes 2025-01-12 19:02:40 +01:00
Christian Beutel
7005b3677f move crosshair on trail hover 2025-01-12 15:29:37 +01:00
Christian Beutel
35f12f1816 adds route editing capabilities 2025-01-11 22:43:32 +01:00
Christian Beutel
0bd62653f6 hot fix for missing privacy settings 2025-01-05 19:44:37 +01:00
Christian Beutel
788690086e adds email notifications 2025-01-04 14:24:00 +01:00
Christian Beutel
218c4700de fixes missing terrain settings 2024-12-05 19:24:43 +01:00
Christian Beutel
8adaa52f81 fixes waypoint move after save bug 2024-12-05 01:17:51 +01:00
Christian Beutel
c611a58195 adds hillshading 2024-12-05 00:10:37 +01:00
Christian Beutel
c42ca754df adds direction carets to map 2024-12-04 21:26:41 +01:00
Christian Beutel
9901f2f4bf changes colors of trails on map 2024-12-02 21:22:47 +01:00
Christian Beutel
4d6657b64e adds loaders for trail cards and lists 2024-12-02 20:21:25 +01:00
Christian Beutel
a5a7532559 fixes edit map reactivity issues 2024-12-02 18:50:00 +01:00
Christian Beutel
b0abb52ce8 fixes preferredMapStyleIndex 2024-12-02 16:19:16 +01:00
Christian Beutel
410039d42e adds tooltips for elevation profile wps 2024-12-02 01:45:14 +01:00