feat: add plugin system (#1034)

* feat: add plugin system

* fix db docker build

* fix hammerhead readme, add strava subscription news to docs

* fixes and sdk improvements

* fix: reduce Meilisearch load, debounce federation sync (#1012)

* optimize meili trail index

* several fixes

---------

Co-authored-by: Flomp <Flomp@users.noreply.github.com>

* Bump svelte from 5.55.5 to 5.56.0 in /docs (#1032)

Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.55.5 to 5.56.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.56.0/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.56.0
  dependency-type: direct:production
...

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

* Release v0.19.2 (#1035)

* chore: release v0.19.2

* add changelog

---------

Co-authored-by: Flomp <26000991+Flomp@users.noreply.github.com>
Co-authored-by: Christian Beutel <>

* speed up plugin sync and several small fixes

* concepts for security improvements and process stability

* improve concept

* security concept implemented

* remove insecure TLS

* worker concept implemented

* fixes and cleanup

* fixes

* docu

* mermaid, namings

* WASM plugin host improvements, plugin logging

* fix db migration

* Improve plugin config and category mapping UI

* fixes

* further fixes

* remove manual test sync

* fix db migration and strava mapping

* type added, UI improvements

* fix plugin card toggle clickable area

* optimize synch status card layout

* plugin type 'trails' instead of 'integration'

* session auth validation in UI

* fix komoot date and waypoints

* improve category mapping

* fix send to hammerhead: trail name

* plugin setup error handling improved

* fix review findings

* re-mapping added

* rename remote_category

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Flomp <Flomp@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Flomp <26000991+Flomp@users.noreply.github.com>
This commit is contained in:
slothful-vassal
2026-06-22 15:00:44 +02:00
committed by GitHub
parent 2e3d8537b8
commit 485ec53f6d
196 changed files with 20947 additions and 5454 deletions

310
plugins/komoot/plugin.json Normal file
View File

@@ -0,0 +1,310 @@
{
"manifestVersion": "1.0",
"id": "komoot",
"type": "trails",
"name": "komoot",
"description": "Imports planned and completed komoot tours, including photos and waypoints, into wanderer.",
"version": "0.1.0",
"runtime": {
"type": "wasm",
"entrypoint": "plugin.wasm"
},
"capabilities": [
{
"name": "list_routes",
"version": "v1",
"export": "list_routes_v1"
},
{
"name": "get_route_detail",
"version": "v1",
"export": "get_route_detail_v1"
},
{
"name": "list_activities",
"version": "v1",
"export": "list_activities_v1"
},
{
"name": "get_activity_detail",
"version": "v1",
"export": "get_activity_detail_v1"
}
],
"auth": {
"contexts": {
"provider_session": {
"type": "session",
"fields": [
"email",
"password"
],
"secretFields": [
"password"
],
"refresh": {
"mode": "plugin",
"function": "refresh_session_v1"
}
}
}
},
"permissions": {
"network": {
"connectors": [
{
"name": "api",
"type": "public_api",
"fixedBaseURL": "https://api.komoot.de",
"allowedPathPrefixes": [
"/v006",
"/v007"
]
},
{
"name": "web",
"type": "public_api",
"fixedBaseURL": "https://www.komoot.com",
"allowedPathPrefixes": [
"/webapi/v007"
]
}
]
},
"auth": [
"provider_session"
],
"downloads": {
"maxBytes": 16777216,
"contentTypes": [
"application/json",
"application/hal+json"
]
}
},
"configSchema": [
{
"key": "after",
"type": "date",
"label": "Start date",
"labels": {
"de": "Startdatum",
"en": "Start date"
},
"description": "Ignore tours before this date.",
"descriptions": {
"de": "Touren vor diesem Datum ignorieren.",
"en": "Ignore tours before this date."
}
}
],
"hostConfig": {
"categoryMapping": {
"hike": "Hiking",
"mountaineering": "Hiking",
"racebike": "Biking",
"e_racebike": "Biking",
"touringbicycle": "Biking",
"e_touringbicycle": "Biking",
"mtb": "Biking",
"e_mtb": "Biking",
"mtb_easy": "Biking",
"e_mtb_easy": "Biking",
"mtb_advanced": "Biking",
"e_mtb_advanced": "Biking",
"downhillbike": "Biking",
"unicycle": "Biking",
"citybike": "Biking",
"jogging": "Walking",
"nordicwalking": "Walking",
"skaten": "Walking",
"other": "Walking",
"climbing": "Climbing",
"nordic": "Skiing",
"skialpin": "Skiing",
"skitour": "Skiing",
"sled": "Skiing",
"snowboard": "Skiing",
"snowshoe": "Skiing"
}
},
"metadata": {
"descriptions": {
"cs": "Synchronizuje vaše trasy z aplikace Komoot s Wandererem v pravidelných intervalech.",
"de": "Importiert geplante und abgeschlossene komoot-Touren inklusive Fotos und Wegpunkten in wanderer.",
"en": "Imports planned and completed komoot tours, including photos and waypoints, into wanderer.",
"es": "Sincroniza tus recorridos de Komoot con Wanderer en intervalos regulares.",
"eu": "Zure komooteko ibilbideak wandererekin sinkronizatzen ditu aldian behin.",
"fr": "Synchronisez vos Tours Komoot avec wanderer à intervalles réguliers.",
"it": "Syncs your komoot tours with wanderer in regular intervals.",
"hu": "Syncs your komoot tours with wanderer in regular intervals.",
"nl": "Synchroniseert je Komoot-tochten met Wanderer op regelmatige tijdstippen.",
"no": "Synkroniserer dine Komoot-turer med Wanderer med jevne mellomrom.",
"pl": "Synchronizuje trasy kamoot z wanderer w równych odstępach.",
"pt": "Syncs your komoot tours with wanderer in regular intervals.",
"ru": "Синхронизирует ваши данные с Komoot.",
"zh": "定期与komoot同步您的wanderer。"
},
"icons": {
"light": "icon.svg"
},
"providerCategories": {
"hike": {
"labels": {
"de": "Wandern",
"en": "Hiking"
}
},
"mountaineering": {
"labels": {
"de": "Bergsteigen",
"en": "Mountaineering"
}
},
"racebike": {
"labels": {
"de": "Rennrad",
"en": "Road bike"
}
},
"e_racebike": {
"labels": {
"de": "E-Rennrad",
"en": "E-road bike"
}
},
"touringbicycle": {
"labels": {
"de": "Tourenrad",
"en": "Touring bike"
}
},
"e_touringbicycle": {
"labels": {
"de": "E-Tourenrad",
"en": "E-touring bike"
}
},
"mtb": {
"labels": {
"de": "Mountainbike",
"en": "Mountain bike"
}
},
"e_mtb": {
"labels": {
"de": "E-Mountainbike",
"en": "E-mountain bike"
}
},
"mtb_easy": {
"labels": {
"de": "Mountainbike einfach",
"en": "Easy mountain bike"
}
},
"e_mtb_easy": {
"labels": {
"de": "E-Mountainbike einfach",
"en": "Easy e-mountain bike"
}
},
"mtb_advanced": {
"labels": {
"de": "Mountainbike anspruchsvoll",
"en": "Advanced mountain bike"
}
},
"e_mtb_advanced": {
"labels": {
"de": "E-Mountainbike anspruchsvoll",
"en": "Advanced e-mountain bike"
}
},
"downhillbike": {
"labels": {
"de": "Downhill-Bike",
"en": "Downhill bike"
}
},
"unicycle": {
"labels": {
"de": "Einrad",
"en": "Unicycle"
}
},
"citybike": {
"labels": {
"de": "Citybike",
"en": "City bike"
}
},
"jogging": {
"labels": {
"de": "Joggen",
"en": "Jogging"
}
},
"nordicwalking": {
"labels": {
"de": "Nordic Walking",
"en": "Nordic walking"
}
},
"skaten": {
"labels": {
"de": "Skaten",
"en": "Skating"
}
},
"other": {
"labels": {
"de": "Sonstiges",
"en": "Other"
}
},
"climbing": {
"labels": {
"de": "Klettern",
"en": "Climbing"
}
},
"nordic": {
"labels": {
"de": "Langlauf",
"en": "Cross-country skiing"
}
},
"skialpin": {
"labels": {
"de": "Ski alpin",
"en": "Alpine skiing"
}
},
"skitour": {
"labels": {
"de": "Skitour",
"en": "Ski touring"
}
},
"sled": {
"labels": {
"de": "Schlitten",
"en": "Sledding"
}
},
"snowboard": {
"labels": {
"de": "Snowboard",
"en": "Snowboard"
}
},
"snowshoe": {
"labels": {
"de": "Schneeschuhwandern",
"en": "Snowshoeing"
}
}
}
}
}