Skip to content

chore: remove apps/cloud (split to objectstack-ai/cloud)#1257

Merged
os-zhuang merged 4 commits into
mainfrom
chore/remove-duplicate-apps-cloud
May 21, 2026
Merged

chore: remove apps/cloud (split to objectstack-ai/cloud)#1257
os-zhuang merged 4 commits into
mainfrom
chore/remove-duplicate-apps-cloud

Conversation

@os-zhuang
Copy link
Copy Markdown
Contributor

Removes the duplicate apps/cloud from the public framework repo now that the cloud control plane lives canonically in the private split repo objectstack-ai/cloud and serves cloud.objectos.app from there.

What's removed

  • apps/cloud/ (32 files, ~2.7K LOC)
  • dev:cloud script in root package.json
  • Cloud target / job / tag triggers in .github/workflows/deploy.yml (workflow is now objectos-only)

What's preserved

  • packages/services/service-cloud — still imported by packages/runtime and packages/cli. Decoupling tracked separately (framework-decouple-service-cloud todo).

Verification

  • pnpm install clean (lockfile reduces by 118 lines, only apps/cloud-exclusive deps drop).
  • cloud.objectos.app/.well-known/openid-configuration now served by the split repo (verified earlier in this session).
  • No code (TS/TSX/JSON) imports @objectstack/cloud.
  • Only docs / README still reference apps/cloud informationally; those can be updated in follow-ups.

The cloud control plane (cloud.objectos.app) is now built and deployed
from the private split repo objectstack-ai/cloud as part of the public
core / private cloud split (ADR planning ref: §1 of session plan.md).

Changes:
- Delete apps/cloud entirely (32 files, ~2.7K LOC removed).
- Drop "dev:cloud" script from root package.json.
- Slim .github/workflows/deploy.yml to objectos-only:
  - Workflow renamed to 'Deploy ObjectOS to Cloudflare Containers'.
  - Removed cloud job + plan-target input + deploy-cloud-* / deploy-all-* tag triggers.
  - Cloud deploy now lives in objectstack-ai/cloud's own workflow.

What remains coupled (separate follow-up):
- packages/services/service-cloud still re-exported by framework
  packages/runtime + packages/cli. Decoupling is tracked separately
  (todo id: framework-decouple-service-cloud).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 21, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment May 21, 2026 10:28am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation ci/cd dependencies Pull requests that update a dependency file tests tooling size/xl labels May 21, 2026
hotlong and others added 2 commits May 21, 2026 17:59
Pre-existing test drift from ADR-0006 project→environment rename:
production code reads sys_environment / sys_environment_member with
environment_id columns, but four tests still expected the old names.

This commit only renames in tests; no production code changes.

Fixes 4 failing tests in:
- packages/runtime/src/http-dispatcher.test.ts (RBAC membership lookup)
- packages/runtime/src/cloud/platform-sso.test.ts (backfill scanning)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The cloud/runtime boot mode dispatch dynamically imports
@objectstack/service-cloud. Previously a missing/broken install would
fail with an opaque ERR_MODULE_NOT_FOUND stack trace.

Wrap the import in try/catch and surface a clear, actionable error that
tells the user to either install the package or switch to bootMode=
'standalone'. This is the only remaining hard dependency surface
between the CLI and service-cloud — the other framework packages
(runtime, rest, adapters/hono) already use structural / 'any'-typed
interfaces.

Decoupling note: physically moving service-cloud out of the framework
workspace into the private cloud repo is a separate design decision
(would break cli's monorepo build of cloud-aware boot modes). Tracked
as a follow-up; not in scope here.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…i/cloud repo)

The control-plane service-cloud package now lives in the private cloud
repo (objectstack-ai/cloud) alongside apps/cloud. Framework consumers
already use only the structural `KernelManager` / `EnvironmentDriverRegistry`
interfaces (any-typed) or dynamic `await import('@objectstack/service-cloud')`
with try/catch fallbacks. No real imports remained — only doc comments.

Changes:
- packages/services/service-cloud/ deleted (~10k LOC, 56 files).
- packages/cli/package.json: drop "@objectstack/service-cloud":"workspace:*"
  dependency. CLI's serve.ts already handles missing module gracefully
  via dynamic import + try/catch (commit e69da73).
- packages/cli/src/types/service-cloud.d.ts retained as ambient stub
  so TS still compiles the optional dynamic import path.
- pnpm-lock.yaml refreshed (-89 lines).

Verified: `pnpm turbo run test` → 108/108 tasks green.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@os-zhuang os-zhuang merged commit 2a1fc86 into main May 21, 2026
13 checks passed
@os-zhuang os-zhuang deleted the chore/remove-duplicate-apps-cloud branch May 21, 2026 12:15
os-zhuang added a commit that referenced this pull request May 21, 2026
The tenant runtime serving *.objectos.app now lives in the private
cloud repo (objectstack-ai/cloud/apps/objectos) alongside the control
plane. Production traffic continues uninterrupted — the new repo
deploys to the same Cloudflare Worker name 'objectos' under the same
CF account, atomically overwriting the framework-deployed image.

What this commit removes:
- apps/objectos/ — full tenant runtime (Dockerfile, server templates,
  cloudflare worker, tests, scripts)
- .github/workflows/deploy.yml — final remaining job was objectos;
  framework no longer deploys to Cloudflare
- Root package.json scripts: pnpm dev / pnpm start / pnpm doctor
  (aliases of pnpm --filter @objectstack/objectos …)
- README.md + CLAUDE.md mentions of @objectstack/objectos
- 711 lines of stale objectos entries in pnpm-lock.yaml

What stays:
- All packages/ (spec, core, runtime, drivers, plugins, services
  except service-cloud which was removed in #1257)
- apps/{studio,docs,account,console} reference apps
- examples/ (app-todo, app-crm, plugin-bi)
- Doc comments mentioning objectos historically (no code coupling)

Verification:
- pnpm install → clean (57 workspace projects, down from 58)
- turbo build → 54/54 tasks green
- turbo test → 106/106 tasks green
- CLI smoke → 'os --help' works (no service-cloud / no objectos)
- Production cut-over verified: cloud-repo deploy-objectos workflow
  pushed worker version 6e385b34 to CF at 2026-05-21 12:49 UTC,
  *.objectos.app/api/v1/health continues to return 200.

Rollback: tag pre-cloud-split → @64875c01 (pre split).

Co-authored-by: Jack Zhuang <50353452+hotlong@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
os-zhuang added a commit that referenced this pull request May 21, 2026
The package was removed from this repo in #1257 (cloud split) but its
entry in .changeset/config.json's `fixed` list was left behind. Every
Release workflow run since then has failed with:

  ValidationError: The package or glob expression
  "@objectstack/service-cloud" specified in the `fixed` option does
  not match any package in the project.

Removing the entry unblocks 'changesets/action', which will then update
PR #1256 (chore: version packages) to bump remaining published packages
4.0.5 -> 4.1.0 (minor, driven by the @objectstack/cli changeset added
in #1260). Merging that PR triggers npm publish.

Co-authored-by: Jack Zhuang <50353452+hotlong@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation size/xl tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants