Repository navigation
Upshift rebrand, privacy patches and Docker release pipeline - #1
Merged
Merged
Conversation
hamza-lem
force-pushed
the
feat/upshift-rebrand
branch
2 times, most recently
from
October 5, 2026 23:00
2ad695c to
04af5ac
Compare
Everything lives in new files so merging Twenty releases stays conflict-free. The layer is applied to a fresh Twenty checkout at build time: - upshift/branding: logo sources, generated app icons, email and social assets, brand.json with name, URLs and legal links - upshift/scripts/apply-branding.mjs: overlays, exact-match source patches, translation hook, Yarn telemetry off, and an outbound census that fails the build if a shipped file references a Twenty-owned host - Privacy: sign-up telemetry, twenty-icons, twenty-companies enrichment, the help-center proxy and Twenty-hosted email images are removed in code - upshift/docker: compose file and env template for ghcr.io/exceev-technology/upshift - upshift-release workflow: builds each Twenty release (twenty/vX.Y.Z) for amd64 and arm64 and publishes vX.Y.Z and latest; on PRs it only builds - upshift-branding-check workflow: applies the layer on PRs to upshift-main - .github/README.md: Upshift README shown on GitHub instead of Twenty's
- Documentation links go to upshiftcloud.com/docs (shared constant, workflow form help, sample dashboard, developer guides in every language) - Hide the Community settings page and remove the Legal/DPA routes, both point to Twenty's own community and legal agreement - Drop the ChatGPT card that installs Twenty's ChatGPT app, rename the MCP server key to upshift and its registry id to com.upshiftcloud/upshift - Rebrand data-model sample values, the CLI app registration, error messages, AI helper and skill text, OpenAPI terms/contact/license, demo workflow URLs and email preview URLs - Translation hook now also rewrites twenty.com links and the example app folder name inside compiled catalogs - apply-branding.mjs prepares every change in memory and writes nothing when a patch point is missing; the census also covers visible Twenty links, ignores comment lines, and records why each allowed file is acceptable
This reverts commit 8b1f810.
This reverts commit 2817290.
- docker-compose: optional email settings were passed as empty strings and failed the server's config validation on first boot; keep them commented until SMTP is configured, like Twenty's compose - Default workspace logo must be an absolute URL, otherwise avatars prefix it with /files and the image 404s - Rebrand the front component renderer's developer error messages and include that package in the reference census
Follows the Codex review: CI built the image but never ran it. The amd64 build now starts with the compose file, checks the branding on the page, manifest and MCP server card, signs up, creates a workspace and signs in through the API. Telemetry and Twenty icons are enabled on purpose, Twenty-owned hosts resolve to a listener on the runner after a positive control, and the job fails if anything connects to it. The translation hook now asserts that message ids, placeholders and plural structure are unchanged and that SDK commands are untouched. The branding check runs it on the latest Twenty release with --check-catalogs. The compose healthcheck gets a 5 minute start period so first-boot migrations cannot mark the server unhealthy.
The page title check failed in CI with no detail. The page is now loaded as a browser navigation, the check reports status, content type, title and body start, and all branding, auth and privacy checks run before the test fails so one CI run shows the full picture.
Twenty renamed apollo.factory.ts to ApolloFactory.ts and moved the workflow agent prompt and the application description helpers. Patches can now list candidate paths (newest first) so the layer works on both the latest release and Twenty main, and files that only exist in newer Twenty code can be marked optional. The new agent trigger, alternative workspace setup and paused agent step prompts are rebranded too.
hamza-lem
force-pushed
the
feat/upshift-rebrand
branch
from
October 7, 2026 22:19
00a8b80 to
3b099a7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
The Upshift layer, applied to a fresh Twenty checkout at build time. No Twenty file is modified in git (131 new files, 0 changed), so merging new Twenty versions into
upshift-mainstays conflict-free.Branding (
upshift/branding)lingui compilein the Docker build and replaces "Twenty" with "Upshift" in all 34 languages without touching message idsbrand.jsonholds the name, website and legal URLsPrivacy: removed in code, so env vars or the admin panel cannot turn them back on
Docker and releases
upshift/docker: compose file and env template forghcr.io/exceev-technology/upshiftUpshift Releaseworkflow: every morning, builds the latesttwenty/vX.Y.Zrelease with the layer for amd64 and arm64 and publishesvX.Y.Zandlatest. On this PR it only builds, nothing is published.Upshift Branding Checkworkflow: applies the layer to every PR intoupshift-mainand to the latest Twenty releaseDocs:
.github/README.md(shown on GitHub instead of Twenty's README) andupshift/README.md(maintainer guide, sync process, what to do when a patch point moves).Verified locally
mainandtwenty/v2.44.0(114 overlays, 78 replacements in 38 files, census passed on about 18,000 shipped files)Not verified yet
Upshift Releaserun on this PR is that check.