Feature: Passive logging from SMS/call/email history #42

Closed
opened 2026-05-28 01:11:21 +00:00 by Mark · 6 comments
Owner

With permission, the app reads call logs, SMS history, and email to auto-create interaction records.

  • Call: logged as Call type with timestamp and contact
  • SMS: logged as Text type
  • Email: logged as Email type
  • De-duplicated against manual entries
  • Privacy: on-device processing, granular permission per source, preview before save

This is the biggest UX win for data entry — interactions log themselves.

With permission, the app reads call logs, SMS history, and email to auto-create interaction records. - Call: logged as Call type with timestamp and contact - SMS: logged as Text type - Email: logged as Email type - De-duplicated against manual entries - Privacy: on-device processing, granular permission per source, preview before save This is the biggest UX win for data entry — interactions log themselves.
Author
Owner

⏸ Needs Decision

Blocking factors:

  • Didn't meet auto-approve criteria — scope=medium, risk=medium, spec=aligned

Scope: medium Risk: medium Spec: aligned Type: feature
Summary: Auto-log interactions from SMS, call logs, and email with on-device processing, granular permissions, and preview-before-save.
Suggestion: Phased approach: (1) extend Dexie schema with dedup hash and source metadata fields, (2) build Capacitor native plugin wrappers starting with call logs (easiest) and SMS, (3) permission-request UI with per-source toggles, (4) preview workflow component, (5) email reader last as it's the most complex native integration.
Rationale: Directly aligned with the PRM's core value proposition — making data entry effortless. Additive feature with no breaking changes. Permission sensitivity raises risk to medium (SMS/call log access requires careful user disclosure and Android runtime permissions). Fits the existing native plugins pattern in src/lib/native/. Estimated 12–14 files touched, falling in the medium bucket. The preview-before-save pattern is critical for user trust and should be designed upfront, not bolted on.

Action: Review each blocking factor above. Remove blocked:needs-decision label to route back to triage.

## ⏸ Needs Decision **Blocking factors:** - **Didn't meet auto-approve criteria** — scope=medium, risk=medium, spec=aligned --- **Scope:** medium **Risk:** medium **Spec:** aligned **Type:** feature **Summary:** Auto-log interactions from SMS, call logs, and email with on-device processing, granular permissions, and preview-before-save. **Suggestion:** Phased approach: (1) extend Dexie schema with dedup hash and source metadata fields, (2) build Capacitor native plugin wrappers starting with call logs (easiest) and SMS, (3) permission-request UI with per-source toggles, (4) preview workflow component, (5) email reader last as it's the most complex native integration. **Rationale:** Directly aligned with the PRM's core value proposition — making data entry effortless. Additive feature with no breaking changes. Permission sensitivity raises risk to medium (SMS/call log access requires careful user disclosure and Android runtime permissions). Fits the existing native plugins pattern in src/lib/native/. Estimated 12–14 files touched, falling in the medium bucket. The preview-before-save pattern is critical for user trust and should be designed upfront, not bolted on. **Action:** Review each blocking factor above. Remove `blocked:needs-decision` label to route back to triage.
Author
Owner

GSD VERIFY phase found no changes after implementation.
Worker output: ]11;?\API call failed after 3 retries: HTTP 429: Provider returned error

GSD VERIFY phase found no changes after implementation. Worker output: ]11;?\API call failed after 3 retries: HTTP 429: Provider returned error
Author
Owner

Settings UI stubs for passive logging are now complete and ready for future native implementation.

  • Added passiveLogSettings state to store with callLogEnabled, smsEnabled, emailEnabled, and previewBeforeSave fields
  • Added updatePassiveLogSetting action to update settings
  • Added Passive Logging section to Settings page with toggle switches for each option
  • All tests passing (727 passed)

The UI is in place - native implementation will connect these toggles to actual device APIs.

Settings UI stubs for passive logging are now complete and ready for future native implementation. - Added `passiveLogSettings` state to store with `callLogEnabled`, `smsEnabled`, `emailEnabled`, and `previewBeforeSave` fields - Added `updatePassiveLogSetting` action to update settings - Added Passive Logging section to Settings page with toggle switches for each option - All tests passing (727 passed) The UI is in place - native implementation will connect these toggles to actual device APIs.
Author
Owner

Decision (2026-06-28)

Parent scope: Android only, full SMS + call log + email history ingestion. Implementation is split across #105 (call log), #106 (SMS), #107 (email).

iOS is out of scope at this layer; document only if/when brought back.

## Decision (2026-06-28) Parent scope: Android only, full SMS + call log + email history ingestion. Implementation is split across #105 (call log), #106 (SMS), #107 (email). iOS is out of scope at this layer; document only if/when brought back.
Author
Owner

Auto-triage: needs decompose

Marked triage-approved + needs-decompose. decompose-executor will pick this up and break it into implementable sub-issues.

## Auto-triage: needs decompose Marked `triage-approved` + `needs-decompose`. decompose-executor will pick this up and break it into implementable sub-issues.
Mark closed this issue 2026-07-02 07:09:42 +00:00
Author
Owner

Closed as completed. Passive logging has split into shipped sub-issues:

  • #106 [SMS history ingestion] → closed
  • #107 [Email history ingestion] → in decomposition
  • #108 [Ambient back-end] → closed
  • #105 [Call log] → closed (added via prior session)

The parent issue's scope was large enough that each channel needed its own implementation path; this issue stays as the architectural record and #107 carries the still-open channel.

Closed as completed. Passive logging has split into shipped sub-issues: - #106 [SMS history ingestion] → closed - #107 [Email history ingestion] → in decomposition - #108 [Ambient back-end] → closed - #105 [Call log] → closed (added via prior session) The parent issue's scope was large enough that each channel needed its own implementation path; this issue stays as the architectural record and #107 carries the still-open channel.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/kimi_agent_kin_app_sync#42
No description provided.