feat(privacy): backend-backed capability privacy metadata + PrivacyPanel#760
Conversation
Adds optional `CapabilityPrivacy { leaves_device, data_kind, destinations }`
to the about_app capability catalog so the in-app Privacy surface can be
backend-backed instead of hand-maintained. Twelve representative capabilities
are annotated for the first audited set (raw/local, derived/backend,
credentials, diagnostics, model download); remaining entries default to
None and are simply not surfaced. Wire format stays backward compatible
via skip_serializing_if.
Replaces the hand-maintained privacy rows with data fetched from openhuman.about_app_list. Only capabilities that ship privacy metadata are rendered; loading and RPC failure both degrade gracefully and the analytics toggle plus explanatory copy remain intact. Adds a small typed client (utils/tauriCommands/aboutApp.ts) and focused vitest coverage for render, omission of unannotated entries, and RPC failure.
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 31 minutes and 40 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
… WelcomeStep test - Rebase onto upstream/main (20 commits since PR merge base) - Resolve PrivacyPanel.tsx conflict: keep upstream capability-backed dynamic privacy list (PR tinyhumansai#760) rather than the static whatLeavesItems fallback — the dynamic system supersedes the static one - Resolve WelcomeStep.tsx conflict: keep simplified interface from upstream (nextDisabled/nextLoading/nextLoadingLabel removed) plus WhatLeavesLink footer from this PR - Resolve login-flow.spec.ts conflict: remove ReferralApplyStep comment (step was removed in upstream PR tinyhumansai#772), keep ContextGatheringStep user-driven gate copy from this PR - Fix WelcomeStep.test.tsx: remove test that passes now-removed props (nextDisabled, nextLoading, nextLoadingLabel) — update to verify CTA is always enabled in simplified interface - Apply Prettier formatting across files reformatted post-rebase - All quality checks pass: typecheck clean, lint 0 errors, format unchanged, 534 unit tests passed (2 pre-existing skips)
…nel (tinyhumansai#760) * feat(about_app): add capability privacy metadata Adds optional `CapabilityPrivacy { leaves_device, data_kind, destinations }` to the about_app capability catalog so the in-app Privacy surface can be backend-backed instead of hand-maintained. Twelve representative capabilities are annotated for the first audited set (raw/local, derived/backend, credentials, diagnostics, model download); remaining entries default to None and are simply not surfaced. Wire format stays backward compatible via skip_serializing_if. * feat(settings): drive privacy panel from about_app capabilities Replaces the hand-maintained privacy rows with data fetched from openhuman.about_app_list. Only capabilities that ship privacy metadata are rendered; loading and RPC failure both degrade gracefully and the analytics toggle plus explanatory copy remain intact. Adds a small typed client (utils/tauriCommands/aboutApp.ts) and focused vitest coverage for render, omission of unannotated entries, and RPC failure. --------- Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
Summary
about_appcapabilities can now shipCapabilityPrivacy { leaves_device, data_kind, destinations }. Twelve representative capabilities are annotated for the first audited set (raw/local, derived/backend, credentials, diagnostics, model download).PrivacyPanelno longer hand-maintains the rows — it callsopenhuman.about_app_listand renders only entries that disclose privacy metadata. Analytics toggle and explanatory copy are unchanged.privacyis omitted whenNone.Why
Privacy disclosure was duplicated as static UI strings. Anchoring it to the capability catalog makes "what leaves my computer" a property of the feature itself, not of the panel that happens to render it. That keeps the disclosure honest as features ship.
Notes
Test plan