Skip to content

Tech debt: NSE log visibility, LightRelay concurrency, ECDH parity check #86

Description

@DocNR

Verified still open against current source (build 102, 2026-08-10).

  • "Copy Recent Logs" doesn't capture NSE activity. OSLogStore(scope: .currentProcessIdentifier) only sees the main-app process, but the NSE is where most real signing happens (app closed = most of the time). Have the NSE append structured log entries to a shared app-group file that the main app merges in when exporting. Clave/Views/Settings/LogExporter.swift:27.
  • LogExporter loose ends from PR feat: hide nostrconnect UI behind dev menu + add log export #4 review: "apns" category declared in allCategories but unused (LogExporter.swift:21); LogExporter/Entry types aren't Sendable (2 Swift 6 warnings at SettingsView.swift:202-203); no round-trip persistence test for DeveloperSettings despite the init already supporting a defaults: override for testing.
  • LightRelay is a final class @unchecked Sendable, not an actor. Was changed from actor to class for NSE compatibility; worth a thread-safety review to confirm the @unchecked is actually justified. Shared/LightRelay.swift:21.
  • P256K ECDH result drops the compressed-point prefix byte with no correctness check. No test vector confirms this doesn't affect parity on edge cases. Shared/LightCrypto.swift:180-191.
  • SharedStorage has no file-level locking for NSE/app concurrency, only an in-process lock that's explicitly commented as intra-process-only. Worth revisiting if cross-process races ever show up in practice. Shared/SharedStorage.swift:596.

Source: internal backlog triage, 2026-08-10.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions