mirror of
https://github.com/firstsun-dev/git-files-sync.git
synced 2026-07-22 17:20:30 +00:00
Records feat-014 (GitHub GraphQL batch push/delete, commit114a575) and feat-015 (avoid stale remote-tree read after push, commit7676325) as done. Also archived feat-011/012/013 and other completed narratives out of progress.md (had grown past its own 80-line cleanup threshold) into archive/2026-07.md, and trimmed feature_list.json evidence strings under 300 chars — harness self-audit was 96/100, now 100/100.
3.1 KiB
3.1 KiB
Progress Archive — 2026-07
One archive file per calendar month. Each entry is one line: feature id/name +
commit hash. Debugging narrative and design discussion belong in the commit
message, not here. Start a new archive/YYYY-MM.md file when the month rolls
over — don't let a single archive file grow without bound either.
- feat-001: Project Setup verified clean (npm install/lint/build/test) (commit
28f4f8e) - feat-002: Settings UX bundle implemented — conflict modal resize + tabs (#42), connection status badge (#41), local ignore patterns (#40); 254 tests pass, lint/build clean (commit
28f4f8e, branch claude/settings-ux-improvements-260713) - feat-005: Folder picker for root path / vault folder settings (#48) (commit
c107979) - feat-003: Symlinked directories no longer break pull discovery (#33) — root cause: local scan recursed into a directory symlink as if it were a real tree, producing bogus remote .gitignore 404s and a permanently-stuck "remote only" status (commit
4c8896b) - feat-006: Tree-SHA-based refresh (#36) — status check now compares a locally-computed git blob SHA against each tree entry's SHA instead of a per-file getFile network request; diff content fetched on demand via new getBlob(sha,path) (commit
2ed5a43) - feat-007: Clear error when requestUrl() itself rejects with an HTML body (#31) — some Obsidian versions eagerly JSON-parse inside requestUrl(), so a login/proxy HTML page rejected the whole call with a raw SyntaxError bypassing the existing parseJson() HTML-detection wrapper (commit
a867217) - feat-008: "What's new" modal after a version bump (#39) — hand-curated src/changelog.ts (separate from auto-generated CHANGELOG.md) with a
notableflag per entry, numeric compareVersions(), WhatsNewModal shown once per upgrade (commit4eebebc) - All six of the above (feat-002/003/005/006/007/008) consolidated onto branch claude/fix-directory-symlink-pull-260713 → PR #51 (open, not yet merged) to keep the PR count down per user request; PRs #49/#50/#52/#53 closed/auto-resolved as superseded
- feat-011: perf(push): batch-commit push-all + SHA-based diffing — new GitServiceInterface.pushBatch, sync-manager classifies files via local git blob SHA vs. one pre-fetched tree instead of per-file getFile (commit
c28e0ec) - feat-012: perf(delete): batch-commit remote-only file deletion — new GitServiceInterface.deleteBatch, mirrors pushBatch (commit
d8e3663) - Issue #78: remote-repo root path picker now suggests from the remote tree, delete-remote-only-file silent failures fixed (3 root causes: unencoded path 404s, EISDIR on folder/remote-record collisions, wrong vaultFolder-prefixed path passed to deleteFile), SyncStatusView test coverage added (commits
896d77b,563a28emerge,fa42fea,f1420f0) - feat(ui): persistent connection status badge in the global status bar, plus a theme-contrast follow-up fix (commits
83499c9,12cce64) - feat-013: perf(push): parallelize blob creation within a batch commit — BaseGitService.mapWithConcurrency + BLOB_CREATE_CONCURRENCY=8 for GitHub/Gitea's pushBatch (GitLab unaffected, already single-request) (commit
c7ae0f6)