fancive_obsidian-parallel-r.../src
wujunchen 68bfed7f56 perf: eliminate per-card document rescans and redundant hashing
- anchor.ts: precompute line-offset index once; O(log n) binary-search
  offsetToLine replaces two O(n) newline-count loops. findLineForAnchor
  takes an optional lineOffsets param (backward compatible).
- cards.ts / generation.ts: build the line-offset index once per document
  and thread it through all card anchor resolutions (was N cards x ~9
  full-document O(n) passes -> 1 O(n) pass + N x O(log n)).
- anchor.ts: ASCII-whitespace charCode fast path in normalizeWithMap,
  deferring to /\s/ only for non-ASCII (exact semantics preserved).
- settings.ts: memoize generationFingerprint by settings object identity
  (WeakMap) — collapses SHA-1 + stableStringify done on every file-open.
- view.ts: remove keydown listener in onClose (lifecycle leak fix).

Verified: tsc, build, biome, all 28 tests, e2e smoke, branch coverage
100% (new anchor regression tests added). Deferred (higher risk /
test-breaking): view full-render->surgical DOM, scroll rebind guard,
cache scheduleSave timing — see notes/perf-report.md.

Change-Id: I17eef347471bb8233d48164e4453d492f301eac2
2026-05-16 00:33:51 +08:00
..
anchor.ts perf: eliminate per-card document rescans and redundant hashing 2026-05-16 00:33:51 +08:00
backend-test.ts refactor: remove dead code and over-broad exports 2026-05-16 00:15:10 +08:00
batch.ts fix: address 13 review findings (security, UX, i18n) 2026-05-02 12:50:35 +08:00
cache-manager.ts fix: clear Obsidian review unused bindings 2026-05-09 13:38:29 +08:00
cache.ts refactor: make cache entry updates immutable 2026-04-26 06:12:55 +00:00
cards.ts perf: eliminate per-card document rescans and redundant hashing 2026-05-16 00:33:51 +08:00
cli.ts refactor: remove dead code and over-broad exports 2026-05-16 00:15:10 +08:00
error-ui.ts refactor: remove dead code and over-broad exports 2026-05-16 00:15:10 +08:00
generation-job-manager.ts chore: prepare 1.0.19 release 2026-05-09 10:48:36 +08:00
generation.ts perf: eliminate per-card document rescans and redundant hashing 2026-05-16 00:33:51 +08:00
i18n-strings.ts fix: harden CLI backend smoke checks 2026-05-09 11:49:23 +08:00
i18n.ts refactor: extract i18n translation strings to dedicated i18n-strings.ts 2026-04-27 15:13:31 +08:00
markdown.ts feat: add Biome for lint and format 2026-04-25 23:47:49 +08:00
modal.ts fix: confirm before overwriting exports 2026-04-29 13:56:36 +08:00
navigation.ts refactor: add TypeScript interfaces for core types 2026-04-25 23:34:45 +08:00
prompt.ts fix: address 10 P2 behavioral and concurrency findings 2026-05-02 13:52:49 +08:00
provider-bodies.ts refactor: remove dead code and over-broad exports 2026-05-16 00:15:10 +08:00
provider-parsers.ts fix: address 13 review findings (security, UX, i18n) 2026-05-02 12:50:35 +08:00
provider-presets.ts refactor: extract API_PROVIDER_PRESETS to provider-presets.ts 2026-04-27 15:15:23 +08:00
provider-request.ts fix: address CR findings — test runner, CI dedup, error cause 2026-04-27 16:04:03 +08:00
providers.ts fix Obsidian plugin review scan 2026-05-08 22:57:31 +08:00
schema.ts fix: clear Obsidian review unused bindings 2026-05-09 13:38:29 +08:00
scroll.ts chore: integrate obsidianmd eslint plugin and fix recommended rules 2026-05-03 10:45:10 +08:00
settings-tab.ts fix: harden CLI backend smoke checks 2026-05-09 11:49:23 +08:00
settings.ts perf: eliminate per-card document rescans and redundant hashing 2026-05-16 00:33:51 +08:00
streaming.ts fix: clear Obsidian review unused bindings 2026-05-09 13:38:29 +08:00
test-exports.ts perf: eliminate per-card document rescans and redundant hashing 2026-05-16 00:33:51 +08:00
types.ts refactor: remove dead code and over-broad exports 2026-05-16 00:15:10 +08:00
ui-helpers.ts fix: address all required issues from Obsidian plugin review bot 2026-04-26 15:57:16 +08:00
vault.ts fix: clear Obsidian review unused bindings 2026-05-09 13:38:29 +08:00
view.ts perf: eliminate per-card document rescans and redundant hashing 2026-05-16 00:33:51 +08:00