Adds a bounded, durable issue outbox for the complete mobile capture flow. Captures move out of the composer immediately, replay sequentially with stable idempotency keys, survive transient failures, and expose Edit / Send now / Discard states in Drafts. Permanent validation failures remain actionable.
Validation:
pytest -q → 381 passed
Rendered Chromium at 320×568 and 390×844: no horizontal overflow; Edit, Send now, and Discard are all 44px high; queued capture survived in local storage and cleared the active composer.
Service worker precaches the outbox module while continuing to bypass all non-GET and /api/ requests.
Closes #232
Adds a bounded, durable issue outbox for the complete mobile capture flow. Captures move out of the composer immediately, replay sequentially with stable idempotency keys, survive transient failures, and expose Edit / Send now / Discard states in Drafts. Permanent validation failures remain actionable.
Validation:
- `pytest -q` → 381 passed
- Rendered Chromium at 320×568 and 390×844: no horizontal overflow; Edit, Send now, and Discard are all 44px high; queued capture survived in local storage and cleared the active composer.
- Service worker precaches the outbox module while continuing to bypass all non-GET and `/api/` requests.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #232
Adds a bounded, durable issue outbox for the complete mobile capture flow. Captures move out of the composer immediately, replay sequentially with stable idempotency keys, survive transient failures, and expose Edit / Send now / Discard states in Drafts. Permanent validation failures remain actionable.
Validation:
pytest -q→ 381 passed/api/requests.