Adds screenshot selection and preview to unread-update replies, notification-scoped server-side uploads, and durable account-bound online/offline delivery. Reply/read sequencing checkpoints upload and reply stages so retries do not duplicate evidence and an update is marked read only after confirmed delivery.
Playwright render at 320 px and 390 px — no horizontal overflow; attachment and reply controls are 44 px high
Closes #527
Adds screenshot selection and preview to unread-update replies, notification-scoped server-side uploads, and durable account-bound online/offline delivery. Reply/read sequencing checkpoints upload and reply stages so retries do not duplicate evidence and an update is marked read only after confirmed delivery.
Validation:
- `pytest -q tests/test_update_reply_attachments.py tests/test_update_reply_read_next.py tests/test_authored_outbox.py tests/test_background_issue_sync.py tests/test_notification_reply.py tests/test_gitea_notifications.py tests/test_mobile_composer_integration.py` — 92 passed
- `pytest -q` — 1074 passed
- Playwright render at 320 px and 390 px — no horizontal overflow; attachment and reply controls are 44 px high
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 #527
Adds screenshot selection and preview to unread-update replies, notification-scoped server-side uploads, and durable account-bound online/offline delivery. Reply/read sequencing checkpoints upload and reply stages so retries do not duplicate evidence and an update is marked read only after confirmed delivery.
Validation:
pytest -q tests/test_update_reply_attachments.py tests/test_update_reply_read_next.py tests/test_authored_outbox.py tests/test_background_issue_sync.py tests/test_notification_reply.py tests/test_gitea_notifications.py tests/test_mobile_composer_integration.py— 92 passedpytest -q— 1074 passed