An absent concurrency is the default, not the minimum; the invalid-paths
sentence is about the working tree; a log that gave up on a held file does
not wait again before a cool-down; the cache keeps eight clients and hashes
the token as it is; the CLI marks a run as canceled when cancellation kept
a path recovery from happening; tests no longer depend on the wall clock.
Refs #151
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
- A target folder that is a drive root ('C:\', '/') rejected every
repository: the root keeps its separator when trimmed, and a second one
was appended. The root now ends in exactly one.
- The Windows-invalid character set was asked of the running platform, so
the Windows rules answered differently elsewhere. It is written out.
- SyncSummary.WasCanceled reported the token at the end of the run, so a
cancellation that arrived after the last repository finished marked a
complete run as canceled (and the CLI exited 1). It is now true exactly
when a repository was canceled.
- A concurrency read from accounts.json was used as stored. Account now
keeps it between 1 and 64 however it is set. The engine's handling of a
value below one has a test.
- ProcessRunner wrote the child's input outside the block that ends the
child, and a child that exited before reading its input failed the call
with an I/O error. Every way out now ends a child that is still alive,
and such a child answers with its exit code and error output.
- The gateway cache kept up to eight clients, keyed by the token, and
emptied itself when full. GatewayCache keeps four, keyed by a hash of
the token, and drops only the one unused the longest.
- The activity log: timestamps carry their offset from UTC; the clock is
read once per entry, so the timestamp and the daily file agree at
midnight; daily files older than 30 days are removed; a write that finds
the file held by another process (the app and the CLI share it) waits
briefly and tries again instead of dropping the entry.
- The invalid-paths message ended with "Nothing was checked out.", which
is wrong for a repository that already has a working tree. It now ends
with "No files were written.", which holds for a clone and a pull.
docs/CLI.md named the wrong log folder; corrected with the above.
Closes#151
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>