Remove all git submodules; develop the forks as standalone repos - #1010
Conversation
The emulate and mcporter forks are consumed only as published npm packages (@executor-js/emulate, @executor-js/mcporter) — nothing imports vendor/ at runtime, and the submodules created persistent friction: empty in every worktree, a pnpm/node>=24 toolchain unlike executor's bun, stale-dist rebuilds, and publish/pointer drift. Remove vendor/emulate and vendor/mcporter and point the guidance at the standalone fork repos: agents develop emulate on its own main with full publish/deploy autonomy, and this repo just bumps the npm dependency. - Remove vendor/emulate, vendor/mcporter, vendor/README.md; .gitmodules keeps only integrationsdotsh - bootstrap.ts: drop the dead --forks submodule-init path - Rewrite the emulate skill (new "Changing or deploying an emulator" section), AGENTS.md, RUNNING.md, README.md, and the e2e mcp surface comment
…dules now integrationsdotsh is a downstream product that consumes executor's published SDK, not something executor imports. There was no gitlink — just a phantom .gitmodules entry plus a few "ignore this dir" guards. Develop it in its own repo (github.com/RhysSullivan/integrationsdotsh) like the forks. - Remove the integrationsdotsh stanza from .gitmodules (its last entry, so the file is deleted — executor has no submodules now) - Drop the now-stale integrationsdotsh ignores in .oxlintrc.jsonc, .oxfmtrc.json, and scripts/migrate-schema-class.ts
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | fca6a9c | Jun 13 2026, 08:53 PM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | fca6a9c | Commit Preview URL Branch Preview URL |
Jun 13 2026, 08:53 PM |
Greptile SummaryThis PR removes the three git submodules (
Confidence Score: 5/5Safe to merge — no runtime code was changed; all modifications are documentation, configuration cleanup, and removal of dead bootstrap logic. Every changed file is either documentation, a formatter/linter config, or a dev-only script. The submodule removal is complete and consistent: .gitmodules deleted, gitlinks removed, vendor/README.md deleted, all prose updated to point at the standalone repos and npm packages. The --forks bootstrap path is cleanly excised with no dangling references. Nothing in the runtime import graph was touched. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Fresh clone or worktree] --> B[bun run bootstrap]
B --> C[bun install + prepare builds]
B --> D[playwright install chromium]
C --> E[Ready to develop]
D --> E
subgraph after [After - Standalone Repos]
M[github.com/UsefulSoftwareCo/emulate] -->|publish version| J[npm: @executor-js/emulate]
N[github.com/UsefulSoftwareCo/mcporter] -->|publish version| L[npm: @executor-js/mcporter]
J -->|bump dep| K[executor repo]
L -->|bump dep| K
end
subgraph before [Before - Submodules]
F[vendor/emulate submodule] -->|submodule update + build| G[local dist]
H[vendor/mcporter submodule] -->|submodule update + build| G
end
Reviews (1): Last reviewed commit: "Drop the integrationsdotsh submodule too..." | Re-trigger Greptile |
Cloudflare previewTorn down — the PR is closed. |
Why
The
vendor/emulateandvendor/mcportersubmodules created persistent friction for anyone in a fresh clone or worktree: they are empty untilgit submodule update --init, they are a pnpm + node>=24 toolchain unlike this repo's bun, editing them means a stale-distrebuild step, and shipping a change meant publish-then-bump-pointer drift — work routinely piled up uncommitted in the submodule tree while deploys were built straight from it. Nothing in the repo imports fromvendor/at runtime; the forks are already consumed as the published@executor-js/emulateand@executor-js/mcporternpm packages. So the submodules earned their keep only as a dev surface, and a poor one.integrationsdotshis a downstream product that consumes this repo's published SDK — it was never imported here at all (a phantom.gitmodulesentry with no gitlink).What
vendor/emulate,vendor/mcporter, andintegrationsdotshsubmodules..gitmodulesis deleted — the repo tracks zero submodules.scripts/bootstrap.ts: drop the dead--forkssubmodule-init path.emulateskill gains a "Changing or deploying an emulator" section, with matching notes inAGENTS.mdandRUNNING.md. Fix the stalevendor/mentions inREADME.mdand the e2e MCP-surface comment; deletevendor/README.md.Verification
bun run format:checkandbun run lint— green.vendor/at runtime, so a fresh clone or worktree no longer needs any submodule init or build step. No runtime code changed.