Research Assistant
9f511dfd26
docs(060): create Phase 60 setup modularization plans
...
4 plans, 2 waves decomposing setup_wizard.py (1086 lines) into 6 focused
classes with SetupPlan orchestrator and --headless --json per-step output.
- 060-01: SetupStepResult + SetupChecker + ConfigWriter (Wave 1)
- 060-02: VaultInitializer + RuntimeInstaller (Wave 1)
- 060-03: AgentInstaller (Wave 1)
- 060-04: SetupPlan orchestrator + CLI integration + compat shim (Wave 2)
2026-05-09 15:59:48 +08:00
Research Assistant
9a0843faec
docs(57): create contract layer phase plans
...
4 plans, 12 tasks across 2 waves:
- 057-01: Core types (ErrorCode, PFResult/PFError) + round-trip tests
- 057-02: Status & doctor --json PFResult wrapping + contract tests
- 057-03: Sync & ocr --diagnose --json PFResult wrapping + contract tests
- 057-04: Dashboard command + plugin contract + contract tests
All plans pass frontmatter and structure validation.
2026-05-09 14:38:37 +08:00
Research Assistant
a61f9fb6cb
docs(55): create phase plans for CI optimization and consistency audit
...
Plan 55-001: Consistency Audit Tests — cross-layer validation detecting L1 mock
drift against L4 golden dataset ground truth (9+ tests across 5 test classes)
Plan 55-002: Plasma Matrix CI Pipeline — full ci.yml rewrite with L0-L5 merge
gate, plasma matrix (3 OS x 3 Python for L1), path-filtered triggers via
dorny/paths-filter, and re-actors/alls-green aggregator for branch protection
2026-05-09 11:58:59 +08:00
Research Assistant
6d288141bc
docs(54): add execution summaries, verification report, and state updates for Phase 54
...
- 54-001-SUMMARY.md, 54-002-SUMMARY.md, 54-003-SUMMARY.md added
- 54-VERIFICATION.md with full test results and success criteria
- STATE.md updated: phase complete (100%, 19/19 plans)
- ROADMAP.md updated: Phase 54 marked complete
- REQUIREMENTS.md: JNY-01..03, CHAOS-01..04, CI-05 marked complete
2026-05-09 00:53:30 +08:00
Research Assistant
28a2d78432
feat(54-003): add ci-chaos.yml for weekly scheduled + manual chaos test execution
...
- Weekly schedule: Sunday 06:00 UTC (cron: '0 6 * * 0')
- Manual trigger via workflow_dispatch
- Runs pytest tests/chaos/ -m chaos on ubuntu-latest with Python 3.11
- Uploads JUnit XML results artifact on failure
- Completely independent from ci.yml (chaos excluded from PR/merge gate)
2026-05-09 00:53:05 +08:00
Research Assistant
d2de2454d7
feat(54-002): add CHAOS_MATRIX.md and chaos tests for corrupted inputs, network failures, filesystem errors
...
- tests/chaos/scenarios/CHAOS_MATRIX.md: 15+ destructive scenarios documented with IDs, triggers, expected behavior, safety contracts
- tests/chaos/conftest.py: chaos_vault, chaos_vault_standard fixtures with isolation guards + file corruption helpers
- tests/chaos/test_corrupted_inputs.py: CHAOS-01 (6 tests: malformed JSON, empty, missing key, corrupt PDF, broken meta, missing frontmatter)
- tests/chaos/test_network_failures.py: CHAOS-02 (4 tests: 401, 500, timeout, DNS unreachable via env var manipulation)
- tests/chaos/test_filesystem_errors.py: CHAOS-03 (4 tests: deleted dirs, missing note, permission denied)
2026-05-09 00:53:03 +08:00
Research Assistant
341941ab09
feat(54-001): add UX contract and user journey tests
...
- docs/ux-contract.md: verifiable step sequences for install, sync, OCR, dashboard
- tests/journey/conftest.py: journey_fresh_vault, journey_established_vault, journey_cli_invoker fixtures with isolation guards
- tests/journey/test_onboarding.py: JNY-02 new user onboarding (sync -> OCR -> analyze -> deep-read)
- tests/journey/test_daily_workflow.py: JNY-03 existing user adds paper workflow
2026-05-09 00:52:55 +08:00
Research Assistant
647227c5db
docs(53-plugin-e2e): add execution summaries and verification report
2026-05-09 00:09:17 +08:00
Research Assistant
780f5a06d0
chore(53): add .vite/ to .gitignore
2026-05-09 00:08:52 +08:00
Research Assistant
2cb223ddbb
feat(53-001): extract src/ modules from main.js and add Vitest test infrastructure
...
- runtime.js: resolvePythonExecutable, getPluginVersion, checkRuntimeVersion
- errors.js: classifyError, buildRuntimeInstallCommand, parseRuntimeStatus
- commands.js: ACTIONS, buildCommandArgs, runSubprocess
- package.json with vitest + obsidian-test-mocks + jsdom
- vitest.config.ts with jsdom environment
- 42 Vitest tests across 3 test files
- Refactored main.js to import from src/ modules
2026-05-09 00:05:19 +08:00
Research Assistant
18deeb24d0
docs(52-golden-datasets-cli-contracts): add execution summary and verification report
2026-05-08 23:33:11 +08:00
Research Assistant
ab7ac0d6ab
feat(52-golden-datasets-cli-contracts): add CLI contract tests with snapshot integration
...
- tests/cli/ with conftest.py (cli_invoker, vault_builder, mock_ocr_backend fixtures)
- test_contract_helpers.py with normalize_snapshot, assert_valid_json, assert_json_shape
- 3 test files covering all 8 CLI commands (paths, status, sync, ocr, doctor,
repair, context, setup) with exit code, output shape, and error contracts
- fixtures/ocr/mock_ocr_backend.py with 4 mock modes (success, pending, error, timeout)
- pyproject.toml: added pytest-snapshot, responses, pytest-timeout, pytest-mock,
coverage; added testpaths and layer markers
- All 27 tests pass (CLI-01, CLI-02, CLI-03 satisfied)
2026-05-08 23:32:03 +08:00
Research Assistant
2068109d2b
feat(52-golden-datasets-cli-contracts): create golden dataset fixtures
...
- 10 Zotero JSON variants in fixtures/zotero/ (orthopedic, sports_medicine,
multi_attachment, no_pdf, absolute_paths, storage_prefix, bare_relative,
empty, malformed, missing_keys, cjk_content)
- 4 minimal PDFs generated via pymupdf (blank, two_page, with_figures, CJK)
- 6 mock PaddleOCR response fixtures (submit, poll_pending, poll_done,
result, error, timeout) + extracted_fulltext.md + figure_map.json
- 4 expected output snapshots (paths_json, status_json,
formal_note_frontmatter, index_json)
- MANIFEST.json tracks all 30+ fixtures with used_by, desc, generated
- VaultBuilder factory in fixtures/vault_builder.py with 3 levels
- All 5 FIX requirements (FIX-01 through FIX-05) satisfied
2026-05-08 23:23:01 +08:00
Research Assistant
6b68794c76
docs: complete v2.0 project research — 6-layer testing infrastructure synthesis
...
- STACK.md: pytest 8+, Vitest 2+, obsidian-test-mocks, plasma CI matrix
- FEATURES.md: table stakes, differentiators, anti-features, MVP recommendation
- ARCHITECTURE.md: modified testing diamond, mock systems, fixture hierarchy, 6 ADRs
- PITFALLS.md: 13 pitfalls with prevention strategies, recovery plans
- SUMMARY.md: cross-cutting synthesis with 5-phase roadmap implications
2026-05-08 22:45:25 +08:00
Research Assistant
5b30c02392
fix: auto-discover all pf-* skills for Codex/Claude skill directories
2026-05-08 22:29:23 +08:00
Research Assistant
46f78d1ff6
feat: add pf-end command — explicit discussion record saving
2026-05-08 20:04:56 +08:00
Research Assistant
5ed8cf5916
fix: ensure switching class is always cleaned up after action
2026-05-08 19:37:47 +08:00
Research Assistant
44619e1560
fix: add missing v1.12 Chinese i18n keys and fix lang fallback
2026-05-08 19:25:26 +08:00
Research Assistant
2b5b649bd9
feat: enable Run Doctor quick action (backend was already functional)
2026-05-08 19:20:05 +08:00
Research Assistant
c117e43a5e
chore: remove redundant Run All Pending OCR button
2026-05-08 19:16:43 +08:00
Research Assistant
d941acef1c
fix: refresh dashboard stats after sync completes
2026-05-08 19:13:03 +08:00
Lin Zhaoxuan
79b4930f7e
Merge pull request #3 from LLLin000/milestone/v1.12-clean
...
v1.12: close plugin runtime and onboarding loop (product only)
2026-05-08 18:39:03 +08:00
Research Assistant
4c9bbd9917
bump: 1.4.17rc2 -> 1.4.17rc3
2026-05-08 17:48:10 +08:00
Research Assistant
e54ef1ac5c
test: align deep-reading expectations with main-note workflow
2026-05-08 17:47:46 +08:00
Research Assistant
7e6abc2070
test: prefer repo source for OCR doctor fixtures
2026-05-08 17:47:45 +08:00
Research Assistant
f6d4b54032
docs(54-002): delete pip-first docs, update README.md and AGENTS.md references
...
- Delete docs/INSTALLATION.md (pip-first installation guide)
- Delete docs/setup-guide.md (detailed installation guide)
- Update README.md docs table: remove deleted file references
- Update AGENTS.md: replace deleted doc links with plugin-first install guidance
2026-05-08 17:47:39 +08:00
Research Assistant
79b540e490
feat(54-001/003): add OCR queue buttons, /pf-deep handoff, pending action, and privacy modal
...
- Add i18n keys for OCR queue, /pf-deep handoff, and privacy warning (en/zh)
- Add OCR toggle button to per-paper dashboard card (set do_ocr via processFrontMatter)
- Change /pf-deep copy button to copy full '/pf-deep <key>' command
- Add agent platform label below copy button
- Add Run All Pending OCR dynamic action card
- Add once-per-session OCR privacy warning modal (PaperForgeOcrPrivacyModal)
- Add CSS for queue hint, pending action card, platform label, and privacy modal
2026-05-08 17:47:39 +08:00
Research Assistant
6a571dc76c
feat(53-doctor-verdict-surface): add interpreter resolution, per-module dep checks, and verdict
...
- Add _read_plugin_data() helper to read plugin data.json for python_path override
- Add _resolve_plugin_interpreter() replicating plugin resolvePythonExecutable() logic
- Add _query_resolved_version() to run interpreter --version via subprocess
- Add _query_resolved_package() to run pip show via resolved interpreter
- Add _MODULE_MANIFEST with per-module metadata (requests, pymupdf, Pillow, PyYAML)
- Wire resolved interpreter path, version, package drift, and wrong-env detection into run_doctor()
- Replace flat required_modules with per-module checks including version info and specific repair commands
- Add PyYAML version check (warn if < 6.0)
- Add final verdict aggregation [OK]/[WARN]/[FAIL] with color coding and recommended next action
- Color disabled when output is piped (non-TTY)
- Update return value: 1 if any fail, 0 otherwise
2026-05-08 17:47:39 +08:00
Research Assistant
70767c413a
feat(52-001): add Runtime Health UI, dashboard drift banner, extended error classification, Copy diagnostic
...
- Add Runtime Health section in settings showing Plugin vX vs Python vY
- Add match/mismatch badge (green/red) with version comparison
- Add 'Sync Runtime' button that runs pip install --upgrade
- Add Dashboard yellow drift warning banner on version mismatch
- Extend _formatSetupError to 10 categories (pip/network/SSL/disk/Python/etc)
- Add 'Copy diagnostic' button on setup failure with env info
- Add all i18n keys in both en and zh
- Add CSS for badge states, drift banner, and diagnostic button
2026-05-08 17:47:39 +08:00
Research Assistant
18b6f07ce6
chore(52-001): align manifest sources, bump minAppVersion to 1.9.0, add PyYAML dep
...
- Add clarifying comment in bump.py about canonical version source
- Update root and plugin manifest.json minAppVersion from 1.0.0 to 1.9.0
- Update versions.json compatibility mapping to 1.9.0
- Add pyyaml>=6.0 to pyproject.toml dependencies
2026-05-08 17:47:38 +08:00
Research Assistant
6bcc32a5b6
feat(51-001): consistent interpreter usage, zotero_data_dir required with validation
...
Part A: All 8 subprocess call sites now use resolvePythonExecutable with
settings and extraArgs propagation for py -3 support:
- _fetchVersion, _fetchStats, _runAction, _preCheck, _runInstall, _stepComplete,
_autoUpdate, command palette
- Zero bare 'python' spawn/exec calls remain
- Spaces-in-path safe via execFile instead of shell-string exec
Part B: zotero_data_dir required with validation:
- field_zotero_placeholder i18n updated to 'Required'/'必填'
- Wizard placeholder uses t() call instead of hardcoded string
- _validateStep3 checks: non-empty -> exists -> isDirectory -> has storage/
- _validate() rejects missing zotero_data_dir with validate_zotero i18n key
- zotero_data_dir always passed to --zotero-data flag (no conditional)
2026-05-08 17:47:38 +08:00
Research Assistant
27d926d83b
feat(51-001): add Python interpreter row, custom path input, and validate button to settings UI
...
- Add field_python_interp, field_python_custom, btn_validate i18n keys (en/zh)
- Add read-only resolved interpreter row with source label (auto-detected/manual/stale)
- Add custom path text input wired to settings.python_path with auto-save
- Add Validate button with full check chain: exists -> executable -> version >= 3.10 -> pip warn
- Stale saved override shows [!!] warning prefix in read-only row
- Input changes re-render the read-only row and clear/re-set stale flag
2026-05-08 17:47:38 +08:00
Research Assistant
31cd04b4cc
feat(51-001): refactor resolvePythonExecutable with manual override and reload validation
...
- Add python_path to DEFAULT_SETTINGS for storing manual override path
- Refactor resolvePythonExecutable(vaultPath, settings) to return {path, source, extraArgs}
- Manual override (settings.python_path) bypasses auto-detection when set and exists
- Detection order: manual -> .paperforge-test-venv -> .venv -> venv -> py -3 -> python -> python3
- py -3 detection uses extraArgs for proper launcher argument passing
- Stale override re-validated on plugin load; _python_path_stale flag set without clearing
- Update all existing call sites to destructure .path from new return type
2026-05-08 17:47:38 +08:00
Research Assistant
b81789111c
refactor: remove deep-reading.md — deep reading lives in main note as ## 🔍 精读
2026-05-08 01:59:17 +08:00
Research Assistant
7e6e60ffaf
fix: normalize line endings before base-view no-change comparison
2026-05-08 01:50:25 +08:00
Research Assistant
1b1984c619
fix: collection panel cumulative lifecycle counts, remove ai_context_ready
2026-05-08 01:47:00 +08:00
Research Assistant
e99987793a
fix: install from tagged release URL, version consistency check on startup
2026-05-08 01:41:54 +08:00
Research Assistant
69111e15c4
fix: show PaperForge version in setup wizard Complete step
2026-05-08 01:39:12 +08:00
Research Assistant
fa3187519d
fix: add --version to CLI, fix plugin version detection to use python -c
2026-05-08 01:35:24 +08:00
Research Assistant
5dc1b720eb
fix: persist dashboard version from Python package, skip base rewrite on no-change
2026-05-08 01:33:33 +08:00
Research Assistant
6c52e33545
chore: bump version to 1.4.17rc2
2026-05-08 01:26:19 +08:00
Research Assistant
dd71bb0f79
fix: v1.4.17rc2 — OCR quote fix, 4-stage lifecycle, .env fallback, Codex support, deep-reading anchors, auto-update pip
2026-05-08 01:26:04 +08:00
Research Assistant
53e76b871d
Revert "fix: move Zotero data auto-detection before junction creation"
...
This reverts commit c601cdc250 .
2026-05-07 22:26:24 +08:00
Research Assistant
c601cdc250
fix: move Zotero data auto-detection before junction creation
...
Auto-detection was running in Phase 3, after the junction
creation block in Phase 2 had already been skipped.
2026-05-07 22:25:04 +08:00
Research Assistant
63a6cfb539
fix: use file.ext instead of file.extension in Base view filters (Obsidian syntax)
2026-05-07 22:23:07 +08:00
Research Assistant
1275a34ed1
docs: add v1.4.17rc1 changelog entry
2026-05-07 22:13:41 +08:00
Research Assistant
95563e1492
docs: update README Python requirement to 3.10+, remove textual from acknowledgments
2026-05-07 22:13:00 +08:00
Research Assistant
315abdcc3a
chore: bump version to 1.4.17rc1
2026-05-07 21:54:35 +08:00
Research Assistant
5f2941bf56
merge: milestone/v1.6-ai-ready-asset-foundation into master
...
Consolidates v1.6 through v1.11 milestone work with merge-gate remediation:
- v1.6: AI-ready literature asset foundation
- v1.7: Context-aware dashboard
- v1.8: AI discussion & deep-reading dashboard
- v1.9: Frontmatter rationalization & library-record deprecation
- v1.10: Dependency cleanup
- v1.11: Merge gate — index path resolution, library-records cleanup,
TUI removal, module hardening, repair blind spots,
upgrade migration safeguards, index path integrity
2026-05-07 21:54:00 +08:00
Research Assistant
76df98a63d
docs(merge-gate): update planning state, roadmap, and agent documentation for milestone completion
2026-05-07 21:52:31 +08:00