Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Ignore a saved conversation that doesn't have the expected shape

Fermée Adaptée aux débutants
#172 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
84/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
frontend, testing

Piste de recherche

Commencez par load() dans packages/widget/src/storage.ts, puis vérifiez comment init() dans packages/widget/src/widget.ts gère l’absence d’une conversation. Ajoutez des tests de stockage pour les structures et les messages invalides, ainsi qu’un test du widget pour {} ; l’issue indique le comportement attendu et les commandes. Le travail est terminé lorsque les données invalides sont supprimées, que les messages valides sont conservés, que le widget démarre avec son message de bienvenue et que le build, le typecheck, les tests et le changeset demandés sont achevés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug good first issue hacktoberfest widget

The widget restores the last conversation from localStorage (the chatcops_conversation key, or chatcops_conversation_<siteId>). ConversationStorage.load() returns whatever JSON.parse gives, cast to StoredConversation (packages/widget/src/storage.ts, line 27), and init() uses it as it is (packages/widget/src/widget.ts, lines 185 to 191). When the key holds valid JSON of another shape, for example left by an older version or by another script on the same site, things break. Checked in Chrome with the widget built from dev:

  • {} or []: init() throws a TypeError (messages is not iterable). The chat still opens, but without the welcome message, and with ChatCops.init() the error reaches the page's own code.
  • {"id":"x","messages":[{"foo":1}],"updatedAt":1}: no error, but the chat shows an empty message bubble.

What to do
Check the shape in load(). Return the conversation only when it has a string id and a messages array, and drop messages that don't have a role of user or assistant and string content. Anything else counts as no saved conversation: remove the key and start fresh.

Where to look

  • packages/widget/src/storage.ts (load, lines 23 to 31)
  • packages/widget/src/widget.ts (lines 184 to 193)
  • packages/widget/tests/storage.test.ts and widget.test.ts

Acceptance criteria

  • load() returns null and removes the key when the stored value isn't an object with a string id and a messages array
  • Messages without a user or assistant role or without string content are dropped
  • With {} or [] stored, the widget starts with its welcome message and no error
  • Tests in storage.test.ts for each case, and one in widget.test.ts that init() doesn't throw with {} stored
  • Changeset for @chatcops/widget (patch)
  • pnpm -r build, pnpm -r typecheck and pnpm test pass

Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #172. Setup notes (pnpm, build before test) are in CONTRIBUTING.md.

Langage dominant
TypeScript
Étoiles
13
Forks
7
Merge moyen
3 h 41 min
PR mergées (30 j)
155

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de codercops/chatcops

Toutes les issues de codercops/chatcops

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.