{
  "product": "Specification (reference)",
  "title": "Chat App",
  "summary": "Rooms, message history, presence and delivery state for a realtime chat client.",
  "category": "apps",
  "entries": [
    {
      "path": [
        "AI",
        "Messaging",
        "Channels and direct messages"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Messaging",
        "Message store with history"
      ],
      "value": "paginated",
      "status": "yes",
      "note": "load older on scroll"
    },
    {
      "path": [
        "AI",
        "Messaging",
        "Delivery states"
      ],
      "value": "sending/sent/failed",
      "status": "yes",
      "note": "failed offers retry"
    },
    {
      "path": [
        "AI",
        "Messaging",
        "Edit and delete own messages"
      ],
      "value": "",
      "status": "yes",
      "note": "edited marker shown"
    },
    {
      "path": [
        "AI",
        "Messaging",
        "Reactions"
      ],
      "value": "emoji",
      "status": "yes",
      "note": "toggle per user"
    },
    {
      "path": [
        "AI",
        "Realtime",
        "Live message delivery"
      ],
      "value": "ws/sse",
      "status": "yes",
      "note": "no manual refresh"
    },
    {
      "path": [
        "AI",
        "Realtime",
        "Presence"
      ],
      "value": "online/away",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Realtime",
        "Typing indicator"
      ],
      "value": "",
      "status": "yes",
      "note": "debounced, multi-user"
    },
    {
      "path": [
        "AI",
        "Realtime",
        "Unread tracking"
      ],
      "value": "per channel",
      "status": "yes",
      "note": "last-read marker"
    },
    {
      "path": [
        "AI",
        "Search",
        "Full-text message search"
      ],
      "value": "",
      "status": "yes",
      "note": "scoped per channel or global"
    },
    {
      "path": [
        "UI",
        "Layout",
        "Channel sidebar + message pane"
      ],
      "value": "",
      "status": "yes",
      "note": "unread badges in sidebar"
    },
    {
      "path": [
        "UI",
        "Messages",
        "Grouped by author and day"
      ],
      "value": "",
      "status": "yes",
      "note": "day dividers"
    },
    {
      "path": [
        "UI",
        "Messages",
        "New-messages divider"
      ],
      "value": "",
      "status": "yes",
      "note": "jump-to-latest button"
    },
    {
      "path": [
        "UI",
        "Composer",
        "Multiline input, Enter sends"
      ],
      "value": "Shift+Enter newline",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Composer",
        "Emoji picker"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Notifications",
        "Title/badge updates on unread"
      ],
      "value": "",
      "status": "yes",
      "note": "optional desktop notifications"
    }
  ]
}
