Files
clawd/analyze-mobile-menu.js

143 lines
6.2 KiB
JavaScript

// Analyze files.html mobile menu logic
const testFiles = [
{ name: 'AGENTS.md', status: 'M', expectPreview: true, expectPDF: true, expectGitDiff: true },
{ name: 'FEATURE_PDF_DOWNLOAD.md', status: '??', expectPreview: true, expectPDF: true, expectGitDiff: false },
{ name: 'TOOLS.md', status: 'M', expectPreview: true, expectPDF: true, expectGitDiff: true },
{ name: 'dashboard/api.py', status: 'M', expectPreview: false, expectPDF: false, expectGitDiff: true },
{ name: 'memory/2026-02-05.md', status: '??', expectPreview: true, expectPDF: true, expectGitDiff: false }
];
console.log('========================================');
console.log('MOBILE MENU LOGIC ANALYSIS');
console.log('========================================\n');
console.log('Based on files.html openFile() function:\n');
console.log('Lines 1256-1290 (approx):');
console.log(' const isMarkdown = path.endsWith(\'.md\');');
console.log(' previewBtn.style.display = isMarkdown ? \'flex\' : \'none\';');
console.log(' downloadPdfBtn.style.display = isMarkdown ? \'flex\' : \'none\';');
console.log(' previewMenuItem.classList.toggle(\'hidden\', !isMarkdown);');
console.log(' downloadPdfMenuItem.classList.toggle(\'hidden\', !isMarkdown);');
console.log('');
console.log(' const hasGitChanges = !!getGitStatusForPath(path);');
console.log(' diffBtn.style.display = hasGitChanges ? \'flex\' : \'none\';');
console.log(' diffMenuItem.classList.remove(\'hidden\');');
console.log(' diffMenuItem.disabled = !hasGitChanges;');
console.log('');
console.log('Mobile CSS (lines 813-825):');
console.log(' @media (max-width: 768px) {');
console.log(' #previewBtn, #downloadPdfBtn, #diffBtn, #reloadBtn {');
console.log(' display: none !important;');
console.log(' }');
console.log(' .editor-menu-mobile {');
console.log(' display: flex !important;');
console.log(' }');
console.log(' }');
console.log('\n========================================');
console.log('EXPECTED BEHAVIOR ON MOBILE (375px)');
console.log('========================================\n');
testFiles.forEach(file => {
console.log(`\n${file.name} (git status: ${file.status})`);
console.log('─'.repeat(50));
const isMarkdown = file.name.endsWith('.md');
const hasGitChanges = file.status !== '??'; // Untracked files don't have git diff
console.log(` Is Markdown: ${isMarkdown}`);
console.log(` Has Git Changes: ${hasGitChanges} (status: ${file.status})`);
console.log('');
console.log(' Hamburger Menu (⋮): VISIBLE (always on mobile)');
console.log('');
console.log(' Menu Items:');
console.log(` Preview: ${isMarkdown ? 'VISIBLE' : 'HIDDEN (not markdown)'}`);
console.log(` Download PDF: ${isMarkdown ? 'VISIBLE' : 'HIDDEN (not markdown)'}`);
console.log(` Git Diff: ${hasGitChanges ? 'VISIBLE' : 'VISIBLE but DISABLED (no git changes)'}`);
console.log(` Reload: VISIBLE (always)`);
console.log('');
// Check expectations
const issues = [];
if (file.expectPreview && !isMarkdown) {
issues.push('❌ Expected preview but file is not markdown');
} else if (!file.expectPreview && isMarkdown) {
issues.push('❌ Did not expect preview but file is markdown');
}
if (file.expectPDF && !isMarkdown) {
issues.push('❌ Expected PDF but file is not markdown');
} else if (!file.expectPDF && isMarkdown) {
issues.push('❌ Did not expect PDF but file is markdown');
}
if (file.expectGitDiff && !hasGitChanges) {
issues.push('❌ Expected git diff but file has no git changes (status: ??)');
} else if (!file.expectGitDiff && hasGitChanges) {
issues.push('❌ Did not expect git diff but file has git changes');
}
if (issues.length > 0) {
console.log(' 🔴 ISSUES:');
issues.forEach(issue => console.log(` ${issue}`));
} else {
console.log(' ✅ Logic matches expectations');
}
});
console.log('\n\n========================================');
console.log('CODE BEHAVIOR ANALYSIS');
console.log('========================================\n');
console.log('✅ CORRECT BEHAVIOR:');
console.log(' - Hamburger menu (⋮) always visible on mobile');
console.log(' - Preview/PDF menu items: shown only for .md files');
console.log(' - Git Diff menu item: always shown but disabled for ?? files');
console.log(' - Desktop buttons hidden on mobile with !important');
console.log('');
console.log('⚠️ POTENTIAL ISSUE:');
console.log(' The code shows diffMenuItem always visible but disabled for files');
console.log(' with no git changes. This is technically correct but could be');
console.log(' confusing for users (they see a disabled option).');
console.log('');
console.log(' Better approach would be:');
console.log(' diffMenuItem.classList.toggle(\'hidden\', !hasGitChanges);');
console.log(' instead of:');
console.log(' diffMenuItem.classList.remove(\'hidden\');');
console.log(' diffMenuItem.disabled = !hasGitChanges;');
console.log('');
console.log('📝 RECOMMENDATION:');
console.log(' Change line ~1288 from:');
console.log(' diffMenuItem.classList.remove(\'hidden\');');
console.log(' diffMenuItem.disabled = !hasGitChanges;');
console.log(' to:');
console.log(' diffMenuItem.classList.toggle(\'hidden\', !hasGitChanges);');
console.log('');
console.log('\n========================================');
console.log('SUMMARY');
console.log('========================================\n');
console.log('The mobile menu logic is MOSTLY CORRECT:');
console.log('');
console.log('✅ Hamburger menu appears on mobile');
console.log('✅ Preview/PDF shown only for markdown files');
console.log('✅ Git Diff shown for files with git status (M, A, D, R)');
console.log('⚠️ Git Diff shown but DISABLED for untracked (??) files');
console.log(' (Could be improved by hiding instead of disabling)');
console.log('');
console.log('Expected behavior per file:');
testFiles.forEach(file => {
const isMarkdown = file.name.endsWith('.md');
const hasGitChanges = file.status !== '??';
const preview = isMarkdown ? '✓' : '✗';
const pdf = isMarkdown ? '✓' : '✗';
const diff = hasGitChanges ? '✓' : '✗ (disabled)';
console.log(` ${file.name.padEnd(30)} [${file.status}] → Preview:${preview} PDF:${pdf} Diff:${diff}`);
});