Skip to content

release: v0.8 - #423

Merged
anurag629 merged 89 commits into
productionfrom
dev
Oct 29, 2026
Merged

anurag629 merged 89 commits into
productionfrom
dev

Conversation

@anurag629

Copy link
Copy Markdown
Member

The v0.8 release: everything on dev since the last release, 65 commits and 58 changesets. Merge with a merge commit. The Release workflow then opens the "chore: version packages" PR.

What's in it

  • Knowledge and citations:
    • vector stores, with pgvector, sqlite-vec, Vectorize and Upstash Vector
    • embedders and rerankers for OpenAI, Gemini, Voyage, Cohere and Workers AI
    • hybrid search
    • answers that cite their pages
  • New packages: @chatcops/ingest (sitemap to index, with robots.txt) and @chatcops/cli (chatcops ingest, search, test, with recorded replays, a judge and --max-cost)
  • Widget:
    • a loader of 4 kB that loads the panel when it's opened
    • light, dark and auto themes (sites that don't set theme.mode turn light on light systems; the changeset says so)
    • an O(n) streaming renderer, screen-reader announcements, a sources row and the AI disclosure note
    • 11 new languages, RTL support, a focus trap and suggestion chips
  • Server:
    • a Logger for everything it writes
    • tool errors kept from the model
    • signed-in visitors through identity tokens

Versions

core, server and widget get a minor bump, and they're what publishes.

cli, ingest and the five store packages are still private, so changesets versions them but doesn't publish them. Their first publish is a separate step from the release commit.

Changesets wants to bump those seven to 1.0.0, because core leaving ^0.5 puts their peer range out of date. On the version PR I'll set them to 0.1.0 (cli, ingest) and 0.2.0 (the stores), the way the last release did.

Checked before this PR

  • CI on dev is green, including the docs bot evals in replay.
  • Live smoke on Claude, OpenAI and Gemini, 23 checks, all passing:
    • ingesting the real docs site (26 pages, 185 chunks; a second run embeds nothing)
    • hybrid and vector recall@5 of 1.00 on 20 questions
    • citations from each provider
    • a Japanese question finding the Japanese page
    • 0 tool calls from the injection fixture over 20 runs
    • text, a tool call then the answer, two tool calls, abort under 1 s
    • Claude dropping temperature with a warning, and reading the prompt cache on the second request

anurag629 and others added 30 commits October 23, 2026 22:43
* ci(docs): type-check TypeScript samples

* docs: address sample checker review
* feat(widget): load the chat panel on demand from a small loader

* fix(widget): find the panel when the page loads the bare package URL

* test(e2e): the panel isn't on the page until it's needed
…#331)

* feat(widget): no storage before the chat opens, and persistence modes

* perf(widget): load the pre-chat form and Turnstile as separate chunks
* feat(widget): no storage before the chat opens, and persistence modes

* perf(widget): load the pre-chat form and Turnstile as separate chunks

* feat(widget): load translations as one file per language
* style(widget): use logical CSS properties

* fix: preserve physical widget positions
Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>
* feat(widget): add Hindi locale

* fix(widget): allow partial Hindi locale

* test(widget): check locale translations are non-empty

* test(widget): use shared locale checks

* docs(widget): clarify Hindi locale coverage

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* Added visible focus rign

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>

* Address review

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>

* Increse the size

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>

---------

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>
Add packages/widget/src/locales/ur.ts with all 30 widget strings in Urdu
script, with the {name}, {label}, {seconds} and {count} placeholders kept
as they are, and a row in the Available Locales table. The widget already
sets dir=rtl for ur, so only the strings are needed.

Part of #55

Co-authored-by: Saif Ullah jafri <saifullahjafri@Saifs-MacBook-Air.local>
…sources (#334)

* feat(core): VectorStore interface, memoryVectors and vector conformance checks

* feat(core): retrieval types, openaiEmbedder and chunks for knowledge sources
Embeddings from Voyage AI's API with fetch only, following openaiEmbedder:
batches, results sorted by index, a check on the count and length, retries
on 429 and 5xx honoring retry-after and the abort signal, and an id of the
form voyage:model@dimensions.

Voyage embeds queries and documents differently, so the kind is sent as
input_type. output_dimension is sent only for the models whose docs list
it, and the default is voyage-4-large at 1024 dimensions. batchSize is kept
between 1 and 1000, which is what Voyage accepts.

Closes #363

Co-authored-by: Saif Ullah jafri <saifullahjafri@Saifs-MacBook-Air.local>
* feat(widget): add Spanish locale

* fix(widget): avoid plural in Spanish unread count

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* feat(widget): add suggested question buttons

* Fix suggestion visibility after pre-chat restore

* fix(widget): reduce bundle size

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* feat(widget): add French locale

* fix(widget): prevent French punctuation line breaks

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* feat(store-postgres): add pgvector vector storage

* fix(store-postgres): cast metadata filter keys

* fix(store-postgres): use JSONB containment for filters

* test(store-postgres): isolate postgres.js vector reads

* test(store-postgres): diagnose filtered postgres.js reads

* fix(store-postgres): compare JSONB filter values directly

* fix(store-postgres): cast postgres.js params through text

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
anurag629 and others added 29 commits October 28, 2026 22:13
* feat(widget): light, dark and auto themes

* chore(widget): raise the panel budget to 17 kB and the single file to 19 kB
…scroll (#402)

* perf(widget): render streaming replies in O(n) and keep the reader's scroll

* test(e2e): log where the long reply's main-thread time goes

* test: measure the old renderer on the long reply (temporary)

* perf(widget): give each finished block of a streaming reply its own box

* perf(widget): render a streaming reply at most 20 times a second

* test(e2e): check layouts and the time rendering adds to a long reply

* chore(widget): raise the panel budget to 17 kB and the single file to 19 kB
* feat(widget): tell visitors they're chatting with an AI

* chore(widget): raise the panel budget to 17 kB and the single file to 19 kB
Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
…422)

* test(website): eval the docs bot with chatcops test, replayed in CI

* chore: a changeset of its own for gzipped recordings
…421)

* feat(cli): add tokens-under, latency-under and cost-under assertions

* fix(cli): round latency, format cost and throw on missing usage or prices

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* Add javascript assertion

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>

* Address review:

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>

---------

Signed-off-by: Anurag Yadav <anuragyadav2787@gmail.com>
Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* feat(widget): add Hebrew locale

* fix(widget): make Hebrew unread count plural-safe

* feat(widget): translate new Hebrew strings
Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* ci: check each package's public API against a snapshot in api/

* ci: sort the properties of inferred object types in the API snapshot
…ce (#439)

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
…hatCopsBot (#440)

* docs: document the options the docs never mentioned, and a page for ChatCopsBot

* docs: rebuild the docs bot index with the protocol change from #439

* docs: the docs bot's lead capture answer names the server tool, the webhook and the widget event
* feat(cli): enhance pretty eval reporter (#418)

Group eval output by file, include runtime metadata and durations, and add verbose assertion details with TTY-aware colors. Add reporter coverage, a deterministic failure demo, docs, and a CLI changeset. Update Windows lint paths and Cloudflare test timeout for workspace validation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(cli): preserve reporter API compatibility

Keep public IO and reporter callback signatures stable while supplying verbose, environment, timing, and run metadata through the CLI's internal pretty reporter.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(cli): address pretty reporter review

Carry per-test timing on results and run metadata in the shared summary so every reporter receives it. Pass reporter options uniformly, simplify repeated-run detail labels, and keep the no-cost summary line unchanged.

Restore the original lint and Cloudflare timeout settings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…meric values (#450)

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
…ales (#449)

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
* feat(cli): add calls-tool and no-tool-call assertions (#412)

* fix(cli): address maintainer feedback on tool call assertions (#412)

---------

Co-authored-by: Anurag Verma <78868769+anurag629@users.noreply.github.com>
@anurag629
anurag629 merged commit 429da52 into production Oct 29, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants