Skip to content

Changelog

By Devvyyxyz

View the full changelog of xeno-bot's development progress, including all features, improvements, and fixes across versions. Each version entry includes a summary of changes and links to relevant commits for more details.


v1.9.22 — UX: V2 gift responses & leaderboard/server fixes

Date: 2026-03-07

  • Improved: /gift success responses now use Components V2 for clearer, multi-line presentation. Gift payloads show From, To, Item/Xenomorph/Host, and explicit IDs so transfers are easy to read and audit.
  • Fixed: Incorrect xenomorph label shown in some /gift replies (e.g., message said a different role than the xeno transferred). The display name and emoji are now derived from config/evolutions.json role mappings (roles) using the xeno's role or stage, ensuring the text matches the actual xeno given.
  • Fixed: /leaderboard server view now defaults to server-scoped mode when invoked inside a guild (no subcommand). Component interactions preserve the invoking guildId, preventing accidental fallbacks to global aggregates during menu updates.
  • Misc: Minor load-time verification and module safety checks added; no behavioral change expected beyond presentation and scoping fixes.

v1.9.21 — Fix: leaderboard scoping and paging

Date: 2026-03-07

  • Fixed: /leaderboard global and /leaderboard server now correctly preserve and apply sort/filter options across interaction pages and component updates.
  • Global: All component interactions on the global leaderboard now explicitly run the global subcommand so every update continues to use global aggregates.
  • Server: All component interactions on the server leaderboard now explicitly run the server subcommand so rankings and filters are computed from server-local data only (no global fallbacks).
  • Why: Previously component updates could lose the subcommand context and mix global/server data, producing confusing or incorrect rankings. This change ensures consistent, predictable leaderboard pages.

v1.9.20 — UX: evolve list formatting

Date: 2026-03-07

  • Improved: The /evolve list view now formats entries to match the rest of the bot UI: <emoji> <Role Display> [ID] with the pathway shown on a second line. This makes xenomorph entries consistent with other lists (hosts, eggs) and improves scanability.
  • Why: Previously the list used a compact #id role line that lacked the role emoji and consistent bracketed ID. The new format uses configured role emojis and display names to match completion/cancel messages and other UX patterns.
  • Files: src/commands/evolve/index.js updated to use getRoleDisplay() for list entries.

v1.9.19 — Fix: xenomorph guild scoping & data backfill

Date: 2026-03-07

  • Fixed: Xenomorphs are now explicitly stored and queried per-guild so /inventory and /evolve only show xenomorphs that belong to the same server.
  • Schema: Added guild_id column to the xenomorphs table and updated src/models/xenomorph.js to write/read this column when available.
  • Migration & Backfill: Added migration 20260307140000_add_xenomorphs_guild_id.js and a data backfill migration 20260307151000_populate_xenomorphs_guild_id.js that derives guild_id from each xeno's hive_id (or the owner's first hive when a direct hive link was missing).
  • Why: Prevents cross-server inventory leakage and makes guild-scoped features reliable without inferring guilds from other relations.
  • Notes: Rows where a guild could not be derived remain NULL and will be excluded by guild-scoped queries unless includeUnAssigned is used. Run migrations on any additional DB instances (staging/replica) as needed.

v1.9.18 — Fix: host autocomplete labels & next_stage display

Date: 2026-03-07

  • Fixed: Host autocomplete labels no longer include raw emoji markup. Autocomplete now shows only the host display name (e.g., Colonial Marine (x1) [#8437]) to avoid raw emoji token text appearing in selection lists.
  • Fixed: The next_stage autocomplete now shows only the role display name (for example, Deacon) instead of deacon — Deacon, making selections cleaner and easier to read.
  • Minor: Continued polish to grouped /evolve start autocomplete labels and count formatting (counts use (xN)).

v1.9.17 — UX: grouped evolve/autocomplete and clearer counts

Date: 2026-03-07

  • Improved: /evolve start autocomplete and host selection now group items by stage/pathway and host type to reduce option clutter. Example label: Facehugger • Pathway: standard (x20) is now shown as Facehugger • Pathway: standard (x20) [#123] and the count is displayed as (x20) for clarity.
  • Why: Large inventories produced long autocomplete lists showing every individual ID. Grouping reduces noise and makes it easier to pick the right group.
  • Behavior: Each grouped option uses a single representative ID (the lowest ID in the group) as the option value so Discord accepts the numeric value. This keeps the command compatible while improving readability. If you prefer a follow-up selector to pick a specific ID from the group, we can add that as a later enhancement.
  • Related: Added robust pathway/role normalization so pathway-specific facehugger variants (e.g., space_jockey_facehugger) are matched even if the user types space or spacejockey.

v1.9.16 — Migration: normalize pathway-specific facehugger roles

Date: 2026-03-07

  • Change: Non-standard pathways that used a generic facehugger stage (e.g., dog, space_jockey) are now normalized to pathway-specific stage identifiers (dog_facehugger, space_jockey_facehugger) in config/evolutions.json.
  • Migration: Added a knex migration 20260307123000_migrate_facehugger_roles.js that updates existing xenomorphs rows: any xeno with role or stage = facehugger and a non-standard pathway will be renamed to {pathway}_facehugger.
  • Why: This prevents ambiguity where multiple pathways shared the generic facehugger label and ensures evolution requirements map to the correct pathway-specific stage.
  • Rollback: The migration includes a down-step to revert pathway-specific names back to the generic facehugger if needed.

v1.9.15 — Fix: evolve autocomplete and evolving-xeno filtering

Date: 2026-03-07

  • Fixed: /evolve start autocomplete previously suggested xenomorphs that either had no configured next evolution or were already undergoing evolution, which could lead to confusing UI and failed attempts.
  • Root cause: Autocomplete fell back to listing all roles when a selected xeno had no next step, and did not exclude xenos with queued evolution jobs.
  • Fix: Autocomplete now:
  • only suggests xenomorphs that have a configured next evolution step for their pathway; and
  • excludes xenomorphs that currently have a queued evolution job (status = queued).
  • User impact: Users will no longer see invalid or busy xenos in the selection list; attempting to start an evolution will only be possible for valid, idle xenos.

v1.9.14 — Fix: inventory egg list truncation

Date: 2026-03-07

  • Fixed: Inventory view sometimes appeared to omit egg types for users with large egg collections; more egg types are now visible per page.
  • Root cause: The inventory V2 view paged egg entries with a small page size which hid many egg types for heavy collectors.
  • Fix: Increased the inventory page size so /inventory shows more egg entries per page, reducing truncation. Further UI improvements (e.g., a "Show all" option) can be added if desired.

v1.9.13 — Fix: prevent duplicate host insertions

Date: 2026-03-07

  • Fixed: Prevented intermittent Duplicate entry errors when running /hunt under concurrent load. The error occurred when the code attempted to manually reuse deleted hosts.id values and two concurrent requests chose the same free ID.
  • Root cause: insertWithReusedId could select the same gap ID for multiple concurrent inserts, causing primary key collisions on MySQL.
  • Fix: hosts insertion now uses the database's auto-increment behavior (no manual id assignment) so the DB reliably assigns unique IDs and avoids race conditions.
  • Notes: If ID reuse is still required for other tables, consider implementing transactional locking or a centralized ID allocator to avoid races.

v1.9.12 — Command option label consistency

Date: 2026-03-05

  • Improved: Standardized select-menu and autocomplete entity labels to a consistent Name [ID] pattern across key command flows.
  • Updated commands: gift, hive, evolve, and devgive option labels/autocomplete entries.
  • Xeno context: Added pathway context where relevant (for example, xeno options now include pathway details when useful).
  • UX impact: Makes it easier to match inventory entries with command choices and reduces ambiguity when selecting entities.

v1.9.11 — Evolution completion DM V2 redesign

Date: 2026-03-05

  • Improved: Evolution completion direct messages now use Components V2 for cleaner presentation.
  • New format:
  • Your evolution job [jobId] completed
  • <emoji> <from role> [xenoId] -> <emoji> <to role> [xenoId]
  • Details: Role display names and emojis are now resolved from evolution role config for consistent naming across pathways.
  • Reliability: Added plain-text DM fallback if V2 component sending fails.

v1.9.10 — Gift xenomorph autocomplete + evolution status fix

Date: 2026-03-05

  • Fixed: /gift xenomorph autocomplete now properly lists giftable xenomorphs owned by the user.
  • Improved: Xeno autocomplete labels now include configured xeno emoji + display name, ID, and pathway for easier selection.
  • Fixed: Manual /gift xenomorph by ID no longer incorrectly blocks gifting due to historical evolution records.
  • Details: Gift blocking now only checks active evolution jobs (queued/processing) instead of any row in evolution_queue.

v1.9.9 — New-user egg catch award fix

Date: 2026-03-05

  • Fixed: Resolved spawn catch failures for first-time users that logged Failed awarding egg.
  • Root cause: createUser() in user model referenced an undefined logger, causing a runtime error during initial user creation.
  • Impact: New users can now catch spawned eggs normally, receive inventory updates, and avoid console award errors.
  • Internal: Added the missing user-model logger initialization and kept existing award flow unchanged.

v1.9.8 — Inventory xeno list formatting polish

Date: 2026-03-05

  • Improved: /inventory xenomorph entries now use host-style formatting for readability and consistency.
  • Before: #663 facehugger: Pathway: standard • Created: ...
  • Now: <xeno emoji> <xeno display name> [663]: Created ...
  • Details: Xeno labels now use evolution role metadata (display name + configured emoji) and keep a clean timestamp line similar to host entries.

v1.9.7 — Hive create-flow interaction fix

Date: 2026-03-05

  • Fixed: /hive no-hive create flow no longer breaks interactions on the same message after creating a hive.
  • Bug behavior before: Creating a hive from the no-hive prompt, then using dashboard buttons on that same message, resulted in failed interactions.
  • Now: After pressing View Hive, the same message is upgraded to the full hive dashboard collector so Stats/Modules/Milestones/Queen/Members and management actions function normally.
  • Internal: Refactored hive dashboard collector wiring into a reusable attachment path used by both existing-hive and post-create view flows.

v1.9.6 — Eggs list claim pagination fix

Date: 2026-03-05

  • Fixed: /eggs list no longer resets to page 1 when claiming/collecting an egg from later pages.
  • Improved: Collect actions now preserve the current list page context so users can claim multiple eggs on page 2+ without repeatedly pressing Next.
  • Technical: Collect button IDs now carry page context and all eggs-list collectors restore that page before re-rendering.

Commit: post-v1.9.5 fix for eggs list paging state retention.

v1.9.5 — Post-1.9.4 gameplay, UX, and data integrity updates

Date: 2026-03-05

  • Gameplay & Balance: Added grantable-only Golden Egg support and excluded grantable-only eggs from normal spawns; rebalanced egg/host spawn weights (including rarer deacon/neomorph and king-pathway tuning).
  • Inventory UX: Expanded /inventory with sorting + filtering across eggs, items, hosts, and xenomorphs (including type/stage filters and richer pagination behavior).
  • Stats UI: Refactored /stats to Components V2 with improved sectioned layout and user avatar thumbnail.
  • ID Management: Implemented reusable-ID insertion utility for hives, hosts, and xenomorphs so deleted IDs are reused instead of always incrementing.
  • Dog Pathway Fixes: Updated dog pathway first evolution to runner, added/updated runner and related xeno emoji/assets, and added migration tooling for legacy dog drones.
  • Encyclopedia Expansion: Added Xenos catalogue view to /encyclopedia and added rarity metadata to evolution roles so xeno entries show rarity with rarity emojis.
  • Gift/Hive Integrity Fix: Fixed /gift xenomorph so gifted xenos clear hive_id on transfer (prevents unintended reassignment when gifted back); added cleanup migration for stale/invalid xeno↔hive links.
  • Hive Management Iterations: Multiple hive-screen improvements including module upgrades, members pagination/navigation, delete confirmations/back flow, snapshot/readability updates, and queen/module action flow polish.
  • Developer/Infra Improvements: Added devgive host-type handling/autocomplete improvements and command-registration guardrails to reduce profile double-registration risk.

Commits included (after v1.9.4): cfebf00, d2206d9, 599d4c0, fa1efd6, c07f181, 1c88cf6, ec291af, 964564e, eb04e2f, 0ea96b7, f249a5c, 31b4d6b, 9144806, d4eb9b4, 30c943c, d98a1db, a7ddd16, cc25963, 8f987cd, d0b7ebf, e83ecb2, 6088b0c, c6671af, a4b66f4, c9fd9a4, 37f8c73, 2af9a10, eb50837, 64762e7, 17f095e, e9f7844, 4c44526, 6452859, bd6af2c, 4f9d299, 710fe87.

v1.9.4 — Hive queen restrictions and UI polish

Date: 2026-03-03

  • Fixed: Only fully-evolved Queen xenomorphs can now be assigned as hive queens (previously allowed any evolved xeno).
  • Improved: Hive UI redesigned for clarity:
  • Stats screen now shows member breakdown by role.
  • Queen screen displays current queen details and lists all hive members.
  • Assign Queen screen shows available queens with pathway and level info.
  • Add Xenos screen displays available xenos with detailed metadata.
  • All screens now use better formatting with emojis and clearer status indicators.
  • Hive snapshots split into multi-line format for readability.

v1.9.3 — Hive system expansion

Date: 2026-03-03

  • Added interactive Assign Queen button + select menu to manage hive queens.
  • Added interactive Add Xenos button + multi-select to grow your colony.
  • Hive views now track and display xenomorph membership.
  • Added permissions checking: only hive owner can manage members and queens.
  • Fixed existing typo in hive create-prompt handler.

v1.9.3 — Evolve list UX updates and payload-limit fixes

Date: 2026-03-03

This patch release improves /evolve list usability and resolves Discord component payload-limit errors introduced during interactive UI expansion.

Features

  • Enhanced /evolve list with new interaction controls:
  • Added a type filter select menu to sort/filter list entries by xenomorph type.
  • Added per-entry Info buttons that open detailed info for the selected xenomorph.

Bug Fixes

  • Fixed Discord API payload failures (COMPONENT_MAX_TOTAL_COMPONENTS_EXCEEDED) on evolve list views.
  • Reduced component payload size to stay under Discord V2 limits while preserving filter + per-entry info functionality.
  • Lowered evolve list page size.
  • Capped type-filter option count.

Internal

  • Version bumped to 1.9.3.
  • Patch release contains no intentional breaking changes.

v1.9.2 — Evolve list filter and payload mitigation

Date: 2026-03-03

  • Added type filter select and per-entry info buttons to /evolve list.
  • Reduced page size and filter options to fit Discord component limits.
  • Made expired evolve views keep UI disabled instead of hiding controls.

v1.9.2 — Tutorial command and article reminder fixes

Date: 2026-03-03

This patch release focuses on onboarding UX and news reminder reliability.

Features

  • Added a new interactive /tutorial command with:
  • Category selector menu
  • Multi-page navigation (Previous/Next)
  • Dedicated sections for server setup, basics, hives, evolutions/hatching, hunts, and extra tips

Bug Fixes

  • Fixed /tutorial payload validation failure by correcting select-menu emoji option format (Discord API expected emoji object shape).
  • Fixed news reminder visibility across deferred/component replies by applying reminder injection before reply/edit paths in safeReply.
  • Fixed article-change detection for edited existing articles (e.g. releases.md) so reminders trigger when latest content is updated, not only when new files are added.

Internal

  • Version bumped to 1.9.2.
  • Patch release contains no intentional breaking changes.

v1.9.1 — Release notes and version bump

Date: 2026-03-02

  • Added v1.9.0 release notes documenting recent bug fixes and features.

Date: 2026-02-27

  • Initial project scaffold and first commit (6f75204).

v1.9.1 — Bug fixes and command reliability

Date: 2026-03-03

This is a bug-fix-only patch release focused on command stability, pagination correctness, and forum workflow reliability.

Command & UI Fixes

  • Setup egg-limit stability
  • Fixed runtime logger reference issues in /setup egg-limit error paths.
  • Kept max egg limit validation at 10 with reliable error handling.

  • Eggs command subcommand fixes

  • Fixed /eggs info not working by implementing missing handler logic.
  • Added /eggs destroy handler support and safer unknown-subcommand fallback messaging.

  • Eggs list behavior fixes

  • Fixed list pagination edge cases that could stop navigation early.
  • Fixed stale timestamp rendering (Hatched: 56 years ago) by using correct hatch timestamps.
  • Fixed View List button from result screens by attaching collectors in those flows.
  • Adjusted collected-entry behavior:

    • Immediate collect action still updates the current view to show Collected.
    • Fresh /eggs list calls only show uncollected entries.
  • Hunt list consistency

  • Fixed hunt-list quick hunt button to reuse /hunt execution flow so cooldown and hunt logic are consistent.
  • Updated empty-state behavior so /hunt-list still opens list UI when no hosts are owned.

Forum Bug Report Workflow Fixes

  • Added bug-report forum automation for new thread posts with a Mark Resolved action.
  • Fixed thread create compatibility issues (ButtonBuilder is not a constructor) by using runtime-safe component payloads.
  • Updated resolve-button permissions to allow only thread owner or guild owner.
  • Resolve action now sends a response, then archives and locks the thread.
  • Forum post notice message now uses Components V2 payload style.

Configuration/Data Fixes

  • Reorganized emoji configuration ordering and applied emoji-related display corrections used by command output flows.

Internal

  • Version bumped to 1.9.1.
  • Patch release contains no intentional breaking changes.

v1.9.0 — Code quality, performance optimization, and database efficiency

Date: 2026-03-03

This release focuses on code quality improvements, performance optimization, and reducing database load through caching and better indexing.

Code Quality & Refactoring

  • JSON parsing helper utility: Created centralized src/utils/jsonParse.js for safe JSON parsing across models.
  • Eliminated 15+ duplicate try-catch blocks previously scattered across 5 models (xenomorph, user, guild, hive, host).
  • Consistent error handling and logging for all JSON parsing operations.
  • Intelligently handles edge cases: already-parsed objects, null values, and invalid JSON.
  • Improved maintainability: future JSON parsing changes only need one place to update.

  • Model refactoring: Updated all models to use the new centralized JSON parsing utility.

  • xenomorph.js: Consolidated 3 duplicate parsing patterns into helper calls.
  • user.js: Removed 2 separate try-catch blocks, simplified logic.
  • guild.js: Standardized error handling with helper utility.
  • hive.js: Consistent parsing across multiple lookups.
  • host.js: Cleaner data transformation with helper.

Performance & Caching

  • News reminder cache: Created src/utils/newsReminderCache.js with smart in-memory caching.
  • Reduces DB queries for reminder checks by approximately 90%.
  • 5-minute TTL cache stores user's latest read article timestamp.
  • Cache misses trigger DB lookup, hit results bypass database entirely.
  • Automatic cleanup every 10 minutes prevents memory bloat.
  • Cache automatically invalidates when user reads a new article via /news command.
  • Updated interactionCreate.js to check cache before performing DB lookup.
  • Modified /news command to invalidate cache after marking article as read.

  • Database indexing: Added performance index to active_spawns table.

  • New created_at index enables faster cleanup/expiration queries.
  • Particularly beneficial for garbage collection of old spawn records in high-activity guilds.
  • Works alongside existing indices: guild_id, channel_id + message_id, and spawned_at.

Performance Impact

  • Database load reduction: ~90% fewer queries for news reminder checks across all interactions.
  • Interaction latency improvement: Cache hits avoid network round-trips to database.
  • Query performance: Active spawn queries benefit from additional created_at index during cleanup operations.
  • Memory efficiency: Cache uses minimal memory (~1KB per cached user, ~100KB for 1000+ users).

Implementation Details

  • Cache lifecycle: TTL-based expiration + explicit invalidation on article reads.
  • Database compatibility: Indices work with both MySQL and PostgreSQL (SQLite skipped).
  • Backward compatibility: All changes are fully backward compatible; no migrations required.
  • Error handling: Graceful fallback if cache fails; DB lookups still work.

Internal

  • Version bumped to 1.9.0.
  • Commit: ca1d6bb - "Improvements: Code quality, performance optimization, and database efficiency"
  • All utilities validated and loaded successfully.
  • No breaking changes; safe to deploy in production.

v1.8.0 — Gift fix, ephemeral interactions, and critical memory leak patch

Date: 2026-03-02

Critical Bug Fixes

  • Memory leak patch: Fixed critical memory leak affecting message component collectors across 9 commands (hunt, hunt-list, ping, hive, evolve, emojis, pathway, help, and gift).
  • Root cause: Removed collector filter functions were replaced with manual user ID checks inside collect handlers, causing all interactions from all users to be processed instead of filtered at collector creation time.
  • Impact: Memory accumulation from 224 MB → 1473 MB before OOM crash on deployed bot.
  • Solution: Restored proper filter: i => i.user.id === userId to all affected collectors to prevent processing unwanted interactions and eliminate unbounded memory growth.
  • All 9 commands validated and tested; collectors now properly filter interactions at creation time.

Features

  • Gift command SQL fix: Fixed /gift xenomorph error when users had active evolution queue jobs.
  • Changed xenomorph_id to xeno_id in evolution_queue table query (line 367) to match actual schema.
  • Devephemeral command: Added developer-only text command /devephemeral for testing Components v2 ephemeral interaction responses.
  • Text-only execution (no slash command data export).
  • Demonstrates proper ContainerBuilder and TextDisplayBuilder usage with MessageFlags.IsComponentsV2.

UX Improvements

  • Ephemeral help interactions: Fixed /help command to properly display as ephemeral when appropriate.
  • Added missing ephemeral: isEphemeral flag to deferReply and safeReply calls.
  • Ephemeral permission errors: User permission validation errors across all affected commands now display as ephemeral responses instead of failing silently.
  • Prevents error messages from cluttering the main chat channel.

Internal

  • Version bumped to 1.8.0.
  • All affected commands load successfully and pass validation.
  • Critical memory safety restored to production bot.

Date: 2026-03-02

Key Features

  • Pathway command registration fix: Fixed /pathway not appearing by restoring proper command data export so it deploys and registers correctly.
  • Evolution pathway stage corrections: Updated egg first-stage mapping so pathways hatch into lore-appropriate starts:
  • Neomorph eggs now hatch to bloodburster
  • Deacon-path eggs now hatch to hammerpede
  • King-path eggs now hatch to king_facehugger
  • Devgive expansion and UX cleanup:
  • Added ability to grant xenomorphs at specific pathway/stage
  • Added ability to grant royal_jelly
  • Consolidated /devgive into a single unified flow with a type selector and contextual autocomplete
  • New public utility commands:
  • Added /invite to provide bot OAuth invite link
  • Added /support-server to provide support Discord link

Improvements

  • Readable number formatting system:
  • Added src/utils/numberFormat.js (formatNumber, formatNumberShort, formatNumberAuto)
  • Applied formatting across key surfaces (including devgive, stats, inventory, eggs, and hive displays) so large values are shown as comma-separated or compact forms.
  • Error-response support routing:
  • Interaction failure replies now include a support-server link when configured.
  • Added support invite and bot invite URLs in config/links.json.

Bug Fixes

  • Fixed ButtonBuilder is not a constructor runtime errors affecting /invite, /support-server, and fallback interaction error replies by using compatibility-safe link button payloads.
  • Prevented secondary error-reply failures in interaction error handling path.

Internal

  • Version bumped to 1.7.0.
  • Updated release documentation to include all post-1.6.0 shipped changes.

v1.6.0 — Eggs List Overhaul & Rarity System

Date: 2026-03-02

Major Features

  • Complete Eggs List Redesign: Transformed /eggs list into a fully interactive command matching hunt-list functionality:
  • Paginated display (4 hatches per page)
  • Direct collection from list with disabled button states
  • Shows collected eggs with "Collected: ✅" status and disabled buttons
  • Added Statistics page showing total hatches, ready count, most common type, and unique types
  • Added interactive "Hatch Egg" button with dropdown selection menu
  • Navigation between list, stats, and hatch screens
  • Improved timestamp display: "Hatched: \<time>" / "Hatching: \<time>" / "Collected: ✅"

  • Configurable Rarity System: Created centralized rarity configuration:

  • New config/rarities.json defining rarity tiers (Common 1-3, Rare 4-5, Very Rare 6+)
  • Added custom rarity emojis: <:common:...>, <:rare:...>, <:very_rare:...>
  • Updated both eggs list and hunt-list to display emoji-only rarity badges
  • Unified display format: 🥚 Egg Name • :very_rare: instead of 🥚 Egg Name • 🟪 Very Rare

  • Enhanced Egg Hatching UX:

  • Removed /eggs collect subcommand (collection now happens directly from list)
  • Added select menu for hatching with dropdown showing available eggs, quantities, and hatch times
  • Added "View List" button to all result pages (sell/hatch) with full interactive navigation
  • Result pages now have complete collector support for seamless workflow

Display Improvements

  • Unified format across eggs and hunt-list:
  • Three-line display: Name/Type • Rarity, ID: ###, Status/Timestamp
  • Consistent emoji usage and rarity badge placement
  • Bot avatar thumbnails on all list pages

Bug Fixes

  • Fixed egg list showing all hatches including collected ones inappropriately
  • Fixed button states not properly disabling when eggs aren't ready to collect
  • Fixed navigation between different screens losing context
  • Improved collector lifecycle management for sell/hatch commands

Configuration Changes

  • Added config/rarities.json with rarity tier definitions
  • Added rarity emojis to config/emojis.json
  • Removed eggs.collect subcommand from config/commands.json

Internal

  • Version bumped to 1.6.0
  • Refactored rarity badge generation to use centralized config
  • Enhanced eggs command with multiple screen types (list, stats, hatch, result)
  • Improved code maintainability with modular page builders

v1.5.0 — V2 Components stabilization and nodemon improvements

Date: 2026-03-02

Key Features

  • V2 Components Migration: Completed migration of /news command to discord.js V2 components using ContainerBuilder, TextDisplayBuilder, and SeparatorBuilder for modern UI rendering.
  • Improved Collector Helper: Enhanced createInteractionCollector to properly handle V2 component updates and avoid sending empty messages:
  • Now intelligently filters out empty arrays for components and embeds
  • Prevents Discord API errors (50006: Cannot send an empty message)
  • Properly passes MessageFlags.IsComponentsV2 for V2 component rendering

Bug Fixes

  • Fixed ButtonBuilder import errors by using style-specific builders (PrimaryButtonBuilder, SecondaryButtonBuilder) compatible with discord.js v15
  • Fixed V2 component update pattern: changed from message.edit() to btn.editReply() for proper interaction-based updates
  • Fixed collectorHelper passing undefined properties to Discord API, which now filters to only include defined and non-empty values
  • Fixed news command home view to skip loading latest article preview when none exist
  • Fixed nodemon auto-restart on gitignored files (logs, .env, data)

Developer Experience

  • Added comprehensive nodemon.json configuration that ignores log files, data, and editor files
  • Updated npm run dev to use nodemon config instead of inline flags
  • Prevents unnecessary bot restarts when logging systems write to disk

Internal

  • Version bumped to 1.5.0.
  • All V2 component patterns now follow discord.js v15 best practices
  • Bot remains stable during development workflows with proper file watching

v1.4.0 — DevMenu, logging improvements, and leaderboard fixes

Date: 2026-03-02

Key Features

  • DevMenu command: Converted xen!devcommands to a new xen!devmenu interactive command with owner-only action buttons for developer maintenance.
  • Enhanced logging with guild context: Added guild names to spawn and hatch manager logs.
  • Eggs command options registration: Fixed missing option definitions in config/commands.json.
  • Leaderboard server filtering fix: Fixed /leaderboard server showing global data.

Bug Fixes

  • Fixed several collector and logging issues.

Internal

  • Version bumped to 1.4.0.

v1.3.0 — Help UX, embed colour unification, spawn deletion toggle

Date: 2026-02-28

  • Added a guild-level toggle to delete the original spawn message after it is caught (/setup message-delete enabled:<true|false>). The setting is persisted under guild_settings.data.delete_spawn_message and defaults to false in config/guildDefaults.json.
  • Implemented spawn-message deletion in the spawn manager with robust channel/message fetch and a Manage Messages permission check. Failures are logged but do not surface user-facing errors.
  • Unified embed colour across commands: added a top-level colour in config/commands.json, normalized color strings to numeric values in the commands loader, and fixed EmbedBuilder ValidationErrors by using numeric fallbacks.
  • Improved Help UX: added "About" and "Setup (Server Admins)" sections, removed the usage display (and removed usage fields from the commands config), fixed category listing and selection bugs, and restored clickable setup mentions where application command IDs are available.
  • Added a developer-only devgive command and registered it for owner use.
  • Migrated many commands to a per-command directory layout while keeping legacy files to preserve history and ease rollout.
  • Logging and diagnostics: event/load logs now include event names, spawn/hatch logs include guildName when available, and fallback logging was hardened for edge cases.
  • Fixed several runtime and syntax issues introduced during refactors (help selection population, truncated help file syntax, and embed color validation).

Notes:

  • The spawn deletion feature defaults to off; enable via /setup message-delete enabled:true to start deleting spawn messages after a catch.
  • Additional followups: add an admin-facing notice when the bot lacks Manage Messages permission in the spawn channel, and consider de-duplicating legacy flat command files in a future cleanup release.

v1.2.0 — News, Shop, Inventory, and Currency Improvements

Released: 2026-02-28

This release introduces multiple user-facing features, bug fixes, and developer tools. Highlights:

Key Features

  • News/Home improvements
  • The news home now automatically previews the most recent article (uses file modification timestamps to detect newest content).
  • Added src/utils/articles.js to reliably detect latest article title/content with short caching.
  • When a user opens /news the bot records the latest article timestamp as read for that user so reminders stop.
  • Added a per-user unread-article reminder that shows on commands when a newer article is available; reminders are cleared when the user reads the article.

  • Inventory UI & Currencies

  • Added a Currencies tab to Inventory showing credits (global) and royal_jelly (guild).
  • Fixed an issue where the inventory view showed an "Avatar / View Avatar" placeholder when the user had no items — avatar only appears when items exist.
  • credits is now a global currency stored under data.currency.credits (not per-guild). Default value is 0 via config/userDefaults.json.

  • Shop & Items

  • Shop UI now displays configured emojis and uses a stable button implementation compatible with the repo's discord.js/builders versions.
  • Removed purchasable eggs/cosmetics from the shop and added consumable items and boosts.
  • Fixed buy flow robustness and purchase confirmation messaging; purchases correctly deduct currency and add items.

  • Developer & Ops

  • Added several developer-only commands and hid them from normal help listings.
  • Hardened deveval with blacklists and logging.
  • Added owner bypasses for setup and text-mode forcespawn commands.

  • Data & Migrations

  • Made credits a global currency: added scripts/migrate-credits-global.js to migrate guild-level credits to global credits (dry-run and apply modes).
  • Added scripts/migrate-mark-articles-read.js to initialize data.meta.lastReadArticleAt for existing users so they won't immediately see unread reminders.

Bug Fixes

  • Fixed a TypeError related to ButtonBuilder incompatibilities by using the builders-provided SecondaryButtonBuilder/SuccessButtonBuilder fallback when appropriate.
  • Fixed interaction handling so the news-reminder check is performed asynchronously and does not block command handling (avoids "The application did not respond").
  • Adjusted inventory and shop collectors to be robust against rejected component payloads.

Notes for Server Operators

  • Run node scripts/migrate-credits-global.js --apply if you have legacy credits stored per-guild and want them consolidated into global balances.
  • A one-time migration to mark all users as read was included and run during development. If you prefer a different initial state, run node scripts/migrate-mark-articles-read.js (dry-run without --apply).

Internal

  • Version bumped to 1.2.0.
  • Tests run locally and passed after changes.

v1.1.0 — Improvements, telemetry, and stability

Date: 2026-02-28

  • Bump package to 1.1.0 and publish-ready metadata.
  • Hardened logging and sanitization: added redaction for sensitive env values in health and log-tail outputs, file-backed fallbackLogger, and forced-ANSI support for consistent logs in non-TTY environments.
  • /health redesign: switched to subcommands (show and lastlogs), added developer detail levels, owner-only lastlogs with rate-limiting and audit entries, and masked secrets as ***** in outputs.
  • Collector helper and command hardening: centralized createInteractionCollector, fixed many collector integrations across commands to avoid component attach errors.
  • /info styling and runtime values: info now reports real runtime values (Node, discord.js, gateway ping, shard info, cached counts) and includes thumbnail/footer/timestamp for clarity.
  • /stats overhaul: reorganized layout, combined server/global views, added SQL-backed leaderboard ranking via egg_catches, and per-egg historical rates computed from recorded events.
  • Egg recording and analytics: added egg_catches table and recordEggCatch() to persist timestamped catch events and keep aggregate egg_stats in sync.
  • Spawn loop fix: ensured the spawn manager always schedules the next spawn after events complete to avoid the loop stopping unexpectedly.
  • Various small fixes and compatibility updates across commands, configuration, and deploy flows.

v1.0.0 — Minor improvements and cleanup

Date: 2026-02-28

  • Continued refinements to the news UX, quick links handling, and collector integration (3c9ce90, 6afb398).
  • Created per-category article files in config/articles/ and populated example content for release, events, newsletter, and other (3f2c915, 3ce5a60).

Date: 2026-02-28

  • Reworked config/links.json into a categorized structure (e.g., general, community) and updated commands/events to support both the new shape and the legacy flat shape for backward compatibility (6c11509).
  • Improved news command home view to include:
  • An Introduction field
  • Quick Links (categorized or flat) rendered as embedded link lists
  • Latest article preview with title and truncated body
  • Bot avatar thumbnail on the Home embed
  • Category selector buttons to open per-category article lists stored under config/articles/ (commits: 3ce5a60, b56c851, 3f2c915, 6afb398)

v0.7.0 — Message component handling / collector helper

Date: 2026-02-28

  • Introduced createInteractionCollector helper to reliably attach MessageComponentCollectors to interaction replies; this centralizes the defer/edit/fetch pattern and reduces repeated boilerplate (bee298f, 6382363, f4c51c7).
  • Refactored commands to use the helper (inventory, shop, news, help, leaderboard, encyclopedia) to improve stability and avoid TypeErrors when attaching collectors (464c7e3, 9dd81ce, 3f2c915).

v0.6.0 — Logging hardening & fallback logger

Date: 2026-02-28

  • Added a resilient file-backed fallbackLogger for last-resort synchronous logging (cd819a3).
  • Adjusted console logging output so npm start formats match development console output (99ff5be, 0b1a377, a0d981a, 4651848, 5ba41b4).
  • Added ability to force ANSI colors in logs via environment flags for consistent formatting in non-TTY environments (e4b77f2).

v0.5.0 — Deploy & profile improvements

Date: 2026-02-28

  • Improved command deploy scripts and profile selection to be safer for dev vs public registration, and added default guildId support for deploy flows (82192b9, 84f985d, 9f04d4e).

v0.4.0 — Preview join, buttons, and news command (initial)

Date: 2026-02-28

  • Added a developer-only previewjoin command to preview the guild join embed and improved join/guildCreate handling (6ab96d9, 3f4d149).
  • Implemented runtime-safe button creation (builders vs raw payload) to maintain compatibility across environments (785affe).
  • Introduced initial news command for reading and paginating latest articles (2a29a52).

v0.3.0 — Commands, setup and autocomplete

Date: 2026-02-27 — 2026-02-28

  • Added setup command enhancements including a details subcommand and safer executeInteraction use (0dad7a9, 867b29c).
  • Added autocomplete improvements and logging for choices (227bd1b).
  • Added eggs features (list/collect/hatch support) and related command adjustments (04d5995, 857dd71).

v0.2.0 — Core utilities, DB and command scaffolding

Date: 2026-02-27

  • Implemented safeReply utility for consistent interaction responses (4fc2da8).
  • Refactored database access into a unified db module and improved DATABASE_URL handling for MySQL/Postgres (4717292, adef985).
  • Removed local SQLite binary from repository and updated .gitignore (dcac588).
  • Added checkcommands utility and enhanced command loading/logging (93c061e, efde13f).
  • Fixed various spawn/knex/interaction reference bugs discovered during initial integration (9d040f7, 9ef0ad8, e40b4d4).