Restore to commit 74e578279624c6045ca440a3459ebfa1f8d54191

This commit is contained in:
southseact-3d
2026-02-07 20:32:41 +00:00
commit ed67b7741b
252 changed files with 99814 additions and 0 deletions

View 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.