Produits S7 / 02 — ReqTone

ReqTone

Client API natif — REST · GraphQL · SSE

Un client API de bureau pour ceux qui préfèrent ne pas faire tourner un navigateur dans un navigateur. L'enveloppe est native, le réseau est en Rust sur un vrai thread, et tout ce que vous construisez tient dans un fichier SQLite local qui vous appartient.

Enveloppe
Tauri v2
Cœur
Rust + reqwest
Stockage
SQLite
Version
0.1.0
Visiter reqtone.com Tous les produits S7 Préversion · v0.1.0 non publiée

Le produit

Pensé pour la boucle que vous faites vraiment.

Envoyer, lire, ajuster, renvoyer — quelques centaines de fois par jour. Cette boucle, c'est tout le métier ; et la plupart des clients API la relèguent derrière un service de synchronisation, un écran de connexion et une invitation à rejoindre un espace de travail.

ReqTone est construit autour de cette boucle, et de rien d'autre. Projets, dossiers et requêtes s'imbriquent aussi profondément que votre service. Chaque onglet porte la couleur de son projet, pour qu'un mur d'endpoints ouverts reste lisible d'un coup d'œil. Une URL, un en-tête ou un corps modifié affiche un marqueur avant que vous ne puissiez rien perdre, et la réouverture de l'application restaure chaque onglet, sous-onglet et brouillon exactement comme vous les aviez laissés.

Il s'adresse aux développeurs et aux équipes qui travaillent toute la journée avec des API et veulent un outil rapide, discret et entièrement à eux.

la boucle

  1. 01 Envoyer — un seul chemin, streaming par défaut
  2. 02 Lire — statut, latence, taille, trames au fil de leur arrivée
  3. 03 Ajuster — Monaco, validation en direct, variables à portée
  4. 04 Recommencer — rejouer depuis un historique consultable

Ingénierie

Six décisions, avec leurs compromis assumés.

Chacune a coûté quelque chose — c'est le seul genre de décision qui mérite d'être consigné.

  1. 01

    Une enveloppe native, pas un navigateur embarqué

    ReqTone s'affiche dans la webview que le système d'exploitation fournit déjà et gère son réseau en Rust avec reqwest, sur un vrai thread, plutôt que d'embarquer un moteur de navigateur et un environnement JavaScript avec l'application. Le coût : l'interface hérite de la webview que le système lui donne — c'est pourquoi les deux thèmes sont testés sur les trois plateformes plutôt que supposés corrects.

  2. 02

    Vos données sont un fichier qui vous appartient

    Collections, arborescences de projets, environnements, profils d'authentification et historique sont des lignes dans une base SQLite ordinaire, rangée dans votre dossier applicatif. Copiez-la, comparez-la, sauvegardez-la, gardez-la sur un volume chiffré, pointez l'application vers une autre, ou ouvrez-la dans n'importe quel explorateur SQLite. L'export en JSON ou au format Postman est là aussi : partir relève de la manipulation de fichiers, pas du ticket d'assistance.

  3. 03

    Rien n'attend le réseau au démarrage

    Pas de compte, pas de vérification de licence, pas de mise à jour automatique — et une règle permanente : rien sur le chemin de démarrage ne doit dépendre d'un appel réseau. L'application s'ouvre câble débranché. Elle ne contacte que l'endpoint de votre requête, l'URL de jeton OAuth que vous avez configurée, et votre propre serveur de synchronisation si vous en activez un.

  4. 04

    Le streaming est le chemin par défaut, pas un mode

    Toutes les requêtes empruntent le même code de streaming : une réponse s'affiche à mesure qu'elle s'écrit et la fenêtre reste utilisable tant que le flux est ouvert. Il n'y a pas de type de requête « event-stream » à activer, ni de seconde implémentation qui pourrait diverger — ce qui signifie aussi qu'un POST avec un corps JSON est diffusé en flux, exactement ce dont la plupart des endpoints de LLM ont besoin.

  5. 05

    Les portées se résolvent dans un seul sens

    Une variable se résout d'abord au niveau de la requête, puis du projet, puis du global. Un jeton de préproduction et un jeton de bac à sable peuvent tous deux s'appeler {{token}} sans jamais vous surprendre, et le gestionnaire indique quelles valeurs sont inutilisées et si une valeur atterrit dans les paramètres, le corps ou les en-têtes.

  6. 06

    Importer et exporter relève du fichier

    Les collections Postman v2.1, OpenAPI et Swagger 3.0 en JSON ou YAML, les commandes cURL brutes et les archives .reqtone s'importent toutes — avec leurs arborescences de dossiers, en-têtes, paramètres de requête, profils d'authentification et corps. L'export fonctionne de la même manière. La limite connue, ce sont les scripts : les scripts de pré-requête et de test écrits en JavaScript ne sont pas transférés.

