Peux-tu essayer avec cette version stp: Ğecko ĞDev/ĞTest (last build) - #110 by GeckoBuilds
Pour info :
-
Lors de la migration, les certifications sont apparues tout de suite et les Gtest (JuneTest) sont apparues après avoir fermé et ouvert l’application.
-
Il ne semble pas possible de trouver les comptes avec les clés publiques v1. Pas encore tester la recherche avec des clés Gtest.
Marion qui est en train de faire des transactions, souhaitait changer GT (june) pour DU et elle ne peut pas le faire directement.
Est-ce que c’est voulu ?
Merci pour toutes les heures passées pour nous permettre d’utiliser la Gtest (futur v2
)
Sarah
PS1 : Marion apprécie de pouvoir ajouter des caractères spéciaux dans les commentaires et en même temps après vérification ils n’apparaissent pas. Par exemple un de ces commentaires indique une erreure je pense : “raw bytes”
Voici sa clé g1NygWvJBkeqza6VTX1LSFSsxDNfeHfQ2QCeAQXx4jZUNwZL1
Squid essaye de deviner à quoi correspond le commentaire :
query Qcomment {
accountByPk(id: "g1NygWvJBkeqza6VTX1LSFSsxDNfeHfQ2QCeAQXx4jZUNwZL1") {
transfersIssued {
comment {
remark
remarkBytes
type
hash
}
}
}
}
{
"data": {
"accountByPk": {
"transfersIssued": [
{
"comment": {
"remark": "BisousC�lins",
"remarkBytes": "\\x4269736f757343e26c696e73",
"type": "UNICODE",
"hash": "0xba60d5361abcd9e19ad04f30bb236e7b32c41271163061dfcc0286e400f1fb06"
}
},
{
"comment": {
"remark": "Merci pour les housses",
"remarkBytes": "\\x4d6572636920706f7572206c657320686f7573736573",
"type": "ASCII",
"hash": "0x8785a6ccd75cad875398f3943588ad9fcfac3016b955f768baed531bbd6fecbc"
}
},
{
"comment": {
"remark": "Merci Merci Merci !",
"remarkBytes": "\\x4d65726369204d65726369204d657263692021",
"type": "ASCII",
"hash": "0x9835d768293630ef9191493803d6a10b6c706d2cedbf30363864122ad665e2ba"
}
},
{
"comment": {
"remark": "Merci pour le petit dej !",
"remarkBytes": "\\x4d6572636920706f7572206c652070657469742064656a2021",
"type": "ASCII",
"hash": "0x98964c92dbcdb88ba8e68d317df01ea27051e8aa34679af543a50593d838a8f6"
}
},
{
"comment": {
"remark": "Merci pour les �changes et tout ce que vous faites !",
"remarkBytes": "\\x4d6572636920706f7572206c657320e96368616e67657320657420746f75742063652071756520766f7573206661697465732021",
"type": "UNICODE",
"hash": "0x87dc9dddef45419de0784e76c7c337bd178e99aadebc2e4e13c374e60e36445e"
}
},
{
"comment": {
"remark": "Merci pour les clarifications TRM",
"remarkBytes": "\\x4d6572636920706f7572206c657320636c6172696669636174696f6e732054524d",
"type": "ASCII",
"hash": "0x54a2c0de6273f32ec60bb5b9b2c8eb7168920cc9c0eefa4663a5c7b058f7723f"
}
},
{
"comment": {
"remark": "<raw bytes>",
"remarkBytes": "\\x4d6572636920706f7572206c65201fe9636f6e6f6d696375732021",
"type": "RAW",
"hash": "0xe0b36aa05ef319172685e218b247fa08c742f2de3fbcc728aa9049def5133247"
}
},
{
"comment": {
"remark": "Merci pour cette magnifique caravane !",
"remarkBytes": "\\x4d6572636920706f7572206365747465206d61676e696669717565206361726176616e652021",
"type": "ASCII",
"hash": "0x438cda3d8899824df4413ada43cd4e6659a55dde398d64667538b69b8f8ef3c3"
}
}
]
}
}
}
Il essaye de repérer le ASCII (sans accent), le UNICODE (avec accents et emojis), et sinon considère du binaire (RAW). Apparemment il y a un problème d’encodage dans Ğecko parce que les commentaires envoyés depuis duniter-panel fonctionnent bien :
et s’affichent bien dans Ğecko :
Fix dans cette version 0.2.5.
@HugoTrentesaux Je dois traiter le remarkBytes uniquement car le string est parfois bugué, contient des �.
Ce n’est pas plus mal, c’est plus simple de ne traiter que les bytes dans tous les cas.
Pour le switch DU depuis la popup de paiement, je traite ça dans le prochaine version.
Pour les tests de caches migration depuis Cs, je dois réussir à debug le lancement de chaines locales custom dans Duniter.
Je vois ça, ça doit être un bug de mon implémentation dans squid :
// utils to parse transaction comments
import { CommentType } from "./model";
import { CID } from 'multiformats'
/// convert a raw remark to a string with a type hint
export function getCommentType(raw: Buffer): [CommentType, string] {
try {
const cid = CID.decode(raw)
return [CommentType.Cid, cid.toString()]
} catch { }
// not a CID
const str = raw.toString("utf8")
// only contains ascii chars
if (/^[\x20-\x7E]*$/.test(str)) {
return [CommentType.Ascii, str]
}
// does not contain non-printables
if (!/[\x00-\x1F\x7F\x80-\x9F]/.test(str)) {
return [CommentType.Unicode, str]
}
return [CommentType.Raw, "<raw bytes>"]
}
Il faut ajouter d’autres tests pour les non-printables.
Moi en Dart ça fonctionne ainsi:
static String _decodeHexString(String? hexString) {
if (hexString == null) return '';
try {
// Remove any leading backslash-x prefix if present
String cleanHex = hexString.replaceAll(r'\x', '');
// Convert hex string to bytes
List<int> bytes = [];
for (int i = 0; i < cleanHex.length; i += 2) {
if (i + 1 < cleanHex.length) {
String hexByte = cleanHex.substring(i, i + 2);
bytes.add(int.parse(hexByte, radix: 16));
}
}
// Try UTF-8 first
try {
String result = utf8.decode(bytes);
// Check if the result contains replacement characters
if (!result.contains('�')) {
return result;
}
} catch (_) {}
// If UTF-8 fails or contains replacement characters, try Latin-1
try {
String result = latin1.decode(bytes);
return result;
} catch (_) {}
// If both fail, fallback to UTF-8 with malformed allowed
final result = utf8.decode(bytes, allowMalformed: true);
return result;
} catch (e) {
// If decoding fails, return the original string
log.e('Error decoding hex string: $e');
return hexString;
}
}
Dans cette nouvelle version, pas mal de changements, notamment:
- Amélioration des refresh de cache balance et status d’identités (notamment pour les migrations d’identité).
- Gestion des mnemonic multilangue ! Si vous générez un nouveau coffre, vous aurez un mnemonic dans votre langue. Possibilité de forcer Anglais dans les paramètres mode expert.
Pour les tech, j’ai implémenté notre RFC BIDOUILLE dans Durt. Donc possibilité de basculer son mnemonic langue native vers anglais pour interropérer. - Ajout d’une vue activité du réseau dans la recherche, pour le moment juste les dernière transactions effectués sur l’ensemble du réseau, mis à jour en live avec notifs, filtres et autres activités à venir, si j’ai le temps.
- Amélioration du mode Flower Power.
- Amélioration header compact vue activité.
- Pouvoir swicher mode DU-GT-M/N directement depuis la popup de paiement (cc @Sarah.Magicienne)
- Réactivation des multi coffre: vous pouvez créer/importer plusieurs coffre en simultanés, car ça m’a été demandé à plusieurs reprise
Un petit bug, l’affichage en DU ne fait qu’une division par 10, donc il y a une faille dans le calcul de la valeur du DU !
Quand je restaure mon premier coffre, quand je reviens sur la page d’accueil la première fois, il me propose à nouveau de créer un portefeuille ou restaurer un coffre !
Ce que j’ai fait la première fois (croyant que j’avais fait une fausse manip), j’avais deux coffres identiques. Ce serait bien que lors de la restauration d’un coffre déjà dans là, il le refuse ou me propose une modif du code pin, ou au moins me prévienne que je l’ai en double !
J’ai oublié tous mes coffres et refais la restauration, et même problème au retour sur la page d’accueil. J’ai donc fermé et rouvert l’appli pour avoir la page d’accueil habituelle.
2 posts were split to a new topic: Duniter v2s et l’indexeur ne démarrent pas avec la valeur du DU de la Ğ1
Fix ici, merci Maaltir pour cette régression suite au multi coffre: Ğecko ĞDev/ĞTest (last build) - #119 by GeckoBuilds
En cours de déploiement sur les stores.
Cette version embarque aussi l’arriver des datapods IPFS pour les avatars, en lecteur seulement.
J’ai tenté un renouvellement de certification, qui doit expirer dans 16 jours d’après césium
J’ai bien l’ecran avac la possibilité de renouveller !
Mais ça veux pas
Problème Gecko ou Duniter ?
Edit : J’ai réussi à le faire avec Duniter Panel, donc le problème vient bien de Gecko !
@Maaltir Merci pour ce bug, c’est une régression suite au refacto de Gecko de polkawallet-sdk (polkadot.js) vers PolkaDart.
C’est corrigé ici: Ğecko ĞDev/ĞTest (last build) - #120 by GeckoBuilds
Cette version 0.2.11 contient aussi une grosse feature
- Filtrage des transactions, aussi bien sur la vue activité d’un compte, que sur la vue activité du réseau:
-
Refac de la gestion de la bottom bar, sur tous les écran sauf ceux exclus, donc elle reste fixe entre les changements d’écran
-
Nouvelle écran Monnaie, inspiré de celui de Cesium, merci @kimamila :
- Amélioration des événements de migration d’identité, dans les deux sens, vue activité du compte
- Quelques améliorations UI ici et là
Erreur lors d’une transaction, le message s’affiche en rouge en bas mais invisible car caché sous la barre
Combien de temps pour la mise à jour des Stores ?
Petit détail :
Dans mon coffre, je vois la possibilité de “Migrer un comte Césium”, il me semble qu’on avait dit qu’on mettrait plutôt “Migrer un ancien compte Id/Mdp”.
C’est toujours en approbation, comme je le disais sur l’autre forum, la durée d’examen de chaque version est incompressible. Il faut compter entre 12h et 48h entre chaque version, aussi bien sur le playstore que tu l’app store:
Je pense que si on republie sur les store alternatif, comme f-droid, cette durée pourrait fortement réduite voir nulle sur ces stores. Sachant que maintenant qu’on a un compte apple dev, et grâce au forcing de l’UE, ont peut désormais utiliser des stores alternatifs pour iOS également. A creuser.
Je ne sais pas, c’était ce qu’il y avait avant et j’ai changé il y a quelques semaine, car je trouvais ça un peu moche “compte Id/Mdp”.
Mais maintenant que tu le dis, je suis d’accords que c’est plus clair, et surtout plus juste.
Merci pour le bug, régression de mon refac bottom app bar, je fix.
Par contre pour l’erreur en elle même, je ne sais pas d’où ça peut venir, car invalid est le vrai status de tx renvoyé par Duniter, je ne crois pas avoir plus d’info. J’ai déjà eu ce soucis récemment de manière random, rarement, sans savoir comment reproduire de manière fiable.
Erreur masqué et wording bouton migration id/mdp corrigé ici: Ğecko ĞDev/ĞTest (last build) - #121 by GeckoBuilds
Concernant l’erreur de tx invalid, j’aurais besoin de votre aide pour comprendre à quoi ça pourrait être dû, dans quel cas Duniter peut me renvoyer ça, comment debuguer ça ?
D’après Claude:
Pourquoi ce status apparaît-il de manière aléatoire ?
Le status “invalid” peut survenir pour plusieurs raisons dans l’écosystème Substrate/Polkadot :
1. Problèmes de nonce
- Nonce trop élevé (“Future”) : La transaction a un nonce supérieur à celui attendu
- Nonce trop bas (“Stale”) : La transaction a un nonce déjà utilisé
- Si plusieurs transactions sont envoyées rapidement, il peut y avoir des conflits de nonce
2. Problèmes de synchronisation du nœud
- Si le nœud Duniter auquel tu es connecté n’est pas parfaitement synchronisé
- Fork temporaire de la blockchain qui invalide certaines transactions
- Changements d’état de la blockchain entre la préparation et la soumission de la transaction
3. Expiration de la transaction
- Les transactions dans Substrate ont une période de validité limitée (mortality period)
- Si la transaction n’est pas incluse dans un bloc avant expiration, elle devient invalide
4. Problèmes de pool de transactions
- Le pool de transactions du nœud peut rejeter la transaction pour diverses raisons :
- Pool plein
- Transaction en conflit avec une autre
- Validation échouée au niveau du pool
5. Changements d’état concurrent
- Entre le moment où la transaction est construite et celui où elle est exécutée, l’état de la blockchain peut changer
- Par exemple, le solde du compte peut avoir changé, rendant la transaction invalide
Le caractère “aléatoire” vient du fait que ces conditions peuvent varier selon l’état du réseau, la charge, la synchronisation des nœuds, etc., ce qui rend difficile la prédiction de quand cela va survenir.
Donc à priori, soit un mauvais Nonce, soit un rollback de fork de la blockchain pile à ce moment là.
J’ai voulu tenter la migration de coffre.
Après avoir entré la phrase du nouveau coffre, je vois apparaitre le message, ce coffre ne peut être migré.
Je suppose que c’est parce que le compte a été migré peu de temps avant depuis un compte id/mdp.
- Ce serait bien dire pourquoi il ne peut être migré
- Le bouton migrer ce compte devrait être inactif
- Si le coffre ne peut être migré, alors pas la peine de laisser saisir la phrase de restauration.
Tiens, il n’y a plus le numéro de version sur chaque page ![]()
Sur ton screenshot on voit justement que le coffre peut être migré.















