Kontext Encyclopedia

Messenger

/messages · version 3.13 · 2026-10-06

Capabilities

Messenger (/messages, title KTX Messenger) is people — Direct (plus KTX Bot) and Groups. Threads live on your account. It is not Talk, not Workspace Chat, not Forum, and not a Helpdesk ticket. Business Omni “Messenger” is Meta, not this inbox.

What is Messenger?

Route: /messages. The switcher says Messenger. The in-page title is KTX Messenger. There is no /messenger URL. Messenger is the inbox for people, groups, and a pinned assistant row (KTX Bot). Threads live on your account. Starter tier and up. Helpdesk and Messages are not on the OS dock — open them from the module switcher, the OS Messages menu, a profile, or a deep link.

How you get here

The two tabs

There is no third product tab. Channels live inside a group. Empty Direct: Select a conversation. Empty Groups: Select a group, then Select a channel.

Direct — talking to a person

Start a DM by typing @handle, from a profile, from the OS menu, or from ?thread=. List sections: Assistant (KTX Bot), then All Messages. Empty: No human DMs yet — type @handle above to start. You can delete a conversation or delete your own messages. Mentions, formatting, and emoji work. The green dot is not live presence. There is no typing indicator. Files in a DM: the composer in the main inbox hides the paperclip. Group channels can attach. DMs do not have threaded replies — Reply is a group-channel feature.

KTX Bot — the assistant inside Messenger

Pinned row: KTX Bot / Kontext Assistant. Same assistant path as Talk, in this inbox. It is not a second Talk tab and not a person. If OS Intelligence is off: Turn on Kontext Assistant first. Composer: Message Kontext AIOS…. Slash commands: /ktx. Push on / Push off is for bot replies, not human DMs. Voice, the visor, and Today live in Talk on My Kontext (/os). Use Talk when you want that shell. Use KTX Bot when you are already in Messenger.

Groups and channels

Four skins when you Create Group: Team (you created it), Business (auto when a Business solution is built — channels general, support, leads), Community (auto when you create a community), Class (auto when you create a University program — enroll adds the learner). Standalone University courses do not auto-create a group. Chat for a course uses the program’s group when the learner is enrolled. Owner menu: Edit group, Create channel, Invite people, Delete group. Members: Leave group. Invite by @handle with role Member / Moderator / Admin. Business groups draw a fake Slack rail (Home, DMs, Activity, Files). Those labels do not navigate. Do not send someone to “Messenger → Activity.”

Inside a group

Composer: Message... (use @ to mention) · Send. Attachments work here. Reply opens a Thread panel (Reply in thread...). Reactions (👍 ❤️ 😂 🎉 🤔 👀) show in the UI. Toggles are this browser only today — they are not a saved group reaction list. Group unread is this device (localStorage) until server unread exists. Human DMs and KTX Bot unread are real on your account. The inbox polls about every 30 seconds when the tab is visible — there is no live socket for human DMs.

What Messenger is not

Talk (/os) — Kontext, voice, Today. Same brain as KTX Bot; different shell. Workspace Chat — write an app on a project. Forum (/forum) — public threads. Helpdesk (/helpdesk) — a private ticket. Documentation (/documentation) — the Help book Talk looks up. Kontext Docs (/docs) — make a document. OS Mail — email folders. Business Omni “Messenger” is Meta (WhatsApp / Instagram / Facebook) — not this inbox. If someone said “message me,” they mean this inbox or a profile Message button — not Talk, not Forum.

Not yet

Messenger (/messages, title KTX Messenger) — Direct (people + pinned KTX Bot) and Groups (Team / Business / Community / Class). Thread data lives on your account. Open from the module switcher, OS Messages menu, profiles, or Open in Messenger from Communities/Business/University when linked. This is not Talk, not Forum, not Helpdesk, and not Business Omni (Meta) “Messenger.”

User journeys

MSG-01. Open the Messenger inbox

Path: /messages

You do:

  1. Sign in with a user that has a public handle.
  2. Navigate directly to /messages from the address bar or a bookmark.
  3. Wait for the inbox shell to finish loading (skeleton placeholders, not a bare error).
  4. Confirm the conversation list or empty state appears without a crash.

Result: Messenger loads as the primary inbox surface with strip, sidebar, and main pane ready for DMs and groups.

MSG-02. Reach Messenger from the module header

Path: Any module → header Messages link → /messages

You do:

  1. Open any Kontext module (Workspace, Communities, OS, etc.).
  2. Click Messages in the module header navigation.
  3. Confirm the URL changes to /messages.
  4. Verify your existing conversations and groups appear in the sidebar.

Result: Header navigation lands on the same inbox as a direct /messages visit.

MSG-03. Start a DM from a profile

Path: Profile page → Message button → /messages?thread=<principal>

