Conversation
Member
chee
commented
May 23, 2026
- defaults to subduction
- adds support for different folder strategies
- defautls to a vfs shape
- adds .pushworkignore support
- does less
Agent-Logs-Url: https://github.com/inkandswitch/pushwork/sessions/eabfbc7c-d4c1-4802-b282-d6de702ae606 Co-authored-by: chee <178266+chee@users.noreply.github.com>
There was a problem hiding this comment.
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 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"; |
| return; | ||
| } | ||
| } | ||
| dlog("waitForSync timed out url=%s after %dms", handle.url, maxMs); |
Comment on lines
+67
to
+68
| await fs.mkdir(path.dirname(target), { recursive: true }); | ||
| await fs.writeFile(target, bytes); |
Copilot stopped work on behalf of
chee due to an error
May 23, 2026 08:01
Agent-Logs-Url: https://github.com/inkandswitch/pushwork/sessions/fdef5da3-44da-4c91-9a98-fa252a5d10e9 Co-authored-by: chee <178266+chee@users.noreply.github.com>
Add CI workflow to run tests
chee
commented
May 24, 2026
|
uh oh. this looks way nicer 👀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.