Messaging · Sprig
Giphy
Search GIPHY and add an animated GIF to your message draft.
- Version
- 0.1.12
- Runs as
- Composer pane
- Grove API
- 1
- Updated
- 2026-09-17
Requested access
3 permissions
Network access
Declared hosts
Grove blocks every network destination except these declared origins:
https://api.giphy.comhttps://giphy-analytics.giphy.comhttps://media.giphy.comhttps://media0.giphy.comhttps://media1.giphy.comhttps://media2.giphy.comhttps://media3.giphy.comhttps://media4.giphy.com
From the extension
README
Giphy
Giphy is a Grove composer utility for Mango. Open it from the message field’s
+ menu, search or browse trending GIFs, and choose one to add its URL to the
current draft. It uses GIPHY’s REST API directly; no third-party SDK is bundled.
The /gif command in version 0.1.10 requires Mango 3.1 or newer. Older Mango
versions can still install the extension and open its picker from the + menu.
Giphy also declares an on-demand /gif command. Mango can discover it without
keeping the composer utility running in the background:
/gifopens trending GIFs./gif catsor/gif search catsopens the picker withcatsfilled in./gif first catsadds the first matching GIF URL directly to the draft.
Nothing is sent automatically. Both selecting a tile and using first return
the URL to Mango’s ordinary composer for review.
Version 0.1.12 prevents iPhone search-field zoom and asks compatible Mango 3.1 builds to hand an already-open composer keyboard to search. Closing returns to the draft. Opening the picker with the keyboard hidden leaves it hidden until you tap search. Older hosts still support browsing and manual search focus.
The Sprig includes a shared, revocable beta API key. If its hourly quota is busy, open Grove Manager → Giphy → Settings and add a personal GIPHY API key. Personal keys are saved in Mango’s per-Sprig Keychain namespace and never written to the package or ordinary web storage. The bundled key is lightly obfuscated to avoid casual extraction, but—as with every browser-delivered API key—it is not a secret and GIPHY’s revocable quota remains the boundary.
The picker stores a stable pseudonymous customer id in Giphy’s isolated Grove web storage. Search requests and GIPHY’s documented visible/click analytics are sent directly to GIPHY so result ranking can improve. The picker only adds a URL to Mango’s draft, so it does not claim that the GIF was sent. No IRC identity, network id, channel, nickname, message history, or draft text is sent to GIPHY.
GIPHY and the GIPHY name are trademarks of Giphy, Inc. Use of the service is subject to the GIPHY API Terms and GIPHY Privacy Policy.
npm install
npm run build
npm run package
manifest.jsonchat.mangoirc.grove.giphy
{
"grove": 1,
"id": "chat.mangoirc.grove.giphy",
"name": "Giphy",
"version": "0.1.12",
"description": "Search GIPHY and add an animated GIF to your message draft.",
"author": {
"name": "Mango",
"url": "https://mangoirc.chat"
},
"readme": "README.md",
"entry": "index.html",
"settings": "settings.html",
"presentation": {
"surfaces": [
"composer"
],
"defaultSurface": "composer",
"minSize": {
"width": 320,
"height": 220
},
"defaultSize": {
"width": 520,
"height": 500
}
},
"contributions": {
"uploadProviders": [],
"commands": [
{
"name": "gif",
"summary": "Find a GIF and add it to the draft",
"usage": "[search|first] [keywords]",
"subcommands": [
{
"name": "search",
"summary": "Open the GIF picker with a search",
"usage": "<keywords>"
},
{
"name": "first",
"summary": "Add the first search result to the draft",
"usage": "<keywords>"
}
]
}
]
},
"capabilities": [
"storage",
"storage.secure",
"commands.register"
],
"hostPermissions": [
"https://api.giphy.com",
"https://giphy-analytics.giphy.com",
"https://media.giphy.com",
"https://media0.giphy.com",
"https://media1.giphy.com",
"https://media2.giphy.com",
"https://media3.giphy.com",
"https://media4.giphy.com"
]
}