<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mobius/hotline/presence.go, branch main</title>
<subtitle>Friendship Quest remix of mobius, a hotline server in go #cli</subtitle>
<id>https://git.r.bdr.sh/mobius/atom/hotline/presence.go?h=main</id>
<link rel='self' href='https://git.r.bdr.sh/mobius/atom/hotline/presence.go?h=main'/>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/'/>
<updated>2026-06-25T14:44:23Z</updated>
<entry>
<title>Introduce PresenceTracker interface for online-user tracking</title>
<updated>2026-06-25T14:44:23Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2026-06-25T14:44:23Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=bba70d0a2903ab1fff5a2e89cff97cb1f6c7f82a'/>
<id>urn:sha1:bba70d0a2903ab1fff5a2e89cff97cb1f6c7f82a</id>
<content type='text'>
Replace the leaky *redis.Client field on Server with a PresenceTracker
interface that receives connect/rename/disconnect lifecycle events. This
removes Redis-specific set encoding from hotline/server.go and the session
handlers, and drops the redis dependency from the hotline package.

The Redis implementation moves to mobius.RedisPresenceTracker, which owns
the legacy "login::ip"/"login:nickname:ip" set encoding so existing
deployments keep working. The API server reads online users through a new
OnlineLister interface and falls back to the in-memory ClientMgr when no
presence tracker is configured. Startup clearing of stale online state now
happens unconditionally when Redis is configured, not only when the API
server is enabled.
</content>
</entry>
</feed>
