Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
45 changes: 45 additions & 0 deletions .changeset/27145-objectui-org-retired.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
'@objectstack/skills': patch
'@object-ui/console': patch
'@object-ui/auth': patch
'@object-ui/cli': patch
'@object-ui/collaboration': patch
'@object-ui/components': patch
'@object-ui/core': patch
'@object-ui/create-plugin': patch
'@object-ui/data-objectstack': patch
'@object-ui/fields': patch
'@object-ui/i18n': patch
'@object-ui/layout': patch
'@object-ui/mobile': patch
'@object-ui/permissions': patch
'@object-ui/plugin-calendar': patch
'@object-ui/plugin-charts': patch
'@object-ui/plugin-chatbot': patch
'@object-ui/plugin-dashboard': patch
'@object-ui/plugin-designer': patch
'@object-ui/plugin-detail': patch
'@object-ui/plugin-editor': patch
'@object-ui/plugin-form': patch
'@object-ui/plugin-gantt': patch
'@object-ui/plugin-grid': patch
'@object-ui/plugin-kanban': patch
'@object-ui/plugin-list': patch
'@object-ui/plugin-map': patch
'@object-ui/plugin-markdown': patch
'@object-ui/plugin-report': patch
'@object-ui/plugin-timeline': patch
'@object-ui/plugin-tree': patch
'@object-ui/plugin-view': patch
'@object-ui/providers': patch
'@object-ui/react': patch
'@object-ui/react-runtime': patch
'@object-ui/types': patch
---

docs(ui): package homepages and README links point at objectstack.ai/docs; objectui.org is retired

Clause-②: no
Metadata-protocol: none

The ObjectUI documentation site at objectui.org is retired. Its pages now live in the ObjectStack docs, mostly under [User Interface](https://objectstack.ai/docs/frontend). Every `@object-ui/*` package's `homepage` and README links now go to the matching page there, and the old objectui.org addresses answer with a permanent redirect to the same page. The `description` fields spell the product name "ObjectUI". The `@objectstack/skills` bundle's ObjectUI skill links to the same pages. Nothing else changes in what these packages ship.
2 changes: 1 addition & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,6 @@
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["@object-ui/example-*", "@object-ui/site", "@object-ui/runner", "@object-ui/test-support"],
"ignore": ["@object-ui/example-*", "@object-ui/runner", "@object-ui/test-support"],
"privatePackages": { "version": true, "tag": false }
}
31 changes: 18 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ jobs:
# spelled it, exactly as the two narrower `skills/` entries were.
- 'docs/**'
# The objectui tree, the root files the ui jobs build from, and the
# three roots outside ui/ that the ui jobs' gates and tests read
# four roots outside ui/ that the ui jobs' gates and tests read
# (objectstack#25712):
# - every root workflow, not ci.yml alone: Lint UI's pre-install
# import graph check scans all of `.github/workflows/` for ui
Expand All @@ -464,7 +464,14 @@ jobs:
# objectstack#26097. Lint UI's skill gates (skills-paths,
# skill-examples, skill-eval-tokens, doc-json,
# shell-escape-residue) and Test UI's skill readers find it
# through `ui/scripts/skill-bundle-root.mjs`.
# through `ui/scripts/skill-bundle-root.mjs`;
# - `content/docs/frontend/**`, the ObjectUI SDK pages since the
# objectui.org docs folded into this site. Lint UI's doc gates
# (doc-types, doc-snippets, doc-json, doc-fences, spec-symbols)
# and the Test UI tests that render a guide's example read them;
# - `content/docs/ui/pages.mdx`, where the per-element data
# binding section of the old data-source guide landed. Two Test
# UI pins read its fences and its block table (objectstack#27145).
ui:
- 'ui/**'
- 'pnpm-lock.yaml'
Expand All @@ -473,6 +480,8 @@ jobs:
- '.github/workflows/**'
- '.github/prompts/**'
- 'skills/objectui/**'
- 'content/docs/frontend/**'
- 'content/docs/ui/pages.mdx'
# turbo.json's `globalDependencies`: every build task hashes
# them, so they move what the ui jobs build, the SDUI manifest's
# regeneration included (#26137).
Expand Down Expand Up @@ -3981,8 +3990,10 @@ jobs:
# when the tree moved under `ui/` (it reads only this repository's
# `.github/workflows/`), and which objectstack#25712 deleted with the
# rest of `ui/.github/workflows/`. They judge what objectui ships
# — `ui/content/docs/**`, the skill bundle (`skills/objectui/**` at the
# repository root since objectstack#26097), the package READMEs and the
# — the ObjectUI SDK pages (`content/docs/frontend/**` since the
# objectui.org docs folded into this site), the skill bundle
# (`skills/objectui/**` at the repository root since objectstack#26097),
# the package READMEs and the
# documented component types — so the change most likely to trip them is
# a docs-only or skills-only PR, which the `filter` job's `ui` globs
# include.
Expand All @@ -3999,7 +4010,9 @@ jobs:
# job's own restore and save serve the build below). Retired since: the
# Action Ref Convention scan, which judged objectui's own workflows and
# went with them (objectstack#25712); a repository-wide action-ref
# convention needs a home that no `ui` path filter skips (sub-issue 4).
# convention needs a home that no `ui` path filter skips (sub-issue 4);
# and the Doc Example Id and Docs Route Eager Closure checks, which
# judged the retired objectui.org site and went with it.
- name: Control Byte Scan — Scan tracked text files for raw control bytes
if: ${{ !cancelled() }}
run: pnpm --dir ui run check:control-bytes
Expand Down Expand Up @@ -4035,10 +4048,6 @@ jobs:
pnpm --dir ui run check:doc-fences --self-test
pnpm --dir ui run check:doc-fences

