sotashimozono_obsidian-remo.../plugin
Souta 4ae3170cc0 feat(vault): lazy per-folder loading — deepen the remote tree on File-Explorer expand
Dogfooding: even chunked (#448/beta.15), a deep dir-heavy vault (work/Vault with
tens of thousands of dirs nested deep) is too heavy to walk + materialise in
full at connect. Load ONE folder level at a time instead.

A real-Obsidian spike settled the two runtime unknowns: (U2) a childless
TFolder still renders an expand arrow (mod-collapsible), so an unloaded folder
is openable; (U1) File Explorer renders from the in-memory model and does NOT
call adapter.list on expand, so deepen-on-expand is driven by a DOM
.nav-folder-title click hook (the element carries the folder's data-path).

- BulkWalker.walk gains a `recursive` param; recursive:false returns just a
  folder's immediate children (fs.walk / one-level adapter.list), honouring
  walkIgnoreDirs per level.
- LazyFolderLoader: idempotent, deduped per-folder deepen (walk one level ->
  buildChunked). Unit tests cover recursive-false walk, idempotency,
  concurrent-dedup, markLoaded, retry-on-failure, reset.
- populateVaultFromRemote: with `lazyFolderLoad` (default true) it walks only
  the root level, wires the loader, marks root loaded, and installs a
  capture-phase .nav-folder-title click hook that deepens on first expand.
  `lazyFolderLoad:false` restores the full eager walk. Loader dropped on
  disconnect.

ignore (reduce N) and lazy (limit depth) compose; the live fs.changed watch
still works against a partial tree via ensureParents. Graph/search see only
loaded branches for now (accepted; revisit later). tsc/lint/vitest green
(1202). Ships as beta.16.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 20:25:59 +09:00
..
e2e test(e2e): quarantine flaky reflect modify/large-image tests (#376) (#377) 2026-06-08 17:59:44 +09:00
scripts fix(daemon): sha-verify on the fast path + keep the dev-daemon marker in E2E 2026-07-02 19:07:38 +09:00
src feat(vault): lazy per-folder loading — deepen the remote tree on File-Explorer expand 2026-07-02 20:25:59 +09:00
tests feat(vault): lazy per-folder loading — deepen the remote tree on File-Explorer expand 2026-07-02 20:25:59 +09:00
esbuild.config.mjs fix(plugin): resolve Obsidian reviewer findings (CSS / disclosure / dynamic-exec) — 1.1.1-beta.2 (#373) 2026-06-08 17:17:41 +09:00
eslint.config.mjs chore(lint): tighten local config to mirror more of ObsidianReviewBot's checklist (0.4.76) 2026-04-29 20:50:14 +09:00
manifest.json feat(vault): lazy per-folder loading — deepen the remote tree on File-Explorer expand 2026-07-02 20:25:59 +09:00
package-lock.json feat(vault): lazy per-folder loading — deepen the remote tree on File-Explorer expand 2026-07-02 20:25:59 +09:00
package.json feat(vault): lazy per-folder loading — deepen the remote tree on File-Explorer expand 2026-07-02 20:25:59 +09:00
styles.css release: 1.1.2 (stable) — validator-clean (#395) 2026-06-09 15:28:18 +09:00
tsconfig.json fix(plugin): add node types to tsconfig to resolve unsafe-member warnings (#380) 2026-06-08 21:48:02 +09:00
versions.json release: 1.1.5 (stable) 2026-06-16 10:16:04 +09:00
vitest.config.ts fix(tests): repair 6 CI failures + bump 1.0.36 (#278) 2026-05-09 23:26:01 +09:00
vitest.integration.config.ts chore(plugin): satisfy ObsidianReviewBot's stricter ruleset, round 2 (0.4.75) 2026-04-29 20:19:10 +09:00
vitest.replay.config.ts ci(replay): replay previous release tag's tests against current source 2026-04-30 17:54:22 +09:00
vitest.setup.ts chore(deps-dev): integrate dev-deps group + prefer-window-timers fix (1.1.1-beta.1) (#371) 2026-06-08 13:18:07 +09:00