Ğ1Flux

je suis tout ému de vous présenter une nouvelle application de l’écosystème Ğ1 :blush: :

Ğ1Flux, qui permet de visualiser les flux de transactions sur une carte.

C’est encore du work in progress, et cela méritera peut être à être intégré à la carte monnaie libre (vous me direz ce que vous en pensez).

Je suis preneur de vos avis éclairant.

9 Likes

Est-ce qu’il y aura les transactions sortantes avec une couleur, genre rouge, entrantes en vert, équilibrées en jaune, comme la carte de @tuxmain ?

Trop trop bien

non pas prévu pour le moment. l’idée est que la lisibilité soit propre

j’ai pas le souvenir de la carte de Tux, ou puis je la voir ?

avec densité de transactions, où on voit les flux entrants et sortants par couleur, mais pas que, avec un icône calque.

J’aime beaucoup la possibilité de voir les microbalances commerciales, car permet de voir direct s’il y a

Son idée est de donner la densité par la saturation de couleur, et la balance par le type de couleur dans la gradation

2 Likes

Bravo ! :+1:

1 Like

Quelques features plus avançées aujourd’hui :blush:


:world_map: **Ğ1Flux v1.4.0 — Explorateur cartographique des flux Ğ1v2**

Ğ1Flux visualise en temps réel les transactions de la monnaie libre Ğ1v2 sur une carte mondiale interactive. L’app connecte la blockchain Ğ1v2 (via Subsquid) et les profils d’identité (via Cesium+) pour géolocaliser les échanges.

:globe_with_meridians: https://g1flux.syoul.fr/

:link: syoul/g1flux - g1flux - Gitea — Licence AGPLv3

**Ce que ça fait**

Deux vues complémentaires :

- :thermometer: **Heatmap** — densité d’activité Ğ1 par zone géographique

- ↔️ **Flux** — arcs dirigés entre villes, dont l’épaisseur reflète le volume échangé

La couleur des nœuds indique la balance nette : :green_circle: receveur · :yellow_circle: équilibré · :red_circle: émetteur *(dégradé or→couleur selon l’intensité)*

Les données se rafraîchissent toutes les **30 secondes** automatiquement.

**Fonctionnalités**

- :date: **Période** — préréglages 24h / 7j / 30j ou durée personnalisée jusqu’à 365 jours

- :play_button: **Animation** — frame par frame (1 frame = 1 jour), vitesses ×1 ×2 ×4

- :bar_chart: **Statistiques** — volume Ğ1 + équivalent DU, top émetteurs/récepteurs, balance nette, delta ↑↓

- ⬡ **Clusters** — regroupement automatique des villes proches avec détail au clic

- :information_source: **Aide intégrée** — bouton flottant décrivant toutes les fonctionnalités

**Stack**

React 19 · TypeScript · Tailwind v4 · Leaflet · Subsquid (`squidv2s.syoul.fr`) · Cesium+ · Docker + Woodpecker CI

**Changelog**

- **v1.4.0** — bouton :information_source: flottant · couleur émetteurs rouge · AnimationPlayer allégé

- **v1.3.x** — modale d’aide InfoPanel · fixes mobile

- **v1.2.0** — toggle Clusters/Villes · build Docker 4× plus rapide · SBOM

- **v1.1.0** — vue Flux avec arcs géolocalisés

- **v1.0.0** — animation heatmap · équivalent DU · période personnalisée

- **v0.2.0** — CI/CD multi-branches

- **v0.1.0** — migration Ğ1v2, Subsquid + Cesium+, 17 826 identités

- **v0.0.1** — initialisation

*Logiciel libre — contributions bienvenues.*

4 Likes

Je dis amen déjà en l’état !

1 Like

Page ajoutée sur https://duniter.fr/logiciels/g1flux/ le temps que la CI s’exécute.

3 Likes

:sparkles: **Ğ1Flux v2.0.0 — “Superposition”**

