Repository navigation
ods v0.3.4
Fixed
- A stale
.gitlock wedged a repo out of sync indefinitely. The git-quiesce
gate treated any*.lockunder.gitas an in-progress operation, so an
abandoned lock — e.g. the 0-byte.git/objects/maintenance.locka crashed
git maintenanceleaves at boot — deferred the repo every cycle, forever. A
lock now gates only while it is fresh (stale_lock_seconds, default 300 s); an
older one is treated as the crash artifact it is. This is the underlying cause
of the claude-config deferral below. - A recovered project stayed "needs attention" forever. Two defects in the
defer path:update_defer_countonly ever incrementeddeferred[id](never
reset on a clean cycle, so the count was a lifetime tally, not the "consecutive
cycles" its escalation claimed), andreconcilenever pruneddeferred, so a
counter for a vanished project never cleared. A run now resets the counter for
every project that synced cleanly and prunes orphaneddeferredkeys;
compare/maxDelete(user settings) are left intact. Deferrals now log their
gate reason (onedrive-busy/git-active) so the escalation is diagnosable.
Real trigger: a crashedgit maintenanceleft a stale 0-byte
.git/objects/maintenance.lock, which the git-quiesce gate reads as "git
active" every cycle —Tools\claude-confighad deferred 235 times. - Panic on any path containing non-ASCII characters.
paths::starts_with_ci
sliced a&strusinglen()— a BYTE count — so whenever the prefix length
landed inside a multi-byte character, the slice panicked with "byte index N is
not a char boundary".ods add-watchinto a Hebrew-named OneDrive folder hit
it every time (the failure depended on the byte length of the local path, so it
looked intermittent), and the GUI's add discovery root reached the same code
with any non-ASCII folder. Prefixes are now compared as byte slices, which
leaves ASCII behaviour unchanged.
Full Changelog: v0.3.3...v0.3.4