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
+7 -7
View File
@@ -35,10 +35,10 @@ def sdist(
extra: tuple[str, ...] = (),
) -> Path:
"""Write a small real sdist with independently controllable metadata/members."""
path = directory / f"vocalinux-{version}.tar.gz"
info = metadata if metadata is not None else f"Name: vocalinux\nVersion: {version}\n"
path = directory / f"voculinux-{version}.tar.gz"
info = metadata if metadata is not None else f"Name: voculinux\nVersion: {version}\n"
with tarfile.open(path, "w:gz") as archive:
for name, text in [(f"vocalinux-{version}/PKG-INFO", info)] + [
for name, text in [(f"voculinux-{version}/PKG-INFO", info)] + [
(name, "payload") for name in extra
]:
member = tarfile.TarInfo(name)
@@ -208,11 +208,11 @@ def test_release_verification_cannot_be_silently_skipped(
"metadata,extra",
[
("Name: other\nVersion: 0.18.4\n", ()),
("Name: vocalinux\nVersion: 0.18.3\n", ()),
("Name: vocalinux\nVersion: 0.18.4\nVersion: 0.18.3\n", ()),
("Name: voculinux\nVersion: 0.18.3\n", ()),
("Name: voculinux\nVersion: 0.18.4\nVersion: 0.18.3\n", ()),
(None, ("other-root/file",)),
(None, ("vocalinux-0.18.4/../unsafe",)),
(None, ("vocalinux-0.18.4/PKG-INFO",)),
(None, ("voculinux-0.18.4/../unsafe",)),
(None, ("voculinux-0.18.4/PKG-INFO",)),
],
)
def test_wrong_or_ambiguous_archive_metadata_is_rejected(