claude_code
f1a894ab79
test(git-sync): add reviewer-requested coverage across engine, server, client
...
Implements the test cases called out in the PR #119 review threads
(code-review, test-strategy report, red-team) — TESTS ONLY, no production
code changes.
packages/git-sync (vitest):
- lib converter/markdown gaps: pageBreak data-loss (it.fails repro),
subpages lossy round-trip, nested/fenced callouts, ol->taskList bridge,
column.width number<->string drift, empty details.
- engine units: parentFolderFile, planReconciliation swap/chained move,
buildVaultLayout last-resort-by-id, firstDivergence, applyPushActions /
applyPullActions failure isolation.
- real temp-git integration: diffNameStatus -z rename+add/modify
alignment, copy-line behavior, per-invocation committer identity (no
leak into repo/global config).
- ENFORCED type-level GitSyncClient contract via vitest typecheck over a
*.test-d.ts file (tsconfig.vitest.json; build tsconfig untouched).
apps/server (jest):
- orchestrator: delete-cap neutralization + fail-safe, Redis lock / mutex
skip ladder + release-on-throw, merge guard, pull/push order, remote
template substitution, poll lifecycle.
- page-change listener: loop-guard, debounce coalescing, id resolution,
error swallowing.
- vault registry, controller authz (trigger + status), env
validation/getters, page.service git-sync provenance stamping,
persistence precedence (agent > git-sync > user) + no boundary snapshot,
space.service audit-delta, space.repo jsonb-merge, converter-gate corpus
extension (mention/math/details/marks).
apps/client (vitest + testing-library):
- history-item git-sync badge: render gating + non-clickable.
- edit-space-form toggle: initial state, optimistic payload, rollback on
error, disabled states.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-26 21:08:28 +03:00
claude code agent 227
2918517e10
feat(git-sync): vendor IO engine (pull/push/git/settings) with GitSyncClient seam (Phase A.3)
...
Vendor the IO engine from docmost-sync into packages/git-sync/src/engine:
- git.ts (VaultGit, execFile shell-out — verbatim)
- pull.ts (readExisting, computePullActions, applyPullActions)
- push.ts (classifyRenameMoves, computePushActions, applyPushActions, runPush)
- settings.ts adapted (pure parseSettings + Settings type; no process.env binding
— the server builds Settings from EnvironmentService later), config-errors.ts.
CLI main()/import.meta entrypoints dropped (server drives in-process).
Client seam: new engine/client.types.ts defines GitSyncClient; pull.ts/push.ts
now use Pick<GitSyncClient, ...> instead of the non-vendored DocmostClient. Engine
logic byte-identical except a zod4-compat fix in config-errors (zod4 dropped the
issue.received==='undefined' signal; match /received undefined/ on the message).
Ported the engine unit tests (compute/apply pull+push actions, classify-rename-
moves, run-push, settings, config-errors) incl. real-git temp-repo tests: 431
pass / 3 expected-fail (was 314/3). REST/CLI-coupled upstream tests skipped
(noted). CJS build clean. No apps/server wiring yet (next step).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-26 21:08:28 +03:00
claude code agent 227
c0dbc97fe2
feat(git-sync): vendor pure converter + engine into @docmost/git-sync (Phase A.1)
...
First step of docs/git-sync-plan.md. New workspace package @docmost/git-sync
vendoring the PURE parts from docmost-sync (HEAD b03eb35):
- lib: markdown-converter, markdown-document, canonicalize, docmost-schema,
node-ops, diff, and an extracted markdown-to-prosemirror (only the pure
marked->HTML->generateJSON path from upstream collaboration.ts; no websocket).
- engine (pure, no IO): reconcile, layout, sanitize, stabilize, loop-guard.
Ported the upstream pure-module + round-trip corpus tests (vitest): 314 pass,
3 expected upstream known-limitation fails. tsc clean. No server wiring yet.
docmost-schema inlines getStyleProperty (as packages/mcp does — @tiptap/core
3.20.4 doesn't export it). IO engine (pull/push/git/settings) deferred to later
Phase A/B steps; the editor-ext idempotency gate (plan §13.1) is the next step.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-26 21:08:28 +03:00