Skip to content

feat(websearch): add Querit search provider#13050

Merged
DeJeune merged 5 commits intoCherryHQ:mainfrom
MurphyZzzzz:feat/add-querit-websearch-provider
Mar 12, 2026
Merged

feat(websearch): add Querit search provider#13050
DeJeune merged 5 commits intoCherryHQ:mainfrom
MurphyZzzzz:feat/add-querit-websearch-provider

Conversation

@MurphyZzzzz
Copy link
Copy Markdown
Contributor

Add Querit as a new web search provider option. Querit provides web search API capabilities with Bearer token authentication.

Changes:

  • Add QueritProvider implementation
  • Add Querit logo asset and icon component
  • Register Querit in WebSearchProviderFactory
  • Add Querit configuration in webSearchProviders.ts
  • Add migration (v200) to add Querit provider
  • Update UI components to display Querit logo

What this PR does

Before this PR:

Cherry Studio did not support Querit as a web search provider.

After this PR:

Users can now select Querit as a web search provider in settings. Querit.ai is a web search API provider that offers
high-quality search results with simple Bearer token authentication. It provides 1,000 free API requests for every user - we encourage
everyone to try it out! Get your API key at: https://www.querit.ai/en/dashboard/api-keys

Fixes #

Why we need it and why it was done in this way

The following tradeoffs were made:

Added migration (v200) to automatically add Querit provider for existing users. Followed existing provider patterns (Tavily, Exa, Bocha) for
consistency.

The following alternatives were considered:

None, this is a straightforward addition following established patterns in the codebase.

Links to places where the discussion took place:

Breaking changes

None

Special notes for your reviewer

Checklist

This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

Release note

Add Querit as a new web search provider option. Querit.ai offers 1,000 free API requests for new users.

Add Querit as a new web search provider option. Querit provides
web search API capabilities with Bearer token authentication.

Changes:
- Add QueritProvider implementation
- Add Querit logo asset and icon component
- Register Querit in WebSearchProviderFactory
- Add Querit configuration in webSearchProviders.ts
- Add migration (v200) to add Querit provider
- Update UI components to display Querit logo

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Copy link
Copy Markdown
Collaborator

@GeorgeDong32 GeorgeDong32 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

代码审查总结

整体实现质量良好,遵循了项目现有搜索提供商的模式。以下是几点建议:

建议修改

  1. 构造函数添加 API key 验证 - 与 BochaProvider 保持一致
  2. 确认 page_age 字段 - 疑似 typo,需验证 API 实际返回字段名
  3. 方法签名统一 - 建议添加 httpOptions 参数与基类一致

结论

代码可以合并,建议作者考虑上述建议后进行优化。

Add httpOptions parameter to search method for consistency with
BaseWebSearchProvider and support request cancellation via AbortSignal.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Copy link
Copy Markdown
Collaborator

@DeJeune DeJeune left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall the implementation follows existing patterns well and the API integration is correct per the Querit API docs. Two functional gaps should be addressed before merging.


