mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-07 07:03:00 +08:00
feat/binary-latest-versions
222 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bd87e9a6cb |
feat(provider-registry): generate catalog from src/creators + src/providers, add TokenHub (#16401)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: suyao <sy20010504@gmail.com> |
||
|
|
80381953da |
fix(github-actions): log translator parse failures (#16432)
Signed-off-by: icarus <eurfelux@gmail.com> |
||
|
|
f68244e9d9 |
ci(translator): speed up GitHub content translation workflow (#16348)
Signed-off-by: kangfenmao <kangfenmao@qq.com> |
||
|
|
0f05490876 |
ci(windows-runner): pin Windows CI builds to windows-2022 (#16122)
Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com> Signed-off-by: Pleasurecruise <3196812536@qq.com> |
||
|
|
de580c2fb1 |
feat(api-gateway): port the universal API gateway onto v2 (ElysiaJS rewrite) (#15705)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com> Signed-off-by: suyao <sy20010504@gmail.com> |
||
|
|
9cc8c79cee |
ci(deps): bump actions/upload-artifact from 4 to 7 (#15508)
Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
26508591f8 |
refactor(paintings): migrate to v2 data layer and UI (#15154)
Co-authored-by: jidan745le <420511176@qq.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: SuYao <sy20010504@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com> Signed-off-by: jidan745le <420511176@qq.com> Signed-off-by: suyao <sy20010504@gmail.com> |
||
|
|
60f87c7195 | ci(preview-build): select latest preview branch (#15424) | ||
|
|
05111349f3 |
fix(db-migrations): resolve snapshot chain collision (#15438) and gate against recurrence (#15440)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: icarus <eurfelux@gmail.com> |
||
|
|
fa5bbb7607 | Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 | ||
|
|
cc51ba36ad |
chore(app-identity): lowercase bundle id to com.cherryai.cherrystudio
Normalise the bundle id casing from com.cherryai.CherryStudio to com.cherryai.cherrystudio so it follows the dominant lowercase convention used by modern AI tools (Anthropic Claude, OpenAI Codex, Raycast, Docker) and the reverse-DNS norm. macOS LaunchServices is case-insensitive, so this is a no-op on existing installs - bundle-id bound state stays as it was after |
||
|
|
4439d3b283 |
chore(app-identity): rebrand bundle id to com.cherryai.CherryStudio
Rename the app bundle id from com.kangfenmao.CherryStudio to com.cherryai.CherryStudio at every definition point: electron-builder appId (packaging source of truth), macOS notarization appBundleId, Windows AppUserModelID, and the selection self-detection allowlist. Daily preview builds now use com.cherryai.CherryStudio.preview (a distinct channel id rather than a case-only variant that macOS would treat as the same app); the workflow replaceAll search strings are updated to the new id so the preview identity patch keeps matching. Incidental cleanups bundled in: - Drop the unused MAIN_VITE_BUNDLE_ID env override; env.d.ts now declares the actually-used MAIN_VITE_CHERRYAI_CLIENT_SECRET instead of leaning on vite/client's any index signature. - Remove the stale @kangfenmao/keyv-storage from pnpm.onlyBuiltDependencies. - SearchService: use @main/core/platform isDev over electron-toolkit is.dev. |
||
|
|
b1eb3a4a62 |
hotfix(ci): run GitCode sync on signing runner (#15324)
### What this PR does Before this PR: The GitCode release sync job ran on `ubuntu-latest` after the signed Windows build completed. After this PR: The GitCode release sync job runs on the `self-hosted` `windows-signing` runner so the upload path can be retried from the hosted signing environment. <!-- (optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: --> Fixes # N/A ### Why we need it and why it was done in this way The following tradeoffs were made: This keeps the workflow logic unchanged and only changes runner placement for the second job. The following alternatives were considered: Keeping `ubuntu-latest` was considered, but the latest GitCode sync failure needs a runner-environment comparison. Links to places where the discussion took place: N/A ### Breaking changes None. If this PR introduces breaking changes, please describe the changes and the impact on users. ### Special notes for your reviewer This is a CI-only change intended to test whether the GitCode release creation and upload failure is specific to GitHub-hosted runner networking. ### 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. - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [ ] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [x] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note <!-- Write your release note: 1. Enter your extended release note in the below block. If the PR requires additional action from users switching to the new release, include the string "action required". 2. If no release note is required, just write "NONE". 3. Only include user-facing changes (new features, bug fixes visible to users, UI changes, behavior changes). For CI, maintenance, internal refactoring, build tooling, or other non-user-facing work, write "NONE". --> ```release-note NONE ``` Signed-off-by: zhibisora <73344387+zhibisora@users.noreply.github.com> |
||
|
|
7b556cf786 | Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 | ||
|
|
b0c77f6415 |
fix(ci): improve GitCode sync reliability (#15063)
<!-- Template from https://github.com/kubevirt/kubevirt/blob/main/.github/PULL_REQUEST_TEMPLATE.md?--> <!-- Thanks for sending a pull request! Here are some tips for you: 1. Consider creating this PR as draft: https://github.com/CherryHQ/cherry-studio/blob/main/CONTRIBUTING.md --> <!-- 🚨 Branch Strategy Change (Effective April 3, 2026) 🚨 The `main` branch is now under CODE FREEZE. - main branch: Only accepts critical bug fixes via `hotfix/*` branches. Fix PRs must be minimal in scope and must not include any refactoring code. - v2 branch: All new features, refactoring, and optimizations should be submitted to the `v2` branch. If you are submitting a bug fix to main, please ensure your PR is from a `hotfix/*` branch. --> ### What this PR does Before this PR: GitCode release sync builds signed Windows artifacts and uploads them to GitCode in one self-hosted Windows signing job. If the signing runner has unreliable outbound network connectivity, the GitCode release creation or asset upload can fail after the signed artifacts were already built. The workflow also has no dry-run mode for validating a manual release sync. After this PR: The workflow builds signed Windows artifacts on the Windows signing runner, uploads them as a short-lived GitHub Actions artifact, then performs GitCode release creation and asset upload from `ubuntu-latest`. Manual dispatch supports a `dry_run` mode that previews the release payload and upload file list without creating the GitCode release. Windows code signing also retries timestamping across multiple timestamp servers before failing. <!-- (optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: --> Fixes # None ### Why we need it and why it was done in this way The following tradeoffs were made: The release sync now uses an intermediate GitHub Actions artifact to pass signed Windows files from the signing runner to the Ubuntu sync job. This adds one artifact upload/download step, but keeps certificate access constrained to the signing runner while moving GitCode API traffic to a more reliable hosted runner. The following alternatives were considered: Keeping GitCode sync on the signing runner was simpler, but it leaves release sync vulnerable to transient network failures on that runner. Retrying only the GitCode upload would not address timestamp-server flakiness during Windows signing, so this PR also adds timestamp server fallback and retry support in `scripts/win-sign.js`. Links to places where the discussion took place: N/A ### Breaking changes None. ### Special notes for your reviewer Validation performed: - `pnpm format` - `pnpm lint` (passed with one pre-existing unrelated React hook warning in `src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx`) - `pnpm test` - Parsed `.github/workflows/sync-to-gitcode.yml` with the repository `yaml` package `actionlint` was attempted, but the npm package named `actionlint` does not expose a binary and this environment does not have Go installed to run the upstream Go tool directly. ### 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. - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [ ] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [x] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note <!-- Write your release note: 1. Enter your extended release note in the below block. If the PR requires additional action from users switching to the new release, include the string "action required". 2. If no release note is required, just write "NONE". 3. Only include user-facing changes (new features, bug fixes visible to users, UI changes, behavior changes). For CI, maintenance, internal refactoring, build tooling, or other non-user-facing work, write "NONE". --> ```release-note NONE ``` Signed-off-by: zhibisora <73344387+zhibisora@users.noreply.github.com> |
||
|
|
29a3750ac3 |
chore(style-reminders): add Tailwind canonical checks (#14862)
### What this PR does Before this PR: Tailwind canonical class suggestions such as `w-[420px] -> w-105` had to be fixed manually, and the PR style reminder workflow only reported newly introduced legacy renderer CSS variables. After this PR: Adds `pnpm styles:canonical <path>` to rewrite static Tailwind class strings to their canonical Tailwind v4 forms. The PR style reminders workflow now comments on both newly introduced legacy CSS variables and Tailwind canonical class suggestions. <!-- (optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: --> Fixes # ### Why we need it and why it was done in this way The following tradeoffs were made: The canonical class fixer is conservative: it only rewrites static JSX `class` / `className` strings and static `cn(...)` string inputs, leaving dynamic template literals untouched. It uses Tailwind's own design system canonicalization instead of maintaining a manual mapping table. The following alternatives were considered: A regex-only implementation was avoided because Tailwind canonicalization depends on Tailwind v4 parsing and theme behavior. A separate PR workflow comment was also avoided so the style reminders comment remains the single bot comment. Links to places where the discussion took place: N/A ### Breaking changes None. ### Special notes for your reviewer Compatibility aliases and legacy marker/env fallback were removed; the PR workflow now uses the `style-reminders` script, marker, and output naming. Validation performed: - `pnpm test:scripts -- scripts/__tests__/check-pr-style-reminders.test.ts scripts/__tests__/fix-tailwind-canonical-classes.test.ts` - `pnpm build:check` - `git diff --check` ### 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. - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [x] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note <!-- Write your release note: 1. Enter your extended release note in the below block. If the PR requires additional action from users switching to the new release, include the string "action required". 2. If no release note is required, just write "NONE". 3. Only include user-facing changes (new features, bug fixes visible to users, UI changes, behavior changes). For CI, maintenance, internal refactoring, build tooling, or other non-user-facing work, write "NONE". --> ```release-note NONE ``` --------- Signed-off-by: kangfenmao <kangfenmao@qq.com> |
||
|
|
6a6b47562b | Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 | ||
|
|
a90c4367d4 |
fix(workflow): update artifact naming and cleanup logic for v2 preview build
Co-authored-by: Copilot <copilot@github.com> |
||
|
|
b834886d96 |
ci(v2-preview): add daily preview build
Signed-off-by: kangfenmao <kangfenmao@qq.com> |
||
|
|
19f2ed674d | fix: remove push trigger for versioned tags in release workflow | ||
|
|
e8997a7a7b |
revert: Use Cherry AI Bot token for Claude translation workflow
This reverts commit
|
||
|
|
ae2b7b1a00 | ci: Use Cherry AI Bot token for Claude translation workflow | ||
|
|
c88f6aa787 |
refactor: stabilize ui package boundaries and theme contracts (#14328)
Co-authored-by: MyPrototypeWhat <daoquqiexing@gmail.com> Fixes #14331 |
||
|
|
172ae9eeba |
fix(ci): run v2 branch CI independently without merging main
Add v2 to push.branches so pushes to v2 trigger independent CI runs using clean v2 code. Remove the `|| github.head_ref == 'v2'` override from basic-checks that forced CI on the draft PR #10162 (v2→main), which caused checkout to merge v2 into main and fail. |
||
|
|
fc30dc4429 | Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 | ||
|
|
165087bbef |
fix(ci): restore missing Linux build dependencies in nightly workflow (#14105)
### What this PR does Before this PR: The nightly build for `ubuntu-latest` fails because the Linux build step is missing required native dependencies (`libevdev-dev`, `libxtst-dev`, `libx11-dev`, `libxfixes-dev`, `libwayland-dev`). The `selection-hook` native module fails to compile with `fatal error: X11/XKBlib.h: No such file or directory`. After this PR: Restores the missing `apt-get install` packages so the Linux nightly build compiles successfully. ### Why we need it and why it was done in this way The dependencies were accidentally removed from the nightly build workflow. This restores them to match the release workflow. ### Breaking changes None. ### Special notes for your reviewer CI-only change. No application code is modified. ### Checklist - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [ ] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note ```release-note NONE ``` Signed-off-by: kangfenmao <kangfenmao@qq.com> |
||
|
|
4083bd7083 |
chore: version packages (#13974)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @cherrystudio/ai-core@2.0.0 ### Major Changes - [#12235](https://github.com/CherryHQ/cherry-studio/pull/12235) [`1c0a5a9`]( |
||
|
|
0a9b82ff09 |
ci(deps): bump pnpm/action-setup from 4 to 5 (#13945)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4
to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pnpm/action-setup/releases">pnpm/action-setup's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<p>Updated the action to use Node.js 24.</p>
<h2>v4.4.0</h2>
<p>Updated the action to use Node.js 24.</p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: fix the run_install example in the Readme by <a
href="https://github.com/dreyks"><code>@dreyks</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/175">pnpm/action-setup#175</a></li>
<li>chore: remove unused <code>@types/node-fetch</code> dependency by <a
href="https://github.com/silverwind"><code>@silverwind</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/186">pnpm/action-setup#186</a></li>
<li>Clarify that package_json_file is relative to GITHUB_WORKSPACE by <a
href="https://github.com/chris-martin"><code>@chris-martin</code></a>
in <a
href="https://redirect.github.com/pnpm/action-setup/pull/184">pnpm/action-setup#184</a></li>
<li>feat: store caching by <a
href="https://github.com/jrmajor"><code>@jrmajor</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/188">pnpm/action-setup#188</a></li>
<li>refactor: remove star imports by <a
href="https://github.com/KSXGitHub"><code>@KSXGitHub</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/196">pnpm/action-setup#196</a></li>
<li>fix(ci): exclude macos by <a
href="https://github.com/KSXGitHub"><code>@KSXGitHub</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/197">pnpm/action-setup#197</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/dreyks"><code>@dreyks</code></a> made
their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/175">pnpm/action-setup#175</a></li>
<li><a
href="https://github.com/silverwind"><code>@silverwind</code></a> made
their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/186">pnpm/action-setup#186</a></li>
<li><a
href="https://github.com/chris-martin"><code>@chris-martin</code></a>
made their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/184">pnpm/action-setup#184</a></li>
<li><a href="https://github.com/jrmajor"><code>@jrmajor</code></a> made
their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/188">pnpm/action-setup#188</a></li>
<li><a
href="https://github.com/Boosted-Bonobo"><code>@Boosted-Bonobo</code></a>
made their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/199">pnpm/action-setup#199</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pnpm/action-setup/compare/v4.2.0...v4.3.0">https://github.com/pnpm/action-setup/compare/v4.2.0...v4.3.0</a></p>
<h2>v4.2.0</h2>
<p>When there's a <code>.npmrc</code> file at the root of the
repository, pnpm will be fetched from the registry that is specified in
that <code>.npmrc</code> file <a
href="https://redirect.github.com/pnpm/action-setup/pull/179">#179</a></p>
<h2>v4.1.0</h2>
<p>Add support for <code>package.yaml</code> <a
href="https://redirect.github.com/pnpm/action-setup/pull/156">#156</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="
|
||
|
|
6c69d04161 |
ci(deps): bump dorny/paths-filter from 3 to 4 (#13946)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3 to 4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/releases">dorny/paths-filter's releases</a>.</em></p> <blockquote> <h2>v4.0.0</h2> <h2>What's Changed</h2> <ul> <li>feat: update action runtime to node24 by <a href="https://github.com/saschabratton"><code>@saschabratton</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/294">dorny/paths-filter#294</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/saschabratton"><code>@saschabratton</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/294">dorny/paths-filter#294</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0">https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0</a></p> <h2>v3.0.3</h2> <h2>What's Changed</h2> <ul> <li>Add missing predicate-quantifier by <a href="https://github.com/wardpeet"><code>@wardpeet</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/279">dorny/paths-filter#279</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/wardpeet"><code>@wardpeet</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/279">dorny/paths-filter#279</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3...v3.0.3">https://github.com/dorny/paths-filter/compare/v3...v3.0.3</a></p> <h2>v3.0.2</h2> <h2>What's Changed</h2> <ul> <li>feat: add config parameter for predicate quantifier by <a href="https://github.com/petermetz"><code>@petermetz</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/224">dorny/paths-filter#224</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/petermetz"><code>@petermetz</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/224">dorny/paths-filter#224</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3...v3.0.2">https://github.com/dorny/paths-filter/compare/v3...v3.0.2</a></p> <h2>v3.0.1</h2> <h2>What's Changed</h2> <ul> <li>Compare base and ref when token is empty by <a href="https://github.com/frouioui"><code>@frouioui</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/133">dorny/paths-filter#133</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/frouioui"><code>@frouioui</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/133">dorny/paths-filter#133</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3...v3.0.1">https://github.com/dorny/paths-filter/compare/v3...v3.0.1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md">dorny/paths-filter's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v4.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/294">Update action runtime to node24</a></li> </ul> <h2>v3.0.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/279">Add missing predicate-quantifier</a></li> </ul> <h2>v3.0.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/224">Add config parameter for predicate quantifier</a></li> </ul> <h2>v3.0.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/133">Compare base and ref when token is empty</a></li> </ul> <h2>v3.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/210">Update to Node.js 20</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/215">Update all dependencies</a></li> </ul> <h2>v2.11.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/167">Update <code>@actions/core</code> to v1.10.0 - Fixes warning about deprecated set-output</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/168">Document need for pull-requests: read permission</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/164">Updating to actions/checkout@v3</a></li> </ul> <h2>v2.11.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/157">Set list-files input parameter as not required</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/161">Update Node.js</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/162">Fix incorrect handling of Unicode characters in exec()</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/163">Use Octokit pagination</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/160">Updates real world links</a></li> </ul> <h2>v2.10.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/91">Fix getLocalRef() returns wrong ref</a></li> </ul> <h2>v2.10.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/85">Improve robustness of change detection</a></li> </ul> <h2>v2.10.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/82">Add ref input parameter</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/83">Fix change detection in PR when pullRequest.changed_files is incorrect</a></li> </ul> <h2>v2.9.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/78">Fix change detection when base is a tag</a></li> </ul> <h2>v2.9.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/75">Fix fetching git history</a></li> </ul> <h2>v2.9.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/74">Fix fetching git history + fallback to unshallow repo</a></li> </ul> <h2>v2.9.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
00d1980082 |
Merge remote-tracking branch 'origin/main' into DeJeune/cape-town
Merge main branch changes including CherryClaw agent system (#13359), new settings routes (skills, channels, scheduled-tasks), and various fixes. Adapted merged code to v2 architecture: - Migrated new routes to TanStack Router (file-based routing) - Migrated TasksSettings from react-router-dom/Redux to TanStack Router/CacheService - Migrated baseCallbacks.ts from Redux dispatch to StreamingService - Added agent bootstrap initialization to v2 entry point - Replaced antd Switch with @cherrystudio/ui Switch in AgentModal Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: suyao <sy20010504@gmail.com> |
||
|
|
07bbed0d83 |
chore: version packages (#13974)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @cherrystudio/ai-core@2.0.0 ### Major Changes - [#12235](https://github.com/CherryHQ/cherry-studio/pull/12235) [`1c0a5a9`]( |
||
|
|
9c3c094b48 | Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 | ||
|
|
0482eec508 |
ci(deps): bump pnpm/action-setup from 4 to 5 (#13945)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4
to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pnpm/action-setup/releases">pnpm/action-setup's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<p>Updated the action to use Node.js 24.</p>
<h2>v4.4.0</h2>
<p>Updated the action to use Node.js 24.</p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: fix the run_install example in the Readme by <a
href="https://github.com/dreyks"><code>@dreyks</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/175">pnpm/action-setup#175</a></li>
<li>chore: remove unused <code>@types/node-fetch</code> dependency by <a
href="https://github.com/silverwind"><code>@silverwind</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/186">pnpm/action-setup#186</a></li>
<li>Clarify that package_json_file is relative to GITHUB_WORKSPACE by <a
href="https://github.com/chris-martin"><code>@chris-martin</code></a>
in <a
href="https://redirect.github.com/pnpm/action-setup/pull/184">pnpm/action-setup#184</a></li>
<li>feat: store caching by <a
href="https://github.com/jrmajor"><code>@jrmajor</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/188">pnpm/action-setup#188</a></li>
<li>refactor: remove star imports by <a
href="https://github.com/KSXGitHub"><code>@KSXGitHub</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/196">pnpm/action-setup#196</a></li>
<li>fix(ci): exclude macos by <a
href="https://github.com/KSXGitHub"><code>@KSXGitHub</code></a> in <a
href="https://redirect.github.com/pnpm/action-setup/pull/197">pnpm/action-setup#197</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/dreyks"><code>@dreyks</code></a> made
their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/175">pnpm/action-setup#175</a></li>
<li><a
href="https://github.com/silverwind"><code>@silverwind</code></a> made
their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/186">pnpm/action-setup#186</a></li>
<li><a
href="https://github.com/chris-martin"><code>@chris-martin</code></a>
made their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/184">pnpm/action-setup#184</a></li>
<li><a href="https://github.com/jrmajor"><code>@jrmajor</code></a> made
their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/188">pnpm/action-setup#188</a></li>
<li><a
href="https://github.com/Boosted-Bonobo"><code>@Boosted-Bonobo</code></a>
made their first contribution in <a
href="https://redirect.github.com/pnpm/action-setup/pull/199">pnpm/action-setup#199</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pnpm/action-setup/compare/v4.2.0...v4.3.0">https://github.com/pnpm/action-setup/compare/v4.2.0...v4.3.0</a></p>
<h2>v4.2.0</h2>
<p>When there's a <code>.npmrc</code> file at the root of the
repository, pnpm will be fetched from the registry that is specified in
that <code>.npmrc</code> file <a
href="https://redirect.github.com/pnpm/action-setup/pull/179">#179</a></p>
<h2>v4.1.0</h2>
<p>Add support for <code>package.yaml</code> <a
href="https://redirect.github.com/pnpm/action-setup/pull/156">#156</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="
|
||
|
|
38a328b641 |
ci(deps): bump dorny/paths-filter from 3 to 4 (#13946)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3 to 4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/releases">dorny/paths-filter's releases</a>.</em></p> <blockquote> <h2>v4.0.0</h2> <h2>What's Changed</h2> <ul> <li>feat: update action runtime to node24 by <a href="https://github.com/saschabratton"><code>@saschabratton</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/294">dorny/paths-filter#294</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/saschabratton"><code>@saschabratton</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/294">dorny/paths-filter#294</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0">https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0</a></p> <h2>v3.0.3</h2> <h2>What's Changed</h2> <ul> <li>Add missing predicate-quantifier by <a href="https://github.com/wardpeet"><code>@wardpeet</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/279">dorny/paths-filter#279</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/wardpeet"><code>@wardpeet</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/279">dorny/paths-filter#279</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3...v3.0.3">https://github.com/dorny/paths-filter/compare/v3...v3.0.3</a></p> <h2>v3.0.2</h2> <h2>What's Changed</h2> <ul> <li>feat: add config parameter for predicate quantifier by <a href="https://github.com/petermetz"><code>@petermetz</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/224">dorny/paths-filter#224</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/petermetz"><code>@petermetz</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/224">dorny/paths-filter#224</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3...v3.0.2">https://github.com/dorny/paths-filter/compare/v3...v3.0.2</a></p> <h2>v3.0.1</h2> <h2>What's Changed</h2> <ul> <li>Compare base and ref when token is empty by <a href="https://github.com/frouioui"><code>@frouioui</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/133">dorny/paths-filter#133</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/frouioui"><code>@frouioui</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/133">dorny/paths-filter#133</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v3...v3.0.1">https://github.com/dorny/paths-filter/compare/v3...v3.0.1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md">dorny/paths-filter's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v4.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/294">Update action runtime to node24</a></li> </ul> <h2>v3.0.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/279">Add missing predicate-quantifier</a></li> </ul> <h2>v3.0.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/224">Add config parameter for predicate quantifier</a></li> </ul> <h2>v3.0.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/133">Compare base and ref when token is empty</a></li> </ul> <h2>v3.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/210">Update to Node.js 20</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/215">Update all dependencies</a></li> </ul> <h2>v2.11.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/167">Update <code>@actions/core</code> to v1.10.0 - Fixes warning about deprecated set-output</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/168">Document need for pull-requests: read permission</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/164">Updating to actions/checkout@v3</a></li> </ul> <h2>v2.11.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/157">Set list-files input parameter as not required</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/161">Update Node.js</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/162">Fix incorrect handling of Unicode characters in exec()</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/163">Use Octokit pagination</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/160">Updates real world links</a></li> </ul> <h2>v2.10.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/91">Fix getLocalRef() returns wrong ref</a></li> </ul> <h2>v2.10.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/85">Improve robustness of change detection</a></li> </ul> <h2>v2.10.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/82">Add ref input parameter</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/83">Fix change detection in PR when pullRequest.changed_files is incorrect</a></li> </ul> <h2>v2.9.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/78">Fix change detection when base is a tag</a></li> </ul> <h2>v2.9.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/75">Fix fetching git history</a></li> </ul> <h2>v2.9.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/74">Fix fetching git history + fallback to unshallow repo</a></li> </ul> <h2>v2.9.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
b4fd2efe06 | merge main into v2 | ||
|
|
547db11f32 |
fix(ci): narrow release-packages trigger to changeset-managed packages only (#13859)
### What this PR does Before this PR: The `release-packages` workflow triggered on **any** file change under `packages/**`, including internal packages (`shared`, `mcp-trace`, `ui`) that are not managed by changesets and never published to npm. After this PR: The workflow only triggers on changes to the three changeset-managed packages: `packages/aiCore/**`, `packages/ai-sdk-provider/**`, and `packages/extension-table-plus/**`. ### Why we need it and why it was done in this way Only `@cherrystudio/ai-core`, `@cherrystudio/ai-sdk-provider`, and `@cherrystudio/extension-table-plus` have `package.json` with versions and are published via changesets. The other directories under `packages/` (`shared`, `mcp-trace`, `ui`) are internal modules with no `package.json` — changes to them should not trigger the release workflow. The fix simply narrows the `paths` filter to explicitly list the three publishable packages instead of using a wildcard. ### Breaking changes None. ### Checklist - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: N/A — CI-only change, no user-facing impact - [x] Self-review: I have reviewed my own code before requesting review from others ### Release note ```release-note NONE ``` Signed-off-by: icarus <eurfelux@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
d31652eafb |
fix(ci): add Linux system deps for selection-hook native rebuild (#13855)
## Summary - Install `libevdev-dev`, `libxtst-dev`, `libx11-dev`, `libxfixes-dev`, and `libwayland-dev` in the Linux release build step so the `selection-hook` native module compiles successfully. ## Test plan - [ ] Trigger a Linux-only release build via `workflow_dispatch` and verify it completes without native module compilation errors. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: suyao <sy20010504@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
6d68ee6e4b | merge main into v2 | ||
|
|
2919d093c7 |
ci: restrict package release workflow to cherry-studio's main branch (#13797)
This CI had run in my fork, but it should only run in cherry studio's main branch. <img width="1194" height="102" alt="CleanShot 2026-03-26 at 09 11 59@2x" src="https://github.com/user-attachments/assets/93cc496e-601e-40a4-a5d9-75cd056f7a66" /> |
||
|
|
336176be08 |
feat: introduce changeset for monorepo version management (#12783)
## Summary This PR introduces [changesets](https://github.com/changesets/changesets) to automate version management and publishing for the Cherry Studio monorepo. ## Changes ### Changeset Setup - `.changeset/config.json` - Changeset configuration with GitHub changelog integration - `.changeset/README.md` - Documentation for using changesets and CI/CD release flow - `.changeset/initial-setup.md` - Initial changeset marking the setup ### CI/CD Workflows - `.github/workflows/release-packages.yml` - Automated release workflow (creates Version Packages PR, publishes on merge) - `.github/workflows/snapshot.yml` - Manual snapshot release workflow - `.github/workflows/ci.yml` - Added `changeset-check` job to verify PRs include changesets when packages are modified ### Package Updates - `package.json` - Added changeset scripts (`changeset`, `changeset:status`, `changeset:version`, `changeset:publish`, `packages:build`, `packages:release`) - `packages/aiCore/package.json` - Added `prepublishOnly` script - `packages/ai-sdk-provider/package.json` - Added `prepublishOnly` script - `packages/extension-table-plus/package.json` - Added `prepublishOnly` script - `packages/extension-table-plus/CHANGELOG-OLD.md` - Backup of historical changelog ## How It Works 1. **Developers**: Run `pnpm changeset add` in PRs that modify packages 2. **CI**: `changeset-check` job validates PRs include changesets when needed 3. **Accumulate**: Merging PRs with changesets auto-creates/updates a "Version Packages" PR 4. **Release**: Maintainers merge the Version Packages PR when ready → packages are published to npm ## Requirements - [ ] `NPM_TOKEN` secret must be configured in GitHub repository settings ## Test Plan - [x] `pnpm changeset:status` runs successfully - [x] `GITHUB_TOKEN=$(gh auth token) pnpm changeset:version` bumps versions and generates changelogs correctly - [x] `pnpm packages:build` builds all packages in correct order - [x] `pnpm format` passes ## Release Note ```release-note NONE (internal tooling change) ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: icarus <eurfelux@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
cc697894fc |
Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2
Signed-off-by: fullex <0xfullex@gmail.com> # Conflicts: # .agents/skills/.gitignore # .agents/skills/public-skills.txt # .claude/skills/.gitignore # .github/CODEOWNERS # .oxlintrc.json # CLAUDE.md # biome.jsonc # package.json # src/main/services/AnalyticsService.ts # src/main/services/AppUpdater.ts # src/main/services/agents/services/SessionService.ts # src/renderer/src/Router.tsx # src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts # src/renderer/src/components/Icons/SVGIcon.tsx # src/renderer/src/components/Popups/UpdateDialogPopup.tsx # src/renderer/src/components/app/Sidebar.tsx # src/renderer/src/config/minapps.ts # src/renderer/src/config/providers.ts # src/renderer/src/config/sidebar.ts # src/renderer/src/hooks/agents/useActiveAgent.ts # src/renderer/src/hooks/agents/useAgentSessionInitializer.ts # src/renderer/src/hooks/agents/useAgents.ts # src/renderer/src/hooks/agents/useCreateDefaultSession.ts # src/renderer/src/hooks/useApiServer.ts # src/renderer/src/hooks/useAppUpdate.ts # src/renderer/src/pages/agents/AgentSettingsTab.tsx # src/renderer/src/pages/agents/components/AgentSessionInputbar.tsx # src/renderer/src/pages/agents/components/Sessions.tsx # src/renderer/src/pages/home/Chat.tsx # src/renderer/src/pages/home/HomePage.tsx # src/renderer/src/pages/home/Inputbar/tools/components/WebSearchQuickPanelManager.tsx # src/renderer/src/pages/home/Messages/MessageHeader.tsx # src/renderer/src/pages/home/Navbar.tsx # src/renderer/src/pages/home/Tabs/AssistantsTab.tsx # src/renderer/src/pages/home/Tabs/SessionsTab.tsx # src/renderer/src/pages/home/Tabs/TopicsTab.tsx # src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx # src/renderer/src/pages/home/Tabs/components/AssistantTagGroups.tsx # src/renderer/src/pages/home/Tabs/components/Topics.tsx # src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx # src/renderer/src/pages/home/Tabs/components/UnifiedList.tsx # src/renderer/src/pages/home/Tabs/hooks/useActiveAgent.ts # src/renderer/src/pages/home/Tabs/index.tsx # src/renderer/src/pages/home/components/ChatNavBar/ChatNavbarContent/index.tsx # src/renderer/src/pages/home/components/ChatNavBar/Tools/SettingsButton.tsx # src/renderer/src/pages/home/components/ChatNavBar/Tools/SettingsTab/AssistantSettingsTab.tsx # src/renderer/src/pages/settings/AboutSettings.tsx # src/renderer/src/pages/settings/AgentSettings/components/ModelSetting.tsx # src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx # src/renderer/src/pages/settings/WebSearchSettings/BasicSettings.tsx # src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx # src/renderer/src/pages/settings/WebSearchSettings/index.tsx # src/renderer/src/services/messageStreaming/callbacks/baseCallbacks.ts # src/renderer/src/store/runtime.ts # src/renderer/src/store/thunk/__tests__/streamCallback.integration.test.ts # src/renderer/src/types/index.ts # tsconfig.node.json # tsconfig.web.json |
||
|
|
f7ceb47462 |
fix(ci): only trigger release build on PR merge, not on every push (#13512)
### What this PR does Before this PR: The `release.yml` workflow triggers on `pull_request_target` with `opened` and `synchronize` event types. Every commit pushed to a release PR (e.g. editing release notes in `electron-builder.yml`) re-triggers the full 3-platform release build (macOS + Windows + Linux), wasting significant CI resources. After this PR: The workflow only triggers when the release PR is **merged** into `main`, not on every push. This is achieved by: 1. Changing `pull_request_target` types from `opened`/`synchronize` to `closed` 2. Adding `github.event.pull_request.merged == true` to the job condition Fixes # ### Why we need it and why it was done in this way The following tradeoffs were made: - Release builds no longer run during PR review phase. If a pre-merge test build is needed, `workflow_dispatch` can be used manually. The following alternatives were considered: - **Remove `synchronize` only (keep `opened`)**: Would still trigger on PR creation but not subsequent pushes. However, this loses automation on merge. - **Path filtering**: `pull_request_target` doesn't support `paths` filter, would require a separate job to check changed files — more complex for the same result. - **Label-based triggering**: Adds manual steps, defeats automation purpose. ### Breaking changes None. The `tag push` and `workflow_dispatch` triggers remain unchanged. The only behavioral change is that release builds now happen on merge instead of on PR open/push. ### Special notes for your reviewer - The `workflow_dispatch` trigger still allows manual release builds at any time - The `push: tags: v*.*.*` trigger is unaffected - The removed `head.repo.full_name == github.repository` check is redundant since `merged == true` already implies the PR was accepted ### Checklist - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [x] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note ```release-note NONE ``` --------- Signed-off-by: suyao <sy20010504@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
fe0678a206 |
chore: migrate .claude/skills to directory symlinks (#13486)
### What this PR does Before this PR: `.claude/skills/<name>/SKILL.md` files were **copied** from `.agents/skills/<name>/SKILL.md` via `pnpm skills:sync`. A dedicated `skills-check-windows` CI job ran on `windows-latest` to verify cross-platform file-copy compatibility. After this PR: `.claude/skills/<name>` entries are **directory symlinks** pointing to `../../.agents/skills/<name>`, following the Single Source of Truth (SSoT) principle. The Windows-specific CI job is removed; Windows developers are expected to enable symlink support. ### Why we need it and why it was done in this way The following tradeoffs were made: - Windows developers must now manually enable symlink support (Developer Mode + `git config --global core.symlinks true`). This is acceptable because: 1. The existing `AGENTS.md` is already a symlink, so Windows compatibility was never fully enforced. 2. Symlinks eliminate the need for file-copy synchronization, reducing maintenance complexity. 3. Contributors are expected to have sufficient technical capability to configure their environments. The following alternatives were considered: - Keeping file-copy sync: rejected because it duplicates content and requires extra CI to verify consistency. ### Breaking changes Windows developers who clone without symlink support enabled will get plain text files instead of symlinks. They must: 1. Enable Developer Mode or grant `SeCreateSymbolicLinkPrivilege` 2. Run `git config --global core.symlinks true` 3. Re-clone or run `pnpm skills:sync` ### Special notes for your reviewer - The `.github/workflows/ci.yml` diff includes minor quote-style changes (`'` → `"`) from the YAML formatter — these are cosmetic only. ### Checklist - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [x] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [ ] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note ```release-note NONE ``` Signed-off-by: icarus <eurfelux@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
2104e234af | Merge 'main' into v2 | ||
|
|
ba2cc43e92 |
ci: pin claude-code-action to v1.0.66 in prepare-release (#13229)
### What this PR does Before this PR: The `prepare-release.yml` workflow uses `anthropics/claude-code-action@v1`, which tracks the latest v1 release and may introduce unexpected breaking changes. After this PR: The action is pinned to `anthropics/claude-code-action@v1.0.66` for deterministic CI behavior. ### Why we need it and why it was done in this way The `prepare-release` workflow failed in [this run](https://github.com/CherryHQ/cherry-studio/actions/runs/22706296259/job/65834731056). Pinning to a known-good version (`v1.0.66`) prevents future breakage from upstream action updates. The following tradeoffs were made: N/A The following alternatives were considered: N/A ### Breaking changes None ### Special notes for your reviewer N/A ### 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) - [ ] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: Not required — CI-only change - [x] Self-review: I have reviewed my own code before requesting review from others ```release-note NONE ``` Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
5d369d08cd |
ci(deps): bump actions/upload-artifact from 6 to 7 (#13119)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's releases</a>.</em></p> <blockquote> <h2>v7.0.0</h2> <h2>v7 What's new</h2> <h3>Direct Uploads</h3> <p>Adds support for uploading single files directly (unzipped). Callers can set the new <code>archive</code> parameter to <code>false</code> to skip zipping the file during upload. Right now, we only support single files. The action will fail if the glob passed resolves to multiple files. The <code>name</code> parameter is also ignored with this setting. Instead, the name of the artifact will be the name of the uploaded file.</p> <h3>ESM</h3> <p>To support new versions of the <code>@actions/*</code> packages, we've upgraded the package to ESM.</p> <h2>What's Changed</h2> <ul> <li>Add proxy integration test by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li> <li>Upgrade the module to ESM and bump dependencies by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/762">actions/upload-artifact#762</a></li> <li>Support direct file uploads by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/764">actions/upload-artifact#764</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/Link"><code>@Link</code></a>- made their first contribution in <a href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/upload-artifact/compare/v6...v7.0.0">https://github.com/actions/upload-artifact/compare/v6...v7.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
076ddd5a09 |
ci(deps): bump actions/github-script from 7 to 8 (#13120)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/github-script/releases">actions/github-script's releases</a>.</em></p> <blockquote> <h2>v8.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update Node.js version support to 24.x by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/637">actions/github-script#637</a></li> <li>README for updating actions/github-script from v7 to v8 by <a href="https://github.com/sneha-krip"><code>@sneha-krip</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/653">actions/github-script#653</a></li> </ul> <h2>⚠️ Minimum Compatible Runner Version</h2> <p><strong>v2.327.1</strong><br /> <a href="https://github.com/actions/runner/releases/tag/v2.327.1">Release Notes</a></p> <p>Make sure your runner is updated to this version or newer to use this release.</p> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/637">actions/github-script#637</a></li> <li><a href="https://github.com/sneha-krip"><code>@sneha-krip</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/653">actions/github-script#653</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v7.1.0...v8.0.0">https://github.com/actions/github-script/compare/v7.1.0...v8.0.0</a></p> <h2>v7.1.0</h2> <h2>What's Changed</h2> <ul> <li>Upgrade husky to v9 by <a href="https://github.com/benelan"><code>@benelan</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/482">actions/github-script#482</a></li> <li>Add workflow file for publishing releases to immutable action package by <a href="https://github.com/Jcambass"><code>@Jcambass</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/485">actions/github-script#485</a></li> <li>Upgrade IA Publish by <a href="https://github.com/Jcambass"><code>@Jcambass</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/486">actions/github-script#486</a></li> <li>Fix workflow status badges by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/497">actions/github-script#497</a></li> <li>Update usage of <code>actions/upload-artifact</code> by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/512">actions/github-script#512</a></li> <li>Clear up package name confusion by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/514">actions/github-script#514</a></li> <li>Update dependencies with <code>npm audit fix</code> by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/515">actions/github-script#515</a></li> <li>Specify that the used script is JavaScript by <a href="https://github.com/timotk"><code>@timotk</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/478">actions/github-script#478</a></li> <li>chore: Add Dependabot for NPM and Actions by <a href="https://github.com/nschonni"><code>@nschonni</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/472">actions/github-script#472</a></li> <li>Define <code>permissions</code> in workflows and update actions by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/531">actions/github-script#531</a></li> <li>chore: Add Dependabot for .github/actions/install-dependencies by <a href="https://github.com/nschonni"><code>@nschonni</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/532">actions/github-script#532</a></li> <li>chore: Remove .vscode settings by <a href="https://github.com/nschonni"><code>@nschonni</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/533">actions/github-script#533</a></li> <li>ci: Use github/setup-licensed by <a href="https://github.com/nschonni"><code>@nschonni</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/473">actions/github-script#473</a></li> <li>make octokit instance available as octokit on top of github, to make it easier to seamlessly copy examples from GitHub rest api or octokit documentations by <a href="https://github.com/iamstarkov"><code>@iamstarkov</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/508">actions/github-script#508</a></li> <li>Remove <code>octokit</code> README updates for v7 by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/557">actions/github-script#557</a></li> <li>docs: add "exec" usage examples by <a href="https://github.com/neilime"><code>@neilime</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/546">actions/github-script#546</a></li> <li>Bump ruby/setup-ruby from 1.213.0 to 1.222.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/github-script/pull/563">actions/github-script#563</a></li> <li>Bump ruby/setup-ruby from 1.222.0 to 1.229.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/github-script/pull/575">actions/github-script#575</a></li> <li>Clearly document passing inputs to the <code>script</code> by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/603">actions/github-script#603</a></li> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/610">actions/github-script#610</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/benelan"><code>@benelan</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/482">actions/github-script#482</a></li> <li><a href="https://github.com/Jcambass"><code>@Jcambass</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/485">actions/github-script#485</a></li> <li><a href="https://github.com/timotk"><code>@timotk</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/478">actions/github-script#478</a></li> <li><a href="https://github.com/iamstarkov"><code>@iamstarkov</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/508">actions/github-script#508</a></li> <li><a href="https://github.com/neilime"><code>@neilime</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/546">actions/github-script#546</a></li> <li><a href="https://github.com/nebuk89"><code>@nebuk89</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/610">actions/github-script#610</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v7...v7.1.0">https://github.com/actions/github-script/compare/v7...v7.1.0</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
c66ecee286 |
fix(ci): prevent edited events from creating skipped CI runs (#13170)
### What this PR does Before this PR: Editing a PR's title or body triggers the `edited` event in the CI workflow. Although job-level `if` conditions skip execution, GitHub still creates a new workflow run with "skipped" status. Since GitHub UI shows the latest run, this hides the real CI results from the previous `opened`/`synchronize` run. After this PR: - Removed `edited` from CI workflow trigger types, so title/body edits no longer create skipped CI runs - Added a lightweight separate workflow (`ci-rerun-on-base-change.yml`) that listens for `edited` events and re-runs the latest CI run only when the PR's base branch is changed Fixes #13150 (follow-up) ### Why we need it and why it was done in this way The following tradeoffs were made: - Splitting into two workflows is slightly more complex than a single workflow, but it completely eliminates the "skipped run covering real results" problem since the re-run workflow has a different workflow name and does not affect the main CI status display The following alternatives were considered: - Simply removing `edited` without a re-run workflow — would lose CI re-trigger on base branch changes, which was a known issue before #13150 - Keeping `edited` with job-level `if` — the current approach that causes the problem we're fixing ### Breaking changes None ### Special notes for your reviewer - The re-run workflow uses `actions/github-script` to call `reRunWorkflow` API, which re-runs the existing CI run in-place rather than creating a new one - The workflow requires `actions: write` permission to trigger re-runs - The `branches` list in the new workflow mirrors the main CI workflow to stay in sync ### 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) - [ ] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] 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 NONE ``` --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
7f24cd0a01 |
fix: move OpenAPI spec generation to build time (#13207)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
b52825761b |
fix(ci): correct node-version-file path in update-app-upgrade-config workflow (#13190)
### What this PR does Before this PR: The `update-app-upgrade-config` workflow fails with `The specified node version file at: .node-version does not exist` on every release. After this PR: The workflow correctly references `main/.node-version` since the default branch is checked out into the `main/` subdirectory. Fixes the failure in https://github.com/CherryHQ/cherry-studio/actions/runs/22653172953 ### Why we need it and why it was done in this way The workflow uses `actions/checkout` with `path: main`, which places the repo contents in a `main/` subdirectory. However, `setup-node` with `node-version-file: '.node-version'` looks in the workspace root where the file doesn't exist. The following tradeoffs were made: N/A The following alternatives were considered: N/A ### Breaking changes None ### Special notes for your reviewer Single-line path fix. Can be verified by re-running the failed workflow after merge. ### Checklist - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [x] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note ```release-note NONE ``` Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |