Skip to content

Conversation

@sergey3bv
Copy link

Addressing #1070

@gemini-code-assist
Copy link

Summary of Changes

Hello @sergey3bv, 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 improves the user experience by introducing robust error handling for network mismatches between CLI commands and the tapd node's configuration. It provides clear, actionable feedback to users when they attempt to interact with a node on a different network than it's configured for, preventing potential confusion and operational errors.

Highlights

  • Network Mismatch Detection: Implemented a new utility function, detectNodeNetwork, to parse the tapd.conf file and identify the network a tapd node is configured to run on.
  • Improved Error Handling: Enhanced the profileFromContext function to detect discrepancies between the network specified in a CLI command and the network configured in the tapd.conf file. If a mismatch is found, a detailed error message is now returned.
  • Actionable Error Suggestions: The network mismatch error message now includes the requested network, the node's configured network, and a suggested corrected command, making it easier for users to resolve configuration issues.
  • Comprehensive Testing: Added new unit tests (TestDetectNodeNetwork and TestNetworkMismatchError) to ensure the correct detection of network settings from config files and the accurate generation of network mismatch error messages with appropriate command suggestions.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

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 by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

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 pull request 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

@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 helpful feature to detect and report network mismatches between the CLI and the tapd node configuration. The implementation correctly detects the network from the config file and provides a user-friendly error with a suggested command.

I've found a critical bug in the command suggestion logic that needs to be addressed. Additionally, I've included a couple of medium-severity suggestions to improve the robustness of the config parsing and the overall code quality. The new tests are well-written and cover the new functionality effectively.

Comment on lines +242 to +256
for i, arg := range os.Args {
if arg == "--network" || arg == "-n" {
if i+1 < len(os.Args) {
args = append(args, arg, detectedNetwork)
foundNetworkFlag = true
continue
}
}
if strings.HasPrefix(arg, "--network=") {
args = append(args, "--network="+detectedNetwork)
foundNetworkFlag = true
continue
}
args = append(args, arg)
}

Choose a reason for hiding this comment

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

critical

There's a bug in the logic to reconstruct the command arguments. When iterating over os.Args using a for...range loop, if you encounter a flag like --network or -n that takes a value as the next argument, you replace it but you don't skip the original value argument. The range loop will then process the old value in the next iteration, leading to an incorrect suggested command with both the old and new network values (e.g., ... -n new_network old_network ...).

To fix this, you should use a traditional for loop with an index, so you can manually increment the index to skip the next argument.

Suggested change
for i, arg := range os.Args {
if arg == "--network" || arg == "-n" {
if i+1 < len(os.Args) {
args = append(args, arg, detectedNetwork)
foundNetworkFlag = true
continue
}
}
if strings.HasPrefix(arg, "--network=") {
args = append(args, "--network="+detectedNetwork)
foundNetworkFlag = true
continue
}
args = append(args, arg)
}
for i := 0; i < len(os.Args); i++ {
arg := os.Args[i]
if (arg == "--network" || arg == "-n") && i+1 < len(os.Args) {
args = append(args, arg, detectedNetwork)
foundNetworkFlag = true
i++ // Skip the old network value.
continue
}
if strings.HasPrefix(arg, "--network=") {
args = append(args, "--network="+detectedNetwork)
foundNetworkFlag = true
continue
}
args = append(args, arg)
}

Comment on lines +176 to +184
if after, ok :=strings.CutPrefix(line, "network="); ok {
network := after
network = strings.TrimSpace(network)
// Validate it's a known network
switch network {
case "mainnet", "testnet", "testnet4", "regtest", "simnet", "signet":
return network
}
}

Choose a reason for hiding this comment

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

medium

The current parsing logic for the network setting is a bit brittle. It uses strings.CutPrefix(line, "network=") which will fail if there are any spaces around the = sign, for example network = mainnet.

To make this more robust and handle such common variations in config files, consider splitting the line by = and then trimming whitespace from the key and value.

Suggested change
if after, ok :=strings.CutPrefix(line, "network="); ok {
network := after
network = strings.TrimSpace(network)
// Validate it's a known network
switch network {
case "mainnet", "testnet", "testnet4", "regtest", "simnet", "signet":
return network
}
}
if parts := strings.SplitN(line, "=", 2); len(parts) == 2 && strings.TrimSpace(parts[0]) == "network" {
network := strings.TrimSpace(parts[1])
// Validate it's a known network
switch network {
case "mainnet", "testnet", "testnet4", "regtest", "simnet", "signet":
return network
}
}

@sergey3bv sergey3bv force-pushed the feat/network-missmatch-error branch from cbce47d to c263b63 Compare January 14, 2026 11:57
@Roasbeef Roasbeef requested review from a team, GeorgeTsagk and jtobin and removed request for a team January 15, 2026 00:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🆕 New

Development

Successfully merging this pull request may close these issues.

1 participant