> **Release du 1er avril 2026** · branche `main` · tag `v2.0.0`

> Nécessite Node 20+.

-–

Bonjour à toutes et tous,

Nous sommes heureux d’annoncer la sortie de **GéoFlux v2.0.0**, la plus grande mise à jour depuis la v1.0.0, et probablement depuis l’invention de la monnaie libre. Cette version introduit la navigation historique depuis la genèse de la Ğ1, la géolocalisation quantique relative, la prise en charge des comptes non localisés par activation quantique passive, et l’intégration des transactions par chant cantique (RFC 4871-bis).

-–

:new: **Nouvelles fonctionnalités**

-–

:atom_symbol: **Géolocalisation quantique relative (GQR)**

Suite à plusieurs signalements d’utilisateurs affirmant que les coordonnées GPS fournies par Cesium+ étaient *“imposées par les satellites gouvernementaux”*, GéoFlux propose désormais un mode de géolocalisation alternatif basé sur la position quantique de chaque nœud dans le graphe de transactions.

Le principe : si Alice envoie régulièrement des Ğ1 à Bob, et que Bob est à Bordeaux, alors Alice est probablement à Bordeaux aussi — ou dans un état de superposition jusqu’à ce qu’on clique dessus. Précision déclarée : ±40 km. Précision observée : ±40 km dans 34% des cas, *“quelque part en France”* dans les 66% restants, ce qui reste supérieur à rien.

Activable dans **Paramètres → Confidentialité → *“Je préfère ne pas confier mes coordonnées à l’État quantique mondial”***.

Désactivé par défaut, parce que nous, personnellement, faisons confiance aux satellites.

-–

:ghost: **Activation quantique passive (AQP) des comptes non localisés**

Les comptes sans profil Cesium+ représentaient **41% du graphe** et apparaissaient comme des nœuds gris sans position. C’est techniquement correct mais visuellement déprimant.

Leur position est désormais inférée par triangulation stochastique à partir de leurs cinq plus proches voisins transactionnels. L’algorithme converge en deux itérations. Quand il ne converge pas, le compte est placé à **Montpellier**, car c’est là qu’il y a le plus de membres Ğ1, et aussi parce qu’il faut bien choisir quelque chose.

Les nœuds AQP s’affichent avec un **contour pointillé** indiquant qu’ils sont *“quantiquement probables”* et non *“classiquement certains”*. La distinction philosophique est réelle. La distinction visuelle est subtile.

-–

:musical_note: **Transactions par chant cantique (PTCC — RFC 4871-bis)**

Le RFC 4871-bis, adopté lors du dernier HackMeet de Cluny, définit un mécanisme d’émission de transaction par modulation vocale : un chant grégorien de **trois strophes minimum**, entonné à portée Bluetooth d’un autre membre, déclenche un envoi de **1 Ğ1** signé par l’empreinte spectrale du chanteur.

GéoFlux v2.0.0 indexe et affiche ces transactions : arcs de couleur **ambre**, icône ♩. Le StatsPanel expose le *“Flux vocal agrégé (Ğ1/strophe)”*.

> **État du réseau à ce jour :** 14 transactions cantiques détectées depuis la genèse. 12 proviennent d’un seul nœud, situé à l’abbaye de Sénanque. Ce nœud n’a pas de profil Cesium+ et a été placé à **Cavaillon** par AQP, ce qui est raisonnablement juste.

