87 lines
2.5 KiB
Markdown
87 lines
2.5 KiB
Markdown
# 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.
|