feat(identity): rename user-visible identity to voculinux with one-time legacy import

The fork takes its own name everywhere a user can see it: binaries
(voculinux, voculinux-gui), desktop entry, autostart, tray, D-Bus
namespace (com.voculinux.Voculinux, no alias for the old name),
config/data/cache dirs, single-instance lock, IBus engine identity,
tray icons, resource prefixes, VOCULINUX_* environment names, and the
update-checker user agent. The internal Python module stays vocalinux
and the distribution metadata keeps the upstream URLs as provenance.

On first run a previous Vocalinux install's config.json, custom
dictionary, and portal restore token are copied once into the new
locations (new config always wins, no merge, no write-back); models
re-resolve through the pinned-checksum download path. An offline
naming-sweep test proves no old-name strings remain on user-visible
surfaces outside the allowlist.

Refs #18
This commit is contained in:
soubarnak
2026-11-06 01:29:39 +05:30
parent c565e6d946
commit ea7be5f111
251 changed files with 2449 additions and 1991 deletions
+2 -2
View File
@@ -266,7 +266,7 @@ class TestPairingDecode(unittest.TestCase):
class TestSandbox(unittest.TestCase):
def test_flatpak_fails_closed(self):
state = detect_sandbox({"FLATPAK_ID": "com.vocahq.Vocalinux"})
state = detect_sandbox({"FLATPAK_ID": "com.vocahq.Voculinux"})
self.assertTrue(state.blocked)
self.assertEqual(state.kind, "flatpak")
self.assertIn("Flatpak", state.hint)
@@ -704,7 +704,7 @@ class TestOrphanComposeDetect(unittest.TestCase):
manager.stop_async()
fake_thread.assert_called_once()
kwargs = fake_thread.call_args.kwargs
self.assertEqual(kwargs.get("name"), "vocalinux-gateway-stop")
self.assertEqual(kwargs.get("name"), "voculinux-gateway-stop")
self.assertEqual(kwargs.get("target").__func__, manager._stop_worker.__func__)
started.start.assert_called_once()