From 8c0618e15825101352844d8c8a6f639b82c18f9f Mon Sep 17 00:00:00 2001 From: Quinn Milionis Date: Fri, 11 Sep 2026 10:25:14 -0700 Subject: [PATCH] 1.0 polish: chart rendering, docs accuracy, CI (part of #29) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed for a clean rebase onto main after v0.5.0 landed, and reverted the changelog.d/ fragment system in favor of a direct CHANGELOG.md edit (dropped per team discussion — more process than this repo's PR concurrency warrants). Functional content is unchanged from the original review. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01BK3fzED9ksTWsvoPfsEwpS --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb21cdf..e0a087a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ## Pending +### Added + +- `Example:` blocks in `--help` for `scout jobs metrics`, `scout traces list`, `scout metrics get` and `scout endpoints metrics`, showing both the encoded-id and full-name forms (#29) +- Client-side `--type` validation on `scout metrics get` and `scout endpoints metrics`, listing the valid types instead of round-tripping to the server for a 422 (#29) +- `scout auth status` prints the config file path in use (#29) +- CI runs `gofmt -l` and `go vet ./...` (#29) + ### Changed - `scout usage --app ` (without `--by-day`) now filters to that one app instead of silently reporting every app, matching `--by-day --app ` (#29) @@ -9,6 +16,8 @@ - `scout jobs metrics --type latency --json` renames the API's `total` sub-series to `execution_time_total`, which is what it actually holds; other metric types are unchanged (#29) - `scout errors show` omits the `Count:` line when the API reports 0, which it does for every error group even when `errors list` shows a real count (#29) - `scout insights show` prints nested fields as indented `key: value` pairs and empty values as `—`, instead of leaking Go's `map[...]` and `` formatting (#29) +- Table cells are capped at 60 display columns with an ellipsis, so one long URI no longer stretches a table past a normal terminal width; `--json` output is uncapped (#29) +- Chart titles show a decoded endpoint name and the app's name instead of a raw Base64 endpoint id and "App #6" (#29) ### Fixed @@ -23,6 +32,19 @@ - `--app 0` and negative app ids now report an invalid value instead of "no app specified" (#29) - `scout traces show` on a 404 now explains that background job traces have no detail endpoint (#29) - `scout insights show` field order is now stable; it previously ranged over a Go map and printed a different order every run (#29) +- Chart downsampling keeps the largest-magnitude value of each bucket instead of picking one point by index, so a spike between sampled points is no longer invisible in the plotted line (#29) +- Chart Min/Max/Avg and the plotted line exclude the trailing partial time bucket, which dragged the reported range toward zero (#29) +- Large millisecond chart values promote to seconds, so stats read `5.7s` rather than `5.7kms` (#29) +- The chart title renders once, as a styled header, rather than also as the chart library's own caption (#29) +- Charts always show `Summary:`, including a genuine zero, matching every other stat on the line (#29) +- README documents the credentials file path per platform; `os.UserConfigDir` resolves to `~/Library/Application Support` on macOS, not `~/.config` (#29) +- Root `--help` lists `anomalies`, `insights`, `usage` and `billing`, and `--from` help includes the `2w` unit (#29) +- README's errors and traces examples reference the list command that produces an id rather than hardcoded ids that no longer resolve (#29) +- `scout billing` usage bars show one block for any nonzero usage instead of rendering empty below 2.5% (#29) +- `scout apps show` reports `last_reported_at`, filling it from the list payload the single-app payload omits (#29) +- API errors no longer repeat an HTTP status text that the response body only duplicates ("Not Found: Not Found") (#29) +- String truncation in tables, the span tree and API error bodies counts graphemes rather than bytes, so it cannot split a multibyte character (#29) +- `scout setup ` matches framework names case-insensitively and its error points at `scout setup` with no arguments for the valid list (#29) ## [0.5.0] - 2026-09-10