Skip to content

Commit e2f4b4a

Browse files
docs: consolidate changelog into docs/CHANGELOG.md (#72)
Merge root CHANGELOG.md content into docs/CHANGELOG.md (single source of truth). Add 0.2.2 entries for tsconfig resolver (#40) and update version comparison links.
1 parent 57200df commit e2f4b4a

2 files changed

Lines changed: 131 additions & 133 deletions

File tree

CHANGELOG.md

Lines changed: 0 additions & 128 deletions
This file was deleted.

docs/CHANGELOG.md

Lines changed: 131 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
## [0.2.2] — 2026-04-11
1313

1414
### Added
15-
- **Traversal stats**`FileTraverser` now tracks skip reasons (`.gitignore`, blocked extension, binary, oversized, generated, `--exclude`, `.repowiseIgnore`, unknown language) via a new `TraversalStats` dataclass. Stats are surfaced after traversal as a filtering summary showing how many files were included vs excluded and why.
16-
- **Submodule handling** — git submodule directories (parsed from `.gitmodules`) are now excluded by default during traversal. Added `--include-submodules` flag to `repowise init` to opt in.
17-
- **Language breakdown** — generation plan table now shows language distribution (e.g. "Languages: python 79%, typescript 14%"). Completion panel shows top languages with percentages instead of just a count.
15+
- **tsconfig/jsconfig path alias resolution** (#40) — new `TsconfigResolver` discovers all `tsconfig.json` / `jsconfig.json` files, resolves `extends` chains (with circular detection), and maps path aliases (e.g. `@/*` -> `src/*`) to real files during graph construction. Non-relative TS/JS imports that match a path alias now create proper internal edges instead of phantom `external:` nodes. Fixes broken dependency graph, PageRank, dead code false positives, and change propagation for any TS/JS project using path aliases (Next.js, Vite, Angular, Nuxt, CRA).
16+
- **Traversal stats** (#57) — `FileTraverser` now tracks skip reasons (`.gitignore`, blocked extension, binary, oversized, generated, `--exclude`, `.repowiseIgnore`, unknown language) via a new `TraversalStats` dataclass. Stats are surfaced after traversal as a filtering summary showing how many files were included vs excluded and why.
17+
- **Submodule handling** (#57) — git submodule directories (parsed from `.gitmodules`) are now excluded by default during traversal. Added `--include-submodules` flag to `repowise init` to opt in.
18+
- **Language breakdown** (#57) — generation plan table now shows language distribution (e.g. "Languages: python 79%, typescript 14%"). Completion panel shows top languages with percentages instead of just a count.
1819
- **Multi-line exclude input** — interactive advanced mode now prompts for exclude patterns one per line instead of comma-separated on a single line.
19-
- 10 new unit tests covering `TraversalStats` counters, language counts, and submodule handling.
20+
- 38 new unit tests covering tsconfig resolver, traversal stats, and submodule handling.
2021

2122
### Changed
2223
- Traverse progress bar uses spinner mode instead of showing misleading pre-filter totals (e.g. "2132/83601").
2324
- Traverse phase label changed from "Traversing files..." to "Scanning & filtering files...".
2425

26+
### Fixed
27+
- Server tests now use real temp directories with `.git` folders for path validation (#69 compatibility).
28+
2529
### Docs
2630
- Updated README CLI reference with `--index-only`, `-x`, and `--include-submodules` examples.
2731
- Updated website docs (`cli-reference.md`, `configuration.md`, `getting-started.md`) with submodule handling, `.gitignore` documentation, and new output examples.
@@ -81,4 +85,126 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8185

8286
---
8387

84-
[0.2.1]: https://github.com/repowise-dev/repowise/compare/v0.2.0...HEAD
88+
## [0.2.0] — 2026-04-07
89+
90+
A large overhaul: faster indexing, smarter doc generation, transactional storage,
91+
new analysis capabilities, and a completely revamped web UI that surfaces every
92+
new signal — all without changing the eight MCP tool surface.
93+
94+
### Added
95+
96+
#### Pipeline & ingestion
97+
- **Parallel indexing.** AST parsing now runs across all CPU cores via
98+
`ProcessPoolExecutor`. Graph construction and git history indexing run
99+
concurrently with `asyncio.gather`. Per-file git history fetched through a
100+
thread executor with a semaphore.
101+
- **RAG-aware doc generation.** Pages are generated in topological order; each
102+
generation prompt now includes summaries of the file's direct dependencies,
103+
pulled from the vector store of already-generated pages.
104+
- **Atomic three-store coordinator.** New `AtomicStorageCoordinator` buffers
105+
writes across SQL, the in-memory dependency graph, and the vector store, then
106+
flushes them as a single transaction. Failure in any store rolls back all three.
107+
- **Dynamic import hint extractors.** The dependency graph now captures edges
108+
that pure AST parsing misses: Django `INSTALLED_APPS` / `ROOT_URLCONF` /
109+
`MIDDLEWARE`, pytest `conftest.py` fixture wiring, and Node/TS path aliases
110+
from `tsconfig.json` and `package.json` `exports`.
111+
112+
#### Analysis
113+
- **Temporal hotspot decay.** New `temporal_hotspot_score` column on
114+
`git_metadata`, computed as `Σ exp(-ln2 · age_days / 180) · min(lines/100, 3)`
115+
per commit. Hotspot ranking now uses this score; commits from a year ago
116+
contribute ~25% as much as commits from today.
117+
- **Percentile ranks via SQL window function.** `recompute_git_percentiles()`
118+
is now a single `PERCENT_RANK() OVER (PARTITION BY repo ORDER BY ...)` UPDATE
119+
instead of an in-Python sort. Faster and correct on large repos.
120+
- **PR blast radius analyzer.** New `PRBlastRadiusAnalyzer` returns direct
121+
risks, transitive affected files, co-change warnings, recommended reviewers,
122+
test gaps, and an overall 0-10 risk score. Surfaced via `get_risk(changed_files=...)`
123+
and a new web page.
124+
- **Security pattern scanner.** Indexing now runs `SecurityScanner` over each
125+
file. Findings (eval/exec, weak crypto, raw SQL string construction,
126+
hardcoded secrets, `pickle.loads`, etc.) are stored in a new
127+
`security_findings` table.
128+
- **Knowledge map.** Top owners, "bus factor 1" knowledge silos (>80% single
129+
owner), and high-centrality "onboarding targets" with thin documentation --
130+
surfaced in `get_overview` and the web overview page.
131+
132+
#### LLM cost tracking
133+
- New `llm_costs` table records every LLM call (model, tokens, USD cost).
134+
- `CostTracker` aggregates session totals; pricing covers Claude 4.6 family,
135+
GPT-4.1 family, and Gemini.
136+
- New `repowise costs` CLI: `--since`, `--by operation|model|day`.
137+
- Indexing progress bar shows a live `Cost: $X.XXXX` counter.
138+
139+
#### MCP tool enhancements (still 8 tools -- strictly more capable)
140+
- `get_risk(targets, changed_files=None)` -- when `changed_files` is provided,
141+
returns the full PR blast-radius report (transitive affected, co-change
142+
warnings, recommended reviewers, test gaps, overall 0-10 score). Per-file
143+
responses now include `test_gap: bool` and `security_signals: list`.
144+
- `get_overview()` -- now includes a `knowledge_map` block (top owners, silos,
145+
onboarding targets).
146+
- `get_dead_code(min_confidence?, include_internals?, include_zombie_packages?)` --
147+
sensitivity controls for false positives in framework-heavy code.
148+
149+
#### REST endpoints (new)
150+
- `GET /api/repos/{id}/costs` and `/costs/summary` -- grouped LLM spend.
151+
- `GET /api/repos/{id}/security` -- security findings, filterable by file/severity.
152+
- `POST /api/repos/{id}/blast-radius` -- PR impact analysis.
153+
- `GET /api/repos/{id}/knowledge-map` -- owners / silos / onboarding targets.
154+
- `GET /api/repos/{id}/health/coordinator` -- three-store drift status.
155+
- `GET /api/repos/{id}/hotspots` now returns `temporal_hotspot_score` and is
156+
ordered by it.
157+
- `GET /api/repos/{id}/git-metadata` now returns `test_gap`.
158+
- Job SSE stream now emits `actual_cost_usd` (running cost since job start).
159+
160+
#### Web UI (new pages and components)
161+
- **Costs page** -- daily bar chart, grouped tables by operation/model/day.
162+
- **Blast Radius page** -- paste files (or click hotspot suggestion chips) to
163+
see risk gauge, transitive impact, co-change warnings, reviewers, test gaps.
164+
- **Knowledge Map card** on the overview dashboard.
165+
- **Trend column** on the hotspots table with flame indicator (default sort).
166+
- **Security Panel** in the wiki page right sidebar.
167+
- **"No tests" badge** on wiki pages with no detected test file.
168+
- **System Health card** on the settings page (SQL / Vector / Graph counts +
169+
drift % + status).
170+
- **Live cost indicator** on the generation progress bar.
171+
172+
#### CLI
173+
- `repowise costs [--since DATE] [--by operation|model|day]` -- new command.
174+
- `repowise dead-code` -- new flags `--min-confidence`, `--include-internals`,
175+
`--include-zombie-packages`, `--no-unreachable`, `--no-unused-exports`.
176+
- `repowise doctor` -- new Check #10 reports coordinator drift across all
177+
three stores. `--repair` deletes orphaned vectors and rebuilds missing graph
178+
nodes from SQL.
179+
180+
### Fixed
181+
- C++ dependency resolution edge cases.
182+
- Decision extraction timeout on very large histories.
183+
- Resume / progress bar visibility for oversized files.
184+
- Coordinator `health_check` falsely reporting 100% drift on LanceDB / Pg
185+
vector stores (was returning -1 for the count). Now uses `list_page_ids()`.
186+
- Coordinator `health_check` returning `null` graph node count when no
187+
in-memory `GraphBuilder` is supplied. Now falls back to SQL `COUNT(*)`.
188+
189+
### Internal
190+
- Three new Alembic migrations: `0009_llm_costs`, `0010_temporal_hotspot_score`,
191+
`0011_security_findings`.
192+
193+
### Compatibility
194+
- Existing repositories must run migrations: `repowise doctor` will detect
195+
the missing tables and prompt; alternatively re-run `repowise init` to
196+
rebuild from scratch.
197+
- The eight MCP tool names and signatures are backwards compatible -- new
198+
parameters are all optional.
199+
200+
---
201+
202+
## [0.1.31] — earlier
203+
204+
See git history for releases prior to 0.2.0.
205+
206+
---
207+
208+
[0.2.2]: https://github.com/repowise-dev/repowise/compare/v0.2.1...v0.2.2
209+
[0.2.1]: https://github.com/repowise-dev/repowise/compare/v0.2.0...v0.2.1
210+
[0.2.0]: https://github.com/repowise-dev/repowise/compare/v0.1.31...v0.2.0

0 commit comments

Comments
 (0)