docs(plugin-chatbot): document chatbot-floating's seven declared inputs keys - #7656
Merged
Merged
Conversation
…ts keys (objectui#7594) The page documents three registrations but its Properties table was entirely base-chat keys, so `chatbot-floating`'s own configuration surface appeared nowhere in content/docs. Every row here is derived from the registration's `inputs` and its defaultProps, and from what FloatingChatbot / -Panel / -Trigger actually read - not from the card's table. Two facts the registration carries that a copied row would have missed: the three size keys snap to the nearest entry in a fixed Tailwind class table (a `panelHeight` of 530 renders at 520), and `displayMode` is declared and offered in the designer but read by nothing - the node's `type` selects the presentation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KbJQ1y1J12nZxYzFWhP8Q3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #7594
content/docs/plugins/plugin-chatbot.mdxdocuments three registrations but its## Propertiestable was entirely base-chat keys, sochatbot-floating's own configuration surface appeared nowhere incontent/docs. This adds a### chatbot-floating panel and trigger keyssection after the existing table, plus one paragraph in the Properties preamble so the flat table stops implying the floating keys are base keys.The table's structure, the base-chat rows, and the
chatbot/chatbot-enhancedsections are untouched, as are #6824's over-claiming fix and #7589's substitution note - the new section is the other side of that note. No file underpackages/plugin-chatbot/**is modified.Every row is derived from the registration, not from the card
Read from
packages/plugin-chatbot/src/renderer.tsx:503-510(the card's:504-510was one line stale), cross-read againstFloatingChatbotConfiginpackages/types/src/complex.tsand against whatFloatingChatbot/FloatingChatbotPanel/FloatingChatbotTriggeractually consume. The registration'sdefaultValues, the type's@defaulttags and the components' destructuring defaults agree on all sixfloatingConfigkeys, so the Default column has one source and three independent confirmations.panelHeightis documented as a px number, default520.Two facts a row copied from the card's table would have got wrong, both measured in the components:
panelWidth,panelHeightandtriggerSizeare resolved through fixed Tailwind class tables with aclosestSizefallback, so an arbitrary number does not render at that size - apanelHeightof530renders at520. The section lists the real steps for each key.displayModeis read by nothing. It is declared onChatbotSchema, declared in the registration'sinputs(so the designer paints a control) and written intodefaultProps, but no renderer branches on it: the node'stypeselects the presentation. The card's body describes it as the key that "selects the floating presentation"; the read-site census says otherwise, so the row documents it as inert in the same style the page already uses formaxToolRoundtrips, rather than repeating the claim. Filed separately as finding(types/plugin-chatbot):chatbot-floatingdeclares two keys nothing reads -displayMode(designer control included) andFloatingChatbotConfig.triggerIcon#7654.Which gates judge these rows - measured with two-arm controls, not assumed
Predictions were written before each run; all three matched.
jsonfence?"type": "chatbot-floating"->"chatbot-floating-panel"check:doc-typesexits 1plugin-chatbot.mdx:218 [unregistered-doc-type]panelHeightrow ->| string | '520px' |, the exact falsehood #7589 exists to stopdoc-types0,doc-fences0tsxfence?panelHeight: 520->'520px'check:doc-snippetsexits 1plugin-chatbot.mdx:240:3 TS2322: Type 'string' is not assignable to type 'number'Each mutation was proved on disk by anchored grep counts and
git hash-objectmovement before its gate ran, and each restore leg by an emptygit diff HEADplus blob equality against theHEADblob, under anEXIT INT TERMtrap.The answer, plainly: the prose table rows are held by nothing. Control B is the load-bearing reading - a deliberately wrong
panelHeightrow passes every gate green.check:doc-typesreadstypestring literals in code blocks and, since #5106, registration key tables anchored on the\| Namespaced key \| Bare-name fallback \| Renderer behind it \|header; a\| Property \| Type \| Default \| Description \|table is not that surface, and the gate's own header says judging whether a snippet's other keys are read by the renderer is deliberately out of scope.check:doc-snippetsreads fencedts/tsxbodies only. Nothing compares a Default cell, a scope note, or the word "number" to the declaration.So the two claims that are held were put where a gate can hold them:
jsonfence - control A showscheck:doc-typesfails it if the key stops being registered;panelHeight's number-ness, in atsxfence that importsFloatingChatbotConfigfrom@object-ui/typesrather than re-declaring it, so the gate compiles against the real publisheddist/*.d.tsand not a private copy. That is deliberately not finding(scripts,docs): 26 doc fences re-declare a published type instead of importing it, so check:skill-examples and check:doc-snippets judge a private copy — a deliberately wrong fence passes green #7646's shape, and control C shows it lit.The section deliberately references its subsection by name in prose instead of an in-page anchor link, because #7644 measured that
check-doc-linksnever validates in-page anchors - an anchor here would be unheld by construction.Verification
Union re-run at
a6bbed3c, the pushed commit, tree clean:Exit codes were captured by redirect before any pipe.
check:doc-snippetsran after building its own--build-filterclosure through the shared verify lock (slotissue-7594), so its 0 is a verdict and not the exit-2 "could not run".No changeset is owed and none is added - the gate's verdict line above is the evidence, not my reading of the diff. The
skip-changesetlabel reads nothing in this repo and is not applied.Repo-wide lint was narrowed, and the narrowing is measured rather than asserted.
pnpm lintiseslint . --no-inline-config; asked about the single changed file, eslint's own config resolution answersFile ignored because no matching configuration was supplied(--format json, 1 file, 0 rules applied,errorCount: 0). The diff is one.mdxfile undercontent/docs, changes no eslint config and no source, so no untouched file's verdict can move.Clause-2 determination: no
My own determination, and it agrees with the dispatching seat's. This documents an already-published, already-declared surface: no schema key, no export, no validator behaviour, nothing that changes what a contract accepts or rejects. The only executable artefacts added are two documentation fences that describe existing declarations. This can land through the merge queue.
Out of scope, filed not fixed
Dedup ran against the repo-scoped open-issue list (381 open issues, PRs excluded) with a lit positive control -
chatbot-floatingreturns #7594 - so the zero-hit readings behind both cards are real and not a dark instrument.chatbot-floatingdeclares two keys nothing reads -displayMode(designer control included) andFloatingChatbotConfig.triggerIcon#7654 -chatbot-floatingdeclares two keys nothing reads:displayMode(with a designer control painted for it) andFloatingChatbotConfig.triggerIcon. Adjacent to but not the same axis as 121 declared-but-unmirrored keys across 16 schema pairs — the lane #6058's new UnmirroredDeclared ledger made visible #6152, which is the declared-but-unmirrored ledger.ChatbotSchemapinstypeto'chatbot', sochatbot-enhancedandchatbot-floatingnodes have no authoring-face type #7655 -ChatbotSchemapinstypeto'chatbot', sochatbot-enhancedandchatbot-floatingnodes have no authoring-face type. This is why the node example here is ajsonfence and thetsxfence can only annotate the config object.🤖 Generated with Claude Code
https://claude.ai/code/session_01KbJQ1y1J12nZxYzFWhP8Q3
Generated by Claude Code