138 lines
12 KiB
Markdown
138 lines
12 KiB
Markdown
## [2.3.7] — 2026-05-25
|
||
- Added Candy Cannon timer, firing mechanics, and 5-shot volleys to Gauntlet.
|
||
- Added new game mode: **Candy Cannon Survival** — dodge candy volleys from a giant cannon in the center of the arena!
|
||
- New 20×20 arena with a central Candy Cannon obstacle and three escalating phases: Open Arena, Route Pressure, and Survival.
|
||
- Candy Cannon Survival is now selectable from the lobby game mode list with its own dedicated arena.
|
||
- The arena now spawns collectible tiles (Hearts, Diamonds, Stars, Coins) with pattern-matching missions — complete goals while dodging candy!
|
||
- Integrated automated testing into CI pipeline — all commits now run unit and integration tests via GitHub Actions.
|
||
- Set up complete GitHub Actions CI/CD pipeline with build, test, and deployment workflows for Windows, Android, and macOS platforms.
|
||
|
||
## [2.3.5] — 2026-05-22
|
||
- Refactored `lobby.gd` into modular helper classes (`LobbyChat`, `LobbyMainMenu`, `LobbyRoomList`, `LobbyRoom`) to reduce file size and improve maintainability.
|
||
- Externalized Nakama connection config in `nakama_manager.gd` — server key, host, port, and scheme now read from environment variables with ProjectSettings fallback.
|
||
- Hardened `auth_manager.gd` session encryption — replaced static key with device-specific key derived from `OS.get_unique_id().sha256_text()`.
|
||
- Removed Steam email-based fallback auth; Steam login now requires a valid auth ticket (no more dev-mode workaround).
|
||
- Wired `GachaManager.pull()` as async (`await`) in `gacha_panel.gd` to support server-side gacha rolls.
|
||
- Removed dummy wallet seeding from `gacha_panel.gd` — wallet balances now sourced exclusively from server.
|
||
- Added `store_type` field to currency purchase payload for IAP receipt routing.
|
||
- Added server-side IAP receipt validation in `economy.lua` with Google Play, Apple, and test-mode receipt support.
|
||
- Registered `gacha` Lua module in `main.lua` server entrypoint.
|
||
- Cleaned up stub methods (achievements, leaderboard, shop wrappers) from `backend_service.gd`.
|
||
- Fixed `featured_banners` type safety in `gacha_manager.gd` — guards against non-array server responses.
|
||
- Removed stale `tiles_armagedon_a1.res` from project root (asset relocated to `assets/models/meshes/`).
|
||
|
||
## [2.3.4] — 2026-05-15
|
||
- Modernized `GachaPanel` and `FragmentCraftPanel` UI to align with the Tekton dark theme and Lobby aesthetics.
|
||
- Updated panel borders to use standard 4px content margins, matching the Login and Lobby interfaces.
|
||
- Redesigned banner selection tabs (Star/Gold) into compact navigation elements with state-driven styling (Inactive: Cyan, Active: Dark Blue).
|
||
- Replaced single-line currency balances with individual themed panels containing icons and right-aligned values.
|
||
- Updated `GachaPanel` to display both Star and Gold balances simultaneously for better resource management.
|
||
- Introduced separate UI panels in `FragmentCraftPanel` to display Common, Uncommon, and Rare fragment quantities individually.
|
||
- Refactored `FragmentCraftPanel` action buttons to use the Tekton `BtnDark` style with consistent padding and corner radii.
|
||
- Fixed nearly invisible "Rates" text in Gacha by changing font color from dark brown to light grey.
|
||
- Updated `ProfilePanel` category tabs to use descriptive text labels ("Head", "Costume", "Gloves", "Accessory") instead of emojis.
|
||
- Standardized currency and fragment balance panels to be fixed-width and compact, removing excessive horizontal stretching.
|
||
- Dynamic `StyleBoxFlat` instantiation for tabs in `GachaPanel` and `ProfilePanel` to ensure visual consistency across all modal screens.
|
||
|
||
## [2.3.3] — 2026-05-13
|
||
- Modernized Shop UI to match Lobby's dark theme; removed orange/brown accents in favor of a neutral dark-grey aesthetic.
|
||
- Replaced Label-based currency indicators with pill-shaped containers and high-quality gold/star textures.
|
||
- Integrated `RichTextLabel` with BBCode support for inline currency icons across all shop cards (Gold, Star, and Cosmetic).
|
||
- Implemented active-state highlighting for shop tabs with distinct visual feedback (white bg/dark text for active).
|
||
- Added featured banner system with sidebar support for event-based selling and special item spotlights.
|
||
- Added "Shop" tab to Admin Panel to manage 3 featured banner slots and their associated event labels.
|
||
- Standardized UI margins, button padding, and minimum sizes to ensure layout consistency and prevent text overlap.
|
||
- Added server-side RPCs (`admin_set_featured_banners`, `admin_get_featured_banners`) for persistent shop configuration.
|
||
- Fixed missing dependency errors (sky_sea_01.png and tiles_slot.png) by clearing stale .godot cache and UID references.
|
||
- Implemented `_populate_banners()` function in `shop_panel.gd` to fix "Function not found" runtime error.
|
||
|
||
## [2.3.2] — 2026-05-12
|
||
- Integrated Mailbox UI into lobby with CanvasLayer overlay (renders above 3D viewport).
|
||
- Redesigned `mailbox_panel.tscn` to 3-column layout: scrollable mail list | content area | reward slots.
|
||
- Auto read-all and auto claim-all triggered on mailbox open — no "NEW" tags remain after viewing.
|
||
- Fixed `MailboxBtn` text glitch — removed text override, replaced with `MailBadge` Label overlay in top-right corner of button.
|
||
- Fixed `mark_as_read()` in `MailManager` — now persists `read_ids` to server via new `save_mail_state` RPC.
|
||
- Admin Panel: Announcement tab `Target User` field now accepts username, display name, or user_id with **Find** button for resolution.
|
||
- Admin Panel: New **Mail Manager** tab listing all global and personal sent mails with Type, Title, Sender, Start, Expires, Status columns.
|
||
- Admin Panel: Edit dialog for mails uses `date_picker.tscn` for end date and supports reassigning recipient (username lookup + move).
|
||
- Admin Panel: **End Now** button sets `end_date` to current timestamp; **Delete** permanently removes mail from server storage.
|
||
- Server: Added `admin_list_mail` RPC — paginates all `inbox/personal` storage objects across all users via `storageList`.
|
||
- Server: Added `admin_update_mail` RPC — extract-then-reinsert pattern supports field edits and cross-user mail movement.
|
||
- Server: Added `admin_delete_mail_server` RPC — hard-removes mail from global config or personal inbox storage.
|
||
- Server: Added `save_mail_state` RPC — merges client `read_ids` into server `inbox/state` without clobbering claimed/deleted IDs.
|
||
|
||
## [2.3.1] — 2026-05-11
|
||
- Integrated DM tab system directly into the lobby chatbox — DMs now open as closeable tabs inside ChatPanel instead of a fullscreen overlay.
|
||
- Removed static DMTabBtn; DM tabs are dynamically created per friend using a scene-local DMTabTemplate with (X) close button.
|
||
- Added `@username` auto-suggest popup in ChatInput — typing `@` shows a live-filtered friend list; tap/click to select and format as `@username (message)`.
|
||
- FriendSuggestPanel moved to scene node (editable in editor) with touch/mobile support via item_selected signal.
|
||
- DM messages render in the shared GlobalChat RichTextLabel, switched by active tab context.
|
||
- Incoming DMs from friends automatically create a new tab without opening the Social Panel.
|
||
- Fixed self-DM tab creation — outgoing DM echo no longer triggers a tab for own username.
|
||
- Chat timestamps updated to `[ DD-MM-YY - HH:MM ]` format; DM history loaded oldest-to-newest (oldest at top, newest at bottom).
|
||
- Added `/clear` command — clears DM chat history locally; on Global tab, only admin/owner/moderator can use it.
|
||
- Admin `/clear` on Global also calls `admin_clear_global_chat` RPC to permanently delete persisted messages server-side.
|
||
- Added `admin_clear_global_chat` RPC in `tekton_admin.js` — paginates and removes all messages from the channel.
|
||
- Fixed `theme_override_colors` property error on dynamically created Button nodes — replaced with `add_theme_color_override()`.
|
||
|
||
## [2.3.0] — 2026-05-06
|
||
- Fixed boot screen crash caused by `TextureButton` cast as `Button` returning nil (`as Button` → `as BaseButton`).
|
||
- Routed boot screen button `.text` assignments through child `Label` nodes for `TextureButton` compatibility.
|
||
- Changed changelog bullet list to BBCode `[table=2]` layout for proper hanging indent on wrapped lines.
|
||
- Fixed changelog `RichTextLabel` scroll by removing `fit_content = true` flag.
|
||
- Synced player avatar, username, leaderboard score, and rank to the Room List panel header on open.
|
||
- Restored preserved hosting logic — wired Play tab `FreeModeBtn` and `StopNGoBtn` to host room with correct game mode.
|
||
- Wired Room tab `RoomFreeModeBtn` and `RoomStopNGoBtn` to filter room list by game mode (toggle).
|
||
- Encoded game mode as `[Mode] Room NNNN` prefix in room name for LAN room discovery filtering.
|
||
- Added `game_mode` field to room dictionaries across `LobbyManager` (Nakama + LAN) and `NakamaManager` match listing.
|
||
|
||
## [2.2.1] — 2026-05-01
|
||
- Updated daily login logic to support multiple reward types (star, gold, fragments).
|
||
- Fixed leaderboard UI to dynamically update with player changes.
|
||
- Added full backend Nakama support for daily login claiming and administration.
|
||
- Refactored Admin Panel to include a bordered 30-day grid layout with January-December selection.
|
||
|
||
## [2.2.0] — 2026-04-30
|
||
- Redesigned Social Panel with a 3-tab layout (Search, Requests, Friends) to fix UI overlap issues.
|
||
- Fixed an issue where offline friend requests were not being delivered properly.
|
||
- Added persistent storage for Direct Messages, loading previous chat history when opening a DM.
|
||
- Improved real-time Nakama socket listening to allow incoming DMs to be received instantly even when the chat tab is closed.
|
||
- Fixed account state pollution where friend data leaked when switching users without restarting the client.
|
||
- Corrected server-side RPCs for Nakama `send_friend_request` ensuring persistent push notifications.
|
||
- Re-themed Social Panel DM UI to use dark brown fonts for high-contrast readability.
|
||
|
||
## [2.1.9] — 2026-04-29
|
||
- 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
|
||
|
||
## [2.1.8] — 2026-04-24
|
||
- Optimized network synchronization with deterministic tile slots and granular board sync
|
||
- Removed lag-sensitive server adjacency checks to fix "disappearing tiles" on high-latency connections
|
||
- Fixed "No multiplayer peer assigned" crash during host disconnection and cleanup
|
||
- Finalized AP system removal, transitioning to a fully real-time authoritative model
|
||
- Restored bot mission completion logic
|
||
- Stabilized Nakama socket cleanup during match-to-lobby transitions
|
||
- Fixed Tekton not rotating toward spawning direction when throwing tiles
|
||
- Fixed purple powerup tiles spawning on top of existing layer 1 tiles
|
||
- Added animation delay to tile spawning to match Tekton throw animation timing
|
||
- Implemented 1-tile perimeter buffer on all spawn areas to prevent edge spawning and stuck gaps
|
||
- Tekton NPCs now spawn exclusively in corner zones; players spawn in middle zones
|
||
- Fixed outline shader being lost when applying skin material overrides
|
||
- Added Unstuck button to pause menu to teleport stuck players to a safe area
|
||
|
||
## [2.1.7] — 2026-04-24
|
||
- Upgraded Gacha interface with dynamic CSGO-style sequential reveal animations
|
||
- Added an animation skip button for faster 10x multi-pulls
|
||
- Fixed a bug where opening the Craft menu from Gacha would show an empty screen
|
||
- Stabilized login flow by resetting connection states after failed auto-logins
|
||
|
||
## [2.1.6] — 2026-04-24
|
||
- Added Gacha system with Star and Gold banners (1x & 10x pulls)
|
||
- Fragment Craft system — collect drops to craft exclusive skins
|
||
- Fixed boot screen stuck on "Checking versions..."
|