anthodev/lapin-futepublic Fork
⑂ 8835364
Commits
⬇ Clone ▾
git clone https://git.rickub.com/anthodev/lapin-fute.git
git clone ssh://git@rickub.com/anthodev/lapin-fute.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

fix(ui): clarify stop and arrival terminology (#27)Unverified

Cédric Anthony committed 2026-09-14T06:10:46+02:00 Browse files
8835364 parent: 0cc3c0b
modified package-lock.json +6 -6
@@ -1,12 +1,12 @@
11 {
22 "name": "lapin-fute",
3- "version": "1.0.2",
3+ "version": "1.0.3",
44 "lockfileVersion": 3,
55 "requires": true,
66 "packages": {
77 "": {
88 "name": "lapin-fute",
9- "version": "1.0.2",
9+ "version": "1.0.3",
1010 "license": "MIT",
1111 "workspaces": [
1212 "packages/*"
@@ -57,7 +57,7 @@
5757 },
5858 "packages/catalog": {
5959 "name": "@lapin-fute/catalog",
60- "version": "1.0.2",
60+ "version": "1.0.3",
6161 "license": "MIT",
6262 "dependencies": {
6363 "csv-parse": "7.0.2",
@@ -66,17 +66,17 @@
6666 },
6767 "packages/companion": {
6868 "name": "@lapin-fute/companion",
69- "version": "1.0.2",
69+ "version": "1.0.3",
7070 "license": "MIT"
7171 },
7272 "packages/config-page": {
7373 "name": "@lapin-fute/config-page",
74- "version": "1.0.2",
74+ "version": "1.0.3",
7575 "license": "MIT"
7676 },
7777 "packages/watch": {
7878 "name": "lapin-fute-watch",
79- "version": "1.0.2",
79+ "version": "1.0.3",
8080 "license": "MIT"
8181 }
8282 }
@@ -1,12 +1,12 @@
1 {1 {
2 "name": "lapin-fute",2 "name": "lapin-fute",
3- "version": "1.0.2",3+ "version": "1.0.3",
4 "lockfileVersion": 3,4 "lockfileVersion": 3,
5 "requires": true,5 "requires": true,
6 "packages": {6 "packages": {
7 "": {7 "": {
8 "name": "lapin-fute",8 "name": "lapin-fute",
9- "version": "1.0.2",9+ "version": "1.0.3",
10 "license": "MIT",10 "license": "MIT",
11 "workspaces": [11 "workspaces": [
12 "packages/*"12 "packages/*"
@@ -57,7 +57,7 @@
57 },57 },
58 "packages/catalog": {58 "packages/catalog": {
59 "name": "@lapin-fute/catalog",59 "name": "@lapin-fute/catalog",
60- "version": "1.0.2",60+ "version": "1.0.3",
61 "license": "MIT",61 "license": "MIT",
62 "dependencies": {62 "dependencies": {
63 "csv-parse": "7.0.2",63 "csv-parse": "7.0.2",
@@ -66,17 +66,17 @@
66 },66 },
67 "packages/companion": {67 "packages/companion": {
68 "name": "@lapin-fute/companion",68 "name": "@lapin-fute/companion",
69- "version": "1.0.2",69+ "version": "1.0.3",
70 "license": "MIT"70 "license": "MIT"
71 },71 },
72 "packages/config-page": {72 "packages/config-page": {
73 "name": "@lapin-fute/config-page",73 "name": "@lapin-fute/config-page",
74- "version": "1.0.2",74+ "version": "1.0.3",
75 "license": "MIT"75 "license": "MIT"
76 },76 },
77 "packages/watch": {77 "packages/watch": {
78 "name": "lapin-fute-watch",78 "name": "lapin-fute-watch",
79- "version": "1.0.2",79+ "version": "1.0.3",
80 "license": "MIT"80 "license": "MIT"
81 }81 }
82 }82 }
modified package.json +1 -1
@@ -1,6 +1,6 @@
11 {
22 "name": "lapin-fute",
3- "version": "1.0.2",
3+ "version": "1.0.3",
44 "license": "MIT",
55 "private": true,
66 "type": "module",
@@ -1,6 +1,6 @@
1 {1 {
2 "name": "lapin-fute",2 "name": "lapin-fute",
3- "version": "1.0.2",3+ "version": "1.0.3",
4 "license": "MIT",4 "license": "MIT",
5 "private": true,5 "private": true,
6 "type": "module",6 "type": "module",
modified packages/catalog/package.json +1 -1
@@ -1,6 +1,6 @@
11 {
22 "name": "@lapin-fute/catalog",
3- "version": "1.0.2",
3+ "version": "1.0.3",
44 "license": "MIT",
55 "private": true,
66 "type": "module",
@@ -1,6 +1,6 @@
1 {1 {
2 "name": "@lapin-fute/catalog",2 "name": "@lapin-fute/catalog",
3- "version": "1.0.2",3+ "version": "1.0.3",
4 "license": "MIT",4 "license": "MIT",
5 "private": true,5 "private": true,
6 "type": "module",6 "type": "module",
modified packages/companion/package.json +1 -1
@@ -1,6 +1,6 @@
11 {
22 "name": "@lapin-fute/companion",
3- "version": "1.0.2",
3+ "version": "1.0.3",
44 "license": "MIT",
55 "private": true,
66 "type": "commonjs",
@@ -1,6 +1,6 @@
1 {1 {
2 "name": "@lapin-fute/companion",2 "name": "@lapin-fute/companion",
3- "version": "1.0.2",3+ "version": "1.0.3",
4 "license": "MIT",4 "license": "MIT",
5 "private": true,5 "private": true,
6 "type": "commonjs",6 "type": "commonjs",
modified packages/companion/src/display-copy.json +16 -16
@@ -56,13 +56,13 @@
5656 },
5757 {
5858 "token": "noDepartures",
59- "en": "No departures planned",
60- "fr": "Aucun départ prévu"
59+ "en": "No arrivals planned",
60+ "fr": "Aucun passage prévu"
6161 },
6262 {
6363 "token": "departed",
64- "en": "Departed",
65- "fr": "Parti"
64+ "en": "Arrived",
65+ "fr": "Arrivé"
6666 },
6767 {
6868 "token": "now",
@@ -71,13 +71,13 @@
7171 },
7272 {
7373 "token": "departureDelayed",
74- "en": "Departure delayed",
75- "fr": "Départ retardé"
74+ "en": "Arrival delayed",
75+ "fr": "Passage retardé"
7676 },
7777 {
7878 "token": "departureCancelled",
79- "en": "Departure cancelled",
80- "fr": "Départ annulé"
79+ "en": "Arrival cancelled",
80+ "fr": "Passage annulé"
8181 },
8282 {
8383 "token": "departureUnknown",
@@ -121,7 +121,7 @@
121121 },
122122 {
123123 "token": "trafficUnknownMessage",
124- "en": "The current line status cannot be confirmed. Departure times remain separate.",
124+ "en": "The current line status cannot be confirmed. Arrival times remain separate.",
125125 "fr": "Impossible de confirmer l'état actuel de la ligne. Les horaires restent affichés séparément."
126126 },
127127 {
@@ -146,8 +146,8 @@
146146 },
147147 {
148148 "token": "loadingBody",
149- "en": "First load of favorites and their next departures.",
150- "fr": "Premier chargement des favoris et de leurs prochains départs."
149+ "en": "First load of favorites and their next arrivals.",
150+ "fr": "Premier chargement des favoris et de leurs prochains passages."
151151 },
152152 {
153153 "token": "backExit",
@@ -201,8 +201,8 @@
201201 },
202202 {
203203 "token": "departuresUnavailableTitle",
204- "en": "Departures unavailable",
205- "fr": "Départs indisponibles"
204+ "en": "Arrivals unavailable",
205+ "fr": "Passages indisponibles"
206206 },
207207 {
208208 "token": "departuresUnavailableBody",
@@ -211,7 +211,7 @@
211211 },
212212 {
213213 "token": "noCachedDataTitle",
214- "en": "No cached departures",
214+ "en": "No cached arrivals",
215215 "fr": "Aucune donnée en mémoire"
216216 },
217217 {
@@ -226,8 +226,8 @@
226226 },
227227 {
228228 "token": "backDepartures",
229- "en": "Back: departures.",
230- "fr": "Retour : prochains départs."
229+ "en": "Back: arrivals.",
230+ "fr": "Retour : prochains passages."
231231 },
232232 {
233233 "token": "retry",
@@ -56,13 +56,13 @@
56 },56 },
57 {57 {
58 "token": "noDepartures",58 "token": "noDepartures",
59- "en": "No departures planned",59+ "en": "No arrivals planned",
60- "fr": "Aucun départ prévu"60+ "fr": "Aucun passage prévu"
61 },61 },
62 {62 {
63 "token": "departed",63 "token": "departed",
64- "en": "Departed",64+ "en": "Arrived",
65- "fr": "Parti"65+ "fr": "Arrivé"
66 },66 },
67 {67 {
68 "token": "now",68 "token": "now",
@@ -71,13 +71,13 @@
71 },71 },
72 {72 {
73 "token": "departureDelayed",73 "token": "departureDelayed",
74- "en": "Departure delayed",74+ "en": "Arrival delayed",
75- "fr": "Départ retardé"75+ "fr": "Passage retardé"
76 },76 },
77 {77 {
78 "token": "departureCancelled",78 "token": "departureCancelled",
79- "en": "Departure cancelled",79+ "en": "Arrival cancelled",
80- "fr": "Départ annulé"80+ "fr": "Passage annulé"
81 },81 },
82 {82 {
83 "token": "departureUnknown",83 "token": "departureUnknown",
@@ -121,7 +121,7 @@
121 },121 },
122 {122 {
123 "token": "trafficUnknownMessage",123 "token": "trafficUnknownMessage",
124- "en": "The current line status cannot be confirmed. Departure times remain separate.",124+ "en": "The current line status cannot be confirmed. Arrival times remain separate.",
125 "fr": "Impossible de confirmer l'état actuel de la ligne. Les horaires restent affichés séparément."125 "fr": "Impossible de confirmer l'état actuel de la ligne. Les horaires restent affichés séparément."
126 },126 },
127 {127 {
@@ -146,8 +146,8 @@
146 },146 },
147 {147 {
148 "token": "loadingBody",148 "token": "loadingBody",
149- "en": "First load of favorites and their next departures.",149+ "en": "First load of favorites and their next arrivals.",
150- "fr": "Premier chargement des favoris et de leurs prochains départs."150+ "fr": "Premier chargement des favoris et de leurs prochains passages."
151 },151 },
152 {152 {
153 "token": "backExit",153 "token": "backExit",
@@ -201,8 +201,8 @@
201 },201 },
202 {202 {
203 "token": "departuresUnavailableTitle",203 "token": "departuresUnavailableTitle",
204- "en": "Departures unavailable",204+ "en": "Arrivals unavailable",
205- "fr": "Départs indisponibles"205+ "fr": "Passages indisponibles"
206 },206 },
207 {207 {
208 "token": "departuresUnavailableBody",208 "token": "departuresUnavailableBody",
@@ -211,7 +211,7 @@
211 },211 },
212 {212 {
213 "token": "noCachedDataTitle",213 "token": "noCachedDataTitle",
214- "en": "No cached departures",214+ "en": "No cached arrivals",
215 "fr": "Aucune donnée en mémoire"215 "fr": "Aucune donnée en mémoire"
216 },216 },
217 {217 {
@@ -226,8 +226,8 @@
226 },226 },
227 {227 {
228 "token": "backDepartures",228 "token": "backDepartures",
229- "en": "Back: departures.",229+ "en": "Back: arrivals.",
230- "fr": "Retour : prochains départs."230+ "fr": "Retour : prochains passages."
231 },231 },
232 {232 {
233 "token": "retry",233 "token": "retry",
modified packages/config-page/index.html +5 -5
@@ -62,7 +62,7 @@
6262 <svg viewBox="0 0 24 24" fill="none" focusable="false"><path d="m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2-5.6-3-5.6 3 1.1-6.2L3 9.6l6.2-.9L12 3Z"></path></svg>
6363 </span>
6464 <span class="summary-copy">
65- <h2 id="favorites-title">Favorite departures</h2>
65+ <h2 id="favorites-title">Favorite stops</h2>
6666 <span class="favorite-capacity" id="favorites-count" aria-live="polite"></span>
6767 </span>
6868 <span class="disclosure" aria-hidden="true"></span>
@@ -146,7 +146,7 @@
146146 </div>
147147
148148 <div id="about-en" lang="en">
149- <p class="about-version">Version 1.0.2</p>
149+ <p class="about-version">Version 1.0.3</p>
150150 <h3>Publisher and contact</h3>
151151 <p><strong>Author and publisher:</strong> Anthodev, a private individual acting on a non-professional basis.</p>
152152 <p><strong>Publication director:</strong> Anthodev.</p>
@@ -161,14 +161,14 @@
161161 <p>bunny.net hosts this page and its static catalog. BunnyWay may process connection data and requested URLs under its <a href="https://bunny.net/privacy/" target="_blank" rel="noopener noreferrer">Privacy &amp; Data Policy</a>.</p>
162162 <h3>Data and credits</h3>
163163 <p>Transport line names and colors come from the Île-de-France Mobilités <a href="https://data.iledefrance-mobilites.fr/explore/dataset/referentiel-des-lignes/" target="_blank" rel="noopener noreferrer">Référentiel des lignes</a> database, licensed under <a href="https://opendatacommons.org/licenses/odbl/1-0/" target="_blank" rel="noopener noreferrer">ODbL 1.0</a>. Official line pictograms are © Île-de-France Mobilités and are reused subject to the <a href="https://prim.iledefrance-mobilites.fr/fr/conditions-utilisation" target="_blank" rel="noopener noreferrer">IDFM/PRIM terms of use</a>.</p>
164- <p>Real-time departures come from the Île-de-France Mobilités <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM platform</a> using your personal key and remain subject to the terms and licences published by PRIM.</p>
164+ <p>Real-time arrivals come from the Île-de-France Mobilités <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM platform</a> using your personal key and remain subject to the terms and licences published by PRIM.</p>
165165 <h3>Independence and source</h3>
166166 <p>Lapin Futé is an independent personal project. It is not affiliated with, endorsed by or sponsored by Île-de-France Mobilités, PRIM, ILICO, Pebble or their respective owners. Cited names and trademarks belong to their owners.</p>
167167 <p>Source code: <a href="https://github.com/Anthodev/lapin-fute" target="_blank" rel="noopener noreferrer">github.com/Anthodev/lapin-fute</a>.</p>
168168 </div>
169169
170170 <div id="about-fr" lang="fr" hidden>
171- <p class="about-version">Version 1.0.2</p>
171+ <p class="about-version">Version 1.0.3</p>
172172 <h3>Édition et contact</h3>
173173 <p><strong>Auteur et éditeur :</strong> Anthodev, personne physique agissant à titre privé et non professionnel.</p>
174174 <p><strong>Directeur de la publication :</strong> Anthodev.</p>
@@ -183,7 +183,7 @@
183183 <p>Cette page et son catalogue statique sont hébergés par bunny.net. BunnyWay peut traiter les données de connexion et les URL demandées selon sa <a href="https://bunny.net/privacy/" target="_blank" rel="noopener noreferrer">politique de confidentialité et de traitement des données</a>.</p>
184184 <h3>Données et crédits</h3>
185185 <p>Les noms et couleurs des lignes proviennent de la base <a href="https://data.iledefrance-mobilites.fr/explore/dataset/referentiel-des-lignes/" target="_blank" rel="noopener noreferrer">Référentiel des lignes</a> d’Île-de-France Mobilités, sous licence <a href="https://opendatacommons.org/licenses/odbl/1-0/" target="_blank" rel="noopener noreferrer">ODbL 1.0</a>. Les pictogrammes officiels des lignes sont © Île-de-France Mobilités et réutilisés selon les <a href="https://prim.iledefrance-mobilites.fr/fr/conditions-utilisation" target="_blank" rel="noopener noreferrer">conditions d’utilisation IDFM/PRIM</a>.</p>
186- <p>Les départs en temps réel proviennent de la plateforme <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM</a> d’Île-de-France Mobilités au moyen de votre clé personnelle. Ils restent soumis aux conditions et licences publiées par PRIM.</p>
186+ <p>Les passages en temps réel proviennent de la plateforme <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM</a> d’Île-de-France Mobilités au moyen de votre clé personnelle. Ils restent soumis aux conditions et licences publiées par PRIM.</p>
187187 <h3>Indépendance et code source</h3>
188188 <p>Lapin Futé est un projet personnel indépendant, sans affiliation, approbation ni parrainage d’Île-de-France Mobilités, de PRIM, d’ILICO, de Pebble ou de leurs ayants droit. Les noms et marques cités appartiennent à leurs titulaires.</p>
189189 <p>Code source : <a href="https://github.com/Anthodev/lapin-fute" target="_blank" rel="noopener noreferrer">github.com/Anthodev/lapin-fute</a>.</p>
@@ -62,7 +62,7 @@
62 <svg viewBox="0 0 24 24" fill="none" focusable="false"><path d="m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2-5.6-3-5.6 3 1.1-6.2L3 9.6l6.2-.9L12 3Z"></path></svg>62 <svg viewBox="0 0 24 24" fill="none" focusable="false"><path d="m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2-5.6-3-5.6 3 1.1-6.2L3 9.6l6.2-.9L12 3Z"></path></svg>
63 </span>63 </span>
64 <span class="summary-copy">64 <span class="summary-copy">
65- <h2 id="favorites-title">Favorite departures</h2>65+ <h2 id="favorites-title">Favorite stops</h2>
66 <span class="favorite-capacity" id="favorites-count" aria-live="polite"></span>66 <span class="favorite-capacity" id="favorites-count" aria-live="polite"></span>
67 </span>67 </span>
68 <span class="disclosure" aria-hidden="true"></span>68 <span class="disclosure" aria-hidden="true"></span>
@@ -146,7 +146,7 @@
146 </div>146 </div>
147 147
148 <div id="about-en" lang="en">148 <div id="about-en" lang="en">
149- <p class="about-version">Version 1.0.2</p>149+ <p class="about-version">Version 1.0.3</p>
150 <h3>Publisher and contact</h3>150 <h3>Publisher and contact</h3>
151 <p><strong>Author and publisher:</strong> Anthodev, a private individual acting on a non-professional basis.</p>151 <p><strong>Author and publisher:</strong> Anthodev, a private individual acting on a non-professional basis.</p>
152 <p><strong>Publication director:</strong> Anthodev.</p>152 <p><strong>Publication director:</strong> Anthodev.</p>
@@ -161,14 +161,14 @@
161 <p>bunny.net hosts this page and its static catalog. BunnyWay may process connection data and requested URLs under its <a href="https://bunny.net/privacy/" target="_blank" rel="noopener noreferrer">Privacy &amp; Data Policy</a>.</p>161 <p>bunny.net hosts this page and its static catalog. BunnyWay may process connection data and requested URLs under its <a href="https://bunny.net/privacy/" target="_blank" rel="noopener noreferrer">Privacy &amp; Data Policy</a>.</p>
162 <h3>Data and credits</h3>162 <h3>Data and credits</h3>
163 <p>Transport line names and colors come from the Île-de-France Mobilités <a href="https://data.iledefrance-mobilites.fr/explore/dataset/referentiel-des-lignes/" target="_blank" rel="noopener noreferrer">Référentiel des lignes</a> database, licensed under <a href="https://opendatacommons.org/licenses/odbl/1-0/" target="_blank" rel="noopener noreferrer">ODbL 1.0</a>. Official line pictograms are © Île-de-France Mobilités and are reused subject to the <a href="https://prim.iledefrance-mobilites.fr/fr/conditions-utilisation" target="_blank" rel="noopener noreferrer">IDFM/PRIM terms of use</a>.</p>163 <p>Transport line names and colors come from the Île-de-France Mobilités <a href="https://data.iledefrance-mobilites.fr/explore/dataset/referentiel-des-lignes/" target="_blank" rel="noopener noreferrer">Référentiel des lignes</a> database, licensed under <a href="https://opendatacommons.org/licenses/odbl/1-0/" target="_blank" rel="noopener noreferrer">ODbL 1.0</a>. Official line pictograms are © Île-de-France Mobilités and are reused subject to the <a href="https://prim.iledefrance-mobilites.fr/fr/conditions-utilisation" target="_blank" rel="noopener noreferrer">IDFM/PRIM terms of use</a>.</p>
164- <p>Real-time departures come from the Île-de-France Mobilités <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM platform</a> using your personal key and remain subject to the terms and licences published by PRIM.</p>164+ <p>Real-time arrivals come from the Île-de-France Mobilités <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM platform</a> using your personal key and remain subject to the terms and licences published by PRIM.</p>
165 <h3>Independence and source</h3>165 <h3>Independence and source</h3>
166 <p>Lapin Futé is an independent personal project. It is not affiliated with, endorsed by or sponsored by Île-de-France Mobilités, PRIM, ILICO, Pebble or their respective owners. Cited names and trademarks belong to their owners.</p>166 <p>Lapin Futé is an independent personal project. It is not affiliated with, endorsed by or sponsored by Île-de-France Mobilités, PRIM, ILICO, Pebble or their respective owners. Cited names and trademarks belong to their owners.</p>
167 <p>Source code: <a href="https://github.com/Anthodev/lapin-fute" target="_blank" rel="noopener noreferrer">github.com/Anthodev/lapin-fute</a>.</p>167 <p>Source code: <a href="https://github.com/Anthodev/lapin-fute" target="_blank" rel="noopener noreferrer">github.com/Anthodev/lapin-fute</a>.</p>
168 </div>168 </div>
169 169
170 <div id="about-fr" lang="fr" hidden>170 <div id="about-fr" lang="fr" hidden>
171- <p class="about-version">Version 1.0.2</p>171+ <p class="about-version">Version 1.0.3</p>
172 <h3>Édition et contact</h3>172 <h3>Édition et contact</h3>
173 <p><strong>Auteur et éditeur :</strong> Anthodev, personne physique agissant à titre privé et non professionnel.</p>173 <p><strong>Auteur et éditeur :</strong> Anthodev, personne physique agissant à titre privé et non professionnel.</p>
174 <p><strong>Directeur de la publication :</strong> Anthodev.</p>174 <p><strong>Directeur de la publication :</strong> Anthodev.</p>
@@ -183,7 +183,7 @@
183 <p>Cette page et son catalogue statique sont hébergés par bunny.net. BunnyWay peut traiter les données de connexion et les URL demandées selon sa <a href="https://bunny.net/privacy/" target="_blank" rel="noopener noreferrer">politique de confidentialité et de traitement des données</a>.</p>183 <p>Cette page et son catalogue statique sont hébergés par bunny.net. BunnyWay peut traiter les données de connexion et les URL demandées selon sa <a href="https://bunny.net/privacy/" target="_blank" rel="noopener noreferrer">politique de confidentialité et de traitement des données</a>.</p>
184 <h3>Données et crédits</h3>184 <h3>Données et crédits</h3>
185 <p>Les noms et couleurs des lignes proviennent de la base <a href="https://data.iledefrance-mobilites.fr/explore/dataset/referentiel-des-lignes/" target="_blank" rel="noopener noreferrer">Référentiel des lignes</a> d’Île-de-France Mobilités, sous licence <a href="https://opendatacommons.org/licenses/odbl/1-0/" target="_blank" rel="noopener noreferrer">ODbL 1.0</a>. Les pictogrammes officiels des lignes sont © Île-de-France Mobilités et réutilisés selon les <a href="https://prim.iledefrance-mobilites.fr/fr/conditions-utilisation" target="_blank" rel="noopener noreferrer">conditions d’utilisation IDFM/PRIM</a>.</p>185 <p>Les noms et couleurs des lignes proviennent de la base <a href="https://data.iledefrance-mobilites.fr/explore/dataset/referentiel-des-lignes/" target="_blank" rel="noopener noreferrer">Référentiel des lignes</a> d’Île-de-France Mobilités, sous licence <a href="https://opendatacommons.org/licenses/odbl/1-0/" target="_blank" rel="noopener noreferrer">ODbL 1.0</a>. Les pictogrammes officiels des lignes sont © Île-de-France Mobilités et réutilisés selon les <a href="https://prim.iledefrance-mobilites.fr/fr/conditions-utilisation" target="_blank" rel="noopener noreferrer">conditions d’utilisation IDFM/PRIM</a>.</p>
186- <p>Les départs en temps réel proviennent de la plateforme <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM</a> d’Île-de-France Mobilités au moyen de votre clé personnelle. Ils restent soumis aux conditions et licences publiées par PRIM.</p>186+ <p>Les passages en temps réel proviennent de la plateforme <a href="https://prim.iledefrance-mobilites.fr/" target="_blank" rel="noopener noreferrer">PRIM</a> d’Île-de-France Mobilités au moyen de votre clé personnelle. Ils restent soumis aux conditions et licences publiées par PRIM.</p>
187 <h3>Indépendance et code source</h3>187 <h3>Indépendance et code source</h3>
188 <p>Lapin Futé est un projet personnel indépendant, sans affiliation, approbation ni parrainage d’Île-de-France Mobilités, de PRIM, d’ILICO, de Pebble ou de leurs ayants droit. Les noms et marques cités appartiennent à leurs titulaires.</p>188 <p>Lapin Futé est un projet personnel indépendant, sans affiliation, approbation ni parrainage d’Île-de-France Mobilités, de PRIM, d’ILICO, de Pebble ou de leurs ayants droit. Les noms et marques cités appartiennent à leurs titulaires.</p>
189 <p>Code source : <a href="https://github.com/Anthodev/lapin-fute" target="_blank" rel="noopener noreferrer">github.com/Anthodev/lapin-fute</a>.</p>189 <p>Code source : <a href="https://github.com/Anthodev/lapin-fute" target="_blank" rel="noopener noreferrer">github.com/Anthodev/lapin-fute</a>.</p>
modified packages/config-page/package.json +1 -1
@@ -1,6 +1,6 @@
11 {
22 "name": "@lapin-fute/config-page",
3- "version": "1.0.2",
3+ "version": "1.0.3",
44 "license": "MIT",
55 "private": true,
66 "type": "module",
@@ -1,6 +1,6 @@
1 {1 {
2 "name": "@lapin-fute/config-page",2 "name": "@lapin-fute/config-page",
3- "version": "1.0.2",3+ "version": "1.0.3",
4 "license": "MIT",4 "license": "MIT",
5 "private": true,5 "private": true,
6 "type": "module",6 "type": "module",
modified packages/config-page/src/config-core.js +8 -8
@@ -72,15 +72,15 @@ export const COPY = {
7272 en: {
7373 pageTitle: "Lapin Futé settings",
7474 pageHeading: "Settings",
75- intro: "Choose the departures you want at hand on your Pebble.",
75+ intro: "Choose the stops you want at hand on your Pebble.",
7676 keyTitle: "PRIM access",
7777 keyStatusConfigured: "A key is saved on this phone. It is not verified against PRIM.",
7878 keyStatusMissing: "No key is configured.",
7979 keyExplanation: "Your personal key stays in plaintext on your phone. This page never receives the saved key.",
8080 keyLink: "Create a PRIM token",
8181 keyDocsLink: "Instructions",
82- keyRequirement: "A personal PRIM token is required to retrieve live departures. You can prepare your favorites without one.",
83- keyRequiredHint: "PRIM token required for live departures",
82+ keyRequirement: "A personal PRIM token is required to retrieve live arrivals. You can prepare your favorites without one.",
83+ keyRequiredHint: "PRIM token required for live arrivals",
8484 keyLabel: "Replace with a new key",
8585 keyPlaceholder: "Paste a new key",
8686 keyShow: "Show",
@@ -91,7 +91,7 @@ export const COPY = {
9191 keyReplacementPending: "A replacement key is ready to save.",
9292 keyErrorTooLong: "The key must be at most 512 UTF-8 bytes.",
9393 keyErrorNewline: "The key must not contain control characters.",
94- favoritesTitle: "Favorite departures",
94+ favoritesTitle: "Favorite stops",
9595 favoriteUsed: "used",
9696 favoritesUsed: "used",
9797 favoriteAvailable: "available",
@@ -135,12 +135,12 @@ export const COPY = {
135135 fr: {
136136 pageTitle: "Réglages Lapin Futé",
137137 pageHeading: "Réglages",
138- intro: "Choisissez les prochains départs à garder sous la main sur votre Pebble.",
138+ intro: "Choisissez les arrêts à garder sous la main sur votre Pebble.",
139139 keyTitle: "Accès PRIM",
140140 keyStatusConfigured: "Une clé est enregistrée sur ce téléphone. Elle n’est pas vérifiée auprès de PRIM.",
141141 keyDocsLink: "Instructions",
142- keyRequirement: "Un jeton PRIM personnel est obligatoire pour récupérer les prochains départs en temps réel. Vous pouvez préparer vos favoris sans jeton.",
143- keyRequiredHint: "Jeton PRIM requis pour les départs en temps réel",
142+ keyRequirement: "Un jeton PRIM personnel est obligatoire pour récupérer les prochains passages en temps réel. Vous pouvez préparer vos favoris sans jeton.",
143+ keyRequiredHint: "Jeton PRIM requis pour les passages en temps réel",
144144 keyStatusMissing: "Aucune clé n’est configurée.",
145145 keyExplanation: "Votre clé personnelle reste en clair sur votre téléphone. Cette page ne reçoit jamais la clé enregistrée.",
146146 keyLink: "Créer un jeton PRIM",
@@ -154,7 +154,7 @@ export const COPY = {
154154 keyReplacementPending: "Une nouvelle clé est prête à être enregistrée.",
155155 keyErrorTooLong: "La clé doit contenir au maximum 512 octets UTF-8.",
156156 keyErrorNewline: "La clé ne doit pas contenir de caractère de contrôle.",
157- favoritesTitle: "Départs favoris",
157+ favoritesTitle: "Arrêts favoris",
158158 favoriteUsed: "utilisé",
159159 favoritesUsed: "utilisés",
160160 favoriteAvailable: "disponible",
@@ -72,15 +72,15 @@ export const COPY = {
72 en: {72 en: {
73 pageTitle: "Lapin Futé settings",73 pageTitle: "Lapin Futé settings",
74 pageHeading: "Settings",74 pageHeading: "Settings",
75- intro: "Choose the departures you want at hand on your Pebble.",75+ intro: "Choose the stops you want at hand on your Pebble.",
76 keyTitle: "PRIM access",76 keyTitle: "PRIM access",
77 keyStatusConfigured: "A key is saved on this phone. It is not verified against PRIM.",77 keyStatusConfigured: "A key is saved on this phone. It is not verified against PRIM.",
78 keyStatusMissing: "No key is configured.",78 keyStatusMissing: "No key is configured.",
79 keyExplanation: "Your personal key stays in plaintext on your phone. This page never receives the saved key.",79 keyExplanation: "Your personal key stays in plaintext on your phone. This page never receives the saved key.",
80 keyLink: "Create a PRIM token",80 keyLink: "Create a PRIM token",
81 keyDocsLink: "Instructions",81 keyDocsLink: "Instructions",
82- keyRequirement: "A personal PRIM token is required to retrieve live departures. You can prepare your favorites without one.",82+ keyRequirement: "A personal PRIM token is required to retrieve live arrivals. You can prepare your favorites without one.",
83- keyRequiredHint: "PRIM token required for live departures",83+ keyRequiredHint: "PRIM token required for live arrivals",
84 keyLabel: "Replace with a new key",84 keyLabel: "Replace with a new key",
85 keyPlaceholder: "Paste a new key",85 keyPlaceholder: "Paste a new key",
86 keyShow: "Show",86 keyShow: "Show",
@@ -91,7 +91,7 @@ export const COPY = {
91 keyReplacementPending: "A replacement key is ready to save.",91 keyReplacementPending: "A replacement key is ready to save.",
92 keyErrorTooLong: "The key must be at most 512 UTF-8 bytes.",92 keyErrorTooLong: "The key must be at most 512 UTF-8 bytes.",
93 keyErrorNewline: "The key must not contain control characters.",93 keyErrorNewline: "The key must not contain control characters.",
94- favoritesTitle: "Favorite departures",94+ favoritesTitle: "Favorite stops",
95 favoriteUsed: "used",95 favoriteUsed: "used",
96 favoritesUsed: "used",96 favoritesUsed: "used",
97 favoriteAvailable: "available",97 favoriteAvailable: "available",
@@ -135,12 +135,12 @@ export const COPY = {
135 fr: {135 fr: {
136 pageTitle: "Réglages Lapin Futé",136 pageTitle: "Réglages Lapin Futé",
137 pageHeading: "Réglages",137 pageHeading: "Réglages",
138- intro: "Choisissez les prochains départs à garder sous la main sur votre Pebble.",138+ intro: "Choisissez les arrêts à garder sous la main sur votre Pebble.",
139 keyTitle: "Accès PRIM",139 keyTitle: "Accès PRIM",
140 keyStatusConfigured: "Une clé est enregistrée sur ce téléphone. Elle n’est pas vérifiée auprès de PRIM.",140 keyStatusConfigured: "Une clé est enregistrée sur ce téléphone. Elle n’est pas vérifiée auprès de PRIM.",
141 keyDocsLink: "Instructions",141 keyDocsLink: "Instructions",
142- keyRequirement: "Un jeton PRIM personnel est obligatoire pour récupérer les prochains départs en temps réel. Vous pouvez préparer vos favoris sans jeton.",142+ keyRequirement: "Un jeton PRIM personnel est obligatoire pour récupérer les prochains passages en temps réel. Vous pouvez préparer vos favoris sans jeton.",
143- keyRequiredHint: "Jeton PRIM requis pour les départs en temps réel",143+ keyRequiredHint: "Jeton PRIM requis pour les passages en temps réel",
144 keyStatusMissing: "Aucune clé n’est configurée.",144 keyStatusMissing: "Aucune clé n’est configurée.",
145 keyExplanation: "Votre clé personnelle reste en clair sur votre téléphone. Cette page ne reçoit jamais la clé enregistrée.",145 keyExplanation: "Votre clé personnelle reste en clair sur votre téléphone. Cette page ne reçoit jamais la clé enregistrée.",
146 keyLink: "Créer un jeton PRIM",146 keyLink: "Créer un jeton PRIM",
@@ -154,7 +154,7 @@ export const COPY = {
154 keyReplacementPending: "Une nouvelle clé est prête à être enregistrée.",154 keyReplacementPending: "Une nouvelle clé est prête à être enregistrée.",
155 keyErrorTooLong: "La clé doit contenir au maximum 512 octets UTF-8.",155 keyErrorTooLong: "La clé doit contenir au maximum 512 octets UTF-8.",
156 keyErrorNewline: "La clé ne doit pas contenir de caractère de contrôle.",156 keyErrorNewline: "La clé ne doit pas contenir de caractère de contrôle.",
157- favoritesTitle: "Départs favoris",157+ favoritesTitle: "Arrêts favoris",
158 favoriteUsed: "utilisé",158 favoriteUsed: "utilisé",
159 favoritesUsed: "utilisés",159 favoritesUsed: "utilisés",
160 favoriteAvailable: "disponible",160 favoriteAvailable: "disponible",
modified packages/watch/package.json +1 -1
@@ -1,7 +1,7 @@
11 {
22 "name": "lapin-fute-watch",
33 "author": "Anthodev",
4- "version": "1.0.2",
4+ "version": "1.0.3",
55 "license": "MIT",
66 "keywords": [
77 "pebble-app"
@@ -1,7 +1,7 @@
1 {1 {
2 "name": "lapin-fute-watch",2 "name": "lapin-fute-watch",
3 "author": "Anthodev",3 "author": "Anthodev",
4- "version": "1.0.2",4+ "version": "1.0.3",
5 "license": "MIT",5 "license": "MIT",
6 "keywords": [6 "keywords": [
7 "pebble-app"7 "pebble-app"
modified packages/watch/prototype-issue-16.html +15 -15
@@ -367,11 +367,11 @@
367367 <main class="page">
368368 <section class="brief" aria-labelledby="page-title">
369369 <span class="prototype-label">Prototype · non production</span>
370- <h1 id="page-title">Aperçu → Départs → État de la ligne</h1>
370+ <h1 id="page-title">Aperçu → Passages → État de la ligne</h1>
371371 <p class="lede">Une lecture progressive : l'essentiel pour tous les favoris, le détail d'un trajet, puis le message trafic complet.</p>
372372 <ol class="flow-map">
373- <li><div><strong>Aperçu semi-riche</strong><span>Un prochain départ par favori, avec un signal uniquement si l'état de la ligne mérite l'attention.</span></div></li>
374- <li><div><strong>Détail des départs</strong><span>Le prochain passage domine. La bande basse résume l'état de la ligne et ouvre le niveau suivant.</span></div></li>
373+ <li><div><strong>Aperçu semi-riche</strong><span>Un prochain passage par favori, avec un signal uniquement si l'état de la ligne mérite l'attention.</span></div></li>
374+ <li><div><strong>Détail des passages</strong><span>Le prochain passage domine. La bande basse résume l'état de la ligne et ouvre le niveau suivant.</span></div></li>
375375 <li><div><strong>État de la ligne</strong><span>Confirmation normale ou message IDFM paginé, sans réduire le texte jusqu'à l'illisibilité.</span></div></li>
376376 </ol>
377377 <aside class="decision">
@@ -392,7 +392,7 @@
392392 </div></fieldset>
393393 <fieldset><legend>Écran</legend><div class="button-group">
394394 <button class="control" data-group="screen" data-value="overview" aria-pressed="true">APERÇU</button>
395- <button class="control" data-group="screen" data-value="detail" aria-pressed="false">DÉPARTS</button>
395+ <button class="control" data-group="screen" data-value="detail" aria-pressed="false">PASSAGES</button>
396396 <button class="control" data-group="screen" data-value="traffic" aria-pressed="false">TRAFIC</button>
397397 </div></fieldset>
398398 <fieldset><legend>Données</legend><div class="button-group">
@@ -436,7 +436,7 @@
436436 <li>état de ligne autoritatif, fraîcheur et message borné ;</li>
437437 <li>Select et Retour deviennent de la navigation contextuelle.</li>
438438 </ul></section>
439- <section class="note"><h2>Source trafic envisagée</h2><p>L'API PRIM <a href="https://prim.iledefrance-mobilites.fr/fr/apis/idfm-disruptions_bulk">Messages Info Trafic — Requête globale</a> publie lignes impactées, sévérité, titre, message et périodes. « Normal » n'est valide qu'après une réponse complète et récente ; une erreur donne « inconnu ». Un départ retardé ne suffit jamais à déclarer toute la ligne retardée.</p></section>
439+ <section class="note"><h2>Source trafic envisagée</h2><p>L'API PRIM <a href="https://prim.iledefrance-mobilites.fr/fr/apis/idfm-disruptions_bulk">Messages Info Trafic — Requête globale</a> publie lignes impactées, sévérité, titre, message et périodes. « Normal » n'est valide qu'après une réponse complète et récente ; une erreur donne « inconnu ». Un passage retardé ne suffit jamais à déclarer toute la ligne retardée.</p></section>
440440 <section class="note legal"><h2>Pastilles de ligne</h2><p>Les pastilles affichées sont propres au prototype. Les droits de redistribution et de modification des pictogrammes officiels ne sont pas suffisamment explicites. Le protocole montre actuel ne transporte par ailleurs ni mode ni couleurs de ligne.</p></section>
441441 <section class="note"><h2>Chargement</h2><p>Le plein écran avec sablier est réservé au démarrage sans aucun résumé utilisable. Avec du cache, l'aperçu reste affiché pendant l'actualisation et les succès partiels restent disponibles.</p></section>
442442 </div>
@@ -453,15 +453,15 @@
453453 normal: "Trafic normal", delayed: "Retards sur la ligne", stopped: "Trafic interrompu", unknown: "État du trafic indisponible",
454454 normalTitle: "Aucune perturbation signalée", normalMessage: "Dernière vérification à 09:42.",
455455 delayedTitle: "Retards sur la ligne", delayedValidity: "En cours · reprise estimée 10:30",
456- delayedPages: ["Des retards sont constatés sur l'ensemble de la ligne en raison d'un incident d'exploitation.", "Prévoyez un temps de parcours supplémentaire. Vérifiez votre correspondance avant le départ."],
456+ delayedPages: ["Des retards sont constatés sur l'ensemble de la ligne en raison d'un incident d'exploitation.", "Prévoyez un temps de parcours supplémentaire. Vérifiez votre correspondance avant de partir."],
457457 stoppedTitle: "Trafic interrompu", stoppedValidity: "Entre République et Balard · jusqu'à 11:15",
458458 stoppedPages: ["Le trafic est interrompu entre République et Balard à la suite d'un incident voyageur.", "Une reprise progressive est estimée à 11:15. Empruntez les itinéraires alternatifs indiqués en station."],
459459 unknownTitle: "Information trafic indisponible", unknownMessage: "Impossible de confirmer l'état actuel de la ligne. Les horaires restent affichés séparément.",
460- loadingTitle: "Rafraîchissement des informations en cours", loadingBody: "Premier chargement des favoris et de leurs prochains départs.",
460+ loadingTitle: "Rafraîchissement des informations en cours", loadingBody: "Premier chargement des favoris et de leurs prochains passages.",
461461 unconfiguredTitle: "Configuration requise", unconfiguredBody: "Ajoutez votre clé PRIM et au moins un favori dans les options du téléphone.",
462- unavailableTitle: "Départs indisponibles", unavailableBody: "La connexion n'a pas permis de récupérer les informations.",
462+ unavailableTitle: "Passages indisponibles", unavailableBody: "La connexion n'a pas permis de récupérer les informations.",
463463 backExit: "Retour quitte l'application.", retry: "Select · Réessayer", automatic: "La configuration sera détectée automatiquement.",
464- departedDelayed: "Départ retardé", positions: "favoris"
464+ departedDelayed: "Passage retardé", positions: "favoris"
465465 },
466466 en: {
467467 time: "09:42", ready: "up to date", refreshing: "updating", stale: "old data",
@@ -472,12 +472,12 @@
472472 delayedPages: ["Delays are affecting the whole line because of an operating incident.", "Allow extra journey time. Check your connection before leaving."],
473473 stoppedTitle: "Service interrupted", stoppedValidity: "Between République and Balard · until 11:15",
474474 stoppedPages: ["Service is interrupted between République and Balard following a passenger incident.", "Progressive recovery is estimated at 11:15. Use the alternatives shown in stations."],
475- unknownTitle: "Traffic information unavailable", unknownMessage: "The current line status cannot be confirmed. Departure times remain separate.",
476- loadingTitle: "Refreshing information", loadingBody: "First load of favorites and their next departures.",
475+ unknownTitle: "Traffic information unavailable", unknownMessage: "The current line status cannot be confirmed. Arrival times remain separate.",
476+ loadingTitle: "Refreshing information", loadingBody: "First load of favorites and their next arrivals.",
477477 unconfiguredTitle: "Configuration required", unconfiguredBody: "Add your PRIM key and at least one favorite in phone options.",
478- unavailableTitle: "Departures unavailable", unavailableBody: "The connection could not retrieve the information.",
478+ unavailableTitle: "Arrivals unavailable", unavailableBody: "The connection could not retrieve the information.",
479479 backExit: "Back exits the app.", retry: "Select · Retry", automatic: "Configuration will be detected automatically.",
480- departedDelayed: "Departure delayed", positions: "favorites"
480+ departedDelayed: "Arrival delayed", positions: "favorites"
481481 }
482482 };
483483
@@ -615,8 +615,8 @@
615615 keys[0].textContent = state.language === "fr" ? "Page précédente" : "Previous page";
616616 keys[1].textContent = state.language === "fr" ? "Aucune action" : "No action";
617617 keys[2].textContent = state.language === "fr" ? "Page suivante" : "Next page";
618- keys[3].textContent = state.language === "fr" ? "Départs" : "Departures";
619- interactionNote.textContent = state.language === "fr" ? "Haut/Bas pagine un message long. Select reste sans action. Retour revient aux départs." : "Up/Down pages long messages. Select has no action. Back returns to departures.";
618+ keys[3].textContent = state.language === "fr" ? "Passages" : "Arrivals";
619+ interactionNote.textContent = state.language === "fr" ? "Haut/Bas pagine un message long. Select reste sans action. Retour revient aux passages." : "Up/Down pages long messages. Select has no action. Back returns to arrivals.";
620620 }
621621 }
622622
@@ -367,11 +367,11 @@
367 <main class="page">367 <main class="page">
368 <section class="brief" aria-labelledby="page-title">368 <section class="brief" aria-labelledby="page-title">
369 <span class="prototype-label">Prototype · non production</span>369 <span class="prototype-label">Prototype · non production</span>
370- <h1 id="page-title">Aperçu → Départs → État de la ligne</h1>370+ <h1 id="page-title">Aperçu → Passages → État de la ligne</h1>
371 <p class="lede">Une lecture progressive : l'essentiel pour tous les favoris, le détail d'un trajet, puis le message trafic complet.</p>371 <p class="lede">Une lecture progressive : l'essentiel pour tous les favoris, le détail d'un trajet, puis le message trafic complet.</p>
372 <ol class="flow-map">372 <ol class="flow-map">
373- <li><div><strong>Aperçu semi-riche</strong><span>Un prochain départ par favori, avec un signal uniquement si l'état de la ligne mérite l'attention.</span></div></li>373+ <li><div><strong>Aperçu semi-riche</strong><span>Un prochain passage par favori, avec un signal uniquement si l'état de la ligne mérite l'attention.</span></div></li>
374- <li><div><strong>Détail des départs</strong><span>Le prochain passage domine. La bande basse résume l'état de la ligne et ouvre le niveau suivant.</span></div></li>374+ <li><div><strong>Détail des passages</strong><span>Le prochain passage domine. La bande basse résume l'état de la ligne et ouvre le niveau suivant.</span></div></li>
375 <li><div><strong>État de la ligne</strong><span>Confirmation normale ou message IDFM paginé, sans réduire le texte jusqu'à l'illisibilité.</span></div></li>375 <li><div><strong>État de la ligne</strong><span>Confirmation normale ou message IDFM paginé, sans réduire le texte jusqu'à l'illisibilité.</span></div></li>
376 </ol>376 </ol>
377 <aside class="decision">377 <aside class="decision">
@@ -392,7 +392,7 @@
392 </div></fieldset>392 </div></fieldset>
393 <fieldset><legend>Écran</legend><div class="button-group">393 <fieldset><legend>Écran</legend><div class="button-group">
394 <button class="control" data-group="screen" data-value="overview" aria-pressed="true">APERÇU</button>394 <button class="control" data-group="screen" data-value="overview" aria-pressed="true">APERÇU</button>
395- <button class="control" data-group="screen" data-value="detail" aria-pressed="false">DÉPARTS</button>395+ <button class="control" data-group="screen" data-value="detail" aria-pressed="false">PASSAGES</button>
396 <button class="control" data-group="screen" data-value="traffic" aria-pressed="false">TRAFIC</button>396 <button class="control" data-group="screen" data-value="traffic" aria-pressed="false">TRAFIC</button>
397 </div></fieldset>397 </div></fieldset>
398 <fieldset><legend>Données</legend><div class="button-group">398 <fieldset><legend>Données</legend><div class="button-group">
@@ -436,7 +436,7 @@
436 <li>état de ligne autoritatif, fraîcheur et message borné ;</li>436 <li>état de ligne autoritatif, fraîcheur et message borné ;</li>
437 <li>Select et Retour deviennent de la navigation contextuelle.</li>437 <li>Select et Retour deviennent de la navigation contextuelle.</li>
438 </ul></section>438 </ul></section>
439- <section class="note"><h2>Source trafic envisagée</h2><p>L'API PRIM <a href="https://prim.iledefrance-mobilites.fr/fr/apis/idfm-disruptions_bulk">Messages Info Trafic — Requête globale</a> publie lignes impactées, sévérité, titre, message et périodes. « Normal » n'est valide qu'après une réponse complète et récente ; une erreur donne « inconnu ». Un départ retardé ne suffit jamais à déclarer toute la ligne retardée.</p></section>439+ <section class="note"><h2>Source trafic envisagée</h2><p>L'API PRIM <a href="https://prim.iledefrance-mobilites.fr/fr/apis/idfm-disruptions_bulk">Messages Info Trafic — Requête globale</a> publie lignes impactées, sévérité, titre, message et périodes. « Normal » n'est valide qu'après une réponse complète et récente ; une erreur donne « inconnu ». Un passage retardé ne suffit jamais à déclarer toute la ligne retardée.</p></section>
440 <section class="note legal"><h2>Pastilles de ligne</h2><p>Les pastilles affichées sont propres au prototype. Les droits de redistribution et de modification des pictogrammes officiels ne sont pas suffisamment explicites. Le protocole montre actuel ne transporte par ailleurs ni mode ni couleurs de ligne.</p></section>440 <section class="note legal"><h2>Pastilles de ligne</h2><p>Les pastilles affichées sont propres au prototype. Les droits de redistribution et de modification des pictogrammes officiels ne sont pas suffisamment explicites. Le protocole montre actuel ne transporte par ailleurs ni mode ni couleurs de ligne.</p></section>
441 <section class="note"><h2>Chargement</h2><p>Le plein écran avec sablier est réservé au démarrage sans aucun résumé utilisable. Avec du cache, l'aperçu reste affiché pendant l'actualisation et les succès partiels restent disponibles.</p></section>441 <section class="note"><h2>Chargement</h2><p>Le plein écran avec sablier est réservé au démarrage sans aucun résumé utilisable. Avec du cache, l'aperçu reste affiché pendant l'actualisation et les succès partiels restent disponibles.</p></section>
442 </div>442 </div>
@@ -453,15 +453,15 @@
453 normal: "Trafic normal", delayed: "Retards sur la ligne", stopped: "Trafic interrompu", unknown: "État du trafic indisponible",453 normal: "Trafic normal", delayed: "Retards sur la ligne", stopped: "Trafic interrompu", unknown: "État du trafic indisponible",
454 normalTitle: "Aucune perturbation signalée", normalMessage: "Dernière vérification à 09:42.",454 normalTitle: "Aucune perturbation signalée", normalMessage: "Dernière vérification à 09:42.",
455 delayedTitle: "Retards sur la ligne", delayedValidity: "En cours · reprise estimée 10:30",455 delayedTitle: "Retards sur la ligne", delayedValidity: "En cours · reprise estimée 10:30",
456- delayedPages: ["Des retards sont constatés sur l'ensemble de la ligne en raison d'un incident d'exploitation.", "Prévoyez un temps de parcours supplémentaire. Vérifiez votre correspondance avant le départ."],456+ delayedPages: ["Des retards sont constatés sur l'ensemble de la ligne en raison d'un incident d'exploitation.", "Prévoyez un temps de parcours supplémentaire. Vérifiez votre correspondance avant de partir."],
457 stoppedTitle: "Trafic interrompu", stoppedValidity: "Entre République et Balard · jusqu'à 11:15",457 stoppedTitle: "Trafic interrompu", stoppedValidity: "Entre République et Balard · jusqu'à 11:15",
458 stoppedPages: ["Le trafic est interrompu entre République et Balard à la suite d'un incident voyageur.", "Une reprise progressive est estimée à 11:15. Empruntez les itinéraires alternatifs indiqués en station."],458 stoppedPages: ["Le trafic est interrompu entre République et Balard à la suite d'un incident voyageur.", "Une reprise progressive est estimée à 11:15. Empruntez les itinéraires alternatifs indiqués en station."],
459 unknownTitle: "Information trafic indisponible", unknownMessage: "Impossible de confirmer l'état actuel de la ligne. Les horaires restent affichés séparément.",459 unknownTitle: "Information trafic indisponible", unknownMessage: "Impossible de confirmer l'état actuel de la ligne. Les horaires restent affichés séparément.",
460- loadingTitle: "Rafraîchissement des informations en cours", loadingBody: "Premier chargement des favoris et de leurs prochains départs.",460+ loadingTitle: "Rafraîchissement des informations en cours", loadingBody: "Premier chargement des favoris et de leurs prochains passages.",
461 unconfiguredTitle: "Configuration requise", unconfiguredBody: "Ajoutez votre clé PRIM et au moins un favori dans les options du téléphone.",461 unconfiguredTitle: "Configuration requise", unconfiguredBody: "Ajoutez votre clé PRIM et au moins un favori dans les options du téléphone.",
462- unavailableTitle: "Départs indisponibles", unavailableBody: "La connexion n'a pas permis de récupérer les informations.",462+ unavailableTitle: "Passages indisponibles", unavailableBody: "La connexion n'a pas permis de récupérer les informations.",
463 backExit: "Retour quitte l'application.", retry: "Select · Réessayer", automatic: "La configuration sera détectée automatiquement.",463 backExit: "Retour quitte l'application.", retry: "Select · Réessayer", automatic: "La configuration sera détectée automatiquement.",
464- departedDelayed: "Départ retardé", positions: "favoris"464+ departedDelayed: "Passage retardé", positions: "favoris"
465 },465 },
466 en: {466 en: {
467 time: "09:42", ready: "up to date", refreshing: "updating", stale: "old data",467 time: "09:42", ready: "up to date", refreshing: "updating", stale: "old data",
@@ -472,12 +472,12 @@
472 delayedPages: ["Delays are affecting the whole line because of an operating incident.", "Allow extra journey time. Check your connection before leaving."],472 delayedPages: ["Delays are affecting the whole line because of an operating incident.", "Allow extra journey time. Check your connection before leaving."],
473 stoppedTitle: "Service interrupted", stoppedValidity: "Between République and Balard · until 11:15",473 stoppedTitle: "Service interrupted", stoppedValidity: "Between République and Balard · until 11:15",
474 stoppedPages: ["Service is interrupted between République and Balard following a passenger incident.", "Progressive recovery is estimated at 11:15. Use the alternatives shown in stations."],474 stoppedPages: ["Service is interrupted between République and Balard following a passenger incident.", "Progressive recovery is estimated at 11:15. Use the alternatives shown in stations."],
475- unknownTitle: "Traffic information unavailable", unknownMessage: "The current line status cannot be confirmed. Departure times remain separate.",475+ unknownTitle: "Traffic information unavailable", unknownMessage: "The current line status cannot be confirmed. Arrival times remain separate.",
476- loadingTitle: "Refreshing information", loadingBody: "First load of favorites and their next departures.",476+ loadingTitle: "Refreshing information", loadingBody: "First load of favorites and their next arrivals.",
477 unconfiguredTitle: "Configuration required", unconfiguredBody: "Add your PRIM key and at least one favorite in phone options.",477 unconfiguredTitle: "Configuration required", unconfiguredBody: "Add your PRIM key and at least one favorite in phone options.",
478- unavailableTitle: "Departures unavailable", unavailableBody: "The connection could not retrieve the information.",478+ unavailableTitle: "Arrivals unavailable", unavailableBody: "The connection could not retrieve the information.",
479 backExit: "Back exits the app.", retry: "Select · Retry", automatic: "Configuration will be detected automatically.",479 backExit: "Back exits the app.", retry: "Select · Retry", automatic: "Configuration will be detected automatically.",
480- departedDelayed: "Departure delayed", positions: "favorites"480+ departedDelayed: "Arrival delayed", positions: "favorites"
481 }481 }
482 };482 };
483 483
@@ -615,8 +615,8 @@
615 keys[0].textContent = state.language === "fr" ? "Page précédente" : "Previous page";615 keys[0].textContent = state.language === "fr" ? "Page précédente" : "Previous page";
616 keys[1].textContent = state.language === "fr" ? "Aucune action" : "No action";616 keys[1].textContent = state.language === "fr" ? "Aucune action" : "No action";
617 keys[2].textContent = state.language === "fr" ? "Page suivante" : "Next page";617 keys[2].textContent = state.language === "fr" ? "Page suivante" : "Next page";
618- keys[3].textContent = state.language === "fr" ? "Départs" : "Departures";618+ keys[3].textContent = state.language === "fr" ? "Passages" : "Arrivals";
619- interactionNote.textContent = state.language === "fr" ? "Haut/Bas pagine un message long. Select reste sans action. Retour revient aux départs." : "Up/Down pages long messages. Select has no action. Back returns to departures.";619+ interactionNote.textContent = state.language === "fr" ? "Haut/Bas pagine un message long. Select reste sans action. Retour revient aux passages." : "Up/Down pages long messages. Select has no action. Back returns to arrivals.";
620 }620 }
621 }621 }
622 622