Fonctionnalités

Tout dans la fenêtre.

Chaque sous-système ci-dessous existe pour retirer une étape à cette boucle, pas pour remplir un tableau comparatif.

Espace de travail

  • Projets → dossiers → requêtes, imbriqués aussi profondément que vous le souhaitez
  • Couleurs par projet — l'onglet actif porte la couleur de bordure de son projet parent
  • Marqueurs de modification — une URL, un en-tête ou un corps modifié lève un indicateur
  • Restauration de session — chaque onglet, sous-onglet et brouillon revient

Streaming

  • Un seul chemin d'envoi — aucun mode streaming à activer
  • Fragments en direct et chronomètre — utilisable tant que le flux est ouvert
  • Trames inspectables — événements, données et erreurs classés à leur arrivée
  • Copier n'importe quel fragment directement depuis la liste des trames

Éditeurs

  • GraphQL en deux volets — la requête au-dessus, les variables en dessous, deux instances Monaco distinctes
  • Noms d'opération résolus : une faute dans les variables ne passe jamais pour une erreur de requête
  • Validation JSON en direct — marqueurs en ligne et pastille valide/invalide
  • Formulaires et multipart — grilles clé-valeur, pièces jointes, délimiteurs gérés

Authentification

  • Profils Bearer, clé d'API, Basic et OAuth2
  • Définie une fois au niveau du projet, héritée par tout ce qui se trouve en dessous
  • Surcharge par endpoint sans perturber les autres
  • Les variables s'interpolent aussi dans les en-têtes d'authentification

Variables

  • Trois portées — la requête prime sur le projet, le projet sur le global
  • Valeurs inutilisées signalées dans le gestionnaire
  • Usage affiché par ligne — paramètres, corps ou en-têtes
  • Espace N transforme une sélection en variable à portée, Espace V en insère une

Stockage

  • Un seul db.sqlite — collections, environnements, authentification, historique
  • Changement d'espace de travail en un clic — bases distinctes, risques cloisonnés
  • Aucun appel réseau au démarrage — pas de vérification de licence, pas de balise de mise à jour
  • Portable — copiez le fichier, ou exportez en JSON propre ou au format Postman

Inspection

  • Statut, latence et taille sur une ligne de pastilles au-dessus du corps
  • Filtre approximatif des en-têtes — trouvez set-cookie dans une réponse de 40 en-têtes
  • Cookies avec domaine, chemin et attributs présentés clairement
  • Rendu binaire et aperçu PDF dans le volet de réponse

Historique

  • Chaque exécution enregistrée dans un tiroir consultable, par une transaction en arrière-plan
  • Rejeu — restaurez un ancien corps et ses en-têtes en un clic
  • Filtrage par méthode ou statut pour isoler les échecs qui comptent
  • Recherche groupée dans tout le tiroir

Mise en route

  • Importe Postman v2.1, OpenAPI / Swagger 3.0, cURL brut, .reqtone
  • Un agent peut écrire la collection — un prompt prêt à l'emploi, sans configuration
  • Votre arborescence, pas un vidage à plat — les contrôleurs deviennent des dossiers
  • Des corps d’exemple issus de vos propres DTO plutôt que des chaînes vides

Où en est le projet

Transparent sur son état d’avancement.

ReqTone est en préversion 0.1.0 et n'a pas encore été publié. L'application se compile, mais la signature de code reste le seul obstacle entre elle et un lien de téléchargement — et S7 ne distribue pas de binaires non signés à ceux qui lui font confiance.

État tel que publié sur reqtone.com

Windows
Compile, non publié
macOS
Chaîne de build non vérifiée
Linux
Pas encore de pipeline
Version
v0.1.0 — préversion
Construit avec
Rust · Tauri v2 · SQLite