Skip to content

Add admin-curated visual reaction packs to rooms #26

Description

@jusso-dev

Context

Adapt the safe catalog and compact composer ideas from Buzz PR #2968 for Muster rooms. Visual reactions can help teams acknowledge or humanise high-pressure collaboration, but they must never blur formal alert, investigation, task, approval, or response state.

Proposed behaviour

  • Add an optional compact reaction-pack picker to the room composer.
  • Support organisation-admin-curated packs only; clients must not fetch arbitrary pack definitions or assets from external content.
  • Store pack metadata, approved revision, organisation scope, and lifecycle in PostgreSQL. Store verified assets in the existing object store using content-addressed SHA-256 keys.
  • Validate MIME type, dimensions, animation/frame count, and byte size before approval or use. Pin and verify the exact approved asset digest.
  • Provide accessible alt text and deterministic unavailable states.
  • Keep visual reactions decorative. They must not acknowledge alerts, approve actions, complete tasks, change case state, or become authoritative evidence.
  • Record pack creation, revision approval, removal, and external import attempts in the audit trail. Dangerous external imports require server-side capability checks and approval records.

UI direction

Keep this as simple as Buzz: one small composer affordance and one lightweight picker. Empty state points to organisation settings. Pack authoring/curation stays in settings; no marketplace or discovery feed in the main room UI.

Acceptance criteria

  • Picker is absent or unobtrusive when no packs are installed.
  • Users can send a reaction from an installed, approved pack in two interactions or fewer.
  • Only exact approved revisions and verified assets render.
  • All catalog and asset queries are organisation-scoped.
  • External content is handled as untrusted data and cannot supply instructions.
  • Superseded or missing pack revisions remain removable by administrators.
  • Decorative reactions cannot mutate structured operational state.
  • Alt text, keyboard navigation, reduced motion, empty state, and failed-asset state are covered.
  • Tests use synthetic packs/assets and cover digest mismatch, oversized media, unauthorised access, and stale approval.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions