Adding `.env` to .gitignore on its own would have changed nothing, which is the whole point of doing this properly. .gitignore only applies to files git is not already tracking. This repository has tracked `.env` since the initial commit, so an ignore entry would have been inert: git would carry on tracking the file and would have committed a secret placed in it later, while the .gitignore looked like it was handling it. The untracking is what does the work, and the comment in .gitignore says so, because "the entry is there but the file is still tracked" is a silent failure that reads as protection. Worth being accurate about what was and was not a risk. The committed `.env` was checked before this change rather than assumed to be dangerous: 32 keys, all of them paths, engine names, model locations, thresholds and ports. No API key, no token, no password. An earlier report that this file held live secrets was wrong. `infra/umbra-node.json` likewise declares itself to carry only ids, names, labels and counts. So nothing needs purging from history and nothing needs rotating. What needed fixing was the gap that would have turned the next ordinary mistake - pasting an API key into .env - into a public commit. That is now closed, verified three ways: .env is absent from the index, `git check-ignore` confirms the rule matches, and `git add .env` is refused. .env is untracked with `git rm --cached`, so the working file is untouched and the application still reads it. Untracking rather than deleting was deliberate: this file is the machine's real configuration, and a fresh clone now needs .env.example instead. .env.example is new, generated from .env with all 32 keys and no values. A clone now knows what to set without anything machine-specific being shared. Verified: zero lines in it carry a value. On a branch rather than master, because untracking .env changes what a fresh clone gets and that is a workflow change rather than a pure fix. Merge or cherry-pick as suits. No behaviour change. The application reads .env at runtime through pydantic-settings in four places and none of them care whether git is watching the file.
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
# UmbraAudio configuration - TEMPLATE.
|
|
#
|
|
# Copy to .env and fill in. `.env` is gitignored and untracked; this file is the
|
|
# tracked one, so it carries every key and no values.
|
|
#
|
|
# Generated from .env with values removed. Nothing here is machine-specific, so
|
|
# every line is a placeholder: a path, an engine name, a threshold, or a port.
|
|
UMBRA_PROJECT_DIR=
|
|
UMBRA_DATA_DIR=
|
|
UMBRA_TTS__ENGINE=
|
|
UMBRA_TTS__DEVICE=
|
|
UMBRA_TTS__SAMPLE_RATE=
|
|
UMBRA_TTS__MAX_RETRIES=
|
|
UMBRA_TTS__RETRY_DELAY=
|
|
UMBRA_TTS__VOICEDESIGN_MODEL=
|
|
UMBRA_TTS__BASE_MODEL=
|
|
UMBRA_TTS__QWEN_TTS_URL=
|
|
UMBRA_TTS__QWEN_TTS_HELPER_URL=
|
|
UMBRA_LLM__PROVIDER=
|
|
UMBRA_LLM__LMSTUDIO_BASE_URL=
|
|
UMBRA_LLM__LMSTUDIO_MODEL=
|
|
UMBRA_LLM__OPENAI_MODEL=
|
|
UMBRA_LLM__TEMPERATURE=
|
|
UMBRA_LLM__MAX_TOKENS=
|
|
UMBRA_WEB__HOST=
|
|
UMBRA_WEB__PORT=
|
|
UMBRA_WEB__AUTO_OPEN=
|
|
UMBRA_QUALITY__MIN_MOS=
|
|
UMBRA_QUALITY__MIN_TEST_MOS=
|
|
UMBRA_QUALITY__MAX_WER=
|
|
UMBRA_QUALITY__MIN_SPEAKER_SIMILARITY=
|
|
UMBRA_QUALITY__MIN_TEST_SPEAKER_SIMILARITY=
|
|
UMBRA_QUALITY__MIN_ARTIFACT_SCORE=
|
|
UMBRA_AUDIO__TARGET_RMS_DB=
|
|
UMBRA_AUDIO__PEAK_LIMIT_DB=
|
|
UMBRA_AUDIO__NOISE_FLOOR_DB=
|
|
UMBRA_AUDIO__SILENCE_BETWEEN_UTTERANCES_MS=
|
|
UMBRA_AUDIO__SILENCE_BETWEEN_PARAGRAPHS_MS=
|
|
UMBRA_AUDIO__SILENCE_BETWEEN_CHAPTERS_MS=
|