Research Assistant
2c367b576e
feat(27-01): add lifecycle stepper and health matrix CSS components
...
- Section 9: Lifecycle stepper with 6 vertical steps, border-radius circles
- Connecting lines via ::before pseudo-element between steps
- States: .completed (green), .current (pulsing), .pending (dimmed)
- Section 10: Health matrix 2x2 CSS grid with color-coded cells
- Status classes: .ok (green), .warn (yellow), .fail (red)
- Hover tooltips via [title]:hover::after with attr(title)
- All colors use var(--*) Obsidian CSS variables
2026-05-04 14:34:56 +08:00
Research Assistant
927587230d
feat(27-01): add loading skeleton shimmer and enhanced metric card CSS
...
- Section 7: Loading skeleton with @keyframes paperforge-shimmer (1.5s)
- Section 7: Empty state with muted italic styling via .paperforge-empty-state
- Section 2 enhanced: opacity 0.3s transition on metric-card and metric-value
- Added .paperforge-metric-progress and .paperforge-metric-progress-fill for optional progress bar
- All colors use var(--*) Obsidian CSS variables
2026-05-04 14:34:11 +08:00
Research Assistant
935dec6fd5
chore: bump version to v1.4.15
2026-05-04 13:03:11 +08:00
Research Assistant
b294dec386
chore: add v1.6.0 to plugin versions.json
2026-05-04 13:01:30 +08:00
Research Assistant
0b3776909f
chore: bump version to v1.6.0
2026-05-04 13:01:13 +08:00
Research Assistant
ac667bfe3e
feat(26-03): add Copy Context Quick Action with key resolution
...
- Add paperforge-copy-context ACTIONS entry with needsKey flag
- Update _runAction to resolve zotero_key from active file frontmatter
- Add needsFilter support for collection context (--all default)
- Implement clipboard copy with JSON validation for context commands
- Add running guard to prevent simultaneous execution
- Add variable timeout (30s context, 60s collection, 600s other)
- Register command palette entries for both context actions
2026-05-04 12:51:07 +08:00
Research Assistant
972b894b1d
feat(25-02): add doctor and repair Quick Action buttons
...
- Add 'paperforge-doctor' action: runs 'python -m paperforge doctor'
- Add 'paperforge-repair' action: runs 'python -m paperforge repair'
- ACTIONS array now has 4 entries: sync, ocr, doctor, repair
- Existing _runAction() handles both new commands unchanged (thin CLI shell)
2026-05-04 11:23:56 +08:00
Research Assistant
ed1b36703c
feat(25-02): refactor _fetchStats to read formal-library.json directly
...
- Replace Python CLI spawn with fs.readFileSync for primary path
- Single-pass aggregation of lifecycle, health, and OCR counts per D-06
- Fallback to CLI spawn when index file is missing (D-07)
- Add fs and path as top-level requires
- Access system_dir via app.plugins.plugins['paperforge'].settings
2026-05-04 11:23:29 +08:00
Research Assistant
8809519916
feat(22-02): add savePaperforgeJson() and clean stale path fields from plugin data.json on load
...
- Added savePaperforgeJson() method writing path config to paperforge.json vault_config block
- savePaperforgeJson() removes stale top-level path keys, sets schema_version='2' if absent
- After write, refreshes in-memory plugin.settings path fields from paperforge.json
- Added saveSettings() call in onload() to clean stale path fields from plugin data.json on first load
- saveSettings() already filters by DEFAULT_SETTINGS keys (from Task 1), automatically excluding path fields
2026-05-03 22:56:13 +08:00
Research Assistant
610328e5cd
feat(22-02): refactor SettingsTab display to source path config from paperforge.json
...
- Added _pfConfig cache and _refreshPfConfig() to PaperForgeSettingTab constructor
- display() now calls _refreshPfConfig() at start for fresh path config
- Config Summary section reads path values from _pfConfig (paperforge.json source)
- Prep export path hint now reads from _pfConfig.system_dir
- Non-path fields (paddleocr_api_key, zotero_data_dir) still read from plugin.settings
2026-05-03 22:54:42 +08:00
Research Assistant
781c465c75
feat(22-02): add readPaperforgeJson(), clean DEFAULT_SETTINGS, refactor loadSettings/saveSettings
...
- Removed path directory keys (system_dir, resources_dir, literature_dir, control_dir, base_dir) from DEFAULT_SETTINGS
- Kept non-path keys: vault_path, setup_complete, auto_update, agent_platform, language, paddleocr_api_key, zotero_data_dir
- Added readPaperforgeJson() method reading from paperforge.json vault_config block with Python DEFAULT_CONFIG fallback
- Refactored loadSettings() to overwrite path fields from readPaperforgeJson()
- Refactored saveSettings() to only persist DEFAULT_SETTINGS keys (excludes path fields)
- Updated prep export path hint default from 'System' to '99_System'
2026-05-03 22:53:18 +08:00
Research Assistant
f87fe79a94
chore: bump version to v1.4.14
2026-05-02 15:20:25 +08:00
Research Assistant
dcc044249c
feat: refine plugin onboarding copy and dashboard branding
2026-05-02 15:18:51 +08:00
Research Assistant
f939f2cf52
fix: sync description across manifests; fix authorUrl to personal URL
2026-05-01 12:16:15 +08:00
Research Assistant
28d2e296fa
chore: add manifest.json at repo root; remove 'Obsidian' from description
2026-05-01 12:11:48 +08:00
Research Assistant
e0f6052c1a
chore: remove legacy i18n.js (i18n inlined in main.js)
2026-05-01 11:47:12 +08:00
Research Assistant
1af4924c52
chore: bump version to v1.4.13
2026-05-01 11:14:59 +08:00
Research Assistant
d06654ef70
fix: continuous OCR batch processing + real-time dashboard progress + fix loading flicker
2026-04-30 16:05:02 +08:00
Research Assistant
4285bf24fa
feat: replace exec with spawn for Dashboard actions (real-time OCR/sync progress)
2026-04-30 14:33:05 +08:00
Research Assistant
9f305ca4fe
chore: bump version to v1.4.12
2026-04-30 14:12:45 +08:00
Research Assistant
51463bb7d3
fix: add header_title key, fix lang detection, complete config summary i18n
2026-04-30 14:11:03 +08:00
Research Assistant
1d7fa0d3b1
fix: inline i18n into main.js (remove require/i18n.js deps)
2026-04-30 14:05:04 +08:00
Research Assistant
a9c4881324
feat: complete i18n refactor + automated release script
...
- i18n.js: zh/en language pack with auto-detect from Obsidian config
- main.js: all UI strings use t() calls (settings tab, wizard, pre-check)
- scripts/bump.py: --release flag: bump + commit + tag + push + gh release
- AGENTS.md: developer guide section (bump, release, i18n, pre-commit)
2026-04-30 13:55:54 +08:00
Research Assistant
f27558732d
feat: add i18n framework (zh/en auto-detect) + author fix + versions.json update
2026-04-30 13:28:24 +08:00
Research Assistant
ee2c516279
chore: update versions.json to v1.4.11; sync script covers both json files
2026-04-30 12:59:45 +08:00
Research Assistant
00914d69fc
chore: bump plugin manifest to v1.4.11
2026-04-30 12:54:22 +08:00
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
c5cb9c1bfd
feat(21-01): add subprocess orchestration and Chinese notice helpers
...
- _runSetup(): validates fields, spawns paperforge setup --headless, disables/enables button
- Uses spawn (not exec) for stdout streaming, --headless (not --non-interactive)
- Explicit directory args override headless_setup defaults
- _showNotice(): renders success/error/progress via Obsidian Notice API
- _formatSetupError(): maps 5+ error patterns to Chinese, raw errors logged to console
- _processSetupOutput(): parses [*]/[OK]/[FAIL] step markers from stdout
- _setStatus(): updates status area with color-coded CSS class
- Button disable/enable in try/finally prevents double-click
- INST-04: sidebar and commands unchanged
2026-04-29 22:38:22 +08:00
Research Assistant
2820bc99e5
feat(21-01): add install status CSS styles (SECTION 5)
...
- .paperforge-install-status base style with margin/padding/border-radius
- .paperforge-install-success (green) with color-mix tinted background
- .paperforge-install-error (red) with color-mix tinted background
- .paperforge-install-progress (blue) with color-mix tinted background
- Uses Obsidian CSS variables for theme compatibility
2026-04-29 22:36:24 +08:00
Research Assistant
019ffb6e53
feat(21-01): add _validate() field validation method
...
- Check 7 required fields for non-empty values
- All error messages in Chinese per INST-03
- zotero_data_dir excluded (optional field, auto-detected)
- Returns empty array when valid, error strings array when invalid
2026-04-29 22:36:05 +08:00
Research Assistant
80e9912f67
feat(21-01): add install button section and status area to settings tab
...
- Append '\u5b89\u88c5\u914d\u7f6e' section with status div + CTA button
- Create _statusArea with initial status message
- Button onClick wired to _runSetup (forward declaration for Plan 02)
- No existing code modified (sidebar, actions, other sections preserved)
2026-04-29 22:35:46 +08:00
Research Assistant
fdc457455c
feat(20-20): add settings data model with DEFAULT_SETTINGS and PaperForgeSettingTab UI
...
- DEFAULT_SETTINGS: vault_path, system_dir, resources_dir, literature_dir, control_dir, agent_config_dir, paddleocr_api_key, zotero_data_dir
- Plugin.loadSettings() merges DEFAULT_SETTINGS with saved data via Object.assign
- Plugin.saveSettings() persists via Obsidian Plugin.saveData() API
- PaperForgeSettingTab with 3 sections: 基础路径 (6 fields), API 密钥 (1 password), Zotero 链接 (1 field)
- Debounced 500ms save on field change via setTimeout/clearTimeout pattern
- 8 settings text inputs: 7 regular + 1 password field for paddleocr_api_key
- Settings survive tab switch (in-memory state) and Obsidian restart (data.json persistence)
2026-04-29 22:20:07 +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
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
049f63ffec
feat: overhaul Obsidian plugin UI — dashboard layout, segmented OCR bar, action cards
2026-04-28 23:14:52 +08:00
Research Assistant
0dc27b7c2c
chore: bump to v1.4.4 to unify all fixes under a single version
2026-04-28 22:34:41 +08:00
Research Assistant
40ee97c0f8
chore: bump to v1.4.3, update READMEs with multi-agent and plugin info
2026-04-28 19:43:58 +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
11ebc85c4e
feat: Obsidian plugin status panel — metric cards, progress bars, quick actions
2026-04-28 19:11:58 +08:00
Research Assistant
859fa5ff97
feat: headless setup mode, Obsidian plugin, AI agent install guide (v1.4.2)
2026-04-28 14:33:35 +08:00