const params: Record<string, unknown> = {
query,
count: websearch.maxResults
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Querit API supports filters.sites.exclude (array of strings) and filters.timeRange.date (e.g. "d1" for one day). These map directly to websearch.excludeDomains and websearch.searchWithTime which are already wired up in BochaProvider.

Suggested change:

const params: Record<string, unknown> = {
  query,
  count: websearch.maxResults,
  ...(websearch.excludeDomains.length > 0 || websearch.searchWithTime
    ? {
        filters: {
          ...(websearch.excludeDomains.length > 0 && {
            sites: { exclude: websearch.excludeDomains }
          }),
          ...(websearch.searchWithTime && {
            timeRange: { date: 'd1' }
          })
        }
      }
    : {})
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, I will fix it

Copy link
Copy Markdown
Collaborator

@YinsenHo YinsenHo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

- Compress querit.png from 84KB to 21KB
- Add filters support (excludeDomains, searchWithTime) to QueritProvider
- Update QueritLogo with brand SVG path

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@MurphyZzzzz MurphyZzzzz force-pushed the feat/add-querit-websearch-provider branch from a25aa8f to 2db0b2d Compare February 27, 2026 08:20
@MurphyZzzzz
Copy link
Copy Markdown
Contributor Author

MurphyZzzzz commented Feb 27, 2026

Note

This comment was translated by Claude.

@0xfullex Hi, gentle ping for a code review when you have a moment. Also, it looks like the workflows need a maintainer's approval to run. Could you help with that as well? Thank you! 🙏


Original Content

@0xfullex Hi,gentle ping for a code review when you have a moment. Also, it looks like the workflows need a maintainer's approval to run. Could you help with that as well? Thank you! 🙏

  docs link to QueritSearchResponse and modify querit search order
@MurphyZzzzz MurphyZzzzz requested a review from EurFelux February 27, 2026 10:07
@MurphyZzzzz
Copy link
Copy Markdown
Contributor Author

MurphyZzzzz commented Mar 6, 2026

Note

This comment was translated by Claude.

@EurFelux Hi, when you have a moment, could you please do a code review? ~


Original Content

@EurFelux Hi,有空CR下代码吧~

Copy link
Copy Markdown
Collaborator

@GeorgeDong32 GeorgeDong32 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@EurFelux
Copy link
Copy Markdown
Collaborator

EurFelux commented Mar 6, 2026

@0xfullex @kangfenmao This PR is ready for merge

@MurphyZzzzz
Copy link
Copy Markdown
Contributor Author

Hi @0xfullex @kangfenmao , hope you're having a good week! Just a gentle ping on this PR. It's already approved by the others, so we're just waiting for your code-owner review. No rush, just wanted to put it on your radar whenever you have a moment. Thanks!

@DeJeune DeJeune added this to the v1.7.25 milestone Mar 10, 2026
@DeJeune DeJeune added the ready-to-merge This PR has sufficient reviewer approvals but is awaiting code owner approval. label Mar 10, 2026
@DeJeune DeJeune merged commit 4b37be9 into CherryHQ:main Mar 12, 2026
7 checks passed
@kangfenmao kangfenmao mentioned this pull request Mar 13, 2026
6 tasks
kangfenmao added a commit that referenced this pull request Mar 13, 2026
### What this PR does

Before this PR:
- Version is 1.7.24

After this PR:
- Version is 1.7.25
- Release notes updated in `electron-builder.yml`

### Why we need it and why it was done in this way

Standard release workflow: collect commits since v1.7.24, generate
bilingual release notes, bump version.

The following tradeoffs were made:
N/A

The following alternatives were considered:
N/A

### Breaking changes

**Action Required**: The built-in filesystem MCP server now requires
manual approval for write/edit/delete operations by default.

### Special notes for your reviewer

**Included commits since v1.7.24:**

✨ New Features:
- feat(websearch): add Querit search provider (#13050)
- feat(minapp,provider): add MiniMax Agent, IMA mini apps and MiniMax
Global, Z.ai providers (#13099)
- feat(provider): add agent support filter for provider list (#11932)
- feat(agent): add custom environment variables to agent configuration
(#13357)
- feat: add GPT-5.4 support (#13293)
- feat(gemini): add thought signature persistence (#13100)

🐛 Bug Fixes:
- fix: secure built-in filesystem MCP root handling (#13294)
- fix: check underlying tool permissions for hub invoke/exec (#13282)
- fix: remove approval countdown timers and add system notifications
(#13281)
- fix: agent tool status not stopping on abort (#13111)
- fix: resolve spawn ENOENT on Windows for Code Tools (#13405)
- fix: Use default assistant for topic auto-renaming (#13387)
- fix(backup): defer auto backup during streaming response (#13307)
- fix(ui): fix Move To submenu overflow (#13399)
- fix: render xml fenced svg blocks as svg previews (#13431)
- fix: correct Gemini reasoning params (#13388)
- fix: improve Qwen 3.5 reasoning model detection (#13235)
- fix: upgrade xAI web search to Responses API (#12812)
- fix(api-server): relax chat completion validation (#13279)
- fix: install or uninstall button state issues (#13114)
- fix: improve update dialog behavior (#13363)
- fix: auto-convert reasoning_effort to reasoningEffort (#12831)

### Checklist

- [x] PR: The PR description is expressive enough and will help future
contributors
- [x] Code: Write code that humans can understand and Keep it simple
- [x] Refactor: You have left the code cleaner than you found it (Boy
Scout Rule)
- [x] Upgrade: Impact of this change on upgrade flows was considered and
addressed if required
- [x] Documentation: A user-guide update was considered and is present
(link) or not required.
- [x] Self-review: I have reviewed my own code before requesting review
from others

### Release note

```release-note
See release notes in electron-builder.yml
```

---------

Signed-off-by: kangfenmao <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has sufficient reviewer approvals but is awaiting code owner approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants