import { useEffect, useRef } from "react"; export function HelpDialog({ open, onClose, }: { open: boolean; onClose: () => void; }) { const dialog = useRef(null); useEffect(() => { const node = dialog.current; if (!node) return; if (open && !node.open) node.showModal(); if (!open && node.open) node.close(); }, [open]); return (

Local-first help

About Archive Tools

Inspect ZIP/ZIP64, TAR/USTAR/PAX, gzip and tar.gz files without uploading them.

Safe repackaging

Select regular entries and Archive Tools verifies their content before placing it in a newly created ZIP. It never restores archive paths directly onto your filesystem.

Intentional boundaries

Encryption, split ZIPs, nested archive expansion, GNU TAR extensions, symlinks, hardlinks, device nodes and FIFOs are unsupported. Unsafe paths, duplicates, excessive sizes and suspicious compression ratios are blocked.

Previews and comparison

Plain UTF-8 text, bounded hexadecimal data and static JPEG/PNG/WebP images can be previewed. Comparisons use normalized path, type, expanded size and CRC-32.

Deterministic creation

Creation sorts files by path and normalizes timestamps, ownership and permissions. ZIP compression is pinned to a fixed implementation and level.

); }