Spacedrive is an open source cross-platform file explorer, powered by a virtual distributed filesystem written in Rust.
This report summarizes scanner evidence for spacedriveapp/spacedrive, a Rust project with 39,348 GitHub stars. SynthScan examined 438,377 lines of code across 2193 source files, recording 603 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 1.8 (Low 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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 517 finding(s).
Are imports declared and package/API names verified? 7 finding(s).
Are wrappers, guards, and repeated structures necessary? 87 finding(s).
Which changes need focused human review? 603 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 603 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| LOW | AGENTS.md | 441 | COMMENT | |
| LOW | AGENTS.md | 461 | //! let output = ShareFileAction::run(input, &ctx).await?; | COMMENT |
| LOW | crates/crypto/src/protected.rs | 1 | //! This is a basic wrapper for secret/hidden values | COMMENT |
| LOW | crates/crypto/src/protected.rs | 21 | //! use sd_crypto::Protected; | COMMENT |
| LOW | crates/crypto/src/erase.rs | 1 | use crate::{rng::CryptoRng, Error}; | COMMENT |
| LOW | crates/crypto/src/cookie.rs | 101 | } | COMMENT |
| LOW | crates/crypto/src/cookie.rs | 181 | COMMENT | |
| LOW | crates/rc4-shim/src/lib.rs | 1 | //! Stand-in for the `rc4` crate. | COMMENT |
| LOW | crates/archive/src/lib.rs | 1 | //! # sd-archive — adapter-backed sources | COMMENT |
| LOW | crates/archive/src/lib.rs | 21 | //! ## Architecture | COMMENT |
| LOW | crates/fs-watcher/src/lib.rs | 1 | //! Platform-agnostic filesystem watcher | COMMENT |
| LOW | crates/fs-watcher/src/lib.rs | 21 | //! - **Broadcast Events**: Multiple subscribers can receive events concurrently | COMMENT |
| LOW | crates/fs-watcher/src/lib.rs | 41 | //! while let Ok(event) = rx.recv().await { | COMMENT |
| LOW | crates/fs-watcher/src/event.rs | 1 | //! Filesystem event types | COMMENT |
| LOW | crates/fs-watcher/src/event.rs | 161 | /// Raw event kinds from notify | COMMENT |
| LOW | crates/fs-watcher/src/spelling.rs | 1 | //! Translating between the spelling a watch is stored under and the spellings | COMMENT |
| LOW | crates/fs-watcher/src/watcher.rs | 1 | //! Main filesystem watcher implementation | COMMENT |
| LOW | crates/fs-watcher/src/watcher.rs | 221 | Ok(()) | COMMENT |
| LOW | crates/fs-watcher/src/watcher.rs | 601 | /// | COMMENT |
| LOW | crates/fs-watcher/src/platform/macos.rs | 1 | //! macOS-specific event handler | COMMENT |
| LOW | crates/fs-watcher/src/platform/mod.rs | 1 | //! Platform-specific event handlers | COMMENT |
| LOW | crates/fs-watcher/src/platform/mod.rs | 21 | #[cfg(target_os = "windows")] | COMMENT |
| LOW | crates/images/src/consts.rs | 21 | pub const HEIF_EXTENSIONS: [&str; 8] = [ | COMMENT |
| LOW | crates/images/src/error.rs | 21 | // these errors are either: reliant on external (C dependencies), or are extremely niche | COMMENT |
| LOW | crates/job-derive/src/lib.rs | 1 | //! Derive macros for automatic job registration | COMMENT |
| LOW | crates/task-system/src/error.rs | 21 | /// error type. | COMMENT |
| LOW | crates/task-system/src/lib.rs | 1 | //! | COMMENT |
| LOW | crates/task-system/src/lib.rs | 21 | //! use async_trait::async_trait; | COMMENT |
| LOW | crates/task-system/src/lib.rs | 41 | //! async fn run(&mut self, _interrupter: &Interrupter) -> Result<ExecStatus, SampleError> { | COMMENT |
| LOW | crates/sidecar-path/src/lib.rs | 1 | //! The canonical sidecar tree layout: | COMMENT |
| LOW | crates/pvcache/src/layout.rs | 181 | &*(base.add(offset) as *const AtomicU64) | COMMENT |
| LOW | crates/pvcache/src/lib.rs | 1 | //! Memory-mapped thumbnail tile cache — the hot tier behind `thumbs.pvcache`. | COMMENT |
| LOW | crates/pvcache/src/lib.rs | 21 | //! ``` | COMMENT |
| LOW | crates/pvcache/src/lib.rs | 41 | //! | COMMENT |
| LOW | crates/pvcache/src/lib.rs | 61 | //! writer remaps, and the header's capacity and generation are published. | COMMENT |
| LOW | crates/pvcache/src/writer.rs | 41 | /// An existing file is adopted only when its header validates and | COMMENT |
| LOW | crates/sdk/src/ai.rs | 1 | //! AI operations - machine learning models, inference, prompts | COMMENT |
| LOW | crates/sdk/src/tasks.rs | 1 | //! Task system for job composition | COMMENT |
| LOW | crates/sdk/src/lib.rs | 1 | //! Spacedrive Extension SDK | COMMENT |
| LOW | crates/sdk/src/models.rs | 1 | //! Extension Data Models - Person, Album, Place, etc. | COMMENT |
| LOW | crates/sdk/src/ffi.rs | 1 | //! Low-level FFI bindings to Spacedrive host functions | COMMENT |
| LOW | crates/log-analyzer/src/lib.rs | 1 | //! Log analysis system for Spacedrive. | COMMENT |
| LOW | crates/media-metadata/src/exif/consts.rs | 1 | use exif::Tag; | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 21 | } | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 101 | reader | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 121 | pub const fn coordinates(&self) -> (f64, f64) { | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 141 | /// This also re-generates the Plus Code for your coordinates | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 161 | /// ``` | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 181 | #[inline] | COMMENT |
| LOW | crates/media-metadata/src/exif/geographic/location.rs | 221 | } | COMMENT |
| LOW | crates/sdk-macros/src/lib.rs | 21 | extension::extension_impl(args, input) | COMMENT |
| LOW | crates/sdk-macros/src/model.rs | 1 | //! Model macro implementation - generates ExtensionModel trait impl | COMMENT |
| LOW | crates/bake/src/lib.rs | 1 | //! Cell renderers: bake a work item into a BGRA8 tile — the byte layout the | COMMENT |
| LOW | crates/bake/src/lib.rs | 161 | /// (size, date — whatever the view puts there). | COMMENT |
| LOW | crates/bake/src/lib.rs | 181 | #[error("failed to produce tile: {0}")] | COMMENT |
| LOW | crates/bake/src/mac_icons.rs | 1 | //! Native macOS file icons, rasterized into grid cells. Icons are keyed by | COMMENT |
| LOW | crates/sd-client/tests/common/mod.rs | 1 | //! In-process mock daemon speaking the real NDJSON protocol. | COMMENT |
| LOW | crates/sd-client/src/lib.rs | 1 | //! Client library for the Spacedrive daemon. | COMMENT |
| LOW | crates/sd-client/src/broker.rs | 1 | //! Client-side multiplexing of daemon event subscriptions. | COMMENT |
| LOW | crates/photos/src/lib.rs | 1 | //! # sd-photos — reading an Apple Photos library | COMMENT |
| 370 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/archive/src/engine.rs | 114 | // ── Public API ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/safari-history/adapter.toml | 34 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/macos-contacts/sync.py | 100 | # ── Load groups ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/macos-contacts/sync.py | 114 | # ── Load group memberships ─────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/macos-contacts/sync.py | 129 | # ── Load contacts ──────────────────────────────────────────────── | STRING |
| MEDIUM | adapters/macos-contacts/adapter.toml | 21 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/github/sync.py | 118 | # ── Determine repos to index ───────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/github/sync.py | 138 | # ── Upsert repository ──────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/github/sync.py | 164 | # ── Fetch issues (and PRs if enabled) ──────────────────────────── | COMMENT |
| MEDIUM | adapters/github/sync.py | 238 | # ── Fetch comments for this issue ──────────────────────────── | COMMENT |
| MEDIUM | adapters/github/adapter.toml | 49 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/slack/sync.py | 70 | # ── Load users for display name lookup ─────────────────────────────── | COMMENT |
| MEDIUM | adapters/slack/sync.py | 88 | # ── Load channels ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/slack/sync.py | 129 | # ── Load messages from channel folders ─────────────────────────────── | COMMENT |
| MEDIUM | adapters/slack/adapter.toml | 33 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/obsidian/adapter.toml | 32 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/apple-notes/sync.py | 82 | # ── Sync folders ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/apple-notes/sync.py | 118 | # ── Sync notes ──────────────────────────────────────────────────── | STRING |
| MEDIUM | adapters/apple-notes/adapter.toml | 21 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/chrome-history/adapter.toml | 41 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/chrome-bookmarks/adapter.toml | 25 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/gmail/sync.py | 26 | # ── Constants ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/gmail/sync.py | 33 | # ── Helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/gmail/sync.py | 174 | # ── Sync Logic ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/gmail/sync.py | 431 | # ── Main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/gmail/adapter.toml | 72 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/opencode/sync.py | 132 | # ── Fetch sessions ────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/opencode/sync.py | 164 | # ── Fetch messages for this session ───────────────────────── | STRING |
| MEDIUM | adapters/opencode/sync.py | 175 | # ── Fetch parts for all messages in this session ──────────── | STRING |
| MEDIUM | adapters/opencode/sync.py | 194 | # ── Aggregate session stats ───────────────────────────────── | STRING |
| MEDIUM | adapters/opencode/sync.py | 251 | # ── Emit session ──────────────────────────────────────────── | STRING |
| MEDIUM | adapters/opencode/sync.py | 274 | # ── Emit messages ─────────────────────────────────────────── | STRING |
| MEDIUM | adapters/opencode/adapter.toml | 41 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/macos-calendar/sync.py | 96 | # ── Load calendars ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | adapters/macos-calendar/sync.py | 139 | # ── Load events ────────────────────────────────────────────────── | STRING |
| MEDIUM | adapters/macos-calendar/adapter.toml | 26 | # ── Data type schema ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 62 | # ┌──────────────┬────────────┬────────┬──────────┬──────────┐ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 64 | # ├──────────────┼────────────┼────────┼──────────┼──────────┤ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 69 | # └──────────────┴────────────┴────────┴──────────┴──────────┘ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 87 | # ┌──────────────┬───────┬──────────┬──────────┐ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 89 | # ├──────────────┼───────┼──────────┼──────────┤ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 95 | # ├──────────────┼───────┼──────────┼──────────┤ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 97 | # └──────────────┴───────┴──────────┴──────────┘ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 114 | # ┌──────────────┬─────────┬─────────┬──────────┐ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 116 | # ├──────────────┼─────────┼─────────┼──────────┤ | COMMENT |
| MEDIUM⚡ | .tasks/core/VSS-005-cli-integration.md | 120 | # └──────────────┴─────────┴─────────┴──────────┘ | COMMENT |
| MEDIUM | apps/cli/src/domains/redundancy/mod.rs | 139 | // ─── rendering helpers ──────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CONTRIBUTING.md | 100 | #### Step 1: System Dependencies (Linux only) | COMMENT |
| LOW | CONTRIBUTING.md | 126 | #### Step 2: Project Dependencies | COMMENT |
| LOW⚡ | core/tests/volume_detection_test.rs | 449 | // Step 1: Check if paths are on same physical storage | COMMENT |
| LOW⚡ | core/tests/volume_detection_test.rs | 455 | // Step 2: Get volumes for both paths | COMMENT |
| LOW | core/tests/volume_detection_test.rs | 467 | // Step 3: Select copy strategy | COMMENT |
| LOW | core/tests/volume_detection_test.rs | 483 | // Step 4: Verify expected behavior | COMMENT |
| LOW⚡ | core/src/infra/daemon/rpc.rs | 418 | // Step 1: Get buffered events BEFORE registering connection | COMMENT |
| LOW⚡ | core/src/infra/daemon/rpc.rs | 424 | // Step 2: Register connection for event streaming (starts receiving live events) | COMMENT |
| LOW | core/src/infra/daemon/rpc.rs | 435 | // Step 3: Send buffered events in chronological order | COMMENT |
| LOW⚡ | core/src/volume/fs/mod.rs | 101 | // Step 1: resolve mount point root (e.g. "C:\") | COMMENT |
| LOW⚡ | core/src/volume/fs/mod.rs | 109 | // Step 2: get stable volume GUID path | COMMENT |
| LOW⚡ | adapters/gmail/sync.py | 462 | # Step 1: Sync labels (always full) | COMMENT |
| LOW⚡ | adapters/gmail/sync.py | 465 | # Step 2: Sync messages | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 221 | // Step 1: Select Device | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 293 | // Step 2: Choose Action | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 419 | // Step 3: Confirm | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 479 | // Step 4: Executing | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 73 | // Step 1: Subscribe FIRST | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 102 | // Step 2: Query the directory listing (triggers the browse walk) | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 124 | // Step 3: Wait for events to arrive | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 137 | // Step 4: Verify events arrived | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 207 | // Step 1: Query FIRST (triggers indexing, events go to buffer) | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 228 | // Step 2: Subscribe AFTER query (late subscriber) | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 418 | // Step 1: Select local library | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 445 | // Step 2: Select remote device from paired devices | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 481 | // Step 3: Discover remote libraries | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 493 | // Step 4: Select sync action | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/tests/volume_detection_test.rs | 449 | // Step 1: Check if paths are on same physical storage | COMMENT |
| LOW⚡ | core/tests/volume_detection_test.rs | 455 | // Step 2: Get volumes for both paths | COMMENT |
| LOW | core/tests/volume_detection_test.rs | 467 | // Step 3: Select copy strategy | COMMENT |
| LOW | core/tests/volume_detection_test.rs | 483 | // Step 4: Verify expected behavior | COMMENT |
| LOW⚡ | core/src/infra/daemon/rpc.rs | 418 | // Step 1: Get buffered events BEFORE registering connection | COMMENT |
| LOW⚡ | core/src/infra/daemon/rpc.rs | 424 | // Step 2: Register connection for event streaming (starts receiving live events) | COMMENT |
| LOW | core/src/infra/daemon/rpc.rs | 435 | // Step 3: Send buffered events in chronological order | COMMENT |
| LOW⚡ | core/src/volume/fs/mod.rs | 101 | // Step 1: resolve mount point root (e.g. "C:\") | COMMENT |
| LOW⚡ | core/src/volume/fs/mod.rs | 109 | // Step 2: get stable volume GUID path | COMMENT |
| LOW⚡ | adapters/gmail/sync.py | 462 | # Step 1: Sync labels (always full) | COMMENT |
| LOW⚡ | adapters/gmail/sync.py | 465 | # Step 2: Sync messages | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 221 | // Step 1: Select Device | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 293 | // Step 2: Choose Action | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 419 | // Step 3: Confirm | COMMENT |
| LOW | …ges/interface/src/components/modals/SyncSetupModal.tsx | 479 | // Step 4: Executing | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 73 | // Step 1: Subscribe FIRST | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 102 | // Step 2: Query the directory listing (triggers the browse walk) | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 124 | // Step 3: Wait for events to arrive | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 137 | // Step 4: Verify events arrived | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 207 | // Step 1: Query FIRST (triggers indexing, events go to buffer) | COMMENT |
| LOW | …s/ts-client/tests/integration/browse-streaming.test.ts | 228 | // Step 2: Subscribe AFTER query (late subscriber) | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 418 | // Step 1: Select local library | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 445 | // Step 2: Select remote device from paired devices | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 481 | // Step 3: Discover remote libraries | COMMENT |
| LOW | apps/cli/src/domains/library/mod.rs | 493 | // Step 4: Select sync action | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | adapters/macos-contacts/sync.py | 126 | except sqlite3.Error: | CODE |
| HIGH | adapters/macos-contacts/sync.py | 183 | except sqlite3.Error: | CODE |
| HIGH | adapters/macos-contacts/sync.py | 194 | except sqlite3.Error: | CODE |
| HIGH | adapters/macos-contacts/sync.py | 215 | except sqlite3.Error: | CODE |
| HIGH | adapters/obsidian/sync.py | 54 | except (ValueError, TypeError): | CODE |
| HIGH | adapters/gmail/sync.py | 336 | except Exception: | CODE |
| HIGH | adapters/macos-calendar/sync.py | 214 | except sqlite3.Error: | CODE |
| HIGH | adapters/macos-calendar/sync.py | 122 | except sqlite3.Error: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | adapters/safari-history/sync.py | 77 | except Exception as e: | CODE |
| MEDIUM | adapters/safari-history/sync.py | 47 | def main(): | CODE |
| LOW | adapters/macos-contacts/sync.py | 92 | except Exception as e: | CODE |
| MEDIUM | adapters/macos-contacts/sync.py | 66 | def main(): | CODE |
| LOW | adapters/github/sync.py | 127 | except Exception as e: | CODE |
| LOW | adapters/github/sync.py | 145 | except Exception as e: | CODE |
| LOW | adapters/github/sync.py | 175 | except Exception as e: | CODE |
| LOW | adapters/github/sync.py | 262 | except Exception as e: | CODE |
| LOW | adapters/obsidian/sync.py | 193 | except Exception as e: | CODE |
| LOW | adapters/apple-notes/sync.py | 74 | except Exception as e: | CODE |
| MEDIUM | adapters/apple-notes/sync.py | 47 | def main(): | CODE |
| LOW | adapters/chrome-history/sync.py | 77 | except Exception as e: | CODE |
| MEDIUM | adapters/chrome-history/sync.py | 42 | def main(): | CODE |
| LOW | adapters/chrome-bookmarks/sync.py | 110 | except Exception as e: | CODE |
| MEDIUM | adapters/chrome-bookmarks/sync.py | 87 | def main(): | CODE |
| LOW | adapters/gmail/sync.py | 170 | except Exception: | CODE |
| LOW | adapters/gmail/sync.py | 336 | except Exception: | CODE |
| LOW | adapters/gmail/sync.py | 492 | except Exception as e: | CODE |
| LOW | adapters/opencode/sync.py | 124 | except Exception as e: | CODE |
| MEDIUM | adapters/opencode/sync.py | 94 | def main(): | CODE |
| LOW | adapters/macos-calendar/sync.py | 88 | except Exception as e: | CODE |
| MEDIUM | adapters/macos-calendar/sync.py | 60 | def main(): | CODE |
| MEDIUM | …s/swift-client/Examples/LibraryManagementExample.swift | 52 | print("Error: \(error)") | CODE |
| MEDIUM | …client/Sources/SpacedriveClient/SpacedriveClient.swift | 503 | print("Error details: \(error.localizedDescription)") | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/benchmarks/src/cli/commands.rs | 11 | #[command(about = "Spacedrive benchmarking harness", long_about = None)] | COMMENT |
| MEDIUM | core/src/infra/action/mod.rs | 3 | //! This module provides a centralized, robust, and extensible layer for handling | COMMENT |
| MEDIUM | core/src/infra/job/traits.rs | 78 | // Try named first (more robust to field reordering/additions), fallback to non-named for legacy | COMMENT |
| MEDIUM | core/src/infra/event/log_emitter.rs | 174 | // Simple field extraction (this could be more robust) | COMMENT |
| MEDIUM | core/src/service/network/core/mod.rs | 1859 | /// Enhanced pairing request sending with robust active polling | COMMENT |
| MEDIUM | core/src/volume/fs/zfs.rs | 201 | // Use fast copy strategy for ZFS (can leverage clones) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | adapters/macos-contacts/sync.py | 66 | CODE | |
| LOW | adapters/github/sync.py | 30 | CODE | |
| LOW | adapters/github/sync.py | 97 | CODE | |
| LOW | adapters/slack/sync.py | 49 | CODE | |
| LOW | adapters/obsidian/sync.py | 63 | CODE | |
| LOW | adapters/gmail/sync.py | 46 | CODE | |
| LOW | adapters/gmail/sync.py | 265 | CODE | |
| LOW | adapters/opencode/sync.py | 56 | CODE | |
| LOW | adapters/opencode/sync.py | 94 | CODE | |
| LOW | adapters/macos-calendar/sync.py | 60 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/scripts/test_daemon.sh | 14 | # Check if daemon is still running | COMMENT |
| LOW | adapters/gmail/sync.py | 482 | # Set cursor to current history ID for next incremental sync | COMMENT |
| LOW | scripts/test-data.sh | 10 | # Check if curl and tar are available | COMMENT |
| LOW | apps/server/build-for-truenas.sh | 15 | # Check if buildx is available | COMMENT |
| LOW | apps/server/docker-run.sh | 9 | # Check if .env exists | COMMENT |
| LOW | apps/server/docker-run.sh | 20 | # Check if docker-compose is available | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/crypto/src/protected.rs | 3 | //! It's worth noting that this wrapper does not provide additional security that you can't get manually, it just makes | COMMENT |
| MEDIUM | crates/images/src/heif.rs | 66 | // This implementation is **ENTIRELY** untested, as I'm unable to source | COMMENT |
| MEDIUM | apps/tauri/src-tauri/gen/schemas/acl-manifests.json | 1 | {"clipboard-manager":{"default_permission":{"identifier":"default","description":"No features are enabled by default, as | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | adapters/gmail/sync.py | 265 | def sync_messages_incremental(token: str, user: str, history_id: str, max_results: int): | CODE |
| LOW | packages/interface/src/Shell.tsx | 36 | function DesktopStartupCoordinator() { | CODE |
| LOW | …kages/interface/src/contexts/WebContextMenuContext.tsx | 26 | export function useWebContextMenuController(): WebContextMenuController | null { | CODE |
| LOW | …/src/components/overlays/DaemonDisconnectedOverlay.tsx | 35 | export function DaemonDisconnectedOverlay({ | CODE |
| LOW | …erface/src/routes/explorer/hooks/useNavigationFocus.ts | 26 | function usePublishNavigationFocus(): void { | CODE |
| LOW | apps/tauri/src/contextMenu.ts | 56 | export function initializeContextMenuHandler() { | CODE |
| LOW | apps/tauri/src/updater.example.ts | 279 | export function startPeriodicUpdateChecks( | CODE |
| LOW | apps/tauri/src/lib/assetPath.ts | 9 | export function normalizeAssetProtocolPath(filePath: string): string { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AGENTS.md | 460 | //! let input = ShareFileInput { file_id: 123, recipient: "user@example.com" }; | COMMENT |
| LOW | crates/archive/README.md | 37 | "email": "user@example.com" | CODE |
| LOW | crates/archive/README.md | 156 | {"email": "user@example.com", "cursor": "abc123"} | CODE |
| LOW | core/tests/typescript_bridge_test.rs | 279 | "Lorem ipsum dolor sit amet. ".repeat(100) | CODE |
| LOW | core/tests/typescript_bridge_test.rs | 279 | "Lorem ipsum dolor sit amet. ".repeat(100) | CODE |
| LOW | core/src/service/network/device/registry.rs | 818 | node_id: "placeholder".to_string(), // Will be filled in by caller | CODE |
| LOW | core/src/service/network/device/registry.rs | 819 | public_key_hash: "placeholder".to_string(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/plans/2026-08-27-gpui-handoff.md | 92 | ### Step 1, the two guardrails | COMMENT |
| MEDIUM | apps/native/src/theme.rs | 30 | /// The whole surface is carried even though the scaffold reads only part of | COMMENT |