Restore to commit 74e578279624c6045ca440a3459ebfa1f8d54191
This commit is contained in:
86
BUILDER_ERROR_FIXES_SUMMARY.md
Normal file
86
BUILDER_ERROR_FIXES_SUMMARY.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Builder Page Error Fixes - Summary
|
||||
|
||||
This document summarizes the fixes applied to resolve two critical issues with the builder page reported by the user.
|
||||
|
||||
## Issues Fixed
|
||||
|
||||
### ✅ Issue 1: Model Selector Unselects After a Few Seconds
|
||||
**Symptom**: User selects a model from dropdown, but it reverts after 2-3 seconds
|
||||
|
||||
**Root Cause**: `refreshCurrentSession()` overwrites user's selection with server state
|
||||
|
||||
**Solution**: Added `userJustChangedModel` flag to prevent server from overwriting during refresh
|
||||
|
||||
**Files Modified**: `chat/public/builder.js`
|
||||
|
||||
### ✅ Issue 2: Message Text Disappears But No Message Sent
|
||||
**Symptom**: User types message and clicks send, text disappears but nothing is sent
|
||||
|
||||
**Root Cause**: Input cleared before ensuring session exists
|
||||
|
||||
**Solution**: Moved input clearing to after session confirmation
|
||||
|
||||
**Files Modified**: `chat/public/builder.html`
|
||||
|
||||
## Quick Test Guide
|
||||
|
||||
### Test Model Selector:
|
||||
1. Open builder page
|
||||
2. Select a different model from dropdown
|
||||
3. Wait 5 seconds
|
||||
4. **Result**: Model should stay selected ✓
|
||||
|
||||
### Test Message Sending:
|
||||
1. Open builder page (fresh or without session)
|
||||
2. Type: "Create a contact form plugin"
|
||||
3. Click send immediately
|
||||
4. **Result**: Message should be sent, input cleared only after success ✓
|
||||
|
||||
## Technical Implementation
|
||||
|
||||
### Model Selector Fix (builder.js)
|
||||
```javascript
|
||||
let userJustChangedModel = false; // New flag
|
||||
|
||||
// Set flag when user changes model
|
||||
if (!programmaticModelChange) {
|
||||
userJustChangedModel = true;
|
||||
}
|
||||
await refreshCurrentSession();
|
||||
setTimeout(() => { userJustChangedModel = false; }, 500);
|
||||
|
||||
// Skip model update during refresh if user just changed it
|
||||
if (session.model && !userJustChangedModel) {
|
||||
el.modelSelect.value = session.model;
|
||||
}
|
||||
```
|
||||
|
||||
### Message Sending Fix (builder.html)
|
||||
```javascript
|
||||
// REMOVED early input clearing
|
||||
// input.value = ''; ❌
|
||||
|
||||
// Input now cleared AFTER session confirmed
|
||||
await sendPlanMessage(content);
|
||||
|
||||
// Inside sendPlanMessage:
|
||||
await ensureSessionExists();
|
||||
if (!state.currentSessionId) {
|
||||
return; // Keep input if session failed
|
||||
}
|
||||
input.value = ''; // ✅ Clear only after session OK
|
||||
```
|
||||
|
||||
## Impact
|
||||
- ✅ Model selection now works reliably
|
||||
- ✅ No message data loss
|
||||
- ✅ Better user experience
|
||||
- ✅ No breaking changes to existing functionality
|
||||
|
||||
## Testing Status
|
||||
- [x] Code changes implemented
|
||||
- [x] Logic flow verified
|
||||
- [x] Root causes addressed
|
||||
- [ ] Manual testing in running application (requires Docker setup)
|
||||
|
||||
The fixes are minimal, surgical changes that address the specific root causes without affecting other functionality.
|
||||
Reference in New Issue
Block a user