LLLin000
b41b4c88b7
fix: complete managed runtime cutover
2026-07-20 02:20:25 +08:00
LLLin000
9a15f36485
docs: define control center UX redesign
2026-07-20 01:49:33 +08:00
LLLin000
c883d5fcc9
fix: share managed runtime and preserve credential state
2026-07-20 01:47:17 +08:00
LLLin000
d2334d4446
feat( #82 ): remove old Python resolvers — resolvePythonExecutable, getCachedPython, checkRuntimeVersion, buildRuntimeInstallCommand, _syncRuntime
...
- settings.ts: replaced all getCachedPython/resolvePythonExecutable calls with _resolveRuntimeCommand (ManagedRuntime)
- settings.ts: deleted _syncRuntime (superseded by ManagedRuntime.ensure)
- settings.ts: cleaned dead imports (getMemoryRuntime, isMemoryReady, isVectorReady, getCachedPython)
- main.ts: added _getPythonCommand helper using ManagedRuntime, replaced all resolvePythonExecutable calls
- dashboard.ts: added _resolvePython helper, replaced all 7 resolvePythonExecutable + 1 checkRuntimeVersion calls
- modals.ts: added _resolvePython helper to PaperForgeSetupModal, replaced getCachedPython + 3 resolvePythonExecutable calls
Build: 258.0KB | Tests: 384/384 passed | Typecheck: clean
2026-07-19 15:06:04 +08:00
LLLin000
508ef78d51
feat( #81 , #82 ): Release N+1/2 cutover — remove setup_complete, auto_update, legacy migration, deprecated build-state JSON writer
...
#81 (N+1) remaining:
- settings.ts: _resolveRuntimeCommand fail-closed (no getCachedPython fallback)
- managed-runtime.ts: PYTHON_310_DEPRECATED warning removed, single 3.11+ gate
- Python backend: checker/setup_wizard/status → 3.11 minimum
- i18n: 3.10 → 3.11 user-facing strings
#82 (N+2) deletions:
- constants.ts: removed setup_complete, auto_update, auto_update_on_startup, selected_skill_platform
- main.ts: removed _autoUpdate, _firstLaunchSnapshotMigration, credential migration
- modals.ts: removed setup_complete write
- settings.ts: removed categorizeMaintenanceRow dead import
- build_state.py: removed deprecated get_vector_build_state_path
Build: 261.4KB | Tests: 384/384 passed | Typecheck: clean
2026-07-19 14:54:19 +08:00
LLLin000
0859652396
feat( #81 ): Release N+1 owner cutover — Python 3.11+ gate, fail-closed dispatch
...
- managed-runtime: collapse MIN_PYTHON_LEGACY/MIN_PYTHON_NEW → MIN_PYTHON (3.11)
- managed-runtime: remove PYTHON_310_DEPRECATED warning (3.10 now needs_repair)
- managed-runtime: single 3.11+ hard gate for all installations
- settings: cut getCachedPython fallback in _resolveRuntimeCommand → fail-closed
- settings: update Python version notices 3.10→3.11
- i18n: update user-facing Python version messages 3.10→3.11
- Python backend: checker.py, setup_wizard.py, status.py → 3.11 minimum
- Test updates: legacy fallback tests now verify fail-closed, 3.10 gating removed
Build: 264.4KB | Tests: 384/384 passed | Typecheck: clean
2026-07-19 14:32:12 +08:00
LLLin000
b9f3ca1719
fix: repair stash merge artifacts in i18n.ts and memory.py
...
- i18n.ts: remove duplicate md_select_* keys from stash conflict
- memory.py: replace corrupted _restore_backup/run merge with clean copy
2026-07-19 14:14:41 +08:00
LLLin000
b4c0404542
feat: deliver actionable Maintenance inbox and privacy-safe issue drafts ( #80 )
...
Maintenance derives worst-constituent severity from Installation/
Library/OCR/Memory/Help with no independent probe/action. Items
route to constituent module actions; re-probe removes resolved
items. Accessible destructive confirmation (Tab trap, Escape,
inert bg, focus restore) plus editable locally redacted OCR
issue drafts with explicit GitHub open and no token storage.
Backend: probe_maintenance aggregation, quality_unacceptable
detection with scope_count, 78/78 gate.
Frontend: Maintenance tab, inbox rendering, PaperForgeConfirmModal,
PaperForgeIssueDraftModal with double-redaction, excluded-category
preview, _REAL_PROBE + strict envelope validation, container-query
responsive at 730/768px.
Verified: 78/78 backend, 384/385 plugin (1 known baseline),
typecheck clean, 264.9KB build, Obsidian 1.12.7 smoke.
2026-07-19 14:09:54 +08:00
LLLin000
c23d6b9a7f
Merge branch 'feat/issue-78-capability-tracers' into feat/issue-80-maintenance
...
# Conflicts:
# PROJECT-MANAGEMENT.md
# paperforge/plugin/main.js
# project/current/ocr-v2-active-queue.md
2026-07-19 10:26:47 +08:00
LLLin000
f9c65020ca
fix: use text-only migration warning
2026-07-19 01:11:37 +08:00
LLLin000
6bed0d7151
feat: migrate plugin credentials to SecretStorage ( #79 )
2026-07-19 01:00:41 +08:00
LLLin000
69a6223910
feat: expose library OCR and memory capability tracers ( #78 )
2026-07-18 18:13:08 +08:00
LLLin000
4ef9e9834a
chore: update plugin bundle and vitest config
2026-07-16 02:55:43 +08:00
LLLin000
f8b85505c8
feat: add control center navigation, installation detail, and managed runtime dispatch
2026-07-16 02:55:33 +08:00
LLLin000
173a4e826e
feat: add managed runtime service with version gating and slot retention
2026-07-16 02:55:23 +08:00
LLLin000
85a7ae30a2
feat: add OCR rebuild UX and capability tracer
2026-07-15 20:36:15 +08:00
LLLin000
d7b0a52780
closeout: record #69/#70 resolution, capability model, runtime architecture, maintenance regression fixes
...
- Update PROJECT-MANAGEMENT.md for #69/#70 resolved, #71/#72 as live frontier
- Add orthogonal capability/activity/attention model and managed-runtime immutable-slot
architecture decisions to decision log and timeline
- Record OCR maintenance regression: canonical per-row action routing (display_action->verb),
redo confirmation gate, cache manifest preservation (19/19 tests pass)
- Add research reports: docs/research/2026-07-14-capability-state-action-contract.md,
docs/research/2026-07-14-managed-runtime-architecture.md
- Update project/current/ocr-v2-active-queue.md with resolved items and new frontier
2026-07-15 00:03:16 +08:00
LLLin000
3a516add86
fix: align OCR maintenance selection semantics
2026-07-14 18:27:53 +08:00
LLLin000
349d4f6dcb
feat: add streaming OCR rebuild progress
2026-07-14 18:05:49 +08:00
LLLin000
3a0d171e31
docs: update PROJECT-MANAGEMENT and ocr-v2-active-queue with retrieval recovery Wayfinder checkpoint
2026-07-11 01:30:58 +08:00
LLLin000
b4ac277438
Merge branch 'feat/retrieval-recovery'
...
# Conflicts:
# paperforge/commands/embed.py
2026-07-11 01:26:37 +08:00
LLLin000
460412d423
fix: isVectorReady checks total_chunks instead of fulltext-only chunk_count
2026-07-11 00:39:25 +08:00
LLLin000
537e8e36ed
fix: add --vault flag to search/retrieve spawn
2026-07-11 00:31:42 +08:00
LLLin000
0fd5227355
chore: fix ruff violations — unused imports, Path, dead code, formatting
2026-07-11 00:10:32 +08:00
LLLin000
51018943ad
feat: implement 8 search domain states with keyboard shortcuts and a11y in dashboard
...
Adds _renderSearchState() rendering 8 distinguishable states:
idle, searching (M/@), results, empty, vectors-not-built,
backend-unavailable, timeout, model-changed.
Keyboard: / focuses search, Escape cancels, ArrowUp/Down navigates
results, Enter opens note, Ctrl+Enter forces deep mode.
Accessibility: role=alert on errors, aria-live=polite on results
and progress, role=listbox with aria-selected/aria-posinset on cards,
aria-setsize, tabindex=0 on result cards, focus management on
state transitions.
Focus management: Stop button on build start, first result on
search complete, error banner on failure.
2026-07-10 23:56:31 +08:00
LLLin000
6e4b446ca2
feat: add retrieval error code routing in classifyError
...
Maps 7 retrieval error codes (VECTOR_NOT_BUILT, VECTOR_CORRUPTED,
MODEL_CHANGED, BACKEND_UNAVAILABLE, TIMEOUT, INTERNAL_ERROR, NO_PYTHON)
to distinct UI states with type, message, recoverable flag, and action.
Adds 7 new test cases for the error classification routing.
2026-07-10 23:56:25 +08:00
LLLin000
6b53de8135
feat: add 33 retrieval_* i18n keys for error distinction and recovery UI
...
Adds all retrieval state labels, button text, warning messages, and
descriptive copy in English and Chinese under the retrieval_* prefix.
Prepares i18n foundation for search domain (8 states) and build domain
(10 states) per PRD #57 and issue #62 .
2026-07-10 23:56:20 +08:00
LLLin000
ec810b10a9
feat: plugin reads embed status --json live, polls during build, stop without kill
...
getVectorRuntime now calls embed status --json synchronously with
a 2s time-based cache before falling back to the JSON snapshot.
During build, a 2s polling interval reads embed status --json for
live build state and detects remote stop.
Stop button calls embed stop --json only (no direct .kill() on the
child process), letting the CLI handle cooperative stop.
ISettingPlugin interface extended with _embedPollInterval and
_embedPolling properties.
2026-07-10 23:55:26 +08:00
LLLin000
32e69a6c7b
Delete sql.js: remove db.ts, wasm, dependency, and all sql.js code paths
...
- Remove paperforge/plugin/src/services/db.ts (sql.js wrapper, initDatabase/searchMetadata/SearchResultItem)
- Remove paperforge/plugin/sql-wasm.wasm (644KB binary)
- Remove sql.js and @types/sql.js from package.json; npm install to update lockfile
- dashboard.ts: remove import of db.ts, remove _sqlJsInitialized/_sqlJsFailed state,
remove the sql.js search path block entirely — all searches go straight to CLI spawn.
Clean up stale comments.
- Bundle drops from 346KB to 167KB; 6 test files / 58 tests still pass
2026-07-10 23:07:26 +08:00
LLLin000
e3c41cc07d
chore: add sql.js WASM, DB service, and PRD document
2026-07-10 02:49:49 +08:00
LLLin000
bf29966a86
feat: real-time metadata search via sql.js with 200ms debounce
...
Replace CLI spawn for metadata search with direct sql.js FTS5 queries.
Input debounced at 200ms. Falls back to CLI when sql.js unavailable.
@ Deep Search stays on CLI.
2026-07-10 02:49:31 +08:00
LLLin000
d6c1d1539b
chore: rebuild plugin main.js with sql.js dependency
...
Bundles sql.js for direct FTS5 access to paperforge.db.
2026-07-10 02:49:06 +08:00
LLLin000
4ff165ae49
feat( #38 , #40 ): version history panel + @ Deep Search
...
#38 : File Recovery-style version history panel with i18n (en/zh).
- _renderVersionMode() with paper list + timeline + restore/compare
- version-history.ts service for scan/restore/compare
- Paper mode [版本历史] button
- i18n strings for all panel text
#40 : @ Deep Search with query rewrite + hybrid retrieval.
- query_rewrite.py: abbreviation expansion (28 terms) + synonyms (12)
- hybrid_search(): BM25 FTS5 + vec0 k-NN + score fusion (0.3/0.7)
- retrieve --deep flag routes to hybrid_search
- Graceful vec0 fallback (FTS5-only)
- 17 new tests
Co-authored-by: VersionPanel <agent>
Co-authored-by: DeepSearch <agent>
2026-07-10 01:01:48 +08:00
LLLin000
06fec04651
feat: Phase 0, 1, 3a — legacy OCR fix, ChromaDB migration, search bar UI
...
Phase 0 (#35 ): _needs_derived_rebuild returns (False, 'legacy_ocr') for
papers without structured blocks and derived_version. _can_rebuild adds
has_structured check. No misleading rebuild suggestions for legacy users.
Phase 1 (#36 ): migrate_chroma_to_vec0() copies existing ChromaDB vectors
to vec0 tables with zero API calls. Idempotent (skips by paper_id).
delete_paper_vectors() cleans both ChromaDB and vec0. CLI: embed migrate.
5 new tests.
Phase 3a (#39 ): Search bar in collection panel — two-mode input
(M metadata / @ deep) with card results display. JSON output parsed
from search/retrieve CLI. 289 lines TypeScript, 175 lines CSS.
Build passes clean.
Co-authored-by: Phase0LegacyOcr <agent>
Co-authored-by: ChromaMigration <agent>
Co-authored-by: SearchBarUI <agent>
2026-07-10 00:02:02 +08:00
LLLin000
45022c3e16
docs: archive superpowers specs/plans, commit PR9A-C plan files
...
- Archive 173 design/plan/analysis docs from docs/superpowers/ →
docs/archive/superpowers/ (all features shipped)
- Commit 5 PR9A-C plan files to docs/plans/ (historical record)
- Rebuild plugin bundle (main.js: 2172→49 lines, minified)
- Fix settings.ts type assertion
2026-07-09 00:39:39 +08:00
LLLin000
077c190b60
docs: update project management for PR9A-C embedding pipeline work
2026-07-09 00:30:50 +08:00
LLLin000
d94096f4d8
fix: plugin shows total chunks across all collections
...
Previously only showed paperforge_fulltext chunk_count (345).
Now sums chunk_count + body_chunk_count (14338) + object_chunk_count (5972).
2026-07-07 02:18:04 +08:00
LLLin000
1474c061a8
feat: surface drift state and invalidate maintenance cache
2026-07-05 16:52:17 +08:00
LLLin000
b585e42ab2
fix: 3 micro-patches from 9.4/10 review
...
1. show_in_base — separate hidden from maintenance vs hidden from both
2. Unified is_degraded check — done_degraded and health yellow/red
share one entry point
3. Hash error_summary in manifest instead of raw string
4. Fix Promise.withResolvers for ES compat
2026-07-05 01:19:59 +08:00
LLLin000
0647c9be3f
feat: PR C — Plugin maintenance tab UI + cache + action-first display
...
- i18n: 9 new maintenance_* keys (en + zh)
- ocr-maintenance-ui.ts: new types (DisplayAction, MaintenanceCache,
MaintenanceDisplayRow) + cache read/write + refreshMaintenanceData
- settings.ts: _renderMaintenanceTab rewritten to action-first model
(cache-first render, background manifest refresh, grouped tables
with checkboxes, retry/rebuild/upgrade buttons)
- Backward compatible: old categorizeMaintenanceRow untouched
- 57 tests pass (6 files)
2026-07-05 01:13:47 +08:00
Research Assistant
48f486a434
Merge branch 'ocr-v2'
2026-06-29 02:03:23 +08:00
Research Assistant
38c463a814
feat: dashboard Start Working cleanup, pf-copy click indicator, collection header revert, time sorting
2026-06-26 20:35:13 +08:00
Research Assistant
0649f11679
feat: dashboard CSS polish + click-to-copy on title/paths
2026-06-26 00:46:37 +08:00
Research Assistant
b4152abe10
A2: check table ownership (consumed_table_block_keys) before _SKIPPED_BODY_ROLES in render loop
...
Moves the block_id fetch and consumed_table_block_keys check before
_SKIPPED_BODY_ROLES so table note removal is a contract-based decision
(ownership) not a role-based accident (footnote role).
Part of table ownership contract refactor.
2026-06-25 22:27:35 +08:00
Research Assistant
54e6d16666
Add pre-commit hooks (husky + lint-staged + prettier)
2026-06-25 16:42:34 +08:00
Research Assistant
5b830d3bfd
fix: sort maintenance table by time descending
2026-06-24 01:19:45 +08:00
Research Assistant
9a19dc5850
fix: maintenance tab timezone, rebuild timestamp, title tooltip; UI: Vercel-inspired polish across all tabs
2026-06-24 01:08:20 +08:00
Research Assistant
404b1f35d1
fix: wire card action buttons in OCR maintenance Needs Attention section
2026-06-19 18:26:47 +08:00
Research Assistant
6dfa37ddb8
feat: style OCR maintenance summary layout
2026-06-19 18:16:34 +08:00
Research Assistant
31843d3ea7
chore: remove dead toolbar div from maintenance tab
2026-06-19 18:15:28 +08:00