Repository navigation
v6.10.0
Highlights
-
@byline/core,@byline/client: Integer range facets in the search contract. A search request can now ask the provider for histogram buckets over an integer field, for example publication counts per year beside a filtered list.SearchQuery.rangeFacetstakesSearchRangeFacetRequest[]({ field, start, end, gap }), andSearchResults.rangeFacetsreturns{ start, end, count }buckets keyed by field. Buckets are contiguous, ascending and cover[start, end). Zero-count buckets are included, and the final bucket is truncated atendwhen the interval is not a multiple ofgap. Counts respect the query,where, locale, status and the collection or zone scope, independently of pagination. Bothclient.collection(path).search()and the zoneclient.search()forward the option and return the buckets. WhenbeforeReadrow scoping or unreadable zone members restrict aggregates,rangeFacetsis omitted, just as term facets are.The client validates requests before calling the provider and rejects invalid ones with
ERR_VALIDATION. A request needscapabilities.rangeFacets: trueon the provider, finitestart,endandgap,gap > 0,end > start, and no more thanMAX_RANGE_FACET_BUCKETS(200, exported from@byline/core) buckets per field. Each field may appear once and must be a top-levelintegerfield declared in the collection'ssearch.filters. For a zone, that rule applies to every member collection. Bounds may be fractional; a provider that cannot represent them must reject the request rather than round it. An omitted option or empty array requests nothing and is not forwarded to the provider.The built-in PostgreSQL and MySQL providers do not implement range facets and leave the capability unset. The feature is for custom providers, such as a Solr or OpenSearch driver. See Search API → Request a histogram and Provider contract → Integer range facets.
-
@byline/core: NewstructuredFilterscapability.SearchCapabilities.structuredFilterslets a provider declare that it actually appliesSearchQuery.where. It only advertises support: the client still forwardswhereunchanged to providers without it, so existing callers are unaffected. Use it to detect providers that silently ignore filters. The built-in PostgreSQL and MySQL providers do not applywhere, so a host that combines text search with filters can now checkprovider.capabilities.structuredFilters === trueand fall back rather than show unfiltered results. A provider that sets it may support a documented subset of fields and operators, but must reject anything outside that subset rather than ignore part of the predicate.
Chores
@byline/ai: Updated the provider SDKs, including@anthropic-ai/sdkfrom0.134to1.1(a new major) andopenaito7.42. Byline's provider adapters build and type-check against both, and the public@byline/aiAPI is unchanged.- monorepo: Updated dependencies across the workspace, including TanStack Router/Start,
@aws-sdk/*,jose,intl-messageformat,@codemirror/view,motion, Vite 8.3.5, Vitest 5.0.5, Storybook 10.6.3, knip 6.42 and Biome 2.6.2. The repository's Biome configuration has not yet been migrated to 2.6; that follows separately.
All other @byline/* packages bumped to 6.10.0 in lockstep with no behavioural changes this cycle.