You do:

  1. Open another member’s profile (handle card, directory, or search result).
  2. Click Message on their profile.
  3. Confirm Messenger opens with that user’s DM thread selected.
  4. Type a greeting and send.

Result: A one-to-one thread opens with the target user; the message appears optimistically then confirms on the user canister.

MSG-04. Open a chat from the OS menu bar

Path: Kontext OS → menu-bar Messenger dropdown

You do:

  1. Open Kontext OS (/os) or any surface with the OS menu bar visible.
  2. Click the Messenger icon in the menu bar to open the dropdown.
  3. Search for a member by @handle in the quick-search field.
  4. Select a recent thread or search result to open the chat.

Result: The chosen DM opens in the dropdown tray or full Messenger, without hunting through the full inbox first.

MSG-05. Use the Messenger tray popup

Path: OS menu bar → Messenger dropdown → tray controls

You do:

  1. Open a DM from the OS Messenger dropdown so the popup tray appears.
  2. Minimize the tray and confirm it collapses to a compact chip or icon.
  3. Maximize or expand it again to resume the conversation.
  4. Choose full-screen (or open in Messenger) to continue at /messages.

Result: Popup chat supports minimize, restore, and full inbox handoff; opening a thread marks it read in the tray.

MSG-06. Deep-link into a DM thread

Path: /messages?thread=<principal>

You do:

  1. Copy or construct a link with ?thread= and the other user’s principal (or use View Message from a notification).
  2. Paste the link in the browser and press Enter while signed in.
  3. Confirm the correct DM thread is selected in the sidebar and main pane.
  4. Scroll to the latest messages and verify read state updates.

Result: Deep links open the intended one-to-one thread; unread count clears after you view it.

MSG-07. Deep-link into a group channel

Path: /messages?group=<groupId>

You do:

  1. Obtain a group link with ?group=<groupId> (from an integration, invite, or copied URL).
  2. Open the link while signed in as a group member.
  3. Confirm the group appears in the strip and the default or linked channel loads.
  4. Verify channel unread badge clears after the channel opens.

Result: Group deep links land on the correct group and channel without manual navigation.

MSG-08. Browse DMs with unread badges

Path: /messages → conversation list

You do:

  1. Have the second test user send you a DM while you are on another page.
  2. Open /messages and locate the thread in the conversation list.
  3. Confirm the row shows the sender’s handle, last message preview, timestamp, and an unread badge.
  4. Open the thread and confirm the badge and header DM count drop to zero.

Result: Unread state reflects inbound DMs in the list and global header badge; opening the thread marks messages read.

MSG-09. Send and receive a text DM

Path: /messages → select thread → compose bar

You do:

  1. Open an existing DM or start one via sidebar @handle search.
  2. Type a short text message in the compose field at the bottom.
  3. Press Enter or click Send; watch the message appear immediately (optimistic UI).
  4. Refresh or have the other user confirm the message persisted on their side.

Result: Text sends successfully; data lives on the user canister thread-owner model, not a platform body buffer.

MSG-10. Mention someone in a DM compose

Path: /messages → DM thread → compose with @

You do:

  1. Open a DM thread (or a group channel where mentions apply).
  2. Type @ followed by part of a handle in the compose field.
  3. Pick a handle from the autocomplete dropdown.
  4. Send the message and confirm the mention renders correctly in the thread.

Result: @mention autocomplete works in compose; the sent message displays the referenced handle.

MSG-11. Share a link with preview

Path: /messages → thread → paste URL → send

You do:

  1. Open a DM thread with another user.
  2. Paste a public HTTPS URL into the compose field.
  3. Send the message.
  4. Confirm a link preview card (title, snippet, or thumbnail) renders for you and the recipient.

Result: Rich link previews appear inline for sent and received URL messages.

MSG-12. Delete a message or whole DM thread

Path: /messages → thread → message actions / thread menu

You do:

  1. Open a DM where you sent at least one message.
  2. Use the message action menu to delete one of your own messages; confirm it disappears.
  3. Open the thread overflow menu and choose delete conversation (or equivalent).
  4. Confirm the thread is removed from your conversation list.

Result: You can remove individual messages you own and delete entire DM threads from your inbox.

MSG-13. Start a new DM from sidebar search

Path: /messages → sidebar → new message / @handle search

You do:

  1. On /messages, focus the sidebar search or New message control.
  2. Type a valid @handle for a user you have not messaged before.
  3. Select them from results to create or open the thread.
  4. Send an introductory message.

Result: A new DM thread appears in the conversation list and opens in the main pane.

MSG-14. Open a DM from a notification

Path: Notification center → View Message → /messages?thread=<principal>

You do:

  1. While signed in on another page, receive a DM notification from the second test user.
  2. Open the notification panel and click View Message.
  3. Confirm Messenger opens to the correct thread via deep link.
  4. Reply from the opened thread.

