This report summarizes scanner evidence for vrtmrz/obsidian-livesync, a TypeScript project with 12,693 GitHub stars. SynthScan examined 196,569 lines of code across 835 source files, recording 499 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 5.6 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 373 finding(s).
Are imports declared and package/API names verified? 66 finding(s).
Are wrappers, guards, and repeated structures necessary? 388 finding(s).
Which changes need focused human review? 499 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 499 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | test/e2e-obsidian/scripts/hidden-file-snippet-sync.ts | 600 | plugin.core.services.context.noticeGroups.hide("hidden-file-changes"); | CODE |
| CRITICAL | src/main.ts | 220 | const onReady = this.core.services.control.onReady.bind(this.core.services.control); | CODE |
| CRITICAL | src/features/HiddenFileSync/CmdHiddenFileSync.ts | 101 | return this.core.localDatabase.managers.conflictManager.getConflictedDoc(path, rev); | CODE |
| CRITICAL | src/serviceFeatures/useReviewHarness.ts | 25 | (await plugin.core.services.UI.confirm.askYesNoDialog( | CODE |
| CRITICAL⚡ | src/serviceFeatures/redFlag.unit.spec.ts | 1729 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(SIMPLE_FETCH_STAGE1_DETAILED); | CODE |
| CRITICAL⚡ | src/serviceFeatures/redFlag.unit.spec.ts | 1730 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce({ | CODE |
| CRITICAL⚡ | src/serviceFeatures/redFlag.unit.spec.ts | 1738 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Cancel"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 490 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(SIMPLE_FETCH_STAGE1_DETAILED); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 491 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce({ | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 512 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(false); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 556 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Use active remote"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 557 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(false); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 579 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Cancel"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 617 | host.mocks.ui.confirm.askSelectStringDialogue.mockImplementationOnce( | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 620 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(false); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 643 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Unknown option"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 663 | host.mocks.ui.confirm.askSelectStringDialogue.mockImplementationOnce( | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 679 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(false); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 686 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(SIMPLE_FETCH_STAGE1_DETAILED); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 903 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(false); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 933 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(SIMPLE_FETCH_STAGE1_DETAILED); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 961 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Cancel"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1012 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Reboot to re-run the process"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1034 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce( | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1052 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce("cancelled"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1146 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce("cancelled"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1157 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce("cancelled"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1270 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("OK"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1299 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("OK"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1317 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Use this device's settings"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1343 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Retry"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1367 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Cancel"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1398 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Use this device's settings"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1441 | host.mocks.ui.confirm.askYesNoDialog.mockResolvedValueOnce("yes"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1452 | host.mocks.ui.confirm.askYesNoDialog.mockResolvedValueOnce("no"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1463 | host.mocks.ui.confirm.askYesNoDialog.mockResolvedValueOnce("yes"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1759 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce({ | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1766 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Cancel"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1787 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce({ | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1794 | host.mocks.ui.confirm.askSelectStringDialogue.mockResolvedValueOnce("Use this device's settings"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1830 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(SIMPLE_FETCH_STAGE1_DETAILED); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1831 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce("cancelled"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1877 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce("cancelled"); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1892 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockRejectedValueOnce(new Error("Dialog failed")); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1910 | host.mocks.ui.confirm.confirmWithMessage.mockResolvedValueOnce(SIMPLE_FETCH_STAGE1_DETAILED); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1911 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce({ vault: "identical", extra: {} }); | CODE |
| CRITICAL | src/serviceFeatures/redFlag.unit.spec.ts | 1937 | host.mocks.ui.dialogManager.openWithExplicitCancel.mockResolvedValueOnce({ extra: {} }); | CODE |
| CRITICAL | …tResolution/interactiveConflictResolution.unit.spec.ts | 837 | const commands = fixture.services.API.addCommand.mock.calls.map( | CODE |
| CRITICAL | src/modules/services/ObsidianAppLifecycleService.ts | 13 | void this.context.plugin.app.commands.executeCommandById("app:reload"); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 390 | core.services.context.standardIo.prompt.mockResolvedValue(""); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 404 | core.services.context.standardIo.prompt.mockResolvedValue(passphrase); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 434 | inWindow.services.context.standardIo.prompt.mockResolvedValue(passphrase); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 443 | outOfWindow.services.context.standardIo.prompt.mockResolvedValue(passphrase); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 470 | core.services.context.standardIo.prompt.mockResolvedValue(passphrase); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 481 | core.services.context.standardIo.prompt.mockResolvedValue("wrong-passphrase"); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 496 | core.services.context.standardIo.readStdin.mockResolvedValue("content from stdin"); | CODE |
| CRITICAL | src/apps/cli/commands/runCommand.unit.spec.ts | 541 | const chunk = core.services.context.standardIo.writeStdout.mock.calls.at(-1)?.[0]; | CODE |
| CRITICAL | src/apps/cli/commands/centralRemoteAdministration.ts | 123 | context.core.services.context.standardIo.writeStderr( | CODE |
| CRITICAL | src/apps/cli/commands/daemonCommand.unit.spec.ts | 171 | const warningCalls = core.services.context.standardIo.writeStderr.mock.calls.filter( | CODE |
| CRITICAL | src/apps/cli/commands/daemonCommand.unit.spec.ts | 187 | const warningCalls = core.services.context.standardIo.writeStderr.mock.calls.filter( | CODE |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/contracts/serviceContext.ts | 67 | export function observeServiceComposition( | CODE |
| LOW | test/e2e-obsidian/runner/liveSyncWorkflow.ts | 351 | export async function inspectObsidianServiceContextContract( | CODE |
| LOW | test/e2e-obsidian/runner/liveSyncWorkflow.ts | 382 | export function assertObsidianServiceContextContract(result: ObsidianServiceContextContractResult): void { | CODE |
| LOW | test/e2e-obsidian/runner/liveSyncWorkflow.ts | 462 | export async function waitForLocalDatabaseEntry( | CODE |
| LOW | test/e2e-obsidian/runner/mobileUi.ts | 25 | async function applyObsidianMobileTestMode( | CODE |
| LOW⚡ | test/e2e-obsidian/runner/mobileUi.ts | 95 | export async function setObsidianMobileTestModeBeforePluginStart( | CODE |
| LOW⚡ | test/e2e-obsidian/runner/mobileUi.ts | 103 | export async function setObsidianMobileTestMode(port: number, enabled: boolean, timeoutMs: number): Promise<void> { | CODE |
| LOW⚡ | test/e2e-obsidian/runner/mobileUi.ts | 107 | export async function assertMobileDialogueLayout(page: Page, container: Locator, label: string): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/runner/pathAssertions.ts | 5 | export async function waitForExactCaseOnlyRename( | CODE |
| LOW | test/e2e-obsidian/runner/securitySeed.ts | 47 | export function requireSecuritySeedDocument(document: CouchDbDocument): SecuritySeedDocument { | CODE |
| LOW | test/e2e-obsidian/runner/securitySeed.ts | 69 | export function snapshotSecuritySeedDocument(document: SecuritySeedDocument): SecuritySeedDocumentSnapshot { | CODE |
| LOW | test/e2e-obsidian/runner/securitySeed.ts | 79 | export function changedSynchronisationParameterFields( | CODE |
| LOW | test/e2e-obsidian/runner/remoteActivityWorkflow.ts | 20 | export async function startHeldOneShotReplication(cliBinary: string, env: NodeJS.ProcessEnv): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/runner/remoteActivityWorkflow.ts | 221 | export async function cleanUpHeldRemoteActivity(cliBinary: string, env: NodeJS.ProcessEnv): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 64 | function assertSequenceDidNotRegress(before: unknown, after: unknown, label: string): void { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 78 | export function assertCouchDbCheckpointContinuity( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 98 | export function assertSomeCouchDbCheckpointAdvanced( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 112 | export function assertCouchDbDocumentsUnchanged( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 123 | export function assertJournalCheckpointLoaded( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 170 | export function assertJournalCheckpointAdvanced( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeContinuity.ts | 188 | export function assertMilestoneContinuity(before: MilestoneIdentity, after: MilestoneIdentity): void { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 127 | export function createUpgradeScenarioPaths(label: string): UpgradeScenarioPaths { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 238 | export async function waitForPersistentNodeIdentity( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 324 | export async function readRuntimeSettingsUpgradeState( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 367 | export function assertStableReleaseDefaults(state: RuntimeSettingsUpgradeState, configured: boolean): void { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 408 | export function assertUnconfiguredUpgradeReady( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 446 | export function assertUnconfiguredUpgradeRestarted(state: RuntimeSettingsUpgradeState, targetVersion: string): void { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 461 | export function assertStableRemoteSelection( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 485 | export function assertUpgradeCompatibilityReady( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 567 | export function assertUpgradeRemainsReady(state: RuntimeUpgradeState, targetVersion: string): void { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 578 | export async function dismissConfigDoctorIfShown(port: number): Promise<boolean> { | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 720 | export async function createVerifierReturnDelta( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 773 | export async function runCouchDbReplicationObserved( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 798 | export async function runJournalReplicationObserved( | CODE |
| LOW | test/e2e-obsidian/runner/upgradeWorkflow.ts | 852 | export async function readLocalCouchDbCheckpoints( | CODE |
| LOW | test/e2e-obsidian/runner/session.ts | 24 | export async function startObsidianLiveSyncSession( | CODE |
| LOW | test/e2e-obsidian/runner/remoteActivity.ts | 72 | async function readRemoteActivitySnapshotFromPage(page: Page): Promise<RemoteActivitySnapshot> { | CODE |
| LOW | test/e2e-obsidian/runner/remoteActivity.ts | 110 | export async function readRemoteActivitySnapshot(port: number): Promise<RemoteActivitySnapshot> { | CODE |
| LOW | test/e2e-obsidian/runner/remoteActivity.ts | 130 | export async function waitForRemoteActivityState( | CODE |
| LOW | test/e2e-obsidian/runner/remoteActivity.ts | 220 | export async function captureRemoteActivityDiagnostics( | CODE |
| LOW | test/e2e-obsidian/runner/ui.ts | 71 | export async function waitForVisibleObsidianDialogue(page: Page, text: string, timeoutMs = 10_000): Promise<Locator> { | CODE |
| LOW | test/e2e-obsidian/runner/ui.ts | 230 | export async function allowPendingObsidianTestVaultOpenAction( | CODE |
| LOW | test/e2e-obsidian/runner/ui.ts | 318 | export async function captureJsonResolveDialogue(port: number): Promise<string> { | CODE |
| LOW | test/e2e-obsidian/runner/releaseArtifact.ts | 103 | export async function ensurePinnedReleaseArtifact( | CODE |
| LOW | test/e2e-obsidian/runner/setupUri.ts | 51 | export async function assertVerticalActionLayout(port: number, title: string): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/runner/setupUri.ts | 155 | export async function generateSetupURIFromDevice( | CODE |
| LOW | test/e2e-obsidian/runner/setupUri.ts | 229 | export async function captureAndStartInitialisation( | CODE |
| LOW | test/e2e-obsidian/runner/setupUri.ts | 312 | export async function continueWithoutRemoteSettings(port: number, captures: SetupCaptureNames): Promise<string> { | CODE |
| LOW | test/e2e-obsidian/runner/setupUri.ts | 333 | export async function acknowledgeDisabledOptionalFeatures(port: number, captures: SetupCaptureNames): Promise<string> { | CODE |
| LOW | test/e2e-obsidian/runner/setupUri.ts | 487 | export async function resumeCompatibilityReviewIfShown(port: number): Promise<boolean> { | CODE |
| LOW | test/e2e-obsidian/runner/objectStorage.ts | 76 | export function createObjectStorageClient(config: ObjectStorageConfig): S3Client { | CODE |
| LOW | test/e2e-obsidian/runner/objectStorage.ts | 88 | export async function ensureObjectStorageBucket(config: ObjectStorageConfig): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/runner/objectStorage.ts | 140 | export async function deleteObjectStoragePrefix(config: ObjectStorageConfig, prefix: string): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/scripts/smoke.ts | 24 | async function assertMenuFeaturesAreComposed(remoteDebuggingPort: number): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/scripts/upgrade-from-stable.ts | 264 | async function runUnconfiguredSettingsUpgrade(context: RunnerContext, port: number): Promise<void> { | CODE |
| LOW | test/e2e-obsidian/scripts/upgrade-from-stable.ts | 359 | async function readCouchDbRemoteSnapshot(config: CouchDbConfig, databaseName: string): Promise<CouchDbRemoteSnapshot> { | CODE |
| LOW | test/e2e-obsidian/scripts/upgrade-from-stable.ts | 384 | async function readObjectStorageRemoteSnapshot( | CODE |
| LOW | test/e2e-obsidian/scripts/upgrade-from-stable.ts | 409 | function assertNoOpCouchDbObservation(observation: CouchDbReplicationObservation): void { | CODE |
| LOW | test/e2e-obsidian/scripts/upgrade-from-stable.ts | 415 | function assertNoOpCouchDbDatabase(before: CouchDbRemoteSnapshot, after: CouchDbRemoteSnapshot): void { | CODE |
| LOW | test/e2e-obsidian/scripts/upgrade-from-stable.ts | 437 | async function configureFreshCouchDbVerifier( | CODE |
| 268 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/docker-compose.yml | 2 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | docker/docker-compose.yml | 23 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | docker/docker-compose.yml | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker/docker-compose.yml | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 70 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 120 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-compose.yml | 169 | # ============================================================================= | COMMENT |
| MEDIUM | docker/docker-compose.yml | 171 | # ============================================================================= | COMMENT |
| MEDIUM | docker/docker-compose.yml | 182 | # ============================================================================= | COMMENT |
| MEDIUM | docker/docker-compose.yml | 184 | # ============================================================================= | COMMENT |
| MEDIUM | docker/config/cloudflared.yml | 2 | # ============================================================================= | COMMENT |
| MEDIUM | docker/config/cloudflared.yml | 17 | # ============================================================================= | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 46 | # ─── display_test_info ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 59 | # ─── _docker_translate_arg ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 77 | # ─── run_cli ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 91 | # ── 1. Translate all host paths to container paths ──────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 97 | # ── 2. Split vault path from the rest of the arguments ─────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 118 | # ── 3. Inject verbose / debug flags ────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 123 | # ── 4. Volume mounts ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers-docker.sh | 134 | # ── 5. stdin forwarding ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-helpers.sh | 3 | # ─── local init hook ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 105 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 107 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 134 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 136 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 161 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 163 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 178 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 180 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 210 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 212 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 232 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 234 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 251 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 253 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 300 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-mirror-linux.sh | 302 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/apps/cli/test/test-daemon-linux.sh | 46 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/apps/cli/test/test-daemon-linux.sh | 48 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-daemon-linux.sh | 84 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-daemon-linux.sh | 86 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-daemon-linux.sh | 121 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-daemon-linux.sh | 123 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-daemon-linux.sh | 159 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/test/test-daemon-linux.sh | 161 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/deploy/install.sh | 15 | # ── Argument parsing ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/deploy/install.sh | 74 | # ── Vault path ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/deploy/install.sh | 93 | # ── Build ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/deploy/install.sh | 104 | # ── Install binary ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/deploy/install.sh | 173 | # ── Write systemd unit ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/apps/cli/deploy/install.sh | 209 | # ── Enable service ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …li/managers/CLIStorageEventManagerAdapter.unit.spec.ts | 5 | // ── chokidar mock ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …li/managers/CLIStorageEventManagerAdapter.unit.spec.ts | 24 | // ── helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …li/managers/CLIStorageEventManagerAdapter.unit.spec.ts | 35 | // ── tests ───────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vite.config.ts | 21 | const updatesPath = path.resolve(__dirname, "updates.md"); | COMMENT |
| LOW | vite.config.ts | 41 | // } | COMMENT |
| LOW | terser_vite.config.ts | 21 | // keep_classnames: true, | COMMENT |
| LOW | docker/docker-compose.yml | 1 | # Self-hosted LiveSync — Docker Compose | COMMENT |
| LOW | docker/config/cloudflared.yml | 1 | # cloudflared tunnel configuration for Self-hosted LiveSync | COMMENT |
| LOW | utils/livesync-commonlib-version.ts | 1 | // The standalone Deno utilities deliberately remain pinned to one immutable | COMMENT |
| LOW | …features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts | 801 | } | COMMENT |
| LOW | …features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts | 821 | // if (typeof remote == "string") { | COMMENT |
| LOW | …features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts | 841 | // const req = await request(`_revs_limit`, "GET"); | COMMENT |
| LOW | …erviceFeatures/startupLifecycle/incompleteDocuments.ts | 141 | }); | COMMENT |
| LOW | src/modules/AbstractModule.ts | 61 | testFail(message: string) { | COMMENT |
| LOW | src/modules/features/SettingDialogue/PaneMaintenance.ts | 201 | eventHub.emitEvent(EVENT_REQUEST_PERFORM_GC_V3); | COMMENT |
| LOW | src/modules/features/SettingDialogue/PaneMaintenance.ts | 221 | // button.setButtonText("Rescan").onClick(async () => { | COMMENT |
| LOW | src/modules/features/SettingDialogue/PaneMaintenance.ts | 241 | // new Setting(paneEl) | COMMENT |
| LOW | src/modules/features/SettingDialogue/PaneMaintenance.ts | 261 | // .addButton((button) => | COMMENT |
| LOW | …c/modules/features/SettingDialogue/PaneRemoteConfig.ts | 161 | updateE2EESummary(); | COMMENT |
| LOW | …c/modules/features/SettingDialogue/PaneRemoteConfig.ts | 561 | // const pubKey = await crypto.subtle.exportKey("spki", keyPair.publicKey); | COMMENT |
| LOW | …c/modules/features/SettingDialogue/PaneRemoteConfig.ts | 581 | // }) | COMMENT |
| LOW | src/modules/main/ModuleLiveSyncMain.ts | 121 | // this.$$replicate = this.$$replicate.bind(this); | COMMENT |
| LOW | src/modules/main/ModuleLiveSyncMain.ts | 141 | // if (this.core.replicator) { | COMMENT |
| LOW | src/modules/main/ModuleLiveSyncMain.ts | 161 | // await this.services.appLifecycle.onResumed(); | COMMENT |
| LOW | src/modules/main/ModuleLiveSyncMain.ts | 181 | // _isSuspended(): boolean { | COMMENT |
| LOW | src/modules/services/LiveSyncUI/DialogHost.svelte | 1 | <script lang="ts"> | COMMENT |
| LOW | src/apps/cli/docker-entrypoint.sh | 1 | #!/bin/sh | COMMENT |
| LOW | src/apps/cli/test/test-helpers-docker.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/apps/cli/test/test-helpers-docker.sh | 21 | # RUN_BUILD Set to 1 to rebuild the Docker image before the test | COMMENT |
| LOW | src/apps/cli/test/test-mirror-linux.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/apps/cli/test/test-daemon-linux.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/apps/webpeer/src/vite-env.d.ts | 1 | /// <reference types="svelte" /> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docker/README.md | 140 | #### Step 1: Create a Cloudflare Tunnel | COMMENT |
| LOW⚡ | docker/README.md | 150 | #### Step 2: Configure Environment | COMMENT |
| LOW⚡ | docker/README.md | 158 | #### Step 3: Add Public Hostname Route | COMMENT |
| LOW | docker/README.md | 182 | #### Step 4: Start the Stack | COMMENT |
| LOW | docker/README.md | 199 | #### Step 5: Test the Connection | COMMENT |
| LOW | docker/README.md | 211 | #### Step 6: Configure Obsidian Plugin | COMMENT |
| LOW | docs/tips/fast-setup.md | 32 | ### Step 1: Choose Data Processing Method | COMMENT |
| LOW | docs/tips/fast-setup.md | 46 | ### Step 2: Configure Conflict & Deletion Rules | COMMENT |
| LOW | docs/tips/fast-setup.md | 61 | ### Step 3: Automated Synchronisation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …r/2026_08_replicator_capabilities_03_migration_plan.md | 190 | ## Stage 4: add target-aware unattended P2P orchestration | COMMENT |
| MEDIUM | …s/adr/2026_08_fast_fetch_persistence_and_completion.md | 298 | ### LiveSync orchestration unit tests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/e2e-obsidian/scripts/document-history-restore.ts | 288 | await promptInput.getAttribute("placeholder"), | CODE |
| LOW | …/e2e-obsidian/scripts/couchdb-manual-setup-workflow.ts | 246 | await encryption.locator('input[name="id-derivation-source"]').getAttribute("placeholder"), | CODE |
| LOW | src/apps/cli/testdeno/helpers/dataset.ts | 58 | "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW | src/apps/cli/testdeno/helpers/dataset.ts | 58 | "lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW | src/apps/webpeer/src/UITest.svelte | 10 | const ret = await confirm.askString("Your name", "What is your name?", "John Doe", false); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/common/messages/combinedMessages.prod.ts | 7936 | def: "How do you want to fetch?\n- Create a local database once before fetching.\n **Low Traffic**, **High CPU* | CODE |
| MEDIUM | src/common/messages/combinedMessages.prod.ts | 7943 | zh: "How do you want to fetch?\n- Create a local database once before fetching.\n **Low Traffic**, **High CPU** | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/apps/cli/test/test-daemon-linux.sh | 57 | # Write the file that should be ignored. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.traefik.yml | 25 | # Don't forget to replace 'obsidian-livesync.example.org' with your own domain | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/apps/cli/deploy/install.sh | 4 | # Usage: | COMMENT |