# [ ADT ] Report: Nakama Friend System & Steam Auth Implementation ## Session Summary Implemented comprehensive Nakama friend system with lobby invites, direct messaging, global chat, and Steam authentication fallback. Migrated all UI from dynamic node creation to scene-based architecture. ## Completed Changes ### Server (Nakama) ✅ Added `afterAuthenticateSteam` hook in `tekton_admin.js` to set Steam persona name as display name ✅ Added `rpcSendLobbyInvite` RPC for sending lobby invite notifications to friends ### Authentication ✅ Implemented Steam login fallback to email-style auth in `auth_manager.gd` for dev/testing without publisher key ✅ Set Steam username as display name with default password matching username ✅ Set `is_guest = false` and `auth_mode = "steam"` on Steam login ### Friend System ✅ Created `FriendManager.gd` autoload singleton for Nakama friend list, DM channels, and lobby invite notifications ✅ Registered FriendManager in `project.godot` autoload ✅ Added `nakama_id` field to LobbyManager player data ✅ Extended `request_room_info` RPC to include `nakama_id` for all players ### Lobby UI ✅ Added optional `InviteBtn` reference in `lobby.gd` with safe node resolution ✅ Connected `invite_btn.pressed` to open invite friends dialog ✅ Connected FriendManager signals for lobby invite notifications ✅ Added + Friend buttons in player slots with friend status display ✅ Implemented invite friends popup using `invite_friends_dialog.tscn` scene ✅ Implemented lobby invite notification popup using `lobby_invite_popup.tscn` scene ✅ Added social panel modal opening from lobby ### Social Panel ✅ Created `social_panel.tscn` with full UI layout (tabs, friend list, global chat, DM views) ✅ Created `social_panel.gd` with `@onready` references (no dynamic UI creation) ✅ Implemented friend list using `friend_row.tscn` instances ✅ Implemented global chat and DM tabs with UI nodes ✅ Handled DM history and message sending ### UI Scenes (All .tscn based, no .new() calls) ✅ Created `friend_row.tscn` + `friend_row.gd` (friend list row with chat/accept/decline/remove buttons) ✅ Created `invite_friends_dialog.tscn` + `invite_friends_dialog.gd` (invite friends popup) ✅ Created `invite_row.tscn` + `invite_row.gd` (single invite row with invite button) ✅ Created `lobby_invite_popup.tscn` + `lobby_invite_popup.gd` (lobby invite notification dialog) ### Profile Panel ✅ Fixed account type display to include Steam auth mode in `profile_panel.gd` ### Version & Changelog ✅ Updated `CHANGELOG_DRAFT.md` with all changes (7 player-facing entries) ✅ Bumped version to 2.1.9 via `generate_version_json.py` ✅ Updated `assets/data/version.json` with new version and changelog ## Files Modified - `server/nakama/tekton_admin.js` - `scripts/managers/auth_manager.gd` - `scripts/managers/friend_manager.gd` - `scripts/managers/lobby_manager.gd` - `scripts/ui/profile_panel.gd` - `scripts/ui/social_panel.gd` - `scripts/ui/friend_row.gd` - `scripts/ui/invite_friends_dialog.gd` - `scripts/ui/invite_row.gd` - `scripts/ui/lobby_invite_popup.gd` - `scenes/lobby.gd` - `project.godot` - `CHANGELOG_DRAFT.md` - `assets/data/version.json` ## Files Created - `scenes/ui/social_panel.tscn` - `scenes/ui/friend_row.tscn` - `scenes/ui/invite_friends_dialog.tscn` - `scenes/ui/invite_row.tscn` - `scenes/ui/lobby_invite_popup.tscn` ## Version Bumped **2.1.8 → 2.1.9** (2026-04-29) ## Player-Facing Changelog - Added friend system with friend list, direct messaging, and lobby invitations - Improved Steam login support - Added Social Panel with Friends, Global Chat, and Direct Message tabs - Added ability to add/remove friends from lobby player slots - Added Invite Friends button to lobby - Added lobby invite notifications - Fixed account type display in profile panel