ADR-002: Manual Import Triggered by User

Status

Accepted

Context

After deciding on one-way import ([[ADR-001]]), the next question was when imports should occur. Options ranged from fully automatic (background polling, webhooks, or sync-on-every-change) to fully manual (user explicitly triggers each import).

Automatic background sync is convenient but can be intrusive: it modifies the vault without the user’s immediate awareness, which conflicts with Obsidian’s local-first, user-controlled ethos.

Decision

Imports are manual by default. The user must explicitly trigger an import via a command or ribbon action.

As an opt-in convenience, Tetromino supports two automatic modes, both disabled by default:

Rationale

  1. User agency and transparency. Obsidian users expect their vault to change only when they take action. A surprise import while writing notes is disruptive and erodes trust.

  2. Are.na API rate limits. Automatic frequent polling would consume rate-limit budget even when nothing has changed. Manual imports concentrate API usage around intentional workflow moments.

  3. Network and battery impact. Background polling adds constant network activity. For users on laptops or metered connections, this is undesirable.

  4. Deterministic dry-run workflow. Manual imports pair naturally with the dry-run preview: a user can preview, review the diff, and then decide to run the real import. Auto-sync would make this two-step workflow impossible.

  5. Optional automation for power users. Users who do want hands-free operation can enable startup sync and/or intervals. This satisfies both camps without forcing automation on everyone.

Consequences

Positive

Negative

Implementation Notes


Last updated: 2026-06-26