Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
9db408b
fix: 更新 Makefile 和文档以支持 Tauri 签名密钥管理
Mar 26, 2026
fd98f3b
chore(release): v0.1.7 版本与变更日志
Mar 26, 2026
bc0d96d
chore: 更新 Makefile 以优化构建流程和添加清理目标
Mar 27, 2026
462c40c
docs: 建立 v0.2.0 重构实施基线
Aug 30, 2026
ba714ba
refactor(config): 重构多供应商 API 配置
Aug 30, 2026
0d90f03
refactor(data): 重建数据库与增量采集
Aug 30, 2026
a5c29ee
feat(tasks): 实现持久任务与可取消进度
Aug 30, 2026
bbfa783
feat(knowledge): 重构原子提取与草稿发布流程
Aug 30, 2026
f07076d
feat(ui): 重构检索性能与双主题体验
Aug 30, 2026
c66f8bb
feat(mcp): 实现只读知识检索服务
Aug 30, 2026
438c789
chore(release): 完成 v0.2.0 集成与验收
Aug 30, 2026
004868c
feat(brand): 将产品重塑为有得 ChatTake
Aug 30, 2026
8fa3b3d
ci(release): 加固自动构建与发布门禁
Aug 30, 2026
24ff57a
fix(brand): 移除应用图标黑色边框
Aug 30, 2026
1a45667
fix(desktop): 修复生产白屏和图标黑边
Aug 30, 2026
6d9277f
feat(provider): 接入本地 CLI 分析与 OMP Pi 采集
Aug 30, 2026
18c4090
refactor(ui): 重构双主题对话档案界面
Aug 30, 2026
6b2b2a8
docs(v0.2.0): 补充 CLI Provider 与六来源说明
Aug 30, 2026
ddbd381
fix(provider): 加固 API 与 CLI 分析边界
Aug 30, 2026
e8f4c9b
fix(collector): 净化六来源会话并上报解析失败
Aug 30, 2026
9ba8b7c
fix(jobs): 补全任务进度感知与配置重试
Aug 30, 2026
d30ab7c
refactor(ui): 统一双主题档案界面与交互语义
Aug 30, 2026
7a9991a
ci(release): 校准双架构伴随程序与签名门禁
Aug 30, 2026
27602a5
docs(v0.2.0): 记录三路交叉验收结果
Aug 30, 2026
1e3b732
refactor(ui): 统一知识工作区设计语言
Aug 30, 2026
bbea15c
fix(icon): 按平台安全区重生成应用图标
Aug 30, 2026
252658a
fix(sqlite): 消除会话项目筛选列歧义
Aug 31, 2026
b8e9601
docs(v0.2.0): 补充使用指南与产品截图
Aug 31, 2026
3e1b175
Merge remote-tracking branch 'origin/master' into codex/v0.2.0-rearch…
Aug 31, 2026
ff585b6
ci: 升级 checkout action 运行时
Aug 31, 2026
eaffa70
ci(release): 改用 macOS Ad Hoc 签名
Aug 31, 2026
b740661
fix(navigation): 修复详情页返回来源标签
Aug 31, 2026
cf93c1d
feat(progress): 改用顶栏进度中心弹窗
Aug 31, 2026
9bcce1b
docs(design): 记录界面设计上下文
Aug 31, 2026
8deb481
fix(sidebar): 统一来源产品图标
Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursor/plans/tauri_自动构建与更新_5a344555.plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ CI Secrets 方向:`TAURI_PRIVATE_KEY`、`TAURI_KEY_PASSWORD`(更新通道,

## 3. 与 sidecar 的关系

`[tauri.conf.json](apps/desktop/src-tauri/tauri.conf.json)` 已把 `xunji-sidecar` 打进 `bundle.resources`。**完整应用更新**时,新安装包会带上新 sidecar;只要每次发版前 sidecar 构建进同一 pipeline,无需单独更新 sidecar。
`[tauri.conf.json](apps/desktop/src-tauri/tauri.conf.json)` 已把 `chattake-sidecar` 打进 `bundle.resources`。**完整应用更新**时,新安装包会带上新 sidecar;只要每次发版前 sidecar 构建进同一 pipeline,无需单独更新 sidecar。

## 4. 风险与注意点

Expand Down
21 changes: 8 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 在 PR / master 推送时做依赖安装、前端与 Rust 侧编译检查,避免明显破坏合并进主分支。
# PR / master 推送统一验证伴随程序、Rust 与前端。
name: CI

on:
Expand All @@ -17,29 +17,21 @@ jobs:
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
bun-version: 1.3.6

- name: Install dependencies
run: bun install --frozen-lockfile

# 保证 CHANGELOG 与关于页数据源一致(脚本见 scripts/sync-changelog.mjs)
- name: Verify changelog sync
run: |
bun run sync:changelog
git diff --exit-code apps/desktop/src/data/app-changelog.md

- name: Build sidecar
run: cd packages/sidecar && bun run build

- name: Build desktop frontend
run: cd apps/desktop && bun run build

# Tauri 在 Linux 上链接需系统库,否则 cargo check 会失败
- name: Install Linux build dependencies (Tauri)
run: |
sudo apt-get update
Expand All @@ -56,5 +48,8 @@ jobs:
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Cargo check (desktop)
run: cd apps/desktop/src-tauri && cargo check --all-targets
- name: Build companions
run: bun run build:companions

- name: Verify workspace
run: bun run verify
136 changes: 79 additions & 57 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,124 +1,146 @@
# 推送语义化版本 tag(如 v0.1.3)时:
# 1) 与原先一致:在 ubuntu 上由 softprops 创建/更新 GitHub Release 并 generate_release_notes(PR 合并后再打 tag 的流程不变)。
# 2) tauri build(macOS:aarch64 + x86_64,无 Windows,省 CI);latest.json 需含 Intel Mac 所用 darwin-x86_64,否则检查更新会报 platforms 缺失。
# 依赖 Secrets:TAURI_SIGNING_PRIVATE_KEY(必填);TAURI_SIGNING_PRIVATE_KEY_PASSWORD(可选)。
# 推送 vX.Y.Z 标签后:验证版本与全仓库,再构建双架构 macOS 更新产物。
name: Release

on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
# 指向 master 的 PR:预检 changelog 等与发版相关的条件,避免仅依赖打 tag 后才发现问题(完整构建见 CI)
pull_request:
branches: [master]

permissions:
contents: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
# ── 与历史 release.yml 一致:先建 Release + 自动生成说明(无构建)────────────────
release-check:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.6

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Check release version
run: bun run check:release-version -- "${GITHUB_REF_NAME}"

- name: Verify changelog sync
run: |
bun run sync:changelog
git diff --exit-code apps/desktop/src/data/app-changelog.md

- name: Install Linux build dependencies (Tauri)
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Build companions
run: bun run build:companions

- name: Verify workspace
run: bun run verify

github-release:
if: github.event_name == 'push'
needs: release-check
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
release_id: ${{ steps.create_release.outputs.id }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Create GitHub Release
- name: Create draft GitHub Release
id: create_release
uses: softprops/action-gh-release@v2
with:
draft: true
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# ── 打 tag 后:构建并上传到上述 Release(双架构 macOS;不跑 Windows 以省 CI)──
publish-tauri:
if: github.event_name == 'push'
needs: github-release
strategy:
fail-fast: false
matrix:
include:
# Apple Silicon:应用内更新主路径
- platform: macos-latest
args: --target aarch64-apple-darwin
# Intel Mac / Rosetta x86:与上共存于 latest.json,缺则报 darwin-x86_64 not in platforms
bun_target: bun-darwin-arm64
- platform: macos-latest
args: --target x86_64-apple-darwin

bun_target: bun-darwin-x64
runs-on: ${{ matrix.platform }}
timeout-minutes: 45
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
bun-version: 1.3.6

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Verify changelog sync
run: |
bun run sync:changelog
git diff --exit-code apps/desktop/src/data/app-changelog.md
- name: Check release version
run: bun run check:release-version -- "${GITHUB_REF_NAME}"

- name: Require updater signing secret
shell: bash
env:
KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
run: |
if [ -z "$KEY" ]; then
echo '::error::未配置 TAURI_SIGNING_PRIVATE_KEY。请阅读 docs/桌面应用-Release与自动更新.md 生成密钥并写入仓库 Secrets。'
echo '::error::未配置 TAURI_SIGNING_PRIVATE_KEY。请阅读 docs/桌面应用-Release与自动更新.md。'
exit 1
fi

- name: Install Rust stable
if: matrix.platform != 'macos-latest'
uses: dtolnay/rust-toolchain@stable

- name: Install Rust stable (macOS aarch64 + x86_64)
if: matrix.platform == 'macos-latest'
- name: Install Rust targets
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin,x86_64-apple-darwin

- name: Build and upload to GitHub Release
uses: tauri-apps/tauri-action@v0
- name: Build and upload to draft Release
uses: tauri-apps/tauri-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
CHATTAKE_BUN_TARGET: ${{ matrix.bun_target }}
with:
projectPath: apps/desktop
tauriScript: bun run tauri
releaseId: ${{ needs.github-release.outputs.release_id }}
includeUpdaterJson: true
updaterJsonPreferNsis: true
uploadUpdaterJson: true
args: ${{ matrix.args }}

# ── PR → master:发版前预检(与 tag 构建共用 changelog 校验逻辑)────────────────
release-pr-precheck:
if: github.event_name == 'pull_request'
finalize-release:
needs: [github-release, publish-tauri]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Verify changelog sync
run: |
bun run sync:changelog
git diff --exit-code apps/desktop/src/data/app-changelog.md
- name: Publish complete Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_ID: ${{ needs.github-release.outputs.release_id }}
run: gh api --method PATCH "repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}" -F draft=false -f make_latest=true
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ Thumbs.db
.env
.env.local

# XunJi runtime data
.xunji/
# ChatTake runtime data
.chattake/
21 changes: 21 additions & 0 deletions .impeccable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Design Context

### Users

长期使用 Claude Code、Cursor、Codex 等 AI 编程工具的个人开发者。他们需要在不改变现有工作流的前提下,本地采集分散的对话,确认分析任务,并将结果审核、检索和复用为个人技术知识。

### Brand Personality

安静、可信、克制。界面应像可长期使用的研究档案,而不是高饱和的 AI 控制台;任务状态清楚但不抢夺正文注意力。

### Aesthetic Direction

编辑档案感,辅以克制的液态玻璃结构层,同时支持 Light/Dark。使用线、留白、宋体气质标题和既有松绿/朱砂 Token 建立层级;避免满屏卡片、彩色渐变、霓虹描边、厚重阴影和装饰性动效。

### Design Principles

1. 通过线、留白与信息层级组织内容,结构层才使用玻璃效果。
2. 主内容优先,进度和辅助操作采用渐进披露,不能遮挡列表、分页或正文。
3. 状态必须由真实后端数据驱动,并同时通过文字或图标表达,不能只依赖颜色。
4. 控件沿用 32/36px 高度、8px 圆角和既有品牌 Token,不引入新的视觉体系。
5. 所有交互提供可读名称、键盘焦点,并尊重 reduced motion 与双主题。
40 changes: 38 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,43 @@
# 寻迹(XunJi)更新日志
# 有得(ChatTake)更新日志

> 面向使用者的更新说明。实现细节见 `docs/CHANGELOG.md`。

## 0.2.0(2026-08-30)

### 新增

- **全新品牌**:产品正式更名为「有得 · ChatTake」,应用、数据目录、MCP、安装包和仓库标识同步更新,不保留旧名称兼容层。
- **六来源采集**:正式支持 Claude Code、Cursor、Codex、CodeBuddy、OMP、Pi,启动时只扫描变化,不会自动消耗模型 Token。
- **API / CLI Provider**:可同时保存 OpenAI-compatible API 与 Claude Code、Codex、Cursor、OMP、Pi、CodeBuddy CLI 配置;任务固定使用启动时选择的配置。
- **知识草稿**:高价值知识自动发布,中价值进入草稿;重新分析先生成草稿,不覆盖已有知识。
- **持久任务中心**:显示真实阶段、文件/会话计数、供应商、模型、耗时和失败项,支持取消与切换配置重试。
- **只读 MCP**:提供搜索、卡片详情、聚合项和来源对话四个工具,只暴露已发布知识。

### 重构与性能

- 建立 Light/Dark 双主题与克制的液态玻璃视觉语言,以线性档案索引替代满屏卡片,补齐来源标识和窄窗口布局。
- 知识固定为决策、排障、实现、解释、片段五类,主题与技术项改为可治理标签。
- 使用文件指纹与内容哈希增量同步;会话列表改为单次聚合查询,对话按 100 条游标分页。
- 搜索改为 FTS5 trigram,中英文子串与 2 字短词均可检索;生产 Chunk 最大值低于 500 KB。

### 不兼容调整

- 删除所有 `*-internal` 路径和旧分类/Memory/Skill 数据模型。
- 旧数据库会在可恢复备份成功后重建,备份位于 `~/.chattake/db/backups/`。

### 修复

- **macOS 发布**:改用 Ad Hoc 签名、未公证分发,生成 DMG 不再依赖 Apple Developer 证书;首次启动由用户在「隐私与安全性」确认
- 修复会话列表按项目筛选时,多表联查可能触发 SQLite `ambiguous column name: project_name` 的问题。

## 0.1.7(2026-03-26)

### 开发体验

- **本地 macOS 打包**:`make macos` 在未设置环境变量时,会尝试从 `apps/desktop/chattake.updater.key` 注入 `TAURI_SIGNING_PRIVATE_KEY`(与 CI 一致;私钥文件勿提交)。详见 `docs/macOS 打包说明.md`。

---

## 0.1.6(2026-03-25)

### 体验改进
Expand All @@ -14,7 +50,7 @@

### 体验改进

- **桌面端品牌与安装包**:安装包、GitHub Release 资源文件名使用 **XunJi** 前缀(避免部分环境下非 ASCII 文件名异常);macOS 程序坞与启动台等仍显示 **「寻迹」**。
- **桌面端品牌与安装包**:安装包、GitHub Release 资源文件名使用 **ChatTake** 前缀(避免部分环境下非 ASCII 文件名异常);macOS 程序坞与启动台等仍显示 **「有得」**。

---

Expand Down
Loading