Repository navigation
feat: enrich devserver-status badge tooltip (state · URL · age, value=port, error honesty) - #4
Merged
Merged
Conversation
- CA-1: single-line tooltip with state, URL, relative age (sep ` · `) - CA-2: error tooltip flags URL as potentially unreachable (fr/en) - CA-3: badge value exposes the URL port when available - CA-4: TrackedStatus.updatedAt + RPC-side relative age refresh - CA-5: TrackedStatus.command surfaced in error tooltip - CA-6: regenerated dist/index.js - CA-7: scoped to plugin repo, capabilities unchanged - CA-8: typecheck + 12/12 tests pass
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type de PR (obligatoire)
Issue liée
#1 — le tooltip du badge devserver-status affichait uniquement l'état et l'URL, sans âge ni avertissement explicite quand l'URL pouvait ne pas être joignable.
Objectif
Améliorer la lisibilité du badge
session.row.badgesdu plugin en trois axes :·.valueduPluginUiBadgeDynamicState, sans changerappearance: 'icon'(badge reste compact).Le plugin reste strictement passif : aucune capability réseau ajoutée, aucune modification d'OpenFox core.
Scope
src/index.ts: extension deTrackedStatus(updatedAt,command), helpersextractPortFromUrl/stateLabel/relativeAge/buildTooltip, refactor detoBadgeState, mise à jour des trois handlers de hook pour poserupdatedAtet préservercommandà travers les transitions d'état.test/index.test.ts: 6 nouveaux tests couvrant tooltip mono-ligne, rafraîchissement de l'âge relatif côté RPC,value(port présent / absent), localisation fr de l'âge en cas d'erreur et mention « URL peut ne pas être joignable ».dist/index.js+dist/index.js.map: régénérés parnpm run build(le mode d'installation GitHub d'OpenFox chargedist/, passrc/)..gitignore:package-lock.jsonajouté (l'upstream ne le suit pas etnpm installle crée localement).Hors scope : aucune modification d'OpenFox core, du panneau Dev Server natif, ni des capabilities déclarées (
["ui", "hooks", "rpc"]).Type de changement
toBadgeState) et de la sérialisation interne (TrackedStatus)Vérification effectuée
npm run typecheck: exit 0npm test: 12/12 pass (6 tests existants + 6 nouveaux), exit 0toneettooltip.enmatchant l'URL et le message d'erreur)session.row.badgesCritères d'acceptation
·state: 'error'valueduPluginUiBadgeDynamicStaterenseigne le port extrait de l'URL (string"8000","5173", …) ouundefined, badge resteappearance: 'icon'TrackedStatus.updatedAtmémorisé, âge relatif calculé côté RPC à chaque appel (frais malgrérefreshMs: 2000)TrackedStatus.commandmémorisé depuisdevserver.started, préservé à travers les transitions, exposé dans le tooltip d'erreurdist/index.jsrégénéré et inclus dans le diffopenfox-devserver-status, capabilities inchangées, pas de push supplémentairenpm run typechecketnpm testverts, tests existants préservés, nouveaux tests ajoutésHors scope
:8000alors qu'un autre serveur écoute sur:5173). Le plugin est strictement passif, OpenFox n'expose pas de capabilitynetwork/httpaux plugins, et un seulDevServerInstanceest géré par workdir dansDevServerManager(cf.src/server/dev-server/manager.tsd'OpenFox core). Corriger ce cas nécessite soit une capability plugin réseau (n'existe pas), soit le support multi-server par workdir (n'existe pas), soit un.openfox/dev.jsoncohérent avec le serveur effectivement piloté par OpenFox — ce qui est un choix projet, pas plugin.Risques et limitations connues
devserver.*(dérivée de.openfox/dev.jsondu workdir, avec substitution de${PORT}). Si cette URL ne reflète pas le serveur réellement à l'écoute (ex. FastAPI configuré sur:8000mais en échec, Vite externe sur:5173), le badge peut afficher une URL qui ne pointe vers aucun serveur : c'est pour cela que CA-2 ajoute désormais une mention explicite en cas d'erreur.statusest bien appelé toutes les 2 s (refreshMs: 2000) ; si l'UI déduplique plus longtemps, l'âge affiché sera l'âge réel au moment du dernier appel.valuen'est renseigné que si l'URL contient un port explicite ;http://localhost/ne produit pas devalue(testé).package-lock.jsonest désormais ignoré par.gitignoremais reste généré localement parnpm install; aucun engagement CI n'en dépend.