Skip to content

Chat Guests, 'Only my chats' and Students with several chats (#93) - #101

Merged
Delmar-Ramcic merged 1 commit into
mainfrom
feat/chat-guests
Oct 22, 2026
Merged

Delmar-Ramcic merged 1 commit into
mainfrom
feat/chat-guests

Conversation

@Oceandek

Copy link
Copy Markdown
Collaborator

Closes #93 (spec #91).

What's new

  • Guests: the Product Owner, any Teacher or the Superuser adds any active User to a Project's chat. Members get 403 ("Only the Product Owner, Teachers and the Superuser add or remove Guests."). Deactivated Users (422) and people already in the chat (409) can't be added.
  • A Guest reads the whole history, writes like the team, counts the chat as theirs (badge, chat list), can Leave chat, and can be removed by staff.
  • People list at the top of every chat (collapsible "People (n)"): Product Owner, Members, Guests, each with their kind. Staff see Add Guest (a searchable select of active Users not yet in the chat) and Remove next to each Guest.
  • Chats screen: "Only my chats" switch, on by default. It shows the chats where you are the Product Owner or a Guest; turning it off lists every Active Project's chat.
  • Badge: a Teacher's badge now also counts chats where they are a Guest.
  • Students: with one chat, Chat opens it directly; with several (own Project + Guest chats) they get a list with Unread counts. A Student who is only a Guest (no Project) also gets the Chat item.
  • Archiving ends Guest access; the chat's people list then shows only the Product Owner (Members are freed by archiving).
  • Migration 0015 (chat_guests); CONTEXT.md: Guest, Chat people updated; changelog row.

API

GET /api/projects/{id}/chat/people, GET /api/projects/{id}/chat/guests/candidates, POST /api/projects/{id}/chat/guests, DELETE /api/projects/{id}/chat/guests/{user_id}, POST /api/projects/{id}/chat/leave, GET /api/chats?mine=true; GET /api/projects/{id}/chat adds can_manage_guests and is_guest.

Tests

Backend 335 passed (new test_chat_guests.py: add, read, write, leave, Member refused, who can't be added, Teacher's guest chats in the badge, Student Guest without a Project, archiving). Frontend 102 passed (new test_chat_guests.py: add and remove a Guest, a Student Guest chats and leaves, "Only my chats", a Student in two chats).

🤖 Generated with Claude Code

The Product Owner, a Teacher or the Superuser adds any active User to a
Project's chat as a Guest (Members can't); Guests read the whole history,
write like the team, can leave, and can be removed. Each chat shows its
people (Product Owner, Members, Guests). The Chats screen has "Only my chats"
(on by default); a Teacher's badge also counts chats where they are a Guest;
a Student in several chats gets a list. Archiving ends Guest access.
Migration 0015.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Delmar-Ramcic
Delmar-Ramcic merged commit 7a27767 into main Oct 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Chat Guests, 'Only my chats' and Students with several chats

2 participants