Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .changeset/8225-drop-cloud-namespace-reexport.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
'@object-ui/types': minor
---

**Breaking for `@object-ui/types` consumers:** the `Cloud` type namespace is
REMOVED from the package's root entry. `export type * as Cloud from
'@objectstack/spec/cloud'` is gone, so `import type { Cloud } from
'@object-ui/types'` and every `Cloud.X` member access now fail to compile
(TS2305 / TS2694). No alias and no deprecation window are left — the maintainer's
standing posture is immediate removal (objectui#8225; step 2 of 3 of the
objectstack#16325 ruling, option B: the cloud control-plane contracts leave
`@objectstack/spec`, and the spec's `./cloud` subpath is deleted upstream once
cloud and objectui stop importing it).

The rest of the namespace family — `Data`, `UI`, `System`, `AI`, `API`,
`Automation`, `Shared`, `QA`, `Kernel`, `Contracts`, `Integration`, `Studio`,
`Identity`, `Security` (14 re-exports) — is unchanged; the gap in that block is
deliberate and is marked in place.

Measured in this repository at `289d14687`: zero consumers of the `Cloud`
namespace across `packages/**` and `apps/**` (a `Cloud.` member-access census
plus a named-import census over 4106 tracked ts/tsx files, both 0, with a
firing control: the same PCRE pattern hits the consumed sibling namespaces
`UI.` and `Data.`), and zero imports of the spec's cloud subpath outside
that one line — the three cloud-shaped types objectui does use
(`PackageTranslation`, `resolvePackageL10n`'s result, `PackageManifest`) were
already declared inline in `app-shell` rather than imported. No runtime
behaviour changes; the emitted JavaScript is identical.
4 changes: 3 additions & 1 deletion packages/types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1117,7 +1117,9 @@ export type * as UI from './spec-ui-namespace.js';
export type * as System from '@objectstack/spec/system';
export type * as AI from '@objectstack/spec/ai';
export type * as API from '@objectstack/spec/api';
export type * as Cloud from '@objectstack/spec/cloud';
// `Cloud` is deliberately absent from this family since objectui#8225: the
// cloud control-plane contracts leave the spec's public surface (objectstack#16325,
// option B), so nothing here re-exports that subpath and no consumer reads it.
export type * as Automation from '@objectstack/spec/automation';
export type * as Shared from '@objectstack/spec/shared';
export type * as QA from '@objectstack/spec/qa';
Expand Down
11 changes: 8 additions & 3 deletions scripts/__tests__/vite-objectstack-spec-dist.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,14 @@ describe('objectui#4854: OBJECTSTACK_SPEC_DIST is subpath-aware', () => {
const injection = inject(installedSpecDir)!;
const specifiers = collectSpecSpecifiers();

// Anti-vacuity: the sweep found the measured surface (17 distinct
// specifiers, `/ui` and `/data` the heaviest), not an empty scan.
expect(specifiers.size).toBeGreaterThanOrEqual(17);
// Anti-vacuity: the sweep found the measured surface, not an empty scan.
// 16 distinct specifiers since objectui#8225 removed the repository's only
// `@objectstack/spec/cloud` literal (the `Cloud` namespace re-export in
// `packages/types/src/index.ts`; step 2 of the objectstack#16325 chain that
// deletes the `/cloud` subpath upstream) — 17 before that, `/ui` and `/data`
// the heaviest. A floor, so a specifier gained does not move it; one lost
// does, and the commit that loses it re-pins it here and says why.
expect(specifiers.size).toBeGreaterThanOrEqual(16);
expect([...specifiers]).toContain(`${SPEC_PACKAGE_NAME}/ui`);
expect([...specifiers]).toContain(SPEC_PACKAGE_NAME);

Expand Down
Loading