perf(submit): diff-based incremental submission optimization #32
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Optimizes
tokscale submitby implementing diff-based incremental uploads. Instead of sending the entire contribution history on every submit, the CLI now:This significantly reduces payload size and server processing time for repeat submissions.
Changes
New API Endpoint
GET /api/submit/checksum- Returns checksums for user's existing daily breakdown data{ checksums: { "2024-12-01": { "claude": "abc123", "opencode": "def456" }, ... } }CLI Changes
hashSourceBreakdown()- djb2 hash function for deterministic source data hashingfetchServerChecksums()- fetches existing checksums from servercomputeLocalChecksums()- computes hashes for local contribution datacomputeDiff()- filters to only changed (date, source) pairssubmit()- now uses diff-based flow by default--fullflag - bypasses diff optimization (for troubleshooting)Helper Function
hashSourceBreakdown()topackages/frontend/src/lib/db/helpers.tsNew Submit Flow
CLI Output Examples
When changes detected:
When already up to date:
Flags
--fullEdge Cases Handled
--claude,--opencode, etc.): Only diffs for specified sourcesTesting