Fixes from reviewing the 2.23.0 release branch, plus a second pass over those fixes. - Moved recurring exceptions keep their colour when they change calendar, instead of losing their colour key. - An external request (widget, edit intent, share) now resets the form it replaces. Forms reset only after their slide-out ends, so they never go blank on the way out. - Import, duplicate and picker state survive rotation, and recreating the activity no longer replays the launch intent. - A shared .ics attachment opens the import, even when the email app adds a subject line as text. Plain text still opens a new event. - Stale import state no longer reopens the previous import's form. - The theme and dynamic colour are cached so a cold start draws the right colours from the first frame. - Write-permission prompts (tap to edit, delete, duplicate, selection actions, week drafts) keep their pending action across rotation, and tap to edit falls back to details when the prompt is refused. - Zone and date sources share one app-scoped receiver instead of one per collector. - Scrolling back over an empty agenda past grows the window by at most a year per step, not exponentially. - RRULE part names and the RRULE: prefix are matched case-insensitively on import. - Search closes when another overlay takes over. Closes #306, #178, #387, #367 Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de> Reviewed-on: https://codeberg.org/jlmakiola/calendula/pulls/428