Merge master into the Windows port

Three of the four collisions were the same one: master moved the directory
rule into paths.py while this branch was adding a Windows case to the copy in
config.py and the second copy in ggml.py. The case moves to paths.py with the
rest of it, and the directories test moves to tests/test_paths.py where master
put its neighbours.

The fourth is MeetingRecorder, which now starts a process per capture device.
Windows keeps its two lines there: no console window for either process, and
a stop that terminates rather than sending a signal the platform does not have.
This commit is contained in:
2026-08-16 10:14:37 +03:00
26 changed files with 1691 additions and 220 deletions
+10
View File
@@ -82,6 +82,16 @@ class Table(unittest.TestCase):
self.assertEqual([name for name, spec in hotkey.SHORTCUTS.items()
if spec.fallback], ["toggle"])
def test_the_fallback_a_mac_gets_is_not_one_macos_already_holds(self):
"""Ctrl+Space switches the input source there and Cmd+Space is
Spotlight, so the table's own fallback is Linux's and only Linux's."""
with mock.patch.object(hotkey.sys, "platform", "darwin"):
self.assertEqual(hotkey.default_combo("toggle"), "Ctrl+Option+Space")
self.assertEqual(hotkey.default_combo("cancel"), "")
with mock.patch.object(hotkey.sys, "platform", "linux"):
self.assertEqual(hotkey.default_combo("toggle"), "Ctrl+Space")
self.assertEqual(hotkey.default_combo("cancel"), "")
class ModsMatch(unittest.TestCase):
"""The combination has to be exact, or Ctrl+Space fires on Ctrl+Shift+Space."""