Prevent silent mobile Draft loss at capture capacity #623

Closed
opened 2026-08-12 05:24:16 +00:00 by timmy · 0 comments
Owner

Problem

The mobile capture store keeps only 20 records and save() silently evicts the oldest Draft (and screenshot) on the 21st save. The New → Save to Drafts flow gives no warning, so private work can be lost without consent.

Evidence: frontend/unfiled-captures.js truncates with .slice(0, maxItems); tests/test_unfiled_captures.py currently codifies silent eviction. Historical issue/PR titles and recent commits contain no capacity warning or explicit replacement flow.

Acceptance

  • A normal save at capacity leaves all existing Drafts and attachments unchanged and reports capacity.
  • The composer remains open with title, note, and screenshot intact.
  • A mobile-safe decision sheet identifies the oldest Draft and offers Review Drafts, Keep editing, and an explicit Replace oldest & save action.
  • Replacement removes only the identified oldest Draft/attachment and stores the new Draft; failures preserve existing work.
  • Below capacity, the existing one-tap Save to Drafts handoff remains unchanged.
  • Focused behavioral tests and the full suite pass.
## Problem The mobile capture store keeps only 20 records and `save()` silently evicts the oldest Draft (and screenshot) on the 21st save. The New → Save to Drafts flow gives no warning, so private work can be lost without consent. Evidence: `frontend/unfiled-captures.js` truncates with `.slice(0, maxItems)`; `tests/test_unfiled_captures.py` currently codifies silent eviction. Historical issue/PR titles and recent commits contain no capacity warning or explicit replacement flow. ## Acceptance - A normal save at capacity leaves all existing Drafts and attachments unchanged and reports capacity. - The composer remains open with title, note, and screenshot intact. - A mobile-safe decision sheet identifies the oldest Draft and offers Review Drafts, Keep editing, and an explicit Replace oldest & save action. - Replacement removes only the identified oldest Draft/attachment and stores the new Draft; failures preserve existing work. - Below capacity, the existing one-tap Save to Drafts handoff remains unchanged. - Focused behavioral tests and the full suite pass.
timmy self-assigned this 2026-08-12 05:24:16 +00:00
timmy closed this issue 2026-08-12 05:38:49 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
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: stackchain/stackchain-dashboard#623
No description provided.