Core chat package for rooms, DMs, and real-time collaboration features.
From chat.doh.yaml:
chat_server, chat_files_server, chat_push_server, chat_calls_serverchat_client, chat_files_client, chat_push_client, chat_calls_clientcollab_docs, collab_richtextchat_server.js - socket handlers, REST routes, permission groups, room/member lifecyclechat_client.js - full chat UI (ChatApp, sidebar, messages, settings, overlays)chat_calls_server.js / chat_calls_client.js - room call signaling and call UI managerchat_push_server.js / chat_push_client.js - push subscription and notification integrationchat.css and chat_calls.css - main visual stylingchat_room_creator
create:chat_roomlog_viewer
view:server_logschat_admin
admin:chat_maintenance# Grant room creation permission
doh users add-group username@example.com chat_room_creator
# Grant admin access
doh users add-group username@example.com chat_admin
# Grant both (add multiple groups)
doh users add-group username@example.com chat_room_creator
doh users add-group username@example.com chat_admin
# Or via interactive mode
doh users
# Then navigate to user management and add groups interactively
Users with the chat_admin permission group (or site_admin, admin, superadmin) have access to the Admin section in Settings.
The Maintenance tab provides administrative tools for managing chat rooms:
POST /api/chat/admin/delete-all-roomsPOST /api/chat/admin/delete-empty-roomsBoth operations:
Delete All Rooms
// Client
const res = await Doh.ajaxPromise('/api/chat/admin/delete-all-rooms', {});
// Response: { success: true, deleted_count: 5 }
Delete Empty Rooms
// Client
const res = await Doh.ajaxPromise('/api/chat/admin/delete-empty-rooms', {});
// Response: { success: true, deleted_count: 3 }
Both endpoints return:
401 if not authenticated403 if user lacks admin:chat_maintenance permission500 on server error200 with { success: true, deleted_count: N } on successchat_server includes:
chat:set_guest_identitychat:browser_panel:*) for shared panel state/api/chat/*) for membership, contacts, invites, and settings/chat for authenticated full app viewIt also exports a programmatic API (createSystemRoom, addMemberToRoom, removeMemberFromRoom, deleteRoom, plus helpers) for other modules to integrate with chat data.
chat_client exposes a large composable UI surface. Notable patterns:
ChatApp - root app controller with nickname/setup, room state, and sidebar wiringChatMessageList / ChatMessage / ChatInput - core messaging pipelineChatSidebar and related room/folder item patternsChatSettings* panels (appearance, notifications, attachments, collab, links, connections)chat_page bootstraps ChatApp for /chat.
# pod.yaml
chat:
lobby_name: "General Chat"
max_message_length: 5000
attachment_storage_enabled: true
Primary idea tables in DB chat include:
chat.rooms - Room metadatachat.room_members - Room membershipchat.messages - Message historychat.trace - Debug/trace entrieschat.connections - User connectionschat.connection_requests - Pending connection requestschat.blocked_users - Blocked user listchat_serverSee code in chat_server.js for full table constants and usage.
http://localhost:3000/chat