## What
`website-i18n-pull.yaml` passed inline `source` + `translation:
'…/%locale%.po'` to the Crowdin action *on top of* the config file.
After #22257 migrated the website to short-code catalogs
(`ar.po`/`es.po`, and `crowdin-website.yml` → `%two_letters_code%`),
that inline `%locale%` resolves to **full-code** filenames
(`ar-SA.po`/`es-ES.po`) that no longer exist in the repo — so the pull
never updates the real catalogs.
## Fix
Drop the inline `source`/`translation` so the step is **config-only**,
driven by `.github/crowdin-website.yml` (`%two_letters_code%`) —
matching the front/app pull (`i18n-pull.yaml`), which is config-only and
works.
## Also (ops, not in this diff)
The pull doesn't run against `main` — its first step is `git checkout -B
i18n-website origin/i18n-website`, so it operates on the long-lived
`i18n-website` branch (same pattern as `i18n` for front and `i18n-docs`
for docs). That branch was still at the **pre-#22257** layout (full-code
`.po`, `%locale%` config, old 3-locale list), so it was reset to `main`
to carry the new short-code structure. Once this PR merges, a pull run
will land translations into the correct `ar.po`/`es.po`/… catalogs.
# Introduction
Getting rid of the fine grained PAT used to dispatch to internal
repositories.
Repo dispatch requires the contents write permissions which is too wide
for such use
Refactored all senders and target to pass through a workflow dispatch
instead
Creating a centralize app that forges a token with actions: write only
provided permissions to mitigate any token exfiltrations
## Summary
Follow-up to the Cloudflare/OpenNext migration (#20741). Now that the
legacy `twenty-website` package was already removed in #20270, the
`-new` suffix on the marketing site package is no longer meaningful.
## What changes
- **Directory rename**: `git mv packages/twenty-website-new
packages/twenty-website` (1213 files moved, no content change)
- **Package + nx config**: `package.json` and `project.json` name fields
updated, `sourceRoot` repointed
- **Source refs**: `load-local-articles.ts` and
`load-local-release-notes.ts` had a hardcoded `'twenty-website-new'`
segment in their monorepo-root fallback path;
`app/[locale]/releases/page.tsx` had display strings showing where to
add content
- **External refs**: root `package.json` workspaces, root `CLAUDE.md` /
`README.md`, `twenty-sdk` + `create-twenty-app` READMEs,
`.vscode/twenty.code-workspace`, `.cursor/rules/changelog-process.mdc`,
Crowdin config + the three `website-i18n-*` CI workflows +
`ci-website.yaml`
- **Docker cleanup**:
`packages/twenty-docker/twenty-website-new/Dockerfile` deleted; the two
Makefile targets (`prod-website-new-build` / `prod-website-new-run`)
that referenced it removed — EKS deploy was retired in the Cloudflare
migration
- **`yarn.lock`** regenerated against the new workspace path
## What's deliberately not in this PR
The dev hostname `website-new.twenty-main.com` in `wrangler.jsonc` stays
for now. Migrating it to `website.twenty-main.com` needs coordinated DNS
deletion (current CNAME points at the legacy Docusaurus NLB and serves
503s) and removal of the matching legacy `website` Helm chart in
`twenty-infra`. Flagged as a separate cleanup.
Companion infra PR: https://github.com/twentyhq/twenty-infra/pull/682
(workflow paths + Terraform ECR + docs)
## Test plan
- [x] `yarn install --immutable` resolves clean against the new path
- [x] `npx nx typecheck twenty-website` passes
- [x] `npx nx lint twenty-website` passes
- [ ] CI on this PR confirms the same on a fresh checkout
- [ ] After merge: trigger `Deploy Website` workflow against
`environment=dev` to confirm the renamed working-directory deploys
correctly