Repository navigation
Publish the Upshift user docs on Mintlify - #6
Conversation
…ry exclusion still matches
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b8100898d6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d022544b84
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…directs and the French Delay cost
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c17892595e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| export const WEBSITE_URL = brand.websiteUrl; | ||
| export const PRIVACY_POLICY_URL = brand.privacyPolicyUrl; | ||
| export const TERMS_URL = brand.termsUrl; | ||
| export const DOCS_URL = 'https://docs.upshiftcloud.com'; |
There was a problem hiding this comment.
Point branded application links at the published docs host
DOCS_URL publishes and canonicalizes this site at https://docs.upshiftcloud.com, but the branding layer still derives the application's DOCUMENTATION_BASE_URL from brand.docsUrl, currently https://upshiftcloud.com/docs. Consequently, in-app Documentation and help links do not directly target the site introduced here and instead depend on an external redirect that this change neither defines nor verifies; update the shared brand URL or derive this constant from it so both surfaces use the same host.
Useful? React with 👍 / 👎.
| [/app\.twenty\.com/g, new URL(WEBSITE_URL).host], | ||
| [/inbound\.twenty\.com/g, 'inbound.yourcompany.com'], | ||
| [/twenty\.yourcompany\.com/g, EXAMPLE_SERVER_HOST], | ||
| [/\b[\w-]+\.twenty\.com/g, EXAMPLE_SERVER_HOST], |
There was a problem hiding this comment.
Preserve the managed subdomain example during rebranding
When the settings documentation contains a hosted workspace such as yourcompany.twenty.com, this catch-all replacement turns it into crm.yourcompany.com, which is also the custom-domain example. The generated Domain Settings and FAQ pages therefore present both domain options with the same hostname, obscuring that one is an Upshift-managed subdomain while the other requires the customer's DNS; rewrite hosted workspace domains to the correct Upshift suffix separately from generic server examples.
Useful? React with 👍 / 👎.
| export const buildLocaleRedirects = (appLanguages, appDefaultLanguage) => | ||
| appLanguages | ||
| .filter((code) => code !== appDefaultLanguage) |
There was a problem hiding this comment.
Redirect the application's default locale to English
The new redirect logic explicitly skips the application's default language (en), while getDocumentationUrl also omits /en/ for that locale and this site serves French at the root. Thus, after the application is pointed at the new site, every English in-app documentation URL resolves to the French page. This is fresh evidence beyond the earlier locale report: the added redirect implementation handles /fr/ and other prefixed locales but deliberately creates no mapping for the unprefixed English route.
Useful? React with 👍 / 👎.
What
Builds the Upshift user documentation for https://docs.upshiftcloud.com from Twenty's own docs, without touching
packages/twenty-docs.upshift/docs/rules.mjssays what is published and how it is rebranded.upshift/docs/import-docs.mjswrites the Mintlify site toupshift/docs/site/, which Mintlify deploys./en/. Only the Getting Started and User Guide tabs are published: no Developers or UI library pages, and none of Twenty's billing, legal, cloud migration or partner pages.Checks
node --test upshift/docs/test/*.test.mjs(31 tests)node upshift/docs/import-docs.mjs --checkfails when the site differs from what the import produces. The import itself fails when a rewritten sentence or an excluded section changes in Twenty's docs.validateandbroken-linkspass.docsjob running both checks. The release workflow no longer builds the image for docs-only changes. This PR still runs it once, because it edits that workflow.Preview
https://exceev-group.mintlify.app is built from this branch. After merge, Mintlify switches to
upshift-main.Follow-ups
docsUrlinbrand.jsonstill points toupshiftcloud.com/docs.