Skip to content

v4.0

Choose a tag to compare

@mkmccarty mkmccarty released this 16 Feb 04:25
· 3086 commits to main since this release
2709cae

What's Changed

  • ✨ Add version metadata to the application 📦 by @mkmccarty in #459
  • ✨ Upgrade genproto to the latest version by @mkmccarty in #460
  • ⚙️ Refactor: Update disableStartContract logic by @mkmccarty in #461
  • 🔄 Refactor contract settings handling and message creation by @mkmccarty in #462
  • ✨ Update contract state and disable start button when necessary by @mkmccarty in #463
  • ⚡️ Refactor: Improve logic for setting current banker based on contract style. by @mkmccarty in #464
  • ✨ Remove speedrun contract check in Unboost func by @mkmccarty in #465
  • ✨ Remove unused error message definition by @mkmccarty in #466
  • ✨ Add arrow emoji to token time boost display by @mkmccarty in #467
  • ⚙️ Fix boost list display and contract data calculation by @mkmccarty in #468
  • ✨ Add : Add clickable URL to token tracking description by @mkmccarty in #469
  • ⚙️ Refactor: Improve formatting in HandleEstimateTimeCommand by @mkmccarty in #470
  • ✨ Refactor estimate time message handling by @mkmccarty in #471
  • 🔄 Change handler buttons' labels for Sink Boosts to Sink First or Last by @mkmccarty in #472
  • ✨ Add functionality to create threads for contracts by @mkmccarty in #473
  • ✨ Upgrade Google Auth, Auth OAuth2Adapt, Compute Metadata, and Longrunning versions to latest releases. by @mkmccarty in #474
  • 🔧 Refactor: Updated user channel permissions method to use session state. by @mkmccarty in #475
  • 🔧 Fix UserChannelPermissions function calls in commands. by @mkmccarty in #476
  • 🩹 Update thread name with single digit hour bug fix by @mkmccarty in #477
  • ⚙️ Refactor: Update token tracking calculation logic and display in embed by @mkmccarty in #478
  • ✨ feat(boost): Add functionality to rename contract thread by @mkmccarty in #479
  • ✨ Update thread name variables for better readability and consistency by @mkmccarty in #480
  • 🐛 Fix thread name abbreviation variable name error by @mkmccarty in #481
  • ✨ Update: Update variable description in thread name builder. by @mkmccarty in #482
  • ✨ Add thread option in contract settings by @mkmccarty in #483
  • ✨ Fix: Disable sink update during signup for CRT contracts. by @mkmccarty in #484
  • ⏩ Simplify contract addition logic and improve user voting experience by @mkmccarty in #485
  • GitButler WIP Commit by @mkmccarty in #486
  • ✨ Add Coop ID to Token Metadata by @mkmccarty in #487
  • 🔧 Fix incorrect assignment of start time info string by @mkmccarty in #488
  • GitButler WIP Commit by @mkmccarty in #490
  • GitButler WIP Commit by @mkmccarty in #491
  • feat: 🎨 Show current thread name in command output by @mkmccarty in #492
  • 🐛 Fix thread name display in builder by @mkmccarty in #493
  • ✨ Update thread.go to improve formatting of thread name display by @mkmccarty in #494
  • 🩹 Fix conditional checks for input.Value in HandleTrackerEdit. by @mkmccarty in #495
  • GitButler WIP Commit by @mkmccarty in #496
  • GitButler WIP Commit by @mkmccarty in #497
  • GitButler WIP Commit by @mkmccarty in #498
  • 🚀 Add discord timestamp placeholders in tracker edit and token edit. by @mkmccarty in #499
  • 🔧 Remove unused imports and commented-out function in artifacts.go by @mkmccarty in #500
  • ✨ Remove seconds from total duration placeholder after rounding to minute. by @mkmccarty in #501
  • ✨ refactor: Update thread creation logic in HandleContractCommand. by @mkmccarty in #502
  • ✨ Improve thread creation logic in HandleContractCommand. by @mkmccarty in #503
  • ✨ Add function to get and set bookmark links 📚. by @mkmccarty in #504
  • ✨ Bump go-openai version to v1.27.0 🚀 by @mkmccarty in #505
  • 🔧 Remove special characters from egg name and update egg emoji and contract ID. by @mkmccarty in #508
  • Remove invalid character in emoji name by @mkmccarty in #509
  • 🚧 Fix JoinContract method to prevent double draw of contract list. by @mkmccarty in #510
  • ✨ Updated creator assignment logic and disallowed bot from starting contract. by @mkmccarty in #511
  • ✨ Add estimated duration for shipping contract. by @mkmccarty in #512
  • stones-command-feature-branch by @mkmccarty in #513
  • ✨ feat(stones): Add optional details flag to DownloadCoopStatusStones commit. by @mkmccarty in #514
  • ✨ Update miscellaneous settings string value if changed. by @mkmccarty in #518
  • Bump github.com/moby/moby from 27.0.3+incompatible to 27.1.1+incompatible by @dependabot in #515
  • Bump github.com/sashabaranov/go-openai from 1.27.0 to 1.27.1 by @dependabot in #516
  • Bump google.golang.org/api from 0.188.0 to 0.189.0 by @dependabot in #517
  • ✨ Update expiration time to 2 minutes for downloaded coop status. by @mkmccarty in #519
  • ✨ refactor: Remove unnecessary code and comments in DownloadCoopStatusStones function. by @mkmccarty in #520
  • farm-population-feature by @mkmccarty in #521
  • 🔥 Remove hard coded value for college ELR in DownloadCoopStatusStones. by @mkmccarty in #522
  • ✨ Adjust minimum college ELR value to 1.00 to prevent invalid values. by @mkmccarty in #523
  • ✨ Update google.golang.org/genproto/googleapis packages versions. by @mkmccarty in #524
  • 🚀 Fix changing speedrun CRT sink for banker role on button press. by @mkmccarty in #525
  • 🔨 Refactor: Optimize changing sink user ID logic. by @mkmccarty in #526
  • ✨ Add feature: Update notes variable in DownloadCoopStatusStones function. by @mkmccarty in #527
  • ✨ Add new instructions for associating alts in boost channel. by @mkmccarty in #528
  • 🔧 Refactor boost stones function to remove unused variable and update notes logic. by @mkmccarty in #529
  • ✨ Refactor stones download method to calculate end time of contract. by @mkmccarty in #530
  • 🚀 Add Estimated End Time to Contract. by @mkmccarty in #531
  • ✨ Adjust headers based on skipArtifact flag. by @mkmccarty in #532
  • ✨ Add functionality to adjust deflector percent based on egg laying rate. by @mkmccarty in #533
  • 🔒 Update OAuth2 and Sys dependencies. by @mkmccarty in #534
  • 🔧 Fix error logging in boost notifications. by @mkmccarty in #535
  • ✨ Refactor(contract): Simplify create contract function. by @mkmccarty in #536
  • Remove contract old contract reaction icons. These were replaced with buttons. by @mkmccarty in #537
  • ✨ Update dependencies version to match requirements. by @mkmccarty in #538
  • ✨ Adjust max number of alt icons to 5 per row. by @mkmccarty in #539
  • ✨ Add feature: enhanced stone handling and deflector notes. by @mkmccarty in #540
  • 🔧 Update statusStr to be in uppercase when it's "Full" in generateThreadName. by @mkmccarty in #541
  • ⬆️ Update go-openai to v1.28.0 and google.golang.org/api to v0.191.0. by @mkmccarty in #542
  • ✨ Increase number of previously boosted items displayed in contract boost list. by @mkmccarty in #543
  • 🐞 Fix index decrement in removeReceivedToken function. by @mkmccarty in #544
  • ✨ Add timer command to set a reminder for a contract - Adds a new timer command to set a reminder for a contract in a Discord channel. by @mkmccarty in #545
  • ✨ Bumped mongo-driver version to v1.16.1 and updated dependencies. by @mkmccarty in #546
  • 🔄 Refactor timer variable names and save data after setting timer. by @mkmccarty in #547
  • 🚀 Launch reminder timers for active contracts. by @mkmccarty in #548
  • ✨ Improve: Refactor time calculation for next reminder timer. by @mkmccarty in #549
  • ⚙️ Update model to gemini-1.5-flash in getStringFromGoogleGemini. by @mkmccarty in #550
  • ✨ Update google.golang.org/genproto version to 0.0.0-20240812133136 👩‍🔧 by @mkmccarty in #551
  • 🐛 Fix issue with user channel creation and message sending. by @mkmccarty in #552
  • refactor: Refactor timer handling to use duration and message variables and improve timer duration parsing. by @mkmccarty in #553
  • refactor(timer): Update parameter name to "timer" and refactor handling in timer command by @mkmccarty in #554
  • refactor(timer): Rename "timer" option to "duration" in timer commands. by @mkmccarty in #556
  • refactor(boost): Rename contract-related structs to be more generic and use independent timers. by @mkmccarty in #557
  • refactor: Update timer state by ID to activate or deactivate timers. by @mkmccarty in #558
  • refactor: Display user-specific timers when setting a new timer. by @mkmccarty in #559
  • build: Update go version to 1.23 and moby version to v27.1.2 by @mkmccarty in #560
  • feat: Update cloud.google.com/go/auth version to v0.8.1 by @mkmccarty in #561
  • build: Update golangci-lint to v1.60.1 and refactor boost contract messages. by @mkmccarty in #562
  • update-artifact-command by @mkmccarty in #563
  • refactor(boost): Update artifact descriptions for 5% Shipping. by @mkmccarty in #564
  • refactor: Update component Emoji IDs for consistency across artifacts. by @mkmccarty in #565
  • build: Remove unnecessary parenthesis in Carbon Fiber description. by @mkmccarty in #566
  • feat: Add EggIncContract and EggEmojiMap data to hold Egg Inc contract information and emojis respectively by @mkmccarty in #567
  • feat: Update artifact components emojis by @mkmccarty in #568
  • feat(boost): Update artifacts menu with global artifacts by @mkmccarty in #569
  • feat(boost): Update Boost order description by @mkmccarty in #570
  • refactor: Update description for ELR Order in getSignupContractSettings by @mkmccarty in #571
  • refactor: Change key name from "T2R" to "T2E" in gussett map by @mkmccarty in #572
  • feat: Add NONE quality artifacts for Deflectors, Metronomes, Compasses, and Gussets by @mkmccarty in #573
  • refactor: Update handling of button reactions in HandleContractReactions by @mkmccarty in #574
  • feat(boost): Check if contract is ELR for Boost order by @mkmccarty in #575
  • build(deps): Bump google.golang.org/api from 0.191.0 to 0.192.0 by @dependabot in #576
  • build(deps): Bump github.com/sashabaranov/go-openai from 1.28.1 to 1.28.2 by @dependabot in #577
  • feat: Update interaction responses to use deferred message update and ephemeral messages by @mkmccarty in #578
  • feat: Update google.golang.org/genproto/googleapis versions by @mkmccarty in #579
  • chore: Update google.golang.org/api to v0.193.0 by @mkmccarty in #580
  • feat: Add functionality to refresh boost list components when contract is completed by @mkmccarty in #581
  • refactor: Add error handling to UpdateThreadName and use goroutine for UpdateThreadName in ReactionAdd. by @mkmccarty in #582
  • build: Update Go version to 1.23 and google.golang.org/genproto versions. by @mkmccarty in #583
  • feat: Add functionality to calculate token values for running contracts by @mkmccarty in #584
  • feat(boost): Add functionality to update and edit original response URL in coop token value command by @mkmccarty in #585
  • feat: Pin message when coop token value command is handled by @mkmccarty in #586
  • fix: Remove unnecessary assignment in HandleCoopTvalCommand by @mkmccarty in #587
  • feat: Improve handling of booster names and values in CoopTval command. by @mkmccarty in #588
  • feat: Simplify table headers and handle booster name correctly in HandleCoopTvalCommand by @mkmccarty in #589
  • feat: Add timestamp to display update time in HandleCoopTvalCommand. by @mkmccarty in #590
  • feat(bottools): Add slash command to remove bot message from DM channel by @mkmccarty in #591
  • refactor(boost_cooptval): Simplify updated timestamp message in HandleCoopTvalCommand by @mkmccarty in #592
  • refactor: Comment out unused code and streamline artifact handling by @mkmccarty in #593
  • feat: Update contract with estimated duration and end time by @mkmccarty in #594
  • refactor: Update default values based on contract style in getSignupContractSettings by @mkmccarty in #595
  • build(deps): Bump github.com/sashabaranov/go-openai from 1.28.2 to 1.29.0 by @dependabot in #597
  • build(deps): Bump github.com/rs/xid from 1.5.0 to 1.6.0 by @dependabot in #596
  • feat: Update OpenTelemetry to v1.29.0 and related modules to latest versions by @mkmccarty in #598
  • feat: Add new artifact NONE and initialize mySet.Artifacts array with length 4 by @mkmccarty in #599
  • build: Increase size of Artifact slice to 5 items, print artifact data by @mkmccarty in #600
  • feat: Update FollowupMessageCreate condition in HandleCoopTvalCommand by @mkmccarty in #601
  • refactor: Fix artifact retrieval bug and refresh user's artifact set by @mkmccarty in #602
  • refactor: Refactor getUserArtifacts function in boost.go for better readability and efficiency by @mkmccarty in #603
  • feat(boost): Improve stone variations for solo report by @mkmccarty in #604
  • fix: Fix condition in DownloadCoopStatusStones for soloName matching by @mkmccarty in #605
  • feat(boost): Add stones auto complete feature for contracts. by @mkmccarty in #606
  • refactor: Improve stone autocomplete search limit to 10 items by @mkmccarty in #607
  • feat: Add functionality to set message ID for timers. by @mkmccarty in #608
  • refactor: Update contract creator IDs and limit displayed user names to 12 characters by @mkmccarty in #609
  • refactor(boost_calctval): Update name truncation to include ellipsis by @mkmccarty in #610
  • feat(boost): Add Firework and Waterballoon artifacts in select menu by @mkmccarty in #611
  • refactor: Add safety check for nil Colleg object before appending to set by @mkmccarty in #612
  • refactor: Update string formatting in HandleJoinCommand to show boost tokens by @mkmccarty in #613
  • feat(boost): Change sink boost position to follow the order and update contract settings. by @mkmccarty in #614
  • refactor: Update Waterballoon quality from 5% to 95% for research cost. by @mkmccarty in #615
  • feat: Update google.golang.org/api to v0.195.0 and google.golang.org/grpc to v1.66.0 by @mkmccarty in #616
  • feat: Add Chocolate and Easter emojis and artifacts to the game by @mkmccarty in #617
  • feat: Update artifact emojis IDs for T3R, T3C, T3E, T4C, T4L, and T4E boost components. by @mkmccarty in #618
  • refactor: Update Token and Egg Emoji assignment logic by @mkmccarty in #619
  • refactor: Updated artifact emojis and names for clarity. by @mkmccarty in #620
  • feat: Update artifact emojis ID for MT4Ea and MT4Ra components by @mkmccarty in #621
  • feat(launch): Improve ship display in launch output by @mkmccarty in #622
  • build(deps): Bump github.com/sashabaranov/go-openai from 1.29.0 to 1.29.1 by @dependabot in #623
  • ci: Update cloud.google.com/go/auth to v0.9.2 by @mkmccarty in #624
  • feat: Implement privacy setting for user data by @mkmccarty in #625
  • feat: Save stats only once in contract state change and contract finish functions by @mkmccarty in #626
  • feat: Update BoostedOrder on contract completion and boosting operations by @mkmccarty in #627
  • refactor: Update ship images in missionJSON with new emojis by @mkmccarty in #628
  • refactor: Update DevID field in EggEmojiMap entries by @mkmccarty in #629
  • refactor: Remove unused discordgo-emoji-util package and related functions by @mkmccarty in #630
  • refactor: Remove unnecessary comment and cleanup code in privacy command handler. by @mkmccarty in #631
  • feat: Handle multiple farmers in join command and set tokens individually by @mkmccarty in #632
  • build: Update google.go/auth version to v0.9.3 and genproto versions to latest commit hashes. by @mkmccarty in #633
  • refactor: Only set tokens for guests if tokenWant is not 0 by @mkmccarty in #634
  • style: Update start boost label to "Start Boost List" based on contract style. by @mkmccarty in #635
  • build: Update google.golang.org/api to v0.196.0 by @mkmccarty in #636
  • build(deps): Bump github.com/moby/moby from 27.2.0+incompatible to 27.2.1+incompatible by @dependabot in #637
  • feat: Add validation for Coop ID input field and updated error handling in HandleTokenEdit function by @mkmccarty in #638
  • feat: Calculate tango legs when CRt contract is signed up. by @mkmccarty in #639
  • refactor: Rename qTargetAmount to QTargetAmount and update references in code. by @mkmccarty in #640
  • refactor: Remove unnecessary code block for setting CoopID and improve embed field logic by @mkmccarty in #641
  • feat: Store user privacy setting in database by @mkmccarty in #642
  • token-value-last-5-offset-fix by @mkmccarty in #643
  • refactor(ei): Update struct name from TokenUnitLog to ei.TokenUnitLog by @mkmccarty in #644
  • feat: Update token autocompletion function names by @mkmccarty in #645
  • feat(artifacts): Update Chocolate quality to 3x for earnings. by @mkmccarty in #646
  • feat: Add condition to track received tokens for specific user ID by @mkmccarty in #647
  • refactor: Improve token tracking in HandleTokenEditCommand by @mkmccarty in #648
  • refactor: Define str variable once, use shorthand assignment (#1234) by @mkmccarty in #649
  • build(deps): Bump github.com/sashabaranov/go-openai from 1.29.1 to 1.29.2 by @dependabot in #650
  • build(deps): Bump github.com/google/generative-ai-go from 0.17.0 to 0.18.0 by @dependabot in #651
  • build(deps): Bump google.golang.org/api from 0.196.0 to 0.197.0 by @dependabot in #652
  • refactor: Rename HandleTokenEditCommand to HandleTokenEditTrackCommand, update variable names, and add action and type for modification of token count. by @mkmccarty in #653
  • feat: Implement ContractTokenUpdate function by @mkmccarty in #654
  • feat: Add ultra emoji based on DiscordAppID value by @mkmccarty in #655
  • chore: Update cloud.google.com/go/auth, cloud.google.com/go/compute/metadata, by @mkmccarty in #656
  • GitButler WIP Commit by @mkmccarty in #657
  • refactor: Simplify ping message logic for token sending by @mkmccarty in #658
  • refactor: Add ultra icon to mission messages for visual distinction. by @mkmccarty in #659
  • refactor: Reorder ultra icon placement and event message in HandleLaunchHelper by @mkmccarty in #660
  • build: update github.com/klauspost/compress to v1.17.10 in go.mod and go.sum files by @mkmccarty in #661
  • feat: Implement Token Value based booster ordering by @mkmccarty in #662
  • refactor: Remove reorder function call on bag send for stability by @mkmccarty in #663
  • feat: Update ELR icon based on Discord app ID in signup contract settings. by @mkmccarty in #664
  • feat: Display different rates based on contract state in boost list by @mkmccarty in #665
  • refactor: Adjust current booster state to always start as Unboosted on reorder. by @mkmccarty in #666
  • refactor: Introduce IsDevBot function to handle configuration checks by @mkmccarty in #667
  • feat(botemoji): Add emoji data and map for bot components by @mkmccarty in #668
  • chore: Update button reactions and BotEmojiMap symbols by @mkmccarty in #669
  • refactor: Remove unused code for adding contract reactions and optimizing speedrun reactions. by @mkmccarty in #670
  • feat: Add new data download and load functions for Egg, Inc.'s AFX data and config. by @mkmccarty in #671
  • feat(boost): Simplify condition for adding artifact note in stones download function by @mkmccarty in #672
  • refactor(boost): Update output formatting in DrawBoostList function by @mkmccarty in #673
  • feat: Add TPM Rate calculation to boost display by @mkmccarty in #674
  • feat(boost): Update boost calculation output message. by @mkmccarty in #675
  • feat(boost button): Increase iconsRow length to display more icons. by @mkmccarty in #676
  • refactor: Improve TVal order and boost strategy in Banker contract placement by @mkmccarty in #677
  • refactor: Add new dynamic tokens contract flag and update constant names. by @mkmccarty in #678
  • build: Update go.mongodb.org/mongo-driver to v1.17.1 by @mkmccarty in #679
  • feat: Add dynamic boost token selection in contract settings by @mkmccarty in #680
  • feat: Update contract settings UI to include optional features instead of dynamic tokens. Fix handling of optional features in contract settings reactions. by @mkmccarty in #681
  • ci(deps): Update golang.org/x/sys, golang.org/x/text, and golang.org/x/time by @mkmccarty in #682
  • feat: Add length in seconds to contract data by @mkmccarty in #683
  • feat: Enhance launch helper message display efficiency by @mkmccarty in #684
  • dynamic-token-data-update by @mkmccarty in #685
  • refactor: Add logic to determine dynamic tokens in boost system by @mkmccarty in #686
  • feat: Increase max values for artifacts select menu to 6 by @mkmccarty in #687
  • feat(boost): Add ⭐️ to indicate best values in solo data and change table header of percentage by @mkmccarty in #688
  • fix: Ensure contractID and coopID are correctly assigned in HandleTeamworkEvalCommand by @mkmccarty in #689
  • build: Update google.golang.org/api to v0.200.0 and google.golang.org/protobuf to v1.35.1 by @mkmccarty in #690
  • fix: Switched handle method for Stones auto-complete from Contract to Stones. by @mkmccarty in #691
  • feat: Add conditional check for einame in DownloadCoopStatus function by @mkmccarty in #692
  • feat: Add shipping rate note to stones download function by @mkmccarty in #693
  • feat: Calculate and display SIAB equipment suggestion after calculating Teamwork Score and BuffValue. by @mkmccarty in #694
  • refactor: Adjust SIAB time calculation in DownloadCoopStatus function by @mkmccarty in #695
  • fix: Correct path in UnmarshalJSON and Descriptor methods in ei.pb.go by @mkmccarty in #696
  • build: add missing protobuf file to project by @mkmccarty in #697
  • feat(boost): Add MostRecentDuration to calculate SIAB equip time in teamwork segment. by @mkmccarty in #698
  • refactor(boost): Update SIAB calculations in teamwork download function by @mkmccarty in #699
  • build: Update go-openai to v1.32.1 and otel dependencies to v0.56.0 by @mkmccarty in #700
  • feat: Improve embed handling in HandleTeamworkEvalCommand by @mkmccarty in #701
  • fix: Remove redundant information in the note for artifact sets by @mkmccarty in #702
  • refactor: Adjust table formatting in DownloadCoopStatus function by @mkmccarty in #703
  • feat: Improve condition for BestSIAB calculation in DownloadCoopStatus by @mkmccarty in #704
  • refactor: Update google.golang.org/api to v0.201.0 and go-openai to v1.32.2 by @mkmccarty in #705
  • feat: Add contract modifiers to data loading and display by @mkmccarty in #706
  • build: Update google.golang.org/genproto dependencies to latest versions by @mkmccarty in #707
  • refactor: Improve boosters ordering logic and handle completion edge cases. by @mkmccarty in #708
  • refactor: Modify coop deflector value calculation for better accuracy by @mkmccarty in #709
  • When Banker boosts first and hasn't boosted yet, don't move the BoostPosition by @mkmccarty in #710
  • refactor: Update Google model to gemini-1.5-flash-8b in getStringFromGoogleGemini by @mkmccarty in #711
  • refactor: Handle showing boosted numbers efficiently by @mkmccarty in #712
  • feat: Increase time threshold for completed contract display to 15 minutes by @mkmccarty in #713
  • chore: Update go-openai dependency to v1.32.5 by @mkmccarty in #714
  • fix: update timestamp format in teamwork messages by @mkmccarty in #715
  • refactor: remove unused token tracking variables by @mkmccarty in #716
  • refactor: simplify artifact command handling and clean up code by @mkmccarty in #717
  • chore(deps): update google.golang.org/api to v0.204.0 by @mkmccarty in #718
  • fix: correct variable name from finalname to filename by @mkmccarty in #719
  • feat: refactor dynamic token calculation logic by @mkmccarty in #720
  • chore: update googleapis genproto dependencies by @mkmccarty in #721
  • chore(deps): update dependencies to latest versions by @mkmccarty in #722
  • feat: enhance stone status output handling by @mkmccarty in #723
  • feat: add support for 6 and 8 token boosts by @mkmccarty in #724
  • feat: adjust token count based on contract style by @mkmccarty in #725
  • fix: update descriptions for token boost options by @mkmccarty in #726
  • feat(boost): conditionally set tokens based on contract style by @mkmccarty in #727
  • feat: add Lithium artifact and update related components by @mkmccarty in #728
  • fix: update default value for Lithium artifact by @mkmccarty in #729
  • fix: correct Lithium description in artifacts by @mkmccarty in #730
  • feat: add script to create animated emojis from PNGs by @mkmccarty in #731
  • chore(deps): update dependencies in go.sum file by @mkmccarty in #732
  • build(deps): bump google.golang.org/api from 0.205.0 to 0.206.0 by @dependabot in #733
  • refactor: update deflector handling in DownloadCoopStatusStones by @mkmccarty in #734
  • fix: update deflector abbreviation format in stones.go by @mkmccarty in #735
  • feat: update banker state when setting boosting sink by @mkmccarty in #736
  • fix(deps): update longrunning, go-openai, and api versions by @mkmccarty in #737
  • fix: update message type indices in ei.pb.go for consistency by @mkmccarty in #738
  • GitButler WIP Commit by @mkmccarty in #739
  • chore: update google.golang.org/api to v0.208.0 by @mkmccarty in #740
  • feat(build): add protobuf generation to Makefile for Go source by @mkmccarty in #741
  • feat: implement GetEggIncEvents function for API calls by @mkmccarty in #742
  • refactor: update protobuf definitions for consistency and clarity by @mkmccarty in #743
  • chore(deps): update num2words and google.api dependencies by @mkmccarty in #744
  • fix: correct value calculations for sent and received tokens by @mkmccarty in #745
  • fix: correct spelling of 'LinkReceived' in track.go by @mkmccarty in #746
  • fix: correct token value calculation in tracking logic by @mkmccarty in #747
  • chore(deps): update groupcache to v0.0.0-20241129210726-2c02b8208cf8 by @mkmccarty in #748
  • Fix response when changing the coordinator. by @mkmccarty in #749
  • chore(deps): update go-openai version 1..0 by @mkmccarty in #750
  • refactor: replace hardcoded user IDs with config values by @mkmccarty in #751
  • Added live updates to the config.json file by @mkmccarty in #752
  • chore: update dependencies to latest versions in go.mod by @mkmccarty in #753
  • feat: update contract handling and add versioning support by @mkmccarty in #754
  • feat: skip archiving active signup contracts before expiration by @mkmccarty in #755
  • refactor: simplify HTTP request creation in tasks.go by @mkmccarty in #756
  • fix: replace log.Fatal with log.Print and return in LoadContractData and LoadEventData functions to prevent application crash on error by @mkmccarty in #757
  • refactor: remove unused launch package and related code by @mkmccarty in #758
  • refactor: replace global event variables with local copies by @mkmccarty in #759
  • fix: correct minutes calculation in event duration display by @mkmccarty in #760
  • build(deps): bump google.golang.org/api from 0.209.0 to 0.210.0 by @dependabot in #761
  • fix: update Expires header to prevent caching issues by @mkmccarty in #762
  • chore(deps): update indirect dependencies in go.mod and go.sum by @mkmccarty in #763
  • feat: add custom egg handling and improve event logging by @mkmccarty in #764
  • feat: add GameDimension string representation and cron jobs by @mkmccarty in #765
  • feat(events): implement Egg Inc events retrieval and processing by @mkmccarty in #766
  • refactor: rename newEggIncEvents to currentEggIncEvents by @mkmccarty in #767
  • feat: implement PopulateContractFromProto function to enhance contract data loading from protobuf by @mkmccarty in #768
  • refactor: streamline contract population and event fetching logic by @mkmccarty in #769
  • fix(tasks): correct minuteTimes format and remove unused checks by @mkmccarty in #770
  • feat: add season rewards and update contract season info by @mkmccarty in #771
  • feat: update cron job for daily Egg Inc data retrieval by @mkmccarty in #772
  • refactor: streamline contract loading and enable custom eggs download by @mkmccarty in #773
  • refactor: comment out log statement for target amount check by @mkmccarty in #774
  • feat: enhance contract handling and logging in periodicals by @mkmccarty in #775
  • chore(deps): update OpenTelemetry and related dependencies to latest versions by @mkmccarty in #776
  • feat: add contract duration constants and update logic by @mkmccarty in #777
  • fix: simplify condition for legacy contract start time by @mkmccarty in #778
  • feat(config): update configuration to include FeatureFlags and adjust file paths by @mkmccarty in #779
  • feat: add dynamic contract style options for boosts and CRTs by @mkmccarty in #780
  • feat: conditionally add SlashFunCommand based on flags by @mkmccarty in #781
  • feat: add configuration files and update README for setup by @mkmccarty in #782
  • docs: migrate configuration from config.md to.md by @mkmccarty in #783
  • Emoji images used by the bot. by @mkmccarty in #784
  • chore: update discordgo dependency to latest version by @mkmccarty in #785
  • docs: add README for Boost Bot application emoji directory by @mkmccarty in #786
  • docs: update README to change header level for clarity by @mkmccarty in #787
  • feat(emoji): add new emoji entries with download URLs by @mkmccarty in #788
  • refactor: sort keys in a case-insensitive manner by @mkmccarty in #789
  • feat: add icon_chicken_run emoji to bot emoji map by @mkmccarty in #790
  • refactor: simplify speedrun message formatting by @mkmccarty in #791
  • refactor: simplify estimate time output formatting by @mkmccarty in #792
  • feat: add new emojis for trophy and hab_full in bot map by @mkmccarty in #793
  • feat: add dynamic token data and enhance contract structure by @mkmccarty in #794
  • fix: update condition for repositioning sink boost position by @mkmccarty in #795
  • feat: addBotEmojiMarkdown function for emoji handling by @mkmccarty in #796
  • chore(deps): update dependencies to latest versions for stability by @mkmccarty in #797
  • refactor: rename artifact variables for clarity and consistency by @mkmccarty in #798
  • feat: enhance boost status display and duration estimation by @mkmccarty in #799
  • refactor: replace emoji handling in button reactions by @mkmccarty in #800
  • refactor: update chicken run emoji references by @mkmccarty in #801
  • feat: add egg image import and emoji creation functionality by @mkmccarty in #802
  • fix: update BotEmojiMap with new icon_chicken_run IDs by @mkmccarty in #803
  • fix: handle error for image decoding in ImportEggImage function by @mkmccarty in #804
  • feat: update protobuf version and add verification count field by @mkmccarty in #805
  • refactor: remove TokenReactionStr and simplify emoji handling by @mkmccarty in #806
  • feat: add emote management functionality and refactor code by @mkmccarty in #807
  • refactor: replace emoji retrieval with a unified method by @mkmccarty in #808
  • feat: enhance custom egg handling and sorting logic by @mkmccarty in #809
  • feat: add function to convert float64 slice to string slice by @mkmccarty in #810
  • fix: update periodical description to use egg.Description by @mkmccarty in #811
  • refactor: update egg description and remove unused variable by @mkmccarty in #812
  • refactor: unused float64SliceToString function by @mkmccarty in #813
  • fix: set changed flag to true and remove debug log statement by @mkmccarty in #814
  • fix(deps): update go-openai to version 1.36.1 by @mkmccarty in #815
  • refactor: replace hardcoded icons with emoji function calls by @mkmccarty in #816
  • chore: update googleapis genproto dependencies to latest version by @mkmccarty in #817
  • refactor: update contract handling to support grades by @mkmccarty in #818
  • refactor: remove unused EggEmojiData and related functions by @mkmccarty in #819
  • refactor: update contract grade handling in status reports by @mkmccarty in #820
  • refactor: update estimate time command output format by @mkmccarty in #821
  • feat: add contexts and integration types to command evaluation by @mkmccarty in #822
  • refactor: rename EstimatedDurationShip to EstimatedDurationLower by @mkmccarty in #823
  • fix: normalize eggOrig to lowercase for emoji lookup by @mkmccarty in #824
  • feat: add support for animated emojis in emoji handling by @mkmccarty in #825
  • feat(timer): implement mutex for timer management and cleanup by @mkmccarty in #826
  • feat: add timestamp to Discord message embed and adjust cache expiration by @mkmccarty in #827
  • fix: update event message to include 'ends' in output by @mkmccarty in #828
  • refactor: rename EggIncContract to ContractGrade for clarity by @mkmccarty in #829
  • feat: update stone matching and rate calculations by @mkmccarty in #830
  • fix: update artifact percent levels for accuracy in calculations by @mkmccarty in #831
  • fix: update emoji formatting in HandleEstimateTimeCommand function by @mkmccarty in #832
  • refactor: comment out unused code in DownloadCoopStatusStones function by @mkmccarty in #833
  • feat: add contract grade emoji to estimate time command output by @mkmccarty in #834
  • feat: update contract grade display with bot emoji markdown by @mkmccarty in #835
  • feat: add missing stones note and update stone arrays size by @mkmccarty in #836
  • feat: add generous gift event handling and calculations by @mkmccarty in #837
  • feat: enhance boost list display with emoji indicators by @mkmccarty in #838
  • refactor: remove unused emoji contract grade image file by @mkmccarty in #839
  • feat: add research completion checks for user rates calculation by @mkmccarty in #840
  • feat(vehicles): add vehicle types and shipping capacity logic by @mkmccarty in #841
  • feat: add offline status tracking to artifactSet struct by @mkmccarty in #842
  • refactor: comment out userShippingCap for clarity by @mkmccarty in #843
  • feat: add EIUserIdBasic to config and update references by @mkmccarty in #844
  • feat: add hab structure and integrate into calculations by @mkmccarty in #845
  • refactor: remove unused Research data structure and related code by @mkmccarty in #846
  • fix: improve ELR and shipping rate calculations in stones.go by @mkmccarty in #847
  • refactor: improve vehicle capacity calculations and logic by @mkmccarty in #848
  • fix(stones): update baseHab assignment to use struct field by @mkmccarty in #849
  • refactor: simplify filename generation in DownloadCoopStatusStones by @mkmccarty in #850
  • feat: clean user names and update table headers by @mkmccarty in #851
  • fix: decode coopID from GetCoopIdentifier function by @mkmccarty in #852
  • refactor: comment out log statement and adjust laying rate calculation by @mkmccarty in #853
  • fix: simplify base laying rate calculation in stones.go by @mkmccarty in #854
  • feat: update laying rate calculation with userLayRate variable by @mkmccarty in #855
  • fix: update base laying rate calculation and add notes for farm status by @mkmccarty in #856
  • feat: refactor duration formatting and improve readability by @mkmccarty in #857
  • docs: add legend for stone status in DownloadCoopStatusStones by @mkmccarty in #858
  • feat: add legend for stone status in download function by @mkmccarty in #859
  • fix: correct emoji rendering in DownloadCoopStatusStones function by @mkmccarty in #860
  • refactor: update legend symbols for farm capacity status by @mkmccarty in #861
  • feat: format bestELR, bestSR, and bestTotal for display by @mkmccarty in #862
  • feat: initialize tachones and quantSt arrays and percent by @mkmccarty in #863
  • refactor: clean up commented code in DownloadCoopStatusStones by @mkmccarty in #864
  • fix: update contract state check for banker assignment by @mkmccarty in #865
  • fix: standardize EIUserID naming convention in config and boost files by @mkmccarty in #866
  • chore(deps): update dependencies to latest versions in go.sum by @mkmccarty in #867
  • fix: adjust stone rates for private farms and logging by @mkmccarty in #868
  • refactor: remove debug log for fadedshotgun435 user name by @mkmccarty in #869
  • refactor: sort contributors by username before processing by @mkmccarty in #870
  • feat(config): add EventsURL and RocketsURL to config struct by @mkmccarty in #871
  • feat: add Ultra feature to contract management logic by @mkmccarty in #872
  • feat: implement GetopStatus and caching mechanism for coop data by @mkmccarty in #873
  • refactor: remove obsolete boost_teamwork.go file and related code by @mkmccarty in #874
  • feat: add ultra contract tracking for farmers by @mkmccarty in #875
  • feat: update emoji references in launch_slashcmd.go and boost_draw.go by @mkmccarty in #876
  • feat: update dubcap icon handling in launch command by @mkmccarty in #877
  • mm-branch-1 by @mkmccarty in #878
  • refactor: launch command string for clarity by @mkmccarty in #879
  • refactor: remove unused ultraIcon variable in launch_slashcmd.go by @mkmccarty in #880
  • refactor: simplify duration handling with sanitization function by @mkmccarty in #881
  • refactor(tests): remove outdated comments in utils_test.go by @mkmccarty in #882
  • refactor: update mission-duration handling for multiple inputs by @mkmccarty in #883
  • feat: add mission ship limit and display size warning logic by @mkmccarty in #884
  • refactor: remove unnecessary variable assignment in launch cmd handler by @mkmccarty in #885
  • test: add unit tests for FmtDuration function by @mkmccarty in #886
  • fix(deps): update grpc to v1.69.4 and moby to v27.5.0 by @mkmccarty in #887
  • fix: add mutex locking for contract access in reactions functions by @mkmccarty in #888
  • feat: update token handling to support multiple tokens sent/received by @mkmccarty in #889
  • chore(deps): update google.golang.org/api and protobuf versions by @mkmccarty in #890
  • refactor: streamline artifact set handling in download function by @mkmccarty in #891
  • fix(go): update Go version to 1.23.5 in go.mod by @mkmccarty in #892
  • feat: remove unused dumpsterfire emoji image file by @mkmccarty in #893
  • refactor: simplify stone download logic and remove limits by @mkmccarty in #894
  • feat(stones): improve cache handling and message updates in stones command by @mkmccarty in #895
  • refactor: update message editing to use webhook method by @mkmccarty in #896
  • refactor: update message handling for expired stones data by @mkmccarty in #897
  • feat: add useBuffHistory option to DownloadCoopStatusStones function by @mkmccarty in #898
  • refactor: remove commented-out code and add message delete logic by @mkmccarty in #899
  • feat: add raw name field to artifactSet for processing consistency by @mkmccarty in #900
  • chore: update OpenTelemetry dependencies to latest versions by @mkmccarty in #901
  • feat: enhance stones command with caching and cleanup logic by @mkmccarty in #902
  • fix(track): update user ID in token tracking logic by @mkmccarty in #903
  • fix: correct pageEnd calculation in button label display by @mkmccarty in #904
  • feat(config): add GistToken and GistID to configuration struct by @mkmccarty in #905
  • feat(gist): implement functions to get and put Gist data by @mkmccarty in #906
  • chore: update dependencies to latest versions in go.mod by @mkmccarty in #907
  • refactor: simplify table headers and alignments in stones.go by @mkmccarty in #908
  • feat: suppress notifications for truck arrival messages by @mkmccarty in #909
  • feat: add thread renaming cooldown to prevent spamming by @mkmccarty in #910
  • refactor(timer): streamline message deletion and reminders by @mkmccarty in #911
  • feat: update contract to track thread rename time by @mkmccarty in #912
  • feat: update contract duration estimation with modifiers by @mkmccarty in #913
  • feat: add allowed mentions to buttonReactionTruck function by @mkmccarty in #914
  • refactor: remove notification suppression in buttonReactionTruck function by @mkmccarty in #915
  • feat(artifacts): include ELR and SR in artifact selection prompts by @mkmccarty in #916
  • fix: reduce Stones for D-T4L artifact 3 to 2 by @mkmccarty in #917
  • refactor: remove unnecessary time addition in estimates calculation by @mkmccarty in #918
  • feat: add NoSelfRunLegs to SpeedrunData for logic clarity by @mkmccarty in #919
  • refactor: simplify time initialization in DownloadCoopStatus function by @mkmccarty in #920
  • fix: update cached data message for clarity and consistency by @mkmccarty in #921
  • refactor: update message handling to use embeds for clarity by @mkmccarty in #922
  • fix: update button color for Runners embed to green by @mkmccarty in #923
  • fix(deps): update google.golang.org/genproto dependencies by @mkmccarty in #924
  • feat: enhance run notifications with user names by @mkmccarty in #925
  • refactor: update farmer nickname and user name handling by @mkmccarty in #926
  • refactor: comment out unused code in DownloadCoopStatusStones function by @mkmccarty in #927
  • refactor: simplify loop by removing unused index variable by @mkmccarty in #928
  • fix: update farm population logic and add glitch indicator by @mkmccarty in #929
  • fix: update stones report formatting for clarity by @mkmccarty in #930
  • fix(timer): set default duration to 4 minutes on error by @mkmccarty in #931
  • chore(deps): update google.golang.org/api and cloud.google.com/go dependencies by @mkmccarty in #932
  • feat: add color handling for boosters and button reactions by @mkmccarty in #933
  • fix: change farm population condition to strict less than by @mkmccarty in #934
  • feat: add user color assignment in AddFarmerToContract function by @mkmccarty in #935
  • refactor: comment out unused role color logic in AddFarmerToContract function by @mkmccarty in #936
  • fix: prevent order command during contract state by @mkmccarty in #937
  • feat: enhance token tracking with link management features by @mkmccarty in #938
  • fix: reorder table headers and align columns correctly by @mkmccarty in #939
  • feat: initialize new modifiers for contract calculations by @mkmccarty in #940
  • feat: add colleggtible values management and update logic by @mkmccarty in #941
  • feat: enhance message flags and format in estimate command by @mkmccarty in #942
  • feat: refactor alt icon handling and improve state management by @mkmccarty in #943
  • feat: update button labels and add names for alt icons by @mkmccarty in #944
  • feat: notify Discord for new custom eggs in API response by @mkmccarty in #945
  • refactor: replace RedrawBoostList with refreshBoostListMessage by @mkmccarty in #946
  • feat: restrict message sending to production environment by @mkmccarty in #947
  • refactor: update task numbering in speedrun CRT instructions by @mkmccarty in #948
  • fix(deps): update Go version and dependencies to latest by @mkmccarty in #949
  • fix: adjust column alignment in DownloadCoopStatusStones function by @mkmccarty in #950
  • fix: improve coop ID validation logic in DownloadCoopStatusStones function by @mkmccarty in #951
  • feat: update contract duration calculations and modifiers by @mkmccarty in #952
  • feat: update display logic and add refresh button in stones.go by @mkmccarty in #953
  • refactor: update format specifiers for modifiers to 3 decimal places by @mkmccarty in #954
  • fix: improve readability of rate calculation in estimate function by @mkmccarty in #955
  • chore(deps): update go-openai, api, and protobuf versions by @mkmccarty in #956
  • refactor: contract duration estimate calculations by @mkmccarty in #957
  • refactor: simplify estimate calculation in duration function by @mkmccarty in #958
  • feat: add confirmation message for updated start time by @mkmccarty in #959
  • refactor: simplify contract duration estimate calculations by @mkmccarty in #960
  • Modified so that the buttons are sent with the original BoostList message by @mkmccarty in #961
  • refactor: remove unused comments in HandleTimeCommand by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/962
  • refactor: comment out unused button reactions functions by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/963
  • fix: correct condition for self-run legs in CRT display logic by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/964
  • feat: update formatting for colleggtible values and add checks by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/965
  • fix(deps): cloud.google.com/go and other dependencies by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/966
  • refactor: improve request data encoding in HTTP POST calls by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/967
  • refactor: streamline request data encoding in API calls by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/968
  • chore: update Go version to 1.24.0 in workflows and go.mod by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/969
  • feat: refactor stone data handling and improve collectible logic by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/970
  • refactor: remove unnecessary multiplier for maxCollectibleELR by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/971
  • refactor: clean up commented code and improve readability by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/972
  • feat: add Ultra property to contract update function by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/973
  • fix: update deflector multiplier calculation for accuracy by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/974
  • chore: update dependencies to latest versions for stability by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/975
  • feat: add tokens per minute calculation to contract boost list by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/976
  • fix: update estimated TPM calculation for accuracy by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/977
  • fix: remove version pinning for golangci-lint installation by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/978
  • fix: add error handling for message operations in HandleCoopTvalCommand by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/979
  • feat: add LinkedCompleted flag to token tracking logic by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/980
  • refactor: fix string formatting for colleggtibles display message by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/981
  • feat: add private reply option to stones command handler by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/982
  • feat: update message flags for public and private replies by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/983
  • feat: add version information to bot startup logs and output by @mkmccarty in https://github.com/mkmccarty/TokenTimeBoostBot/pull/984

Full Changelog: v3.5...v4.0