Result: Notification handoff lands on the right DM; header unread badge stays in sync after you read and reply.

MSG-15. Create a Team group

Path: /messages → group strip → Create Team

You do:

  1. Open /messages and locate the group strip (Teams, Communities, etc.).
  2. Click Create Team (or equivalent create-group control).
  3. Enter a name, optional description, and icon; save.
  4. Confirm the new Team appears in the strip and sidebar with a default channel.

Result: A Team group is created with Discord-style layout and at least one channel ready for messaging.

MSG-16. Edit group details

Path: /messages → select group → group settings

You do:

  1. Open a group you own from the strip or sidebar.
  2. Open group settings (gear or edit control).
  3. Change the name, description, and icon; save.
  4. Return to the channel list and confirm updated branding appears in the strip and header.

Result: Group metadata updates everywhere the group is shown.

MSG-17. Delete or leave a group

Path: /messages → group settings → delete / leave

You do:

  1. As group owner, open group settings and choose Delete group; confirm the prompt.
  2. Verify the group disappears from your strip and sidebar.
  3. With a non-owner test account, join another group and choose Leave group.
  4. Confirm the group no longer appears for the member who left.

Result: Owners can remove a group entirely; members can leave without deleting it for others.

MSG-18. Discover and join a public group

Path: /messages → discover / search groups → Join

You do:

  1. Open /messages and use Discover or group search in the sidebar.
  2. Search for a public group by name or keyword.
  3. Preview the group card and click Join.
  4. Confirm the group appears in your strip with accessible public channels.

Result: Public group discovery and join flows add the group to your Messenger without an owner invite.

MSG-19. Create a channel with visibility

Path: /messages → group → Create channel