:warning: Une transaction émise en mode mineur était interprétée comme un remboursement (bug #127). Résolu. Le mode mineur est désormais traité comme le mode majeur sur le plan comptable, sans préjuger de son contenu émotionnel.

-–

:clock3: **Navigation historique depuis la genèse (Phase 1–3)**

- Sélecteur de **plage libre** (`from` / `to`) en remplacement du menu “derniers N jours”

- **Granularité automatique** selon la durée (jour → semaine → mois → trimestre)

- **Timeline interactive** couvrant mars 2017 → aujourd’hui, avec volumes trimestriels en arrière-plan

- Affichage en **cercles proportionnels** pour les fenêtres > 30 jours

- **Cache IndexedDB** — périodes passées mises en cache 24 h. Pour les transactions cantiques, la tonalité dominante de chaque strophe est également stockée. Cette information n’est utilisée nulle part mais semblait dommage de jeter.

La timeline révèle clairement qu’il ne s’est presque rien passé en 2020. Nous ne faisons aucun commentaire.

-–

:wrench: **Corrections de bugs**

- **#88****** — Timeout systématique sur les périodes > 180 jours. Résolu par agrégation côté client.

- **#91****** — Crash mémoire Firefox 124 sur > 8 000 transactions. Résolu. Firefox 124 n’est plus supporté non plus, mais c’est une coïncidence.

- **#103****** — Le sélecteur de période ne revenait pas à sa valeur après annulation. Ce bug existait depuis la v0.9.0 ; personne ne l’avait signalé, ce qui nous en dit long sur l’utilisation du bouton Annuler.

- **#107****** — Arcs invisibles au zoom 3 sur Safari mobile. Résolu. Safari n’a pas été remercié pour sa coopération.

- **#112****** — Double `flyTo` en cas de clic rapide sur une ville. Résolu par un debounce de 200 ms. L’app ignore désormais délibérément vos clics pendant 200 ms. C’est de l’UX.

- **#124****** — Les comptes placés à Montpellier *avant* l’AQP y restaient après convergence. Résolu. Montpellier reste néanmoins le repli.

- **#127****** — Transaction cantique en mode mineur interprétée comme un remboursement. Résolu sur le plan comptable, pas sur le plan musical.

-–

:warning: **Breaking changes**

details="Voir les breaking changes"

**`useGeoFlux()`** ne retourne plus `periodDays: number` mais `period: { from: Date; to: Date; granularity: Granularity }`.

**`DataService.fetchData(periodDays)`****`fetchData(from: Date, to: Date)`**. L’ancienne signature lève une erreur TypeScript. TypeScript a, comme toujours, raison.

**`GeoNode`** inclut un nouveau champ `localizationMode: ‘classic’ | ‘quantum’ | ‘canticle’`. La valeur `‘canticle’` s’applique aux nœuds dont la seule source de localisation connue est une transaction cantique reçue. Il y en a deux.

**`localStorage[‘geoflux-cache’]`** est supprimé au démarrage. Les données mises en cache avant la v2.0.0 ne sont pas migrées, pour des raisons techniques tout à fait valables que nous n’exposerons pas ici.

/details

-–

:no_entry: **Ce qui n’est pas dans cette version**

- **Transactions par tambour chamanique** (RFC 4871-ter) — encore en draft, en relecture à Tübingen depuis dix-huit mois

- **Regroupement par pays au zoom ≤ 4** — `countryCode` vaut `null` pour 34% des nœuds, ce qui aurait fait de `“null”` le cinquième pays par volume de transactions Ğ1

- **Export CSV** — décalé en v2.1, comme en v1.9, v1.7, et v1.5

- **Mode sombre**

- **Un logo**

-–

:bar_chart: **Statistiques**

```

Commits depuis v1.4.1 : 47

Lignes ajoutées / supprimées : 1847 / 412

Transactions cantiques (genèse) : 14

Nœuds à Montpellier avant AQP : 38

Nœuds à Montpellier après AQP : 12

Nœuds réellement à Montpellier : ? (non déterminable avec certitude)

Durée estimée : 3 semaines

Durée réelle : 11 semaines

```

6 de ces 11 semaines ont été consacrées à la GQR — fonctionnalité qui était initialement **une blague dans un ticket GitHub** et qui s’est retrouvée en production par un enchaînement d’événements que personne ne sait exactement reconstituer.

-–

*L’équipe Ğ1Flux***

3 Likes