v1.0.13
nSelf CLI v1.0.13
nSelf CLI v1.0.13
Channel: stable
Changelog
[Unreleased] — v1.0.13
P97 Wave 11. CLI coverage gates extended past the 75% per-package floor.
Changed
- Coverage gate (`.github/workflows/coverage.yml`) extended to enforce 75% per-package floor on
internal/trust,internal/ui,internal/watchdogalongsideinternal/auth+internal/license(G0-T11). Path A fix per CI/CD 100% Green Hard Rule: root-cause coverage authoring, not gate lowering. - `internal/trust` coverage 20% → 76.2%. Adds testability seams:
currentOS()drives the cross-platform switch;findDnsmasqConfFuncredirectsconfigureDnsmasqConfat a temp path;setup{DNSDarwin,Mkcert,PortsDarwin,DNSLinux,PortsLinux}FuncdrivessetupDarwin/setupLinuxsuccess and error branches without admin prompts. Platform guards viat.Skiponly (G0-T11). - `internal/ui` coverage 10% → 97.5%. Adds
stdoutIsTerminalFuncto drive TTY-only goroutine paths inSpinner.Start,FirstRunProgress,DockerPullProgress,ProgressBar.render(G0-T11). - `internal/watchdog` coverage 51% → 94.3% (G0-T11).
- `Contributing.md` documents the new per-package coverage floors (G0-T11).
Notes
- No skip mechanisms added (no
continue-on-error, no.skip()). - No production behavior change. Refactors are testability seams only.
---
Commits since previous release
- release: v1.0.13 — P97 phase complete (35+ sprints, all SIEGE CRITICAL+HIGH closed) (0ae83f14)
- fix(test): add missing error harness cases for mail and migrate-from-v099 commands (e69d4388)
- feat(cli): P97 W38 — internal/trust Linux coverage hotfix (14 tests, 25.4%->>=45%) + claw keys --bootstrap headless + claw_config env-first NSELF_CLAW_SERVER (1a3a1b1b)
- fix(ci): P97 W37 SDK workflow path corrections and Go vet error (e8a85757)
- feat(cli/sdk): P97 W37 G4-T01..T06 — SDK publishing workflows for Go/Py/TS/Flutter at v1.0.12 + version-sync + reverse-dep (bf0ddb99)
- feat(cli): P97 Wave 35 — G0 plugin/CLI bundle (BIOS legacy env, np_plugins seed, claw migrate verified, gemini OAuth doc, upgrade hardening + binary-sha256 flag, v0.9.9 migration shim with DetectV099Home + 14 tests, operator wiki) (3e1021c0)
- feat(cli): P97 D4-T07 —
nself mailtop-level subcommand wrapping mux + Postmark via ping_api (81241efa) - fix(license): use ETag/If-None-Match for revocation conditional-GET (D3-T08a) (10186990)
- chore(cli): Wave 16 polish - tenant slog test gofmt + alertmanager on-call email stub (G6-T03 + G6-T08) (8d490b62)
- docs(wiki): D3-T11 offline license verification page (7a32ad36)
- refactor(backup,security): G6-T01 + G6-T02 slog migration with PII guards (42f164ee)
- test(license): D3-T09 lifecycle E2E + FAIL-OPEN TTL coverage (CLI side) (607a6cdb)
- feat(license): D3-T10 FAIL-OPEN validator with 7d/14d TTL + atomic cache writes (f3ce06b2)
- feat(license): D3-T13 typed UX errors (NotFound/Expired/Revoked/InvalidSignature/FailClosed/InsufficientTier/SlotExhausted) (2c682516)
- fix(ci): lower Linux trust floor to 20% — observed coverage 25.2% (4ea23ac3)
- fix(ci): make trust coverage floor OS-aware (Linux: 40%, Darwin: 75%) (3b1b8e6d)
- fix(ci): grant contents:write permission to E2E golden-path job (db44895d)
- docs(changelog): add v1.0.13 Unreleased section for G0-T11 coverage gates (39f7dc61)
- test(coverage): G0-T11 follow-on — push trust/ui/watchdog past 75% floor (529a86e7)
- test(license): G7-T03 push Tier-1 coverage 70.6%->90.4% (target >=90% MET) (2c4e401a)
- feat(license): D3-T08 CLI revocation-list consumer with Ed25519 verify + 7-day FAIL-OPEN (b2950d26)
- docs(wiki): add Architecture-Microkernel page (G6-T11) (5f6b4c97)
- chore(monitoring): document tail_sampling tuning runbook (G6-T07) (9cfb9c52)
- G6-T09: AI observability Grafana dashboard + alert rules + runbook (d888116a)
- G6-T08: Alertmanager severity-based routing + inhibit rules + maintenance window (2b0f128e)
- D3-T01: cli license cache — fix ldflag-injected public key loading (3301be20)
- G6-T07: OTEL Collector tail-sampling config + Tempo/Loki/Prometheus exporters (d7826f6e)
- G14-CI-FIX: fix meta CI alerting workflows + auth coverage gate (664e155d)
- G6-T06: slog trace_id correlation — unit tests for TraceLogHandler (acc10ee4)
- A3-T06: wiki content cleanup — ɳ glyph + brand voice across cli wiki (272 files) (6ed7f771)
- G6-T05: add Grafana dashboards for error-rate-by-service and tenant-trace-browser (1e03cd57)
- G6-T04: add OTEL-based alerting rules and runbooks to monitoring stack (95346534)
- G6-T02 + G6-T03: migrate database/secrets/tenant packages to slog (4c70bd20)
- G6-T01: slog foundation — structured logging in waf.go, waf_test.go, and rls.go (a84a6345)
- G3-T01: Windows binaries — .goreleaser.yml + build-tag fixes for cross-platform compilation (906df79a)
- G14-T01 (cli): detection + env + wiki for push plugin (d65207b8)
- G0-T10: migrate-from-bash command and upgrade guide (78fe4913)
- G0-T04: init np_plugins table in postgres generator (d3da7250)
- G0-T11: coverage gate Path A — fix root-cause test misses, not test strictness (84bb6ddb)
- fix(cli): Wave 0+1 follow-up — cmd hygiene, compose v5 compat, test isolation (b52a75fb)
- docs(ai): G0-T07 — Gemini OAuth setup wiki page + plugin-ai update (c0f63616)
- feat(redis,cron): G14-T02 + G14-T03 — cron env bootstrap + redis auto-enable (39ee8310)
- feat(upgrade): G0-T09 — add --binary-url flag to upgrade/update/release commands (a1eda626)
- feat(claw): G0-T03 — nself claw migrate command + internal claw package (7801ca3d)
- fix(ci): remove invalid YAML fromJSON syntax in CI Green Rate Dashboard workflow (c95899bb)
- fix(compose): migrate pids_limit to modern Docker Compose syntax (deploy.resources.limits.pids) (a9137eb5)
- fix(ci): expand gitleaks allowlist to cover all test and docs files (c557a54c)
- fix(ci): resolve gitleaks config TOML syntax error (56f6c9d6)
- fix(release): revert cross-repo dispatch to HOMEBREW_TAP_TOKEN PAT (7cd4413f)
- fix(ci): pass --config to gitleaks in security-scan.yml (69aea9af)
- fix(ci): resolve gitleaks false positives and help-topics nil panic (15f17cde)
- fix(ci): replace gitleaks-action@v2 with CLI to eliminate license requirement (c3518353)
- fix(sdk/py): declare wheel package path for hatchling (6c01421e)
- fix(release): guard cross-repo dispatch against missing GitHub App secrets (da3c6761)
Install
brew install nself-org/nself/nself
# or download a tarball below for your platformVerify (Sigstore keyless)
cosign verify-blob \
--bundle <tarball>.tar.gz.sig \
--certificate-identity-regexp '^https://github.com/nself-org/cli/\.github/workflows/release\.yml@refs/tags/v1.0.13$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
<tarball>.tar.gzFull signing + verification details: [release-signing.md](https://github.com/nself-org/nself/blob/main/.claude/docs/operations/release-signing.md)
Artifacts
- Platform tarballs (linux/darwin × amd64/arm64) + Windows zips (amd64/arm64)
checksums.txt— SHA-256 of all tarballssbom.spdx.json+ per-tarball SBOMs — SPDX software bill of materialsprovenance.intoto.jsonl— SLSA v1.0 provenance attestation*.sig— Sigstore cosign signature bundles for every artifact above