         window?.tab.toolTip = tabToolTip
     }
 }
+
+private extension MainWindowController.TitleAttribute {
+    static var initial: MainWindowController.TitleAttribute {
+        .init(title: "", community: "", isConnected: false, detectedKusa: false)
+    }
+
+    func copyWith(isConnected: Bool? = nil, detectedKusa: Bool? = nil) -> MainWindowController.TitleAttribute {
+        return MainWindowController.TitleAttribute(
+            title: title,
+            community: community,
+            isConnected: isConnected ?? self.isConnected,
+            detectedKusa: detectedKusa ?? self.detectedKusa
+        )
+    }
+}

}

final class MainWindowController: NSWindowController {
    // MARK: - Properties
    private weak var delegate: MainWindowControllerDelegate?

    private var kusaTimer: Timer?

    // MARK: - NSWindowController Overrides


extension MainWindowController: MainViewControllerDelegate {
    func mainViewControllerDidPrepareLive(_ mainViewController: MainViewController, title: String, community: String) {
        titleAttribute = TitleAttribute(
            title: title,
            community: community,
            isConnected: true,
            detectedKusa: false)
        updateLiveTitle(titleAttribute)
    }

    func mainViewControllerDidDisconnect(_ mainViewController: MainViewController, title: String, community: String) {
        invalidateKusaTimer()
        titleAttribute = titleAttribute.copyWith(
            isConnected: false,
            detectedKusa: false)
        updateLiveTitle(titleAttribute)
    }

    func mainViewControllerSpeechEnabledChanged(_ mainViewController: MainViewController, isEnabled: Bool) {
