Files
Erupe/CHANGELOG.md
2026-02-08 01:08:42 +01:00

205 lines
6.4 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [9.2.1] - 2026-02-08
### Added
- Log analyzer tool suite (`tools/loganalyzer/`) for filtering, error analysis, connection tracking, and real-time monitoring of server logs
- User check CLI tool (`tools/usercheck/`) for querying connected users and server status
- File-based server logging enabled by default with log rotation
- Docker configuration backported from main for local testing and deployment
- Release automation CI/CD workflow
- CI pipeline with gofmt and golangci-lint checks
- Database connection pool configuration options
- `RealClientMode` infrastructure for multi-version client support
- Database schemas directory from upstream
### Changed
- Upgraded Go version requirement from 1.19 to 1.25
- Renamed `config.json` to `config.example.json` as template file
- Distribution system refactored to use `distribution_items` table instead of data blob
- Docker setup improved with smaller image size and more robust init script
- Renamed `GuildMealDuration` to `ClanMealDuration` to match upstream naming
- Replaced panic calls with proper error handling throughout the codebase
### Fixed
- Personal poogie (goocoo) system completely broken due to database table/column name mismatch; backported correct implementation from main
- `TimeWeekStart` returning next Monday instead of last Monday on Sundays, breaking all weekly reset logic
- Infinite loop in gacha `getRandomEntries` when no valid entries available
- Guild poogie outfit unlock using incorrect math.Pow calculation instead of bitmask
- Guild `GetGuildManageRight` nil pointer condition (wrong `&&` vs `||`)
- Guild `InfoGuild` writing GR field unconditionally, crashing pre-G10 clients
- Cafe `PointCost` read as wrong type for G1-G5.2 clients
- Entrance server clan member limit hardcoded instead of reading from config
- Quest data compatibility for Season 6.0 clients
- Stage deadlock causing 60-second timeout when players change zones
- Three race conditions in stage handlers causing nil pointer panics
- Session race condition during player logout
- Array out-of-bounds crash on clans with 0 members
- Save error crashes on disconnect
- `LoadDecoMyset` crash when players have more than 40 decoration presets
- `WaitStageBinary` handler missing timeout, could hang indefinitely
- Race condition in server broadcast causing panics
### Security
- Bumped golang.org/x/net from 0.33.0 to 0.38.0
- Bumped golang.org/x/crypto from 0.31.0 to 0.35.0
### Testing
- Expanded overall test coverage significantly across all packages
- Sign server coverage increased from 1.5% to 45.2%
- Channel server coverage increased from ~7% to 25%
- Pascal string coverage at 100%
- Added comprehensive tests for guild, gacha, cafe, goocoo packet parsing, and core network layer
## [9.2.0] - 2023-04-01
### Added in 9.2.0
- Gacha system with box gacha and stepup gacha support
- Multiple login notices support
- Daily quest allowance configuration
- Gameplay options system
- Support for stepping stone gacha rewards
- Guild semaphore locking mechanism
- Feature weapon schema and generation system
- Gacha reward tracking and fulfillment
- Koban my mission exchange for gacha
### Changed in 9.2.0
- Reworked logging code and syntax
- Reworked broadcast functions
- Reworked netcafe course activation
- Reworked command responses for JP chat
- Refactored guild message board code
- Separated out gacha function code
- Rearranged gacha functions
- Updated golang dependencies
- Made various handlers non-fatal errors
- Moved various packet handlers
- Moved caravan event handlers
- Enhanced feature weapon RNG
### Fixed in 9.2.0
- Mail item workaround removed (replaced with proper implementation)
- Possible infinite loop in gacha rolls
- Feature weapon RNG and generation
- Feature weapon times and return expiry
- Netcafe timestamp handling
- Guild meal enumeration and timer
- Guild message board enumerating too many posts
- Gacha koban my mission exchange
- Gacha rolling and reward handling
- Gacha enumeration recommendation tag
- Login boost creating hanging connections
- Shop-db schema issues
- Scout enumeration data
- Missing primary key in schema
- Time fixes and initialization
- Concurrent stage map write issue
- Nil savedata errors on logout
- Patch schema inconsistencies
- Edge cases in rights integer handling
- Missing period in broadcast strings
### Removed in 9.2.0
- Unused database tables
- Obsolete LauncherServer code
- Unused code from gacha functionality
- Mail item workaround (replaced with proper implementation)
### Security in 9.2.0
- Escaped database connection arguments
## [9.1.1] - 2022-11-10
### Changed in 9.1.1
- Temporarily reverted versioning system
- Fixed netcafe time reset behavior
## [9.1.0] - 2022-11-04
### Added in 9.1.0
- Multi-language support system
- Support for JP strings in broadcasts
- Guild scout language support
- Screenshot sharing support
- New sign server implementation
- Multi-language string mappings
- Language-based chat command responses
### Changed in 9.1.0
- Rearranged configuration options
- Converted token to library
- Renamed sign server
- Mapped language to server instead of session
### Fixed in 9.1.0
- Various packet responses
## [9.1.0-rc3] - 2022-11-02
### Fixed in 9.1.0-rc3
- Prevented invalid bitfield issues
## [9.1.0-rc2] - 2022-10-28
### Changed in 9.1.0-rc2
- Set default featured weapons to 1
## [9.1.0-rc1] - 2022-10-24
### Removed in 9.1.0-rc1
- Migrations directory
## [9.0.1] - 2022-08-04
### Changed in 9.0.1
- Updated login notice
## [9.0.0] - 2022-08-03
### Fixed in 9.0.0
- Fixed readlocked channels issue
- Prevent rp logs being nil
- Prevent applicants from receiving message board notifications
### Added in 9.0.0
- Implement guild semaphore locking
- Support for more courses
- Option to flag corruption attempted saves as deleted
- Point limitations for currency
---
## Historical Context
This changelog documents releases from v9.0.0 onwards. For a complete history of all changes, refer to the [git repository](https://github.com/Mezeporta/Erupe).
The project follows semantic versioning and maintains tagged releases for stable versions. Development continues on the main branch with features merged from feature branches.