{% set catalog = [
{"name": "webhook", "icon": "🔗", "display": "Webhook", "desc": "POST every inbound iMessage to a URL. Works with Zapier, n8n, Make, Pipedream.", "builtin": true},
{"name": "web", "icon": "🌐", "display": "Web UI", "desc": "Run the web interface in-process alongside the bridge.", "builtin": true},
{"name": "ntfy", "icon": "🔔", "display": "ntfy notifications", "desc": "Push notifications via ntfy.sh or a self-hosted ntfy server.", "pkg": "chatwire-ntfy"},
{"name": "telegram", "icon": "💬", "display": "Telegram", "desc": "Relay iMessages to and from a Telegram bot.", "pkg": "chatwire-telegram"},
{"name": "stats", "icon": "📊", "display": "Message statistics", "desc": "Generate an analytics page with messaging patterns and trends. All data stays local.", "builtin": true, "upcoming": true},
{"name": "favorites", "icon": "⭐", "display": "Favorites", "desc": "Pin favorite contacts to the top of the sidebar.", "builtin": true, "upcoming": true},
{"name": "export", "icon": "📤", "display": "Export", "desc": "Export conversation history and photos in JSON, TXT, or CSV format.", "upcoming": true, "pkg": "chatwire-export"},
{"name": "rest_api", "icon": "🔌", "display": "REST API", "desc": "Send and receive iMessages via a REST API with API key auth.", "upcoming": true, "pkg": "chatwire-api"},
] %}
{% for p in catalog %}
{{ p.icon }}
{{ p.display }}
{% if p.name in installed %}
Installed
{% elif p.get('upcoming') %}
Coming soon
{% endif %}
{{ p.desc }}
{% if p.get('builtin') and not p.get('upcoming') %}