Files
tekton/TEMP_REPORT.md
T
2026-04-29 01:36:49 +08:00

87 lines
3.8 KiB
Markdown

# [ 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