Releases: dotcommander/repomap
v0.12.0
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-structuredusage. - 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-signature —
public 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 signatures —
func Foo(ctx context.Context, id int) (*User, error)instead offunc 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 compactformat — 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 —
--jsonnow emits{"schema_version": 1, "lines": [...]}instead of a bare[]string. Downstream consumers should parse.lines. Use--json-legacyto 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
nilerrbugs wherereturn nilsilently swallowed non-nil errors:inventory_scan.go(×3),init.go(×1),gitstate.go(×1). - 3
pw.Close()error drops incalls.gothat could hang a reader goroutine.
Breaking
- Default JSON output changed from
[...]to{"schema_version":1,"lines":[...]}. Consumers must parse.lines. Use--json-legacyfor 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
Full Changelog: v0.11.2...v0.11.3
v0.11.2
Full Changelog: v0.11.1...v0.11.2
v0.11.1
Full Changelog: v0.11.0...v0.11.1
v0.11.0 — commit auto + preflight-derived mode detection
v0.10.0
Full Changelog: v0.9.0...v0.10.0
v0.9.0
Full Changelog: v0.8.0...v0.9.0
v0.8.0 — PHP parity with Go
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-signature —
public 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
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 compactformat: lean orientation mode showing file paths + top N symbol names. Use for first-pass codebase scans; default format for deep reasoning.- JSON schema envelope:
--jsonnow emits{schema_version: 1, lines: [...]}. Use--json-legacyfor 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
nilerrbugs wherereturn nilsilently 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-legacyfor 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
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.