Semua perubahan penting pada proyek TrustPositif Validator didokumentasikan dalam berkas ini.
Format changelog ini mengacu pada Keep a Changelog, dan proyek ini mematuhi standar Semantic Versioning.
idn2 (IDNA2008):
xn--...) berbasis standar modern IDNA2008 (RFC 5890, 5891, 5892, 5893) menggunakan idn2 (GNU Libidn2).--no-tr46 sebelum tahap validasi RFC/TLD, memastikan domain IDN internasional divalidasi dengan tepat terhadap Root Zone Database resmi IANA (yang memuat ribuan TLD berkode xn--...).idn (GNU Libidn) serta gracefully pass-through jika tools belum terpasang tanpa merusak alur data.USE_IDN2=1/0 dan opsi switch CLI (--punycode, --no-punycode, --idn, --no-idn).idn2 / libidn2 / libidn2-utils pada berbagai package manager Linux (apt, dnf, apk, zypper, brew).DOMAINS_TO_CLEAN.txt:
DOMAINS_TO_CLEAN.txt menggunakan hash table lookup AWK (FNR == NR).*.clean_domain) dalam waktu sub-detik (<0.3 detik untuk 124.000+ domain) tanpa membebani heap memory bash (zero bash array footprint).DOMAINS_TO_CLEAN_FILE atau flag CLI --clean-file=<path>.CLEAN_SUBDOMAINS=1 atau 0) serta switch CLI flag (--clean-subdomains, --no-clean-subdomains).0 (dinonaktifkan) untuk menjaga kompatibilitas murni dengan alur eksekusi default.${1-} dengan loop while [[ $# -gt 0 ]] modular yang mendukung penerimaan kombinasi opsi baris perintah (--clean-subdomains, --clean-file=..., --cut-subdomains, --punycode, dll.) secara elegan tanpa mengganggu pemanggilan terjadwal di cron job.for (i = n; i >= 2; i--) pada parser AWK. Memastikan bahwa pembersihan hanya membuang subdomain dari domain target, sedangkan domain utama (apex/root domain) tetap dipertahankan pada blocklist DNS/RPZ agar proteksi keamanan situs target tidak bocor.[[ -f "${DOMAINS_TO_CLEAN_FILE}" ]] dengan log peringatan informatif jika berkas daftar pembersihan tidak ditemukan di sistem, sehingga skrip tidak crash dan tetap melanjutkan pemrosesan daftar validasi utama.README.md), mempertahankan jalur donasi resmi PayPal.zero warnings) dengan penambahan anotasi pengaman SC2016 yang tepat pada sub-parser AWK.isatty):
clear agar hanya dieksekusi apabila stdout terhubung langsung ke terminal interaktif ([[ -t 1 ]]). Menghindari polusi escape code ANSI pada eksekusi otomatis via cron jobs, systemd services, dan redirection log file.NO_COLOR). Saat variabel NO_COLOR terdefinisi, seluruh kode pewarnaan ANSI di-reset ke string kosong, menjamin output bersih untuk log analyzer dan CI/CD pipeline.chmod 0644):
0644 secara eksplisit pada temporary staging file (VALID_OUTPUT_TMP) dan output final (VALID_OUTPUT). Memastikan berkas blocklist hasil validasi selalu dapat dibaca oleh service DNS (BIND9, Unbound, PowerDNS, Pi-hole, AdGuard Home) maupun Web Server (Nginx, Apache) meski script dijalankan di bawah umask sistem yang restriktif (077 atau 027).\r):
gsub(/\r/, "", domain) tepat di awal pemrosesan record AWK chunk parser. Mencegah kegagalan evaluasi regex dan korupsi karakter newline tersembunyi pada berkas unduhan sumber berformat Windows/DOS.sub(/^[*|]+/, "", domain) menjadi sub(/^[*|@.]+/, "", domain) untuk membersihkan prefix karakter @, *, |, dan leading dots . pada input mentah.force_cleanup:
force_cleanup dengan array path dinamis agar tidak melakukan scanning dan pembersihan ganda pada direktori /tmp ketika $TMPDIR bernilai /tmp atau tidak didefinisikan.sysctl -n hw.ncpu 2>/dev/null pada fungsi get_total_cores() untuk memastikan deteksi jumlah core CPU berjalan optimal di macOS dan FreeBSD saat utility nproc maupun getconf tidak tersedia.set -Eeuo pipefail./, ^, $, ?, #) sebelum evaluasi port dan titik dua. Memperbaiki bug di mana entri seperti example.com:8080/path sebelumnya terbuang.||), wildcard (*), leading dot (.), serta suffix (^, $options) agar blocklist generasi modern dapat diproses tanpa kehilangan domain utama.::, ::1, 0:0:0:0:0:0:0:1, fe80::).VALID_OUTPUT_TMP di dalam direktori target OUTPUT_DIR sebelum perintah penggantian atomic mv, menjamin atomisitas write 100% terjaga meskipun /tmp dan OUTPUT_DIR berada pada partisi/mount point yang berbeda.50%) menjadi nilai absolut (MiB) ketika mendeteksi BSD sort pada macOS dan FreeBSD untuk mencegah kegagalan eksekusi.sysctl hw.physmem pada fungsi show_system_resources().$TMPDIR dan /tmp.sort -z (NUL-delimited, tidak didukung BSD sort) dengan kombinasi pipeline find -print0 | xargs -0 printf '%s\n' | sort yang mematuhi standar POSIX.2G untuk platform non-GNU (macOS/FreeBSD) guna menggantikan format persentase yang eksklusif untuk GNU coreutils.DOMAIN_FILE):
DOMAIN_FILE dari working directory saat ini (CWD) ke dalam direktori terisolasi TEMP_DIR demi keamanan dan pembersihan atomic.^[0-9]+$ pada variabel page_size, free_pages, dan inactive_pages sebelum operasi aritmetika shell di fungsi show_system_resources().KEBUTUUM menjadi KEBUTUHAN..github/workflows/jekyll-gh-pages.yml..github/dependabot.yml untuk monitoring otomatis dependensi GitHub Actions.sysctl -n hw.memsize dan vm_stat.mawk -> gawk -> awk dengan fallback GNU Parallel.DOMAINS_TO_CLEAN dengan stream processing berbasis chunk file untuk performa maksimal dan efisiensi RAM.set -Eeuo pipefail, signal trap cleanup, atomic rename, dan SSL fallback.