Skip to content

Commit 448ea8d

Browse files
committed
chore(release): prep gcode 0.6.1
1 parent 62747e3 commit 448ea8d

8 files changed

Lines changed: 143 additions & 92 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ All notable changes to gobby-cli are documented in this file.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10+
## [0.6.1] — gcode
11+
12+
### Fixed
13+
14+
#### gcode
15+
16+
- **FTS fallback query sanitization** — Escaped `%`, `_`, and `\` correctly in the LIKE-based fallback search path so literal user queries stay literal. Prevents malformed matches and closes a SQL-injection footgun in symbol resolution and name search.
17+
- **Neo4j correctness cutover** — Completed import-aware call-target classification for Python, JavaScript, and TypeScript. `gcode index` now distinguishes local symbols, unresolved callees, and external modules when writing call data, which reduces bogus graph edges and improves `callers`, `usages`, `blast-radius`, and graph-boosted search relevance. (#137)
18+
1019
## [0.6.0] — gcode
1120

1221
### Changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ This workspace contains four Gobby CLI tools plus a shared library:
2525

2626
### gcode — Code Search & Navigation
2727

28-
AST-aware code search powered by tree-sitter. Indexes 18 languages into SQLite FTS5 for instant symbol lookup, content search, and file tree navigation. With Gobby, adds semantic vector search (Qdrant) and dependency graph analysis (Neo4j) — callers, usages, imports, and blast-radius. Incremental indexing, cross-project queries, and graceful degradation when services are unavailable.
28+
AST-aware code search powered by tree-sitter. Indexes 18 languages into SQLite
29+
FTS5 for symbol lookup, content search, file tree navigation, and hybrid
30+
ranking. When Neo4j, Qdrant, and an embeddings endpoint are configured -
31+
typically through Gobby - `gcode` adds graph-aware search, semantic search,
32+
and dependency analysis (`callers`, `usages`, `imports`, `blast-radius`).
2933

3034
### gsqz — Output Compression
3135

@@ -60,17 +64,9 @@ Download from [GitHub Releases](https://github.com/GobbyAI/gobby-cli/releases/la
6064
### From crates.io
6165

6266
```bash
63-
# gcode (with embeddings — requires cmake)
67+
# gcode
6468
cargo install gobby-code
6569

66-
# gcode (with GPU acceleration — pick your backend)
67-
cargo install gobby-code --features cuda # NVIDIA (requires CUDA toolkit)
68-
cargo install gobby-code --features vulkan # Any GPU (requires Vulkan SDK)
69-
cargo install gobby-code --features rocm # AMD (requires ROCm)
70-
71-
# gcode (without embeddings)
72-
cargo install gobby-code --no-default-features
73-
7470
# gsqz
7571
cargo install gobby-squeeze
7672

@@ -81,7 +77,8 @@ cargo install gobby-local
8177
cargo install gobby-hooks
8278
```
8379

84-
On macOS, Metal GPU acceleration is enabled automatically. On Linux/Windows, embeddings use CPU inference by default — add a GPU feature flag for hardware acceleration.
80+
`gcode` graph and semantic features are configured at runtime. There are no
81+
Cargo feature flags for Neo4j, Qdrant, or embeddings support.
8582

8683
### From source
8784

@@ -99,7 +96,7 @@ cargo install --path crates/ghook
9996
```bash
10097
cargo build --workspace --no-default-features # Build all tools
10198
cargo test --workspace --no-default-features # Test all tools
102-
cargo clippy --workspace -- -D warnings # Lint all tools
99+
cargo clippy --workspace --no-default-features -- -D warnings # Lint all tools
103100
cargo fmt --all --check # Check formatting
104101
```
105102

crates/gcode/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gobby-code"
3-
version = "0.6.0"
3+
version = "0.6.1"
44
edition = "2024"
55
rust-version = "1.85"
66
authors = ["Josh Wilhelmi <hello@gobby.ai>"]

crates/gcode/README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ codebase → tree-sitter AST → SQLite index → search / retrieve / navigate
5252

5353
1. **Index** — Walk files, parse ASTs with tree-sitter, extract symbols and content chunks
5454
2. **Store** — SQLite for symbols + FTS5, Neo4j for call/import graphs, Qdrant for semantic vectors
55-
3. **Search** — Hybrid ranking: FTS5 + semantic similarity + graph relevance → Reciprocal Rank Fusion
55+
3. **Search** — Hybrid ranking: FTS5 + optional semantic + optional graph sources → Reciprocal Rank Fusion
5656
4. **Retrieve** — Byte-offset reads for exact symbol source, no file-level bloat
5757

5858
## Installation
@@ -86,13 +86,12 @@ Expand-Archive gcode.zip -DestinationPath .
8686
### Build from source
8787

8888
```bash
89-
# With embeddings (requires cmake for llama-cpp-2)
9089
cargo install gobby-code
91-
92-
# Without embeddings (no cmake needed)
93-
cargo install gobby-code --no-default-features
9490
```
9591

92+
Graph and semantic features are configured at runtime. You do not need Cargo
93+
feature flags to enable Neo4j, Qdrant, or embeddings support.
94+
9695
### With Gobby
9796

9897
gcode is installed automatically as part of the [Gobby](https://github.com/GobbyAI/gobby) platform. If you're using Gobby, you already have it.
@@ -118,7 +117,7 @@ gcode tree # File tree with symbol counts
118117

119118
# Dependency graph (requires Neo4j)
120119
gcode callers "handleAuth" # Who calls this?
121-
gcode usages "handleAuth" # All references (calls + imports)
120+
gcode usages "handleAuth" # Incoming call sites
122121
gcode imports src/auth.ts # Import graph for a file
123122
gcode blast-radius "handleAuth" --depth 3 # Transitive impact analysis
124123

@@ -155,14 +154,14 @@ Full indexing and text search. No external services needed.
155154
```
156155
codebase → tree-sitter → SQLite → FTS5 search
157156
Neo4j → call graphs, blast radius, imports
158-
Qdrant + GGUF → semantic vector search
157+
Qdrant + embeddings API → semantic vector search
159158
Gobby daemon → auto-indexing, LLM summaries,
160159
config, secrets, sessions, agents
161160
```
162161

163162
Gobby adds graph queries, semantic search, and infrastructure that makes gcode better at its core job — not just more features bolted on.
164163

165-
**Search quality improves.** With Neo4j, `gcode search` blends FTS5 text matching with call-graph relevance. Symbols that are heavily referenced rank higher. With Qdrant, conceptual queries like "database connection pooling" find semantically similar code even when the exact words don't match.
164+
**Search quality improves.** With Neo4j, `gcode search` blends FTS5 text matching with call-graph relevance. With Qdrant plus a configured embeddings API, conceptual queries like "database connection pooling" can find semantically similar code even when the exact words don't match.
166165

167166
**Config and secrets are managed.** Neo4j URLs, Qdrant API keys, and auth credentials are stored in the shared database and encrypted with Fernet. No env vars to juggle.
168167

@@ -172,7 +171,7 @@ Gobby adds graph queries, semantic search, and infrastructure that makes gcode b
172171
|-----------|-----------|-----------|
173172
| AST indexing + FTS5 search | Yes | Yes |
174173
| Graph-boosted search ranking || Yes (Neo4j) |
175-
| Semantic vector search || Yes (Qdrant + GGUF) |
174+
| Semantic vector search || Yes (Qdrant + embeddings API) |
176175
| Call graph / blast radius || Yes (Neo4j) |
177176
| Import graph || Yes (Neo4j) |
178177
| Auto-indexing on file change || Yes (daemon file watcher) |
@@ -190,7 +189,7 @@ Get started with Gobby at [github.com/GobbyAI/gobby](https://github.com/GobbyAI/
190189
|---------------------|----------|
191190
| Neo4j down | Graph commands return `[]`. Search loses graph boost. |
192191
| Qdrant down | Search loses semantic boost. FTS5 + graph still work. |
193-
| GGUF model missing | Semantic embeddings disabled. FTS5 + graph still work. |
192+
| Embeddings API unavailable | Semantic embeddings disabled. FTS5 + graph still work. |
194193
| No index yet | Commands error with `Run gcode init to initialize`. |
195194

196195
## Language Support
@@ -203,13 +202,14 @@ gcode parses ASTs using tree-sitter with support for 18 languages:
203202
| **Tier 2** | Dart, Elixir |
204203
| **Tier 3** | JSON, YAML, Markdown (content indexing only) |
205204

206-
## Build Features
205+
## Build
207206

208-
The `embeddings` Cargo feature (default: on) enables local GGUF embedding generation via `llama-cpp-2`. Requires cmake to build. macOS builds use Metal GPU acceleration.
207+
`gcode` uses runtime-configured services rather than Cargo feature flags.
209208

210209
```bash
211-
cargo build --release # With embeddings
212-
cargo build --release --no-default-features # Without embeddings (no cmake)
210+
cargo build --release
211+
cargo test --no-default-features
212+
cargo clippy --no-default-features -- -D warnings
213213
```
214214

215215
## Platform Support

crates/gcode/src/index/import_resolution.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@ fn build_python_module_index(root_path: &Path, candidate_files: &[PathBuf]) -> H
145145
continue;
146146
}
147147

148-
let mut module = rel.with_extension("").to_string_lossy().replace('/', ".");
148+
let mut module = rel
149+
.with_extension("")
150+
.to_string_lossy()
151+
.replace(['/', '\\'], ".");
149152
if module.ends_with(".__init__") {
150153
module.truncate(module.len() - ".__init__".len());
151154
}

0 commit comments

Comments
 (0)