Files
tekton/CHANGELOG_DRAFT.md
T

14 KiB
Raw Blame History

[2.4.0] — 2026-06-18

  • Rebuilt the Gauntlet game mode from the ground up — new wave-based mechanics, arena redesign, and tighter difficulty scaling.
  • Added freeze-area VFX — the freeze powerup now shows a visible icy floor spread across the affected tiles.
  • Added block-wall VFX — blocked tiles now display a visible barrier effect so you can see the wall.
  • Added playerboard scatter VFX — Stop n Go tile-scatter penalty now shows a visible shake effect on your board.
  • Fishing Tektons in Freemode now animate — both the character and fishing rod move together in a loop.
  • Static Tekton turrets now face the direction they throw and play the throw animation.
  • Replaced old animation system with a unified animation pack using original Blender bone names — smoother, more natural character movement.
  • Characters now play a carrying blend (legs walk + arms hold) when carrying a Tekton instead of sliding idle.
  • Fixed host player name showing as "Guest" when starting Freemode too quickly after login.
  • Fixed "Cannot create match when state is JOINING" error when double-clicking the mode button.
  • Fixed Tekton pickup prompt [G] to follow your custom keybind settings from the options menu.
  • Lobby area label now updates automatically when switching game modes.
  • Fixed Freemode spawning the wrong Tekton model — static turrets now use the correct throwing-tile mesh.
  • Admin Panel no longer crashes on empty JSON responses from the server.

[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 Buttonas 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..."

[2.4.1-experimental] — $(date +"%Y-%m-%d")

  • Fixed Gauntlet map layout to remove red unpassable barrier blocks and center blocks. They are now standard walkable floors but act as hard blockers in physics so players cannot pass them.
  • Fixed Gauntlet mode to prevent powerups or sticky bubbles from spawning on boundary tiles or under the central cannon.
  • Center Candy Cannon now shoots actual projectiles that fly towards sticky cells and leave a VFX trail behind them.
  • Added new VFX to the Center Candy Cannon. It now has a glowing pink tank and spinning metallic rings.
  • Fixed Gauntlet Cleanser to stack charges instead of capping at 1.
  • Cleanser instantly clears a 3x3 AoE of sticky cells and frees any players inside immediately upon activation.
  • Added VFX and SFX when purifying cells with the Cleanser (cyan burst particles).
  • Added instant visual feedback indicator for Gauntlet Cleanser using popup text when consumed.
  • Fixed Gauntlet Cleanser UI phase label layout to ensure it does not overlap with other UI elements.