Update the rebranding and fix issues

This commit is contained in:
Kunthawat Greethong
2025-12-22 10:14:05 +07:00
parent 29248688f3
commit 68189db3b3
917 changed files with 2371 additions and 138265 deletions

View File

@@ -211,11 +211,26 @@ update_ui_text() {
print_success "Updated UI text"
}
# Function to update component names from Dyad to MoreMinimore
# Function to update forge configuration for Mission Control
update_forge_config() {
print_status "Updating forge configuration for Mission Control..."
if [ -f "forge.config.ts" ]; then
# Update protocol name and schemes
sed -i.bak 's/name: "Dyad"/name: "MoreMinimore"/g' forge.config.ts
sed -i.bak 's/schemes: \["dyad"\]/schemes: ["moreminimore"]/g' forge.config.ts
rm forge.config.ts.bak
print_success "Updated forge configuration for Mission Control"
else
print_warning "forge.config.ts not found"
fi
}
# Function to update component names from Dyad to MoreMinimore (Enhanced)
update_component_names() {
print_status "Updating component names from Dyad to MoreMinimore..."
# Update component imports and exports
# Update component imports and exports in chat components
find src/components/chat -name "*.tsx" -type f -exec sed -i.bak 's/DyadThink/MoreMinimoreThink/g' {} \;
find src/components/chat -name "*.tsx" -type f -exec sed -i.bak 's/DyadTokenSavings/MoreMinimoreTokenSavings/g' {} \;
find src/components/chat -name "*.tsx" -type f -exec sed -i.bak 's/DyadCodebaseContext/MoreMinimoreCodebaseContext/g' {} \;
@@ -238,12 +253,117 @@ update_component_names() {
find src/components/chat -name "*.tsx" -type f -exec sed -i.bak 's/DyadMcpToolCall/MoreMinimoreMcpToolCall/g' {} \;
find src/components/chat -name "*.tsx" -type f -exec sed -i.bak 's/DyadMcpToolResult/MoreMinimoreMcpToolResult/g' {} \;
# Update markdown parser custom tags
find src -name "*.tsx" -type f -exec sed -i.bak 's/dyad-think/moreminimore-think/g' {} \;
find src -name "*.tsx" -type f -exec sed -i.bak 's/dyad-token-savings/moreminimore-token-savings/g' {} \;
# Update component references in file editors and preview panels
find src -name "*.tsx" -type f -exec sed -i.bak 's/MadeWithDyad/MadeWithMoreMinimore/g' {} \;
# Clean up backup files
find src/components/chat -name "*.bak" -type f -delete
find src -name "*.bak" -type f -delete
print_success "Updated component names"
}
# Function to fix capitalization consistency
fix_capitalization_consistency() {
print_status "Fixing capitalization consistency..."
# Ensure consistent "MoreMinimore" capitalization
find src -name "*.tsx" -type f -exec sed -i.bak 's/Moreminimore/MoreMinimore/g' {} \;
find src -name "*.ts" -type f -exec sed -i.bak 's/Moreminimore/MoreMinimore/g' {} \;
# Fix inconsistent capitalization in UI text
find src -name "*.tsx" -type f -exec sed -i.bak 's/moreminimore/MoreMinimore/g' {} \;
find src -name "*.ts" -type f -exec sed -i.bak 's/moreminimore/MoreMinimore/g' {} \;
# Clean up backup files
find src -name "*.bak" -type f -delete
print_success "Fixed capitalization consistency"
}
# Function to update GitHub repository references
update_github_references() {
print_status "Updating GitHub repository references..."
# Update GitHub URLs from dyad-sh/dyad to your repository
find src -name "*.tsx" -type f -exec sed -i.bak 's|github\.com/dyad-sh/dyad|github.com/kunthawat/moreminimore-vibe|g' {} \;
find src -name "*.ts" -type f -exec sed -i.bak 's|github\.com/dyad-sh/dyad|github.com/kunthawat/moreminimore-vibe|g' {} \;
find . -name "*.md" -type f -exec sed -i.bak 's|github\.com/dyad-sh/dyad|github.com/kunthawat/moreminimore-vibe|g' {} \;
# Update issue reporting links
find src -name "*.tsx" -type f -exec sed -i.bak 's|https://github.com/dyad-sh/dyad/issues|https://github.com/kunthawat/moreminimore-vibe/issues|g' {} \;
find src -name "*.ts" -type f -exec sed -i.bak 's|https://github.com/dyad-sh/dyad/issues|https://github.com/kunthawat/moreminimore-vibe/issues|g' {} \;
# Clean up backup files
find src -name "*.bak" -type f -delete
find . -name "*.md" -type f -exec rm -f {}.bak \;
print_success "Updated GitHub repository references"
}
# Function to remove made-with-dyad component from generated code
remove_made_with_dyad_component() {
print_status "Removing made-with-dyad component from generated code..."
# Remove the component file if it exists
if [ -f "src/components/made-with-dyad.tsx" ]; then
rm src/components/made-with-dyad.tsx
print_success "Removed made-with-dyad component file"
fi
# Remove imports and usage from scaffold templates
if [ -f "scaffold/src/pages/Index.tsx" ]; then
sed -i.bak '/import { MadeWithDyad } from "@\/components\/made-with-dyad";/d' scaffold/src/pages/Index.tsx
sed -i.bak '/<MadeWithDyad \/>/d' scaffold/src/pages/Index.tsx
rm scaffold/src/pages/Index.tsx.bak
fi
# Remove from test fixtures
find e2e-tests/fixtures -name "*.md" -type f -exec sed -i.bak '/import { MadeWithDyad } from "@\/components\/made-with-dyad";/d' {} \;
find e2e-tests/fixtures -name "*.md" -type f -exec sed -i.bak '/<MadeWithDyad \/>/d' {} \;
find e2e-tests/fixtures -name "*.md" -type f -exec rm -f {}.bak \;
# Remove from test snapshots
find e2e-tests/snapshots -name "*.txt" -type f -exec sed -i.bak '/import { MadeWithDyad } from "@\/components\/made-with-dyad";/d' {} \;
find e2e-tests/snapshots -name "*.txt" -type f -exec sed -i.bak '/<MadeWithDyad \/>/d' {} \;
find e2e-tests/snapshots -name "*.txt" -type f -exec sed -i.bak '/MadeWithDyad/d' {} \;
find e2e-tests/snapshots -name "*.txt" -type f -exec rm -f {}.bak \;
# Remove from aria.yml files
find e2e-tests/snapshots -name "*.aria.yml" -type f -exec sed -i.bak '/made-with-dyad/d' {} \;
find e2e-tests/snapshots -name "*.aria.yml" -type f -exec rm -f {}.bak \;
# Remove from fake LLM server
if [ -f "testing/fake-llm-server/chatCompletionHandler.ts" ]; then
sed -i.bak '/import { MadeWithDyad } from "@\/components\/made-with-dyad";/d' testing/fake-llm-server/chatCompletionHandler.ts
rm testing/fake-llm-server/chatCompletionHandler.ts.bak
fi
print_success "Removed made-with-dyad component from generated code"
}
# Function to update provider settings branding (preserves multi-provider functionality)
update_provider_settings_branding() {
print_status "Updating provider settings branding..."
if [ -f "src/components/settings/ProviderSettingsPage.tsx" ]; then
# Only update branding, preserve all multi-provider functionality
# Update Dyad references to Moreminimore
sed -i.bak 's/MoreMinimore/Moreminimore/g' src/components/settings/ProviderSettingsPage.tsx
# Update academy.dyad.sh URLs to moreminimore.com
sed -i.bak 's|academy\.dyad\.sh|moreminimore.com|g' src/components/settings/ProviderSettingsPage.tsx
# Update any remaining Dyad references
sed -i.bak 's/Dyad/Moreminimore/g' src/components/settings/ProviderSettingsPage.tsx
rm src/components/settings/ProviderSettingsPage.tsx.bak
print_success "Updated provider settings branding (multi-provider functionality preserved)"
else
print_warning "ProviderSettingsPage.tsx not found"
fi
}
# Function to update URLs and external links
update_urls() {
print_status "Updating URLs and external links..."
@@ -290,6 +410,116 @@ update_ai_providers() {
rm src/ipc/shared/language_model_constants.ts.bak
print_success "Updated AI provider settings"
fi
# Add Moreminimore as a cloud provider
add_moreminimore_provider
}
# Function to add Moreminimore as a cloud provider
add_moreminimore_provider() {
print_status "Adding Moreminimore as a cloud provider..."
if [ -f "src/ipc/shared/language_model_constants.ts" ]; then
# Check if moreminimore provider already exists
if grep -q "moreminimore:" src/ipc/shared/language_model_constants.ts; then
print_success "Moreminimore provider already exists"
else
# Add moreminimore to CLOUD_PROVIDERS
sed -i.bak '/export const CLOUD_PROVIDERS: Record<string, CloudProvider> = {/a\
moreminimore: {\
displayName: "MoreMinimore AI",\
websiteUrl: "https://moreminimore.com/settings",\
hasFreeTier: false,\
gatewayPrefix: "moreminimore/",\
},' src/ipc/shared/language_model_constants.ts
# Add moreminimore model to MODEL_OPTIONS
sed -i.bak '/export const MODEL_OPTIONS: Record<string, LanguageModel\[\]> = {/a\
moreminimore: [\
{\
name: "zai-org/GLM-4.6",\
displayName: "GLM-4.6",\
description: "MoreMinimore AI model",\
contextWindow: 128000,\
maxOutputTokens: 4096,\
tag: "recommended",\
},\
],' src/ipc/shared/language_model_constants.ts
rm src/ipc/shared/language_model_constants.ts.bak
print_success "Added Moreminimore cloud provider"
fi
fi
}
# Function to update backend model client for Moreminimore
update_backend_model_client() {
print_status "Updating backend model client for Moreminimore..."
if [ -f "src/ipc/utils/get_model_client.ts" ]; then
# Check if moreminimore case already exists
if grep -q 'case "moreminimore":' src/ipc/utils/get_model_client.ts; then
print_success "Moreminimore case already exists in get_model_client.ts"
else
# Add moreminimore case before the default case
sed -i.bak '/default: {/i\
case "moreminimore": {\
if (!apiKey) {\
throw new Error(\
"Moreminimore API key is required. Please configure it in Settings.",\
);\
}\
const provider = createOpenAICompatible({\
name: "moreminimore",\
baseURL: "https://llmproxy.moreminimore.com/v1",\
apiKey,\
});\
return {\
modelClient: {\
model: provider(model.name),\
builtinProviderId: providerId,\
},\
backupModelClients: [],\
};\
}' src/ipc/utils/get_model_client.ts
rm src/ipc/utils/get_model_client.ts.bak
print_success "Added Moreminimore case to get_model_client.ts"
fi
fi
}
# Function to update provider settings UI for Moreminimore
update_provider_settings_ui() {
print_status "Updating provider settings UI for Moreminimore..."
if [ -f "src/components/settings/ProviderSettingsPage.tsx" ]; then
# Check if the simplified Moreminimore handling is already implemented
if grep -q "providerData && provider !== 'moreminimore'" src/components/settings/ProviderSettingsPage.tsx; then
print_success "Provider settings UI already updated for Moreminimore"
else
# Update ModelsSection condition to hide for Moreminimore
sed -i.bak 's/{supportsCustomModels && providerData && (/{
supportsCustomModels && providerData && provider !== "moreminimore" && (/' src/components/settings/ProviderSettingsPage.tsx
rm src/components/settings/ProviderSettingsPage.tsx.bak
print_success "Updated provider settings UI for Moreminimore"
fi
fi
if [ -f "src/components/settings/ProviderSettingsHeader.tsx" ]; then
# Check if button text is already updated
if grep -q "Setup Moreminimore AI" src/components/settings/ProviderSettingsHeader.tsx; then
print_success "Provider settings header already updated"
else
# Update button text for Moreminimore
sed -i.bak 's/Setup MoreMinimore Pro Subscription/Setup Moreminimore AI/g' src/components/settings/ProviderSettingsHeader.tsx
sed -i.bak 's/Manage MoreMinimore Pro Subscription/Manage Moreminimore AI/g' src/components/settings/ProviderSettingsHeader.tsx
rm src/components/settings/ProviderSettingsHeader.tsx.bak
print_success "Updated provider settings header for Moreminimore"
fi
fi
}
# Function to remove YouTube video section
@@ -358,6 +588,226 @@ cleanup_imports() {
print_success "Cleaned up unused imports"
}
# Function to check for required image processing tools
check_image_tools() {
print_status "Checking for image processing tools..."
local tools_available=true
if ! command -v convert &> /dev/null; then
print_warning "ImageMagick 'convert' command not found. Installing..."
if [[ "$OSTYPE" == "darwin"* ]]; then
if command -v brew &> /dev/null; then
brew install imagemagick
else
print_error "Homebrew not found. Please install ImageMagick manually: brew install imagemagick"
tools_available=false
fi
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
if command -v apt-get &> /dev/null; then
sudo apt-get update && sudo apt-get install -y imagemagick
elif command -v yum &> /dev/null; then
sudo yum install -y ImageMagick
else
print_error "Please install ImageMagick manually: apt-get install imagemagick or yum install ImageMagick"
tools_available=false
fi
else
print_error "Please install ImageMagick manually for your platform"
tools_available=false
fi
fi
if [ "$tools_available" = true ]; then
print_success "Image processing tools available"
else
print_error "Image processing tools not available. Logo conversion may fail."
fi
}
# Function to convert PNG to SVG
convert_png_to_svg() {
print_status "Converting PNG logo to SVG..."
local source_logo="assets/moreminimorelogo.png"
local target_svg="assets/logo.svg"
if [ ! -f "$source_logo" ]; then
print_error "Source logo not found: $source_logo"
return 1
fi
# Backup original SVG if it exists
if [ -f "$target_svg" ]; then
cp "$target_svg" "$target_svg.backup"
fi
# Create a simple SVG wrapper for the PNG
# This maintains compatibility while using the PNG as the source
cat > "$target_svg" << EOF
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
<image href="data:image/png;base64,$(base64 -i "$source_logo" -o - | tr -d '\n')" width="128" height="128"/>
</svg>
EOF
print_success "Created SVG logo from PNG"
}
# Function to generate multi-size PNGs for Electron icons
generate_electron_icons() {
print_status "Generating Electron icons..."
local source_logo="assets/moreminimorelogo.png"
local icon_dir="assets/icon"
if [ ! -f "$source_logo" ]; then
print_error "Source logo not found: $source_logo"
return 1
fi
# Create icon directory if it doesn't exist
mkdir -p "$icon_dir"
# Backup existing icons
if [ -f "$icon_dir/logo.png" ]; then
cp "$icon_dir/logo.png" "$icon_dir/logo.png.backup"
fi
if [ -f "$icon_dir/logo.ico" ]; then
cp "$icon_dir/logo.ico" "$icon_dir/logo.ico.backup"
fi
if [ -f "$icon_dir/logo.icns" ]; then
cp "$icon_dir/logo.icns" "$icon_dir/logo.icns.backup"
fi
# Copy the main logo for general use
cp "$source_logo" "$icon_dir/logo.png"
# Generate different sizes for various purposes
local sizes=(16 32 48 64 128 256 512 1024)
for size in "${sizes[@]}"; do
if command -v convert &> /dev/null; then
convert "$source_logo" -resize "${size}x${size}" "$icon_dir/logo_${size}x${size}.png"
else
print_warning "ImageMagick not available, copying original for size ${size}"
cp "$source_logo" "$icon_dir/logo_${size}x${size}.png"
fi
done
# Create ICO file (Windows) - use the largest available size
if command -v convert &> /dev/null; then
convert "$icon_dir/logo_16x16.png" "$icon_dir/logo_32x32.png" "$icon_dir/logo_48x48.png" "$icon_dir/logo_256x256.png" "$icon_dir/logo.ico"
else
print_warning "Cannot create ICO file without ImageMagick"
fi
# Create ICNS file (macOS) - this is more complex, so we'll use a simple approach
if command -v iconutil &> /dev/null && [[ "$OSTYPE" == "darwin"* ]]; then
# Create iconset directory
local iconset="$icon_dir/logo.iconset"
mkdir -p "$iconset"
# Copy required sizes for macOS
cp "$icon_dir/logo_16x16.png" "$iconset/icon_16x16.png"
cp "$icon_dir/logo_32x32.png" "$iconset/icon_16x16@2x.png"
cp "$icon_dir/logo_32x32.png" "$iconset/icon_32x32.png"
cp "$icon_dir/logo_64x64.png" "$iconset/icon_32x32@2x.png"
cp "$icon_dir/logo_128x128.png" "$iconset/icon_128x128.png"
cp "$icon_dir/logo_256x256.png" "$iconset/icon_128x128@2x.png"
cp "$icon_dir/logo_256x256.png" "$iconset/icon_256x256.png"
cp "$icon_dir/logo_512x512.png" "$iconset/icon_256x256@2x.png"
cp "$icon_dir/logo_512x512.png" "$iconset/icon_512x512.png"
cp "$icon_dir/logo_1024x1024.png" "$iconset/icon_512x512@2x.png"
# Convert to ICNS
iconutil -c icns "$iconset" -o "$icon_dir/logo.icns"
# Clean up iconset
rm -rf "$iconset"
else
print_warning "Cannot create ICNS file without iconutil (macOS) or ImageMagick"
fi
print_success "Generated Electron icons"
}
# Function to create optimized logo for TitleBar
create_titlebar_logo() {
print_status "Creating optimized TitleBar logo..."
local source_logo="assets/moreminimorelogo.png"
local target_logo="assets/logo.png"
if [ ! -f "$source_logo" ]; then
print_error "Source logo not found: $source_logo"
return 1
fi
# Backup original if it exists
if [ -f "$target_logo" ]; then
cp "$target_logo" "$target_logo.backup"
fi
# Create a 24x24 version optimized for TitleBar
if command -v convert &> /dev/null; then
convert "$source_logo" -resize "24x24" "$target_logo"
else
# If ImageMagick is not available, just copy the original
cp "$source_logo" "$target_logo"
print_warning "ImageMagick not available, using original logo size"
fi
print_success "Created TitleBar logo"
}
# Function to update test fixtures
update_test_fixtures() {
print_status "Updating test fixtures..."
local source_logo="assets/moreminimorelogo.png"
local test_fixture="e2e-tests/fixtures/images/logo.png"
if [ -f "$source_logo" ]; then
# Create test fixtures directory if it doesn't exist
mkdir -p "$(dirname "$test_fixture")"
# Backup original test fixture
if [ -f "$test_fixture" ]; then
cp "$test_fixture" "$test_fixture.backup"
fi
# Copy the new logo to test fixtures
cp "$source_logo" "$test_fixture"
print_success "Updated test fixtures"
else
print_warning "Source logo not found, skipping test fixture update"
fi
}
# Function to update all logos
update_logos() {
print_status "Updating MoreMinimore logos..."
# Check if source logo exists
if [ ! -f "assets/moreminimorelogo.png" ]; then
print_error "Source logo not found: assets/moreminimorelogo.png"
print_error "Please ensure your MoreMinimore logo is available at assets/moreminimorelogo.png"
return 1
fi
# Check for image processing tools
check_image_tools
# Update all logo files
convert_png_to_svg
generate_electron_icons
create_titlebar_logo
update_test_fixtures
print_success "All logos updated to MoreMinimore branding"
}
# Function to install dependencies
install_dependencies() {
print_status "Installing dependencies..."
@@ -400,14 +850,22 @@ main() {
update_branding
convert_smart_context
update_ui_text
update_forge_config
update_component_names
fix_capitalization_consistency
update_github_references
remove_made_with_dyad_component
update_provider_settings_branding
update_urls
update_branding_text
update_ai_providers
update_backend_model_client
update_provider_settings_ui
remove_youtube_section
fix_chat_input
update_app_metadata
cleanup_imports
update_logos
install_dependencies
test_compilation
@@ -421,27 +879,42 @@ main() {
echo "✅ Updated branding to MoreMinimore"
echo "✅ Converted smart context to standard feature"
echo "✅ Updated UI text"
echo "✅ Updated forge configuration for Mission Control"
echo "✅ Updated component names from Dyad to MoreMinimore"
echo "✅ Fixed capitalization consistency"
echo "✅ Updated GitHub repository references"
echo "✅ Removed made-with-dyad component from generated code"
echo "✅ Simplified AI provider settings"
echo "✅ Updated URLs and external links"
echo "✅ Updated branding text throughout app"
echo "✅ Updated AI provider settings"
echo "✅ Added Moreminimore as cloud provider"
echo "✅ Updated backend model client for Moreminimore"
echo "✅ Updated provider settings UI for Moreminimore"
echo "✅ Removed YouTube video section"
echo "✅ Fixed ChatInput.tsx references"
echo "✅ Updated app metadata and title bar"
echo "✅ Cleaned up unused imports"
echo "✅ Updated all logos to MoreMinimore branding"
echo "✅ Generated Electron icons (ICO, ICNS, multi-size PNGs)"
echo "✅ Installed dependencies"
echo ""
echo "Key features liberated:"
echo "🔓 Smart Context now available to all users"
echo "🔓 Annotator tool now available to all users"
echo "🔓 Removed Pro upgrade buttons and restrictions"
echo "🔓 Mission Control now displays correct app name"
echo "🔓 AI provider settings simplified for better UX"
echo "🔓 All Dyad branding removed from generated code"
echo ""
echo "Backup created at: $BACKUP_DIR"
echo ""
echo "Next steps:"
echo "1. Review the changes with 'git diff'"
echo "2. Test the application with 'npm start'"
echo "3. Commit the changes if everything works correctly"
echo "3. Check Mission Control displays 'MoreMinimore' correctly"
echo "4. Verify AI provider settings are simplified"
echo "5. Commit the changes if everything works correctly"
echo ""
print_warning "Please test the application thoroughly before committing changes."
}