0090: Rename to Short Leash, a clean break

On this page

Status: accepted

Context

The product shipped under an earlier name and is now Short Leash. A rename can carry the old name along (aliases, fallbacks, migrations that read the old folder), or drop it. Every alias would live in code, docs and support for as long as anyone runs an old copy, and the earlier name would keep turning up in files, logs and process lists. Short Leash is young enough, and its users few enough, to ask them to reinstall once.

Decision

  • Nothing of the earlier name is left. Not in code, identifiers, files, docs, the website, commit messages or the release feed. A search of the repository for it finds nothing.
  • The names:
    • the command leash, the daemon leashd, and the crates leash-core, leash-cli, leash-voice, leash-llm and leash-pair;
    • the app bundle dev.shortleash.app and the launchd job dev.shortleash.daemon;
    • the data folder Short Leash, in the account's local data folder (Application Support on macOS, %LOCALAPPDATA% on Windows);
    • the project files leash.toml and leash.local.toml, and environment variables LEASH_*;
    • the hosts shortleash.dev and downloads.shortleash.dev, and the one address shown, [email protected].
  • Values that carried the old name change too, so nothing written by an old copy is mistaken for Short Leash's: the database's application_id (now "ShLs", defaults::DB_APPLICATION_ID), the prefix hashed with the computer's ID for the license check (license::machine), and Typesense's local API key.
  • The updater key pair is kept. Installed copies accept only updates signed with the key they were built with, and the key carries no name, so a new pair would strand them. It stays in tauri.conf.json and the release secrets as before.
  • No upgrade in place. Short Leash doesn't read the earlier app's folder, launchd job or resolver file. People uninstall the old app with its own Remove (which undoes its privileged setup, invariant 4), then install Short Leash fresh.
  • The runtimes repository moved to the ShortLeash organization. Its builds are attested under its new identity. What it built before the move is attested under the old one, so verify-runtimes-attestation.sh also accepts the identity in the RUNTIMES_LEGACY_IDENTITY variable (set in this repository's Actions variables, never written in code) until each of those builds is rebuilt; then the variable goes.

Consequences

  • One name in every place a person looks: the menu bar, ps, the files in their project, the docs.
  • Everyone reinstalls once, and sets up their sites, services and settings again.
  • No compatibility code to carry or test, and no old folder or job for support to ask about.
  • Until the runtimes builds made before the move are rebuilt, a release depends on RUNTIMES_LEGACY_IDENTITY being set.
  • The website moved to its own repository at the same time (0091).