What's Changed
- feat(analytics): record whether the feedback control was offered by @miurla in #968
- fix(prompt): stop mutating the message array for related questions by @miurla in #971
- chore(deps): migrate to AI SDK 7 by @miurla in #972
- fix(tracing): record the turn's input and output on the research span by @miurla in #973
- feat(evals): add a related questions eval harness by @miurla in #976
- fix(prompt): stop appending related questions to single-fact answers by @miurla in #977
- fix(tracing): name the preparation stage an unclassified stream failure came from by @miurla in #978
- fix(streaming): stabilize attachment weight boundary by @sushanttiwari-14 in #974
- feat(analytics): record thumb clicks and their outcome by @miurla in #981
- feat(evals): record answer length alongside the item label by @miurla in #982
- feat(tracing): record the turn's carried context weight by kind by @miurla in #987
- fix(tools): read JSON and plain text in the regular fetch path by @miurla in #988
- fix(analytics): remove feedback control impression by @sushanttiwari-14 in #985
- feat(evals): measure the quick search mode, not only adaptive by @miurla in #992
- fix(search): fall back after recoverable provider failures by @sushanttiwari-14 in #989
- fix: align PDF attachment token estimates by @sushanttiwari-14 in #991
- fix(streaming): cap replayed historical answer text by @miurla in #996
- fix(prompt): identify the assistant as Morphic in both search modes by @miurla in #999
- fix(streaming): keep the replayed answer cap prefix-stable by @miurla in #998
- fix(streaming): build the prompt from an uncached chat read by @miurla in #1001
- fix(analytics): count the turn from user message ids instead of the chat by @miurla in #1003
- fix(errors): classify deterministic preparation failures by @sushanttiwari-14 in #1000
- fix(db): allow stateless startup without a database by @miurla in #1005
- chore(docker): add .dockerignore to trim the build context by @miurla in #1006
- fix(fetch): refuse private network addresses in fetch and crawl by @miurla in #1008
- fix(search): drop domain filters Tavily cannot accept by @miurla in #1010
- fix(citation): address citations by a derivable result label by @miurla in #1011
- fix(citation): stop a malformed closing delimiter from swallowing answer text by @miurla in #1013
- feat(library): move the Library entry point into the sidebar by @miurla in #1012
- perf(search): tighten the model-facing search result projection by @miurla in #1015
- perf(chat): cap replayed history when the prompt cache is cold by @miurla in #1018
- fix(storage): re-sign file parts that arrive without an object key by @miurla in #1019
- fix(search): require quick mode search before early stop by @sushanttiwari-14 in #1017
- fix(search): rewrite site-only Tavily queries into a domain filter by @miurla in #1020
- fix(chat): count gpt-5.6-luna tokens with the o200k tokenizer by @miurla in #1021
- revert(search): restore the mandatory quick mode search requirement by @miurla in #1022
- refactor(chat): resolve model context windows from a models.dev snapshot by @miurla in #1023
- fix(chat): keep the cold-start trim cut fixed on warm follow-up turns by @miurla in #1024
- fix(chat): recalibrate PDF and image attachment token estimates by @miurla in #1025
- chore: bump version to 1.7.0 by @miurla in #1026
Full Changelog: v1.6.0...v1.7.0