You do:

  1. Open a group you admin or own.
  2. Click Create channel and enter a channel name (e.g. #announcements).
  3. Set visibility to Public, MemberOnly, or AdminOnly as appropriate.
  4. Save and confirm the channel appears in the sidebar for authorized members only.

Result: New channels respect visibility rules—unauthorized members do not see MemberOnly or AdminOnly channels.

MSG-20. Manage channels and categories

Path: /messages → group → channel list → settings

You do:

  1. Open a Community or Class group that supports categories.
  2. Create a channel category, assign existing channels to it, and collapse the category.
  3. As owner/admin, rename, reorder, or delete a non-default channel.
  4. Confirm layout updates in the Discord-style sidebar.

Result: Channel CRUD and category organization work for Community/Class groups; Class type is not mislabeled as Business.

MSG-21. Invite members and change roles

Path: /messages → group → members panel

You do:

  1. Open a group you own and open the Members panel.
  2. Invite a user by @handle; confirm they appear after accepting or auto-join.
  3. Change a member’s role (e.g. member → moderator) as owner.
  4. Kick a member and confirm they lose access to channels.

Result: Membership invite, role changes, and removal behave according to owner permissions.

MSG-22. Send a message in a group channel

Path: /messages → group → #general (or default channel)

You do:

  1. Open a group and select #general or the default channel.
  2. Type a message in the channel compose bar and send.
  3. Confirm your avatar, @handle, and timestamp appear on the sent bubble.
  4. Have another member post; wait for polling (~30s) or refresh to see their message appear.

Result: Group channel messaging works with sender metadata; new messages from others arrive without a full page reload.

MSG-23. Reply in a channel thread

Path: /messages → group channel → message → Reply in thread

You do:

  1. Open a group channel with at least one existing message.
  2. Click Reply in thread (or thread icon) on a message to open the thread panel.
  3. Type a reply and send.
  4. Close and reopen the thread panel to confirm replies persist and display in order.

Result: Thread replies stay attached to the parent message in a side panel without cluttering the main channel feed.

MSG-24. Format, search, and moderate group messages

Path: /messages → group channel → toolbar / search / mod actions

You do:

  1. In a group channel, use the formatting toolbar to send bold, italic, code, and an emoji.
  2. Open channel search, enter a keyword, and confirm matching messages filter in view.
  3. As a moderator, delete another member’s message via the mod action menu.
  4. In a read-only channel (canSendMessages false), confirm a permission denied banner blocks compose.

Result: Rich compose tools, in-channel search, moderator delete, and send-permission gating all behave as expected.

MSG-25. Open a community group from Communities

Path: Communities module → community detail → Open in Messenger → /messages?group=<linkedGroupId>

You do:

  1. Join or create a published community that has a linkedGroupId.
  2. Open the community detail page as a member.
  3. Click Open in Messenger.
  4. Post a welcome message in the linked group’s default channel.

Result: Community membership handoff opens the correct Messenger group without manual group lookup.

MSG-26. Use Messenger from Business and University integrations

Path: Business solution / University program → linked group → /messages?group=<linkedGroupId>

You do:

  1. Build or open a business solution that auto-creates a messenger group on build; note the linked group in the product UI.
  2. Open /messages, find the business group (Slack-style layout), and send a status message in a channel.
  3. Enroll in a University program with linkedGroupId and click Open in Messenger from the program page.
  4. Confirm the university group opens and you can read/post per channel permissions.

Result: Business and University surfaces link to the correct Messenger groups created or configured at build/enrollment time.

MSG-27. Create a partner signee messenger group

Path: Partner dashboard → messenger group for signees → /messages?group=<groupId>

You do:

  1. Sign in as a partner with dashboard access.
  2. Open the partner flow to create a messenger group for signees (or equivalent control).
  3. Complete creation and follow the link into /messages?group=....
  4. Invite or confirm signees can see the group and post in allowed channels.

Result: Partner-created groups appear in Messenger for signees and partners with appropriate access.

MSG-28. Manage personal storage for Messenger

Path: Profile settings → Personal space → storage tab

You do:

  1. Open your profile settings and navigate to Personal space → Storage.
  2. Confirm the storage dashboard and quota load without errors.
  3. Upload a small file to the profile bucket and verify it appears in the file list.
  4. Upload another file to the messenger bucket for chat attachments.

Result: Personal storage buckets are visible and usable; quota and file lists reflect uploads immediately.

MSG-29. Attach a file from personal storage

Path: Profile storage → /messages → group/DM compose → paperclip

You do:

  1. Upload a test file to the messenger bucket in profile storage (see MSG-28).
  2. Open a DM or group channel at /messages.
  3. Click the paperclip (attachment) control in compose and select the stored file—or upload fresh from disk.
  4. Send the message and have the recipient open the attachment.

Result: Attachments upload from compose, render inline in the thread, and remain accessible to the recipient.

MSG-30. React to and pin a group message

Path: /messages → group channel → message actions

You do:

  1. Open a group channel with several messages visible.
  2. Add an emoji reaction to a message; confirm the reaction count appears.
  3. Click the same reaction again to remove it.
  4. Pin an important message and confirm it appears in the channel header pin strip; unpin to clear.

Result: Reactions toggle on group messages; pinned messages surface in the channel header for quick reference.

MSG-31. Navigate desktop Messenger layout

Path: /messages (desktop viewport)

You do:

  1. Open /messages on a wide desktop browser window.
  2. Confirm the three-column layout: group strip, conversation/channel sidebar, and main message pane.
  3. Switch between a Business group (Slack-style) and a Community/Team/Class group (Discord-style).
  4. Observe skeleton loaders during fetch and empty states when you have no DMs or channels.

Result: Desktop layout matches group type conventions with polished loading and empty states—not bare “Loading…” text.

MSG-32. Use Messenger on mobile

Path: /messages (mobile viewport or PWA)

You do:

  1. Open /messages on a phone or narrow browser window.
  2. Confirm the conversation list fills the screen first (single-column drill-down).
  3. Tap a DM or group channel to open the thread view full screen.
  4. Tap Back to return to the list; open ?thread= or ?group= deep links and repeat the drill-down.

Result: Mobile Messenger uses list ↔ thread navigation with a back control; deep links still resolve to the correct conversation.

MSG-33. Text your Kontext Assistant from Messenger (KTX Bot)

Path: /messages?os=assistant (mobile PWA or Kontext Messenger)

You do:

  1. Open /messages on a phone (or /messages?os=assistant deep link / push tap).
  2. Open KTX Bot — Kontext Assistant pinned at top of Messenger (or Bot tab).
  3. Send "What's on today?" or /ktx brief — receive a brief-style reply within ~60s.
  4. Send an ecosystem query (e.g. "How many leads this week?" or /ktx leads) — KESA-routed answer after module disambiguation if needed (BOT-08–09).
  5. Send "@Sales follow up with the hot lead" or /ktx ask Sales … — addressed employee path (BOT-16).
  6. Send an action request requiring approval — confirm Approve / Cancel; nothing executes until Approve (BOT-06).
  7. Type /ktx commands — autocomplete lists comprehensive slash commands (BOT-25).
  8. Lock the phone; confirm push on reply, approval needed, or job milestone (BOT-05–07, BOT-12).

Result: Owner can control and route the full ecosystem from Messenger (agents, workflows, employees, KESA) without opening /os; ask-first trust holds for writes.

How it works

Route /messages. Direct messages, groups, and KTX Bot — Kontext Assistant pinned in Messenger when Assistant is on. This is live, not a planned feature. It is not Collaborations rooms and not OS Talk (Talk is where you reach Kontext on My Kontext).

Benefits

Who it's for

Primary: owners who want chat plus the assistant in one inbox. Not: people looking for OS Talk (that is Kontext on My Kontext).