Skip to content

ws based melody progress#218

Merged
odtheking merged 12 commits intoodtheking:mainfrom
SubAt0m1c:api
Oct 15, 2025
Merged

ws based melody progress#218
odtheking merged 12 commits intoodtheking:mainfrom
SubAt0m1c:api

Conversation

@SubAt0m1c
Copy link
Collaborator

future api stuff backend as well
potentially fixed drag prio titles (not like they can be more broken)

removed old webutils
moved post/get functions to new webutils using okhttp client
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @SubAt0m1c, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly upgrades the application's networking capabilities by integrating OkHttp3 and WebSockets, paving the way for real-time collaborative features. The primary new user-facing feature is the ability to share Melody terminal progress with party members, alongside a minor but important fix to Wither Dragon tracking logic.

Highlights

  • WebSocket Integration for Melody Terminal: Introduced a new feature to broadcast Melody terminal progress to other Odin users in real-time via WebSockets, including a dedicated HUD to visualize this progress. This enables collaborative terminal solving.
  • Modernized Network Communication: Refactored the entire network communication layer to use OkHttp3, replacing older, less robust methods. This includes new utilities for HTTP requests (GET/POST) and a generic WebSocket client, enhancing reliability and security.
  • Improved Dragon Priority Logic: Adjusted the logic for handling Wither Dragon deaths, specifically preventing the 'last dragon death' from being recorded in scenarios where a dragon is considered 'deathless' (e.g., during cleanup phases), which should improve accuracy for dragon priority tracking.
  • Enhanced Dev Commands: Added new developer commands for testing and debugging, including firstclickprot to set click protection time and ws connect to establish WebSocket connections to specific lobbies.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and welcome refactoring of the networking code to use OkHttp, along with a new feature for broadcasting Melody terminal progress via WebSockets. The new networking implementation is more modern and robust. My review focuses on improving the new implementation by addressing a potential critical null pointer exception, updating outdated dependencies, removing hardcoded values, and highlighting potential performance bottlenecks.

Comment on lines +43 to +44
implementation("com.squareup.okhttp3:okhttp:4.9.3")
implementation("com.squareup.okio:okio:3.4.0")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The versions of okhttp (4.9.3) and okio (3.4.0) are outdated. The latest stable version for OkHttp 4.x is 4.12.0. Using old dependencies can expose the project to known vulnerabilities and bugs that have been fixed in newer versions. It's recommended to update these dependencies.

        implementation("com.squareup.okhttp3:okhttp:4.12.0")
        implementation("com.squareup.okio:okio:3.9.0")

DungeonWaypointConfig.loadConfig()
ClickGUIModule.latestVersionNumber = ClickGUIModule.checkNewerVersion(VERSION)
sendDataToServer(body = """{"username": "$name", "version": "${if (isLegitVersion) "legit" else "cheater"} $VERSION"}""")
postData("https://gi2wsqbyse6tnfhqakbnq6f2su0vujgz.lambda-url.eu-north-1.on.aws/", """{"username": "$name", "version": "${if (isLegitVersion) "legit" else "cheater"} $VERSION"}""")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The URL is hardcoded. It's better to define this as a constant, for example in a companion object or a dedicated constants file. This improves maintainability and makes it easier to change the URL if needed, especially if it's used in multiple places.

@odtheking odtheking merged commit 7847e31 into odtheking:main Oct 15, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants