Skip to content

Releases: dotcommander/repomap

v0.11.0 — commit auto + preflight-derived mode detection

28 Apr 01:34

Choose a tag to compare

v0.10.0

27 Apr 21:09

Choose a tag to compare

Full Changelog: v0.9.0...v0.10.0

v0.9.0

19 Apr 01:40

Choose a tag to compare

Full Changelog: v0.8.0...v0.9.0

v0.8.0 — PHP parity with Go

19 Apr 00:46

Choose a tag to compare

PHP parity with Go

PHP files now render at the same fidelity as Go: full signatures with visibility, types, and defaults; class headers with extends / implements; properties and constants visible; PHPDoc first sentences inlined.

What's new

  • Tree-sitter PHP parser replacing the regex fallback. Covers PHP 8.x: classes, interfaces, traits, enums (with backings and cases), functions, methods, properties, constants, namespaces.
  • Visibility-in-signaturepublic function foo(): string, private readonly LoggerInterface $logger.
  • Constructor property promotion extracted as real properties — byte-identical signatures to non-promoted declarations.
  • PHPDoc extraction — first sentence rendered as subtitle; @-tags stripped. No [doc: n/a] noise on PHP files.
  • Kind-weighted ordering — class/interface first, then trait, enum, function, method, case, property, const.

Before / after

On LLPhant's src/Chat/OpenAIChat.php:

# v0.7.0
src/Chat/OpenAIChat.php [untested] [doc: n/a]
  func __construct
  func generateText
  type OpenAIChat

# v0.8.0
src/Chat/OpenAIChat.php [untested]
  class OpenAIChat implements ChatInterface [440L]
  public function __construct(OpenAIConfig $config = new OpenAIConfig(), private readonly LoggerInterface $logger = new NullLogger())
  public function generateText(string $prompt): string
  public ?FunctionInfo $lastFunctionCalled = null

Symbol count on the same 149-file LLPhant codebase: 968 → 1398 (+44%) within the same 2048-token budget.

Verified

444 tests passing, build/vet clean.

Install: go install github.com/dotcommander/repomap/cmd/repomap@v0.8.0

v0.7.0 — LLM-first output quality

18 Apr 23:46

Choose a tag to compare

LLM-first output quality

  • Full typed Go signatures with named params and return types (no 40-char truncation)
  • Typed struct fields {Name string, ID int} instead of bare names
  • Leading godoc sentence inlined after each exported symbol
  • [doc: n/a] tag on exported symbols in non-Go languages
  • Kind-weighted symbol ordering: structs/interfaces/types before funcs/methods/const/var

New

  • -f compact format: lean orientation mode showing file paths + top N symbol names. Use for first-pass codebase scans; default format for deep reasoning.
  • JSON schema envelope: --json now emits {schema_version: 1, lines: [...]}. Use --json-legacy for bare-array output.

Fixed

  • All-or-nothing per-file budget invariant: files never truncate mid-symbol. Fallback chain: full (level 2) → summary (level 1) → omit.
  • 5 nilerr bugs where return nil silently swallowed non-nil errors (inventory_scan × 3, init × 1, gitstate × 1)
  • 3 pw.Close() error drops in calls.go (potential reader goroutine hang)

Breaking

  • Default JSON output format changed from bare [...] to {schema_version:1, lines:[...]}. Consumers should parse .lines. Use --json-legacy for bare-array compatibility.
  • Default non-JSON output is richer (signatures, docs, typed fields). If you want the old terse output, use -f compact.

v0.6.0

16 Apr 17:03

Choose a tag to compare

v0.6.0

Symbol Blocklist

.repomap.yaml now supports glob and regex patterns applied at parse-time to filter unwanted symbols from output. Useful for stripping generated code, test helpers, or internal scaffolding from the map.

Incremental SHA Indexing

Files are indexed by git object SHA; unchanged files are skipped on subsequent runs. A full rebuild fires only when >30% of files change. Cache format bumped from v5 to v6.

repomap init

New subcommand that scaffolds .repomap.yaml with sensible defaults and installs a post-commit hook to keep the cache warm automatically after each commit.

repomap find <query>

Symbol search with kind: and file: qualifiers (e.g. repomap find ParseGoFile kind:func). Also exposed as Map.FindSymbol(name, kind, file) for programmatic use.

v0.5.0 — LLM-Signal Upgrade

16 Apr 15:28

Choose a tag to compare

v0.5.0 — LLM-Signal Upgrade

repomap exists to feed LLMs a token-budgeted map of a codebase. v0.5.0 sharpens that signal in three ways.

Features

Doc-comment subtitles (28f608f)
Every Go symbol in -f detail, -f verbose, or -f xml output now carries a one-line subtitle extracted from its doc comment. The conventional FuncName does X prefix is stripped, output truncated to 60 runes, noise filtered out. LLMs learn the why of a symbol without a follow-up Read. Compact mode is unchanged — subtitles would defeat its token density.

Unexported symbol fallback (bcc6603)
Packages whose work lives in runX/handleY-style unexported functions used to render empty. They now fall back to surfacing unexported functions and methods whose bodies span ≥5 lines. The fallback fires only when zero exported symbols were found — export-rich files are unchanged. Fallback symbols set Exported=false, so applySymbolBonus correctly downweights them in the ranking.

Import boundary classification (0c80156)
Files importing net/http, pgx, redis, kafka-go, grpc, os/exec, or crypto/* now carry labels like [HTTP, Postgres] in the file-header of detail/verbose output and a boundaries="..." attribute in XML. A bounded score bump (+3 or +5 per category, capped at +15) floats boundary-crossing files up the ranking — they're almost always the right entry points for codebase exploration.

Cache

Cache format bumps from version 4 to 5. Existing caches rebuild once on first run post-upgrade. No user action required.

Compatibility

No CLI changes. No breaking API changes — Symbol.Doc and RankedFile.Boundaries are additive fields with omitempty JSON tags.

Credits

All three features derived from a comparison with ~/go/src/repoflow, re-scoped through an LLM-consumer lens. repomap output is consumed by language models, not humans — every feature in this release is designed to reduce LLM round-trips or pre-digest raw data into semantic signal.

v0.4.0

15 Apr 14:30

Choose a tag to compare

Full Changelog: v0.3.0...v0.4.0

v0.3.0

14 Apr 05:11

Choose a tag to compare

What's New

Commit Analyzer Subsystem

This release introduces the commit analyzer — a new subsystem that powers the repomap commit analyze command.

Visibility-aware secret scanning (commit_secrets.go)

  • PII and secret detection with per-finding classification: FLAG, REVIEW, or SAFE
  • defaultAction driven by remote visibility: public repos auto-fix flags, private repos surface for review
  • Regex-based scanners for credentials, tokens, PII, dev-history artifacts, and path leaks

Git state collection (commit_gitstate.go)

  • Collects staged/unstaged/untracked counts, recent commit history, remote URL, and GitHub slug
  • strings.Cut-based SSH and HTTPS URL parsing for githubSlug

Shared types (commit_types.go)

  • RemoteInfo, SecretsResult, FindingClass, FindingKind, and related structs used across the subsystem

Integration tests (commit_analyze_test.go)

  • End-to-end tests covering secret detection, visibility-gated actions, group classification, and churn analysis
  • All tests parallelized with testing.Short() gate

v0.2.1 — commit subsystem polish

14 Apr 00:06

Choose a tag to compare

Fixes

  • Reorder declaration in `clusterReasons` so `var out` sits next to the loop that populates it
  • Clarify `parseSymbolsFromSource` Go branch with a comment explaining why Go is absent from `langParsers` (uses AST)

Deps

  • Bump `spf13/pflag` to v1.0.10

Refactors

  • Apply simplify-audit findings across the commit subsystem (internal cleanup; no behavior change)

Cumulative since v0.2.0: `c2d4b09..122354f`.