Two new test files exercise the layered config resolver and the JSON
config-file loader:
src/config.test.ts 25 cases:
- resolveConfig precedence (CLI > file > default) per field
- seconds-to-ms conversion at the resolver boundary
- verbose precedence across all four cells
- defaultConfigPath: XDG honored, HOME fallback, empty-as-unset,
throws CliError when both are missing
src/configFile.test.ts 11 cases:
- valid file -> overrides, with undefined for unspecified keys
- missing explicit path throws
- malformed JSON / non-object root throws with file path
- unknown key / wrong type / non-positive number all throw with
the offending key named
- default path missing -> null (silent default)
Runs via 'bun test' (or 'bun run test', now wired in package.json).
All 25 tests pass on the current codebase.
- src/move.ts entry point with CLI parsing, --help, --version
- src/cli.ts: parseCliArgs, printHelp, ParsedCliArgs, CliError, VERSION
- src/config.ts: Config type, DEFAULT_CONFIG, resolveConfig
- src/keeper.ts: synthetic-activity sweep + idle-watch loop
- package.json bin entry + shebang for 'bun link' global install
- install.sh: contributor bootstrap (will be repurposed; see
DISTRIBUTION-PLAN.md for the end-user installer design)
- DISTRIBUTION-PLAN.md captures the tabled end-user distribution work