v1.0.3
Deprecated — use v0.10.0.
Changelog
- d320cd1: fix(hints): replace ghost-command references in error hints (@gdameneses)
- 7f509dc: fix: cross-reviewer Importants from Round 1 (@gdameneses)
- 2f70a0f: feat(security): --api-secret-stdin / --api-secret-file across commands (@gdameneses)
- b196bca: feat(security): auth overwrite guard + masked config get (@gdameneses)
- 18a2e5f: refactor(validation): drop package-global lastWarnings; return warnings (@gdameneses)
- ad5a074: security(installers): verify sha256 + sigstore on install.sh and npm/install.js (@gdameneses)
- 570539c: security(installers): close sigstore-downgrade gap; loud SKIP banner; execFileSync (@gdameneses)
- 1ff3a63: fix(security): cap --api-secret-stdin/-file at 4KiB; friendly file errors (@gdameneses)
- a1e8d87: fix(auth): unify overwrite-refused exit code on ErrConflict (exit 7) (@gdameneses)
- e73de68: fix: four polish nits from Round 3 reviewers (@gdameneses)
- 3ebbe22: fix(auth): honor --profile + URLBOX_PROFILE; reject unknown names (@gdameneses)
- fcdd466: fix(doctor): treat non-2xx auth response as failure, not "credentials valid" (@gdameneses)
- 7d24add: fix(render): preflight --output sandbox + writability before API call (@gdameneses)
- 655b40e: fix: input/output validation polish (M2, M3, M4) (@gdameneses)
- 54c1bf1: fix(render): extend large-int guard to the --json path (@gdameneses)
- afdcdfb: fix(profile): reject unknown URLBOX_PROFILE on every command (Adv-2) (@gdameneses)
- 0500afc: fix(config): validate profile names at creation time (Adv-4) (@gdameneses)
- 471bf74: fix(doctor): bump per-check timeout to 10s for cold-container resilience (@gdameneses)
- deb5677: fix(config): get/set honor default_profile when 2+ profiles exist (CI-2) (@gdameneses)
- f790420: fix(api): route InvalidURLError to ErrValidation, not ErrUsage (First-2) (@gdameneses)
- b7824ef: fix(link): accept positional URL; replace circular auth hint (Lows) (@gdameneses)
- 6bef881: fix: text mode = summary-only; render quiet = single useful scalar (@gdameneses)
- 1c12bb6: fix(render): three input-validation lows from Round 5 (@gdameneses)
- 2d92313: fix(secret): single validated path for every secret-write (class-fix) (@gdameneses)
- b2e3666: fix(render): JSON int-range guard walks the whole tree (class-fix) (@gdameneses)
- 37d6dec: fix(doctor): route through config.Resolve so --profile/URLBOX_PROFILE are honored (class-fix) (@gdameneses)
- 1f0f7bd: fix(suggester): scope candidates to active command (class-fix) (@gdameneses)
- 7d96c5f: fix(suggester): scope unknown-command suggestions to the parent path (@gdameneses)
- 39cb1f5: fix(config): file lock around all config writes (class-fix) (@gdameneses)
- dcd5365: fix(auth): reject invisible Unicode in API secrets (class-fix) (@gdameneses)
- 45e4324: fix(cli): align profile-not-found envelopes across CLI (class-fix) (@gdameneses)
- ec553e3: fix(auth): secret validation parity + Mn marks + invalid UTF-8 (class-fix) (@gdameneses)
- 8bf594d: fix(config): validate api_host on every write path (class-fix) (@gdameneses)
- 0d6d93d: fix(cli): wire repo overlay loader into every Resolve call site (class-fix) (@gdameneses)
- ba88357: fix(cli): root-level errors carry command field; add version subcommand (class-fix) (@gdameneses)
- a0a6e9c: fix(doctor): scalar quiet mode + exit code matches failure category (class-fix) (@gdameneses)
- 324b29a: fix(config): stale-lock self-recovery + correct exit code class (class-fix) (@gdameneses)
- f93b2d0: fix(render): reject >2^63 ints + duplicate JSON keys (class-fix) (@gdameneses)
- 7108c48: fix(cli): output-format consistencies bundle (class-fix) (@gdameneses)
- 9558f11: fix(cli): reject explicit empty --profile at flag-resolution time (class-fix) (@gdameneses)
- 4192f0b: fix(output): apply --jq to error envelopes (class-fix) (@gdameneses)
- f97ccb3: docs(aliases): clarify shared /v1/screenshot endpoint + pdf full-page default (@gdameneses)
- b354d79: refactor(cmd): inline validateSecretValue shim, move tests to config (@gdameneses)
- e895e7c: chore(config): delete dead ResolveAPISecret + APISecretSource (review H1) (@gdameneses)
- 6cabfa8: fix(config): classify read errors by category — Forbidden/Usage, not Server (review M1) (@gdameneses)
- 053a0a2: docs(auth): clarify that the repo overlay's profile field is ignored (review M4) (@gdameneses)
- 6c8a815: docs(changelog): add v1.0.3 entry (review M2) (@gdameneses)