diff --git a/css/style.css b/css/style.css index f1205ce..4b5e72c 100644 --- a/css/style.css +++ b/css/style.css @@ -250,6 +250,8 @@ h1, h2, h3, h4, h5 { .output-container { position: relative; } +.fuzzer-list .token-chip { position: relative; } +.fuzzer-list .token-chip .copy-button { position: static; } .section-header { margin-bottom: 15px; diff --git a/index.html b/index.html index 05c58c0..9f5e094 100644 --- a/index.html +++ b/index.html @@ -433,7 +433,7 @@
-
+
#{{ i+1 }} diff --git a/js/app.js b/js/app.js index ee1273f..360f8e7 100644 --- a/js/app.js +++ b/js/app.js @@ -1778,7 +1778,17 @@ window.app = new Vue({ }, copyAllFuzz() { this.copyToClipboard(this.fuzzerOutputs.join('\n')); }, downloadFuzz() { - const blob = new Blob([this.fuzzerOutputs.join('\n')], { type: 'text/plain;charset=utf-8' }); + const lines = this.fuzzerOutputs.map((s, i) => `#${i+1}\t${s}`).join('\n'); + const header = `# Parseltongue Fuzzer Output\n# count=${this.fuzzerOutputs.length}\n# seed=${this.fuzzerSeed || ''}\n# strategies=${[ + this.fuzzUseRandomMix?'randomMix':null, + this.fuzzZeroWidth?'zeroWidth':null, + this.fuzzUnicodeNoise?'unicodeNoise':null, + this.fuzzWhitespace?'whitespace':null, + this.fuzzCasing?'casing':null, + this.fuzzZalgo?'zalgo':null, + this.fuzzEncodeShuffle?'encodeShuffle':null + ].filter(Boolean).join(',')}\n`; + const blob = new Blob([header + lines + '\n'], { type: 'text/plain;charset=utf-8' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'fuzz_cases.txt'; a.click(); setTimeout(()=>URL.revokeObjectURL(url), 200);