Files
moreminimore-vibe/README-DEBRAND.md

379 lines
9.4 KiB
Markdown

# MoreMinimore Debranding and Custom Features Guide
This guide explains how to remove Dyad branding and dependencies from the codebase and integrate custom features for MoreMinimore.
## Overview
The debranding process includes:
- ✅ Removing Dyad API dependencies (templates, updates, release notes)
- ✅ Removing Dyad Engine dependencies (AI processing)
- ✅ Removing pro features and restrictions
- ✅ Converting smart context from pro to standard feature
- ✅ Updating branding from "Dyad" to "MoreMinimore"
- ✅ Applying custom remove-limit feature
- ✅ Updating UI text and protocol handlers
## Quick Start
### Option 1: Automated Script (Recommended)
Run the automated debranding script:
```bash
# Make the script executable (if not already done)
chmod +x scripts/update-and-debrand.sh
# Run the debranding process
./scripts/update-and-debrand.sh
```
The script will:
1. Create a backup of your current code
2. Apply all debranding changes
3. Install dependencies
4. Test compilation
5. Provide a summary of changes
### Option 2: Manual Step-by-Step
If you prefer to apply changes manually, follow these steps:
## Step 1: Create Backup
```bash
# Create a backup directory with timestamp
BACKUP_DIR="dyad-backup-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r src "$BACKUP_DIR/"
cp package.json "$BACKUP_DIR/"
cp -r scripts "$BACKUP_DIR/" 2>/dev/null || true
echo "Backup created: $BACKUP_DIR"
```
## Step 2: Apply Custom Remove-Limit Feature
```bash
# Check if custom directory exists
if [ -d "src/custom" ]; then
# Apply remove-limit feature
if ! grep -q "REMOVE_LIMIT_ENABLED" src/custom/index.ts; then
echo "export const REMOVE_LIMIT_ENABLED = true;" >> src/custom/index.ts
echo "Remove-limit feature enabled"
fi
else
mkdir -p src/custom
echo "export const REMOVE_LIMIT_ENABLED = true;" > src/custom/index.ts
echo "Created custom directory and enabled remove-limit feature"
fi
```
## Step 3: Remove Dyad API Dependencies
### Remove Template API
Edit `src/ipc/utils/template_utils.ts`:
```typescript
// Replace the fetch call to Dyad API
// FROM:
const response = await fetch("https://api.dyad.sh/v1/templates");
// TO:
// Dyad API templates removed - using local templates only
return [...localTemplatesData];
```
### Remove Release Notes API
Edit `src/ipc/handlers/release_note_handlers.ts`:
```typescript
// Replace the fetch call
// FROM:
const response = await fetch(`https://api.dyad.sh/v1/release-notes/${version}`);
// TO:
// Release notes disabled - removed Dyad API dependency
logger.debug(`Release notes check disabled for version ${version}`);
return { exists: false };
```
### Remove Auto-Update API
Edit `src/main.ts`:
```typescript
// Replace the update-electron-app configuration
// FROM:
const host = `https://api.dyad.sh/v1/update/${postfix}`;
updateElectronApp({
logger,
updateSource: {
type: UpdateSourceType.ElectronPublicUpdateService,
repo: "dyad-sh/dyad",
host,
},
});
// TO:
logger.info("Auto-update disabled - removed Dyad API dependency");
// Auto-update functionality removed to eliminate Dyad API dependency
// Users can manually update by downloading new releases from GitHub
```
## Step 4: Remove Dyad Engine Dependencies
Edit `src/ipc/utils/get_model_client.ts`:
```typescript
// Comment out Dyad Engine URL
// const dyadEngineUrl = process.env.DYAD_ENGINE_URL; // Removed - Dyad Engine dependency
// Remove Dyad Pro functionality
// Replace the entire "Handle Dyad Pro override" section with:
// Dyad Pro functionality removed - eliminated Dyad Engine dependency
// All models now use direct provider connections
if (dyadApiKey && settings.enableDyadPro) {
logger.warn(
`Dyad Pro was enabled but has been disabled to remove Dyad API dependency. Falling back to direct provider connection.`,
);
// Fall through to regular provider logic
}
// Comment out the import
// import { createDyadEngine } from "./llm_engine_provider"; // Removed - Dyad Engine dependency
```
## Step 5: Remove Pro Features
### Remove Pro Handlers
Edit `src/ipc/ipc_host.ts`:
```typescript
// Remove this line:
registerProHandlers();
```
### Remove Pro IPC Channels
Edit `src/preload.ts`:
```typescript
// Remove these lines from the contextBridge:
"get-pro-status": () => ipcRenderer.invoke("get-pro-status"),
"enable-dyad-pro": (apiKey: string) => ipcRenderer.invoke("enable-dyad-pro", apiKey),
```
## Step 6: Update Branding
### Update package.json
```json
{
"name": "moreminimore",
"productName": "moreminimore",
"description": "Free, local, open-source AI app builder"
}
```
Replace the dependency:
```json
// FROM:
"@dyad-sh/supabase-management-js": "v1.0.1",
// TO:
"@moreminimore/supabase-management-js": "v1.0.1",
```
### Update Protocol Handlers
Edit `src/main.ts`:
```typescript
// Update protocol registration
app.setAsDefaultProtocolClient("moreminimore", process.execPath, [
path.resolve(process.argv[1]),
]);
// Update protocol validation
if (parsed.protocol !== "moreminimore:") {
dialog.showErrorBox(
"Invalid Protocol",
`Expected moreminimore://, got ${parsed.protocol}. Full URL: ${url}`,
);
return;
}
```
## Step 7: Convert Smart Context to Standard Feature
Edit `src/ipc/utils/smart_context_store.ts`:
```typescript
// Remove pro restriction
// FROM:
if (settings.enableDyadPro) {
// TO:
// Smart context now available for all users - removed pro restriction
if (true) {
```
## Step 8: Update UI Text
Update "CodeBase Context" to "Context Settings" in components:
```bash
# Find and replace in all TSX files
find src/components -name "*.tsx" -type f -exec sed -i.bak 's/CodeBase Context/Context Settings/g' {} \;
find src/components -name "*.tsx" -type f -exec rm {}.bak \;
```
## Step 9: Clean Up Unused Imports
### Clean up main.ts
```typescript
// Comment out unused import
// import { updateElectronApp, UpdateSourceType } from "update-electron-app"; // Removed - Dyad API dependency
```
### Clean up release_note_handlers.ts
```typescript
// Remove unused import
// import fetch from "node-fetch";
```
## Step 10: Install Dependencies and Test
```bash
# Install dependencies
npm install
# Test TypeScript compilation
npm run ts
# Test the application
npm start
```
## Validation
After applying the changes, validate that:
1. **TypeScript compilation passes**: `npm run ts`
2. **Application starts without errors**: `npm start`
3. **No Dyad API calls in the codebase**: `grep -r "api\.dyad\.sh" src/`
4. **No Dyad Engine calls**: `grep -r "engine\.dyad\.sh" src/`
5. **Custom features are enabled**: Check `src/custom/index.ts`
## Troubleshooting
### TypeScript Compilation Errors
If you encounter TypeScript errors:
1. Check for missing imports
2. Verify all Dyad API references are removed
3. Ensure pro feature handlers are properly removed
4. Check for unused variables and imports
### Runtime Errors
If the application doesn't start:
1. Check the console for specific error messages
2. Verify all IPC handlers are properly registered
3. Ensure all file paths are correct
4. Check for missing dependencies
### Missing Features
If some features don't work:
1. Verify smart context handlers are registered
2. Check that custom features are enabled
3. Ensure UI components are properly updated
4. Verify protocol handlers are working
## Rollback
If you need to rollback changes:
```bash
# Find your backup directory
ls -la dyad-backup-*
# Restore from backup (replace with your backup directory)
BACKUP_DIR="dyad-backup-YYYYMMDD-HHMMSS"
cp -r "$BACKUP_DIR/src" ./
cp "$BACKUP_DIR/package.json" ./
cp -r "$BACKUP_DIR/scripts" ./
# Reinstall dependencies
npm install
```
## What's Removed vs What's Kept
### Removed (Dyad Dependencies)
- ❌ Dyad API calls (templates, updates, release notes)
- ❌ Dyad Engine (AI processing)
- ❌ Pro features and restrictions
- ❌ Dyad branding and references
- ❌ Auto-update functionality
- ❌ Telemetry (disabled)
### Kept (Essential Services)
- ✅ OAuth services (Neon, Supabase) - with updated branding
- ✅ Help services - marked for future changes
- ✅ Core AI model connections (OpenAI, Anthropic, etc.)
- ✅ Local model support (Ollama, LM Studio)
- ✅ MCP (Model Context Protocol) support
- ✅ Database and file system operations
### Enhanced (Custom Features)
- ✅ Smart context (now available for all users)
- ✅ Remove-limit feature (unlimited usage)
- ✅ Context Settings (improved UI)
- ✅ MoreMinimore branding
## Future Considerations
### Help Services
The help services are currently kept but should be replaced with:
- Local documentation
- Community-driven support
- Custom help system
### Telemetry
Telemetry is disabled but could be replaced with:
- Local analytics
- Optional usage tracking
- Privacy-focused metrics
### Auto-Update
Auto-update is removed but could be replaced with:
- GitHub release checking
- Manual update notifications
- Custom update system
## Support
For issues with the debranding process:
1. Check this guide for troubleshooting steps
2. Review the automated script for reference implementations
3. Test changes in a development environment first
4. Keep backups of your working code
## Contributing
When contributing to MoreMinimore:
1. Ensure no Dyad dependencies are added
2. Maintain the custom features
3. Update documentation as needed
4. Test thoroughly before submitting changes
---
**Note**: This debranding process removes all Dyad commercial dependencies while maintaining the core functionality of the application. The result is a fully functional, open-source AI app builder with custom enhancements.