Releases
v1.0.0
Compare
Sorry, something went wrong.
No results found
1.0.0 (2026-10-23)
Bug Fixes
actually fix problem with releasing (465fa92 )
actually fix problem with releasing (#29 ) (c03af82 )
add missing redlock dependency when building (f6207a9 )
add patched packages to generated package.json (#365 ) (6eeae74 )
bot-data: correct trade changed event (8fb68f6 )
bot-data: fix circular type (#213 ) (346f192 )
bot-data: make old state nullable (97a0c66 )
bot-manager-data: add missing full path (ea846f2 )
bot-manager-data: add missing interfaces (#257 ) (12f5f0d )
bot-manager-data: exchange details event type (#271 ) (d1e8374 )
bot-manager-data: use correct version of bot-data (4e3437f )
bot-manager: add missing param to swagger docs (d5565b4 )
bot-manager: cache bots for longer (570ded2 )
bot-manager: correct counter offer job type (#209 ) (cae8f40 )
bot-manager: delete bots (40b99f1 )
bot-manager: disable node env webpack optimization (fdaa2e8 )
bot-manager: don't let stale heartbeat checks or failed heartbeats drop a running bot (#836 ) (100b9fd )
bot-manager: don't retry loading inventories on http 401 status (3e40c27 )
bot-manager: don't retry on upstream 4xx errors when performing action on offer (5e38dbb )
bot-manager: ensure one job per offer (#262 ) (990bc58 )
bot-manager: fix dockerfile (1a4ea31 )
bot-manager: fix lock for saving and deleting bots (#261 ) (18ca3c2 )
bot-manager: fix problem with getting escrow (#719 ) (d4d3ddc )
bot-manager: fix problem with not returning promise (d17d54c )
bot-manager: fix problem with validating ttl for escrow (1ffbe4e )
bot-manager: get exchange details no matter the status (fb001d0 )
bot-manager: handle all trade errors (454ae26 )
bot-manager: handle race condition when acting on offers (#729 ) (b52be87 )
bot-manager: increase exchange details max retry delay (c0ffba5 )
bot-manager: inventory inconsistency (dcbd70d )
bot-manager: job ids can't be integers (057d23e )
bot-manager: lock inventories when using them (3c5c1a7 )
bot-manager: make inventory subscribers retry on error (3e7b5c7 )
bot-manager: mark unreachable bots stopped after the last heartbeat check (#827 ) (72e7997 )
bot-manager: match existing offers without a message when deduplicating trades (#852 ) (62f57ea )
bot-manager: only find matching offers created by us (c0718ed )
bot-manager: properly handle missed heartbeats with cleanly stopped bot (b7c7423 )
bot-manager: publish correct event when bot is stopped (99dd406 )
bot-manager: refetch escrow when a cached error is retried with a token or offer (#830 ) (1778856 )
bot-manager: reject escrow ttl 0 instead of caching forever (#829 ) (f42ef00 )
bot-manager: remove missed heartbeat check when bot marked as stopped (ed68662 )
bot-manager: remove traded assetids from the right inventory on exchange details (#845 ) (d74264f )
bot-manager: retry jobs on missing or unreachable bots without rethrowing (#859 ) (5cb5ac1 )
bot-manager: retry trade job when failing to get bot (#204 ) (5d68c56 )
bot-manager: retry trade jobs on 429 instead of failing them (#835 ) (4138ee2 )
bot-manager: set steamid64 metadata in heartbeat and inventory events (3cd2f1c ), closes #577
bot-manager: throw error when bot is inaccessible (97a7927 )
bot-manager: treat missing inventory timestamp as a cache miss (#749 ) (344fac4 )
bot: accept mobile confirmations (d22003c )
bot: add eresult and cause to get trade errors (4ce949b )
bot: add missing parenthesis (98a7411 )
bot: add missing validation for full poll interval (9de83cf )
bot: add username to login key file name (fb8d57e )
bot: better handle trade errors (1d6a710 )
bot: calculate backoff after getting an inventory (b5fd5e7 )
bot: cap login retry backoff (#826 ) (1861d12 )
bot: catch common escrow errors (2f1552f )
bot: check offer state before accepting/removing/countering (d00f88a )
bot: clarify error for when API key is not set (0a056dc )
bot: clear cache when countering and canceling/declining (ec8bc95 )
bot: connect to gc before doing task (83cd298 )
bot: correctly check if offer is our/their (ec8e950 )
bot: delete the disabled file after a successful login (#844 ) (8bc3c1b )
bot: don't accept offer if not active (#203 ) (ba88f17 )
bot: don't assert when updating an offer (9a44bbb )
bot: don't delete bot when steamid not set (44f1c20 )
bot: don't login if already connected (#231 ) (810fc4e )
bot: don't publish confirmation for all offers (ebbdd67 )
bot: don't remove trade that is not active (cf6c221 )
bot: don't remove trade that is not active (#8 ) (7dd0ed9 )
bot: don't require api key to be defined (#669 ) (4536bc6 )
bot: don't require tradeable only query when getting inventories (22ad63e )
bot: don't send multiple heartbeats (45196d5 )
bot: ensure only newest offer is cached (#741 ) (a52b912 )
bot: ensure that custom game is not an empty string (e2d5e0f )
bot: exit process on error when starting (39ca5eb )
bot: expire the shared inventory slot so a stopped bot cannot hold it (7deabe0 )
bot: fetch the live offer when refreshing a trade (#858 ) (e75a3be )
bot: fix accepting confirmations (#740 ) (9b98d2e )
bot: fix active offer metrics (aaae651 )
bot: fix check for offers not requiring confirmation (0b8eab4 )
bot: fix custom game (#308 ) (f0b6fc8 )
bot: fix error when cleaning up polldata (7e49c38 )
bot: fix friend relationships metric (eab4037 )
bot: fix issues with login key (#40 ) (aa2efee )
bot: fix our/their offer check (d93bd8b )
bot: fix problem with checking if offer is confirmed (4a1de31 )
bot: fix problem with corrupted assets (8ca560a )
bot: fix problem with loading inventories (1a9858d )
bot: fix problem with not removing all items when countering an offer (afaa4fa )
bot: fix unable to delete trades (5c00f0e )
bot: fix unable to delete trades (#56 ) (d0b4345 )
bot: fix url for getting specific friend (70edf08 )
bot: fix url for getting specific friend (#16 ) (578acf5 )
bot: handle 4xx errors when getting inventories from Steam (657cf8a )
bot: handle exchange details errors (a652e51 )
bot: handle trade already canceled/declined (61516a2 )
bot: handle trade already canceled/declined (#6 ) (815271a )
bot: ignore 404 when deleting bot (41367f8 )
bot: ignore error when getting login key (6210148 )
bot: ignore null items removed by the tf2 gc (#837 ) (407cf9d )
bot: improve delete bot on shutdown (6fa6b72 )
bot: increase max reconnect timeout (711e689 )
bot: invalidate cache before confirming and accepting offers (718310a )
bot: keep the inventory backoff steps without jitter (5380cc3 ), closes #846 #782
bot: only leave tf2 when refreshing the inventory (#418 ) (0c2b878 )
bot: only listen when logged in to steam (844eb19 )
bot: only resolve friend deletion on the target's relationship event (#833 ) (959dbfe )
bot: parse boolean when getting trade (6d02033 )
bot: pass sort type to sortBackpack (#766 ) (8114ac3 )
bot: permission denied using local storage (17b0282 )
bot: prevent accepting our own offers (9038c50 )
bot: prune completed offers from polldata (#824 ) (3ff5945 )
bot: publish confirmation event for sent offer (#276 ) (220dba8 )
bot: read from correct path when getting custom persona state (d5eaa9c )
bot: redo logging in (#334 ) (9fb668c ), closes #331
bot: reduce spam when ensuring offers published (20772ba )
bot: reenter custom game after entering a game (9b584ca )
bot: refresh session on "HTTP error 500" error message (#387 ) (4abdedc )
bot: refresh the tf2 inventory through the task queue (#851 ) (6dd83d3 )
bot: refresh web session when removing trades (#385 ) (37f809f )
bot: reject trade offers to the bot itself with a 400 (#856 ) (43a9134 )
bot: release pipeline failed (070fcce )
bot: remove histogram timer entry after request completes (#753 ) (bf3c545 )
bot: reset attempts when attempting to load private inventory (e819e08 )
bot: reset confirmation flag when accepting an offer (efab105 )
bot: reset poll interval when reconnected (#194 ) (f4cc869 )
bot: reset poll interval when reconnected (#194 ) (98b63c2 )
bot: retrigger release (af439a1 )
bot: retry login when starting (9562247 )
bot: return 429 when rate limited when loading inventories (63916c9 )
bot: send correct ip in heartbeat (11a13ff )
bot: send steam eresults as numbers (#853 ) (ac978ca )
bot: set poll interval after reconnecting (55dc673 )
bot: shutdown on error (ebb9ad3 )
bot: space every inventory request and back off for minutes (eb3cbf5 )
bot: start bot without checking if manager is running (ce0c7ec )
bot: stop fetching item schema (9468b72 )
bot: stop poll timer on disconnect (b6f8478 )
bot: storage on shutdown wait in correct order (6595bdf )
bot: storage on shutdown wait in correct order (#34 ) (0252640 )
bot: use correct paths for friend (6ddc43d )
bot: use correct paths for friend (#50 ) (1be8b82 )
bot: use host instead of ip (#730 ) (37f45ae )
bot: use http 200 for craft response (f71f251 )
bot: validate profile games and persona state (#857 ) (5d1f2a6 )
bot: wait before opening TF2 after quit (86e0eeb )
bot: wait for data to be saved before stopping (dfbedae )
bot: wait for writes (6052715 )
bptf-manager-data: allow 0 in currencies (00726a9 )
bptf-manager-data: check if currency values are positive (4ac5070 )
bptf-manager-data: missing dependencies (#379 ) (dd8b1ad )
bptf-manager-data: reject listing details longer than 200 characters (#797 ) (37c941c )
bptf-manager-data: remove external build option (2b157b2 )
bptf-manager: add missing await (030a0e9 )
bptf-manager: add missing paths to lib (85af108 )
bptf-manager: add missing space to log (20f68b4 )
bptf-manager: cap job retry backoff with the shared queue settings (#781 ) (96503f2 )
bptf-manager: delay rate limited jobs instead of holding worker slots (#786 ) (8ad212f )
bptf-manager: delete active listings with the rate limited v2 batch endpoint (#778 ) (38c1133 )
bptf-manager: don't re-add listings deleted while updating (#811 ) (d64d37c )
bptf-manager: don't retry agent jobs without a token (#793 ) (bca8dcf )
bptf-manager: don't undo re-registering an agent while it unregisters (#816 ) (b19ffa6 )
bptf-manager: exit early when removing desired listings but no match (cb46d58 )
bptf-manager: fix drain delay error (29fd01d )
bptf-manager: fix listing sync bugs in create, update and delete queues (#773 ) (e59acd5 )
bptf-manager: fix problem with updating desired listings (#326 ) (a497e2b )
bptf-manager: fix rate limiting (0bd6d84 ), closes #403
bptf-manager: fix various problems (#519 ) (53ba740 )
bptf-manager: follow the rate limit backpack.tf returns on 429 (#785 ) (0e65464 )
bptf-manager: force listing to be created if quantity changed (4927304 )
bptf-manager: give each notification refresh its own temp key (#791 ) (c4452f4 )
bptf-manager: incorrect log (1e82330 )
bptf-manager: increase lock duration for desired listings (43bbf21 )
bptf-manager: keep current listings when the refresh temp key expired (#780 ) (688fd98 )
bptf-manager: keep listing changes made during refreshes (#779 ) (fd47f4a )
bptf-manager: only attempt to update listings with id (c0b563a )
bptf-manager: only clear limiters when their settings change (#783 ) (37ec8f3 )
bptf-manager: only create job if listings changed (45238a7 )
bptf-manager: only lock desired listings being added/updated/removed (#400 ) (e166c32 )
bptf-manager: only queue jobs if nessesary (148754b )
bptf-manager: overwrite updated listings (50eb3e1 )
bptf-manager: recreate rate limiters whose key expired (#804 ) (fb95b2d )
bptf-manager: remove removed desired listings from the update queue (#784 ) (cf46be6 )
bptf-manager: stop and finish inventory refreshes under the lock (#812 ) (4fd8a88 )
bptf-manager: stop retrying notification client errors and free the parent (b5eb3bc ), closes #781
bptf-manager: stop waiting for listing limits refreshes (#788 ) (07e4c08 )
bptf-manager: validate listing currencies (8e6fb9f )
broken release (#731 ) (a8609bb )
build: copy the pnpm-workspace.yaml into container (#739 ) (ab42ac4 ), closes #733
check if assetid and contextid is greater than 0 when sending offers (e86a306 )
ci: fix problem with releasing affected projects (abf3c02 )
ci: update qemu emulator to fix crashing runner (#754 ) (c334e00 )
common-data: add missing keys to package.json (#710 ) (a2a5a57 )
completely remove @types/steamid from all dependencies (6b49069 )
config: fix problem with getting env var (28edf29 )
config: parse boolean env values case-insensitively (#828 ) (00f676a )
config: require rabbitmq env vars when missing events type env var (b13fd95 )
config: use correct type when getting env var (a7b083b )
config: use name from package.json (5b7c26e )
correct econ item types (eb47c39 )
correct error status check for idempotency interceptor (#615 ) (4296653 )
correct redis key prefixes (#421 ) (8af1363 )
correct various redis keys (5310f30 )
docker: use --prefer-offline for prod install (#774 ) (0611c9e )
don't attempt to release an already expired lock (496a7a8 )
don't attempt to release an already expired lock (c296c26 )
escrow: return offer on partner steamid match validation (#738 ) (45056f3 )
events: allow subscribing to defined exchanges (#419 ) (141fc59 )
events: clear identifier when no longer subscribed (#712 ) (e438171 )
events: don't publish null data (#708 ) (e285d38 )
export event types (6a9c171 )
fix missing dependencies for libs (448a1ce )
fix problem with -1 ttl (#640 ) (6fcf690 ), closes #637
fix problem with releasing (d85b184 )
fix problem with releasing (#28 ) (f17de66 )
handle private inventories (86c75c5 )
improve heartbeat error messages (b048bdf )
incorrect and inconsistent offer event types (#269 ) (e5de2df )
InventoryFailedEvent type (#239 ) (e1afe23 )
is-refined-validator: use tf2-currencies for formatting (0b8e40a )
item-service: don't retry gained items event (7be46bf )
item-service: fix swagger docs for spell api (01456ac )
item-service: merge all prefabs of items with multiple prefabs (#806 ) (73e6b92 )
item-service: only store one copy of schema files (89546df )
item-service: only update schema if newer than current (a13b5b3 )
item-service: properly return spell when using id as defindex (e421f10 )
item-service: return assetid when parsing fails (#699 ) (890372c )
item-service: return first instance of effect (ed51481 )
item-service: spells were not being parsed by the tf2 parser (1968591 )
item-service: use case insensitive keys for storing and fetching schema values (1c5866e )
locking: lock duplicate resources only once (#776 ) (17181c4 )
make libraries buildable (0e8989a )
make libraries buildable (#30 ) (af08b18 )
message-relay: fix logging time ago event was made (973859d )
message-relay: publish events in correct order (afddc09 )
nestjs-events: fix problem with not cleaning up properly (ffacf2c )
nestjs: don't cache 5xx responses for idempotency keys (#838 ) (20e51bc )
notification: rename clearNotification method to clearNotifications (34b3ab0 )
plural event prefix (323dc31 )
plural event prefix (#33 ) (61defc2 )
properly override steamid dependencies (d64040c )
properly type offers with items and assets (#410 ) (8ab84db )
queue: add the job again when it is removed while being updated (#800 ) (9fdb610 )
queue: always run the job failed hook (#751 ) (52ff0a9 )
queue: handle errors properly when processing queue jobs (8a66107 )
queue: handle jobs leaving the delayed state while being re-added (#770 ) (a92c905 )
queue: increase default max delay (#713 ) (2ca32ec )
queue: page jobs correctly across job states (#810 ) (ac1f314 )
queue: retry job on 429 (952e055 )
queue: return http status 504 when waiting for job to finish (4cd9b8b )
queue: run the error handling for a processJob that throws synchronously (2ec9cbe )
queue: update the data of existing jobs that are not running (#772 ) (806ca20 )
remove all listeners when stopping bot (feda5b0 )
retrigger release (8b14b80 )
saving desired when planning listings (#329 ) (421f068 )
scripts: run pnpm through a shell on windows (#767 ) (4b03d0e )
tf2-format: align recipe inputs and outputs between the tf2 parsers (#823 ) (2d9cd29 )
tf2-format: check if attribute is a number before adding it to the sku (#671 ) (d7cc487 )
tf2-format: do not modify econ item descriptions when parsing (#794 ) (3578cae )
tf2-format: fall back to full input name when stripped name is cached as an error (#801 ) (6f135d8 )
tf2-format: fall back to full input name when stripped name is not found (#792 ) (8df611e )
tf2-format: fix normalize array reference (#705 ) (a0ac96f )
tf2-format: fix problem parsing items that target C.A.P.P.E.R (428f41e )
tf2-format: fix problem with parsing normal quality econ items (705891c )
tf2-format: fix problem with parsing spelled unusuals (#617 ) (5a29f48 ), closes #616
tf2-format: give paint cans their paint in the gc parser (#814 ) (fb7b795 )
tf2-format: handle edge case with applied war paints on strange items (#622 ) (b90911c ), closes #619
tf2-format: handle edge case with generating name of items with attribute 0 (#635 ) (c5d3ac1 ), closes #620
tf2-format: handle edge case with skins (#621 ) (e43d971 ), closes #618
tf2-format: make free contract rewards untradable (#813 ) (4758d8b )
tf2-format: match tf2 craftable and tradable checks for self-made and temporary items (#803 ) (724d6c2 )
tf2-format: match tf2 craftable and tradable rules in the gc parser (#815 ) (c30dd36 )
tf2-format: name unusuals with a null effect (#790 ) (b62ee09 )
tf2-format: only handle ambiguities with skins (#686 ) (ea75e71 )
tf2-format: only use effect and wear/texture when canonicalizing (f108240 )
tf2-format: parse item quantities/uses (cdb5586 )
tf2-format: parse SKU with only a defindex (#789 ) (076c3d7 )
tf2-format: read the paintkit of war paints from the definition (#808 ) (9ef30f3 )
tf2-format: read what TF2 keeps on the definition in the gc parser (9f2c3c0 )
tf2-format: require can_craft_if_purchased for purchased items to be craftable (#807 ) (802c933 )
tf2-format: return null inputs for backpack.tf items without inputs (#834 ) (927e573 )
tf2-format: sort binary arrays bytewise (#787 ) (96d2ace )
tf2-format: stop reading econ inputs at the end of descriptions (#795 ) (9d0f918 )
tf2-format: throw on unknown econ exteriors (#796 ) (46e4e65 )
tf2-service: return 503 when tf2 backpack is not loaded (d86c612 )
trades.exchange-details -> trades.exchange_details for consistency (ad4605a )
update dependencies (3ae8f1e )
update dependencies (#283 ) (0c988af )
use correct file option for container executor (1fb776c )
use correct id when getting jobs (#717 ) (4dba41d )
use correct paths (de5af48 )
use correct paths (#31 ) (18ca9c2 )
validate config before using it in nestjs storage module (ec8a8b9 )
validate optional environment variable (04277ca )
Build System
add node engines to published packages (#748 ) (decd8d1 )
Code Refactoring
bot-manager: renamed inventory property in inventory response (8acd645 )
bot: centralize file path management (2f9162b )
nestjs-events: remove redis (17bc531 )
tf2-format: don't reuse schema item method names (c6b3edc )
tf2-format: rename amount to quantity for better consistency (73ba2c7 )
Features
add bot-data (8629d53 )
add bptf-manager application (#278 ) (02e37bc )
add custom user agent to all apps (80db41e )
add full path constants for data libs (#309 ) (b1429e5 )
add health checks (566f522 )
add inventories controller (331788d )
add is-steamid-validator (7a0d18d )
add locking config options (f79f5d1 )
add login timeout (98759e8 )
add option to get non-tradable items when loading inventory (#264 ) (2514bf2 ), closes #263
add options to configure lock duration (bda027f )
add prometheus (fbbd111 )
add support for redis sentinels (27595f1 ), closes #452
add swagger (76c4600 )
add tf2 api parser (#682 ) (170875f )
add tf2 controller (7f0c8a8 )
add tf2 module (7e07421 )
add timeout when waiting for web session (0838e93 )
add user agent to all events (7200b2a )
atomic file writes (670efd2 )
bot-manager: add configurable redis key prefix (aec1fac )
bot-manager: add escrow job queue (f8201c4 )
bot-manager: add health checks (9c340a3 )
bot-manager: add heartbeat logging (71f5063 )
bot-manager: add method to fetch inventories (366fcfb )
bot-manager: add methods to better manage inventory and trade queues (d24a29b ), closes #605
bot-manager: add partial item to inventory on tf2 event (426630a ), closes #284
bot-manager: add reason to inventory change event (#272 ) (9a7cbf5 )
bot-manager: add received items to inventories (3bd2030 )
bot-manager: add redis health check (4bf0e25 )
bot-manager: add redis health check (57cd95b )
bot-manager: add refresh trade job type (692244c ), closes #350
bot-manager: add swagger to methods (67c448c )
bot-manager: add tradable only option to fetch inventory method (9fd21f3 )
bot-manager: add tradableOnly query to fetch and get inventory methods (ad08949 )
bot-manager: add ttl query to inventory fetch method (68a2a2d )
bot-manager: always look for active matching offer when creating offers (47bbe16 )
bot-manager: cache escrow error response (85c8730 )
bot-manager: cache inventories (b420db5 )
bot-manager: cache inventory error response (d29d27a )
bot-manager: configure escrow ttl (4f50698 )
bot-manager: configure leader timeouts (#394 ) (b21835a )
bot-manager: cycle bots loading inventory based on attempts made (551205e )
bot-manager: delete bot if no heartbeat is made (#252 ) (f732ec4 ), closes #240
bot-manager: delete bots (85f8f2a )
bot-manager: delete inventory from cache (65bf9e7 )
bot-manager: disable inventory cache ttl (#238 ) (5a15858 )
bot-manager: do check before performing trade action (48538aa )
bot-manager: get all bots (dd53865 )
bot-manager: get and cache escrow (032d1c8 )
bot-manager: get and publish exchange details (7abcab6 )
bot-manager: get escrow using specific bot (1c866d7 )
bot-manager: get inventory (5ac6dcd )
bot-manager: get inventory using specific bot (64c1e88 )
bot-manager: handle trade rollbacks (#265 ) (e2e8744 )
bot-manager: inventory queue (#214 ) (dcce254 )
bot-manager: keep track of assets in active offers (3518a46 )
bot-manager: let inventory jobs outlast a bot backoff (9fe7cf7 )
bot-manager: log missed heartbeats (1a308be )
bot-manager: look for matching offers when countering and create one if no matches (81ac060 )
bot-manager: mark bots as not running instead of deleting them (5c84cd1 )
bot-manager: optional token when countering offers (1fb887c )
bot-manager: publish event when job encounters error (#229 ) (b50df24 )
bot-manager: publish heartbeat events (#249 ) (7eed754 )
bot-manager: publish inventory loaded event (7a86be0 )
bot-manager: publish message when inventory changes (b715a8c )
bot-manager: publish trade completed event (6271c26 ), closes #718
bot-manager: refetch escrow if dto is different than cached (701e81b )
bot-manager: remove items from cached inventories (e84b96a ), closes #82
bot-manager: return ttl when getting cached inventories (3b1ffa0 )
bot-manager: set inventory cache ttl (#237 ) (010b253 ), closes #236
bot-manager: support redis and rabbitmq events (3fb5b8a )
bot-manager: trade queue (#164 ) (dab0d6c )
bot-manager: use idempotency token when creating offers (e26f380 ), closes #530
bot: add active offers metric (bfd9480 )
bot: add asset cache size metric (8bd3fa8 )
bot: add error handling to tf2 tasks (#1 ) (ff84a9b )
bot: add event for when the tf2 schema updates (#417 ) (f1cdf3b )
bot: add friend message and typing events (4667bdc )
bot: add friend relationship event (1b7d912 )
bot: add friend relationship metrics (09dcd4f )
bot: add friends controller (5d1bd91 )
bot: add full poll interval option (2f2b1c1 )
bot: add idempotency checks (62c4b5f ), closes #530
bot: add inventory rate limit settings merge and backoff helpers (b0ad481 )
bot: add items game url to schema events (9af7ba9 )
bot: add method for getting specific trade (ea5ed33 )
bot: add method for getting trades (aca410f )
bot: add method to accept trades (4a395dc ), closes #22
bot: add method to accept trades (#25 ) (8035a73 ), closes #22
bot: add method to confirm trades (ff352bf )
bot: add method to get backpack items (503f0aa )
bot: add method to get steamid64 of bot (e3b6324 )
bot: add method to remove trades (172e21a )
bot: add method to send offers (09a4c89 )
bot: add method to sort backpack (049a861 )
bot: add method to sort backpack (#3 ) (46b0aa8 )
bot: add methods to block user (72a7588 )
bot: add methods to block user (#36 ) (59ce331 )
bot: add methods to check an offer (ab1ee6b )
bot: add methods to send friend messages (33bda35 )
bot: add methods to send friend messages (#15 ) (974facd )
bot: add more trade methods (#27 ) (254b1b5 )
bot: add notification support and clearing endpoint (8ecf147 )
bot: add offer events (68f04b6 )
bot: add optional Redis and inventory rate limit config (ea447cf )
bot: add polldata size metric (28fb50e )
bot: add profile controller (21cf8f0 )
bot: add profile controller (#13 ) (0b81f8d )
bot: add proxy support (577a3fc )
bot: add proxy support (#38 ) (05b4591 )
bot: add query string option to get trade offers from cache (3818fdd )
bot: add RabbitMQ publisher (c36e282 )
bot: add RabbitMQ publisher (#21 ) (2017423 )
bot: add rate limiting and backoff to inventory loading (dafccff )
bot: add reason to health checks (0133370 ), closes #349
bot: add request summary metric (02bdfd8 )
bot: add s3 storage engine (4ff247d )
bot: add s3 storage engine (#37 ) (5f49c24 )
bot: add sent and received offer count metrics (42f3487 )
bot: add steamid64 label to all metrics (ee720bd )
bot: add steamid64 label to all metrics (#59 ) (e2d17e2 )
bot: add swagger for various methods (e762c24 )
bot: add tf2 item events (eb026cb )
bot: add trade protection acknowledgment (b72c66d )
bot: add trade refresh api (782a2a2 )
bot: add trade timing options (b7fdab7 )
bot: add trade timing options (#46 ) (741729f )
bot: add trades controller (#4 ) (6de065e )
bot: add type to events (5e79cb1 )
bot: add username and accountName to Bot interface and service (e461d34 )
bot: add web session check (#384 ) (e8249fe )
bot: add websession api (#359 ) (b8ba153 ), closes #356
bot: become online when logged in to steam (6acd401 )
bot: become online when logged in to steam (#43 ) (6a6a00c )
bot: better handle rate limiting on login (2d6029c )
bot: check if bot-manager is running before starting (61d3153 )
bot: check if item is in backpack before running task (0898b05 )
bot: configure heartbeat interval (#245 ) (9ce2231 )
bot: confirmation needed event (#251 ) (de08223 ), closes #250
bot: connect to the GC when the backpack is asked for without a session (ff5fe77 ), closes #851
bot: control what appids the bot is playing (c738b09 )
bot: deduplicate writes (3274151 )
bot: delete tf2 items (f23f57b )
bot: disable on fatal error (#335 ) (3bb814c )
bot: enable/disable bot-manager (6728f75 )
bot: enable/disable tf2 module (#720 ) (0fe6c90 ), closes #678
bot: exponential backoff when failing to send heartbeat (9e8895c )
bot: get and change trade offer url (812d9c3 )
bot: get API key (#235 ) (d982556 ), closes #234
bot: get escrow duration (8db3c3a )
bot: get offers from cache if recent (253f711 )
bot: get received items (7f5fb0c )
bot: get trade exchange details (94bf1d6 )
bot: improve offer and confirmation publishing (f8749f3 )
bot: improve offer logging (f3a1dc7 )
bot: improve offer logging (#41 ) (5729cbf )
bot: intercept get offer result (1e77123 )
bot: let services delay their Steam community requests (bf93cd9 )
bot: log startup errors (f2aba2d )
bot: log web session (0e935de )
bot: manually set Steam API key (3454f53 )
bot: option to disable polling (15e8d47 )
bot: play custom game (#307 ) (c6094b0 )
bot: poll trades after confirming trade (336f692 )
bot: poll trades after confirming trade (#11 ) (c328ac4 )
bot: publish account limitations (#360 ) (09922f6 ), closes #332
bot: publish data together with metadata (50fa6f3 )
bot: publish events to redis or rabbitmq (8bff63b )
bot: publish sent trades (18acbec )
bot: queue tf2 tasks (f41a897 )
bot: queue writes (2879f16 )
bot: rate limit ensure trades published (#174 ) (c4cc9ae )
bot: reconnect gracefully to Steam (#39 ) (a423ca6 )
bot: reconnect to Steam (c4c5416 )
bot: reconnect to tf2 gc when gained / lost items (499e127 )
bot: reconnect to tf2 gc when gained / lost items (#42 ) (bef1394 )
bot: refresh session on health checks (4bd6a49 )
bot: remove old completed trades from polldata after some time (53917c6 )
bot: return offer after accepting confirmation (3a0a673 )
bot: send heartbeats (a1476a5 )
bot: send heartbeats (#53 ) (cd889e1 )
bot: set custom persona state (63b0f6e ), closes #411
bot: set default game to play using env var (8e6dc6c )
bot: share the Steam inventory rate limit across bots through Redis (a36fcad )
bot: steam connected and disconnected events (bfc0618 )
bot: stop heartbeats when disconnected from Steam (#195 ) (23f2a14 )
bot: stop heartbeats when disconnected from Steam (#195 ) (b73a101 )
bot: use cache when accepting/declining/confirming offers (35b8eea )
bot: use checks before performing action on trade (8f1580e )
bot: use dataloader when getting offers (1121074 )
bot: use tf2 items (cfdb7f9 )
bot: use tokens to log in to Steam (cf7b807 )
bptf-manager: add lock to api calls (f0d23c0 )
bptf-manager: add PUT desired endpoint to replace all desired listings (#775 ) (5ff4de6 )
bptf-manager: check listings when they are changed (37a8192 )
bptf-manager: concurrency (c7cf501 )
bptf-manager: configurable per-token rate limits for backpack.tf requests (#799 ) (e4629a1 )
bptf-manager: get notifications (#292 ) (5a10e87 )
bptf-manager: increase max payload size (#281 ) (b56d598 )
bptf-manager: simpler logs with the account in the log context (#805 ) (b4e7349 )
bptf-manager: update listing if desired does not match current (8e92b38 )
bptf-manager: use batch patch api (1ae2e1d )
create bot-manager (#48 ) (cc92de5 )
create bot-manager app (8c23a03 )
create nestjs-steamid-pipe library (1c2514a )
default to use RabbitMQ for events (af56af6 )
don't share transactional outbox between services (f395b0a )
ensure offer events are published (6ee9f54 )
escrow: get escrow days from the WebAPI with an HTML fallback (086b6fc )
escrow: support querying escrow duration by offerId (#732 ) (2fd9e06 )
events: add circuit breaker to subscribers (#422 ) (22f2d1b )
filter tf2 events (96b2ffb )
improve startup error handling (dae083e )
initial commit (298fc8b )
item-service: add delay option for inventory loading (d47e825 )
item-service: add endpoint to get strange parts by id or name (83a04a6 )
item-service: add item service (#426 ) (5755093 )
item-service: add method to delete schemas (be124e6 )
item-service: add methods for managing prices (#676 ) (59fd2ef )
item-service: add optional time query to select schema (406239a )
item-service: add query option to select items from items_game.txt (a7eafd4 )
item-service: add spell api methods (1f5f3b5 )
item-service: add strange part name to response (521c92f )
item-service: check if schema is consistent (4ea12b9 )
item-service: differentiate checked and updated time for schemas (d9c24f5 )
item-service: fetch an inventory as items with all attributes (054a179 )
item-service: force check and force update schema (a840c3e )
item-service: get items_game.txt (39809d5 )
item-service: get paint by hex color code (fcf307c )
item-service: get schema items paginated (a559bbe )
item-service: get schema metadata (844bfc1 )
item-service: keep track of all saved schemas (dcc4f8a )
item-service: load, parse and cache TF2 inventories (0e27a8f )
item-service: merge items and perfabs before saving (6f48018 )
item-service: publish event when schema is updated (84a9855 )
item-service: redirect the request to download schema overview and items_game.txt (476e253 )
item-service: return a url to download schema overview and items_game.txt (dcf6966 )
item-service: search for prices by base64 encoded item object (#687 ) (bca5641 )
item-service: store schema files by time (7a6c04d )
item-service: store schema overview (dd7c190 )
item-service: use binary format for storing inventory items (348ba40 )
item-service: use item object instead of sku for pricelist (cc59aee )
keep alive timeout settings (0f8d159 )
keep track of heartbeat interval (#246 ) (4926bf0 )
log in to Steam (066edfd )
move message relay into bot-manager (9c96f1f )
nestjs-events: add broadcast support (23631ef )
nestjs-events: use managed channels for most things (4b10b69 )
nestjs-storage: add prefix based on app name (1206ca3 )
nestjs-storage: support deleting files (9b7b883 )
only login when not already (c62fac3 )
otel: add optional OpenTelemetry integration (20804d2 ), closes #805
otel: replace Prometheus metrics with OpenTelemetry (9886879 )
persist steam-user data (efe6f4c )
persist trade data (a8a7f52 )
properly handle spells (#681 ) (27023d6 )
publish validators (#378 ) (ef53864 )
queue: add configurable jitter to retry backoff (#782 ) (cd4225c )
queue: better error handling when waiting for job to finish (1cecfe3 )
queue: run jobs in their own cls context with a ClsWorkerHost (#809 ) (8b12ce5 )
refresh web session when expired (f23bbfe )
reset item notifications on new items (db924d6 )
send bot version to manager (5247a1d )
send counter offers (#207 ) (4262bc7 )
start bot when everything else has started (2484dec )
storage: add method to check if file exists (35690c1 )
storage: make read and write concurrency configurable (#769 ) (d8c473a )
tf2-format: add binary format (#683 ) (1fd76eb )
tf2-format: add bptf listing item parser (4a03e70 )
tf2-format: add bptf listing item parser (#680 ) (8cf0e78 )
tf2-format: add support for paint, sheen and killstreaker for SKU parser (463651a )
tf2-format: add tf2-format library (#476 ) (1490925 )
tf2-format: check if item has attribute (38a6a57 )
tf2-format: generate name of items (2e07055 )
tf2-format: get default item attributes (cf40cf3 )
use transactional outbox (#248 ) (059caf4 )
wait for API key before starting bot (fc73162 )
Performance Improvements
bot: cache offers internally (c3dc61b )
bot: cache storage read calls (1b93b60 )
bot: cache storage read calls (#10 ) (e5c5a27 )
bptf-manager: don't lock listings (7a5fffa )
bptf-manager: remove lock from refreshing listings (783ed70 )
bptf-manager: reuse mapped listings (ce02a1f )
item-service: store all spells in the same location (4cae267 )
replace json data encoding and decoding with message pack (#423 ) (7328e41 )
tf2-format: avoid copying attribute buffers in the tf2 gc parser (#832 ) (0de042e )
tf2-format: check for a parenthesis before the craftable lookup (#847 ) (91ab2e8 )
tf2-format: encode binary array elements once when sorting (#822 ) (6ef0488 )
tf2-format: encode binary items in one pass without copying (#849 ) (6cf30eb )
tf2-format: look up binary field names in an array (#850 ) (02d07dc )
tf2-format: parse econ wiki defindex with regex and skip empty async lookups (#818 ) (1da9e9d )
tf2-format: read tradable after date in the tf2 gc attribute loop (#841 ) (6360b8a )
tf2-format: reuse one buffer for tf2 api attribute values (#848 ) (4d32f58 )
tf2-format: skip attribute parsing for skus without attributes (#819 ) (8e786e0 )
tf2-format: skip empty lookups when parsing backpack.tf items (#831 ) (48bb021 )
tf2-format: switch binary format from cbor to cbor-x (#821 ) (b5d87f3 )
Reverts
accidentally committed pending work (afe32fa )
Revert "fix: don't attempt to release an already expired lock" (59a8e2d )
revert 734 (#735 ) (ae0f0cd )
BREAKING CHANGES
published packages now declare node 24 in engines
item-service: Existing schemas are no longer compatible
Renamed TF2GC parser and changed how strange parts are
stored by item-service.
Spells are handled differently by item-service and
tf2-format.
tf2-format: Renames getItemByDefindex into getSchemaItemByDefindex and
getItemsGameItemByDefindex.
tf2-format: Rename amount to quantity.
bot-manager: New bot-manager API methods for checking escrow.
bot-manager: New API method for adding/removing job to/from the inventory queue.
bot: Organize bot files into shared and account specific directories
nestjs-storage: File paths have changed
nestjs-events: Dropped support for Redis events
bot-manager: Renamed inventory items property in inventory responses from inventory to
items.
All existing data stored in redis has to be removed to
ensure that no unexpected errors will happen when decoding
Because the keys have changed all existing data in
redis will no longer be used
Removed the message-relay application as it is no longer needed
bot: New environment variables for choosing how to publish events
bot-manager: Inventory items can be partial and only consist of an appid, contextid and assetid
bot-manager: Renamed RabbitMQ queue
"bot-manager.add-inventory-items" to
"bot-manager.update-inventory-items"
bot-manager: HTTP status code 409 if a job already exists for a specific trade offer
Some events require the new message-relay application
to run in order to be
published
bot-manager: In order to load an inventory, you need to add it to
the queue and wait for it to
be fetched.
You can’t perform that action at this time.