You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Bounded retry with exponential backoff for transient GitHub API failures (404, 5xx, 429, and 403 when the error message indicates rate limit or abuse), configurable via MAX_ATTEMPTS and CommitOptions (maxAttempts, logger, optional baseDelayMs / maxDelayMs); new retry module helpers isTransientError, classifyError, calculateDelay, and withRetry (issue #20).
Efficient multi-file commits via GitHub createTreeinline content for text files (blobs created server-side), createBlob only for binary files (NUL detected in the first 8 KiB), and chained createTree requests in chunks of TREE_ENTRY_CHUNK_SIZE (100) entries for very large change sets and payload limits (issue #19).
Changed
README Action example uses a tagged release (@v0.1.5) instead of @main for reproducibility; unreleased behavior remains documented in the same section.
Exported helpers for library use: isBinaryFile, getFileMode, and TREE_ENTRY_CHUNK_SIZE from commit.ts.
Binary blob creation is now sequential instead of concurrent to avoid secondary rate-limit bursts.
Fixed
withRetry could surface undefined when maxAttempts was non-positive or non-finite; values are now normalized to at least one attempt.
HTTP-like error detection for retries now requires status to be a number (avoids misclassifying odd error shapes).
Non-UTF-8 text fallback in createTree delegates to createBlob() so blob behavior stays consistent.
isBinaryFile false positives when readSync returns fewer bytes than requested (zero-filled buffer tail).
Silent data corruption for non-UTF-8 text files by validating with TextDecoder({ fatal: true }) and falling back to createBlob.