
Contribuire al WME Switzerland Helper
Il WME Switzerland Helper è sviluppato in team, in modo open source. Questa pagina descrive come configurare un ambiente di sviluppo locale e inviare un contributo.
In sintesi
Si clona il repository, si lancia npm run watch, si carica la build locale in Tampermonkey, si programma su un branch, poi si apre una Pull Request. Mai fare push diretto su main.
Unirsi all'organizzazione
Per ottenere l'accesso in scrittura al repository o unirti all'organizzazione Waze-Dev-CH, presentati ai maintainer sul Discord della community (zona DACH): è il canale privilegiato per discuterne. Per un contributo occasionale non serve alcun accesso: una Pull Request da un fork è sufficiente.
Prima di iniziare
La roadmap vive nelle GitHub Issues. Leggere le issue aperte prima di iniziare per evitare duplicati e verificare che una issue non copra già la tua idea. Per un bug, aprire una issue con i passi di riproduzione e screenshot del WME.
Prerequisiti
- Node.js e npm (installati insieme)
- git e un account GitHub
- Tampermonkey nel browser
- Clonare il repository:
git clone https://github.com/Waze-Dev-CH/WME-Switzerland-Helper.git
cd WME-Switzerland-Helper
npm installDev container
Il repository fornisce un .devcontainer (VS Code / GitHub Codespaces) con l'ambiente preconfigurato, se preferisci non installare nulla localmente.
Ambiente di sviluppo
Avviare la modalità watch: ricompila lo script a ogni modifica (Rollup), rigenera le traduzioni (i18next) e applica Prettier + ESLint automaticamente.
npm run watchLa build locale viene scritta in .out/main.user.js. Per caricarla nel WME:
- In Tampermonkey, creare un nuovo script e incollarvi il contenuto di
header-dev.js. - Adattare la riga
@require file://.../.out/main.user.jsal percorso assoluto del tuo clone. - Nelle impostazioni dell'estensione Tampermonkey (nel browser, non nell'editor dello script), attivare «Local file access» (vedi la FAQ di Tampermonkey).
- Aprire il Waze Map Editor e ricaricare la pagina dopo ogni rebuild.
Nota
header-dev.js e header.js devono restare identici, tranne per il campo @require (file locale in sviluppo, URL di release in produzione).
Test
I test girano con Vitest; i file *.test.ts vivono accanto al codice che coprono in src/.
npm test # una passata
npm run test:watch # in continuoFlusso di contribuzione
Il progetto funziona tramite Pull Request; main è protetto.
Partire da un
mainaggiornato, poi creare un branch:bashgit checkout main && git pull git checkout -b feat/mia-funzionalitaProgrammare seguendo le convenzioni di codice: conformità all'SDK WME e codice pensato per essere letto.
Commit in Conventional Commits (
feat:,fix:,docs:,chore:…).
Checklist prima di aprire la PR
npm testverde enpm run buildsenza errori- eslint pulito (
npx eslint ., eseguito anche danpm run watch) - Smoke test nel WME: caricare lo script, attivare ogni livello, verificare il rendering
- Stringhe i18n aggiunte per tutte e quattro le lingue in
locales/<lang>/common.json - Voce di Changelog in ogni README (vedi convenzioni)
- Fare push del branch e aprire una Pull Request verso
main, poi assegnare un maintainer come reviewer. - La CI di GitHub Actions (
release.yml) valida la PR. Rispondere ai commenti facendo push delle correzioni sullo stesso branch; annotare i risultati dello smoke test nella descrizione (nessuna copertura automatica). Un maintainer approva e unisce.
Importante
- Mai fare push diretto su
main, tutto passa da una PR revisionata. - Non creare tag né release da soli; è riservato ai maintainer.
- Contributore esterno (senza permessi di scrittura sull'organizzazione)? Forkare il repository e aprire la PR dal tuo fork.
Dopo il merge
Una release è prodotta da un maintainer: npm run release incrementa la versione (package.json → header.js) e rigenera la build pubblicata in releases/, che gli utenti installano tramite Tampermonkey.
Fonti
- Repository: https://github.com/Waze-Dev-CH/WME-Switzerland-Helper
- README e guida all'installazione: https://github.com/Waze-Dev-CH/WME-Switzerland-Helper#readme
- Documentazione dell'SDK WME: https://www.waze.com/editor/sdk/index.html
