diff --git a/astro.config.mjs b/astro.config.mjs index e8701e7..16c02d5 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -135,6 +135,8 @@ export default defineConfig({ '**/html2canvas*.js', '**/heic-to*.js', '**/libheif*.js', + '**/terser*.js', + '**/csso*.js', 'og/*.png', ], runtimeCaching: [ diff --git a/docs/superpowers/plans/2026-08-14-tools-batch-7.md b/docs/superpowers/plans/2026-08-14-tools-batch-7.md new file mode 100644 index 0000000..4ceabfb --- /dev/null +++ b/docs/superpowers/plans/2026-08-14-tools-batch-7.md @@ -0,0 +1,36 @@ +# Seven-Tool Batch — Spec + Plan + +**Date:** 2026-08-14. One branch (`feat/tools-batch-7`), one PR → develop, bundled prod promotion. + +All client-side. Each tool: pure lib (+ Vitest) where there's real logic, thin island, registry entry, **EN + ID SEO with howTo**. Bahasa uses "tool" loanword. + +## Global Constraints +- Commit under personal noreply identity; no AI-attribution trailers; no absolute machine paths. +- Heavy deps dynamic-imported in the lib + chunk added to `workbox.globIgnores`. +- New tools `status: 'beta'`. + +## Tools + +### 1. CIDR Calculator (`cidr-calculator`, Dev, icon `Network`) +Pure lib `src/tools/dev/cidr.lib.ts`: `parseCidr('192.168.1.0/24')` → network, broadcast, netmask, wildcard, first/last host, host count, /prefix. IPv4. Unit-tested (parse, edge /31 /32, invalid). Island: input → summary rows + Copy. + +### 2. Hash Text (`hash-text`, Dev, icon `Hash`) +Lib `src/tools/dev/hash-text.lib.ts`: `hashText(text, algo)` via `hash-wasm` one-shot (md5/sha1/sha256/sha512/crc32), `ALGORITHMS` list. Dynamic-import hash-wasm. Tested with a known vector (`sha256('abc')`). Island: textarea → all-algos or selected → rows + Copy. + +### 3. SRT/VTT Editor (`subtitle-editor`, Media, icon `Subtitles`) +Lib `src/tools/media/subtitle.lib.ts`: `parseSubtitles(text)` (auto-detect SRT vs VTT) → `Cue[] = {index,start,end,text}`; `toSrt(cues)`, `toVtt(cues)`, `formatTimestamp`. Unit-tested (round-trip, cross-convert, malformed tolerance). Island: paste/upload → editable cue list + convert + download .srt/.vtt. + +### 4. HTML/CSS/JS Minifier (`minifier`, Dev, icon `Minimize2`) +Lib `src/tools/dev/minify.lib.ts`: `minifyCss(css)` (csso, dynamic), `minifyJs(js)` (terser, dynamic, async), `minifyHtml(html)` (hand-rolled: strip comments, collapse inter-tag whitespace, preserve `
/