sotashimozono_obsidian-remo.../plugin/tests/integration
Souta 1d75cf911b fix(review): address /review-pr findings on #450 — preSpawnPull bypass + dotfile leak + misleading Notice
6-dimension multi-agent review surfaced one CRITICAL and several correctness/
clarity issues in the per-device-config + hide-dotfiles change:

CRITICAL — preSpawnPull bypassed PathMapper (main.ts). The pre-spawn config pull
built `toRemote` by joining the remote base only, so it read the OLD shared
identity path `<configDir>/app.json` and clobbered the freshly-redirected
per-device config on EVERY shadow-window spawn — silently undoing the fix. Now it
applies the same `PathMapper.toRemote` the shadow's adapter uses (from
`resolveClientId(settings)` + configDir), so the four config files pull from this
client's `user/<id>/` subtree; identity for non-private paths keeps
community-plugins.json / plugin binaries shared, unchanged.

MEDIUM — cross-client leak + configDir hardcode (BulkWalker). The dotfile filter
excepted a hard-coded `.obsidian`, which (a) drifted from the configurable
`app.vault.configDir` and (b) let every other client's `.obsidian/user/<id>/*`
private state (incl the 4 newly-redirected files) materialize as editable files
in the File Explorer. Dropped the exception — config is loaded off the local
shadow disk, never from the walked model, so hiding the whole `.obsidian` subtree
costs nothing and isolates foreign clients. `isHiddenPath` simplifies to the
codebase's `startsWith('.')` / `.some()` idiom.

HIGH — misleading "0 files" Notice (main.ts + BulkWalker). An all-dotfile remote
filtered to zero entries and fired "0 files found — check remotePath", the wrong
remediation. BulkWalkResult now carries `hiddenCount`; populate distinguishes
"0 visible, N hidden" with an accurate message and logs the count.

LOW — user-facing Notices + a comment said "shared-config" for files that are now
per-device; corrected. (Constant/method rename of SHARED_OBSIDIAN_CONFIG_FILES,
and a legacy→per-client one-time settings migration, are deferred — see PR notes.)

Tests: BulkWalker dotfile test updated (config dir now dropped) + fallback-path
filter test + hiddenCount assertions; PathMapper cross-machine isolation test;
stale restart-roundtrip comment corrected. tsc/lint clean; vitest 1206 passed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 22:10:37 +09:00
..
helpers fix(sync): address PR #346 multi-agent review (C1 + I1-I5 + advisories) 2026-05-17 14:48:26 +09:00
config-consistency.e2e.test.ts fix(shadow): address Phase B adversarial review — version-ordered binaries + unhandled rejection 2026-06-30 21:38:04 +09:00
daemon.deploy.test.ts fix(test): drop pgrep-based assertions, use socket-existence as daemon liveness signal 2026-04-28 11:03:23 +09:00
invariants.e2e.test.ts fix(sync): address PR #346 multi-agent review (C1 + I1-I5 + advisories) 2026-05-17 14:48:26 +09:00
invariants.property.e2e.test.ts test(framework): make invariants.property hermetic per fast-check run 2026-05-17 15:08:25 +09:00
multiclient.rpc.test.ts test(plugin): Phase C.M5 — extract multiclientRpc helper for reuse (0.4.39) 2026-04-28 19:34:40 +09:00
multiclient.sftp.test.ts feat(test): Phase A1 — multi-client SFTP convergence integration tests + testing-strategy doc (0.4.19) 2026-04-28 10:51:08 +09:00
perf.sync.bench.test.ts fix: bench modify op expects 'created' not 'modified' event 2026-05-01 08:30:56 +09:00
restart-roundtrip.e2e.test.ts fix(review): address /review-pr findings on #450 — preSpawnPull bypass + dotfile leak + misleading Notice 2026-07-02 22:10:37 +09:00
self-reflect-rpc.e2e.test.ts fix(sync): RPC writer self-reflect + echo de-dup (#341, fully closes) 2026-05-17 15:27:57 +09:00
self-reflect.e2e.test.ts fix(sync): address PR #346 multi-agent review (C1 + I1-I5 + advisories) 2026-05-17 14:48:26 +09:00
ssh.integration.test.ts feat(test): docker sshd integration test environment (Tier B-1+B-3, 0.4.0) 2026-04-27 14:05:55 +09:00
sync.e2e.test.ts test(framework): Layer 1 — writer self-reflect harness (failing tests for #341) 2026-05-12 09:16:22 +09:00
walk.equivalence.test.ts feat(test): Phase E1-α.3 — fs.walk vs adapter.list equivalence + qualitative benchmark (0.4.25) 2026-04-28 12:36:41 +09:00