| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(telemetry): count anonymous usage by default with durable opt-out Usage counting no longer waits for an accepted processor notice. A missing preference resolves on; a persisted `telemetry = false`, a decline recorded under the earlier opt-in notice, unreadable privacy state, and the environment/run kill switches all stay off. Schema 3 carries `notice_version` 5 in place of `consent_version`; the v1/v2 goldens are untouched and a new v3 golden pins the envelope. Disclosure is presentation, never acceptance: headless surfaces print one stderr line per policy revision and record only that it was shown; the TUI draws its localized toast (15 packs) and records the same display marker from the event loop instead of a stray stderr line. Display bookkeeping and Settings/CLI preference writes share a non-blocking fd lock so a stale disclosure write cannot erase a concurrent decline; corrupt state is never replaced with defaults. `config set telemetry false` durably disables and wipes; `config set telemetry true` deliberately re-enables through the same two-register Settings transition. `doctor` reports recorded opt-outs and unreadable privacy state instead of "consent_required". Gates on this exact tree (macOS, offline cargo): - cargo fmt --check: pass - workspace clippy --all-targets --all-features -D warnings: pass - nextest --workspace --all-features --profile ci: 14284 passed, 0 failed, 14 skipped (1 non-failing leak observation, hooks executor EOF test) - focused: config+telemetry libs 687/0/1; CLI/TUI telemetry+localization +doctor selection 229/0; real CLI process kill-switch dispatch 5/0; TUI integration telemetry_contract 15/0; credential handoff dispatch 3/0 - `npm test && npm run check:web` do not exist in this repository and were not run. No live ingest, PostHog delivery, hosted CI, install, or release is claimed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bs5x11yXAg3sJ4giZf4krF | 13 天前 |