feat(kiloclaw) simplify on boarding. remove channels. show email addr#3120
Open
feat(kiloclaw) simplify on boarding. remove channels. show email addr#3120
Conversation
…ress feat(kiloclaw): drop channels and pairing from active onboarding flow
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Reviewed by gpt-5.5-20260423 · 499,781 tokens |
jeanduplessis
approved these changes
May 7, 2026
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.
Summary
Two related changes to the KiloClaw onboarding wizard.
1. Add a read only Inbound Email step. New screen between the calendar step and provisioning, telling the user their bot has an inbox at the platform's existing alias. Shows the alias from
KiloClawDashboardStatus.inboundEmailAddresswith a Copy address button (clipboard API plus a transient Copied state and toast). No new infra, no schema, no auth changes; the alias is already populated by the platform on provision.While the platform status query is still in flight, the address line reads "Setting up your inbox…" and the Continue button is disabled. Once the address resolves, Copy and Continue both unlock. If the feature is genuinely disabled for the instance, the address line says so explicitly. Skip is intentionally not offered: the screen is informational and the user should at least see the address before advancing.
2. Remove the channels selection and pairing steps from the active wizard. New flow: identity → calendar → inbound email → provisioning → chat. The component files (
ChannelSelectionStep.tsx,ChannelPairingStep.tsx) stay in the codebase in case channel pairing is reintroduced later, but they are no longer wired into the wizard sequence, the render switch, the state machine, or the fake walkthrough.selectedChannelIdandchannelTokensstate vars are gone;useOnboardingSaveskeeps working withchannelTokens: null. The exec preset save still fires post identity so freshly provisioned instances default to "Allow everything".Type level:
'channels'and'pairing'dropped fromOnboardingStep,ClawOnboardingRenderStep, the wizard step list, and the fake step list.hasPairingStepremoved from the flow state.getClawOnboardingStepProgressis now single arg with a fixed total of 4 steps.Tracking events on the new step:
claw_setup_email_viewed(fires on render via the same ref guarded effect pattern used for identity and calendar),claw_setup_email_address_copied, andclaw_setup_email_completed.Verification
/claw/new. Identity step works as before. Calendar step renders. Inbound email step renders next with the alias populated from the platform status response and a Copy button. Continue advances directly to the provisioning spinner; channels and pairing screens never render./claw/new: still auto routes straight to/chat(no regression from the post provisioning short circuit)./claw/new?step=calendar&success=google_connectedstill resumes at the calendar step with the success toast and clean URL.Visual Changes
Reviewer Notes
copyResetTimerRef; a cleanup effect clears any in flight timer on unmount, andhandleCopyclears the previous timer before scheduling a new one. This handles both the user navigating away within the two second window and rapid re clicks of the Copy button.handleCopyguardsnavigator.clipboard?.writeTextfirst, awaits the write, and only flips Copied / fires the success toast / fires the analytics event after the write resolves. Failed writes show an error toast and leave the button in its un copied state.getRenderStepDecisionstill honors explicit wizard steps (calendar,email,provisioning) when the wizard remounts in post provisioning mode after a full page reload. The previously honoredchannelsandpairingbranches are gone along with the rest of the channels work.PairingChannelIdtype andisPairingChannelhelper are kept in the state file becauseChannelPairingStep.tsxstill imports them. Both helpers are unused in the active flow.batch-review-decisions.test.ts) for an unrelated GitHub bot code path shows up in CI for any PR; not introduced by this branch.