- Add pending/failed message status to track send state
- Implement optimistic UI: show message immediately, update on server response
- Add retry functionality for failed messages via tap-to-retry
- Change send button from icon to text "发送" for clarity
- Add MessageSendService with temp ID generation to prevent collisions
feat(notification): add JPush notification deduplication and clear on tap
- Deduplicate notificationArrived events from dual JPush/vendor channels
- Clear all notifications on tap (QQ-style behavior)
feat(post): add client-side idempotency key for post creation
- Generate client_request_id per publish intent to prevent duplicates on retry
- Pass idempotency key through to postService and voteService