diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md
index d20b2f4..d61a322 100644
--- a/PROJECT_STATE.md
+++ b/PROJECT_STATE.md
@@ -9,16 +9,18 @@ schema in [docs/DATABASE.md](docs/DATABASE.md), le procedure in
## Stato generale
-- **Versione:** 1.4.1 (in produzione su `main` la 1.3.0, tag `v1.3.0`) — gli eventi con convocati si vedono
- solo ai convocati (admin e allenatori sempre) e «Rosa e presenze» elenca solo loro. La 1.4.0: avviso «Presenza modificata» ad admin e
+- **Versione:** 1.4.2 (in produzione su `main` la 1.3.0, tag `v1.3.0`) — ogni evento può avere un link
+ Google Maps del luogo, mostrato come «Apri su Maps» nelle schede (`m34`). La 1.4.1: gli eventi con
+ convocati si vedono solo ai convocati (admin e allenatori sempre) e «Rosa e presenze» elenca solo
+ loro. La 1.4.0: avviso «Presenza modificata» ad admin e
allenatori (DD-050, `m32`-`m33`). La 1.3.1: il Calendario mostra solo i prossimi
compleanni del mese; tolta la serie «Conferme 24h» con i badge «Risposta lampo» e «Mai un forfait». La 1.3.0
portava la notifica di compleanno, gli obiettivi cliccabili, le presenze sui convocati, gli avvisi in Home
ridisegnati e i caratteri più grandi. Dettaglio in [docs/CHANGELOG.md](docs/CHANGELOG.md).
- **Backend:** Supabase proprietario (`kfkcldwncxqaixetsjes`). Lovable Cloud e il vecchio
Project Ref `hetycilxgkdmccelwerq` non si usano più.
-- **Migration:** 44 file in `supabase/migrations/`, fino a `m33_presenza_modificata_allenatori`. Tutte applicate in produzione (verificato con `npx supabase migration list` il
- 09/10/2026; la `m32` è l'avviso «Presenza modificata» ai soli admin, DD-050). La `m33`, che lo estende agli allenatori, è stata applicata il 09/10/2026. La `m29` toglie
+- **Migration:** 45 file in `supabase/migrations/`, fino a `m34_link_maps_evento` (colonna `eventi_app.link_maps`, applicata il 26/10/2026). Tutte applicate in produzione (verificato con `npx supabase migration list` il
+ 26/10/2026; la `m32` è l'avviso «Presenza modificata» ai soli admin, DD-050). La `m33`, che lo estende agli allenatori, è stata applicata il 09/10/2026. La `m29` toglie
`foto_path`: il codice che non la legge più (1.2.2) va rilasciato.
- **Worker delle notifiche** (`mailer/`): in funzione su un Raspberry Pi con Docker dal 29/09/2026
([docs/WORKER_EMAIL.md](docs/WORKER_EMAIL.md)). Il codice con l'interruttore «Email» in Profilo
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 7fcda85..b2ada9e 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -13,13 +13,16 @@ versioni `0.y.z` erano pre-release.
## [Non rilasciato]
-Una migration, `m34`, **non ancora applicata in produzione**.
+## [1.4.2] - 2026-10-26
+
+Link Google Maps del luogo degli eventi. Una migration, `m34`, applicata in produzione il
+26/10/2026.
### Aggiunto
- Link Google Maps del luogo: in «Gestione eventi» (admin e allenatori) un campo facoltativo
accetta il link copiato da Google Maps; nelle schede di partita, allenamento ed evento compare
- «Apri su Google Maps» solo se il link c'è. Non compare nella card né nelle notifiche. Il link
+ «Apri su Maps» solo se il link c'è. Non compare nella card né nelle notifiche. Il link
è validato (solo https di Google Maps) sia nell'app sia da un CHECK sul database.
## [1.4.1] - 2026-10-19
diff --git a/docs/modules/calendario.md b/docs/modules/calendario.md
index 68c749c..0119150 100644
--- a/docs/modules/calendario.md
+++ b/docs/modules/calendario.md
@@ -57,7 +57,7 @@ extra-campo, nessun link per gli eventi virtuali (compleanni), che non hanno una
sotto «Luogo»: si incolla il link di «Condividi» di Google Maps. `linkMapsValido()` in `eventi.ts`
accetta solo URL https di Google Maps (`maps.app.goo.gl`, `goo.gl/maps`, `google.*/maps`,
`maps.google.*`) e lo stesso criterio è un CHECK sul database. Le tre schede di dettaglio mostrano
-«Apri su Google Maps» (nuova scheda) solo se il link c'è; non c'è un link generato dal testo del
+«Apri su Maps» (nuova scheda) solo se il link c'è; non c'è un link generato dal testo del
luogo, e né la card né le notifiche lo mostrano.
Le tre schede di dettaglio (`allenamento.$id.tsx`, `partita.$id.tsx`, `evento.$id.tsx`)
diff --git a/package-lock.json b/package-lock.json
index d41345f..c66dd2c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "crapp",
- "version": "1.4.1",
+ "version": "1.4.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "crapp",
- "version": "1.4.1",
+ "version": "1.4.2",
"dependencies": {
"@supabase/supabase-js": "^2.111.0",
"@tailwindcss/vite": "^4.2.1",
diff --git a/package.json b/package.json
index 5c18122..0a789fd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "crapp",
- "version": "1.4.1",
+ "version": "1.4.2",
"private": true,
"sideEffects": false,
"type": "module",
diff --git a/src/routes/allenamento.$id.tsx b/src/routes/allenamento.$id.tsx
index 43dfb2c..72c5b74 100644
--- a/src/routes/allenamento.$id.tsx
+++ b/src/routes/allenamento.$id.tsx
@@ -82,7 +82,7 @@ function AllenamentoDetail() {
rel="noopener noreferrer"
className="ml-4 inline-flex items-center gap-2 font-semibold text-accent underline"
>
- Apri su Google Maps
+ Apri su Maps
) : null}
diff --git a/src/routes/evento.$id.tsx b/src/routes/evento.$id.tsx
index 82fe086..ffa42cb 100644
--- a/src/routes/evento.$id.tsx
+++ b/src/routes/evento.$id.tsx
@@ -79,7 +79,7 @@ function EventoDetail() {
rel="noopener noreferrer"
className="ml-4 inline-flex items-center gap-2 font-semibold text-accent underline"
>
- Apri su Google Maps
+ Apri su Maps
) : null}
diff --git a/src/routes/partita.$id.tsx b/src/routes/partita.$id.tsx
index 13f1c19..64dcdf0 100644
--- a/src/routes/partita.$id.tsx
+++ b/src/routes/partita.$id.tsx
@@ -140,7 +140,7 @@ function PartitaDetail() {
rel="noopener noreferrer"
className="ml-4 inline-flex items-center gap-2 font-semibold text-accent underline"
>
- Apri su Google Maps
+ Apri su Maps
) : null}