refactor: move privacy consent from ChatBox to Login/SignUp#1239
refactor: move privacy consent from ChatBox to Login/SignUp#12394pmtong merged 20 commits intoeigent-ai:mainfrom
Conversation
|
@Wendong-Fan @Pakchoioioi @4pmtong would you review this PR for refactor? Thank you for your time |
64e81eb to
9af3c6b
Compare
|
I attached the screenshots for this flow, please review |
|
Hi @Douglasymlai would you review this PR? |
|
Hi @eureka928 , thanks for the PR. Let me double check with @Pakchoioioi with this feature request. I believe the privacy agreement only needed for google and github login service. For local deployment login, doesn't need the privacy confirmation. |
|
@Douglasymlai @eureka928
[info] Backend is ready, notifying frontend... But anyway. The expected behavior is: for both the downloaded build and local startup, as long as the server is connected to eigent server, the Privacy Permission checkbox should be required — regardless of which sign-in method is used. |
let me update this |
|
Hi @eureka928 , I just got confirmed with @Pakchoioioi that the Privacy and Terms option is only needed when the platform is using our private cloud service. For open-source and locally deployed users, it does not apply, and it adds an extra unnecessary step. Since we’ve already moved the Terms and Agreement flow to the website auth process, this selection update on Signup Login is no longer needed in the desktop app. Sorry for the short notice. That said, there are still parts of this PR that can be merged, such as:
If you make this update, I’ll push the team to merge this PR ASAP. Thanks |
1b9bbb9 to
ec267af
Compare
|
Hi @Douglasymlai this is updated, can you review again please? |
|
@eureka928 Perfect! I have also asked @a7m-1st to help review. |
|
Oh wow thats fast, let me do it now thanks @eureka928 |
a7m-1st
left a comment
There was a problem hiding this comment.
Hi there @eureka928 thanks for the updates. Generally after review I think you forgot to update the installation flow too since we don't have permissions step.
<div className="flex h-full w-2/3 rounded-2xl bg-surface-tertiary p-md">
{initState === 'permissions' && <Permissions />}
{initState !== 'permissions' && <CarouselStep />}
</div>In additionally make sure to update the onboarding docs that refers to the privacy screen . Languages needs updating too.
Douglasymlai
left a comment
There was a problem hiding this comment.
Feature function testing passed. There are no conflicts, and everything was created as expected.
84d5a41 to
f8ceeb9
Compare
|
Hi @4pmtong would you merge this as well? |
f8ceeb9 to
82e7811
Compare
|
Hi @a7m-1st would you review this again? |
|
Yes, I have currently migrated the server changes from this pr and pr 1219. Just waiting for approval 🫡 |
|
i.e. to dev.eigent.ai |
Create reusable checkbox component following the existing switch.tsx pattern with React.forwardRef and design token classes.
Add agree-to-terms and please-accept-terms keys to all layout.json locale files. Add help-improve-eigent keys to all setting.json files.
Add mandatory terms acceptance checkbox that gates login and OAuth flows. Call acceptPrivacy API after successful authentication.
Add mandatory terms acceptance checkbox that gates registration and OAuth flows. Call acceptPrivacy API after successful OAuth login.
Remove privacy state, API fetch, consent banner, and all privacy checks from ChatBox. Privacy consent is now handled at login.
Remove privacy prop from interface, destructured props, drag-drop guards, and add-file button disabled condition.
Replace the four individual privacy permission toggles with a single optional Help Improve Eigent toggle for telemetry data collection.
Remove privacy-related test cases from ChatBox tests since privacy is now handled at login. Update mocks and assertions accordingly.
- Add missing agree-to-terms and please-accept-terms to en-us layout.json - Add missing help-improve-eigent keys to en-us setting.json - Style checkbox with input border for light/dark theme visibility - Restore setSearchParams in ChatBox dropped during rebase
Privacy/terms consent is now handled in the website auth process for private cloud service users. The checkbox gating is no longer needed in the desktop app login flow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address PR review feedback: - Remove permissions step from installation flow (no longer needed) - Delete InstallStep/Permissions.tsx component - Update InitState type to remove 'permissions' state - Add proper translations for help-improve-eigent keys across all locales - Remove Privacy section from quick_start.md docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Clean up leftovers from privacy consent removal: - Delete unused privacy_settings.png asset - Remove old 4-toggle privacy keys from all setting.json locales - Remove privacy permission keys from all layout.json locales Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
82e7811 to
f619d14
Compare
@4pmtong I fixed the conflict, would you merge this? cc: @a7m-1st |
|
Thanks for merging; let me do a quick test before confirming |
| const activeAskValue = | ||
| chatStore?.tasks[chatStore.activeTaskId as string]?.activeAsk; | ||
|
|
||
| useEffect(() => { | ||
| let timer: NodeJS.Timeout; | ||
| if (activeAskValue && activeAskValue !== '') { | ||
| const _taskId = chatStore.activeTaskId as string; | ||
| timer = setTimeout(() => { | ||
| handleSend('skip', _taskId); | ||
| }, 30000); // 30 seconds | ||
| return () => clearTimeout(timer); // clear previous timer | ||
| } | ||
| // if activeAsk is empty, also clear timer | ||
| return () => { | ||
| clearTimeout(timer); | ||
| }; | ||
| }, [ | ||
| activeAskValue, | ||
| message, // depend on message | ||
| chatStore, | ||
| handleSend, | ||
| ]); | ||
|
|
||
| // Reactive queuedMessages for the active project | ||
| const queuedMessages = useMemo(() => { | ||
| const pid = projectStore.activeProjectId; |
There was a problem hiding this comment.
HI there @eureka928 , I think you removed the triggers queues by mistake
src/components/ChatBox/index.tsx
Outdated
| // Remove from projectStore's queuedMessages | ||
| const removed = projectStore.removeQueuedMessage(project_id, task_id); | ||
| if (!removed || !removed.task_id) { | ||
| console.error(`Task with id ${task_id} not found in project queue`); | ||
| // Store the original message before removal for potential restoration | ||
| const project = projectStore.getProjectById(project_id); | ||
| const originalMessage = project?.queuedMessages?.find( | ||
| (m) => m.task_id === task_id | ||
| ); | ||
|
|
There was a problem hiding this comment.
This whole function is rolled back too
|
|
||
| {/* Bottom Box - Show when has messages */} | ||
| {chatStore.activeTaskId && hasAnyMessages && ( | ||
| <BottomBox | ||
| state={hasAnyMessages ? getBottomBoxState() : 'input'} | ||
| queuedMessages={queuedMessages} | ||
| onRemoveQueuedMessage={(id) => handleRemoveTaskQueue(id)} | ||
| subtitle={ | ||
| hasAnyMessages && getBottomBoxState() === 'confirm' | ||
| ? (() => { |
There was a problem hiding this comment.
Is there a reason we removed this?
Let me handling those conflicts @eureka928 ; as its quite sensitive. Let's isolate the ChatBox to only focus on privacy for now if thats is okay |
Okay, thank you for taking this |




Related Issue
Closes #934
Description
Move privacy consent from a runtime gating mechanism in ChatBox to a mandatory checkbox on the Login and SignUp pages. This simplifies the chat flow by removing the privacy dialog and inline privacy checks, while ensuring users consent before they can proceed.
Changes:
privacyprop from ChatBox and InputBoxhelp_improvefield toUserPrivacySettingsbackend modelsrc/components/ui/checkbox.tsx)Dialog/PrivacycomponentTesting Evidence (REQUIRED)
What is the purpose of this pull request?
Contribution Guidelines Acknowledgement