Best-effort current git branch of dir, for labelling --resume rows.
None when dir isn’t a git work tree, git is absent, or HEAD is
detached. Kept out of the pure reducer — callers invoke it in the impure
startup path and stamp the result onto the conversation.
Show the searchable resume picker and return the chosen conversation, or
None if the user cancelled. now is injected so the relative-time labels
are testable and match the caller’s clock.