feat: add online presence tracking with last_seen column and configurable timeout

Add `last_seen` column to users table with index, implement `set_last_seen` and `get_online_users` database functions, expose presence config env vars (`PRESENCE_TIMEOUT_SECONDS`, `PRESENCE_ONLINE_LIMIT`, `PRESENCE_ONLINE_MARGIN_SECONDS`), include `last_seen` in follow list responses, and update profile docs to mention online indicator.
This commit is contained in:
2026-07-04 22:08:20 +00:00
parent 7002b23eeb
commit 0f872336b1
41 changed files with 935 additions and 94 deletions
+11
View File
@@ -906,3 +906,14 @@ def test_feed_pagination_emits_rel_next(page, app_server):
assert nxt.count() == 1
href = nxt.get_attribute("href")
assert "before=" in href and f"topic={topic}" in href, href
def test_feed_online_now_widget_lists_current_user(alice):
page, user = alice
page.goto(f"{BASE_URL}/feed", wait_until="domcontentloaded")
widget = page.locator(".online-users")
expect(widget).to_be_visible()
expect(
page.locator(f".online-user[title='{user['username']}']")
).to_have_count(1)
expect(page.locator(".online-users .presence-dot.online").first).to_be_visible()