Add --json flag that emits all results as a JSON array. Schema always uses min/avg/max per phase (consistent regardless of -n); phases absent from the request are omitted from the phases object. Output is buffered until all URLs complete, then printed as one pretty-printed array. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
1.9 KiB
Markdown
52 lines
1.9 KiB
Markdown
# Changelog
|
|
|
|
All completed features are logged here in reverse-chronological order.
|
|
|
|
---
|
|
|
|
## 2026-07-01 00:08 — JSON output flag (Go, Step 4)
|
|
|
|
- `--json` flag emits a JSON array with one entry per URL
|
|
- Schema always uses min/avg/max shape (consistent regardless of `-n`)
|
|
- Phases absent from the request (e.g. TLS on HTTP) are omitted from the JSON object
|
|
- Failed URLs are excluded from JSON output and reported to stderr
|
|
- Text output unchanged and remains the default
|
|
|
|
---
|
|
|
|
## 2026-07-01 00:08 — Multiple URLs + sampling (Go, Step 3)
|
|
|
|
- `-n`/`--count` flag repeats each URL N times and reports min/avg/max per phase
|
|
- `probe.Summarize` aggregates a slice of Results into per-phase PhaseStats
|
|
- Multi-sample output shows an aligned min/avg/max table with a header row
|
|
- Single-sample output (n=1) is unchanged from Step 2
|
|
|
|
---
|
|
|
|
## 2026-07-01 00:08 — Per-phase breakdown (Go, Step 2)
|
|
|
|
- Instrumented requests with `net/http/httptrace.ClientTrace`
|
|
- DNS lookup, TCP connect, TLS handshake, Server/TTFB, Transfer, Total phases
|
|
- TLS row omitted automatically for plain `http://` URLs
|
|
- Aligned text output with separator before Total
|
|
|
|
---
|
|
|
|
## 2026-07-01 00:08 — Simple total latency (Go, Step 1)
|
|
|
|
- `probe.Measure` performs an HTTP GET and records wall-clock total time
|
|
- `main.go` prints URL, HTTP status code, and total duration for each URL
|
|
- Exits with code 1 if any URL fails
|
|
- Multiple URLs accepted as positional arguments
|
|
|
|
---
|
|
|
|
## 2026-07-01 00:08 — Project scaffold (Go, Step 0)
|
|
|
|
- Created project structure: `go/`, `python/`, `docs/plans/`, `docs/usage/`
|
|
- Initialised Go module `latprobe` (`go/go.mod`)
|
|
- Minimal `go/main.go` that prints usage and exits cleanly when no URL is given
|
|
- Stub `go/internal/probe/probe.go` defining the `Result` type and `Measure` signature
|
|
- Foundation files: `README.md`, `CLAUDE.md`, `CHANGELOG.md`
|
|
- Saved initial plan to `docs/plans/2026-07-01-00-08-go-latency-tool.md`
|