sotashimozono_obsidian-remo.../plugin
Souta ea3f63f5ce fix(shadow): address /review-pr findings on #443
Follow-up to the R1/R2/R3 shadow-vault fix, from a 6-agent review.

- resolveLayout no longer reports a spurious migrated=true on every
  reconnect for a profile parked in a collision ` (2)` dir: the
  early-return now compares `found` to the collision-resolved target,
  not the bare `<name>--<tail>`, so it stops a no-op same-path rename +
  re-showing the one-time "restart Obsidian" notice. (code-reviewer)

- findShadowByProfileId / uniqueVaultDir no longer silently swallow a
  transient read error on this profile's OWN data.json (AV / Dropbox
  lock / mid-write), which could fork a duplicate ` (2)` shadow and
  strand the real one. Extracted readShadowProfileId(): ENOENT stays
  silent (not a shadow), an existing-but-unreadable/malformed data.json
  is logged; also narrows a non-string id to "no match".
  (silent-failure-hunter, code-simplifier)

- ObsidianRegistry.isOpen now fails SAFE: an unreadable obsidian.json is
  treated as OPEN (defer the rename) rather than "not open" (proceed and
  risk renaming a live vault — the corruption R2 prevents), and logs.
  (silent-failure-hunter)

- Stale comments corrected: class layout diagram, BootstrapResult.migrated
  and layoutFor/findShadowByProfileId docs; sanitisePathTail's dead `~`
  guard made live so a bare `~` remotePath falls back to `vault`.
  (comment-analyzer)

Tests: ObsidianRegistry.isOpen direct unit tests (open/closed/absent/
unregistered/unreadable-defer); collision-reconnect asserts migrated=false;
sanitisePathTail `~` + backslash edges. tsc/lint/vitest green (1184).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 13:23:16 +09:00
..
e2e test(e2e): quarantine flaky reflect modify/large-image tests (#376) (#377) 2026-06-08 17:59:44 +09:00
scripts feat(release): formalize next=beta / main=stable two-channel model 2026-05-10 12:11:35 +09:00
src fix(shadow): address /review-pr findings on #443 2026-07-01 13:23:16 +09:00
tests fix(shadow): address /review-pr findings on #443 2026-07-01 13:23:16 +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 fix(shadow): name dirs by remotePath tail + open-safe id-based migration 2026-07-01 12:58:44 +09:00
package-lock.json fix(shadow): name dirs by remotePath tail + open-safe id-based migration 2026-07-01 12:58:44 +09:00
package.json fix(shadow): name dirs by remotePath tail + open-safe id-based migration 2026-07-01 12:58:44 +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