-
Notifications
You must be signed in to change notification settings - Fork 667
v0.13.1 updates -- onboarding, small fixes #2689
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis PR migrates AI chat empty state to a Jotai atom (WaveAIModel.isChatEmptyAtom) and updates consumers to use the atom. It changes the aipanel input placeholder logic to reflect chat/builder/idle states. Onboarding is bumped to v0.13.1 and a new onboarding content component and patch entry are added. Telemetry for connection dropdown interactions is added. Monaco editor handling is enhanced with keyboard reinjection support and proper onKeyDown listener disposal. Minor lifecycle and event-handling tweaks appear across preview and block utilities. Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Repository UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
🔇 Additional comments (2)
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (8)
frontend/app/aipanel/aipanelinput.tsx(2 hunks)frontend/app/aipanel/waveai-model.tsx(4 hunks)frontend/app/block/blockutil.tsx(2 hunks)frontend/app/onboarding/onboarding-common.tsx(1 hunks)frontend/app/onboarding/onboarding-upgrade-patch.tsx(2 hunks)frontend/app/onboarding/onboarding-upgrade-v0131.tsx(1 hunks)frontend/app/store/keymodel.ts(4 hunks)frontend/app/view/waveconfig/waveconfig.tsx(2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: sawka
Repo: wavetermdev/waveterm PR: 2465
File: frontend/app/onboarding/onboarding-upgrade.tsx:13-21
Timestamp: 2025-10-21T05:09:26.916Z
Learning: In the waveterm codebase, clientData is loaded and awaited in wave.ts before React runs, ensuring it is always available when components mount. This means atoms.client will have data on first render.
📚 Learning: 2025-10-21T05:09:26.916Z
Learnt from: sawka
Repo: wavetermdev/waveterm PR: 2465
File: frontend/app/onboarding/onboarding-upgrade.tsx:13-21
Timestamp: 2025-10-21T05:09:26.916Z
Learning: The onboarding upgrade modal in frontend/app/onboarding/onboarding-upgrade.tsx intentionally freezes the lastVersion at mount using a ref to prevent the modal from changing or disappearing mid-interaction when the user is going through the onboarding flow.
Applied to files:
frontend/app/onboarding/onboarding-upgrade-v0131.tsxfrontend/app/onboarding/onboarding-upgrade-patch.tsxfrontend/app/onboarding/onboarding-common.tsx
📚 Learning: 2025-10-21T05:09:26.916Z
Learnt from: sawka
Repo: wavetermdev/waveterm PR: 2465
File: frontend/app/onboarding/onboarding-upgrade.tsx:13-21
Timestamp: 2025-10-21T05:09:26.916Z
Learning: In the waveterm codebase, clientData is loaded and awaited in wave.ts before React runs, ensuring it is always available when components mount. This means atoms.client will have data on first render.
Applied to files:
frontend/app/aipanel/waveai-model.tsx
🧬 Code graph analysis (4)
frontend/app/block/blockutil.tsx (1)
frontend/app/store/global.ts (1)
recordTEvent(873-873)
frontend/app/aipanel/waveai-model.tsx (1)
frontend/app/store/global.ts (1)
globalStore(865-865)
frontend/app/onboarding/onboarding-upgrade-patch.tsx (1)
frontend/app/onboarding/onboarding-upgrade-v0131.tsx (1)
UpgradeOnboardingModal_v0_13_1_Content(86-86)
frontend/app/view/waveconfig/waveconfig.tsx (1)
frontend/app/store/keymodel.ts (1)
tryReinjectKey(717-717)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Analyze (go)
- GitHub Check: Analyze (javascript-typescript)
- GitHub Check: Build for TestDriver.ai
🔇 Additional comments (10)
frontend/app/onboarding/onboarding-common.tsx (1)
4-4: LGTM! Version bump is correct.The version update to v0.13.1 aligns with the new onboarding content and navigation structure added in the related files.
frontend/app/onboarding/onboarding-upgrade-patch.tsx (2)
21-21: LGTM! Import is correct.The import statement correctly references the new v0.13.1 content component.
52-58: LGTM! Navigation structure is properly configured.The version navigation is correctly set up:
- v0.13.0 now points forward to v0.13.1
- v0.13.1 points back to v0.13.0
- v0.13.1 has no nextText, correctly indicating it's the latest version
frontend/app/onboarding/onboarding-upgrade-v0131.tsx (1)
4-86: LGTM! Well-structured onboarding content component.The v0.13.1 content component is cleanly implemented and follows the established pattern from previous version components. The content is well-organized into three clear sections with appropriate visual hierarchy and styling.
frontend/app/block/blockutil.tsx (1)
5-5: LGTM! Clean telemetry integration.The addition of telemetry tracking for mouse-initiated connection dropdown interactions is well-implemented. The event recording is non-invasive and follows the established pattern, complementing the keyboard-initiated tracking added in
keymodel.tsline 584.Also applies to: 171-171
frontend/app/aipanel/aipanelinput.tsx (1)
27-27: LGTM! Well-structured refactor to atom-based state.The refactoring to use
isChatEmptyAtomis clean and the dynamic placeholder logic provides a better user experience by adapting to the chat state and context (builder mode vs. standard mode). The three-way conditional is clear and appropriately prioritized.Also applies to: 32-39, 154-154
frontend/app/store/keymodel.ts (2)
150-150: LGTM! Consistent atom-based state access.The migration from direct
isChatEmptyproperty access toglobalStore.get(aiModel.isChatEmptyAtom)is consistent with the refactoring inwaveai-model.tsx. Both call sites inuxCloseBlockandgenericClosefollow the same pattern correctly.Also applies to: 188-188
18-18: LGTM! Telemetry tracking for keyboard-initiated flow.The telemetry event recording for keyboard-initiated connection dropdown (Cmd:g) complements the mouse-initiated tracking in
blockutil.tsxline 171, providing complete coverage of both interaction paths.Also applies to: 584-584
frontend/app/aipanel/waveai-model.tsx (1)
69-69: LGTM! Well-executed migration to atom-based state management.The refactoring from a direct
isChatEmpty: booleanfield toisChatEmptyAtom: jotai.PrimitiveAtom<boolean>is consistently applied across all mutation points:
clearChat()sets it totrueloadInitialChat()sets it based on message counthandleSubmit()sets it tofalseafter sendingAll consuming code in the PR has been updated to use
globalStore.get()oruseAtomValue(), making this a clean, complete refactoring. The atom-based approach enables reactive state management across components.Also applies to: 274-274, 453-453, 526-526
frontend/app/view/waveconfig/waveconfig.tsx (1)
6-6: LGTM!The new imports are appropriately scoped and used in the keyboard handling integration.
Also applies to: 9-9, 12-12
No description provided.