diff --git a/README.md b/README.md index 4104d8b..d4d392d 100644 --- a/README.md +++ b/README.md @@ -112,17 +112,15 @@ name is an existing AgentBBS member (registration is off — your BBS account *i your IRC identity): ```bash -# zero-setup: built-in client over SSH (members only) -ssh -t irc@bbs.profullstack.com # native client — SASL account = your BBS member name /connect irc.bbs.profullstack.com 6697 # browser / agent over WebSocket wss://bbs.profullstack.com/irc ``` -`ssh irc@` is a built-in IRC client (`internal/irc`) that authenticates you to -the network automatically — no client to install. Set `IRC=0` to skip the -server. Full details: [`docs/irc.md`](docs/irc.md). +There is no in-BBS `ssh irc@` route; members connect with any IRC client over +native TLS or WebSocket, using their BBS username for SASL. Set `IRC=0` to skip +the server. Full details: [`docs/irc.md`](docs/irc.md). ### News (Usenet) server diff --git a/cmd/agentbbs/main.go b/cmd/agentbbs/main.go index c26221e..95dacc7 100644 --- a/cmd/agentbbs/main.go +++ b/cmd/agentbbs/main.go @@ -421,7 +421,7 @@ func (a *app) teaHandler(s ssh.Session) (tea.Model, []tea.ProgramOption) { } // sessionExec adapts a func to tea.ExecCommand so the hub can run a -// terminal-takeover feature (pod shell, IRC, news, mail, Tor) via tea.Exec and +// terminal-takeover feature (pod shell, news, mail, Tor) via tea.Exec and // return to the menu afterwards. The feature reads and writes the ssh.Session // directly, so the stream hooks are no-ops. type sessionExec struct{ run func() error } @@ -431,9 +431,9 @@ func (e sessionExec) SetStdin(io.Reader) {} func (e sessionExec) SetStdout(io.Writer) {} func (e sessionExec) SetStderr(io.Writer) {} -// sessionApps builds the hub's terminal-takeover entries (pod, IRC, news, Tor) +// sessionApps builds the hub's terminal-takeover entries (pod, news, mail, Tor) // so a member reaches everything from one `ssh @host` login instead of -// separate `ssh pod@`/`irc@`/`news@`/`tor@` connections (which still work as +// separate `ssh pod@`/`news@`/`tor@` connections (which still work as // aliases, mainly for bots). Each entry is gated by membership/verification/plan // and shown locked with a reason when unavailable. func (a *app) sessionApps(s ssh.Session, su store.User, guest bool) []hub.SessionApp { diff --git a/internal/hub/hub.go b/internal/hub/hub.go index cbe4d73..a27edc2 100644 --- a/internal/hub/hub.go +++ b/internal/hub/hub.go @@ -3,11 +3,11 @@ // reclaiming it when the plugin emits ExitMsg. // // Besides in-hub plugins, the hub also lists "session apps" — features that take -// over the whole terminal (a pod shell, the IRC client, the newsreader, the mail -// reader, Tor) rather than rendering inside the hub. Selecting one suspends the +// over the whole terminal (a pod shell, the newsreader, the mail reader, or +// Tor) rather than rendering inside the hub. Selecting one suspends the // hub via tea.Exec, runs it, and returns to the menu. This is what lets a member // reach everything from a single `ssh @host` login instead of separate -// `ssh pod@` / `ssh irc@` / `ssh news@` connections. +// `ssh pod@` / `ssh news@` connections. package hub import ( @@ -27,8 +27,8 @@ var ( bannerStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("#e11d2a")) ) -// SessionApp is a hub entry that takes over the terminal — a pod shell, the IRC -// client, the newsreader, the mail reader, or Tor — instead of running as an +// SessionApp is a hub entry that takes over the terminal — a pod shell, the +// newsreader, the mail reader, or Tor — instead of running as an // in-hub model. Selecting it suspends the hub (tea.Exec), runs Cmd, then returns // to the menu. type SessionApp struct {