Skip to content

fix(frontend): Réglages plante sur master, export useSuccessFeedback perdu au merge e074589e #854

Open

Description

@alex-dembele

Relevé pendant #782 (PR #853).

Problème

Sur master, un utilisateur qui ouvre Réglages voit la page d'erreur « Une erreur est survenue » (code 500 côté interface) au lieu de l'écran. Aucun onglet ne s'affiche : profil, membres, jetons API, sécurité, rien.

La console du navigateur donne la cause :

SyntaxError: The requested module '/src/shared/ds/index.ts' does not provide an export named 'useSuccessFeedback'

Le fichier frontend/src/shared/ds/useSuccessFeedback.ts existe toujours. C'est la ligne qui le réexporte depuis frontend/src/shared/ds/index.ts qui a disparu dans le merge e074589e. ChangePasswordCard.tsx et OrganizationProfileForm.tsx l'importent depuis ../../shared/ds, donc tout écran qui les charge plante au chargement du module.

Effet sur la suite de tests : sur master, npx vitest run affiche 19 tests en échec. Cette ligne en explique 9 :

  • changePasswordCard.test.tsx (4) ;
  • organizationProfileForm.test.tsx (4) ;
  • deceptive-ui.test.ts › « no module is unreachable » (1), parce que useSuccessFeedback.ts n'est plus importé par personne.

Les 10 autres (members.test.tsx, 9, et CreateRiskModal.test.tsx, 1) viennent des imports perdus que corrige #845. Les deux correctifs appliqués ensemble font passer les 40 tests de ces cinq fichiers. Vérifié localement le 2026-10-01 ; rien n'a été commité.

Critères d'acceptation

  1. frontend/src/shared/ds/index.ts réexporte useSuccessFeedback.
  2. Sur une instance locale, /settings s'affiche sans page d'erreur, onglets Profil, Sécurité et Jetons API compris.
  3. changePasswordCard.test.tsx, organizationProfileForm.test.tsx et deceptive-ui.test.ts passent.
  4. npm run type-check (tsc -b --noEmit) ne signale plus les deux erreurs TS2305 sur useSuccessFeedback. Il en reste deux, DeleteButton et ScrollProgress, que corrige fix(frontend): restore imports lost in merge 269e54fc (#840) #845 ; une fois les deux PR mergées, il n'en reste aucune.

Note : il n'y a pas de garde à ajouter. CI avait vu le défaut : sur e074589e, « CI Status » et « Frontend Lint & Format » sont en échec. Le merge est passé malgré une CI rouge. Attention aussi : npx tsc --noEmit -p . ne vérifie rien dans ce dépôt (tsconfig.json a "files": [] et ne fait que référencer tsconfig.app.json). La vérification réelle est tsc -b.

Definition of Done

Un utilisateur ouvre Réglages sur master et voit l'écran. npx vitest run et npm run type-check ne comptent plus que les échecs que #845 corrige, et zéro une fois #845 mergé.

Activity

  1. added this to the trust-v1 milestone on Oct 1, 2026
  2. added
    area:foundationProduct and platform foundations
    priority:P0Blocking: nothing else ships until this closes
    type:bugSomething is broken
    priority:P0-criticalProduction broken or exposed — work now
    status:readyMeets the ready definition
    tier:0-trustTrust: security, isolation, evidence integrity
    and removed
    status:readyMeets the ready definition
    on Oct 1, 2026
  3. alex-dembele commented on Oct 1, 2026

    @alex-dembele
    MemberAuthor

    frontend-react — 2026-10-01

    Done — Aucun changement de code. Le défaut est déjà corrigé sur master : la ligne export { useSuccessFeedback } from './useSuccessFeedback'; est revenue dans frontend/src/shared/ds/index.ts:81 avec le commit 8c434dea (#751), entré sur master par le merge de #847 (368956ef). #845 est mergé aussi (f486e9fa). La branche 854-fixfrontend-… pointe sur 368956ef sans aucun diff, donc pas de PR à ouvrir.

    Verified — sur 368956ef :

    • npm run type-check (tsc -b --noEmit) : aucune erreur, ni TS2305 sur useSuccessFeedback, ni DeleteButton/ScrollProgress.
    • npx vitest run : Test Files 100 passed (100), Tests 933 passed (933).
    • npx vitest run sur changePasswordCard.test.tsx, organizationProfileForm.test.tsx et deceptive-ui.test.ts : Test Files 3 passed (3), Tests 23 passed (23).
    • Instance locale jetable (pg18 + redis sur ports libres, serveur buildé depuis la branche, Vite sur :55855), connexion admin@opendefender.io : les 11 onglets de Réglages s'affichent sans la page « Une erreur est survenue » (Mon profil, Général, Membres, Jetons API, Organisations, Champs personnalisés, Intégrations, Notifications, Sécurité, Facturation, Danger zone). OrganizationProfileForm est rendu dans Général, ChangePasswordCard (« Changer le mot de passe ») dans Sécurité. La console n'a remonté aucune erreur, et la SyntaxError sur useSuccessFeedback a disparu. Captures locales : .playwright-mcp/854-settings-security.png, .playwright-mcp/854-settings-profile.png.

    Criteria — 1 ✅ · 2 ✅ · 3 ✅ · 4 ✅ (zéro erreur, #845 étant mergé)

    Next — Le propriétaire ferme l'issue comme corrigée par #847. Aucune PR ne la fermera, la branche est vide.

    Blocked on — @owner, pour fermer l'issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:foundationProduct and platform foundationsarea:frontendReact, /srcpriority:P0Blocking: nothing else ships until this closespriority:P0-criticalProduction broken or exposed — work nowstatus:in-progressAn agent is working ittier:0-trustTrust: security, isolation, evidence integritytype:bugSomething is broken

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions