mirror of
https://github.com/lllin000/PaperForge.git
synced 2026-07-22 06:50:53 +00:00
chore: rename PaperForge Lite -> PaperForge across 27 files
This commit is contained in:
parent
ec1587febc
commit
ebc4fdeb00
27 changed files with 54 additions and 54 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# PaperForge Lite - Agent Guide
|
||||
# PaperForge - Agent Guide
|
||||
|
||||
> 本文档面向 **安装完成后的新用户** 和 **AI Agent**。安装步骤见 [setup-guide.md](docs/setup-guide.md) 或快速版 [INSTALLATION.md](docs/INSTALLATION.md)。
|
||||
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
## 1. 核心架构(Lite 版)
|
||||
|
||||
PaperForge Lite 采用 **两层设计**:
|
||||
PaperForge 采用 **两层设计**:
|
||||
|
||||
| 层级 | 组件 | 触发方式 | 作用 |
|
||||
|------|------|----------|------|
|
||||
|
|
@ -565,4 +565,4 @@ cp -r 新下载的代码/* <vault_path>/
|
|||
|
||||
---
|
||||
|
||||
*PaperForge Lite | 快速开始指南 | 安装后阅读*
|
||||
*PaperForge | 快速开始指南 | 安装后阅读*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Changelog
|
||||
|
||||
All notable changes to PaperForge Lite are documented in this file.
|
||||
All notable changes to PaperForge are documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Contributing to PaperForge Lite
|
||||
# Contributing to PaperForge
|
||||
|
||||
Thank you for your interest in contributing to PaperForge Lite! This document provides setup instructions, workflow guidelines, and code conventions to help you get started.
|
||||
Thank you for your interest in contributing to PaperForge! This document provides setup instructions, workflow guidelines, and code conventions to help you get started.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ Tests are in `tests/` with a shared `conftest.py` providing fixtures. The `tests
|
|||
|
||||
## Architecture Overview
|
||||
|
||||
PaperForge Lite uses a **two-layer design**:
|
||||
PaperForge uses a **two-layer design**:
|
||||
|
||||
```
|
||||
Worker Layer (automated, deterministic, CLI-triggered)
|
||||
|
|
@ -169,4 +169,4 @@ Agent Layer (interactive, reasoning-driven, user-triggered)
|
|||
|
||||
---
|
||||
|
||||
*Thank you for contributing to PaperForge Lite — Building a better literature workflow, underground!*
|
||||
*Thank you for contributing to PaperForge — Building a better literature workflow, underground!*
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
\_| \_| |_/\_| \____/\_| \_\_| \___/\_| \_|\____/\____/
|
||||
```
|
||||
|
||||
# PaperForge Lite
|
||||
# PaperForge
|
||||
|
||||
[](https://pypi.org/project/paperforge/)
|
||||
[](https://python.org)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
\_| \_| |_/\_| \____/\_| \_\_| \___/\_| \_|\____/\____/
|
||||
```
|
||||
|
||||
# PaperForge Lite
|
||||
# PaperForge
|
||||
|
||||
[](https://pypi.org/project/paperforge/)
|
||||
[](https://python.org)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# PaperForge Lite Architecture
|
||||
# PaperForge Architecture
|
||||
|
||||
> Maintainer-facing documentation covering the two-layer design, data flow, directory structure, key design decisions, and extension points.
|
||||
>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
## System Overview
|
||||
|
||||
PaperForge Lite is a local-first literature workflow that bridges Zotero (reference management) and Obsidian (knowledge management) for medical researchers. The system is intentionally split into two distinct layers: the **Worker layer** and the **Agent layer**. This separation is the defining architectural choice of the project.
|
||||
PaperForge is a local-first literature workflow that bridges Zotero (reference management) and Obsidian (knowledge management) for medical researchers. The system is intentionally split into two distinct layers: the **Worker layer** and the **Agent layer**. This separation is the defining architectural choice of the project.
|
||||
|
||||
The **Worker layer** (`literature_pipeline.py` and the `paperforge/commands/` package) handles all automated, mechanical tasks: detecting new literature from Zotero via Better BibTeX JSON export, generating library records and formal notes, running OCR through the PaddleOCR API, and maintaining state consistency across the system. Workers are deterministic, idempotent where possible, and designed to run without human intervention. They are triggered by CLI commands such as `paperforge sync` or `paperforge ocr`.
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ Each literature item tracks `ocr_status` through a finite state machine:
|
|||
|
||||
## Directory Structure
|
||||
|
||||
PaperForge Lite uses **5 core directories** under the Obsidian vault root. All paths are configurable via `paperforge.json` and resolved through the shared config resolver (see [ADR-001](#adr-001-config-precedence)).
|
||||
PaperForge uses **5 core directories** under the Obsidian vault root. All paths are configurable via `paperforge.json` and resolved through the shared config resolver (see [ADR-001](#adr-001-config-precedence)).
|
||||
|
||||
```
|
||||
{vault_root}/
|
||||
|
|
@ -632,4 +632,4 @@ The current implementation targets **OpenCode Agent** (`.opencode/skills/` and `
|
|||
|
||||
---
|
||||
|
||||
*PaperForge Lite | Architecture Documentation | For Maintainers and Contributors*
|
||||
*PaperForge | Architecture Documentation | For Maintainers and Contributors*
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
## Terminology
|
||||
|
||||
- [ ] "PaperForge Lite" used correctly (product name, not "Paperforge" or "Paper Forge")
|
||||
- [ ] "PaperForge" used correctly (product name, not "Paperforge" or "Paper Forge")
|
||||
- [ ] "Zotero" capitalized correctly
|
||||
- [ ] "Obsidian" capitalized correctly
|
||||
- [ ] "PaddleOCR" capitalized correctly
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
## Branding
|
||||
|
||||
- [ ] README.md uses correct product name "PaperForge Lite"
|
||||
- [ ] README.md uses correct product name "PaperForge"
|
||||
- [ ] `AGENTS.md` uses correct product name
|
||||
- [ ] Command docs use correct product name
|
||||
- [ ] No references to deprecated package name `paperforge_lite` in user-facing docs
|
||||
|
|
@ -66,4 +66,4 @@
|
|||
|
||||
---
|
||||
|
||||
*PaperForge Lite | Consistency Checklist | For maintainers and release managers*
|
||||
*PaperForge | Consistency Checklist | For maintainers and release managers*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# PaperForge Lite 快速安装指南
|
||||
# PaperForge 快速安装指南
|
||||
|
||||
> 详细版教程(含截图和每个步骤的说明)请见 [setup-guide.md](setup-guide.md)。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# PaperForge Lite 安装配置与使用指南
|
||||
# PaperForge 安装配置与使用指南
|
||||
|
||||
> 本文档面向**首次使用 PaperForge 的新用户**,从零开始覆盖安装、配置、使用全流程。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
"""paperforge — PaperForge Lite package."""
|
||||
"""paperforge — PaperForge package."""
|
||||
|
||||
__version__ = "1.4.1"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""paperforge.cli — PaperForge Lite command-line interface.
|
||||
"""paperforge.cli — PaperForge command-line interface.
|
||||
|
||||
Exposes `paperforge paths`, `paperforge status`, `paperforge sync`,
|
||||
`paperforge ocr`, `paperforge ocr --diagnose`, `paperforge deep-reading`,
|
||||
|
|
@ -118,7 +118,7 @@ def _import_worker_functions() -> None:
|
|||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="paperforge",
|
||||
description="PaperForge Lite — Obsidian + Zotero literature pipeline CLI",
|
||||
description="PaperForge — Obsidian + Zotero literature pipeline CLI",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--vault",
|
||||
|
|
@ -214,10 +214,10 @@ def build_parser() -> argparse.ArgumentParser:
|
|||
)
|
||||
|
||||
# doctor
|
||||
sub.add_parser("doctor", help="Validate PaperForge Lite setup and configuration")
|
||||
sub.add_parser("doctor", help="Validate PaperForge setup and configuration")
|
||||
|
||||
# update
|
||||
sub.add_parser("update", help="Update PaperForge Lite to the latest version")
|
||||
sub.add_parser("update", help="Update PaperForge to the latest version")
|
||||
|
||||
# setup wizard
|
||||
sub.add_parser("setup", help="Run the setup wizard (Textual-based)")
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""PaperForge Lite — shared configuration and path resolver.
|
||||
"""PaperForge — shared configuration and path resolver.
|
||||
|
||||
Configuration precedence (D-Configuration Hierarchy):
|
||||
1. Explicit overrides (function parameter)
|
||||
|
|
@ -217,7 +217,7 @@ def paperforge_paths(
|
|||
"""Build the complete PaperForge path inventory for a vault.
|
||||
|
||||
Returns absolute Path objects for every user-facing and worker-facing
|
||||
location used by PaperForge Lite.
|
||||
location used by PaperForge.
|
||||
|
||||
Args:
|
||||
vault: Path to the vault root.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""PaperForge Lite — logging configuration single entry point.
|
||||
"""PaperForge — logging configuration single entry point.
|
||||
|
||||
Call ``configure_logging(verbose)`` once at CLI startup before command dispatch.
|
||||
All worker and command modules use ``logging.getLogger(__name__)`` for
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
PaperForge Lite Setup Wizard (Textual Step-by-Step)
|
||||
PaperForge Setup Wizard (Textual Step-by-Step)
|
||||
====================================================
|
||||
基于 Textual ContentSwitcher + Tree + ProgressBar 的步骤向导。
|
||||
|
||||
|
|
@ -393,7 +393,7 @@ class WelcomeStep(StepScreen):
|
|||
classes="logo",
|
||||
)
|
||||
yield Markdown("""
|
||||
**PaperForge Lite** 是一个连接 Zotero 与 Obsidian 的文献工作流工具。
|
||||
**PaperForge** 是一个连接 Zotero 与 Obsidian 的文献工作流工具。
|
||||
|
||||
安装向导将引导你完成以下配置:
|
||||
|
||||
|
|
@ -1199,7 +1199,7 @@ class DoneStep(StepScreen):
|
|||
yield Markdown(f"""
|
||||
## 安装完成!
|
||||
|
||||
PaperForge Lite 已完成安装和初始化。以下是立即开始使用的步骤:
|
||||
PaperForge 已完成安装和初始化。以下是立即开始使用的步骤:
|
||||
|
||||
### 首次使用步骤:
|
||||
|
||||
|
|
@ -1372,7 +1372,7 @@ class SetupWizardApp(App):
|
|||
# 左侧:步骤导航树
|
||||
with Vertical(classes="sidebar"):
|
||||
yield Static("安装步骤", classes="sidebar-title")
|
||||
tree = Tree("PaperForge Lite", id="step-tree", classes="step-tree")
|
||||
tree = Tree("PaperForge", id="step-tree", classes="step-tree")
|
||||
for i, title in enumerate(STEP_TITLES):
|
||||
tree.root.add_leaf(f"{i}. {title}")
|
||||
yield tree
|
||||
|
|
@ -1492,7 +1492,7 @@ def _find_vault() -> Path | None:
|
|||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
parser = argparse.ArgumentParser(description="PaperForge Lite 安装向导")
|
||||
parser = argparse.ArgumentParser(description="PaperForge 安装向导")
|
||||
parser.add_argument("--vault", type=Path, default=None, help="Vault 路径(可选,默认当前目录)")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ def check_wikilink_format(vault: Path, paths: dict, add_check) -> None:
|
|||
|
||||
|
||||
def run_doctor(vault: Path, verbose: bool = False) -> int:
|
||||
"""Validate PaperForge Lite setup and report by category.
|
||||
"""Validate PaperForge setup and report by category.
|
||||
|
||||
Returns:
|
||||
0 if all checks pass, 1 otherwise.
|
||||
|
|
@ -407,7 +407,7 @@ def run_doctor(vault: Path, verbose: bool = False) -> int:
|
|||
else:
|
||||
add_check("Agent 脚本", "warn", "literature-qa skill 目录未找到", "确认 agent_config_dir 配置正确")
|
||||
|
||||
print("PaperForge Lite Doctor")
|
||||
print("PaperForge Doctor")
|
||||
print("=" * 40)
|
||||
current_category = ""
|
||||
fix_map: dict[str, list[str]] = {}
|
||||
|
|
@ -487,7 +487,7 @@ def run_status(vault: Path, verbose: bool = False) -> int:
|
|||
except Exception:
|
||||
continue
|
||||
|
||||
print("PaperForge Lite status")
|
||||
print("PaperForge status")
|
||||
print(f"- vault: {vault}")
|
||||
print(f"- system_dir: {cfg['system_dir']}")
|
||||
print(f"- resources_dir: {cfg['resources_dir']}")
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@ def run_update(vault: Path) -> int:
|
|||
local = "unknown"
|
||||
remote = _remote_version()
|
||||
logger.info("%s", "=" * 50)
|
||||
logger.info("PaperForge Lite 更新")
|
||||
logger.info("PaperForge 更新")
|
||||
logger.info("%s", "=" * 50)
|
||||
logger.info("本地版本: %s", local)
|
||||
logger.info("远程版本: %s", remote or "unknown")
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|||
[project]
|
||||
name = "paperforge"
|
||||
version = "1.4.1"
|
||||
description = "PaperForge Lite — Obsidian + Zotero literature pipeline CLI"
|
||||
description = "PaperForge — Obsidian + Zotero literature pipeline CLI"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
license = {text = "MIT"}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Compatibility wrapper for the PaperForge Lite setup wizard."""
|
||||
"""Compatibility wrapper for the PaperForge setup wizard."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Validate a PaperForge Lite installation."""
|
||||
"""Validate a PaperForge installation."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ def main() -> int:
|
|||
passed = sum(1 for ok, _ in all_results if ok)
|
||||
failed = [msg for ok, msg in all_results if not ok and not msg.startswith("[WARN]")]
|
||||
warnings = [msg for ok, msg in all_results if not ok and msg.startswith("[WARN]")]
|
||||
print(f"PaperForge Lite validation: {passed} passed, {len(failed)} failed, {len(warnings)} warnings")
|
||||
print(f"PaperForge validation: {passed} passed, {len(failed)} failed, {len(warnings)} warnings")
|
||||
for _, msg in all_results:
|
||||
print(msg)
|
||||
return 0 if not failed else 1
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
PaperForge Lite Setup Wizard (Textual Step-by-Step)
|
||||
PaperForge Setup Wizard (Textual Step-by-Step)
|
||||
====================================================
|
||||
基于 Textual ContentSwitcher + Tree + ProgressBar 的步骤向导。
|
||||
|
||||
|
|
@ -393,7 +393,7 @@ class WelcomeStep(StepScreen):
|
|||
classes="logo",
|
||||
)
|
||||
yield Markdown("""
|
||||
**PaperForge Lite** 是一个连接 Zotero 与 Obsidian 的文献工作流工具。
|
||||
**PaperForge** 是一个连接 Zotero 与 Obsidian 的文献工作流工具。
|
||||
|
||||
安装向导将引导你完成以下配置:
|
||||
|
||||
|
|
@ -1201,7 +1201,7 @@ class DoneStep(StepScreen):
|
|||
yield Markdown(f"""
|
||||
## 安装完成!
|
||||
|
||||
PaperForge Lite 已完成安装和初始化。以下是立即开始使用的步骤:
|
||||
PaperForge 已完成安装和初始化。以下是立即开始使用的步骤:
|
||||
|
||||
### 首次使用步骤:
|
||||
|
||||
|
|
@ -1382,7 +1382,7 @@ class SetupWizardApp(App):
|
|||
# 左侧:步骤导航树
|
||||
with Vertical(classes="sidebar"):
|
||||
yield Static("安装步骤", classes="sidebar-title")
|
||||
tree = Tree("PaperForge Lite", id="step-tree", classes="step-tree")
|
||||
tree = Tree("PaperForge", id="step-tree", classes="step-tree")
|
||||
for i, title in enumerate(STEP_TITLES):
|
||||
tree.root.add_leaf(f"{i}. {title}")
|
||||
yield tree
|
||||
|
|
@ -1502,7 +1502,7 @@ def _find_vault() -> Path | None:
|
|||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
parser = argparse.ArgumentParser(description="PaperForge Lite 安装向导")
|
||||
parser = argparse.ArgumentParser(description="PaperForge 安装向导")
|
||||
parser.add_argument("--vault", type=Path, default=None, help="Vault 路径(可选,默认当前目录)")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""Test fixtures and helpers for PaperForge Lite smoke tests."""
|
||||
"""Test fixtures and helpers for PaperForge smoke tests."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Generate minimal pre-install sandbox for testing PaperForge Lite setup wizard.
|
||||
"""Generate minimal pre-install sandbox for testing PaperForge setup wizard.
|
||||
|
||||
Run from repo root:
|
||||
python tests/sandbox/generate_sandbox.py
|
||||
|
|
@ -161,10 +161,10 @@ def build() -> None:
|
|||
|
||||
readme = SANDBOX / "README.md"
|
||||
readme.write_text(
|
||||
f"""# PaperForge Lite — Test Sandbox
|
||||
f"""# PaperForge — Test Sandbox
|
||||
|
||||
## 用途
|
||||
测试 PaperForge Lite 安装向导 `setup_wizard.py` 的完整流程。
|
||||
测试 PaperForge 安装向导 `setup_wizard.py` 的完整流程。
|
||||
|
||||
## 目录结构
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
"""
|
||||
Test suite for PaperForge Lite command documentation.
|
||||
Test suite for PaperForge command documentation.
|
||||
|
||||
Ensures user-facing docs use stable `paperforge ...` commands
|
||||
instead of unresolved <system_dir> token paths.
|
||||
|
|
|
|||
|
|
@ -74,6 +74,6 @@ def test_doctor_on_empty_vault(tmp_path, capsys):
|
|||
(tmp_path / "paperforge.json").write_text(json.dumps(pf_cfg), encoding="utf-8")
|
||||
code = run_doctor(tmp_path)
|
||||
captured = capsys.readouterr().out
|
||||
assert "PaperForge Lite Doctor" in captured
|
||||
assert "PaperForge Doctor" in captured
|
||||
assert "[FAIL]" in captured or "[WARN]" in captured
|
||||
assert code == 1
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""End-to-end integration tests for the PaperForge Lite literature pipeline.
|
||||
"""End-to-end integration tests for the PaperForge literature pipeline.
|
||||
|
||||
Covers: Zotero JSON export -> selection-sync -> index-refresh -> OCR queue -> formal notes.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""Unit tests for PaperForge Lite setup wizard standalone functions.
|
||||
"""Unit tests for PaperForge setup wizard standalone functions.
|
||||
|
||||
Covers: AGENT_CONFIGS, EnvChecker (check_python, check_vault, check_dependencies,
|
||||
get_exports_dir, _find_zotero), CheckResult, and _find_vault.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""Smoke tests for PaperForge Lite — Phase 8 regression gate.
|
||||
"""Smoke tests for PaperForge — Phase 8 regression gate.
|
||||
|
||||
These tests validate:
|
||||
- ld_deep.py importability from deployed location
|
||||
|
|
|
|||
Loading…
Reference in a new issue