Research Assistant
2d5f604ae8
feat: v1.4.11 — Obsidian plugin UX overhaul + headless_setup parity
...
- Plugin: multi-step install wizard modal (5 steps) with editable directory/key inputs
- Plugin: settings tab becomes operation guide; all config moved to wizard
- Plugin: Python/Zotero/BBT pre-check before wizard opens
- Plugin: agent platform selector (OpenCode/Claude/Cursor/Copilot etc.)
- Plugin: responsive dashboard (auto-fit grids, clamp typography)
- Plugin: command output styled in-panel (running/ok/error)
- Plugin: BBT export guidance in settings tab
- Plugin: rename defaults (Resources, Notes, Index_Cards, System, Base)
- Plugin: vault_path auto-detect from Obsidian
- Plugin: auto-update paperforge on plugin load
- CLI: headless_setup now creates Zotero junction (mklink /J)
- CLI: headless_setup deploys skill directory for flat_command agents
- sync: wikilink through junction (no .resolve() — keeps vault-relative paths)
- sync: route absolute paths through Zotero junction for vault-relative wikilinks
- config: remove library-records subdirectory (records now directly under control_dir)
- base_views: fix duplicate views on merge (skip legacy unmarked views)
- base_views: auto-update folder filter when path config changes
- Phases 20-22 planned and documented
- Bump to v1.4.11
2026-04-30 11:14:07 +08:00
Research Assistant
2329e82588
fix: include styles.css in package data; prevent Unicode crash on pip output
2026-04-29 01:06:59 +08:00
Research Assistant
6df746d20c
fix: sync Obsidian plugin even when update is already current
2026-04-29 00:57:30 +08:00
Research Assistant
8d490a3ebc
fix: read remote version from GitHub API content to avoid raw CDN cache
2026-04-29 00:29:45 +08:00
Research Assistant
8a3b6b4f7e
chore: bump to v1.4.8 and unify update version checks on __init__.py
2026-04-29 00:26:16 +08:00
Research Assistant
6b567d004f
fix: update pip installs from GitHub source instead of package index
2026-04-29 00:16:13 +08:00
Research Assistant
6394043441
fix: move install_obsidian_plugin to _utils.py, reload after update to always use latest code
2026-04-29 00:09:52 +08:00
Research Assistant
0d2c16172f
fix: correct UPDATEABLE_PATHS repo paths; plugin install uses vault-first source; exclude table images from figure-map matching
2026-04-28 23:58:02 +08:00
Research Assistant
3aee514fd5
refactor: extract pipeline_paths into _utils.py — remove 7 copies, 3 of which were dead code
2026-04-28 23:42:00 +08:00
Research Assistant
61b72a467d
refactor: extract load_domain_config into single _domain.py module — remove 7 copies, full rebuild on every call
2026-04-28 23:31:31 +08:00
Research Assistant
049f63ffec
feat: overhaul Obsidian plugin UI — dashboard layout, segmented OCR bar, action cards
2026-04-28 23:14:52 +08:00
Research Assistant
a9ba944ddc
refactor: __init__.py as single version source; pyproject.toml reads dynamically; paperforge.json drops version field
2026-04-28 22:41:48 +08:00
Research Assistant
0bbcb41346
fix: reload paperforge module before installing plugin to get updated path
2026-04-28 22:31:13 +08:00
Research Assistant
1ec09b6baa
fix: surface remote version check errors instead of silently swallowing
2026-04-28 22:23:28 +08:00
Research Assistant
998dc3489a
feat: paperforge update now auto-installs Obsidian plugin
2026-04-28 22:18:42 +08:00
Research Assistant
8dbf188168
fix: sync __version__ to 1.4.3, _remote_version() reads from __init__.py
2026-04-28 22:13:23 +08:00
Research Assistant
f617054d5a
feat: paperforge status --json, plugin panel with OCR progress bar
2026-04-28 19:21:52 +08:00
Research Assistant
ebc4fdeb00
chore: rename PaperForge Lite -> PaperForge across 27 files
2026-04-28 01:25:51 +08:00
Research Assistant
d82fc52521
feat: persistent OCR poll until completion; fix OpenCode commands for pip install; fix test hangs; add command_files to package
2026-04-27 22:52:03 +08:00
Research Assistant
0505fd2fda
feat: add paperforge setup CLI command, one-click install script, sync __version__ to 1.4.0, detect local version from pip metadata
2026-04-27 21:34:03 +08:00
Research Assistant
94f00e990a
fix: sync paperforge.json version to 1.4.0; fix update.py missing GITHUB_REPO/GITHUB_ZIP imports; remove PaperForge.base generation (duplicates Literature Hub)
2026-04-27 21:25:00 +08:00
Research Assistant
f31efec521
chore: remove PaperForge.base generation (duplicates Literature Hub)
2026-04-27 21:20:14 +08:00
Research Assistant
a3270dc791
fix: add creators/extra to load_export_rows row dict, fix journal key lookup for first_author/journal/IF in library-records; add first_author, journal, impact_factor columns to Base views; fix PDF storage/ subdirectory resolution
2026-04-27 20:25:35 +08:00
Research Assistant
67a52a898a
fix: VaultStep.__init__ missing step_id and checker in super() call
2026-04-27 19:49:36 +08:00
Research Assistant
2edb5b65cc
docs(v1.4): commit planning artifacts, test files, and phase summaries for phases 13-19
2026-04-27 19:12:03 +08:00
Research Assistant
93713be21e
feat(UX-01): add auto_analyze_after_ocr config and OCR hook
...
- Add auto_analyze_after_ocr: false to paperforge.json (opt-in, default off)
- Insert hook in ocr.py after ocr_status=done to set analyze:true when
config is enabled
- Wrapped in try/except so a single failure does not abort OCR batch
- Uses read_json (already imported) and re.sub (already imported)
- Regex pattern matches existing frontmatter convention
2026-04-27 17:57:33 +08:00
Research Assistant
7cccf4eefc
refactor(17-dead-code-precommit): remove delegation wrappers and dead code, run ruff cleanup
...
- Remove def load_vault_config delegation wrappers from all 7 worker modules
- Add from paperforge.config import load_vault_config, paperforge_paths at module level
- Remove unused system_dir/resources_dir/control_dir extraction in pipeline_paths
- Fix sync.py intra-function imports (run_selection_sync, run_index_refresh)
- Fix repair.py import path for _resolve_formal_note_path (direct from _utils)
- Add ruff and pre-commit as test dependencies in pyproject.toml
- Configure per-file ruff ignores for pre-existing issues
- Run ruff check --fix + ruff format (353 + 58 issues auto-fixed)
- All 203 tests pass, ruff check zero warnings
2026-04-27 17:40:47 +08:00
Research Assistant
c08f86de0f
feat(17-dead-code-precommit): add ruff config, pre-commit hooks, Check 5, and OCR error context
...
- Add [tool.ruff] section to pyproject.toml (target-version py310, rules E/F/I/UP/B/SIM)
- Create .pre-commit-config.yaml with 7 hooks (ruff lint+format, check-yaml, check-toml, end-of-file-fixer, trailing-whitespace, consistency-audit)
- Add Check 5 (check_duplicate_utils) to scripts/consistency_audit.py
- Add library_record field to OCR error meta.json (4 error paths in ocr.py)
2026-04-27 17:29:13 +08:00
Research Assistant
d472c30d6b
feat(15-01): refactor deep_reading.py and ld_deep.py to use scan_library_records()
...
deep_reading.py:
- Added scan_library_records, _resolve_formal_note_path to _utils imports
- Replaced _resolve_formal_note_path body with re-export comment
- Replaced inline scan loop with scan_library_records() call
- Retained status sync, categorization, and report generation logic
ld_deep.py:
- Added module-level import from paperforge.worker._utils
- Replaced scan_deep_reading_queue() body with thin wrapper
- Wrapper filters deep_reading_status!=done and sorts by OCR/domain/key
- All processing pipeline tests pass (203/203)
2026-04-27 15:58:23 +08:00
Research Assistant
e24ef4ca6f
feat(15-01): add scan_library_records() and _resolve_formal_note_path() to _utils.py
...
- Add _resolve_formal_note_path() with function-level paperforge_paths import
- Add scan_library_records() as pure data acquisition function
- Returns all D-03 fields: zotero_key, domain, title, analyze, do_ocr,
deep_reading_status, ocr_status, note_path
- Uses same regex patterns as ld_deep.py for frontmatter extraction
- No side effects, no categorization, no sorting (caller's responsibility)
- Part of new '# --- Deep-Reading Queue ---' section
2026-04-27 15:55:07 +08:00
Research Assistant
00692ef667
feat(13-logging-foundation): add verbose param to worker function signatures
...
- run_selection_sync(vault) -> run_selection_sync(vault, verbose=False)
- run_index_refresh(vault) -> run_index_refresh(vault, verbose=False)
- run_ocr(vault) -> run_ocr(vault, verbose=False)
- run_doctor(vault) -> run_doctor(vault, verbose=False)
- run_status(vault) -> run_status(vault, verbose=False)
- Backward compatible: default False preserves existing call sites
2026-04-27 15:15:43 +08:00
Research Assistant
492c4c2790
feat(13-logging-foundation): migrate diagnostic print() calls to logger.*()
...
- repair.py: 10 [repair]-tagged diagnostic prints migrated to logger.error/info/warning with printf-style formatting
- commands/ocr.py: 4 [INFO]/[WARN] diagnostic prints migrated to logger.info/warning
- worker/update.py: _log() and _color() functions removed; all 36 _log() call sites migrated to logger.*()
- All user-facing stdout print() calls preserved (4 in repair.py, 6 in commands/ocr.py _diagnose(), 2 in update.py for pip/git output)
- All migrated calls use printf-style %%s/%%d formatting for lazy evaluation
2026-04-27 15:12:04 +08:00
Research Assistant
e0dbfeccec
feat(13-logging-foundation): add module-level logger to all 12 worker and command modules
...
- Added import logging and logger = logging.getLogger(__name__) to:
worker: repair, deep_reading, ocr, sync, status, base_views, update
commands: ocr, repair, deep, sync, status
- 12 of 13 planned files completed (paperforge/update.py does not exist on disk - skipped)
- Verified all logger instances resolve to correct hierarchical names
2026-04-27 15:07:32 +08:00
Research Assistant
ec2e91d4ac
feat(update): smart update with auto-detection + Windows one-click script
...
paperforge update:
- Auto-detects installation method (pip/pip-editable/git/zip)
- Routes to appropriate update strategy
- pip users: pip install --upgrade
- pip-editable users: git pull + pip install -e .
- git users: git pull
- unknown: zip download fallback
scripts/update-paperforge.ps1:
- Windows one-click update script
- Auto-detects install method
- Supports -Force (skip confirm) and -DryRun
- Clear colored output with error handling
AGENTS.md:
- Added comprehensive update section with 4 methods
- Documented auto-update and PowerShell script
2026-04-25 00:17:54 +08:00
Research Assistant
4d57d17975
fix(v1.3-doctor): update worker_script path and doctor checks for v1.3 architecture
...
- config.py: worker_script now points to paperforge/worker/__init__.py
(pipeline/ removed in Phase 12)
- worker/status.py: doctor checks paperforge.worker importability
instead of old literature_pipeline.py existence
- tests/test_config.py: update assertion for new worker_script name
2026-04-25 00:02:53 +08:00
Research Assistant
498a9edfe5
feat(phase-12): extract worker modules from literature_pipeline.py
...
- Create paperforge/worker/ package with sync.py, ocr.py, repair.py,
status.py, deep_reading.py, update.py, base_views.py
- Update paperforge/commands/*.py to import from new worker modules
- Update paperforge/cli.py _import_worker_functions for new paths
- Update paperforge/config.py ld_deep_script resolution with fallback
- Update setup_wizard.py for new worker/skills paths
- Add function-level imports to break circular dependencies
2026-04-24 22:32:25 +08:00