Self-serve allowlist: an invite-only middle tier between operators and fully open registration #82
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
dark/nether-voicebridge#82
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Today self-serve access is all-or-nothing:
open_registration = falsemeans only theallowoperators can use the management bot;truemeans every Matrix user (federation included) gets the self-serve tier, gated structurally (room authority + Discord approval + caps + deny-list).For a closed/invite beta the operator may want a middle tier: open registration semantics (scoped
link/unlink/list, two-sided auth still mandatory) but only for MXIDs on a list they control — without making those users full operators.Proposal: an optional
[management] self_serve_allow = ["@friend:example.org", …](or a runtimeallow/deny-style bot command pair so the list is editable over DM likeban/unban). Semantics:open_registration = true: only listed MXIDs (plus operators) get the self-serve tier; everyone else is treated as if open registration were off (ignored, no DM auto-join).Editable-over-DM is the nicer UX (mirrors
ban, persists in a file underdata_dir), config-only is the simpler build. Either works for the beta use case.Context: asked by the operator while enabling open registration for testing on the hosted instance (2026-07-11). Related: #43, #47, #77.
Fixed + shipped in v0.3.0-alpha.21 (deployed 2026-07-11). An invite-only middle tier between operators and fully-open registration. New
[management] self_serve_allowseeds<data_dir>/self_serve_allow.toml; operators then edit it live over DM withserve-allow/serve-remove/serve-open/serve-list. When configured, only listed MXIDs (plus operators) get the self-serve tier; everyone else is ignored. The FILE'S EXISTENCE enables restriction (removing the last entry does not silently re-open the surface); absent ⇒ open to everyone (the pre-#82 default, backward-compatible). A singleBotCtx::may_self_serve(sender)foldsopen_registration+ the allowlist and replaces the two gates (command gate + invite accept). Verified: unit tests (file ops, tier semantics, command parse, validation) + livemgmt_self_serve_linkPASS (default unrestricted, no regression).