Files
shopify-ai-backup/BUILDER_ERROR_FIXES_SUMMARY.md

2.5 KiB

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)

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)

// 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

  • Code changes implemented
  • Logic flow verified
  • 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.