Make the coming rename easy without changing any behaviour. Every user-visible identity string that is currently hardcoded in more than one place (application identity, system resource prefixes, autostart and tray identifiers, outbound user-agent) is driven from the existing single identity constants, or is added to a checked inventory of surfaces that only the rename ticket may touch. The application behaves, installs, and presents exactly as before; what changes is that the rename becomes a small set of deliberate flips instead of a scavenger hunt.
Acceptance criteria
No user-visible behaviour, name, path, or string changes anywhere; the full test, lint, and type gates pass.
Each previously duplicated user-visible identity surface resolves through one shared definition, verified by tests asserting the current values.
An offline inventory test enumerates the remaining rename surfaces (packaging metadata, desktop entry, site copy) so the rename ticket has a complete, checked list to flip.
The retained-internal-name surfaces (Python module name, upstream URLs) are recorded in the inventory as deliberately not renaming.
Blocked by
None (can start immediately).
## Parent
[Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux](https://git.bongbetic.com/xavierk/voculinux/issues/16)
## What to build
Make the coming rename easy without changing any behaviour. Every user-visible identity string that is currently hardcoded in more than one place (application identity, system resource prefixes, autostart and tray identifiers, outbound user-agent) is driven from the existing single identity constants, or is added to a checked inventory of surfaces that only the rename ticket may touch. The application behaves, installs, and presents exactly as before; what changes is that the rename becomes a small set of deliberate flips instead of a scavenger hunt.
## Acceptance criteria
- [ ] No user-visible behaviour, name, path, or string changes anywhere; the full test, lint, and type gates pass.
- [ ] Each previously duplicated user-visible identity surface resolves through one shared definition, verified by tests asserting the current values.
- [ ] An offline inventory test enumerates the remaining rename surfaces (packaging metadata, desktop entry, site copy) so the rename ticket has a complete, checked list to flip.
- [ ] The retained-internal-name surfaces (Python module name, upstream URLs) are recorded in the inventory as deliberately not renaming.
## Blocked by
None (can start immediately).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent
Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux
What to build
Make the coming rename easy without changing any behaviour. Every user-visible identity string that is currently hardcoded in more than one place (application identity, system resource prefixes, autostart and tray identifiers, outbound user-agent) is driven from the existing single identity constants, or is added to a checked inventory of surfaces that only the rename ticket may touch. The application behaves, installs, and presents exactly as before; what changes is that the rename becomes a small set of deliberate flips instead of a scavenger hunt.
Acceptance criteria
Blocked by
None (can start immediately).
Merged in integration/spec16
1dd3986383pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK