# Migration notes The user installer keeps application files in `~/.local/share/jarvis-qvac`, the service in `~/.config/systemd/user/jarvisd.service`, and the generated QVAC config in `~/.config/jarvis/qvac.config.json`. Memory, voice references, audit logs, and generated media remain under their existing Jarvis data directories. Upgrades stop a running `jarvisd.service`, uninstall the previous GNOME extension, and replace `~/.local/share/jarvis-qvac` from a staging directory so leftover files from older versions cannot mix with the new tree. Failed staging directories next to the install prefix are removed first. Existing config and data under `~/.config/jarvis`, `~/.local/share/jarvis`, and the model cache are preserved. If the service was running, the installer restarts it after the replacement; `--enable` also enables the unit. The GNOME HUD files are always copied into `~/.local/share/gnome-shell/extensions/jarvis@qvac.local`, then the installer asks the running Shell to reload and enable the extension so the panel and overlay come back without a logout. Each of those steps is appended to `~/.local/state/jarvis/install.log` (or `$XDG_STATE_HOME/jarvis/install.log`) and to the system log as tag `jarvis-install`. Run `systemctl --user daemon-reload` only when you install the service file by hand. The uninstall command requires `--yes` and preserves data. Add `--purge-data` only when the user explicitly wants Jarvis-owned memory, cache, and generated media removed. ## Shared settings and configurable speech The GNOME preferences and standalone Control Center now share one window. Daemon controls use `config.json`; only appearance and shortcuts use GSettings. Opening preferences no longer copies GSettings defaults over JSON values. Legacy snake_case settings and explicit GSettings customizations migrate when you press Apply. See [settings](settings.md) for keys, application timing, model compatibility, and controls that were removed because they had no working backend.