chore: remove sandbox app and standalone-only infra - #24
Conversation
Prepares official-modules to live as a subrepository inside the open-mercato repo, where the parent app becomes the module host. - Remove apps/sandbox (full app host), sync-sandbox.sh, root docker-compose.yml, and all sandbox passthrough npm scripts. - Remove verdaccio local-registry prototyping: scripts/registry/, publish-preview.sh, and registry:*/publish:preview scripts. - Remove platform-sync (channel pinning is moot inside the parent): platform-sync scripts, config/, run-tests.mjs, related npm scripts. - Rewrite ci.yml: drop platform-sync steps; collapse the build/generate/rebuild sequence to build:packages with a TODO marking where the parent repo's codegen needs wiring in. - Re-add the platform dependency closure (previously supplied transitively by the sandbox) as root devDependencies so typecheck stays self-sufficient; pin mikro-orm to ^6.5.9 to match the module peer requirement. Verified: build:packages, check:dep-versions, i18n:check-sync:packages, typecheck, and test all pass standalone. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the sandbox-based Getting Started and the removed Platform Sync section with the git-submodule workflow (external/official-modules/ in open-mercato, activated via yarn official-modules add). Point validation and contribution steps at the canonical 'Developing Official Modules' doc, add a standalone package-dev path, and drop platform:sync mentions from Package Conventions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The scaffolder gained an interactive agentic-setup wizard that has no TTY guard, so in CI it blocks on stdin and the step exits with code 13. Pass --agents none to skip the wizard and keep the integration test headless. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
|
Align the scaffold command with develop (--preset classic --skip-agentic-setup --no-init-git) so the integration test stays headless and the ci.yml merge with develop is trivial. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolve conflicts from the sandbox removal: - ci.yml: keep the non-interactive create-mercato-app scaffold (matches develop) - apps/sandbox/package.json, config/platform-channel-policy.json: keep deleted - yarn.lock: regenerated from develop's lock, sandbox workspace pruned - package.json: the sandbox app used to hoist the @open-mercato runtime deps that the published packages' shipped sources are typechecked against. With the sandbox gone, declare that closure at the monorepo root so `yarn typecheck`/ `build:packages` still resolve: @open-mercato/{ai-assistant,cache,core,ui} and their third-party deps (react 19 types, @tanstack/react-table, @uiw/react-md-editor, resend, language-subtag-registry, @mikro-orm/migrations, next, awilix, ioredis, bullmq, bcryptjs, knex, etc.). Drop the stale 0.4.9 @open-mercato pins and MikroORM v6 (core now bundles v7). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oval Revert the experimental root dependency additions and align dependencies / devDependencies exactly with develop. The published @open-mercato/* packages map their `exports.types` to source (./src/*.ts), so `yarn typecheck` compiles their full source tree, which needs the whole app dependency closure that the sandbox app used to provide. Deciding how to satisfy that after removing the sandbox (declare the closure at root vs. resolve @open-mercato to built dist in tsconfig vs. ship .d.ts upstream) is a maintainer call — left open here. Install and build:packages pass; typecheck is the open item (see PR discussion). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI investigation & merge-conflict resolutionTwo separate problems were blocking this PR. The first is fixed; the second is a design decision left to maintainers. 1. ✅ Failing check —
|
Why
Prepares
official-modulesto live as a subrepository inside the open-mercato repo, where the parent app becomes the module host. With that model, the sandbox app (and the standalone-only tooling that existed only to serve it) is dead weight.What changed
Removed — sandbox host (Tier 1)
apps/sandbox/(full app),scripts/sync-sandbox.sh, rootdocker-compose.yml(postgres/redis/meili were sandbox-runtime), and the sandbox passthrough scripts (dev,start,generate,initialize,reinstall,mercato,build:sandbox,sync).Removed — verdaccio local registry (Tier 2)
scripts/registry/,scripts/publish-preview.sh(published tolocalhost:4873, not npm), verdaccio service, andregistry:*/publish:previewscripts.Removed — platform-sync (Tier 3)
platform-syncscripts,config/, orphanedrun-tests.mjs, andplatform:sync*/test:root/test:scriptsscripts.Rewrote
ci.yml(Tier 4)PLATFORM_CHANNEL.build → generate → rebuildsequence (it relied on the sandbox to hostmercato generate) to a singlebuild:packages, with aTODO(subrepo)marking where the parent repo's codegen needs wiring in.integration-testjob'syarn generateis untouched — it runs inside the scaffolded standalone app.typecheckThe sandbox transitively dragged the platform dependency closure (
@mikro-orm/*,zod,awilix,bullmq,@open-mercato/cache|events|search, …) into rootnode_modules, which is what lettscresolve types inside@open-mercato/shared. To keep this repo self-sufficient, that closure is re-added as rootdevDependencies— pinning mikro-orm to^6.5.9to match the module peer requirement (the sandbox's v7 mismatched).Verification
build:packages✅ ·check:dep-versions✅ ·i18n:check-sync:packages✅ ·typecheck✅ ·test✅ (162 passed). Lockfile regenerated.Follow-ups (not in this PR)
TODO(subrepo)in ci.yml — wire the parent repo'smercato generateonce exposed.README.md/CONTRIBUTING.md/AGENTS.mdstill describe the sandbox dev loop; rewrite once the parent-repo workflow is settled.🤖 Generated with Claude Code