Skip to content

finding(types/plugin-chatbot): six ChatbotSchema keys are declared and read by no registration — loading, showAvatars, userAvatar, assistantAvatar, markdown, height #7703

Description

@os-sam

Measured by the domain:ui dev seat while giving the chatbot-enhanced and chatbot-floating registrations their own authoring-face types (objectui#7655, branch claude/issue-7655-chatbot-registration-authoring-types). Filed unassigned, ungraded. Not addressed there: that card declares faces and retires nothing.

The fact

ChatbotSchema (packages/types/src/complex.ts) declares six members that none of the three plugin-chatbot registrations reads off schema. Read-site census on origin/main at 6eebc54b6, one schema.KEY count per ComponentRegistry.register(...) body in packages/plugin-chatbot/src/renderer.tsx (chatbot / chatbot-enhanced / chatbot-floating):

key declared type reads
loading boolean 0 / 0 / 0
showAvatars boolean 0 / 0 / 0
userAvatar string 0 / 0 / 0
assistantAvatar string 0 / 0 / 0
markdown boolean 0 / 0 / 0
height string or number 0 / 0 / 0

Whole-package word-boundary census, tests excluded: userAvatar and assistantAvatar have zero hits anywhere in packages/plugin-chatbot/src; showAvatars (7 hits) and markdown (5) exist only as ChatbotEnhanced component props that no registration forwards; loading (3) and height (13) are unrelated identifiers (an i18n key, the floating panel's pixel-height prop). None of the six is in the chatbot registration's designer inputs or defaultProps either, so they are reachable from TypeScript and JSON only. All six ARE mirrored on the Zod twin, so a chatbot node authoring them parses and type-checks, and the value goes nowhere.

A seventh, processVisibility, is declared on ChatbotSchema but read only by the chatbot-enhanced registration (0 / 1 / 0); on the chatbot node it has the same declared-but-unread shape. objectui#7655 declares it on ChatbotEnhancedSchema (where it is read) and leaves the ChatbotSchema member exactly as it was.

Lit controls on the same instrument: placeholder reads 1 / 1 / 1, floatingConfig 0 / 0 / 1, so the zeros are readings.

Why it is worth a card

The published type teaches six knobs that do nothing: an author (or an AI author reading the .d.ts) writes showAvatars: true or height: 400 on a chatbot node, gets no error on either face, and sees no change. It is the ADR-0049 enforce-or-remove question, one decision per key, in the shape objectui#7654 took for triggerIcon — with the difference that all six have a Zod arm, so both halves of this package's tombstone convention (?: never on the declaration plus retirementTombstone() on the twin) are available here.

Not a duplicate

Dedup ran against the repo-scoped open-issue list via REST (381 open issues, PRs excluded) with a lit positive control — chatbot-floating returns objectui#7655 and objectui#7654 — so these zeros are readings: showAvatars 0 hits; a body naming ChatbotSchema together with userAvatar, assistantAvatar, showAvatars or loading 0 hits. objectui#7295 (per-message avatar / avatarFallback on ChatMessage) is the adjacent message-level key, not these node-level ones.

Suggested route

ADR-0049 enforce-or-remove per key, in this package's tombstone shape on both faces. Enforce is unlikely to be the answer for any of the six: ChatbotEnhanced does carry a showAvatars prop, but the chatbot registration renders the plain Chatbot component, which has no such prop to forward to.

Refs: objectui#7655 · objectui#7654 · objectui#6169.

Filed by the domain:ui dev seat, session session_01KbJQ1y1J12nZxYzFWhP8Q3.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions