Repository navigation
Conversation
Replace the two wire profiles with one positional JSON format. Keep state, expressions, validation, and incremental publication while removing repeated field names and unused trailing values.
Contributor
ctate
approved these changes
Oct 28, 2026
bits-ui resets body styles 24ms after a dialog closes. The Dialog test was the last in its file, so CI sometimes tore down jsdom before that timer ran and reported an unhandled 'document is not defined' error. Unmount and wait for the timer before the test ends.
ctate
approved these changes
Nov 2, 2026
The Compact prompt repeated each component's description and prop order next
to a schema that already carried the descriptions. Each props tuple now
describes its positions ("Props in order: label, value, detail, trend."),
component descriptions list their events, and the prompt keeps only the wire
rules and actions.
On the comparison catalog this cut input by about 1,700 tokens per request
(28%). Ten runs per setup across five prompts were all valid with no swapped
props. The test encoder now reads prop order and slots from the schema.
The descriptions sit on the tuple definitions, not beside $refs. A title next
to a $ref made the provider inline the recursive schema and raised input from
about 3K to 283K tokens.
ctate
approved these changes
Nov 2, 2026
Compact generation needs a provider that enforces bounded tuples and
recursive schemas. Anthropic rejects the schema, and without enforcement
models break the wire format's records, metadata and value wrappers.
createCompactGeneration(catalog, { strict: false }) now returns a flat
[depth,type,props,meta?] format with plain JSON values, a prompt that
lists the catalog, a loose tool schema, and a decoder that validates each
element against the catalog as it streams. It emits the same JSONL
patches, so renderers are unchanged. Strict mode stays the default; both
modes now share the stream compiler and element validation.
Tested on Claude Haiku 5.5 and Sonnet 5.5 over 10 prompts each: 8/10 and
10/10 valid (JSONL: 8/10 and 10/10), with about half the output tokens
per element and less than half the input. Named slots are not supported
in relaxed mode.
ctate
reviewed
Nov 3, 2026
- Relaxed meta now accepts only visible, on, watch and repeat (plus prop names, which move into props). Any other key, such as children or slots, is rejected, and compiler-owned type, props and children are set after metadata, so model output cannot inject child references. - Relaxed elements must have 3 or 4 positions; longer arrays used to pass and silently drop the extra data. - createCompactGeneration now returns the exported CompactGeneration type, so consumers no longer infer a type that points into zod internals (TS2742 in apps/web). Tested with core type-check, the core test suite, and the web app type-check after building core.
ctate
approved these changes
Nov 3, 2026
This branch was successfully deployed
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.
Uh oh!
There was an error while loading. Please reload this page.