Move 26 bookmark/save/library/batch/blacklist methods and _batch_dest state into gui/post_actions.py. Rewire 8 signal connections and update popout_controller signal targets. Extract is_batch_message and is_in_library as pure functions for Phase 2 tests. main_window.py: 1935 -> 1400 lines. behavior change: none