Validation: 171 tests and ESLint pass; all 44 generated files (43 schema modules plus loader) reproduce exactly. The packed package passes offline consumer smoke tests on Node.js 14.21.3 and 24.18.1 with SteamUser 4.29.3 and 5.3.0.
- Raised the protobuf runtime minimum to
^7.6.6and the generator to^1.3.3for security fixes; regenerated all 43 static schema modules - Updated ESLint to
^10.10.0, Prettier to^3.9.6, Vitest to^4.1.11, and the development Steam client to^5.3.0 - Refreshed the Bun lockfile, including patched transitive tooling dependencies
- Preserved Node.js 14+ runtime support and the existing
steam-user >=4.2.0peer requirement - Normalized the npm repository URL
- Added offline integration tests using the real SteamUser constructor, outgoing GC payloads, and incoming inspection event dispatch
- The Steam peer dependency still brings audit findings through
adm-zipandsteam-appticket's protobufjs 6 dependency. This release does not force major-version overrides of those upstream dependencies. - Live Steam authentication and GC operations were not tested.
Release Date: September 8, 2026
CS2 embedded/masked inspect links now work with inspectItem() without contacting the Game Coordinator. The Promise and callback APIs preserve string item IDs, normalize wear and sticker data, and emit the existing inspection events. Legacy S/M links continue to use the GC. Malformed embedded tokens throw synchronously.
Updated cstrike15_usermessages.proto and econ_gcmessages.proto and regenerated their JavaScript modules. The schemas now include custom HUD clicks and VAC reviewer messages and remove obsolete trading enum entries. Legacy trading constants in language.js remain for compatibility.
Upstream protobuf snapshot: GameTracking-CS2 fd04856, August 24, 2026. Masked inspect wire format is based on DoctorMcKay/node-globaloffensive's decoder.
The Bun lockfile now matches the dependency ranges already declared in the package manifest. Validation: 169 tests pass, ESLint passes, all 43 upstream schema hashes match the pinned snapshot, and the packed npm artifact passes a consumer smoke test. No live Steam account or GC operations were used for validation.
Release Date: July 2026
This release syncs protobuf definitions with the latest upstream GameTracking-CS2 versions and keeps GC message ID mappings current.
- Updated 13 upstream
.protofiles from GameTracking-CS2 - Regenerated all
protobufs/generated/*.jsmodules - Added
SetClanId(9229) andVolatileShopSubscribe(9228) tolanguage.js - New upstream fields include
cheating_penalty_level,clan_idonCSOPersonaDataPublic, andCMsgGCCStrike15_v2_SetClanId
- All changes are backward compatible for existing consumers
- Package version bumped from
2.3.0to2.3.1for npm publishing
Release Date: June 2026
This release updates protobuf definitions to the latest upstream GameTracking-CS2 versions and adds public API coverage for newly supported CS2 message fields.
- Added
commendPlayer(accountId, commendation, matchId, tokens)forCMsgGCCStrike15_v2_ClientCommendPlayer - Added optional
volatileLimitsupport toopenCrate() - Added
steammessages_gc.protoand generatedprotobufs/generated/steammessages_gc.js - Added public
helloGC()wrapper for the documented manual GC hello/retry flow
- Updated and regenerated protobuf definitions from GameTracking-CS2
- Made
scripts/generate-protos.jsdeterministic by sorting proto files and removing timestamp-only loader changes - Added focused tests for
openCrate()andcommendPlayer()payload generation - Updated README, examples, detailed documentation, release notes, and TypeScript declarations to match the current public API
- Cleaned up lint warnings in
inspectItem()
- All changes are backward compatible for existing consumers
- Package version bumped from
2.2.4to2.3.0for npm publishing
Release Date: March 2026
This release adds an automated protobuf download script and updates all protobuf definitions to the latest upstream GameTracking-CS2 versions.
- Added
scripts/download-protos.jsto automatically fetch latest.protofiles from SteamDatabase/GameTracking-CS2 - Added npm scripts:
download-protos,generate-protos, andupdate-protos(runs both) - Enables one-command protobuf updates via
npm run update-protos
- Added
source2_steam_stats.protowith Steam stats message definitions - Added
cs_usercmd.proto/usercmd.protowith user command definitions
- Updated
netmessages.protowith new network message fields - Updated
enums_clientserver.protowith new enum values - Updated
uifontfile_format.proto,usermessages.proto,demo.protowith latest upstream changes - Updated
base_gcmessages.protoandcstrike15_gcmessages.protowith new fields - Removed outdated
steammessages_base.proto(no longer in upstream)
- All
protobufs/generated/*.jsfiles regenerated from updated.protosources
- Removed outdated internal documentation files
- Updated dev dependencies (
eslint,prettier,vitest,protobufjs-cli) - Added
bun.lock
- All changes are non-breaking for existing consumers
- 100% backward compatible
- Proto files now match latest GameTracking-CS2 upstream
Release Date: March 2026
This release focuses on developer experience and code maintainability. It introduces TypeScript type definitions, extracts magic numbers into named constants, adds ESLint + Prettier for consistent formatting, and sets up Vitest for testing.
- Added comprehensive
types/index.d.tswith full type definitions for all public APIs - Typed all methods, events, enums, and item structures
- Enables IntelliSense and compile-time type checking for TypeScript projects
- Added
constants.jsextracting all magic numbers into descriptive named constants - Covers Steam/App IDs, GC connection parameters, operation timeouts, shared object types, item definition indices, and attribute definition indices
- Improves code readability and maintainability
- Added ESLint configuration (
eslint.config.js) with Prettier integration - Added Prettier configuration (
.prettierrc,.prettierignore) - Added Vitest configuration (
vitest.config.mjs) for unit testing - Added
lint,lint:fix,format, andtestnpm scripts
- Standardized code formatting across all source files using Prettier
- Improved readability in
index.js,handlers.js,enums.js,language.js, andscripts/generate-protos.js
- All changes are additive and non-breaking
- 100% backward compatible
- Published
fileslist updated to includeconstants.jsandtypes/
Release Date: December 19, 2024
This release adds comprehensive support for crate opening and item customization operations, including sticker extraction/encapsulation, patch management, and keychain operations.
- Added
openCrate()method to open crates using keys - Full Promise and callback API support
- Configurable timeout (
_crateTimeout, default: 30000ms)
- Added
extractSticker()method to extract stickers from items - Added
encapsulateSticker()method to encapsulate stickers - Configurable timeout (
_stickerTimeout, default: 10000ms)
- Added
applyPatch()method to apply patches to items - Added
removePatch()method to remove patches from items - Configurable timeout (
_stickerTimeout, default: 10000ms)
- Added
applyKeychain()method to apply keychains to items - Added
removeKeychain()method to remove keychains from items - Configurable timeout (
_stickerTimeout, default: 10000ms)
- All operations use
CMsgGCItemCustomizationNotificationprotobuf message - Automatic event handling via
ItemCustomizationNotification - Full error handling and validation
- 100% backward compatible
- Updated EXAMPLES.md with comprehensive examples
- Updated DETAILED_DOCUMENTATION.md with complete API reference
- Updated README.md with quick start examples
Release Date: December 19, 2024
This release adds missing message IDs and notification types, preparing the library for future feature implementations.
From EGCItemMsg (7 new IDs):
- Dev_SchemaReservationRequest: 2004
- RecurringSubscriptionStatus: 2530
- AdjustEquipSlotsManual: 2531
- AdjustEquipSlotsShuffle: 2532
- OpenCrate: 2534
- AcknowledgeRentalExpiration: 2535
- VolatileItemLoadContents: 2536
From ECsgoGCMsg (11 new IDs):
- BetaEnrollment: 9217
- SetPlayerLeaderboardSafeName: 9218
- ClientRedeemFreeReward: 9219
- ClientNetworkConfig: 9220
- GC2ClientNotifyXPShop: 9221
- Client2GcAckXPShopTracks: 9222
- MatchmakingGC2ClientSearchStats: 9223
- PremierSeasonSummary: 9224
- RequestRecurringMissionSchedule: 9225
- RecurringMissionSchema: 9226
- VolatileItemClaimReward: 9227
New ItemCustomizationNotification types (10 added):
- ExtractSticker: 1054
- EncapsulateSticker: 1055
- RemovePatch: 1089
- ApplyPatch: 1090
- ApplyKeychain: 1091
- RemoveKeychain: 1092
- ClientRedeemMissionReward: 9209
- ClientRedeemFreeReward: 9219
- XpShopUseTicket: 9221
- XpShopAckTracks: 9222
- Backward Compatible: All changes are additive, no breaking changes
- Future Ready: Message IDs are now available for implementing new features
- Complete Coverage: All known CS2 message IDs from latest protobuf definitions are included
Release Date: December 2024
Initial release of the node-cs2 fork with updated protobuf definitions and bug fixes.
- Updated to latest GameTracking-CS2 protobuf definitions
- Fixed missing
highlight_reelfield in stickers, keychains, and variations - Fixed missing
wrapped_stickerfield in sticker data - Added support for
variationsarray - Enhanced error handling with try-catch blocks
- Added field validation for critical data
- Code deduplication with reusable helper functions
- Promise-based API support for async methods
- Configurable timeouts for all async operations
- Fixed missing
highlight_reelfield extraction - Fixed missing
wrapped_stickerfield extraction - Fixed protobuf decoding errors not being caught
- Fixed missing field validation causing runtime errors
- Added Promise support to
inspectItem(),getCasketContents(),requestPlayersProfile() - Added configurable timeouts:
_inspectTimeout,_casketTimeout,_profileTimeout - Improved error handling throughout the codebase
- Better code maintainability with helper functions