learning_ai_common_plat/packages
saravanakumardb1 ec9e11b243 feat(ai-ui): complete Wave 13.C — PrivacyBadge + ProvenanceDrawer + DebugOverlay
The remaining three trust surfaces ship in this commit, completing
Wave 13.C and unlocking MAG.8 (debug-overlay).

──────────────────────────────────────────────────────────────────
<PrivacyBadge>  ·  Wave 13.C.6
──────────────────────────────────────────────────────────────────
  packages/ai-ui/src/PrivacyBadge.tsx (new)

  - 4 modes: on-device · cloud · hybrid · unknown
  - Token-tinted (success/info/accent/neutral) — instant trust
    signal without forcing the user into settings
  - Optional `detail` line (model id, device name, routing policy)
  - `iconOnly` variant for sidebar / tray placements
  - role=status + composite aria-label

──────────────────────────────────────────────────────────────────
<ProvenanceDrawer>  ·  Wave 13.C.4
──────────────────────────────────────────────────────────────────
  packages/ai-ui/src/ProvenanceDrawer.tsx (new)

  - Slide-in right drawer listing every step the model + tools took
  - Pure presentation — host passes the event array straight through
  - role=dialog + aria-modal + aria-labelledby
  - Initial focus on close button; Esc + backdrop both close
  - Body scroll lock while open (restores prior overflow value)
  - Empty-state copy when events=[]
  - Per-row <details> slot for inspecting full payload

──────────────────────────────────────────────────────────────────
<DebugOverlay>  ·  Wave 13.C.5  (MAG.8 magnet)
──────────────────────────────────────────────────────────────────
  packages/ai-ui/src/DebugOverlay.tsx (new)

  - Wraps any child surface — Shift-click reveals a modal inspector
    with the raw JSON payload
  - Modifier configurable: shift (default) / alt / meta
  - Production toggle: `disabled` short-circuits the wrapper (no
    cursor-hint, no click interception)
  - role=dialog + aria-modal + Esc to close + focus restore on close
  - Stringifies payload safely (catches non-serialisable values)
  - Cursor: help on the wrapper to hint discoverability

──────────────────────────────────────────────────────────────────
Quality gates
──────────────────────────────────────────────────────────────────
  ✓ pnpm -F @bytelyst/ai-ui test  →  79/79 passing (was 67/67)
    +12 new cases:
      - PrivacyBadge (3)
      - ProvenanceDrawer (5: closed-state · dialog semantics ·
        backdrop · Escape · empty-state)
      - DebugOverlay (4: plain-click ignored · Shift opens · disabled
        bypass · alt modifier)
  ✓ Exports wired in src/index.ts (PrivacyBadge, ProvenanceDrawer,
    DebugOverlay + all types)

──────────────────────────────────────────────────────────────────
Roadmap tracker (lands in subsequent commit)
──────────────────────────────────────────────────────────────────
  13.C.4  ProvenanceDrawer shipped
  13.C.5  DebugOverlay shipped
  13.C.6  PrivacyBadge shipped
  MAG.8   the debug-overlay magnet (showcase lands in paired commit)

Wave 13.C is now complete (7/7). Wave 13 Futurism: 9/39 → 12/39.
2026-05-27 16:53:03 -07:00
..
accessibility fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
ai-ui feat(ai-ui): complete Wave 13.C — PrivacyBadge + ProvenanceDrawer + DebugOverlay 2026-05-27 16:53:03 -07:00
api-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
auth fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
auth-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
auth-ui fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
backend-config fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
backend-flags fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
backend-telemetry fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
billing-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
blob fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
blob-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
broadcast-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
celebrations fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
client-encrypt fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
command-palette feat(packages): Wave 2 v0.4 + Wave 3 v0.1 — ai-ui expanded, command-palette new 2026-05-27 12:43:23 -07:00
config chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
cosmos fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
create-app fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
dashboard-components fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
dashboard-shell feat(packages): close ROADMAP TODOs #1, #2, #3 — density tier, react-auth fix, routePrefix 2026-05-27 11:49:20 -07:00
data-viz fix(data-viz): SSR-safe gradient id + NaN-safe ProgressRing 2026-05-27 14:46:27 -07:00
datastore fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
design-tokens feat(packages): close ROADMAP TODOs #1, #2, #3 — density tier, react-auth fix, routePrefix 2026-05-27 11:49:20 -07:00
devops fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
diagnostics-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
errors fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
event-store fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
events fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
extraction fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
fastify-auth fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
fastify-core fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
fastify-sse fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
feature-flag-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
feedback-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
field-encrypt fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
gentle-notifications fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
kill-switch-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
kotlin-platform-sdk feat(native-sdks): add Keychain/SecureStore key derivation to BLFieldEncrypt 2026-03-21 11:10:02 -07:00
llm fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
llm-router fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
logger fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
marketplace-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
mcp-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
monitoring fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
motion feat(motion): @bytelyst/motion@0.2.0 — Wave 13.D spatial primitives 2026-05-27 16:02:14 -07:00
notifications-ui feat(packages): Wave 4 motion + Wave 5b data-viz + Wave 7 notifications-ui 2026-05-27 13:08:30 -07:00
offline-queue fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
ollama-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
org-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
palace fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
platform-client chore: record gitea package backfill 2026-05-27 18:27:43 +00:00
push fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
queue fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
quick-actions fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
react-auth feat(packages): close ROADMAP TODOs #1, #2, #3 — density tier, react-auth fix, routePrefix 2026-05-27 11:49:20 -07:00
react-native-platform-sdk chore: remove embedded Gitea package registry 2026-05-08 21:10:03 -07:00
referral-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
secure-storage-web fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
speech fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
storage fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
subscription-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
survey-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
swift-diagnostics fix(swift-diagnostics): T5.2 \u2014 replace print() with os.Logger 2026-05-23 15:21:39 -07:00
swift-platform-sdk feat(native-sdks): add Keychain/SecureStore key derivation to BLFieldEncrypt 2026-03-21 11:10:02 -07:00
sync fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
telemetry-client fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
testing fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
time-references fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
ui feat(ui): @bytelyst/ui Wave 9.D.5 — TagInput + Combobox 2026-05-27 15:55:49 -07:00
use-keyboard-shortcuts fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
use-theme fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00
webhook-dispatch fix(gitea): set ROOT_URL=host.docker.internal, NO_PROXY for host (F17) 2026-05-27 01:51:43 -07:00