- Shipped
- August 24, 2026 at 11:01 PM UTC
- Author
- kamo
- Commit
- 7c2d2ea
The Presenters tab dropdown was empty for every organization, and always had been. GET **************** answers with { teamMembers, total }; the tab read data.members, which is undefined, and the || [] fallback turned that into an empty option list with no error and no empty state — it read as 'this org has no staff' rather than as a bug. Replaced with AgentSelector, the control the /leads Agent filter uses, instead of repairing the key. A dropdown can only ever hold one page of an org that may run to five figures of staff, and the whole-directory fetch behind it is the one that was deleted when /leads moved to this control. requiredRight={null} widens it to every team member: the VIEW_LEADS default is right for handing over lead work and wrong for presenting a support session. The directory's default scope is staff-only, which matches a backend that refuses a member who is not a TeamMember, and it returns the Member PK, which is the id addPresenter resolves. Adding a presenter also swallowed every refusal from the server, so a rejected add left the button looking inert. The reasons here are ones a member can act on — most often that the person is already a presenter for this type — so they now surface, in the server's own words where it gives them. The same payload-key mistake was live on **************** which fetches both endpoints and read .members from each: correct for members-subscribers, silently empty for team-members-contractors, so every team member was missing from the billing-owner candidates. Fixed there too.