Skip to content

pushwork@2.0.0#27

Open
chee wants to merge 23 commits into
mainfrom
two
Open

pushwork@2.0.0#27
chee wants to merge 23 commits into
mainfrom
two

Conversation

@chee
Copy link
Copy Markdown
Member

@chee chee commented May 23, 2026

  • defaults to subduction
  • adds support for different folder strategies
    • defautls to a vfs shape
  • adds .pushworkignore support
  • does less

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is a major “pushwork@2.0.0” refactor that switches the default backend to Subduction, introduces pluggable “shape” encodings for folder strategies (defaulting to a VFS-style shape), adds .pushworkignore support, and migrates the test runner from Jest + shell scripts to Vitest-driven integration tests.

Changes:

  • Replace the old core/snapshot/types/utils architecture with a new config/repo/shapes/fs-tree implementation.
  • Add ignore loading (.pushworkignore) and new “shape” encoders/decoders (vfs, patchwork-folder, and custom shapes).
  • Migrate testing from Jest/scripts to Vitest with new black-box CLI integration tests.

Reviewed changes

Copilot reviewed 80 out of 82 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
vitest.config.ts Adds Vitest configuration (globals, node env, setup file, timeouts).
tsconfig.json Removes Jest types from TS config.
test/unit/utils.test.ts Removes legacy unit tests for old fs utilities.
test/unit/sync-timing.test.ts Removes legacy unit tests around timing analysis.
test/unit/sync-convergence.test.ts Removes legacy convergence tests tied to old snapshot/change-detection design.
test/unit/subduction-config.test.ts Removes legacy tests for old config defaults/flags.
test/unit/repo-factory.test.ts Removes legacy repo-factory subprocess tests.
test/unit/network-sync-sub.test.ts Removes legacy waitForSync tests for old network-sync helper.
test/unit/enhanced-mime-detection.test.ts Removes legacy enhanced MIME detection tests (old utils).
test/unit/deletion-behavior.test.ts Removes legacy deletion behavior tests built around old snapshot model.
test/unit/artifact-nuke-reinsert.test.ts Removes legacy sync-engine artifact regression test.
test/setup.ts Adds Vitest setup mocking for ESM-only deps (chalk/ora).
test/run-tests.sh Removes custom bash test runner.
test/jest.setup.ts Removes Jest setup mocking file.
test/integration/sync-flow.test.ts Removes legacy integration test suite (old config/core).
test/integration/sync-deletion.test.ts Removes legacy deletion integration tests tied to old snapshot/core.
test/integration/sub-flag.test.ts Removes legacy --sub integration tests (replaced by new backend semantics).
test/integration/README.md Removes legacy integration-test documentation for scripts/Jest-based runner.
test/integration/manual-sync-test.sh Removes legacy manual debug script.
test/integration/local.test.ts Adds black-box integration tests for offline/local-only commands.
test/integration/init-sync.test.ts Removes legacy init+sync integration tests.
test/integration/full-integration-test.sh Removes legacy full integration bash script.
test/integration/exclude-patterns.test.ts Removes legacy exclude-pattern integration tests (old listDirectory utils).
test/integration/deletion-sync-test.sh Removes legacy deletion sync bash script.
test/integration/deletion-sync-test-simple.sh Removes legacy simplified deletion bash script.
test/integration/debug-nested.sh Removes legacy nested-directory debug script.
test/integration/debug-concurrent-nested.sh Removes legacy concurrent nested-directory debug script.
test/integration/debug-both-nested.sh Removes legacy “both nested” debug script.
test/integration/conflict-resolution-test.sh Removes legacy conflict-resolution bash test.
test/integration/clone-test.sh Removes legacy clone bash test.
src/version.ts Adds version reporting utilities for dependencies/node.
src/utils/trace.ts Removes legacy tracing helper.
src/utils/text-diff.ts Removes legacy text diff/splice helpers.
src/utils/string-similarity.ts Removes legacy string similarity helper.
src/utils/repo-factory.ts Removes legacy repo construction/dynamic-import workaround module.
src/utils/mime-types.ts Removes legacy enhanced MIME type detection module.
src/utils/index.ts Removes legacy utils barrel export.
src/utils/fs.ts Removes legacy fs helper module (listDirectory/read/write/etc).
src/utils/directory.ts Removes legacy directory navigation helper.
src/utils/content.ts Removes legacy content hash/equality helper.
src/types/snapshot.ts Removes legacy snapshot type definitions.
src/types/index.ts Removes legacy types barrel export.
src/types/documents.ts Removes legacy document/type definitions (file/dir entries, enums).
src/types/config.ts Removes legacy config/types/options definitions.
src/snarf.ts Adds snarf storage/encode/decode helpers for local change capture.
src/shapes/vfs.ts Adds VFS shape encoder/decoder (flat key→URL mapping).
src/shapes/types.ts Adds shared shape and VFS tree types/utilities.
src/shapes/patchwork-folder.ts Adds patchwork “folder doc” shape encoder/decoder.
src/shapes/index.ts Adds shape resolution + exports for built-in/custom shapes.
src/shapes/file.ts Adds file entry encoding/decoding helpers (bytes/content/pinning/artifacts).
src/shapes/custom.ts Adds dynamic loading for user-provided custom shapes.
src/repo.ts Adds repo opening logic for legacy/subduction backends + head-stability sync wait.
src/log.ts Adds debug-based logging wrapper.
src/index.ts Replaces broad exports with a curated public API surface.
src/ignore.ts Adds .pushworkignore loading + always-ignore rules.
src/fs-tree.ts Adds filesystem walking and (currently non-atomic) file writing helper.
src/core/snapshot.ts Removes old SnapshotManager implementation.
src/core/move-detection.ts Removes old MoveDetector implementation.
src/core/index.ts Removes old core barrel export.
src/core/config.ts Removes old ConfigManager implementation.
src/config.ts Adds new config format (v4) and read/write helpers.
scripts/roundtrip-test.sh Removes legacy roundtrip bash script.
README.md Removes legacy README (features/commands/tests/profiling documentation).
pnpm-workspace.yaml Adds pnpm workspace config (allowBuilds).
package.json Bumps version to 2.0.0-preview.5, migrates Jest→Vitest, updates Automerge deps, adds debug, updates packaging files list.
babel.config.js Removes Babel config (previously for Jest transforms).
ARCHITECTURE-ACCORDING-TO-CLAUDE.md Removes generated architecture doc for the old codebase.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/index.ts
Comment on lines +14 to +19
} from "./pushwork.js";
export type { HeadsEntry } from "./pushwork.js";
export type { Snarf, SnarfEntry } from "./snarf.js";
export type { Backend, PushworkConfig } from "./config.js";
export { CONFIG_VERSION } from "./config.js";
export type { Shape, VfsNode, UnixFileEntry } from "./shapes/index.js";
Comment thread src/repo.ts
return;
}
}
dlog("waitForSync timed out url=%s after %dms", handle.url, maxMs);
Comment thread src/fs-tree.ts
Comment on lines +67 to +68
await fs.mkdir(path.dirname(target), { recursive: true });
await fs.writeFile(target, bytes);
Comment thread .github/workflows/ci.yml Outdated
@Chickensoupwithrice
Copy link
Copy Markdown

uh oh.
i should probably close my PRs 😅

this looks way nicer 👀
gonna take it for a spin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants