Summary
The launchers currently hardcode the config file location to Config\Config.ini relative to the repo root. For users who want their config outside the repo directory (e.g. shared network location, separate backup, or multi-machine setup), there is no supported way to relocate it.
Proposed design
A two-level bootstrap:
- A pointer file at a fixed, known location (e.g.
Config\config.ptr) containing a single line: the absolute path to the user's real Config.ini.
- Launchers read the pointer first; if absent, fall back to the current default (
Config\Config.ini). Existing behaviour is unchanged for users who do not need relocation.
Config\config.ptr (gitignored, optional)
└──> C:\Users\You\Documents\SyncReceipts\Config.ini
config.ptr would be gitignored alongside Config.ini. Initialize-SyncReceipts.ps1 would optionally prompt for a custom config path and create config.ptr if the user wants it elsewhere.
Alternatives considered
- Environment variable (
SYNC_RECEIPTS_CONFIG): conventional for CLI tools but requires the user to manage env vars -- friction for non-technical users.
- Command-line param on launchers: explicit but requires editing shortcuts.
- Current design: works for the common case.
RECEIPTS_ROOT and WORKBOOKS_ROOT already allow data files to live anywhere; only Config.ini itself is fixed to the repo.
Scope
Launchers\*.bat -- read pointer file before falling back to default
Scripts\Initialize-SyncReceipts.ps1 -- optionally prompt for custom config path and write config.ptr
.gitignore -- add Config\config.ptr
Config\ -- add config.ptr.example or document in README
- ADR -- decision warrants a record (pointer file vs env var)
Notes
- This is additive and non-breaking; default behaviour is unchanged
- Low priority: the current design covers the common case well. Data files already support relocation via
RECEIPTS_ROOT/WORKBOOKS_ROOT. Config relocation is only needed for advanced multi-machine or security-isolation scenarios.
Summary
The launchers currently hardcode the config file location to
Config\Config.inirelative to the repo root. For users who want their config outside the repo directory (e.g. shared network location, separate backup, or multi-machine setup), there is no supported way to relocate it.Proposed design
A two-level bootstrap:
Config\config.ptr) containing a single line: the absolute path to the user's realConfig.ini.Config\Config.ini). Existing behaviour is unchanged for users who do not need relocation.config.ptrwould be gitignored alongsideConfig.ini.Initialize-SyncReceipts.ps1would optionally prompt for a custom config path and createconfig.ptrif the user wants it elsewhere.Alternatives considered
SYNC_RECEIPTS_CONFIG): conventional for CLI tools but requires the user to manage env vars -- friction for non-technical users.RECEIPTS_ROOTandWORKBOOKS_ROOTalready allow data files to live anywhere; onlyConfig.iniitself is fixed to the repo.Scope
Launchers\*.bat-- read pointer file before falling back to defaultScripts\Initialize-SyncReceipts.ps1-- optionally prompt for custom config path and writeconfig.ptr.gitignore-- addConfig\config.ptrConfig\-- addconfig.ptr.exampleor document in READMENotes
RECEIPTS_ROOT/WORKBOOKS_ROOT. Config relocation is only needed for advanced multi-machine or security-isolation scenarios.