Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Stale activeGroupOid after group removal interrupts chat in legacy and React V2

Aperta
#1,816 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@paullizer ci sta già lavorando.

Dal 21/10/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

bug P1

Issue

A user removed from their active SimpleChat group retained that group's ID in settings.activeGroupOid. Sending messages repeatedly failed before Semantic Kernel initialization returned, leaving chat unusable. The reported user belonged to no other groups and could not readily choose another active group. Manually setting the persisted active-group value to JSON null restored chat.

The fix must cover both the legacy and React V2 chat experiences and must not require the user to repair their settings or belong to a group to use ordinary chat.

Steps to Reproduce

  1. Add a user to a SimpleChat group and select it as their active group.
  2. Configure an agent selection that enters per-user Semantic Kernel loading.
  3. Remove the user from that group, leaving the stored activeGroupOid unchanged. Include the case where the user has no other group memberships.
  4. Send an ordinary chat message using the legacy UI or React V2.
  5. Repeat after refreshing the page and within an already-open chat session.

Expected Behavior

  • A missing group or confirmed loss of membership invalidates the saved active-group preference without breaking otherwise-authorized chat.
  • Clear the confirmed stale preference to JSON null; do not automatically select another group or silently redirect a group-scoped operation into a different group.
  • Personal/global agent or model-only chat remains usable with no active group and with zero group memberships, subject to existing feature and authorization rules.
  • Both legacy and React V2 represent the recovered no-group state consistently.
  • Former group agents, actions, documents, and group-scoped conversations remain inaccessible. Explicit unauthorized group requests must retain their authorization failure behavior.
  • Transient storage/authorization-service failures must not be mistaken for proof that membership was revoked or cause a valid selection to be erased.
  • Recovery must preserve unrelated settings and a concurrent newly selected active group.

Actual Behavior

The supplied screenshot shows “Stream interrupted before any content was received” and “Stream interrupted: Something went wrong while streaming the response. Please try again.” The user reported this on every message until an administrator manually cleared the stale setting.

Impact

Group membership changes can prevent a user from continuing unrelated work in SimpleChat. Users with no remaining groups have no practical replacement group to select. An administrator currently needs to repair persisted user settings.

Notes

  • Priority: P1, requested by paullizer.
  • Assignee: paullizer.
  • Estimated size: M (shared backend recovery, settings persistence, both UI bootstrap paths, and regression coverage).
  • Inspected application version: 0.261.370 on the React V2 development line.
  • Source inspection confirms that application/single_app/semantic_kernel_loader.py::load_user_semantic_kernel calls require_active_group during optional group-agent discovery but only catches ValueError (no active group). functions_group.py::assert_group_role instead raises PermissionError for revoked membership and LookupError for a deleted group, allowing these errors to abort otherwise-independent agent loading.
  • route_backend_groups.py::remove_member removes membership but does not clear the removed user's active-group preference.
  • route_backend_v2.py::_resolve_active_scope filters unauthorized group IDs from the returned UI scope but does not repair persisted settings. route_frontend_chats.py::chats reads the raw active group for legacy page state.
  • Proposed scope: lazy, shared recovery when stale state is encountered, covering existing stale records as well as future membership changes; no bulk migration or automatic replacement group.
  • Add regression coverage for removal/deletion, no active group, no remaining groups, valid memberships/roles, personal/global selections, unavailable group selections, authorization boundaries, transient failures, concurrent setting changes, streaming and non-streaming chat, and both UI bootstrap paths.
  • Implementation has not started; root-cause evidence is source inspection plus the reported manual workaround, not a reproduced production trace.
  • Duplicate searches for activeGroupOid, active-group issues, and group-removal chat failures did not identify an existing issue for this failure.
Lingua principale
Python
Stelle
157
Fork
117
Merge medio
4h 3m
PR unite (30g)
217

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/simplechat

Tutte le issue di microsoft/simplechat

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.