Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ target/
.DS_Store
brain/
plan/
node_modules/
/images/
!docs/images/
/wiredoctor-report.html
# Test-run byproduct: regenerated on every mvn test, not a deliverable
wiredoctor-autoconfigure/wiredoctor-report.html
.claude/
38 changes: 38 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,44 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.1.4] - 2026-08-25

Honest media. The screenshots in the README and the report tour were captured on
0.7.1 — four releases of UI ago — so the front door showed a product that no
longer existed. Recapturing them turned up two real bugs, both fixed here. No
API, schema, or configuration changes.

### Fixed

- **The startup-time trend chart was empty on diff runs.** `trendHistory` was
only put on the report inside the `baseline-write=true` branch, so the run you
actually do day to day — diff mode, gates armed — rendered "Need at least 2
baseline writes" even with a full history committed in the baseline. The
history is now handed to the report in diff mode too. The current run is not
appended: it is not a baseline entry.
- **Every generated report was stamped `dev`.** The header chip reads the
version from the jar manifest, and the build never wrote an
`Implementation-Version` into it. The manifest now carries it, so the chip
shows the release that produced the report.

### Changed

- **All report media recaptured from a real 1.1.4 run** — start.spring.io app on
Boot 4.1.x, 429 beans, 436 edges, with a genuine dependency cycle, a slow
`@PostConstruct` bean, an untouched exporter, first-touch ghost tracking on and
three baseline writes behind the trend chart. Seven screenshots plus three
GIFs (full tour, graph drill-down, timing charts). The report tour is rewritten
against these numbers, and its "captured on 0.7.1" disclaimer is gone.
- **`sample/v1.1.4/`** holds the complete matching set — report, JSON, baseline,
diff, ghost report and gate status — and is what the live "open this report"
links point at. The 0.10.0 report stays in `sample/test2/` for comparison.

### Added

- **`tools/capture-media.js`** drives a real generated report in a headless
browser and writes exactly the files the docs embed, so the media cannot
quietly drift from what the report renders again.

## [1.1.3] - 2026-08-24

Report readability pass. 1.1.2 fixed what the report *claimed*; this release
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# 🩺 WireDoctor

[![Maven Central](https://img.shields.io/maven-central/v/io.github.ddsha441981/wiredoctor-autoconfigure.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.ddsha441981/wiredoctor-autoconfigure) [![CI Tests](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml/badge.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![Tests](https://img.shields.io/badge/Tests-259%20passed-success.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![License](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE) [![Awesome Java](https://awesome.re/mentioned-badge.svg)](https://github.com/akullpp/awesome-java#architecture)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.ddsha441981/wiredoctor-autoconfigure.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.ddsha441981/wiredoctor-autoconfigure) [![CI Tests](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml/badge.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![Tests](https://img.shields.io/badge/Tests-261%20passed-success.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![License](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE) [![Awesome Java](https://awesome.re/mentioned-badge.svg)](https://github.com/akullpp/awesome-java#architecture)

> *"Your bean graph has a story. WireDoctor reads it."*

WireDoctor is a runtime diagnostic and architectural analysis tool for Spring Boot. Add one dependency — it hooks into the real, resolved `ApplicationContext` at startup and turns it into an interactive report, honest advice, and CI gates. **Zero-intrusion, zero-dashboard-server, pure insights.**

![WireDoctor report — Overview tab](docs/images/overview.png)
![WireDoctor report — a tour of every tab](docs/images/report-tour.gif)

*Captured from a real run against start.spring.io (Boot 4.0.x, 390 beans) with performance gates armed — the red `GATE FAIL` chip is a genuinely tripped gate. **[View the full docs →](https://ddsha441981.github.io/wiredoctor/)***
*A real run against start.spring.io (Boot 4.1.x, 429 beans, 436 edges) on WireDoctor 1.1.4 — the cycle, the ghosts and the timings in the report are all genuinely from that app. **[View the full docs →](https://ddsha441981.github.io/wiredoctor/)***

**[▶ Open this exact report live in your browser](https://ddsha441981.github.io/wiredoctor/sample/test2/wiredoctor-report.html)** — no install needed.
**[▶ Open this exact report live in your browser](https://ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html)** — no install needed.

---

Expand All @@ -23,13 +23,13 @@ Add the dependency — that's it. WireDoctor runs at startup, writes `wiredoctor
<dependency>
<groupId>io.github.ddsha441981</groupId>
<artifactId>wiredoctor-autoconfigure</artifactId>
<version>1.1.0</version>
<version>1.1.4</version>
</dependency>
```

**Gradle:**
```groovy
implementation 'io.github.ddsha441981:wiredoctor-autoconfigure:1.1.0'
implementation 'io.github.ddsha441981:wiredoctor-autoconfigure:1.1.4'
```

Want CI gates? Capture a baseline once, commit it, arm the gates:
Expand Down Expand Up @@ -84,7 +84,7 @@ Notes:
| [Security posture](https://ddsha441981.github.io/wiredoctor/security-posture.html) | What the reports expose, offline-only network behavior |
| [Known Limitations](https://ddsha441981.github.io/wiredoctor/known-limitations.html) | Honest heuristics and what the tool cannot guarantee |

Pre-generated sample reports (from real apps, including start.spring.io) are in [`sample/`](sample/) — or **[view the start.spring.io report live](https://ddsha441981.github.io/wiredoctor/sample/test2/wiredoctor-report.html)** without cloning anything.
Pre-generated sample reports (from real apps, including start.spring.io) are in [`sample/`](sample/) — or **[view the start.spring.io report live](https://ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html)** without cloning anything.

---

Expand Down
Binary file modified docs/images/conditions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/cycle-detection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/ghosts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/graph-drilldown.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/graph-focus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/report-tour.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/smells.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/timing-charts.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/timing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Add one dependency — WireDoctor hooks into the real, resolved `ApplicationCont
<dependency>
<groupId>io.github.ddsha441981</groupId>
<artifactId>wiredoctor-autoconfigure</artifactId>
<version>1.1.0</version>
<version>1.1.4</version>
</dependency>
```

Expand Down
Loading
Loading