Skip to content

feat: let m1ngsama ID members sign in with :login and reserve their handles - #108

Merged
m1ngsama merged 6 commits into
mainfrom
feat/identity
Oct 14, 2026
Merged

m1ngsama merged 6 commits into
mainfrom
feat/identity

Conversation

@m1ngsama

Copy link
Copy Markdown
Owner

Needs your call:

  • A login name that is a reserved handle no longer gets the SSH none method, so the client offers its key (src/bootstrap.c). Every other login connects exactly as before.

The room stays anonymous, but anyone could take any name, including a member's, and the app showed their photo next to it.

  • :login asks the module holding the new identity:write permission to sign the session in. The gateway does this with an OAuth device grant against m1ngsama ID.
  • A signed-in handle is written to $TNT_STATE_DIR/identities and becomes reserved: unverified sessions fall back to anonymousN instead of using it, and exec posts under it need the matching key.
  • ssh HANDLE@host with a key bound by an earlier :login signs in without asking. :logout forgets the key.
  • message.created metadata carries verified: true for signed-in senders.
  • Notices close on the first key and pass it through, so a notice no longer eats typing.
  • A second blank or anonymous nickname now joins as anonymous2 instead of being disconnected.
  • Version 1.5.0. make test passes, including 25 new identity checks.

Add :login and :logout. An identity:write module signs a session in through
identity.requested, identity.notice, identity.verified, and identity.reserve
records, so the core makes no network requests.

Signed-in handles are reserved in $TNT_STATE_DIR/identities with the SSH key
fingerprints bound to them. A bound key signs the session in on connect,
exec post under a reserved name requires that key, and message.created
metadata marks verified senders.

The server now refuses the SSH none method so that clients offer their
public key. Keyless clients get in through keyboard-interactive with no
prompts; keyless clients running with BatchMode can no longer connect.
Accept passwordless SSH again unless the login name is a signed-in member's
handle, so anonymous and keyless BatchMode clients connect as before. A
member is recognised by key when connecting as ssh HANDLE@host, and a
keyless sign-in now says how to bind a key.

A blank, invalid, or reserved nickname at the prompt now joins as the first
free anonymousN instead of disconnecting when anonymous is taken.
The sign-in notice opens on every recognised connection. As a pager it
swallowed whatever the person started typing until they pressed q.
@m1ngsama
m1ngsama merged commit df03313 into main Oct 14, 2026
4 checks passed
@m1ngsama
m1ngsama deleted the feat/identity branch October 14, 2026 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant