Skip to content

fix(explore): search a feature description that mentions changes when nothing changed - #536

Merged
bompus merged 1 commit into
fork/consolidatedfrom
fix/change-phrase-fallback
Oct 19, 2026
Merged

bompus merged 1 commit into
fork/consolidatedfrom
fix/change-phrase-fallback

Conversation

@bompus

@bompus bompus commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Asking codegraph_explore about a feature whose description happens to contain "working tree changes" (or "my changes", "this branch") no longer returns an empty answer when nothing has changed.

Before this change, any query with a change phrase was answered from the diff, and only the code-like tokens of the rest of the question (camelCase names, paths, calls) were searched. A plain-English feature question on a clean tree, such as "the thread details panel shows the working tree changes with additions and deletions", had no such tokens and an empty diff, so explore printed the "Changes — none" heading and nothing else.

Now, when the diff is empty and at least three words remain beside the change phrase, the rest of the question is searched in full, like any other question. A bare "review my changes" and short questions such as "pricing my changes" still get only the empty-diff answer, and a dirty tree still answers from the diff whatever the question says.

Evidence

  • __tests__/explore-changes.test.ts: the new feature-description test fails on fork/consolidated and passes here. Two more cases pin the guards: removing the three-word floor fails one, and removing the empty-diff check fails the other.
  • Query replay, both saved sets (67 real agent queries), base 2725f1a9 vs this branch: 66 answers identical. The one changed answer (t3code q-7907bc7a05, the question quoted above) grew from 514 to 23,834 characters and now includes apps/web/src/components/chat/ThreadDetailsPanel.tsx, the file the agent was looking for.
  • Full suite on the fix before the two guard cases were added: 754 files pass. explore-changes.test.ts passes 9 of 9 on the pushed head.

README rows checked: none apply (no command, tool, language or measured number changes). The unreleased CHANGELOG bullet for change questions gains one sentence.

Not covered: on a dirty tree, a long feature question that contains a change phrase is still answered from the diff only.


Summary by cubic

Fixes codegraph_explore returning an empty answer when a question describes a feature using a change phrase ("working tree changes", "my changes") while nothing has changed.

Previously, any query containing a change phrase was answered from the diff, and only the code-like tokens of the rest of the question were searched. On a clean tree a plain-English description such as "the panel shows the working tree changes with additions and deletions" had no code tokens and an empty diff, so the tool printed the empty-changes heading and nothing else.

Now, when the diff is empty and three or more words remain alongside the change phrase, the rest of the question is searched in full. Bare "review my changes" and shorter questions still get only the empty-diff answer, and a dirty tree still answers from the diff regardless of wording.

Written for commit 96cb26f. Summary will update on new commits.

View guided diff Turn on auto-fix

@bompus

bompus commented Oct 19, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

bompus has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 5 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository YAML (base), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4f833371-5afe-4624-a386-9e7514d342c4
📥 Commits

Reviewing files that changed from the base of the PR and between 2725f1a and 96cb26f.

📒 Files selected for processing: 3
  • CHANGELOG.md
  • __tests__/explore-changes.test.ts
  • src/mcp/tools.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 5 minutes.

@bompus

bompus commented Oct 19, 2026

Copy link
Copy Markdown
Owner Author

Review: #536 (review)
Head: 96cb26f
Reason: Greptile has used its trial credits and did not review. CodeRabbit is rate limited (review limit reached) and cubic has no quota, so neither reviewed either; the change was reviewed locally before the PR opened.

@bompus
bompus merged commit b2cbed4 into fork/consolidated Oct 19, 2026
5 checks passed
@bompus
bompus deleted the fix/change-phrase-fallback branch October 19, 2026 08:19
github-actions Bot pushed a commit that referenced this pull request Oct 19, 2026
…mchenry#2655)

A Go struct referenced nothing through its fields: etcd's `type
PutResponse struct { Header *ResponseHeader }` or gin's `type Context
struct { handlers HandlersChain }` had no `references` edge to those
types, so impact on `ResponseHeader` or `HandlersChain` missed every
struct holding one, and their users. Main had 0 such edges on gin, etcd,
prometheus and kubernetes; only embedded fields were read (`extends`).

TS extractor and Rust kernel, mirrored:
- goStructFieldTypeNames / struct_field_type_names walk each named
  field's type and push a `references` ref per type name from the
  struct, on the name. Fields mint no nodes: impact never climbs
  `contains` upward (#536), so a field node would stop impact short of
  the struct; Dart attributes field types to the class too (colbymchenry#2327).
- colbymchenry#2441's alias walk is factored into collectGoTypeNames /
  collect_type_names + goDeclaredNames / declared_names, so struct
  fields skip what aliases skip: predeclared types and, written bare,
  the declaration's own type parameters and its own name (no self-edge,
  no failed row for `next *node`).
- An embedded field stays `extends`; an embedded generic's type
  arguments are references (client-go's
  `listers.ResourceIndexer[*v1.Pod]`: 651 such fields in kubernetes).

Resolver: gateTargetKind's unknown-qualifier rule (colbymchenry#2417) now covers
every Go type declaration (GO_TYPE_KINDS). Without it, a field
`op clientv3.Op` under an unaliased go.etcd.io/etcd/client/v3 import
bound to the same file's own `Op`.

Explore: a `references` edge whose ends are both type declarations no
longer makes either end connected to an entry. With the new edges alone
the colbymchenry#1500 CG-10 gate failed: payroll's 8-line `RunResult` (holding a
`[]Payslip`) became connected and displaced the 51-line
runPayrollCycleAll body. The rule alone changes no rendered symbol on
gin, etcd, prometheus, kubernetes, bloc, bulletproof or refine-examples.

Validation (main de3eb71, site-keyed A/B, every added edge judged
against real package clauses): gin +41, etcd +1006, prometheus +1637,
kubernetes +20203, all correct; 0 dropped/retargeted/metadata-only; no
node changes or self-loops; kernel == wasm. Index time within noise,
DB +0.4-1.4%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant