Spaces:
Sleeping
Sleeping
Mohammed AL Sarraj commited on
Commit Β·
d28190f
1
Parent(s): d715331
style: replace em dashes with hyphens for natural-sounding text
Browse files- app/home/templates/home/index.html +2 -2
- app/tools/changelog_ai/templates/changelog_ai/index.html +6 -6
- app/tools/doc_forge/templates/doc_forge/docs.html +1 -1
- app/tools/doc_forge/templates/doc_forge/index.html +3 -3
- app/tools/git_narrator/templates/git_narrator/index.html +1 -1
- app/tools/schema_detective/templates/schema_detective/index.html +4 -4
- app/tools/sql_whisperer/templates/sql_whisperer/index.html +3 -3
- app/tools/test_forge/templates/test_forge/index.html +4 -4
app/home/templates/home/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
-
{% block title %}DevKit
|
| 3 |
|
| 4 |
{% block content %}
|
| 5 |
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&display=swap" rel="stylesheet">
|
|
@@ -49,7 +49,7 @@
|
|
| 49 |
<div class="dk-hero">
|
| 50 |
<div class="dk-eyebrow"><span></span>Developer Toolkit<span></span></div>
|
| 51 |
<h1 class="dk-h1">Build better.<br><em>Ship faster.</em><span class="cursor"></span></h1>
|
| 52 |
-
<p class="dk-sub">Six precision tools for the daily developer workflow
|
| 53 |
<div class="dk-meta"><span>No signup required</span><span>Free forever</span><span>6 tools</span></div>
|
| 54 |
</div>
|
| 55 |
<div class="dk-section">
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
+
{% block title %}DevKit - Developer Toolkit{% endblock %}
|
| 3 |
|
| 4 |
{% block content %}
|
| 5 |
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&display=swap" rel="stylesheet">
|
|
|
|
| 49 |
<div class="dk-hero">
|
| 50 |
<div class="dk-eyebrow"><span></span>Developer Toolkit<span></span></div>
|
| 51 |
<h1 class="dk-h1">Build better.<br><em>Ship faster.</em><span class="cursor"></span></h1>
|
| 52 |
+
<p class="dk-sub">Six precision tools for the daily developer workflow - schema auditing, SQL generation, test suites, and documentation.</p>
|
| 53 |
<div class="dk-meta"><span>No signup required</span><span>Free forever</span><span>6 tools</span></div>
|
| 54 |
</div>
|
| 55 |
<div class="dk-section">
|
app/tools/changelog_ai/templates/changelog_ai/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
-
{% block title %}Changelog.ai
|
| 3 |
|
| 4 |
{% block extra_head %}
|
| 5 |
<style>
|
|
@@ -29,7 +29,7 @@
|
|
| 29 |
</div>
|
| 30 |
<div class="flex items-center gap-3">
|
| 31 |
<button id="btn-download-pdf"
|
| 32 |
-
title="Opens print dialog
|
| 33 |
class="hidden bg-white border border-slate-200 hover:border-slate-300 text-on-surface px-4 py-2 rounded-lg text-sm font-medium transition-all shadow-sm flex items-center gap-2">
|
| 34 |
<span class="material-symbols-outlined text-sm" style="font-size:16px">picture_as_pdf</span>
|
| 35 |
Save as PDF
|
|
@@ -320,13 +320,13 @@ refactor: clean up legacy charting utility"></textarea>
|
|
| 320 |
})
|
| 321 |
});
|
| 322 |
const data = await res.json();
|
| 323 |
-
if (!res.ok) { showError(data.error || 'Generation failed
|
| 324 |
lastResult = data;
|
| 325 |
renderChangelog(data);
|
| 326 |
showState('results');
|
| 327 |
btnDownloadPdf.classList.remove('hidden');
|
| 328 |
} catch (_) {
|
| 329 |
-
showError('Network error
|
| 330 |
}
|
| 331 |
}
|
| 332 |
|
|
@@ -431,7 +431,7 @@ refactor: clean up legacy charting utility"></textarea>
|
|
| 431 |
lines.push('## ' + meta.emoji + ' ' + getSectionLabel(section.type));
|
| 432 |
lines.push('');
|
| 433 |
(section.items || []).forEach(item => {
|
| 434 |
-
lines.push('- **' + (item.title || '') + '**
|
| 435 |
});
|
| 436 |
lines.push('');
|
| 437 |
});
|
|
@@ -679,7 +679,7 @@ refactor: clean up legacy charting utility"></textarea>
|
|
| 679 |
},
|
| 680 |
{
|
| 681 |
version: 'v3.1.2',
|
| 682 |
-
commits: `- feat: offline mode
|
| 683 |
- feat: biometric login (Face ID / fingerprint)
|
| 684 |
- feat: share to WhatsApp and Instagram Stories
|
| 685 |
- fix: app crashing on Android 12 when opening camera
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
+
{% block title %}Changelog.ai - AI Release Notes Generator{% endblock %}
|
| 3 |
|
| 4 |
{% block extra_head %}
|
| 5 |
<style>
|
|
|
|
| 29 |
</div>
|
| 30 |
<div class="flex items-center gap-3">
|
| 31 |
<button id="btn-download-pdf"
|
| 32 |
+
title="Opens print dialog - choose Save as PDF for a text-based, ATS-readable file"
|
| 33 |
class="hidden bg-white border border-slate-200 hover:border-slate-300 text-on-surface px-4 py-2 rounded-lg text-sm font-medium transition-all shadow-sm flex items-center gap-2">
|
| 34 |
<span class="material-symbols-outlined text-sm" style="font-size:16px">picture_as_pdf</span>
|
| 35 |
Save as PDF
|
|
|
|
| 320 |
})
|
| 321 |
});
|
| 322 |
const data = await res.json();
|
| 323 |
+
if (!res.ok) { showError(data.error || 'Generation failed - try again.'); return; }
|
| 324 |
lastResult = data;
|
| 325 |
renderChangelog(data);
|
| 326 |
showState('results');
|
| 327 |
btnDownloadPdf.classList.remove('hidden');
|
| 328 |
} catch (_) {
|
| 329 |
+
showError('Network error - is the server running?');
|
| 330 |
}
|
| 331 |
}
|
| 332 |
|
|
|
|
| 431 |
lines.push('## ' + meta.emoji + ' ' + getSectionLabel(section.type));
|
| 432 |
lines.push('');
|
| 433 |
(section.items || []).forEach(item => {
|
| 434 |
+
lines.push('- **' + (item.title || '') + '** - ' + (item.description || ''));
|
| 435 |
});
|
| 436 |
lines.push('');
|
| 437 |
});
|
|
|
|
| 679 |
},
|
| 680 |
{
|
| 681 |
version: 'v3.1.2',
|
| 682 |
+
commits: `- feat: offline mode - browse and save content without internet
|
| 683 |
- feat: biometric login (Face ID / fingerprint)
|
| 684 |
- feat: share to WhatsApp and Instagram Stories
|
| 685 |
- fix: app crashing on Android 12 when opening camera
|
app/tools/doc_forge/templates/doc_forge/docs.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
|
| 3 |
-
{% block title %}{{ owner }}/{{ repo }}
|
| 4 |
|
| 5 |
{% block extra_head %}
|
| 6 |
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
|
| 3 |
+
{% block title %}{{ owner }}/{{ repo }} - DocForge{% endblock %}
|
| 4 |
|
| 5 |
{% block extra_head %}
|
| 6 |
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
app/tools/doc_forge/templates/doc_forge/index.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
|
| 3 |
-
{% block title %}DocForge
|
| 4 |
|
| 5 |
{% block extra_head %}
|
| 6 |
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
@@ -125,7 +125,7 @@
|
|
| 125 |
<h3 class="text-3xl font-bold tracking-tight mb-4 text-on-surface">Understand any codebase in seconds.</h3>
|
| 126 |
<p class="text-on-surface-variant max-w-sm mb-8 font-medium">
|
| 127 |
DocForge parses file trees, function relationships, and logic flows to explain
|
| 128 |
-
<span class="italic text-on-surface">why</span> code works
|
| 129 |
</p>
|
| 130 |
<div class="mt-auto pt-8 flex items-center justify-between">
|
| 131 |
<div class="flex items-center gap-2 text-xs font-mono text-outline">
|
|
@@ -194,7 +194,7 @@
|
|
| 194 |
</div>
|
| 195 |
<div>
|
| 196 |
<h5 class="font-bold text-on-surface">AI-Written README</h5>
|
| 197 |
-
<p class="text-sm text-on-surface-variant">A complete, professional README with setup instructions, features, and badges
|
| 198 |
</div>
|
| 199 |
</div>
|
| 200 |
<div class="flex gap-4">
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
|
| 3 |
+
{% block title %}DocForge - AI Documentation Engine{% endblock %}
|
| 4 |
|
| 5 |
{% block extra_head %}
|
| 6 |
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
|
|
| 125 |
<h3 class="text-3xl font-bold tracking-tight mb-4 text-on-surface">Understand any codebase in seconds.</h3>
|
| 126 |
<p class="text-on-surface-variant max-w-sm mb-8 font-medium">
|
| 127 |
DocForge parses file trees, function relationships, and logic flows to explain
|
| 128 |
+
<span class="italic text-on-surface">why</span> code works - not just what it does.
|
| 129 |
</p>
|
| 130 |
<div class="mt-auto pt-8 flex items-center justify-between">
|
| 131 |
<div class="flex items-center gap-2 text-xs font-mono text-outline">
|
|
|
|
| 194 |
</div>
|
| 195 |
<div>
|
| 196 |
<h5 class="font-bold text-on-surface">AI-Written README</h5>
|
| 197 |
+
<p class="text-sm text-on-surface-variant">A complete, professional README with setup instructions, features, and badges - generated from your code.</p>
|
| 198 |
</div>
|
| 199 |
</div>
|
| 200 |
<div class="flex gap-4">
|
app/tools/git_narrator/templates/git_narrator/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
-
{% block title %}Git Narrator
|
| 3 |
|
| 4 |
{% block content %}
|
| 5 |
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
+
{% block title %}Git Narrator - Engineering Stories{% endblock %}
|
| 3 |
|
| 4 |
{% block content %}
|
| 5 |
|
app/tools/schema_detective/templates/schema_detective/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
-
{% block title %}Schema Detective
|
| 3 |
|
| 4 |
{% block extra_head %}
|
| 5 |
<style>
|
|
@@ -25,7 +25,7 @@
|
|
| 25 |
<button id="btn-clear" class="px-4 py-2 text-sm font-medium text-on-surface-variant hover:bg-surface-container rounded-lg transition-colors">
|
| 26 |
Clear
|
| 27 |
</button>
|
| 28 |
-
<button id="btn-download-pdf" title="Opens print dialog
|
| 29 |
<span class="material-symbols-outlined" style="font-size:16px">picture_as_pdf</span>
|
| 30 |
Save as PDF
|
| 31 |
</button>
|
|
@@ -348,7 +348,7 @@ CREATE TABLE prescriptions (
|
|
| 348 |
body: JSON.stringify({ schema })
|
| 349 |
});
|
| 350 |
const data = await res.json();
|
| 351 |
-
if (!res.ok) { showError(data.error || 'Audit failed
|
| 352 |
_lastFindings = data.findings || [];
|
| 353 |
renderResults(data);
|
| 354 |
showState('results');
|
|
@@ -356,7 +356,7 @@ CREATE TABLE prescriptions (
|
|
| 356 |
btnDownloadPdf.classList.remove('hidden');
|
| 357 |
btnDownloadPdf.classList.add('flex');
|
| 358 |
} catch (_) {
|
| 359 |
-
showError('Network error
|
| 360 |
}
|
| 361 |
}
|
| 362 |
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
+
{% block title %}Schema Detective - Database Schema Auditor{% endblock %}
|
| 3 |
|
| 4 |
{% block extra_head %}
|
| 5 |
<style>
|
|
|
|
| 25 |
<button id="btn-clear" class="px-4 py-2 text-sm font-medium text-on-surface-variant hover:bg-surface-container rounded-lg transition-colors">
|
| 26 |
Clear
|
| 27 |
</button>
|
| 28 |
+
<button id="btn-download-pdf" title="Opens print dialog - choose Save as PDF for a text-based, ATS-readable file" class="hidden items-center gap-2 px-4 py-2 bg-white border border-slate-200 hover:border-slate-300 rounded-lg text-sm font-medium text-on-surface shadow-sm transition-all">
|
| 29 |
<span class="material-symbols-outlined" style="font-size:16px">picture_as_pdf</span>
|
| 30 |
Save as PDF
|
| 31 |
</button>
|
|
|
|
| 348 |
body: JSON.stringify({ schema })
|
| 349 |
});
|
| 350 |
const data = await res.json();
|
| 351 |
+
if (!res.ok) { showError(data.error || 'Audit failed - try again.'); return; }
|
| 352 |
_lastFindings = data.findings || [];
|
| 353 |
renderResults(data);
|
| 354 |
showState('results');
|
|
|
|
| 356 |
btnDownloadPdf.classList.remove('hidden');
|
| 357 |
btnDownloadPdf.classList.add('flex');
|
| 358 |
} catch (_) {
|
| 359 |
+
showError('Network error - is the server running?');
|
| 360 |
}
|
| 361 |
}
|
| 362 |
|
app/tools/sql_whisperer/templates/sql_whisperer/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
-
{% block title %}SQL Whisperer
|
| 3 |
|
| 4 |
{% block content %}
|
| 5 |
|
|
@@ -36,7 +36,7 @@
|
|
| 36 |
{# ββ Body: split panel βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ #}
|
| 37 |
<div class="flex flex-1 overflow-hidden">
|
| 38 |
|
| 39 |
-
{# Left
|
| 40 |
<section class="w-[42%] flex flex-col gap-3 p-4 overflow-y-auto"
|
| 41 |
style="border-right: 1px solid rgba(60,60,67,0.10); background: #F2F2F7;">
|
| 42 |
|
|
@@ -93,7 +93,7 @@ CREATE TABLE orders (
|
|
| 93 |
</div>
|
| 94 |
</section>
|
| 95 |
|
| 96 |
-
{# Right
|
| 97 |
<section class="flex-1 flex flex-col p-4 gap-3 overflow-y-auto" style="background:#F2F2F7;">
|
| 98 |
|
| 99 |
{# Empty state #}
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
+
{% block title %}SQL Whisperer - NL to SQL{% endblock %}
|
| 3 |
|
| 4 |
{% block content %}
|
| 5 |
|
|
|
|
| 36 |
{# ββ Body: split panel βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ #}
|
| 37 |
<div class="flex flex-1 overflow-hidden">
|
| 38 |
|
| 39 |
+
{# Left - inputs #}
|
| 40 |
<section class="w-[42%] flex flex-col gap-3 p-4 overflow-y-auto"
|
| 41 |
style="border-right: 1px solid rgba(60,60,67,0.10); background: #F2F2F7;">
|
| 42 |
|
|
|
|
| 93 |
</div>
|
| 94 |
</section>
|
| 95 |
|
| 96 |
+
{# Right - results #}
|
| 97 |
<section class="flex-1 flex flex-col p-4 gap-3 overflow-y-auto" style="background:#F2F2F7;">
|
| 98 |
|
| 99 |
{# Empty state #}
|
app/tools/test_forge/templates/test_forge/index.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
|
| 3 |
-
{% block title %}Test Forge
|
| 4 |
|
| 5 |
{% block content %}
|
| 6 |
<!-- Top Nav -->
|
|
@@ -309,7 +309,7 @@
|
|
| 309 |
})
|
| 310 |
});
|
| 311 |
const data = await res.json();
|
| 312 |
-
if (!res.ok) { showError(data.error || 'Generation failed
|
| 313 |
|
| 314 |
generatedCode = data.test_code || '';
|
| 315 |
testOutput.textContent = generatedCode;
|
|
@@ -339,11 +339,11 @@
|
|
| 339 |
showState('results');
|
| 340 |
setAiStatus('ready');
|
| 341 |
} catch (_) {
|
| 342 |
-
showError('Network error
|
| 343 |
}
|
| 344 |
}
|
| 345 |
|
| 346 |
-
// Copy (no innerHTML
|
| 347 |
btnCopy.addEventListener('click', async () => {
|
| 348 |
if (!generatedCode) return;
|
| 349 |
await navigator.clipboard.writeText(generatedCode);
|
|
|
|
| 1 |
{% extends "base.html" %}
|
| 2 |
|
| 3 |
+
{% block title %}Test Forge - AI Test Suite Generator{% endblock %}
|
| 4 |
|
| 5 |
{% block content %}
|
| 6 |
<!-- Top Nav -->
|
|
|
|
| 309 |
})
|
| 310 |
});
|
| 311 |
const data = await res.json();
|
| 312 |
+
if (!res.ok) { showError(data.error || 'Generation failed - try again.'); return; }
|
| 313 |
|
| 314 |
generatedCode = data.test_code || '';
|
| 315 |
testOutput.textContent = generatedCode;
|
|
|
|
| 339 |
showState('results');
|
| 340 |
setAiStatus('ready');
|
| 341 |
} catch (_) {
|
| 342 |
+
showError('Network error - is the server running?');
|
| 343 |
}
|
| 344 |
}
|
| 345 |
|
| 346 |
+
// Copy (no innerHTML - toggle icon/label via textContent)
|
| 347 |
btnCopy.addEventListener('click', async () => {
|
| 348 |
if (!generatedCode) return;
|
| 349 |
await navigator.clipboard.writeText(generatedCode);
|