Commit Graph

76 Commits

Author SHA1 Message Date
程序员阿江(Relakkes) 4e1417877e docs: update README.md 2026-10-04 17:19:21 +08:00
程序员阿江-Relakkes 195b406e91 docs(site): switch the promo film to the 62-second no-narration cut (#1438) 2026-10-04 13:22:17 +08:00
程序员阿江-Relakkes 8a94f09663 docs(readme): make Chinese the default README and keep only the film (#1436)
- README.md is now Chinese; the English README moves to README.en.md.
- Drop the eight-screenshot grid and the Agent Teams loop; the film cover
  remains the single visual. Remove the now-unused thumbnails.
- Point PR triage, change policy, and the docs check at the new file names.
2026-10-04 03:12:59 +08:00
程序员阿江-Relakkes aff55ff38b docs: show Agent Teams and the promo film in README and on the site (#1435)
- README: add an Agent Teams loop cut from the promo film (subtitles cropped)
  and a cover that opens the 90-second film from the CDN.
- Site: add a click-to-play film section after the hero; the video element
  is only created on click, and the poster ships with the site.
2026-10-04 02:57:06 +08:00
程序员阿江(Relakkes) bb84a9621d feat(site): redesign landing page and documentation 2026-09-27 01:05:17 +08:00
程序员阿江(Relakkes) a16d9847fb feat: add AruHub sponsor and provider preset 2026-09-20 16:50:45 +08:00
程序员阿江(Relakkes) f2bfaab50f docs(readme): make English the default README
README.md carried the Chinese version while README.en.md held the English one,
so the GitHub landing page opened in Chinese. Swap them: README.md is now
English and the Chinese version lives in README.zh-CN.md, with both language
switchers pointing at the new paths.
2026-09-17 16:51:56 +08:00
程序员阿江(Relakkes) 1471c46295 merge: sync origin/main before v0.6.2 release 2026-09-11 18:49:20 +08:00
程序员阿江(Relakkes) 05aad0c35d docs: move community group and donation sections above desktop highlights 2026-09-11 17:20:31 +08:00
c020627 9f344a2b58 docs(readme): list WeCom, QQ and Slack IM platforms 2026-09-10 21:58:40 +08:00
程序员阿江(Relakkes) 9c731d8ea5 feat(provider): add ApiSmart sponsorship and image generation support 2026-09-09 21:32:04 +08:00
程序员阿江(Relakkes) 570652b82c docs: refresh bilingual README covers 2026-09-07 22:14:13 +08:00
程序员阿江(Relakkes) b1b5a6d678 docs: switch community to WeCom and make Chinese README default
- Add 新功能支持 issue template, refine bug/question templates with a
  pointer to the user group
- Replace the Feishu user group QR with the WeChat Work group QR in both
  READMEs, include contact info for enterprise/Agent customization
- Make the Chinese README the default README.md, keep the English one as
  README.en.md, update language badges on both
- Update PR change policy, pr-triage docs set and site docs check for the
  renamed README files

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-06 15:57:41 +08:00
程序员阿江(Relakkes) fe7ea03b86 chore(sponsors): retire expired placements while preserving saved providers 2026-09-06 00:10:51 +08:00
程序员阿江(Relakkes) 49cfd179fa docs: add Agent Teams and dynamic Workflow to READMEs 2026-08-14 16:01:04 +08:00
程序员阿江(Relakkes) 8673f2092a chore(sponsor): remove TeamoRouter sponsor and provider preset 2026-08-13 08:36:50 +08:00
程序员阿江(Relakkes) 3cb9e24faa docs: add Atlas Cloud sponsor to READMEs
Add Atlas Cloud to the sponsor tables in both README.md and
README.zh-CN.md, using a cc-haha-specific campaign link. Ship
light/dark logo variants so the wordmark stays visible in both
GitHub themes.
2026-08-11 07:58:53 +08:00
Relakkes Yang 69f73601c5 docs: add signing and privacy policies 2026-08-05 23:35:41 +08:00
程序员阿江(Relakkes) 6fb1ac63b7 docs: add image generation and new desktop highlights to README 2026-08-05 04:34:04 +08:00
程序员阿江(Relakkes) 49c2cb8560 docs: replace star history chart with RepoStars 2026-08-04 17:28:19 +08:00
程序员阿江(Relakkes) 0a9789a73c feat: add FennoAI and Qiniu Cloud AI provider presets
- Add both gateways as featured presets pointing at their Anthropic-compatible
  roots (https://api.fenno.ai, https://api.qnaigc.com) with auth_token strategy
- Ship no default model ids: the available catalog depends on the plan the user
  bought, so they fetch the live list and pick one instead
- Keep modelContextWindows, which stays useful per picked model id and covers
  ids the built-in table cannot resolve (claude-opus-5, namespaced 七牛云 ids)
- Add both as sponsors in the English and Chinese READMEs, and list them in the
  preset docs
2026-08-04 16:46:44 +08:00
程序员阿江(Relakkes) 4c064dadb2 docs: streamline README preview and surface sponsors
- Trim redundant intro text, install-guide badge, and test model names from the desktop preview
- Move the sponsorship section right below the preview for sponsor visibility
- Shorten the TeamoRouter sponsor copy
2026-08-04 13:05:52 +08:00
程序员阿江(Relakkes) a632e23141 docs: compact desktop preview grid 2026-08-04 11:44:07 +08:00
程序员阿江(Relakkes) c7b6522d79 feat(provider): 新增玄枢API 供应商并加入 README 赞助商
- provider presets 新增 xuanshuapi(Anthropic 兼容,auth_token 鉴权)
- 默认模型 claude-opus-5 / claude-sonnet-5 / claude-haiku-4-5
- README 中英文赞助商表格新增玄枢API 行及 logo,专属链接注册赠 5 美元
- docs/start/models.md 双语预设清单同步
2026-08-02 16:48:30 +08:00
OpenClawBot 107bfc86bc docs: refresh bilingual product screenshots 2026-07-31 18:14:54 +08:00
程序员阿江(Relakkes) 3df7f23b25 docs: add bilingual desktop screenshots 2026-07-31 07:32:07 +08:00
程序员阿江(Relakkes) 224a076ba7 chore(sponsor): 下线胜算云赞助,退役预设改为 deprecated 墓碑
胜算云不再赞助,从 README 与「添加服务商」入口下架。与 558124914 下线接口AI
的做法不同,这次不删预设条目——纯删会静默降级已配置该预设的 provider:

- defaultEnv 从不随 provider 持久化,每次运行都从预设重算(胜算云的
  API_TIMEOUT_MS、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 与
  ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES=none)
- getManagedEnvKeys() 用所有预设的 defaultEnv 键构建 settings.json 擦除清单,
  而 API_TIMEOUT_MS 与 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 仅由胜算云声明,
  删掉后这两个键永久脱离清单,陈旧值会泄漏进此后激活的每个 provider
- provider 卡片 Badge 渲染预设名,预设消失则已配置的卡片标签消失
- 较早的存档可能连 authStrategy / modelContextWindows 都未持久化,同样回退到预设

改动:

- providerPresets.json:胜算云标 deprecated,摘掉 featured / promoText / apiKeyUrl;
  一并补回 jiekouai 墓碑条目,修掉 558124914 留下的同类回归(该提交未进任何 tag,
  回归尚未发布)
- 过滤只加在新增路径:桌面端预设 chips 源,以及粘贴 settings JSON 后按
  ANTHROPIC_BASE_URL 自动切预设那处;按 presetId 反查的路径一律保持全量
- GET /api/providers/presets 仍返回全量并携带 deprecated 标记,由消费方自行过滤
- ccSwitchImport 的 matchPresetId 有意继续匹配退役预设:导入映射的是用户既有配置,
  继承该预设的 env 比落到 custom 更正确
- README 中英文移除胜算云赞助整行与推广链接,删除 shengsuanyun-logo.svg,
  中英文 docs 模型页的中转服务商清单去掉胜算云

测试:settings.json 擦除清单不变量、退役预设仍解析出完整运行时 env、退役预设不得
残留推广字段、接口AI 的第三方 Sonnet 护栏(capabilities=none 与 1M 上下文窗口)、
桌面端 selectableProviderPresets 过滤。
2026-07-30 21:11:47 +08:00
程序员阿江(Relakkes) d433572f6e docs: add LINUX DO friend link to acknowledgements 2026-07-29 18:15:55 +08:00
程序员阿江(Relakkes) 047f4fbfea docs: make the English README default with a zh-CN companion
The English README becomes README.md so the GitHub landing page reads in
English; the Chinese one moves to README.zh-CN.md. Both cross-link at the
top. Drops the source-origin framing from the intro and removes the
Disclaimer section, and points the license badge at MIT.

change-policy and pr-triage hardcoded README.en.md, which would have
dropped README.zh-CN.md out of the docs lane.
2026-07-29 09:23:11 +08:00
程序员阿江(Relakkes) 977de9f9eb docs: README 增加飞书用户群入口 2026-07-28 19:35:47 +08:00
程序员阿江(Relakkes) 5e156ec03e chore(site): 文档站自定义域名切换到 cchaha.ai
把 9 个文件里的 11 处 claudecode-haha.relakkesyang.org 换成 cchaha.ai。
apex 走 Cloudflare CNAME flattening,www 由 GitHub 自动 301 到裸域名。

- docs/public/CNAME 与 prepare-static-output.mjs 的 expectedCustomDomain
  必须同步:后者是硬校验,不一致会让 postbuild 直接 throw、Pages 发不出去。
  它同时驱动 canonical / hreflang / og:url / sitemap.xml / robots.txt。
- meta.js 的 SITE_ORIGIN 管前端运行时那一份同名标签。
- AGENTS.md 里的契约描述一并更新,否则后续改动会照旧域名回退。
- 桌面端 IM 文档跳转链接及其测试断言。

验证:site build 通过(78 路由 + 74 重定向)、check:docs 通过(78 页 323 链接)、
sitemap 80 条 loc 全为新域名、AdapterSettings 6 tests passed。
2026-07-28 13:15:56 +08:00
程序员阿江(Relakkes) 5581249147 chore(sponsor): 下线接口AI 赞助与 Provider 预设
- provider presets 移除 jiekouai 预设(预设数 11 → 10)
- README.md / README.en.md 赞助商表格移除接口AI 整行及推广链接
- 删除 docs/images/sponsors/jiekou-logo.svg
- docs 中英文模型页的中转服务商清单去掉接口AI
- provider-presets 测试同步移除 jiekouai 断言;依赖该预设 defaultEnv /
  authStrategy 的 conversation-service、conversations 测试 fixture 改用
  shengsuanyun 预设
2026-07-28 11:30:57 +08:00
程序员阿江(Relakkes) dbf01846e0 docs: lay the README preview out three across
Three rows of two pushed the grid past a screenful. Three across in
two rows keeps the whole preview visible at once.

Captions are tightened to fit a 337px column on one line — the
English theme caption in particular was breaking "Ink blue" across
two lines mid-phrase.
2026-07-27 18:47:45 +08:00
程序员阿江(Relakkes) 1f2d1a930a docs: widen the README preview to six screenshots
Four frames left the desktop app looking narrower than it is. Six
cover the arc a first-time reader needs: it codes, you review, you
verify, it looks good, it grows, and it keeps you company.

Adds the built-in browser preview — the frame that closes the loop by
showing the page the session just changed — plus the desktop pets.
Every caption now carries a second line saying what the frame proves,
so the grid reads without opening each image.
2026-07-27 18:34:19 +08:00
程序员阿江(Relakkes) c2cd615824 docs: rebuild the documentation site around two readers
The site had drifted from the product. Every screenshot predated the
v0.5.0 UI redesign, the reading experience shipped no search and no
syntax highlighting, and a third of the pages were internal process
artefacts — migration task lists addressed to agentic workers, a
release runbook, a proposal marked "historical".

Reorganise around the only two people who read this: someone getting
the desktop app running for the first time, and someone reading the
source. Five sections replace nine — start / desktop / im / cli /
internals — and the pages that served neither reader are gone.

Site rewrite:

- Palette lifted from the desktop app's 「纸·墨·印」 themes, so the
  site and the product read as one thing. Light mirrors 纯白, dark
  mirrors 墨夜, and dark mode exists at all now.
- Fonts are self-hosted. The old @import from Google Fonts is
  unreachable from mainland China, which left every heading in a
  fallback serif; it also only requested weight 600 while the CSS
  asked for 900, so Latin and CJK in the same heading disagreed.
- Docs were shipped as one 968KB manifest downloaded on every page
  view. Split into a 32KB index plus one lazily imported chunk per
  page; the entry bundle is now 101KB gzipped.
- Add search, syntax highlighting, per-route meta with canonical and
  hreflang, a sitemap, and an error boundary. Replace the 44vh
  mobile sidebar with a drawer.
- Image dimensions are read at build time and written into the tag,
  so lazy images reserve their space instead of collapsing.

Screenshots are recaptured from a real v0.5.0 build against a clean
demo project, with tokens, QR codes and paired accounts redacted.
The previous set is deleted rather than kept alongside.

Routes follow file paths, so the restructure would have broken every
inbound link; 37 old paths redirect, in both languages. The PR policy
gate and CODEOWNERS also hardcoded docs/guide/contributing.md.

Verified: check:docs 78 pages / 323 links / 0 problems, check:policy
127 pass. Walked every route at 1440 and 390 in both themes for
overflow, contrast, keyboard reachability and focus management.
2026-07-27 17:32:41 +08:00
程序员阿江(Relakkes) 19357fcd87 feat(brand): rebuild the app mark as a vector and recolor it to the themes
`app-icon.png` is a 120KB bitmap, and the seven `.svg` files beside it under
docs/images are 193 bytes each — an `<image>` tag wrapping that bitmap. So the
mark carried its own blue/cyan/orange through all six palettes while everything
around it moved, and there was nothing to recolor.

Measured the bitmap back into geometry rather than redrawing it: connected
components to separate the elements, algebraic circle fits for the arcs, angular
histograms for the openings and stroke widths. Big C is center (415,566) r=131
stroke=60, opening 160°; the second C is center (615,576) r=117 cut into two 68°
arcs; the cursor is a four-point polygon with one notch. The slight ellipticity
and unequal stroke ends were raster artifacts, so they were rounded out. The
shape is otherwise unchanged — differencing a render against the original leaves
only antialiasing.

Color maps the original's three layers onto the palette's own three: the C's take
墨 `--cc-t1`, the bar and cursor and sparkles take 朱 `--cc-ac`.

Six themes do not need six icons. Their accent resolves to two values — #96442B
across the four light palettes, #D07B52 across the two dark ones, which is the
same ochre lightened. Only the ink varies, and ink should follow body text
anyway.

The app icon stays one fixed artwork. Dock and taskbar are drawn by the OS, which
knows nothing about the in-app theme, so paper ground with ink C's ships to every
platform. Inside the app the mark is a vector on tokens and repaints per theme.

Four ideas — two C's, the bar, the cursor, two sparkles — collapse below 24px, so
every consumer sheds parts as it shrinks: sparkles above 40px, cursor above 24px,
C's and bar always. That applies inside icon.icns and icon.ico as much as in
BrandSeal.

BrandSeal was the 「哈」 glyph in a terracotta square; it is now the CC mark drawn
inline on `--color-text-primary` and `--color-brand`. Its five call sites — the
sidebar, both empty states, the H5 connect view, the gallery — follow, and the
about pane drops its `<img>` for the same component.

README leads with the horizontal lockup inside a `<picture>` so GitHub serves the
dark cut in dark mode.
2026-07-27 04:27:41 +08:00
程序员阿江(Relakkes) b28867d551 release: prepare v0.4.6
Prepare the v0.4.6 desktop release note, bump the desktop package version, and refresh README/docs guidance for signed releases and updater validation.

Tested: bun run scripts/release.ts 0.4.6 --dry
Tested: bun test scripts/pr/release-workflow.test.ts scripts/release-update-metadata.test.ts scripts/quality-gate/package-smoke/index.test.ts
Tested: bun run check:policy
Tested: bun run check:docs
Not-tested: bun run verify; release prep was validated with docs and release-focused gates only.
Confidence: high
Scope-risk: narrow
2026-07-09 17:56:51 +08:00
程序员阿江(Relakkes) 3d13364c3d feat(provider): 新增 TeamoRouter 供应商并加入 README 赞助商
- provider presets 新增 teamorouter(Anthropic 兼容,auth_token 鉴权)
- 默认模型 claude-opus-4-8 / claude-sonnet-5 / claude-haiku-4-5
- README 中英文赞助商表格新增 TeamoRouter 第三行及 logo
2026-07-09 15:56:07 +08:00
程序员阿江(Relakkes) 8bca6985fe docs(release): rewrite v0.4.0 notes and refresh unsigned install docs
- Rewrite release-notes/v0.4.0.md to match the historical style (no emoji,
  Highlights/Fixes/Notes), keep it user-facing only (drop release-process
  notes), and correct Linux (supported since the Tauri builds, not new).
- README.md / README.en.md: replace Tauri references with Electron, list
  macOS / Windows / Linux, and point first-launch approval to the guide.
- Rewrite docs/desktop/04-installation.md for Electron: Electron asset
  names, Linux section, and the unsigned-macOS flow (clear the DMG quarantine
  before double-clicking; drop the WebView2/right-click-open leftovers).
- install-macos-unsigned.sh: keep the same-folder DMG flow, no online download.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 22:47:07 +08:00
程序员阿江(Relakkes) 7f08e7a3bc Refresh brand assets around the new app logo
The desktop app and documentation need to present the new logo consistently, so the canonical 1024px source icon now feeds the Tauri icon family, desktop public assets, README images, and VitePress brand imagery.

Constraint: Tauri bundle icons are generated assets and must be refreshed from the source icon rather than relying on README or public image replacement alone
Rejected: Rename logo paths | existing README, desktop, and docs references can keep stable paths and pick up the new files directly
Confidence: high
Scope-risk: moderate
Directive: Regenerate desktop/src-tauri/icons whenever desktop/src-tauri/app-icon.png changes
Tested: cd desktop && bun run build; npm run --loglevel=error docs:build; git diff --check; iconutil expanded icon.icns size ladder
Not-tested: full local quality gate per request
2026-05-13 10:38:13 +08:00
程序员阿江(Relakkes) 08d1e0e8c2 docs: present desktop app as primary entrypoint
The README is now the first screen most users see before deciding whether to download the app, so it leads with the desktop workflow, recent app features, and current screenshots while keeping CLI-from-source setup compact.

Constraint: Homepage should still mention the leaked Claude Code source origin.
Rejected: Keep the expanded CLI quick start on the homepage | it pushed sponsor and desktop content too far down.
Confidence: high
Scope-risk: narrow
Tested: bun run --silent check:docs
Tested: README image reference checks for Chinese and English files
Not-tested: GitHub README rendering after push
2026-05-10 22:38:50 +08:00
程序员阿江(Relakkes) 94c451d592 docs: align README IM support with current adapters
The README entry points still described IM support as Telegram and Feishu only, while the product and docs now cover WeChat and DingTalk as first-class adapters. Update the Chinese and English READMEs so the first screen, desktop preview caption, feature list, and documentation table point readers to the current IM guide.

Constraint: English IM docs do not have a separate docs/en/im tree yet, so both README variants link to the existing docs/im guide.
Rejected: Keep the old Channel System links | they point readers at historical architecture instead of the current setup docs.
Confidence: high
Scope-risk: narrow
Tested: bun run check:docs
Not-tested: Live rendered README preview on GitHub
2026-05-05 22:46:14 +08:00
程序员阿江(Relakkes) e99c567dea docs: prioritize sponsor sections before tech stack
The README should surface sponsorship and coffee support before the lower-level technology reference so readers see support options before implementation details. The Chinese and English pages are kept in the same section order.

Constraint: User requested the sponsorship and coffee sections above the tech stack.
Confidence: high
Scope-risk: narrow
Tested: bun run check:docs
Tested: git diff --check
Not-tested: GitHub rendered README after push
2026-05-03 00:10:29 +08:00
程序员阿江(Relakkes) 771eabe47e docs: foreground desktop onboarding in project docs
The desktop app is now a primary entry point for users, so the bilingual README should show the desktop screenshots before architecture details and the GitHub contribution panel should default to Chinese for the main audience.

Constraint: GitHub renders the root CONTRIBUTING.md directly in the repository overview.
Rejected: Leave desktop preview after architecture diagrams | buries the most visible product surface below implementation material.
Confidence: high
Scope-risk: narrow
Tested: bun run check:docs
Tested: git diff --check
Not-tested: GitHub repository page rendering after push
2026-05-03 00:06:58 +08:00
程序员阿江(Relakkes) ef430c7618 Document contributor quality gates
Contributors need a visible path for local verification instead of relying on design notes or maintainer memory. Add a GitHub-facing CONTRIBUTING entrypoint, bilingual docs pages, README links, and VitePress sidebar navigation for PR gates, live model baselines, provider selection, reports, and release checks.

Constraint: Live baseline providers are local machine state; docs must tell contributors how to list and choose their own providers without maintainer UUIDs.

Rejected: Keep the instructions only in the quality-gate design doc | too hidden for clone-and-contribute workflows

Confidence: high

Scope-risk: narrow

Directive: Keep quality-gate commands documented wherever contributor onboarding links are exposed.

Tested: bun run check:docs

Tested: bun run quality:pr

Not-tested: live baseline after the docs-only wording change
2026-05-02 15:45:04 +08:00
程序员阿江(Relakkes) 777c596505 docs: add README star history section
Add a bottom README callout that makes the GitHub star ask visible while embedding the live Star History chart in both Chinese and English docs.

Constraint: Keep bilingual README footer sections aligned.
Confidence: high
Scope-risk: narrow
Tested: Verified Star History SVG endpoint returns 200 image/svg+xml.
Not-tested: Full docs site build; README-only content change.
2026-04-29 10:28:47 +08:00
程序员阿江(Relakkes) 8e94010bbc docs: acknowledge reference projects in README
The README footer now separates community references from sponsors and donation content, so readers can see which upstream projects informed the UI stack and provider configuration approach.

Constraint: Keep acknowledgement placement near the footer without mixing references into sponsorship copy
Confidence: high
Scope-risk: narrow
Reversibility: clean
Tested: Reviewed README.md and README.en.md diff
Not-tested: Markdown site build
2026-04-28 16:38:16 +08:00
程序员阿江(Relakkes) 908b206f07 docs: refresh README sponsor partners
The sponsor section now reflects the active partners only, with
clickable referral copy and local logo assets so GitHub renders the
same layout in both Chinese and English READMEs.

Constraint: Chinese and English README sponsor sections must stay synchronized
Rejected: Keep LegionProxy as a lower-priority sponsor | user requested removing it
Confidence: high
Scope-risk: narrow
Tested: git diff --cached --check
Not-tested: GitHub rendered README preview
2026-04-28 16:38:16 +08:00
程序员阿江(Relakkes) f080f06723 docs: surface LegionProxy sponsorship
Add the sponsor entry to both README variants so GitHub visitors see the same partnership information in Chinese and English. The logo is kept in the docs image tree so the table can render without relying on a remote asset.

Constraint: Sponsorship section should use the table layout shown by the user
Rejected: Text-only sponsor row | it missed the logo-focused layout requested by the example
Confidence: high
Scope-risk: narrow
Directive: Keep README.md and README.en.md sponsorship entries aligned when adding or editing sponsors
Tested: git diff --cached --check
Not-tested: GitHub web rendering after push
2026-04-25 21:59:51 +08:00
程序员阿江(Relakkes) 6d40b2befa fix: Keep desktop chats on selected provider runtimes
Desktop sessions can switch provider and model while a CLI subprocess is already alive, so the server now serializes runtime restarts and marks provider-managed launches to prevent stale settings env from overriding the selected provider. Provider settings also write API key env consistently and clear stale managed keys before syncing.

This includes the related desktop/docs brand asset refresh and keeps the desktop locale default in Chinese, with tests updated to match the current provider semantics.

Constraint: Session-scoped model selection must win over cc-haha/settings.json and inherited ANTHROPIC_* values.
Rejected: Store the selected model as a global provider activeModel | chat runtime selection is per session.
Confidence: high
Scope-risk: moderate
Directive: Do not remove CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST without validating Desktop provider switching against stale settings env.
Tested: bun test src/server/__tests__/conversation-service.test.ts src/server/__tests__/conversations.test.ts src/server/__tests__/providers.test.ts src/server/__tests__/providers-real.test.ts
Tested: cd desktop && bun run test src/stores/settingsStore.test.ts
Tested: cd desktop && bun run lint
Tested: git diff --check
Not-tested: Full desktop production package/signing.
2026-04-24 13:24:31 +08:00