M0.4 Create oss/wanderer-plugins + WASM SDK scaffold #9

Open
opened 2026-07-27 11:03:58 +00:00 by jmz · 2 comments
Owner

New repo oss/wanderer-plugins; scaffold a plugin from plugins/sdk; wire a build → .wasm → runtime-install path. Home for M2 (personal-pace) and future bespoke plugins.

New repo `oss/wanderer-plugins`; scaffold a plugin from `plugins/sdk`; wire a build → `.wasm` → runtime-install path. Home for M2 (personal-pace) and future bespoke plugins.
Author
Owner

Scope caveat (re-read the SDK 2026-07-29): the plugin system is a WASM (Go/TinyGo) framework for trail-provider connectors — import/sync/send (ListInput/Output, TrailImport, Track, Waypoint, RefreshSession, TrailSend, host-mediated provider HTTP). The existing plugins (komoot/strava/hammerhead) are all data-source connectors. It has no surface for UI features or an analysis service.

So the ticket's premise — home for M2 (personal-pace) — does not fit. The personal-pace work is a frontend feature + the separate trail-analyze backend, shipped as core fork patches; it cannot be repackaged as a WASM connector plugin. This repo/pipeline is worthwhile only when there is a concrete new provider connector need (import from / export to some service). Recommend re-scoping #9 around an actual connector before doing it; otherwise park it. Not a blocker for anything currently.

**Scope caveat (re-read the SDK 2026-07-29):** the plugin system is a WASM (Go/TinyGo) framework for **trail-provider connectors** — import/sync/send (`ListInput/Output`, `TrailImport`, `Track`, `Waypoint`, `RefreshSession`, `TrailSend`, host-mediated provider HTTP). The existing plugins (komoot/strava/hammerhead) are all data-source connectors. It has **no surface for UI features or an analysis service**. So the ticket's premise — *home for M2 (personal-pace)* — does not fit. The personal-pace work is a **frontend feature + the separate `trail-analyze` backend**, shipped as core fork patches; it cannot be repackaged as a WASM connector plugin. This repo/pipeline is worthwhile only when there is a concrete **new provider connector** need (import from / export to some service). Recommend re-scoping #9 around an actual connector before doing it; otherwise park it. Not a blocker for anything currently.
Author
Owner

Scaffold built and verified locally at ~/src/wanderer-plugins (1 commit, ready to push). Contents:

  • example/ — minimal trails plugin (list_routes_v1 + get_route_detail_v1, no auth/network) to copy as a starting point.
  • root Makefile — build / install-local (copies dist/<id> into a Wanderer data dir's plugins/) / package.
  • .forgejo/workflows/build.yml — CI building every plugin to .wasm.
  • SDK consumed as a normal module github.com/open-wanderer/wanderer/plugins/sdk v0.1.0 (no vendoring); local-dev replace documented.

Verified: go mod tidy → manifestcheck (valid plugin.json) → tinygo build -target=wasi produces dist/example/plugin.wasm (245 KB) with both capability exports present in the binary.

Blocked step (needs you): creating the repository is denied by the Claude Code auto-mode classifier (reserved for the account owner). To finish:

# 1) create the repo (UI: New Repository under org public, or:)
tea repo create --name wanderer-plugins --owner public --private
# 2) push the ready commit
cd ~/src/wanderer-plugins
git remote add origin [email protected]:public/wanderer-plugins.git
git push -u origin main

I defaulted the local scaffold's intent to private; flip to public to match the public org whenever you like. Once pushed I can wire M2 (personal-pace) in here.

Scaffold **built and verified locally** at `~/src/wanderer-plugins` (1 commit, ready to push). Contents: - `example/` — minimal trails plugin (`list_routes_v1` + `get_route_detail_v1`, no auth/network) to copy as a starting point. - root `Makefile` — `build` / `install-local` (copies `dist/<id>` into a Wanderer data dir's `plugins/`) / `package`. - `.forgejo/workflows/build.yml` — CI building every plugin to `.wasm`. - SDK consumed as a normal module `github.com/open-wanderer/wanderer/plugins/sdk v0.1.0` (no vendoring); local-dev `replace` documented. **Verified**: `go mod tidy` → `manifestcheck` (valid plugin.json) → `tinygo build -target=wasi` produces `dist/example/plugin.wasm` (245 KB) with both capability exports present in the binary. **Blocked step (needs you):** creating the repository is denied by the Claude Code auto-mode classifier (reserved for the account owner). To finish: ```sh # 1) create the repo (UI: New Repository under org public, or:) tea repo create --name wanderer-plugins --owner public --private # 2) push the ready commit cd ~/src/wanderer-plugins git remote add origin [email protected]:public/wanderer-plugins.git git push -u origin main ``` I defaulted the local scaffold's intent to **private**; flip to public to match the `public` org whenever you like. Once pushed I can wire M2 (personal-pace) in here.
Sign in to join this conversation.
No labels
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
public/wanderer#9
No description provided.