• Mahmoud Aglan's avatar
    feat(orgs): the manager is where organisations are run, end to end · af3c054a
    Mahmoud Aglan authored
    The mobile app has no org management (owner decision 2026-10-26), so the
    organizations module now covers everything an org owner, admin or staff needs:
    
    - Settings: name, description, tag (2-5, unique, case-blind), sticker hue
      (the game's families only), join policy, games, member invites; logo and
      banner to the public org-logos / org-banners buckets (type, size and
      minimum dimensions checked before anything is saved; a replaced or removed
      image is deleted from storage).
    - Platform decisions (staff only): capacity tier (free 500, event 5,000,
      partner unlimited) or an explicit cap never below the member count,
      verification badge, suspend / lift suspension through org_set_suspended
      (revokes every live code in the same call, reason required), soft delete.
    - Members: add by username, role change, mute for a period or until lifted,
      kick (status left, never deleted), ban with a reason (closes the player's
      pending applications through decide_application), unban, reactivate; the
      last active owner cannot be kicked, banned or demoted; the 5-org limit,
      capacity and bans are refused as the database functions refuse them. Each
      action notifies the player (org_* bell types) and lands in
      org_activity_log, shown on the org page in Arabic.
    - Reports against orgs (org_reports): a platform queue and a per-org tab,
      with status and resolution.
    
    OrgScope now also checks the action, not just the module, for org-scoped
    accounts: org_manager can look, draft and create codes but cannot change
    members or settings, decide applications, revoke or reverse codes, or
    publish. The views hide what the role cannot do.
    Co-Authored-By: 's avatarClaude Opus 5.5 <noreply@anthropic.com>
    af3c054a