@chappibunny/repolens 1.15.3 β 1.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/README.md +13 -9
- package/llms-install.md +2 -0
- package/package.json +2 -2
- package/src/ai/generate-sections.js +202 -80
- package/src/analyzers/context-builder.js +120 -63
- package/src/analyzers/dependency-graph.js +97 -2
- package/src/analyzers/domain-inference.js +55 -4
- package/src/analyzers/flow-inference.js +48 -9
- package/src/analyzers/maturity.js +151 -0
- package/src/analyzers/security-patterns.js +29 -3
- package/src/cli.js +21 -17
- package/src/core/scan.js +50 -4
- package/src/docs/generate-doc-set.js +28 -0
- package/src/init.js +2 -4
- package/src/mcp/tools.js +2 -1
- package/src/renderers/render.js +3 -3
- package/src/renderers/renderAnalysis.js +28 -9
- package/src/utils/ai-notice.js +20 -0
- package/src/utils/path-roles.js +58 -0
- package/src/utils/project-name.js +24 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,61 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to RepoLens will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 1.15.5
|
|
6
|
+
|
|
7
|
+
Fixes twelve output problems found by running 1.15.4 on mattiasw/ExifReader (a plain-JavaScript library with a flat `src/` and a build-helper `bin/`), and the two leftovers from 1.15.4.
|
|
8
|
+
|
|
9
|
+
### Output accuracy
|
|
10
|
+
|
|
11
|
+
- A file directly under a module root belongs to that root. A flat `src/` is one module (`src`), not 65 one-file modules. Sub-directories are still their own modules. Go packages follow the same rule, so `middleware/` is one module and not `middleware/compress.go`
|
|
12
|
+
- Module fan-in and fan-out count distinct other modules, not file-to-file edges, so "Orchestrator (coordinates 212 modules)" becomes the real number
|
|
13
|
+
- A package with `main`, `module`, `exports`, or `types` is a **library**, not a command-line tool. A package with only a `bin` is a CLI. A package with both is a library unless its description does not say library, parser, SDK, toolkit, or framework and says CLI or command-line. Libraries get no "CLI tool architecture" pattern, no "Interface: CLI" row, and no "command-line interface" text. The route map note says library. Flows start at the package entry (`Library Flow`), not at `bin/` helpers or `webpack.config`
|
|
14
|
+
- Patterns are described by their name, not by the file names cited as evidence. "Acyclic dependency graph" no longer gets the CLI description. Every pattern has its own explanation and benefit line. The headline names the pattern, not its evidence
|
|
15
|
+
- `build-pages.js` is not a route module. Page, route, and view only count as directory names for files
|
|
16
|
+
- `.d.ts` files, type tests, and a `typescript` devDependency do not make a JavaScript library "TypeScript"
|
|
17
|
+
- `filter`, `parse`, and `constant` no longer pick the Search & Discovery, Analysis & Detection, and Configuration domains
|
|
18
|
+
- Hubs, coupling advice, and the dependency graph ignore tests, examples, docs, and build scripts, and are measured against source files. Hub threshold is 7% of source files (minimum 5)
|
|
19
|
+
- External packages are split into runtime and development and test tooling (`12 (1 runtime, 11 dev/test tooling)`), from the root `package.json`
|
|
20
|
+
- Security: `innerHTML = ''` and other fixed-string assignments are not reported. Findings in examples, docs, scripts, tools, benchmarks, and `build*.js` files are low severity and labeled "(build/example code)". Hardcoded credentials keep their severity
|
|
21
|
+
- Orphan files over 5% of code files are a warning and cost 5 health points (10 over 10%, 20 over 20%). Below 5% they read "within normal range". The old +5 bonus for a cycle-free graph is gone, so 100/100 no longer sits next to an orphan warning
|
|
22
|
+
- Route Map and GraphQL Schema are not written when no routes or GraphQL schema were found. Naming them in `documentation.sections` keeps them
|
|
23
|
+
- Tests, examples, and build helpers are no longer flows. Build configs such as `webpack.config` are not flow entry points
|
|
24
|
+
|
|
25
|
+
### 1.15.4 leftovers
|
|
26
|
+
|
|
27
|
+
- `lib/ogg` is typed and grouped by `ogg`, not by sitting under `lib/`. Folders with no keyword of their own join a **Core Source** domain and a "Source Modules" layer instead of "Shared Utilities" and "Shared Libraries". `lib/common` still reads as shared utilities
|
|
28
|
+
- Hub flows skip barrels (`lib/index`), leaf helpers such as error classes, tests, and examples, so there is no "lib Integration Flow"
|
|
29
|
+
|
|
30
|
+
### Docs
|
|
31
|
+
|
|
32
|
+
- README, AI.md, MIGRATION.md, KNOWN_ISSUES.md, ROADMAP.md, ARCHITECTURE.md, CONFIGURATION.md, and `.github/copilot-instructions.md` describe the new behavior
|
|
33
|
+
|
|
34
|
+
## 1.15.4
|
|
35
|
+
|
|
36
|
+
Fixes nine output problems found by running 1.15.3 on Borewit/music-metadata (a v12 TypeScript library).
|
|
37
|
+
|
|
38
|
+
### Output accuracy
|
|
39
|
+
|
|
40
|
+
- The project name is the `package.json` name, or the real directory name. `demo --target .`, `init`, and the MCP default config no longer name the project `.`
|
|
41
|
+
- Maturity uses release version, release history (tags, or a major version of 5 or more), commit history over a year, tests, CI, documentation, and circular dependencies. A signal that cannot be measured, such as commit age in a shallow clone, is left out of the total (`Production-grade (5/6 indicators)`). The old score counted only tests, build tools, and cycles, so a 10-year-old v12 library read as "Early-stage (1/3)". The summary also says "an early-stage", not "a early-stage"
|
|
42
|
+
- Entry and barrel file names (`index`, `main`, `mod`, `__init__`) are not domain evidence. `lib/index.ts` is no longer "Search & Discovery". A `domains` hint in `.repolens.yml` still sees the full path
|
|
43
|
+
- "Core/kernel architecture" needs a directory named `core` or `kernel`. A file called `core.ts` does not make it
|
|
44
|
+
- Module descriptions use the module's own name. `lib/ogg` is no longer "Utility and helper functions" because it sits under `lib/`. Unknown folders read "<Name> module", and `common` and `shared` read "Code shared by the other modules"
|
|
45
|
+
- Circular dependencies are listed as a **Finding** in the Architecture Overview (`context.findings`), not as an architectural pattern
|
|
46
|
+
- A package importing its own name (for example `example/*.js` importing `music-metadata`) is not an external dependency. The nearest `package.json` decides, so a nested package still reports the root package as external
|
|
47
|
+
- The "unlock AI" notice lists the sections that were written with rule-based text and says AI can rewrite them. It no longer says written documents, such as Developer Onboarding, are missing
|
|
48
|
+
- Data flows with fewer than 2 steps, chains that start in `doc-gen`, `scripts`, `examples`, `docs`, or `fixtures`, and generic names (`gen`, `util`, `helper`) are dropped
|
|
49
|
+
|
|
50
|
+
### Dependencies
|
|
51
|
+
|
|
52
|
+
- `zod` 3.25.76 β 4.6.7 (GHSA-mrhx-c7xc-m3w5) and `npm audit fix` for `body-parser` (GHSA-27r3-jxmh-p828) and `fast-uri`, so the release audit passes again. The MCP server tests pass on zod 4
|
|
53
|
+
- `tests/audit-runtime.test.js` no longer requires the `braces` advisory to be printed. The registry stopped reporting it, and the waiver stays in `scripts/audit-waivers.json`
|
|
54
|
+
|
|
55
|
+
### Docs
|
|
56
|
+
|
|
57
|
+
- Added [AI_POLICY.md](AI_POLICY.md) and a pull request template with an AI-assistance disclosure. CONTRIBUTING.md and README.md link to both
|
|
58
|
+
- Roadmap: added Java and C# language support and grounded AI explanations and Q&A as items 2 and 3 of What's Next (docs/ROADMAP.md, README.md, docs/KNOWN_ISSUES.md)
|
|
59
|
+
|
|
5
60
|
## 1.15.3
|
|
6
61
|
|
|
7
62
|
### Dependency graph
|
package/README.md
CHANGED
|
@@ -100,7 +100,7 @@ Run `npx @chappibunny/repolens migrate` to automatically update your workflow fi
|
|
|
100
100
|
|
|
101
101
|
## π What It Generates
|
|
102
102
|
|
|
103
|
-
**17 document types** for three audiences β no manual writing required:
|
|
103
|
+
**17 document types** for three audiences β no manual writing required. Route Map and GraphQL Schema are skipped when the repository has no routes or GraphQL schema:
|
|
104
104
|
|
|
105
105
|
| Audience | Documents |
|
|
106
106
|
|---|---|
|
|
@@ -241,9 +241,9 @@ If `npx` reports `Unknown command: mcp`, an `.npmrc` with `min-release-age` (or
|
|
|
241
241
|
|
|
242
242
|
## GitHub Action
|
|
243
243
|
|
|
244
|
-
`action.yml` is a composite action named **RepoLens Architecture Docs**. `publish`, `demo`, and `doctor` run the published npm package (`npx --yes @chappibunny/repolens@1.15.
|
|
244
|
+
`action.yml` is a composite action named **RepoLens Architecture Docs**. `publish`, `demo`, and `doctor` run the published npm package (`npx --yes @chappibunny/repolens@1.15.5`). `comment` and `badge` run from the action checkout. Inputs are `command` (`publish`, `demo`, `doctor`, `comment`, or `badge`), `config`, `node-version`, `pr-comment`, `version`, `badge-out`, `badge-url`, and `badge-link`.
|
|
245
245
|
|
|
246
|
-
Publishing docs (the npm package at tag `v1.15.
|
|
246
|
+
Publishing docs (the npm package at tag `v1.15.5`):
|
|
247
247
|
|
|
248
248
|
```yaml
|
|
249
249
|
name: Architecture docs
|
|
@@ -259,7 +259,7 @@ jobs:
|
|
|
259
259
|
runs-on: ubuntu-latest
|
|
260
260
|
steps:
|
|
261
261
|
- uses: actions/checkout@9f698171ed81b15d1823a05fc7211befd50c8ae0 # v6.0.3
|
|
262
|
-
- uses: CHAPIBUNNY/repolens@v1.15.
|
|
262
|
+
- uses: CHAPIBUNNY/repolens@v1.15.5
|
|
263
263
|
with:
|
|
264
264
|
command: publish
|
|
265
265
|
config: .repolens.yml
|
|
@@ -267,7 +267,7 @@ jobs:
|
|
|
267
267
|
pr-comment: ${{ github.event_name == 'pull_request' && 'true' || 'false' }}
|
|
268
268
|
```
|
|
269
269
|
|
|
270
|
-
On `v1.15.2`, `pr-comment: true` runs the architecture diff from the action checkout and turns the published package's older short summary off. The diff lists modules, files, dependencies, the code-health delta, and new hotspots. It edits one sticky comment (`<!-- repolens:architecture-diff -->`) instead of adding a new comment each push. The footer is "Generated by RepoLens" and links to this repository and the [gallery](https://chapibunny.github.io/repolens/). Tag `v1.15.1` does not contain `command: comment`. Pin `v1.15.
|
|
270
|
+
On `v1.15.2`, `pr-comment: true` runs the architecture diff from the action checkout and turns the published package's older short summary off. The diff lists modules, files, dependencies, the code-health delta, and new hotspots. It edits one sticky comment (`<!-- repolens:architecture-diff -->`) instead of adding a new comment each push. The footer is "Generated by RepoLens" and links to this repository and the [gallery](https://chapibunny.github.io/repolens/). Tag `v1.15.1` does not contain `command: comment`. Pin `v1.15.5` or a commit SHA in production.
|
|
271
271
|
|
|
272
272
|
```yaml
|
|
273
273
|
name: RepoLens architecture comment
|
|
@@ -283,7 +283,7 @@ jobs:
|
|
|
283
283
|
- uses: actions/checkout@9f698171ed81b15d1823a05fc7211befd50c8ae0 # v6.0.3
|
|
284
284
|
with:
|
|
285
285
|
fetch-depth: 0
|
|
286
|
-
- uses: CHAPIBUNNY/repolens@v1.15.
|
|
286
|
+
- uses: CHAPIBUNNY/repolens@v1.15.5
|
|
287
287
|
with:
|
|
288
288
|
command: comment
|
|
289
289
|
```
|
|
@@ -292,7 +292,7 @@ jobs:
|
|
|
292
292
|
|
|
293
293
|
`pr-comment: true` on `publish`, `demo`, or `doctor` (when the action ref contains this change) runs the same comment after the package and turns the package's older comment off, so the pull request still gets one comment.
|
|
294
294
|
|
|
295
|
-
The action is listed on the GitHub Marketplace only after a release is published with **Publish this Action to the GitHub Marketplace** checked. Those steps are in [docs/RELEASE.md](docs/RELEASE.md). The tag `v1.15.
|
|
295
|
+
The action is listed on the GitHub Marketplace only after a release is published with **Publish this Action to the GitHub Marketplace** checked. Those steps are in [docs/RELEASE.md](docs/RELEASE.md). The tag `v1.15.5` has to exist before `uses: CHAPIBUNNY/repolens@v1.15.5` resolves, and `@chappibunny/repolens@1.15.5` has to be on npm before `publish` can install it. `command: comment` and `command: badge` do not install that package.
|
|
296
296
|
|
|
297
297
|
## Add the badge to your repo
|
|
298
298
|
|
|
@@ -328,7 +328,7 @@ jobs:
|
|
|
328
328
|
runs-on: ubuntu-latest
|
|
329
329
|
steps:
|
|
330
330
|
- uses: actions/checkout@9f698171ed81b15d1823a05fc7211befd50c8ae0 # v6.0.3
|
|
331
|
-
- uses: CHAPIBUNNY/repolens@v1.15.
|
|
331
|
+
- uses: CHAPIBUNNY/repolens@v1.15.5
|
|
332
332
|
with:
|
|
333
333
|
command: badge
|
|
334
334
|
badge-url: https://USER.github.io/REPO/repolens-badge.json
|
|
@@ -357,7 +357,7 @@ Gallery repositories already publish this. Each one has a [score page](https://c
|
|
|
357
357
|
|
|
358
358
|
Published system maps are Unicode diagrams drawn from import edges. RepoLens does not emit Mermaid.
|
|
359
359
|
|
|
360
|
-
The publisher set is Notion, Confluence, GitHub Wiki, Obsidian, and Markdown (`src/publishers`, 7 files). 1.14.0 adds the MCP server, the Marketplace action, and the docs badge. 1.14.1 sets the registry name to `io.github.CHAPIBUNNY/repolens`. 1.14.2 adds the gallery link to the badge line, `glama.json`, and `CITATION.cff`. 1.14.3 adds Cline setup docs and `llms-install.md`. 1.15.0 detects repository languages in `init --quick`, refuses empty scans, and adds per-command help. 1.15.1 makes `watch` exit 2 when those globs match nothing, and scores code health for Python and Go as well as JavaScript and TypeScript. 1.15.2 reads Python and Go imports in the dependency graph, skips comment and type-only imports, adds `repolens badge` and `repolens comment`, and adds gallery explained pages plus `llms.txt`. 1.15.3 skips Python `TYPE_CHECKING` imports, omits Node.js built-ins from external packages, groups Go hubs by package, and ignores test files as architecture-pattern evidence. Layout and counts are in [ARCHITECTURE.md](docs/ARCHITECTURE.md).
|
|
360
|
+
The publisher set is Notion, Confluence, GitHub Wiki, Obsidian, and Markdown (`src/publishers`, 7 files). 1.14.0 adds the MCP server, the Marketplace action, and the docs badge. 1.14.1 sets the registry name to `io.github.CHAPIBUNNY/repolens`. 1.14.2 adds the gallery link to the badge line, `glama.json`, and `CITATION.cff`. 1.14.3 adds Cline setup docs and `llms-install.md`. 1.15.0 detects repository languages in `init --quick`, refuses empty scans, and adds per-command help. 1.15.1 makes `watch` exit 2 when those globs match nothing, and scores code health for Python and Go as well as JavaScript and TypeScript. 1.15.2 reads Python and Go imports in the dependency graph, skips comment and type-only imports, adds `repolens badge` and `repolens comment`, and adds gallery explained pages plus `llms.txt`. 1.15.3 skips Python `TYPE_CHECKING` imports, omits Node.js built-ins from external packages, groups Go hubs by package, and ignores test files as architecture-pattern evidence. 1.15.4 names the project from `package.json`, scores maturity from version, history, tests, CI, and docs, reports circular dependencies as findings, drops self-imports and noise data flows, and stops classifying `index` and `core` files by name. 1.15.5 reads a flat `src/` as one module, tells a library from a CLI by its `package.json`, splits runtime from development packages, keeps tests, examples, and build scripts out of hubs and security severity, and skips empty Route Map and GraphQL pages. Layout and counts are in [ARCHITECTURE.md](docs/ARCHITECTURE.md).
|
|
361
361
|
|
|
362
362
|
### System Overview (Technical Profile)
|
|
363
363
|
|
|
@@ -431,6 +431,8 @@ When you open a pull request, RepoLens posts:
|
|
|
431
431
|
- **Build plugins**: Extend RepoLens with custom renderers and publishers
|
|
432
432
|
- **Share feedback**: `npx @chappibunny/repolens feedback`
|
|
433
433
|
|
|
434
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) and the [AI Policy](AI_POLICY.md). AI-assisted PRs are welcome when disclosed, reviewed, and tested.
|
|
435
|
+
|
|
434
436
|
---
|
|
435
437
|
|
|
436
438
|
## πΊοΈ Roadmap
|
|
@@ -446,6 +448,8 @@ v1.0+ features complete β CLI, config schema, and plugin interface are frozen.
|
|
|
446
448
|
|
|
447
449
|
**Next:**
|
|
448
450
|
- [ ] GitHub App for automated setup and status checks
|
|
451
|
+
- [ ] Java and C# language support
|
|
452
|
+
- [ ] Grounded AI explanations and Q&A (`repolens ask`, PR comment, MCP, VS Code hover)
|
|
449
453
|
- [ ] Slack notifications
|
|
450
454
|
- [ ] Custom webhook support
|
|
451
455
|
- [ ] Cross-repository architecture analysis
|
package/llms-install.md
CHANGED
|
@@ -19,3 +19,5 @@
|
|
|
19
19
|
10. `repolens badge` prints a shields.io code-health endpoint. `repolens comment --base <ref> --head <ref>` prints an architecture diff. On GitHub, `command: comment` in `action.yml` posts one sticky pull request comment (`pull-requests: write` only). Fork pull requests get a job summary instead of a comment. These two action modes run from the action checkout. Both CLI commands ship in 1.15.2.
|
|
20
20
|
11. CLI (1.15.2): the dependency graph includes Python and Go imports. Comments, strings, and TypeScript type-only imports are not edges. Go `*_test.go` files are not separate modules. Pattern text cites the matching path or import. "Custom React hooks" requires a `react` import.
|
|
21
21
|
12. CLI (1.15.3): Python imports under `if TYPE_CHECKING:` (including `typing.TYPE_CHECKING` and `import typing as t`) are not cycle edges. Node.js built-ins are not external packages. Go hub rows are packages. Test files are not architecture-pattern evidence, and "API route pattern" requires a route directory.
|
|
22
|
+
13. CLI (1.15.4): the project name comes from `package.json` or the real directory (never `.`). Maturity uses version, history, tests, CI, and docs. Circular dependencies are findings, not architectural patterns. A package's own name is not an external dependency. `index` and `main` files are not classified by name. Noise data flows are dropped.
|
|
23
|
+
14. CLI (1.15.5): a flat `src/` is one module. A package with `main`, `module`, or `exports` is a library, not a CLI. Hubs and security severity ignore tests, examples, and build scripts. External packages are split into runtime and development tooling. Route Map and GraphQL Schema are skipped when empty.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chappibunny/repolens",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.5",
|
|
4
4
|
"mcpName": "io.github.CHAPIBUNNY/repolens",
|
|
5
5
|
"description": "AI-assisted documentation intelligence system for technical and non-technical audiences",
|
|
6
6
|
"license": "MIT",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"dotenv": "^18.0.8",
|
|
91
91
|
"fast-glob": "^3.3.3",
|
|
92
92
|
"js-yaml": "^4.3.2",
|
|
93
|
-
"zod": "
|
|
93
|
+
"zod": "4.6.7"
|
|
94
94
|
},
|
|
95
95
|
"optionalDependencies": {
|
|
96
96
|
"@sentry/node": "^10.42.0"
|