- name: Doc Example Id Check — Check documented example ids against the catalog registry
if: ${{ !cancelled() }}
run: pnpm --dir ui run check:doc-example-ids

- name: Doc Component Type Check — Check documented component types against the registry
if: ${{ !cancelled() }}
run: pnpm --dir ui run check:doc-types
Expand All @@ -4059,10 +4068,6 @@ jobs:
if: ${{ !cancelled() }}
run: pnpm --dir ui run check:skill-eval-tokens

- name: Docs Route Eager Closure Check — Weigh the docs route eager closure
if: ${{ !cancelled() }}
run: pnpm --dir ui run check:docs-route-closure

- name: Install dependencies
id: install
if: ${{ !cancelled() }}
Expand Down
154 changes: 6 additions & 148 deletions .github/workflows/docs-deploy.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
name: Docs Deploy

# The ONE path by which this repository's two docs sites reach production,
# one job each:
# The ONE path by which this repository's docs site reaches production: the
# `deploy` job, Vercel project `objectstack`, Root Directory `apps/docs`.
#
# - `deploy`: the ObjectStack docs, Vercel project `objectstack`, Root
# Directory `apps/docs`;
# - `deploy-ui-site`: the Object UI docs at www.objectui.org, Vercel project
# `objectui`, Root Directory `ui/apps/site`. That site came here with the
# objectui tree; objectui's own copy of this workflow was deleted with the
# rest of `ui/.github/workflows/`, and nothing else deploys it. Its header
# below says what differs from `deploy`.
#
# Everything this header says applies to both jobs. The two are independent:
# one going red does not stop or cancel the other.
# The Object UI docs site (www.objectui.org) was retired when its pages folded
# into this one. Its old URLs answer host-scoped permanent
# redirects from `apps/docs/redirects.mjs` (`objectuiRedirects`) once the
# objectui.org domains point at this project; nothing deploys it any more.
#
# ## Why the build runs here and not on Vercel
#
Expand Down Expand Up @@ -217,139 +211,3 @@ jobs:
echo
echo "Deployment: ${{ steps.deploy.outputs.url || 'none (the run stopped before the deploy step finished)' }}"
} >> "$GITHUB_STEP_SUMMARY"

# ── The Object UI docs site (www.objectui.org) ─────────────────────────────
#
# The same build-here, upload-prebuilt path as `deploy` above, for the Vercel
# project `objectui`. `ui/apps/site/vercel.json` turns that project's Git
# deployments off (`git.deploymentEnabled: false`), so this job is the only
# thing that publishes the site, and every failure is red, as above.
#
# What differs from `deploy`, and why:
#
# - The project's Root Directory must read `ui/apps/site`. It read
# `apps/site` while the site lived in the objectui repository, and it is
# a dashboard setting that no file here can change. A step right after
# `vercel pull` reads the setting the pull wrote and goes red, naming the
# setting and its value, when it is anything else; without that step
# the old value fails later inside `vercel build`, as an error that does
# not say a dashboard setting is the cause.
# - `vercel build` gets no token. It runs `vercel.json`'s install and build
# commands, which run every workspace package's lifecycle scripts, and
# it does not call the Vercel API. Only the `pull` and `deploy` steps,
# which do, see VERCEL_TOKEN. objectui's own workflow made this choice
# for the same reason.
# - objectui's pinned-@objectstack restore and build steps are not ported.
# In this repository every @objectstack package the site imports is a
# workspace package, and `vercel.json`'s build command builds it from
# this tree through turbo's `^build`.
#
# The site's own install and build commands live in `ui/apps/site/vercel.json`
# and are unchanged from objectui: `pnpm i` installs this whole workspace from
# any member directory, and its build command's `cd ../..` lands in `ui/`,
# from which turbo resolves this repository's root and builds
# `@object-ui/site` with its full closure (65 tasks, all built, on the
# local run measured below).
deploy-ui-site:
name: Deploy objectui docs to Vercel (production)
runs-on: ubuntu-latest
# The build behind `vercel.json`'s command (the site, its @object-ui
# packages and their @objectstack closure: 65 turbo tasks, none cached)
# measured 596 s at `--concurrency=2` on a shared dev container; the runner
# adds install and upload.
timeout-minutes: 30
env:
# Identifiers, not credentials, as in `deploy`: the same team, and the
# project that serves www.objectui.org.
VERCEL_ORG_ID: team_06nvlGKZCkwhzdXmRdxeCNnB
VERCEL_PROJECT_ID: prj_v1rXIczaI7YGmXmseQCLFUFOFxTB
# The same pin as `deploy`'s VERCEL_CLI_VERSION; move the two together.
VERCEL_CLI_VERSION: '60.1.3'
# The value the project's Root Directory must have; see the header.
VERCEL_ROOT_DIRECTORY: ui/apps/site
steps:
- name: Refuse any ref but main
if: github.ref != 'refs/heads/main'
run: |
echo "::error::Docs Deploy publishes to PRODUCTION and runs only from main; this run is on ${GITHUB_REF}. Re-run it with 'main' selected in the branch picker."
exit 1

- name: Require the Vercel token
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
run: |
if [ -z "${VERCEL_TOKEN:-}" ]; then
echo "::error::The secret VERCEL_TOKEN is not visible to this run, so www.objectui.org cannot be deployed and production is NOT being updated. It is provided as an objectstack-ai ORGANIZATION secret: check that it still exists and that this repository is in its repository access list (org Settings -> Secrets and variables -> Actions). Then re-run this workflow."
exit 1
fi
echo "VERCEL_TOKEN is set."

- name: Checkout repository
uses: actions/checkout@v7

- name: Setup workspace
uses: ./.github/actions/setup-workspace

# From the repository root, for the reason `deploy`'s comment on this
# step gives: the CLI applies the Root Directory relative to its cwd.
- name: Pull the production project settings
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
run: npx --yes "vercel@${VERCEL_CLI_VERSION}" pull --yes --environment=production --token="$VERCEL_TOKEN"

- name: Require the project's Root Directory to be ui/apps/site
run: |
set -euo pipefail
actual="$(node -e "
const fs = require('node:fs');
const file = '.vercel/project.json';
if (!fs.existsSync(file)) { console.log('(vercel pull wrote no ' + file + ')'); process.exit(0); }
const settings = JSON.parse(fs.readFileSync(file, 'utf8')).settings || {};
console.log(settings.rootDirectory ?? '(not set)');
")"
if [ "$actual" != "$VERCEL_ROOT_DIRECTORY" ]; then
echo "::error::The Vercel project ${VERCEL_PROJECT_ID} has Root Directory '${actual}', and this repository builds the site from '${VERCEL_ROOT_DIRECTORY}'. Nothing is deployed. A maintainer sets it in the Vercel dashboard: project objectui -> Settings -> Build and Deployment -> Root Directory = ${VERCEL_ROOT_DIRECTORY}. Then re-run this workflow."
exit 1
fi
echo "Root Directory: ${actual}"

# No VERCEL_TOKEN here; see the header. TURBO_FORCE for the reason
# `deploy`'s build step gives.
- name: Build the site (vercel build --prod)
env:
TURBO_FORCE: 'true'
run: npx --yes "vercel@${VERCEL_CLI_VERSION}" build --prod

- name: Assert the build produced a deployable output
run: |
set -euo pipefail
if [ ! -f ui/apps/site/.next/BUILD_ID ]; then
echo "::error file=ui/apps/site/vercel.json::vercel build exited 0 but produced no ui/apps/site/.next/BUILD_ID - the site was not built, so nothing is deployed."
exit 1
fi
if [ ! -f .vercel/output/config.json ]; then
echo "::error::vercel build exited 0 but wrote no .vercel/output/config.json at the repository root - there is no prebuilt output to deploy."
exit 1
fi
echo "Built the objectui site: BUILD_ID=$(cat ui/apps/site/.next/BUILD_ID)"

- name: Deploy the prebuilt output to production
id: deploy
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
run: |
set -euo pipefail
url=$(npx --yes "vercel@${VERCEL_CLI_VERSION}" deploy --prebuilt --prod --token="$VERCEL_TOKEN")
echo "url=${url}" >> "$GITHUB_OUTPUT"
echo "Deployed: ${url}"

- name: Publish the run to the summary
if: always()
run: |
{
echo "### Docs Deploy (www.objectui.org) — ${{ job.status }}"
echo
echo "Commit: \`${{ github.sha }}\` (${{ github.event_name }})"
echo
echo "Deployment: ${{ steps.deploy.outputs.url || 'none (the run stopped before the deploy step finished)' }}"
} >> "$GITHUB_STEP_SUMMARY"
Loading
Loading