jfox-cli 0.1.4__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.github/workflows/integration-test.yml +116 -21
- jfox_cli-0.2.0/CHANGELOG.md +35 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/CLAUDE.md +4 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/PKG-INFO +4 -4
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/README.md +3 -3
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +434 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-11-edit-command.md +625 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-11-unify-format-option.md +998 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +228 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-edit-content-file.md +496 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +299 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +281 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-fix-jfox-health-skill-kb-param.md +186 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-index-kb-param.md +472 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +595 -0
- jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-skill-redesign.md +462 -0
- jfox_cli-0.2.0/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +258 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/__init__.py +1 -1
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/bm25_index.py +110 -106
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/cli.py +589 -427
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/config.py +32 -29
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/embedding_backend.py +10 -11
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/formatters.py +55 -66
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/global_config.py +56 -64
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/graph.py +54 -57
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/indexer.py +114 -95
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/kb_manager.py +62 -67
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/models.py +40 -37
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/note.py +289 -111
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/performance.py +93 -90
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/search_engine.py +65 -52
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/template.py +64 -53
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/template_cli.py +47 -42
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/vector_store.py +76 -51
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/pyproject.toml +5 -3
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skills-recommend/README.md +8 -10
- jfox_cli-0.2.0/skills-recommend/claude-code/jfox-common/SKILL.md +267 -0
- jfox_cli-0.2.0/skills-recommend/claude-code/jfox-ingest/SKILL.md +237 -0
- jfox_cli-0.2.0/skills-recommend/claude-code/jfox-organize/SKILL.md +167 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skills-recommend/claude-code/jfox-search/SKILL.md +1 -1
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/conftest.py +96 -89
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/integration/test_backlinks.py +35 -51
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/performance/test_performance.py +76 -75
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_advanced_features.py +58 -29
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_cli_format.py +40 -31
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_config_unit.py +74 -70
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_core_workflow.py +140 -129
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_hybrid_search.py +40 -37
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_integration.py +11 -11
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_kb_current.py +18 -20
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_bm25_batch.py +11 -7
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_edit.py +178 -13
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_format_unify.py +39 -19
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_formatters.py +35 -24
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_global_config.py +157 -174
- jfox_cli-0.2.0/tests/unit/test_index_kb_param.py +92 -0
- jfox_cli-0.2.0/tests/unit/test_indexer_clear_before_rebuild.py +69 -0
- jfox_cli-0.2.0/tests/unit/test_indexer_verify.py +53 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_kb_manager.py +114 -127
- jfox_cli-0.2.0/tests/unit/test_lazy_import.py +90 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_template.py +32 -43
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_template_cli.py +250 -233
- jfox_cli-0.2.0/tests/unit/test_vector_store_clear.py +76 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/assertions.py +45 -32
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/jfox_cli.py +88 -105
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/note_generator.py +44 -51
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/temp_kb.py +5 -5
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/uv.lock +1 -1
- jfox_cli-0.1.4/skills-recommend/claude-code/jfox-health/SKILL.md +0 -150
- jfox_cli-0.1.4/skills-recommend/claude-code/jfox-init/SKILL.md +0 -108
- jfox_cli-0.1.4/skills-recommend/claude-code/jfox-insert/SKILL.md +0 -128
- jfox_cli-0.1.4/skills-recommend/claude-code/jfox-organize/SKILL.md +0 -124
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.githooks/pre-push +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.github/workflows/publish.yml +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.gitignore +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.python-version +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/AGENTS.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/DEVELOPMENT_PLAN.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/SESSION.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/SESSION_SUMMARY.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jessica-jones-static-cable.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/__main__.py +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/pytest.ini +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/run_full_test.ps1 +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skill/evals/evals.json +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skill/knowledge-base-notes/SKILL.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skill/knowledge-base-workspace/SKILL.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/COVERAGE_PLAN.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/MIGRATION.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/TESTS.md +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/integration/__init__.py +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/performance/__init__.py +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_suggest_links.py +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/__init__.py +0 -0
- {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/__init__.py +0 -0
|
@@ -14,6 +14,7 @@ on:
|
|
|
14
14
|
- 'jfox/**'
|
|
15
15
|
- 'tests/**'
|
|
16
16
|
- 'pyproject.toml'
|
|
17
|
+
- '.github/workflows/integration-test.yml'
|
|
17
18
|
# 允许手动触发
|
|
18
19
|
workflow_dispatch:
|
|
19
20
|
inputs:
|
|
@@ -33,6 +34,32 @@ env:
|
|
|
33
34
|
PYTHONUTF8: 1
|
|
34
35
|
|
|
35
36
|
jobs:
|
|
37
|
+
# ============ Lint 检查 ============
|
|
38
|
+
lint:
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
steps:
|
|
41
|
+
- name: Checkout code
|
|
42
|
+
uses: actions/checkout@v4
|
|
43
|
+
|
|
44
|
+
- name: Set up Python
|
|
45
|
+
uses: actions/setup-python@v5
|
|
46
|
+
with:
|
|
47
|
+
python-version: '3.11'
|
|
48
|
+
|
|
49
|
+
- uses: astral-sh/setup-uv@v4
|
|
50
|
+
with:
|
|
51
|
+
version: "latest"
|
|
52
|
+
enable-cache: true
|
|
53
|
+
|
|
54
|
+
- name: Install dependencies
|
|
55
|
+
run: uv sync --extra dev
|
|
56
|
+
|
|
57
|
+
- name: Run ruff check
|
|
58
|
+
run: uv run ruff check jfox/ tests/
|
|
59
|
+
|
|
60
|
+
- name: Run black check
|
|
61
|
+
run: uv run black --check jfox/ tests/
|
|
62
|
+
|
|
36
63
|
# ============ 快速测试(PR 和 push 触发)============
|
|
37
64
|
test-fast:
|
|
38
65
|
runs-on: ${{ matrix.os }}
|
|
@@ -61,9 +88,15 @@ jobs:
|
|
|
61
88
|
run: uv sync --extra dev
|
|
62
89
|
|
|
63
90
|
- name: Run fast tests (no embedding)
|
|
91
|
+
shell: bash
|
|
64
92
|
run: |
|
|
65
93
|
# 运行非 embedding 测试(单进程避免知识库冲突)
|
|
66
|
-
|
|
94
|
+
ARGS="-m 'not embedding and not slow' --timeout=180 -v --tb=short"
|
|
95
|
+
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
|
|
96
|
+
eval uv run pytest tests/ $ARGS --cov=jfox --cov-report=xml
|
|
97
|
+
else
|
|
98
|
+
eval uv run pytest tests/ $ARGS
|
|
99
|
+
fi
|
|
67
100
|
timeout-minutes: ${{ matrix.os == 'windows-latest' && 50 || 20 }}
|
|
68
101
|
env:
|
|
69
102
|
PYTHONIOENCODING: utf-8
|
|
@@ -78,6 +111,14 @@ jobs:
|
|
|
78
111
|
.pytest_cache/
|
|
79
112
|
htmlcov/
|
|
80
113
|
|
|
114
|
+
- name: Upload coverage data
|
|
115
|
+
if: matrix.os == 'ubuntu-latest'
|
|
116
|
+
uses: actions/upload-artifact@v4
|
|
117
|
+
with:
|
|
118
|
+
name: coverage-data
|
|
119
|
+
path: coverage.xml
|
|
120
|
+
retention-days: 1
|
|
121
|
+
|
|
81
122
|
# ============ 核心测试(带 embedding,但只跑核心)============
|
|
82
123
|
test-core:
|
|
83
124
|
runs-on: ${{ matrix.os }}
|
|
@@ -102,12 +143,20 @@ jobs:
|
|
|
102
143
|
version: "latest"
|
|
103
144
|
enable-cache: true
|
|
104
145
|
|
|
105
|
-
- name: Cache model
|
|
146
|
+
- name: Cache model (Unix)
|
|
147
|
+
if: runner.os != 'Windows'
|
|
106
148
|
uses: actions/cache@v4
|
|
107
149
|
with:
|
|
108
150
|
path: ~/.cache/torch/sentence_transformers
|
|
109
151
|
key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
|
|
110
152
|
|
|
153
|
+
- name: Cache model (Windows)
|
|
154
|
+
if: runner.os == 'Windows'
|
|
155
|
+
uses: actions/cache@v4
|
|
156
|
+
with:
|
|
157
|
+
path: ~\AppData\Local\torch\sentence_transformers
|
|
158
|
+
key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
|
|
159
|
+
|
|
111
160
|
- name: Install dependencies
|
|
112
161
|
run: uv sync --extra dev
|
|
113
162
|
|
|
@@ -152,12 +201,20 @@ jobs:
|
|
|
152
201
|
version: "latest"
|
|
153
202
|
enable-cache: true
|
|
154
203
|
|
|
155
|
-
- name: Cache model
|
|
204
|
+
- name: Cache model (Unix)
|
|
205
|
+
if: runner.os != 'Windows'
|
|
156
206
|
uses: actions/cache@v4
|
|
157
207
|
with:
|
|
158
208
|
path: ~/.cache/torch/sentence_transformers
|
|
159
209
|
key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
|
|
160
210
|
|
|
211
|
+
- name: Cache model (Windows)
|
|
212
|
+
if: runner.os == 'Windows'
|
|
213
|
+
uses: actions/cache@v4
|
|
214
|
+
with:
|
|
215
|
+
path: ~\AppData\Local\torch\sentence_transformers
|
|
216
|
+
key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
|
|
217
|
+
|
|
161
218
|
- name: Install dependencies
|
|
162
219
|
run: uv sync --extra dev
|
|
163
220
|
|
|
@@ -178,38 +235,76 @@ jobs:
|
|
|
178
235
|
path: |
|
|
179
236
|
.pytest_cache/
|
|
180
237
|
|
|
181
|
-
# ============
|
|
238
|
+
# ============ 质量门禁(所有必须测试通过才算成功)============
|
|
239
|
+
quality-gate:
|
|
240
|
+
runs-on: ubuntu-latest
|
|
241
|
+
needs: [lint, test-fast]
|
|
242
|
+
if: always()
|
|
243
|
+
steps:
|
|
244
|
+
- name: Check all jobs passed
|
|
245
|
+
run: |
|
|
246
|
+
echo "lint: ${{ needs.lint.result }}"
|
|
247
|
+
echo "test-fast: ${{ needs.test-fast.result }}"
|
|
248
|
+
if [[ "${{ needs.lint.result }}" == "success" && "${{ needs.test-fast.result }}" == "success" ]]; then
|
|
249
|
+
echo "Quality gate passed!"
|
|
250
|
+
exit 0
|
|
251
|
+
else
|
|
252
|
+
echo "Quality gate FAILED!"
|
|
253
|
+
exit 1
|
|
254
|
+
fi
|
|
255
|
+
|
|
256
|
+
# ============ 覆盖率报告(解析 test-fast 的 coverage artifact)============
|
|
182
257
|
coverage:
|
|
183
258
|
runs-on: ubuntu-latest
|
|
184
259
|
needs: [test-fast]
|
|
185
260
|
if: always() && needs.test-fast.result == 'success'
|
|
261
|
+
permissions:
|
|
262
|
+
pull-requests: write
|
|
186
263
|
|
|
187
264
|
steps:
|
|
188
265
|
- name: Checkout code
|
|
189
266
|
uses: actions/checkout@v4
|
|
190
267
|
|
|
191
|
-
- name:
|
|
192
|
-
uses: actions/
|
|
193
|
-
with:
|
|
194
|
-
python-version: '3.11'
|
|
195
|
-
|
|
196
|
-
- uses: astral-sh/setup-uv@v4
|
|
268
|
+
- name: Download coverage data
|
|
269
|
+
uses: actions/download-artifact@v4
|
|
197
270
|
with:
|
|
198
|
-
|
|
199
|
-
enable-cache: true
|
|
271
|
+
name: coverage-data
|
|
200
272
|
|
|
201
|
-
- name:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
273
|
+
- name: Post coverage comment on PR
|
|
274
|
+
if: github.event_name == 'pull_request'
|
|
275
|
+
env:
|
|
276
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
205
277
|
run: |
|
|
206
|
-
|
|
207
|
-
|
|
278
|
+
python -c "
|
|
279
|
+
import xml.etree.ElementTree as ET
|
|
280
|
+
import subprocess
|
|
281
|
+
|
|
282
|
+
tree = ET.parse('coverage.xml')
|
|
283
|
+
root = tree.getroot()
|
|
284
|
+
rate = float(root.attrib['line-rate'])
|
|
285
|
+
lines_covered = int(root.attrib['lines-covered'])
|
|
286
|
+
lines_valid = int(root.attrib['lines-valid'])
|
|
287
|
+
|
|
288
|
+
rows = []
|
|
289
|
+
for cls in root.iter('class'):
|
|
290
|
+
name = cls.attrib['filename']
|
|
291
|
+
r = float(cls.attrib['line-rate'])
|
|
292
|
+
rows.append((name, r))
|
|
293
|
+
rows.sort(key=lambda x: x[1])
|
|
294
|
+
|
|
295
|
+
comment = '## Test Coverage\n\n'
|
|
296
|
+
comment += '**Overall: {:.1f}%** ({}/{} lines)\n\n'.format(rate * 100, lines_covered, lines_valid)
|
|
297
|
+
comment += '| Module | Coverage | Status |\n|--------|----------|--------|\n'
|
|
298
|
+
for name, r in rows:
|
|
299
|
+
icon = ':green_circle:' if r >= 0.8 else ':yellow_circle:' if r >= 0.5 else ':red_circle:'
|
|
300
|
+
comment += '| {} | {:.1f}% | {} |\n'.format(name, r * 100, icon)
|
|
301
|
+
|
|
302
|
+
pr = '${{ github.event.pull_request.number }}'
|
|
303
|
+
subprocess.run(['gh', 'pr', 'comment', pr, '--body', comment])
|
|
304
|
+
"
|
|
208
305
|
|
|
209
306
|
- name: Upload coverage report
|
|
210
307
|
uses: actions/upload-artifact@v4
|
|
211
308
|
with:
|
|
212
309
|
name: coverage-report
|
|
213
|
-
path:
|
|
214
|
-
htmlcov/
|
|
215
|
-
coverage.xml
|
|
310
|
+
path: coverage.xml
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to jfox-cli will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.2.0] - 2026-04-13
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
- **edit**: add `--content-file` parameter for reading note content from a file (#106)
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
- **skill**: add `--kb` parameter support to jfox-health skill
|
|
12
|
+
- **cli**: add `use` as alias for `kb switch` subcommand (#105)
|
|
13
|
+
|
|
14
|
+
### Changes
|
|
15
|
+
- **skills**: redesign from 5 skills to 4
|
|
16
|
+
- **test**: fix flaky `test_update_content_preserves_id_and_created` (timing race on fast machines)
|
|
17
|
+
|
|
18
|
+
### Performance
|
|
19
|
+
- **startup**: lazy import optimization to eliminate startup overhead for lightweight commands (#122)
|
|
20
|
+
- **ci**: optimize CI coverage job to avoid rerunning tests (#119)
|
|
21
|
+
|
|
22
|
+
## [0.1.5] - 2026-04-12
|
|
23
|
+
|
|
24
|
+
### Fixes
|
|
25
|
+
- **index**: add `--kb` parameter to `jfox index` command (#104) (#113)
|
|
26
|
+
- **index**: fix `index verify` false positives (filename vs index ID format mismatch) (#111)
|
|
27
|
+
- **index**: fix `index rebuild` clearing ChromaDB before re-indexing (#110)
|
|
28
|
+
- **test**: prevent test KB residue in global config (#101)
|
|
29
|
+
- **ci**: resolve Windows path comparison bug and add quality gate
|
|
30
|
+
|
|
31
|
+
### Changes
|
|
32
|
+
- **style**: auto-fix all ruff/black lint errors (1869 fixed)
|
|
33
|
+
|
|
34
|
+
[0.2.0]: https://github.com/zhuxixi/jfox/compare/v0.1.5...v0.2.0
|
|
35
|
+
[0.1.5]: https://github.com/zhuxixi/jfox/compare/v0.1.4...v0.1.5
|
|
@@ -126,6 +126,10 @@ Four jobs in `.github/workflows/integration-test.yml`:
|
|
|
126
126
|
- Set `PYTHONUTF8=1` and `chcp 65001` for encoding
|
|
127
127
|
- HuggingFace mirror for China: `export HF_ENDPOINT=https://hf-mirror.com`
|
|
128
128
|
|
|
129
|
+
## Branch Rules
|
|
130
|
+
|
|
131
|
+
- **main 是保护分支**,不能直接 commit 或 push。所有改动必须通过新分支 + PR 合入。
|
|
132
|
+
|
|
129
133
|
## Gotchas
|
|
130
134
|
|
|
131
135
|
- `pytest.ini` `addopts` includes `-v`, so `pytest tests/` already runs verbose — adding `-v` manually is redundant
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jfox-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: JFox - Zettelkasten 知识管理 CLI 工具
|
|
5
5
|
Project-URL: Homepage, https://github.com/zhuxixi/jfox
|
|
6
6
|
Project-URL: Repository, https://github.com/zhuxixi/jfox
|
|
@@ -143,7 +143,7 @@ jfox init --name personal --path ~/my-notes --desc "个人笔记"
|
|
|
143
143
|
jfox kb list
|
|
144
144
|
|
|
145
145
|
# 切换默认知识库
|
|
146
|
-
jfox kb
|
|
146
|
+
jfox kb use work
|
|
147
147
|
|
|
148
148
|
# 查看知识库详情
|
|
149
149
|
jfox kb info work
|
|
@@ -207,7 +207,7 @@ jfox query "卢曼的方法论"
|
|
|
207
207
|
| `jfox init` | 初始化知识库 | `jfox init --name work --desc "工作笔记"` |
|
|
208
208
|
| `jfox kb list` | 列出所有知识库 | `jfox kb list` |
|
|
209
209
|
| `jfox kb create <name>` | 创建知识库 | `jfox kb create work --desc "工作笔记"` |
|
|
210
|
-
| `jfox kb
|
|
210
|
+
| `jfox kb use <name>` | 切换默认知识库 | `jfox kb use work` |
|
|
211
211
|
| `jfox kb info [name]` | 查看知识库详情 | `jfox kb info work` |
|
|
212
212
|
| `jfox kb rename <old> <new>` | 重命名知识库 | `jfox kb rename work job` |
|
|
213
213
|
| `jfox kb remove <name>` | 删除知识库 | `jfox kb remove temp --force` |
|
|
@@ -321,7 +321,7 @@ $ jfox kb list
|
|
|
321
321
|
|
|
322
322
|
```bash
|
|
323
323
|
# 切换到 work 知识库
|
|
324
|
-
jfox kb
|
|
324
|
+
jfox kb use work
|
|
325
325
|
|
|
326
326
|
# 之后的所有操作都在 work 知识库上进行
|
|
327
327
|
jfox add "新项目想法" --title "项目A"
|
|
@@ -106,7 +106,7 @@ jfox init --name personal --path ~/my-notes --desc "个人笔记"
|
|
|
106
106
|
jfox kb list
|
|
107
107
|
|
|
108
108
|
# 切换默认知识库
|
|
109
|
-
jfox kb
|
|
109
|
+
jfox kb use work
|
|
110
110
|
|
|
111
111
|
# 查看知识库详情
|
|
112
112
|
jfox kb info work
|
|
@@ -170,7 +170,7 @@ jfox query "卢曼的方法论"
|
|
|
170
170
|
| `jfox init` | 初始化知识库 | `jfox init --name work --desc "工作笔记"` |
|
|
171
171
|
| `jfox kb list` | 列出所有知识库 | `jfox kb list` |
|
|
172
172
|
| `jfox kb create <name>` | 创建知识库 | `jfox kb create work --desc "工作笔记"` |
|
|
173
|
-
| `jfox kb
|
|
173
|
+
| `jfox kb use <name>` | 切换默认知识库 | `jfox kb use work` |
|
|
174
174
|
| `jfox kb info [name]` | 查看知识库详情 | `jfox kb info work` |
|
|
175
175
|
| `jfox kb rename <old> <new>` | 重命名知识库 | `jfox kb rename work job` |
|
|
176
176
|
| `jfox kb remove <name>` | 删除知识库 | `jfox kb remove temp --force` |
|
|
@@ -284,7 +284,7 @@ $ jfox kb list
|
|
|
284
284
|
|
|
285
285
|
```bash
|
|
286
286
|
# 切换到 work 知识库
|
|
287
|
-
jfox kb
|
|
287
|
+
jfox kb use work
|
|
288
288
|
|
|
289
289
|
# 之后的所有操作都在 work 知识库上进行
|
|
290
290
|
jfox add "新项目想法" --title "项目A"
|