feat: add version & build metadata to Pylon support chat#41976
feat: add version & build metadata to Pylon support chat#41976salevine wants to merge 2 commits into
Conversation
Attach edition, commit SHA, release date, and deployment type as Pylon custom fields on new support issues so support can immediately see which release/build a customer is on. These are added to the existing setNewIssueCustomFields call in updatePylonChatIdentity. Values come from getAppsmithConfigs().appVersion (already in scope); no new imports, types, or call sites. Applies to both cloud and self-hosted wherever Pylon chat is available. Note: each new field slug (appsmith_edition, build_sha, build_date, deployment_type) must be created in the Pylon dashboard or Pylon silently drops the value. account_external_id is intentionally still omitted to preserve email_hash identity verification. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
WalkthroughThe ChangesPylon Chat Identity Fields
Estimated code review effort: 1 (Trivial) | ~3 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Previously version/build custom fields were attached only when chat was opened from the Help menu (the sole caller of updatePylonChatIdentity). Issues started from other Pylon entry points — debugger contextual menu, repo-limit modal, homepage search, onboarding help menu, datasource auth error — carried no metadata. Set the config-derived fields (appsmith_version, appsmith_edition, build_sha, build_date, deployment_type, license_id) when the Pylon SDK finishes loading, via a load-event handler on the injected script. Every chat-capable surface calls bootPylon before chat can be shown, so this covers all entry points. The fields are extracted into a shared setPylonNewIssueCustomFields() helper used by both bootPylon (boot, no instanceId) and updatePylonChatIdentity (Help path, with instanceId). instance_id is only available on the Help-menu path; a module-scoped cachedInstanceId ensures a later boot-time call still carries it, so the value cannot be dropped regardless of whether Pylon merges or replaces custom fields across calls. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
This PR has not seen activitiy for a while. It will be closed in 7 days unless further activity is detected. |
Description
Adds version and build metadata to the Pylon support-chat integration so support can immediately see which release/build a customer is on, on tickets created from every Pylon entry point.
Four new custom fields are attached to new Pylon issues:
appsmith_editionCE/EEappVersion.editionbuild_shaappVersion.shabuild_dateappVersion.releaseDatedeployment_typecloud/self-hostedcloudHostingValues come from
getAppsmithConfigs(). The pre-existingappsmith_version,instance_id, andlicense_idfields are unchanged.account_external_idremains intentionally omitted to preserve Pylonemail_hashidentity verification.How it works (covers all entry points)
The fields are set via a shared
setPylonNewIssueCustomFields()helper inapp/client/src/utils/bootPylon.ts, called from two places:load-event handler on the injected Pylon script (bootPylon). Every chat-capable surface callsbootPylonbefore chat can be shown, so this covers issues created from the debugger contextual menu, repo-limit modal, homepage search, onboarding help menu, and datasource auth error — which previously carried no metadata.updatePylonChatIdentity) — additionally includesinstance_id, which is only available there.instance_idis cached module-side so a later boot-time call still carries it — the value cannot be dropped regardless of whether Pylon merges or replaces custom fields across calls.These new field slugs must be created in the Pylon workspace (exact slugs, not labels) or Pylon silently drops the values — no client-side error:
appsmith_editionbuild_shabuild_datedeployment_type(
appsmith_version,instance_id,license_idalready exist.) The code is safe to merge independently but is inert until the slugs exist in Pylon.Type of change
How Has This Been Tested?
yarn run check-types→ pass (exit 0)yarn eslint src/utils/bootPylon.ts→ pass (exit 0)REACT_APP_PYLON_APP_IDset, authenticated user): open chat from multiple entry points and inspect thesetNewIssueCustomFieldspayload /chatwidget/issuerequest; confirmemail_hashidentity still verifies (no 401).Reviewer notes
bootPylon.ts). Both changed helpers (injectPylonScriptOnce,setPylonNewIssueCustomFields) are module-private; exported signatures are unchanged.license_idnow reaches Pylon at SDK boot for verified users (Pylon is already trusted withemail_hash); flagged as a data-minimization consideration, not a blocker.🤖 Generated with Claude Code
Automation
/ok-to-test tags="@tag.All"
Tip
🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/29098954808
Commit: a5c77c2
Cypress dashboard.
Tags:
@tag.AllSpec:
Fri, 10 Jul 2026 15:30:05 UTC