From bdeb56c390bdd3fe4f84249d5dc7bcbaf5c8bfa0 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Tue, 8 Sep 2026 02:00:53 -0700 Subject: [PATCH] fix: trim per-install-id line from Altimate Base consent gate; soften rate-limit wording Two copy changes to the DialogAltimateBaseConfirm consent disclosure: - Drop "Logs are linked to a persistent per-installation identifier." from the gate. The persistent-linkage detail remains disclosed in docs/docs/configure/providers.md ("Data handling"). - "Usage is rate limited" -> "Usage can be rate limited". Update the code comment to match, and the dialog-altimate-base.test.tsx assertions (plus a guard that the per-installation-identifier line stays out of the gate). Client-side copy only; ships with the next release. Co-Authored-By: Claude Opus 4.8 --- packages/tui/src/component/altimate-onboarding.tsx | 9 +++++---- packages/tui/test/cli/tui/dialog-altimate-base.test.tsx | 4 +++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/tui/src/component/altimate-onboarding.tsx b/packages/tui/src/component/altimate-onboarding.tsx index 637263e16..4cdd65ca4 100644 --- a/packages/tui/src/component/altimate-onboarding.tsx +++ b/packages/tui/src/component/altimate-onboarding.tsx @@ -347,11 +347,12 @@ export function DialogModelWelcome(props: { // altimate_change start — surfaced in the DialogAltimateBaseConfirm consent gate before any Base // credential is minted. This is the text a user actually consents against before any registration -// request, so it must disclose that requests are linkable across launches — not defer that to -// docs/docs/configure/providers.md, which a user never sees before accepting. Keep this in sync -// with that fuller "Data handling" note. +// request, so it states the core data terms up front: requests/responses may be logged and used to +// improve Altimate's products (including the model), so users should not send secrets. The +// persistent per-install-id linkage detail is disclosed in docs/docs/configure/providers.md +// ("Data handling"), not repeated in this gate; keep the core terms in sync with that note. export const ALTIMATE_BASE_DISCLOSURE = - "Altimate Base is free and requires no signup. Requests and responses may be logged and used to improve Altimate's products, including the model. Secrets are automatically masked before storage, but don't rely on it — avoid sending secrets or confidential code. Logs are linked to a persistent per-installation identifier. Usage is rate limited." + "Altimate Base is free and requires no signup. Requests and responses may be logged and used to improve Altimate's products, including the model. Secrets are automatically masked before storage, but don't rely on it — avoid sending secrets or confidential code. Usage can be rate limited." // altimate_change end type RegisterOutcome = diff --git a/packages/tui/test/cli/tui/dialog-altimate-base.test.tsx b/packages/tui/test/cli/tui/dialog-altimate-base.test.tsx index 15f352229..a25e0bd18 100644 --- a/packages/tui/test/cli/tui/dialog-altimate-base.test.tsx +++ b/packages/tui/test/cli/tui/dialog-altimate-base.test.tsx @@ -205,7 +205,9 @@ test.serial("Altimate Base shows the privacy disclosure before registration and const confirm = await mountConfirm() try { const frame = confirm.app.captureCharFrame() - expect(confirm.disclosure).toContain("Requests and responses may be logged") + expect(confirm.disclosure).toContain("Requests and responses may be logged and used") + // The persistent per-install-id linkage line is intentionally not in the gate (it lives in docs). + expect(confirm.disclosure).not.toContain("per-installation identifier") expect(frame).toContain("Use Altimate Base?") expect(frame.replace(/\s+/g, " ")).toContain("Requests and responses may be logged and used") expect(frame).toContain("No — pick something else")