diff --git a/AGENTS.md b/AGENTS.md index d487c9fb..723d8bd0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 新下载的代码/* / --- -*PaperForge Lite | 快速开始指南 | 安装后阅读* +*PaperForge | 快速开始指南 | 安装后阅读* diff --git a/CHANGELOG.md b/CHANGELOG.md index 88ebe908..e12c7292 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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/). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 14c2d410..1587f246 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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!* diff --git a/README.md b/README.md index a7b653e8..dde4537d 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ \_| \_| |_/\_| \____/\_| \_\_| \___/\_| \_|\____/\____/ ``` -# PaperForge Lite +# PaperForge [![PyPI version](https://img.shields.io/pypi/v/paperforge?style=for-the-badge&logo=pypi&logoColor=white&color=3775A9)](https://pypi.org/project/paperforge/) [![Python version](https://img.shields.io/pypi/pyversions/paperforge?style=for-the-badge&logo=python&logoColor=white&color=3775A9)](https://python.org) diff --git a/README.zh-CN.md b/README.zh-CN.md index 44e8d412..3c54dce6 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -7,7 +7,7 @@ \_| \_| |_/\_| \____/\_| \_\_| \___/\_| \_|\____/\____/ ``` -# PaperForge Lite +# PaperForge [![PyPI version](https://img.shields.io/pypi/v/paperforge?style=for-the-badge&logo=pypi&logoColor=white&color=3775A9)](https://pypi.org/project/paperforge/) [![Python version](https://img.shields.io/pypi/pyversions/paperforge?style=for-the-badge&logo=python&logoColor=white&color=3775A9)](https://python.org) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index cf6ed7aa..2676b7be 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -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* diff --git a/docs/CONSISTENCY-CHECKLIST.md b/docs/CONSISTENCY-CHECKLIST.md index 17698a51..df113684 100644 --- a/docs/CONSISTENCY-CHECKLIST.md +++ b/docs/CONSISTENCY-CHECKLIST.md @@ -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* diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 01dfd1dd..63895ebb 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -1,4 +1,4 @@ -# PaperForge Lite 快速安装指南 +# PaperForge 快速安装指南 > 详细版教程(含截图和每个步骤的说明)请见 [setup-guide.md](setup-guide.md)。 diff --git a/docs/setup-guide.md b/docs/setup-guide.md index 6955ccec..7568cb01 100644 --- a/docs/setup-guide.md +++ b/docs/setup-guide.md @@ -1,4 +1,4 @@ -# PaperForge Lite 安装配置与使用指南 +# PaperForge 安装配置与使用指南 > 本文档面向**首次使用 PaperForge 的新用户**,从零开始覆盖安装、配置、使用全流程。 diff --git a/paperforge/__init__.py b/paperforge/__init__.py index ecb65524..0ee36ba8 100644 --- a/paperforge/__init__.py +++ b/paperforge/__init__.py @@ -1,3 +1,3 @@ -"""paperforge — PaperForge Lite package.""" +"""paperforge — PaperForge package.""" __version__ = "1.4.1" diff --git a/paperforge/cli.py b/paperforge/cli.py index df7e5fbf..1aa78fcb 100644 --- a/paperforge/cli.py +++ b/paperforge/cli.py @@ -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)") diff --git a/paperforge/config.py b/paperforge/config.py index beeac1fe..8608168d 100644 --- a/paperforge/config.py +++ b/paperforge/config.py @@ -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. diff --git a/paperforge/logging_config.py b/paperforge/logging_config.py index 843bbe22..c78881cd 100644 --- a/paperforge/logging_config.py +++ b/paperforge/logging_config.py @@ -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 diff --git a/paperforge/setup_wizard.py b/paperforge/setup_wizard.py index c837fb2e..9b22c216 100644 --- a/paperforge/setup_wizard.py +++ b/paperforge/setup_wizard.py @@ -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) diff --git a/paperforge/worker/status.py b/paperforge/worker/status.py index ddff53b4..053c8a1b 100644 --- a/paperforge/worker/status.py +++ b/paperforge/worker/status.py @@ -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']}") diff --git a/paperforge/worker/update.py b/paperforge/worker/update.py index 1de95cf2..a414b630 100644 --- a/paperforge/worker/update.py +++ b/paperforge/worker/update.py @@ -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") diff --git a/pyproject.toml b/pyproject.toml index f7180f7b..71e48b39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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"} diff --git a/scripts/setup.py b/scripts/setup.py index bafc3902..260565d7 100644 --- a/scripts/setup.py +++ b/scripts/setup.py @@ -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 diff --git a/scripts/validate_setup.py b/scripts/validate_setup.py index 42ac4c54..8dd5e43e 100644 --- a/scripts/validate_setup.py +++ b/scripts/validate_setup.py @@ -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 diff --git a/setup_wizard.py b/setup_wizard.py index f7f804a1..d6254a5d 100644 --- a/setup_wizard.py +++ b/setup_wizard.py @@ -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) diff --git a/tests/conftest.py b/tests/conftest.py index 22ad502f..42a0d580 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -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 diff --git a/tests/sandbox/generate_sandbox.py b/tests/sandbox/generate_sandbox.py index 59439ce5..54be0240 100644 --- a/tests/sandbox/generate_sandbox.py +++ b/tests/sandbox/generate_sandbox.py @@ -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` 的完整流程。 ## 目录结构 diff --git a/tests/test_command_docs.py b/tests/test_command_docs.py index 5bcfaa5e..0d8d8320 100644 --- a/tests/test_command_docs.py +++ b/tests/test_command_docs.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 token paths. diff --git a/tests/test_doctor.py b/tests/test_doctor.py index b1a2f49c..f60c6c6e 100644 --- a/tests/test_doctor.py +++ b/tests/test_doctor.py @@ -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 diff --git a/tests/test_e2e_pipeline.py b/tests/test_e2e_pipeline.py index b716902e..6567d515 100644 --- a/tests/test_e2e_pipeline.py +++ b/tests/test_e2e_pipeline.py @@ -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. diff --git a/tests/test_setup_wizard.py b/tests/test_setup_wizard.py index 59b2d58a..13b0fbf2 100644 --- a/tests/test_setup_wizard.py +++ b/tests/test_setup_wizard.py @@ -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. diff --git a/tests/test_smoke.py b/tests/test_smoke.py index 2492db75..5740e573 100644 --- a/tests/test_smoke.py +++ b/tests/test_smoke.py @@ -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