diff --git a/docs/assets/images/onqc-scopes/companion-01-connected.webp b/docs/assets/images/onqc-scopes/companion-01-connected.webp
new file mode 100644
index 0000000..536c2fc
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-01-connected.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-02-settings.webp b/docs/assets/images/onqc-scopes/companion-02-settings.webp
new file mode 100644
index 0000000..d270a83
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-02-settings.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-03-select-region.webp b/docs/assets/images/onqc-scopes/companion-03-select-region.webp
new file mode 100644
index 0000000..29392b2
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-03-select-region.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-04-add-region.webp b/docs/assets/images/onqc-scopes/companion-04-add-region.webp
new file mode 100644
index 0000000..dadf01a
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-04-add-region.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-05-pick-onqc.webp b/docs/assets/images/onqc-scopes/companion-05-pick-onqc.webp
new file mode 100644
index 0000000..284fc2d
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-05-pick-onqc.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-06-saved.webp b/docs/assets/images/onqc-scopes/companion-06-saved.webp
new file mode 100644
index 0000000..503e691
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-06-saved.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-07-channels.webp b/docs/assets/images/onqc-scopes/companion-07-channels.webp
new file mode 100644
index 0000000..60a17ac
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-07-channels.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-09-channel-menu.webp b/docs/assets/images/onqc-scopes/companion-09-channel-menu.webp
new file mode 100644
index 0000000..897b7f0
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-09-channel-menu.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-10-public-pick-onqc.webp b/docs/assets/images/onqc-scopes/companion-10-public-pick-onqc.webp
new file mode 100644
index 0000000..cbb09a3
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-10-public-pick-onqc.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-11-public-scoped.webp b/docs/assets/images/onqc-scopes/companion-11-public-scoped.webp
new file mode 100644
index 0000000..bb74fe3
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-11-public-scoped.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-13-testing-menu.webp b/docs/assets/images/onqc-scopes/companion-13-testing-menu.webp
new file mode 100644
index 0000000..cba1714
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-13-testing-menu.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-15-add-yow.webp b/docs/assets/images/onqc-scopes/companion-15-add-yow.webp
new file mode 100644
index 0000000..9d538c7
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-15-add-yow.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-16-yow-added.webp b/docs/assets/images/onqc-scopes/companion-16-yow-added.webp
new file mode 100644
index 0000000..718c6d7
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-16-yow-added.webp differ
diff --git a/docs/assets/images/onqc-scopes/companion-17-testing-scoped.webp b/docs/assets/images/onqc-scopes/companion-17-testing-scoped.webp
new file mode 100644
index 0000000..744a031
Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-17-testing-scoped.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-01-contacts.webp b/docs/assets/images/onqc-scopes/repeater-01-contacts.webp
new file mode 100644
index 0000000..06386f5
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-01-contacts.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-02-login.webp b/docs/assets/images/onqc-scopes/repeater-02-login.webp
new file mode 100644
index 0000000..ce1ed3d
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-02-login.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-03-admin.webp b/docs/assets/images/onqc-scopes/repeater-03-admin.webp
new file mode 100644
index 0000000..3745a46
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-03-admin.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-04-cli-standard.webp b/docs/assets/images/onqc-scopes/repeater-04-cli-standard.webp
new file mode 100644
index 0000000..c0cebfc
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-04-cli-standard.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-05-ver.webp b/docs/assets/images/onqc-scopes/repeater-05-ver.webp
new file mode 100644
index 0000000..f1ab304
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-05-ver.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-06-send-again.webp b/docs/assets/images/onqc-scopes/repeater-06-send-again.webp
new file mode 100644
index 0000000..0513b70
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-06-send-again.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-07-region-put-115.webp b/docs/assets/images/onqc-scopes/repeater-07-region-put-115.webp
new file mode 100644
index 0000000..022f3b7
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-07-region-put-115.webp differ
diff --git a/docs/assets/images/onqc-scopes/repeater-08-region-result.webp b/docs/assets/images/onqc-scopes/repeater-08-region-result.webp
new file mode 100644
index 0000000..4a6b4a4
Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-08-region-result.webp differ
diff --git a/docs/assets/styles/scopes-proposal.css b/docs/assets/styles/scopes-proposal.css
index 6d26bb9..7681cc4 100644
--- a/docs/assets/styles/scopes-proposal.css
+++ b/docs/assets/styles/scopes-proposal.css
@@ -755,3 +755,64 @@
scroll-padding-inline-start: 0;
}
}
+
+/* ---------- Screenshot galleries ---------- */
+
+.md-typeset .scp-shots {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 9rem), 1fr));
+ gap: var(--mc-space-4);
+ margin: var(--mc-space-4) 0 var(--mc-space-6);
+}
+
+.md-typeset .scp-shots .scp-shot {
+ display: flex;
+ width: auto;
+ max-width: none;
+ flex-direction: column;
+ align-items: stretch;
+ gap: var(--mc-space-2);
+ margin: 0;
+}
+
+.md-typeset .scp-shot img {
+ display: block;
+ width: 100%;
+ height: auto;
+ border: 1px solid var(--mc-color-border);
+ border-radius: var(--mc-radius-md);
+ box-shadow: var(--mc-shadow-1);
+}
+
+.md-typeset .scp-shot figcaption {
+ max-width: none;
+ margin: 0;
+ color: var(--mc-color-text);
+ font-size: 0.8rem;
+ font-style: normal;
+ line-height: 1.45;
+ text-align: left;
+}
+
+.scp-shot__num {
+ display: inline-grid;
+ width: 1.3rem;
+ height: 1.3rem;
+ margin-right: 0.2rem;
+ place-items: center;
+ border-radius: 999px;
+ background: var(--mc-color-action);
+ color: var(--mc-color-surface);
+ font-size: 0.72rem;
+ font-weight: 800;
+}
+
+.md-typeset .scp-shots:has(> .scp-shot:only-child) {
+ max-width: 17rem;
+ grid-template-columns: minmax(0, 1fr);
+}
+
+.md-typeset .scp-shot a {
+ display: block;
+ border-radius: var(--mc-radius-md);
+}
diff --git a/docs/proposals/onqc-scopes.fr.md b/docs/proposals/onqc-scopes.fr.md
index 5848b2a..7aa0b2e 100644
--- a/docs/proposals/onqc-scopes.fr.md
+++ b/docs/proposals/onqc-scopes.fr.md
@@ -65,8 +65,9 @@ premiers.
- **Les répéteurs** portent leur ville, leur province, `onqc` et `can`.
-- **Les appareils compagnons** utilisent `onqc` par défaut, pour que les messages privés
- joignent tout le monde.
+- **Les appareils compagnons** utilisent `onqc` par défaut, pour que les
+ messages privés joignent tout le monde, une fois les répéteurs autour d’eux
+ configurés.
- **`Public`** utilise `onqc`, pour que tout le monde en Ontario et au Québec
puisse se parler.
- **Les canaux de test et les robots** utilisent votre ville, pour rester
@@ -81,8 +82,9 @@ Une portée est un nom court joint à un message, par exemple `yow`. Les
répéteurs s’en servent pour décider s’ils relaient le message.
-Une portée n’est **pas** du chiffrement et **pas** une clôture GPS. Tout le
-monde peut lire le nom, et il n’a rien à voir avec l’endroit où vous êtes. C’est
+Une portée n’est **pas** du chiffrement et **pas** une clôture GPS. Quiconque
+connaît le nom peut l’utiliser, et il n’a rien à voir avec l’endroit où vous
+êtes. C’est
seulement une étiquette qui dit : « les répéteurs qui portent ce nom, relayez
ce message ».
@@ -127,7 +129,7 @@ avec cinq messages différents.
Le MP porte onqc parce que onqc est la portée par défaut de l’appareil compagnon dans cette proposition. Voir pourquoi plus bas. Le répéteur entend quand même tous les messages. La portée décide seulement s’il les relaie. Votre appareil compagnon reçoit aussi tout ce qui l’atteint.
-Trois détails piègent souvent :
+Quatre détails piègent souvent :
- **L’orthographe doit être exacte.** `yow`, `YOW` et `ott` sont trois noms
différents. Un appareil compagnon réglé sur `yow` est ignoré par un répéteur qui ne
@@ -137,6 +139,10 @@ Trois détails piègent souvent :
plus.
- **Il n’y a pas d’héritage.** Porter `on` ne veut pas dire porter `yow`.
Chaque nom doit être sur la liste à part entière.
+- **Un répéteur sans régions rejette tous les messages avec portée.** Par
+ défaut, un répéteur ne porte que `*` : il relaie les messages sans portée et
+ rien d’autre. Les messages avec portée fonctionnent seulement une fois les
+ répéteurs du trajet configurés.
## Les quatre niveaux
@@ -195,11 +201,9 @@ Québec ».
`yow.meshmapper.net`.
- MeshCore utilise déjà les codes d’aéroport ailleurs, par exemple pour le
[code d’emplacement que chaque observateur transmet](../analyzer/iata-codes.md).
- Inventer d’autres noms seulement pour les régions donnerait deux façons de
- nommer le même secteur, et plus de confusion avec le temps. Les codes
- d’aéroport ne sont pas parfaits pour des secteurs de réseau, mais MeshCore
- les utilise déjà pour bien des choses et ça ne changera pas; les régions
- devraient donc suivre.
+ Ils ne sont pas parfaits pour des secteurs de réseau, mais ça ne changera
+ pas, et d’autres noms seulement pour les régions ajouteraient de la
+ confusion avec le temps.
- Il n’y a ni accent ni majuscule à se tromper. `montréal`, `Montreal` et
`montreal` seraient trois portées différentes.
- Ils sont faciles à diviser plus tard. Si Renfrew veut un jour son propre
@@ -262,68 +266,176 @@ complète.
## Configuration du répéteur
-### Étape 1 : Effacer les anciennes régions
+Entrez ces commandes dans la ligne de commande du répéteur **une à la fois** :
+dans l’application MeshCore, ouvrez le répéteur, connectez-vous comme
+administrateur et utilisez la zone de commande de **Repeater Admin**, ou
+utilisez la console USB. Chaque commande a son propre bouton de copie.
+Attendez `OK` avant d’envoyer la suivante.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-01-contacts.webp)
+1 Dans Contacts, trouvez votre répéteur (cherchez par nom) et touchez-le.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-02-login.webp)
+2 Entrez le mot de passe administrateur et touchez Log In.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-03-admin.webp)
+3 Vérifiez You are logged in as an Admin, puis touchez Command Line en bas.
+
+
+
+
+
+**Pas de `OK`? Renvoyez la même commande.** Par le réseau maillé, une réponse
+peut prendre quelques secondes ou se perdre. Dans l’application MeshCore,
+touchez longuement la commande dans l’historique et choisissez **Send Again**.
+Lancer une commande deux fois ne cause pas de problème. Si un `region remove` répété répond `Err - not found`,
+le premier a déjà fonctionné.
+
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-04-cli-standard.webp)
+1 Assurez-vous que chaque commande reçoit un OK. Ici, le premier set flood.advert.interval 47 n’en a pas reçu, donc il a été renvoyé.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-06-send-again.webp)
+2 Pas de OK? Touchez longuement la commande et choisissez Send Again.
+
+
+
+
+### Étape 1 : Vérifier le micrologiciel
+
+```text
+ver
+```
+
+Cette commande affiche la version du micrologiciel. Elle détermine les
+commandes de région à utiliser à l’étape 4 :
+
+- **1.16 ou plus récent :** utilisez `region def`.
+- **1.15 ou plus ancien :** `region def` répond `Err - ??`. Utilisez plutôt les
+ commandes `region put` sous [Micrologiciel plus ancien](#micrologiciel-plus-ancien),
+ ou mettez d’abord le micrologiciel à jour.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-05-ver.webp)
+1 Sur ce répéteur, region def répond Err - ??, et ver affiche v1.15.0; il utilise donc les étapes pour micrologiciel plus ancien.
+
+
+
+
+### Étape 2 : Effacer les anciennes régions
Beaucoup de répéteurs ont déjà des régions de l’ancienne configuration, comme
-`can`, `on-alg` ou `ott`. `region def` ne supprime jamais rien, alors effacez-les
-d’abord.
+`can`, `on-alg` ou `ott`. Les nouvelles commandes ne suppriment jamais rien,
+alors effacez-les d’abord.
-1. Lancez `region` pour voir ce qui s’y trouve.
-2. Retirez chaque nom sauf `*` avec `region remove `. Commencez par la
- ligne la plus en retrait et remontez. Si vous voyez `Err - not empty`, un
- nom est encore en retrait sous celui-ci; retirez-le d’abord.
-3. Lancez `region save`.
+1. Affichez ce qui s’y trouve :
+
+ ```text
+ region
+ ```
-Par exemple, un répéteur configuré avec l’ancien chemin d’Ottawa :
+2. Retirez chaque nom sauf `*`, un à la fois, avec `region remove `.
+ Commencez par la ligne la plus en retrait et remontez. Si vous voyez
+ `Err - not empty`, un autre nom est encore en retrait sous celui-ci;
+ retirez-le d’abord.
+3. Enregistrez :
+
+ ```text
+ region save
+ ```
+
+Par exemple, un répéteur configuré avec l’ancien chemin d’Ottawa lance ces
+commandes, dans l’ordre :
```text
region remove ott
+```
+
+```text
region remove on-alg
+```
+
+```text
region remove on
+```
+
+```text
region remove can
+```
+
+```text
region save
```
-Retirer `on` et `can` ne pose pas de problème. Les réglages de région de
-l’étape 3 les remettent. Lancez `region` de nouveau : vous ne devriez voir que `* F`.
+Retirer `on` et `can` ne pose pas de problème. L’étape 4 les remet. Lancez
+`region` de nouveau : vous ne devriez voir que `*^ F`.
-### Étape 2 : Réglages standard de MeshCore Canada
+### Étape 3 : Réglages standard de MeshCore Canada
```text
set path.hash.mode 2
+```
+
+```text
set advert.interval 240
+```
+
+```text
set flood.advert.interval 47
+```
+
+```text
set flood.max 16
```
-
path.hash.mode 2
Utilise des identifiants de répéteur de 3 octets dans les chemins, pour que moins de répéteurs partagent un identifiant.
+
path.hash.mode 2
Utilise des identifiants de répéteur de 3 octets dans les chemins, pour que moins de répéteurs partagent un identifiant. Exige le micrologiciel 1.14 ou plus récent.
advert.interval 240
Annonce ce répéteur à ses voisins directs toutes les 4 heures.
flood.advert.interval 47
Annonce ce répéteur dans tout le réseau toutes les 47 heures.
flood.max 16
Aucune diffusion ne fait plus de 16 sauts, avec ou sans portée.
-### Étape 3 : Réglages de région
+Ces réglages s’enregistrent d’eux-mêmes. Pas besoin de `region save`.
+
+### Étape 4 : Réglages de région
Votre code de ville est votre **zone MeshMapper**. Ouvrez
[MeshMapper](https://meshmapper.net/), trouvez la zone où se trouve votre
répéteur et utilisez son code. C’est une carte que tout le monde utilise déjà,
donc rien de nouveau à chercher.
-Le modèle est toujours le même :
-
-```text
-region def |* |* onqc|* can
-```
-
-Exemples :
+Avec le **micrologiciel 1.16 ou plus récent**, choisissez votre secteur et
+lancez les quatre commandes dans l’ordre :
=== "Ottawa et environs"
```text
region def yow|* on|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yow
+ ```
+
+ ```text
region save
```
@@ -331,8 +443,17 @@ Exemples :
```text
region def yow|* qc|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yow
+ ```
+
+ ```text
region save
```
@@ -340,8 +461,17 @@ Exemples :
```text
region def yul|* qc|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yul
+ ```
+
+ ```text
region save
```
@@ -349,8 +479,17 @@ Exemples :
```text
region def yqb|* qc|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yqb
+ ```
+
+ ```text
region save
```
@@ -361,32 +500,155 @@ aujourd’hui; il n’y a donc rien de nouveau à apprendre.
region def …
Porter votre ville, votre province, onqc et can.
region allowf *
Relayer aussi les messages sans portée. C’est déjà le réglage par défaut. On le règle quand même pour que vous le voyiez.
-
region default yow
Les annonces de ce répéteur utilisent la portée de votre ville, pour rester locales.
-
region save
Conserve les réglages de région après un redémarrage. Les commandes set s’enregistrent d’elles-mêmes.
+
region default <ville>
Les annonces de ce répéteur utilisent la portée de votre ville, pour rester locales.
+
region save
Conserve les réglages de région après un redémarrage.
-Pour vérifier, lancez `region`. Pour Ottawa, vous devriez voir :
+#### Micrologiciel plus ancien
+
+Si `region def` répond `Err - ??`, votre micrologiciel est plus ancien que 1.16.
+Ajoutez plutôt chaque code avec `region put`. Ces exemples sont pour Ottawa.
+Pour un autre secteur, remplacez `yow` par votre code de ville, et `on` par
+`qc` au Québec.
+
+=== "Micrologiciel 1.15"
+
+ ```text
+ region put yow
+ ```
+
+ ```text
+ region put on
+ ```
+
+ ```text
+ region put onqc
+ ```
+
+ ```text
+ region put can
+ ```
+
+ ```text
+ region allowf *
+ ```
+
+ ```text
+ region default yow
+ ```
+
+ ```text
+ region save
+ ```
+
+=== "Micrologiciel 1.10 à 1.14"
+
+ ```text
+ region put yow
+ ```
+
+ ```text
+ region allowf yow
+ ```
+
+ ```text
+ region put on
+ ```
+
+ ```text
+ region allowf on
+ ```
+
+ ```text
+ region put onqc
+ ```
+
+ ```text
+ region allowf onqc
+ ```
+
+ ```text
+ region put can
+ ```
+
+ ```text
+ region allowf can
+ ```
+
+ ```text
+ region allowf *
+ ```
+
+ ```text
+ region save
+ ```
+
+Avec **1.15**, chaque `region put` répond `OK - (flood allowed)`, et
+`region default yow` répond `default scope is now yow`. Une nouvelle région
+relaie tout de suite. Avec **1.10 à 1.14**,
+une nouvelle région commence avec la diffusion **désactivée**, donc chacune a
+aussi besoin de `region allowf`. Ces versions n’ont pas non plus de
+`region default`, donc les annonces du répéteur restent sans portée. Une mise
+à jour du micrologiciel vaut la peine.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-07-region-put-115.webp)
+1 Micrologiciel 1.15 : chaque region put répond OK - (flood allowed). region put on a dû être renvoyé.
+
+
+
+
+### Étape 5 : Vérifier le résultat
```text
-* F
+region
+```
+
+Pour Ottawa, vous devriez voir :
+
+```text
+*^ F
yow F
on F
onqc F
can F
```
-`F` veut dire « diffusion permise » : le répéteur relaie ce nom.
+`F` veut dire « diffusion permise » : le répéteur relaie ce nom. Le `^` à côté
+de `*` indique la région d’attache du répéteur; quand aucune n’est réglée, il
+se place sur `*`. Vous pouvez l’ignorer.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-08-region-result.webp)
+1 La liste terminée sur un répéteur d’Ottawa.
+
+
+
### Répéteurs passerelles
Un répéteur qui relie volontairement deux zones de ville porte **les deux**
codes de ville. Par exemple, un répéteur à **Rigaud** se trouve dans la zone
-`yow`, du côté québécois, et la relie à la zone de Montréal :
+`yow`, du côté québécois, et la relie à la zone de Montréal. Avec le
+micrologiciel 1.16 ou plus récent, lancez ces commandes dans l’ordre :
```text
region def yow|* yul|* qc|* onqc|* can
+```
+
+```text
region denyf *
+```
+
+```text
region default yow
+```
+
+```text
region save
```
@@ -417,26 +679,128 @@ rejeter `*` lui aussi. Sinon, les messages sans portée la contournent.
## Configuration de l’appareil compagnon
+
+**Attendez que les répéteurs autour de vous soient configurés.** Un répéteur
+sans régions rejette tous les messages avec portée. Si vous réglez votre
+portée par défaut sur `onqc` avant que les répéteurs de vos trajets la
+portent, vos messages de canal et vos premiers MP n’iront pas loin. D’ici là,
+laissez **Default Region Scope** vide. Vous recevrez quand même tout.
+
+
### Étape 1 : Régler votre portée par défaut
Dans l’application MeshCore, ouvrez **Settings**. Sous **Network Settings**,
touchez **Default Region Scope**, ajoutez `onqc` et sélectionnez-le.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-01-connected.webp)
+1 Connectez votre appareil compagnon à l’application MeshCore et touchez la roue des réglages en haut à droite.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-02-settings.webp)
+2 Descendez jusqu’à Network Settings et touchez Default Region Scope.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-03-select-region.webp)
+3 Si onqc n’est pas dans la liste, touchez Add Region, ou le + en haut à droite.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-04-add-region.webp)
+4 Tapez onqc, tout en minuscules, et touchez le crochet en haut à droite.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-05-pick-onqc.webp)
+5 Touchez onqc pour le sélectionner.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-06-saved.webp)
+6 Default Region Scope affiche maintenant onqc. Touchez le crochet en haut à droite. Il tourne pendant l’enregistrement, puis Settings Saved! apparaît.
+
+
+
+
### Étape 2 : Régler la portée de chaque canal
-Ouvrez le canal, utilisez le menu du canal, touchez **Set Region Scope** et
-choisissez la portée selon ce tableau :
+Ouvrez le canal, touchez **⋮** en haut à droite, choisissez
+**Set Region Scope** et choisissez la portée selon ce tableau :
| Canal | Portée | Pourquoi |
| --- | --- | --- |
| `Public` | `onqc` | Tout le monde en Ontario et au Québec peut se parler |
-| Canaux de test, comme `#test` | Votre ville, par exemple `yow` | Les tests restent locaux |
-| Canaux de robots | Votre ville, par exemple `yow` | Les réponses des robots restent locales |
+| Canaux de test, comme `#testing` | Votre ville, par exemple `yow` | Les tests restent locaux |
+| Canaux de robots, comme `#bots` | Votre ville, par exemple `yow` | Les réponses des robots restent locales |
| Vos propres canaux | Votre ville, `on`/`qc` ou `onqc` | Choisissez jusqu’où ils doivent aller |
Si vous faites fonctionner un robot, réglez aussi sa propre **Default Region
Scope** sur votre ville.
+**Exemple : `Public` sur `onqc`**
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-07-channels.webp)
+1 Touchez Channels dans la barre du bas et ouvrez Public.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-09-channel-menu.webp)
+2 Touchez ⋮ en haut à droite et choisissez Set Region Scope.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-10-public-pick-onqc.webp)
+3 Touchez onqc.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-11-public-scoped.webp)
+4 L’en-tête affiche maintenant Region: onqc, et une bannière indique que seuls les répéteurs qui permettent cette région relaieront. La limite passe à 127 caractères.
+
+
+
+
+
+**Les messages avec portée sont un peu plus courts.** Dès qu’un canal a une
+portée, l’application permet moins de caractères par message. Lors de nos
+essais, la limite sur `Public` est passée de 137 à 127 caractères après l’avoir
+réglé sur `onqc`. L’application fixe la limite exacte, qui peut varier selon le
+nom de votre nœud et la version de l’application.
+
+
+**Exemple : `#testing` sur votre ville**
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-13-testing-menu.webp)
+1 Ouvrez le canal, touchez ⋮ et choisissez Set Region Scope.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-15-add-yow.webp)
+2 Si votre code de ville n’est pas dans la liste, touchez +, tapez-le (par exemple yow) et touchez le crochet.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-16-yow-added.webp)
+3Region has been added! Touchez votre code de ville pour le sélectionner.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-17-testing-scoped.webp)
+4 L’en-tête affiche maintenant Region: yow.
+
+
+
+
## Pourquoi l’appareil compagnon utilise `onqc` par défaut
On ne peut pas choisir la portée d’un seul message privé. Quand un MP n’a pas
@@ -528,7 +892,6 @@ D’autres exemples sur le même lien :
| --- | --- | --- | --- | --- |
| Nouvel utilisateur à Ottawa, sans portée | ✅ Relaie | ❌ Rejette | Jamais atteint | Tout le secteur d’Ottawa |
| Nouvel utilisateur à Montréal, sans portée | Jamais atteint | ❌ Rejette | ✅ Relaie | Tout le secteur de Montréal |
-| Ancienne appli ou annonce d’un ancien répéteur, sans portée | ✅ Relaie | ❌ Rejette | ✅ Relaie | Reste dans la ville d’origine |
| Canal ou robot d’Ottawa, `yow` | ✅ Relaie | ✅ Relaie | ❌ Rejette | Zone d’Ottawa seulement |
| Canal ou robot de Montréal, `yul` | ❌ Rejette | ✅ Relaie | ✅ Relaie | Zone de Montréal seulement |
| Canal de tout le Québec, `qc` | ❌ Rejette | ✅ Relaie | ✅ Relaie | Côté québécois, y compris Gatineau |
@@ -542,12 +905,15 @@ pas encore réglé de portée fonctionnent quand même localement.
Répéteurs
Les propriétaires effacent les anciennes régions et ajoutent leurs codes. Les répéteurs normaux gardent * permis; les passerelles le rejettent. Rien ne brise dans aucune ville.
-
Appareils compagnons
Les utilisateurs règlent leur portée par défaut et Public sur onqc, et leurs canaux de test et robots sur leur ville.
+
Appareils compagnons
Une fois les répéteurs autour d’eux configurés, les utilisateurs règlent leur portée par défaut et Public sur onqc, et leurs canaux de test et robots sur leur ville.
Seulement au besoin
Si les messages sans portée sont encore trop bruyants dans une ville, les répéteurs peuvent aussi lancer set flood.max.unscoped 3. Les messages avec portée atteignent encore 16 sauts.
## À savoir
+- **Les messages avec portée ont environ 10 caractères de moins.**
+ L’application réduit la longueur maximale sur les canaux avec portée (de
+ 137 à 127 lors de nos essais).
- **Les annonces des répéteurs restent dans leur ville.** Les utilisateurs de
Montréal ne verront pas les répéteurs d’Ottawa par les annonces diffusées.
- **16 sauts doivent suffire.** `flood.max` s’applique aussi à `onqc`. Si le
diff --git a/docs/proposals/onqc-scopes.md b/docs/proposals/onqc-scopes.md
index 4a3dd99..038e21b 100644
--- a/docs/proposals/onqc-scopes.md
+++ b/docs/proposals/onqc-scopes.md
@@ -61,7 +61,8 @@ There are four levels of scope. Every repeater carries one code from each: its c
- **Repeaters** carry their city, their province, `onqc` and `can`.
-- **Companions** use `onqc` as their default, so direct messages reach anyone.
+- **Companions** use `onqc` as their default, so direct messages reach anyone,
+ once the repeaters around them are set up.
- **`Public`** uses `onqc`, so everyone in Ontario and Québec can talk.
- **Test channels and bots** use your city, so they stay local.
- **Messages with no scope** still work inside each city. Bridge repeaters
@@ -73,9 +74,9 @@ A scope is a short name attached to a message, such as `yow`. Repeaters use it
to decide whether to pass the message on.
-A scope is **not** encryption and **not** a GPS fence. Anyone can read the
-name, and it has nothing to do with where you are. It is only a label that
-says "repeaters that carry this name, please forward this."
+A scope is **not** encryption and **not** a GPS fence. Anyone who knows the
+name can use it, and it has nothing to do with where you are. It is only a
+label that says "repeaters that carry this name, please forward this."
Your app turns the name into a small code and puts it in the message header.
@@ -118,7 +119,7 @@ different messages.
The DM is tagged onqc because onqc is the companion default in this proposal. See why further down. The repeater still hears every message. A scope only decides whether it passes the message on. Your companion also receives everything that reaches it.
-Three details catch people out:
+Four details catch people out:
- **Spelling must be exact.** `yow`, `YOW` and `ott` are three different
names. A companion set to `yow` is ignored by a repeater that only carries `ott`.
@@ -126,6 +127,10 @@ Three details catch people out:
straight along that path and scopes no longer matter.
- **There is no inheritance.** Carrying `on` does not mean carrying `yow`.
Each name has to be on the list by itself.
+- **A repeater with no regions set drops every scoped message.** Out of the
+ box, a repeater only carries `*`, so it forwards messages with no scope and
+ nothing else. Scoped messages only work once the repeaters along the way are
+ set up.
## The four levels
@@ -181,12 +186,10 @@ Québec mesh".
- They are the same codes MeshMapper already uses, for example
`yow.meshmapper.net`.
-- MeshCore already uses airport codes in other places too, such as the
- [location code every observer reports](../analyzer/iata-codes.md). Inventing
- a separate set of names just for regions would mean two ways to name the
- same area, and more confusion over time. Airport codes are not a perfect fit
- for mesh areas, but MeshCore already uses them for a variety of things and
- that is not going to change, so regions should follow along.
+- MeshCore already uses airport codes elsewhere, such as the
+ [location code every observer reports](../analyzer/iata-codes.md). They are
+ not a perfect fit for mesh areas, but that is not going to change, and a
+ second set of names just for regions would only add confusion over time.
- There are no accents or capital letters to get wrong. `montréal`,
`Montreal` and `montreal` would be three different scopes.
- They are easy to split later. If Renfrew wants its own area one day, it can
@@ -247,66 +250,172 @@ there. Run `region` afterwards to see the full list.
## Repeater setup
-### Step 1: Clear any old regions
+Type these into the repeater's command line **one command at a time**: in the
+MeshCore app, open the repeater, log in as admin and use the command box in
+**Repeater Admin**, or use the USB console. Each command has its own copy
+button. Wait for `OK` before sending the next one.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-01-contacts.webp)
+1 In Contacts, find your repeater (search by name) and tap it.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-02-login.webp)
+2 Enter the admin password and tap Log In.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-03-admin.webp)
+3 Check for You are logged in as an Admin, then tap Command Line at the bottom.
+
+
+
+
+
+**No `OK`? Send the same command again.** Over the mesh, a reply can take a few
+seconds or get lost. In the MeshCore app, tap and hold the command in the
+history and choose **Send Again**. Running a command twice is safe. If a
+repeated `region remove` answers `Err - not found`, the first one already
+worked.
+
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-04-cli-standard.webp)
+1 Make sure every command gets an OK back. Here, the first set flood.advert.interval 47 never got one, so it was sent again.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-06-send-again.webp)
+2 No OK? Tap and hold the command and choose Send Again.
+
+
+
+
+### Step 1: Check your firmware
+
+```text
+ver
+```
+
+This shows the firmware version. It decides which region commands you use in
+step 4:
+
+- **1.16 or newer:** use `region def`.
+- **1.15 or older:** `region def` answers `Err - ??`. Use the `region put`
+ commands under [Older firmware](#older-firmware) instead, or update the
+ firmware first.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-05-ver.webp)
+1 On this repeater, region def answers Err - ??, and ver shows v1.15.0, so it uses the older-firmware steps.
+
+
+
+
+### Step 2: Clear any old regions
Many repeaters already have regions from the older setup, such as `can`,
-`on-alg` or `ott`. `region def` never deletes anything, so clear them first.
+`on-alg` or `ott`. The new commands never delete anything, so clear them first.
-1. Run `region` to list what is there.
-2. Remove every name except `*` with `region remove `. Start with the
- most indented line and work up. If you see `Err - not empty`, a name is
- still indented under it, so remove that one first.
-3. Run `region save`.
+1. List what is there:
+
+ ```text
+ region
+ ```
-For example, a repeater set up with the old Ottawa path:
+2. Remove every name except `*`, one at a time, with `region remove `.
+ Start with the most indented line and work up. If you see
+ `Err - not empty`, another name is still indented under it, so remove that
+ one first.
+3. Save:
+
+ ```text
+ region save
+ ```
+
+For example, a repeater set up with the old Ottawa path runs these, in order:
```text
region remove ott
+```
+
+```text
region remove on-alg
+```
+
+```text
region remove on
+```
+
+```text
region remove can
+```
+
+```text
region save
```
-Removing `on` and `can` is fine. The region settings in step 3 add them back. Run `region` again, and you
-should only see `* F`.
+Removing `on` and `can` is fine. Step 4 adds them back. Run `region` again,
+and you should only see `*^ F`.
-### Step 2: Standard MeshCore Canada settings
+### Step 3: Standard MeshCore Canada settings
```text
set path.hash.mode 2
+```
+
+```text
set advert.interval 240
+```
+
+```text
set flood.advert.interval 47
+```
+
+```text
set flood.max 16
```
-
path.hash.mode 2
Uses 3-byte repeater IDs in message paths, so fewer repeaters share an ID.
+
path.hash.mode 2
Uses 3-byte repeater IDs in message paths, so fewer repeaters share an ID. Needs firmware 1.14 or newer.
advert.interval 240
Announces this repeater to direct neighbours every 4 hours.
flood.advert.interval 47
Announces this repeater across the network every 47 hours.
flood.max 16
No flood message travels more than 16 hops, scoped or not.
-### Step 3: Region settings
+These save by themselves. No `region save` is needed for them.
+
+### Step 4: Region settings
Your city code is your **MeshMapper zone**. Open [MeshMapper](https://meshmapper.net/),
find the zone your repeater sits in, and use its code. It is a map everyone
already uses, so there is nothing new to look up.
-The pattern is always the same:
-
-```text
-region def |* |* onqc|* can
-```
-
-Examples:
+On **firmware 1.16 or newer**, pick your area and run the four commands in
+order:
=== "Ottawa and surrounding areas"
```text
region def yow|* on|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yow
+ ```
+
+ ```text
region save
```
@@ -314,8 +423,17 @@ Examples:
```text
region def yow|* qc|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yow
+ ```
+
+ ```text
region save
```
@@ -323,8 +441,17 @@ Examples:
```text
region def yul|* qc|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yul
+ ```
+
+ ```text
region save
```
@@ -332,8 +459,17 @@ Examples:
```text
region def yqb|* qc|* onqc|* can
+ ```
+
+ ```text
region allowf *
+ ```
+
+ ```text
region default yqb
+ ```
+
+ ```text
region save
```
@@ -344,32 +480,153 @@ nothing new to learn.
region def …
Carry your city, your province, onqc and can.
region allowf *
Also forward messages with no scope. This is already on by default. We set it anyway so you can see it.
-
region default yow
This repeater's own adverts use your city's scope, so they stay local.
-
region save
Keeps the region settings after a reboot. The set commands save by themselves.
+
region default <city>
This repeater's own adverts use your city's scope, so they stay local.
+
region save
Keeps the region settings after a reboot.
-To check, run `region`. For Ottawa you should see:
+#### Older firmware
+
+If `region def` answers `Err - ??`, your firmware is older than 1.16. Add each
+code with `region put` instead. These examples are for Ottawa. For another
+area, replace `yow` with your city code, and `on` with `qc` in Québec.
+
+=== "Firmware 1.15"
+
+ ```text
+ region put yow
+ ```
+
+ ```text
+ region put on
+ ```
+
+ ```text
+ region put onqc
+ ```
+
+ ```text
+ region put can
+ ```
+
+ ```text
+ region allowf *
+ ```
+
+ ```text
+ region default yow
+ ```
+
+ ```text
+ region save
+ ```
+
+=== "Firmware 1.10 to 1.14"
+
+ ```text
+ region put yow
+ ```
+
+ ```text
+ region allowf yow
+ ```
+
+ ```text
+ region put on
+ ```
+
+ ```text
+ region allowf on
+ ```
+
+ ```text
+ region put onqc
+ ```
+
+ ```text
+ region allowf onqc
+ ```
+
+ ```text
+ region put can
+ ```
+
+ ```text
+ region allowf can
+ ```
+
+ ```text
+ region allowf *
+ ```
+
+ ```text
+ region save
+ ```
+
+On **1.15**, each `region put` answers `OK - (flood allowed)`, and
+`region default yow` answers `default scope is now yow`. A new region forwards
+straight away. On **1.10 to 1.14**, a new
+region starts with forwarding **off**, so each one also needs
+`region allowf`. Those versions also have no `region default`, so the
+repeater's own adverts stay unscoped. Updating the firmware is worth it.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-07-region-put-115.webp)
+1 Firmware 1.15: each region put answers OK - (flood allowed). region put on needed a second send.
+
+
+
+
+### Step 5: Check the result
```text
-* F
+region
+```
+
+For Ottawa, you should see:
+
+```text
+*^ F
yow F
on F
onqc F
can F
```
-`F` means "flood allowed": the repeater forwards that name.
+`F` means "flood allowed": the repeater forwards that name. The `^` next to
+`*` marks the repeater's home region; with none set, it sits on `*`. You can
+ignore it.
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-08-region-result.webp)
+1 The finished list on an Ottawa repeater.
+
+
+
### Bridge repeaters
A repeater that links two city zones on purpose carries **both** city codes.
For example, a repeater in **Rigaud** sits in the `yow` zone, on the Québec
-side, and links it to the Montréal zone:
+side, and links it to the Montréal zone. On firmware 1.16 or newer, run these
+in order:
```text
region def yow|* yul|* qc|* onqc|* can
+```
+
+```text
region denyf *
+```
+
+```text
region default yow
+```
+
+```text
region save
```
@@ -400,25 +657,126 @@ messages with no scope go around it.
## Companion setup
+
+**Wait until the repeaters around you are set up.** A repeater with no regions
+set drops every scoped message. If you set your default to `onqc` before the
+repeaters on your routes carry it, your channel messages and first DMs will
+only reach nearby. Until then, leave **Default Region Scope** empty. You will
+still receive everything.
+
+
### Step 1: Set your default scope
In the MeshCore app, open **Settings**. Under **Network Settings**, tap
**Default Region Scope**, add `onqc` and select it.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-01-connected.webp)
+1 Connect your companion to the MeshCore app and tap the settings cog in the top right.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-02-settings.webp)
+2 Scroll down to Network Settings and tap Default Region Scope.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-03-select-region.webp)
+3 If onqc is not listed, tap Add Region, or the + at the top right.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-04-add-region.webp)
+4 Type onqc, all lowercase, and tap the checkmark in the top right.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-05-pick-onqc.webp)
+5 Tap onqc to select it.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-06-saved.webp)
+6 Default Region Scope now shows onqc. Tap the checkmark in the top right. It spins while saving, then Settings Saved! pops up.
+
+
+
+
### Step 2: Set a scope on each channel
-Open the channel, use the channel menu, tap **Set Region Scope**, and pick the
-scope from this table:
+Open the channel, tap **⋮** in the top right, choose **Set Region Scope**,
+and pick the scope from this table:
| Channel | Scope | Why |
| --- | --- | --- |
| `Public` | `onqc` | Everyone in Ontario and Québec can talk |
-| Test channels, such as `#test` | Your city, for example `yow` | Tests stay local |
-| Bot channels | Your city, for example `yow` | Bot replies stay local |
+| Test channels, such as `#testing` | Your city, for example `yow` | Tests stay local |
+| Bot channels, such as `#bots` | Your city, for example `yow` | Bot replies stay local |
| Your own channels | Your city, `on`/`qc`, or `onqc` | Pick how far it should reach |
If you run a bot, set that bot's own **Default Region Scope** to your city too.
+**Example: `Public` to `onqc`**
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-07-channels.webp)
+1 Tap Channels in the bottom menu bar and open Public.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-09-channel-menu.webp)
+2 Tap ⋮ in the top right and choose Set Region Scope.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-10-public-pick-onqc.webp)
+3 Tap onqc.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-11-public-scoped.webp)
+4 The header now shows Region: onqc, and a banner says only repeaters allowing that region will forward. The limit drops to 127 characters.
+
+
+
+
+
+**Scoped messages are a little shorter.** Once a channel has a scope, the app
+allows fewer characters per message. In our testing, the limit on `Public`
+dropped from 137 to 127 characters after setting it to `onqc`. The app sets
+the exact limit, and it can vary with your node name and app version.
+
+
+**Example: `#testing` to your city**
+
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-13-testing-menu.webp)
+1 Open the channel, tap ⋮ and choose Set Region Scope.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-15-add-yow.webp)
+2 If your city code is not listed, tap +, type it (for example yow) and tap the checkmark.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-16-yow-added.webp)
+3Region has been added! Tap your city code to select it.
+
+
+
+[{ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-17-testing-scoped.webp)
+4 The header now shows Region: yow.
+
+
+
+
## Why the companion default is `onqc`
You cannot pick a scope for a single direct message. When a DM has no known
@@ -507,7 +865,6 @@ More examples on the same link:
| --- | --- | --- | --- | --- |
| New user in Ottawa, no scope | ✅ Forward | ❌ Drop | Never reached | Whole Ottawa area |
| New user in Montréal, no scope | Never reached | ❌ Drop | ✅ Forward | Whole Montréal area |
-| Old app or old repeater advert, no scope | ✅ Forward | ❌ Drop | ✅ Forward | Stays in whichever city sent it |
| Ottawa channel or bot, `yow` | ✅ Forward | ✅ Forward | ❌ Drop | Ottawa zone only |
| Montréal channel or bot, `yul` | ❌ Drop | ✅ Forward | ✅ Forward | Montréal zone only |
| Québec-wide channel, `qc` | ❌ Drop | ✅ Forward | ✅ Forward | Québec side, including Gatineau |
@@ -521,12 +878,14 @@ locally.
Repeaters
Owners clear old regions and add their codes. Normal repeaters keep * allowed; bridge repeaters drop it. Nothing breaks inside any city.
-
Companions
Users set their default and Public to onqc, and test channels and bots to their city.
+
Companions
Once the repeaters around them are set up, users set their default and Public to onqc, and test channels and bots to their city.
Only if needed
If messages with no scope are still too noisy inside a city, repeaters can also run set flood.max.unscoped 3. Scoped messages still reach 16 hops.
## Things to know
+- **Scoped messages are about 10 characters shorter.** The app lowers the
+ message length limit on scoped channels (137 to 127 in our testing).
- **Repeater adverts stay in their city.** Montréal users will not see Ottawa
repeaters through flood adverts.
- **16 hops has to be enough.** `flood.max` applies to `onqc` too. If the