Skip to content

Feature: /gif slash command with GIF picker (provider TBD) #114

@mjkatgithub

Description

@mjkatgithub

Planning

  • Milestone: Backlog (unassigned)
  • Priority: P2
  • Size: L
  • Estimate: 5 SP

Goal

GIF search slash command with Discord-style picker: user types
/gif <query> (alias /giphy optional if provider allows), browses
results, sends selected GIF as m.image.

Background — provider & naming

  • Discord exposes /gif and /tenor (both search animated GIFs on the web).
  • Historical /giphy branding may not be available for commercial/client use;
    verify Giphy/Tenor/Klipy Terms of Service before integration (API key,
    attribution, caching, NSFW policy).
  • Spike deliverable: short note in issue/PR on chosen provider + legal constraints.

Scope

Spike (required before implementation)

  • Compare Giphy vs Tenor vs Klipy API: pricing, attribution, Matrix client
    precedent, NSFW filtering options.
  • Document decision + env var for API key (NUXT_PUBLIC_* or server proxy).

Implementation

  • /gif command on framework (Feature: Slash-command framework in composer #110) with <query> arg
  • Horizontal GIF picker overlay (Discord reference UX)
  • Debounced search API calls; loading/error states
  • Send as m.image (GIF mimetype); reuse existing image send path
  • Optional: /tenor alias pointing to same backend if we use Tenor
  • i18n EN/DE

Out of scope (v1)

  • GIF favorites / recent searches persistence
  • Inline GIF without picker (auto-send first result)

Branch

feature/slash-command-gif-picker

Acceptance Criteria

  • /gif cats opens picker with relevant results; click sends GIF to room.
  • Provider ToS documented; attribution shown if required.
  • Errors (no API key, rate limit, empty results) surfaced in UI.
  • Works in threads.

Test Checklist

  • Unit: search client mock, picker selection → send payload.
  • Manual: compare UX to Discord screenshots; verify Element/Cinny display.

Blocked by

Epic

Sub-issue of #109.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions