Skip to content

Releases: dotcommander/repomap

v0.12.0

29 May 21:36

Choose a tag to compare

Changelog

All notable changes to repomap are documented here.


v0.12.0 — 2026-05-29

Features

  • Add cache and context inspection subcommands.

Fixes

  • Preserve exported API compatibility while keeping context-aware cache and commit-prep internals.
  • Serialize LSP startup retries after failed language-server launches.
  • Unwrap commit execute exit codes with errors.As.

Other

  • Document cache, context, and --json-structured usage.
  • Add CLI cache/explain coverage and modernize test loops.
  • Extract commit finish I/O helpers and simplify commit flow.
  • Clean up incremental cache and commit-prep internals.

v0.8.0 — 2026-04-18

PHP parity with Go

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

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

Before (v0.7.0) vs after (v0.8.0) on LLPhant src/Chat/OpenAIChat.php:

# v0.7.0
src/Chat/OpenAIChat.php [untested] [doc: n/a]
  func __construct
  func generateText
  func getLastResponse
  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 function getLastResponse(): ?CreateResponse
  public ?FunctionInfo $lastFunctionCalled = null

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


v0.7.0 — 2026-04-18

LLM-first output quality

Default output is now richer within the same token budget. An LLM reading repomap . no longer needs to open source files to generate correct call sites.

  • Full typed Go signaturesfunc Foo(ctx context.Context, id int) (*User, error) instead of func Foo. The 40-char truncation cap is removed.
  • Typed struct fields{Name string, ID int} inline for exported structs instead of bare field names.
  • Leading godoc sentence inlined after each exported symbol: // BudgetFiles assigns a DetailLevel to each RankedFile within the token budget.
  • [doc: n/a] tag on file header lines for non-Go files — explicit signal that the language tier does not extract doc comments (not that docs are absent).
  • Kind-weighted symbol ordering within each file block: structs and interfaces first, then types, functions, methods, constants, and vars. Highest architectural signal at the top.

New

  • -f compact format — lean orientation mode: file paths + exported symbol names, no signatures, no godoc, no struct fields. Use for first-pass codebase scans when you need inventory without detail. The old default (category summaries) is replaced by this named mode.
  • JSON schema envelope--json now emits {"schema_version": 1, "lines": [...]} instead of a bare []string. Downstream consumers should parse .lines. Use --json-legacy to get the pre-v0.7.0 bare array for scripts that cannot be updated immediately.

Fixed

  • All-or-nothing per-file budget invariant — files never truncate mid-symbol. Fallback chain on budget pressure: full enriched rendering (level 2) → summary (level 1) → omit. A half-shown file is worse than an omitted one: the footer now reports (N files omitted — increase -t or use -f compact).
  • 5 nilerr bugs where return nil silently swallowed non-nil errors: inventory_scan.go (×3), init.go (×1), gitstate.go (×1).
  • 3 pw.Close() error drops in calls.go that could hang a reader goroutine.

Breaking

  • Default JSON output changed from [...] to {"schema_version":1,"lines":[...]}. Consumers must parse .lines. Use --json-legacy for bare-array compatibility.
  • Default non-JSON output is richer (signatures, godoc, typed struct fields). Scripts asserting exact default output will need updating. To get the old terse output, use -f compact.

v0.11.3

18 May 14:28

Choose a tag to compare

Full Changelog: v0.11.2...v0.11.3

v0.11.2

11 May 04:37

Choose a tag to compare

Full Changelog: v0.11.1...v0.11.2

v0.11.1

10 May 17:26

Choose a tag to compare

Full Changelog: v0.11.0...v0.11.1

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.