- EditPostView now edits Schedule / Visibility / Language / Mood / Tags; form
state lives in an @Observable model to prevent init-time @State resets that
were silently dropping selections. Visibility/Mood rows switched away from
Menu/confirmationDialog (which refused to propagate selection inside the
sheet) to an inline segmented Picker and a horizontal emoji strip + free
text field. Shared across Compose and Edit via PostOptionRows.
- Polls now accept lang/tags/mood/visibility (spec-compliant); ComposeView no
longer hides those rows when Poll is on. NewPostOptions.poll signature
extended with the new optional params.
- Compose warns before publishing a mention-only post that has no
[[org-social:URL][nick]] links in the body (would otherwise be invisible).
- Reactions can be removed: ReactionViewModel gains loadExistingReaction
(scans own feed on row appear so the toggled state survives relaunches) and
unreact (deletes the reaction post). Tapping the React button when already
reacted now removes the reaction.
- PostRowView strips raw `- [ ] Option` checkbox lines from poll body render
so the poll card is the sole UI for options.
- PostWriter.editPost learns MOOD; OrgSocialPost.mood promoted to var so
timeline/profile applyEdit can update it.