Releases: will2469/charites
Release list
Charites v1.0.0-beta.3
Release Notes - Charites v1.0.0-beta.3 (2026-09-07)
Welcome to Charites v1.0.0-beta.3, the third beta release of the compile-time static analyzer and design token linter for Astro, React TSX/JSX, and Tailwind CSS.
This release introduces the System & Environment Doctor (charites doctor), installs robust concurrency and version guards in scripts/install.sh, adds native archive unpacking (.tar.gz and .zip) for charites update, and documents real-world environment observations ("honest errors") surfaced during beta testing.
1. Beta Evaluation Rationale & Honest Field-Testing Retrospective
Note
Mengapa Rilis Ini Dinaikkan ke v1.0.0-beta.3?
Pengujian lapangan riil pada v1.0.0-beta.2 mengungkap beberapa kondisi lingkungan pengembang nyata yang memerlukan mitigasi sistem tingkat pertama:
- PATH Pollution & Collision: Lingkungan shell sering kali memuat duplikasi entri direktori di variabel
$PATH(misalnya~/.local/binyang terpanggil belasan kali dari.bashrcmajemuk) atau adanya beberapa salinan binercharitesdi direktori berbeda (~/.local/binvs/usr/local/binvs~/go/bin) yang berpotensi membingungkan versi mana yang aktif. - Installer Race Condition & State Guard: Script installer lama tidak memiliki pengecekan status "already installed" dan proteksi kunci konkurensi (lockfile), sehingga jika proses download/install berjalan di latar belakang bersamaan dengan perintah pencopotan (uninstall), file yang baru dicopot dapat langsung tercipta kembali tanpa disengaja.
- In-Place Update Archive Unpacking: Fitur pembaruan mandiri (
charites update) kini dilengkapi mesin ekstraksi bawaan untuk mengekstrak biner langsung dari paket arsip resmi GitHub (.tar.gzdan.zip) dengan pertahanan terhadap decompression bomb (io.LimitReader). - Root CLI Shorthand Aliases: Mendukung
-u,--update, serta-doctor,--doctorlangsung dari level root CLI untuk mempermudah eksekusi tanpa keharusan mengingat struktur subcommand.
2. Fitur Baru Utama (Highlights)
System & Environment Diagnostic Tool (charites doctor)
Perintah baru untuk memvalidasi kesehatan instalasi dan lingkungan shell pengembang:
charites doctor
# atau via shortcut:
charites -doctor
charites --doctorFitur audit yang dilakukan:
- $PATH Cleanliness: Mendeteksi entri direktori duplikat di
$PATHdan memberikan rekomendasi pembersihan. - Binary Discovery & Collision: Menemukan semua lokasi biner
charitesdi$PATH, menandai biner aktif, dan memperingatkan jika ada biner sekunder yang tertimpa (shadowed). - Write Permissions: Menguji apakah direktori biner dapat ditulis secara langsung untuk operasi
charites updatetanpa sudo. - API Reachability: Memvalidasi konektivitas ke GitHub Releases API (batas waktu 3 detik).
- Workspace Health: Mendeteksi konfigurasi
charites.yamllokal.
Installer Guards (scripts/install.sh)
- Already-Installed Guard: Jika versi yang sama sudah terpasang, installer akan memberi tahu dan keluar secara aman tanpa men-download ulang (dapat dipaksa dengan opsi
--forceatauCHARITES_FORCE=1). - Concurrency Lock Protection: Menggunakan lockfile
/tmp/charites-installer.lockberbasis PID untuk mencegah eksekusi installer ganda secara simultan. - Pencegahan Duplikasi Shell Profile: Menghindari penambahan baris
export PATHberulang ke~/.bashrc,~/.zshrc, atau~/.profile.
Archive Unpacking Engine pada charites update
- Mendukung pembaruan mandiri (in-place self-update) langsung dari arsip
.tar.gz(Linux/macOS) dan.zip(Windows) tanpa memerlukan perkakas dekompresi eksternal. - Menerapkan batas ukuran ekstraksi 100MB (
io.LimitReader) untuk mencegah kerentanan dekompresi bom (CWE-409 / gosec G110).
3. Update & Upgrade Commands
Bagi pengguna yang sudah memasang Charites versi sebelumnya:
A. In-Place Self-Update (Rekomendasi Utama)
charites update
# atau alias:
charites --update
charites -uB. Via Go Toolchain
go install github.com/will2469/charites/cmd/charites@v1.0.0-beta.3C. Linux & macOS (One-Line Updater / Installer)
curl -fsSL https://raw.githubusercontent.com/will2469/charites/main/scripts/install.sh | bashD. Windows (PowerShell)
irm https://raw.githubusercontent.com/will2469/charites/main/install.ps1 | iexE. Verifikasi Versi & Diagnosis Sistem
charites --version
charites doctor4. Fresh Installation (Pemasangan Baru)
# Go Developers:
go install github.com/will2469/charites/cmd/charites@v1.0.0-beta.3
# Linux & macOS:
curl -fsSL https://raw.githubusercontent.com/will2469/charites/main/scripts/install.sh | bash
# Windows PowerShell:
irm https://raw.githubusercontent.com/will2469/charites/main/install.ps1 | iex5. Changelog & Riwayat Rilis
- Rincian perubahan lengkap dapat dilihat di CHANGELOG.md.
- Arsip versi historis (seperti
v1.0.0-beta.1) tersimpan di direktori docs/05-release/changelogs/. - Unduhan biner dan checksums SHA-256 tersedia langsung di GitHub Releases.
Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3
Charites v1.0.0-beta.2
Release Notes - Charites v1.0.0-beta.2 (2026-09-07)
Welcome to Charites v1.0.0-beta.2, the second beta release of the compile-time static analyzer and design token linter for Astro, React TSX/JSX, and Tailwind CSS.
This release introduces the File-First Report Hierarchy for JSON and Markdown outputs, the Spacing Rhythm Drift cadence analyzer (ux.spacing-rhythm-drift), several new UX and form safety rules, and strict SSOT canonical ordering.
1. Beta Evaluation Rationale & Multi-Project Calibration
Important
Mengapa Rilis Ini Masih Berstatus Beta (v1.0.0-beta.2)?
-
Empirical Multi-Project Calibration: Evaluasi performa deteksi, akurasi parsing AST, serta rasio false positive (FP) / true positive (TP) masih memerlukan kontribusi dan pengujian riil pada lebih dari 1 proyek eksternal. Kalibrasi lintas berbagai monorepo produksi (Astro, Next.js/React, Tailwind v3/v4) sangat esensial sebelum menetapkan rilis stabil
v1.0.0. -
Spatial Rhythm Drift Fine-Tuning: Rule baru
ux.spacing-rhythm-driftmemperkenalkan model relasional spasial ($N-1$ interval sibling dan observasi properti peer container). Model ini membutuhkan benchmarking performa dan variasi cadence layout dari komunitas developer. -
Community Feedback & Edge Cases: Kami mengundang tim pengembang untuk menguji rilis ini pada proyek aktif mereka dan melaporkan temuan, performa deteksi, atau false positive melalui GitHub Issues atau MCP tool bawaan
charites_report_issue.
2. Update & Upgrade Commands
Bagi pengguna yang sudah memasang Charites versi sebelumnya (v1.0.0-beta.1 atau rilis development), gunakan perintah berikut untuk memperbarui:
A. In-Place Self-Update (Rekomendasi Utama)
Charites dilengkapi mekanisme pembaruan otomatis di tempat tanpa perlu download manual:
charites updateAlias:
charites --update
charites -uB. Via Go Toolchain
go install github.com/will2469/charites/cmd/charites@v1.0.0-beta.2C. Linux & macOS (One-Line Updater / Installer)
curl -fsSL https://raw.githubusercontent.com/will2469/charites/main/install.sh | bashD. Windows (PowerShell)
irm https://raw.githubusercontent.com/will2469/charites/main/install.ps1 | iexE. Verifikasi Versi Terpasang
charites --versionOutput yang diharapkan:
charites version 1.0.0-beta.2 (go1.26.x)
3. Fresh Installation (Pemasangan Baru)
Untuk pemasangan baru pada mesin atau pipeline CI/CD:
# Go Developers:
go install github.com/will2469/charites/cmd/charites@v1.0.0-beta.2
# Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/will2469/charites/main/install.sh | bash
# Windows PowerShell:
irm https://raw.githubusercontent.com/will2469/charites/main/install.ps1 | iex4. Rangkuman Pembaruan & Fitur Baru (What's New)
File-First Output Contract (JSON & Markdown)
- Remediation-First Hierarchy: Mengubah hierarki pelaporan dari rule-first menjadi file-first (
files: [...]). Setiap berkas merangkum jumlah error/warning serta daftar temuan dengan koordinat tepatline:columndan arahan supresi (suppression). Hal ini mempercepat alur kerja remediasi baik bagi pengembang maupun AI coding agent. - Backward Compatibility: Root-level
diagnostics: [...]tetap dipertahankan dengan jaminan invarian identik dengan gabungan pelanggaran berkas. - File-Grouped Markdown Audit: Format
--format=markdown/-o audit-report.mdkini menyajikan kartu skor ringkasan eksekutif, tabel pelanggaran terkelompok per-berkas, dan tautan langsung ke wiki dokumentasi kanonikal.
Aturan Baru (New Quality & UX Rules)
-
ux.spacing-rhythm-drift: Mendeteksi inkonsistensi irama spasial (spacing cadence) menggunakan model relasional interval sibling$N-1$ serta observasi properti kontainer peer. -
ux.destructive-action-unconfirmed(Fixes #11): Analisis context-aware state-gating yang mewajibkan dialog atau konfirmasi inline pada tombol aksi destruktif. -
responsive.mobile-text-overflow(Fixes #10): Dukungan penuh utilitaswrap-break-worddan overflow handling untuk viewport mobile. -
responsive.fractional-width-gap-drift(Fixes #8): Deteksi layout drift pada flexbox akibat pembagian lebar fraksional yang bertabrakan dengan gap. -
ux.multiline-input-misuse(Fixes #7): Deteksi pencegahan penggunaan<textarea>atau multiline input pada field data baris tunggal. -
semantic.consecutive-br-spacing(Fixes #6): Deteksi penggunaan tag<br>ganda berturut-turut untuk manipulasi jarak tata letak visual. -
ux.number-input-wheel-hazard,ux.number-input-identity-misuse,ux.number-input-missing-bounds(Fixes #5): Rangkaian audit keamanan dan keandalan input formulir bertipe number. - Component-Scoped Style Drift Analyzer (Fixes #4): Deteksi deviasi token dan style drift antar instans komponen serupa.
Presisi Diagnostik, Performa & Determinisme
-
SSOT Canonical Ordering: Pengurutan diagnostik 7-dimensi kanonikal kini berada di
internal/ir(ir.SortDiagnostics), mengeliminasi multi-pass sorting di lapisan presenter. - Linear File Grouping ($O(N)$): Partisi linier murni untuk pengelompokan berkas tanpa alokasi memori berlebih.
-
Invariant I10 Guarantee: Metrik
ScanSummarydijamin murni tanpa manipulasi di layer pelaporan. -
Deterministic & Clockless: Resolusi path murni berbasis string arithmetic (tanpa syscall I/O
os.Stat) dan timestamp markdown deterministik untuk hasil yang 100% byte-for-byte reproducible. -
Token Hardening: Penutupan celah arbitrer pada
scale-[...], slash opacity (bg-primary/10), dan ekspansi token utilitasshadow-*.
5. Panduan Penggunaan Singkat
# Pemindaian standar direktori saat ini
charites scan .
# Pemindaian dengan laporan JSON terstruktur (file-first)
charites scan -f json .
# Pemindaian dan pembuatan laporan audit Markdown lengkap
charites scan -f markdown -o audit-report.md .
# Menjalankan server Model Context Protocol (MCP 2026-07-28)
charites mcp6. Changelog Lengkap
Rincian commit lengkap dan perbandingan diff dapat dilihat di CHANGELOG.md serta GitHub Releases.
Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2
Charites v1.0.0-beta.1
Release Notes - Charites v1.0.0-beta.1 (2026-09-06)
Welcome to Charites v1.0.0-beta.1, the initial public beta release of the ultra-fast, zero-CGO, zero-Node.js compile-time static analyzer and design token linter for Astro, React TSX/JSX, and Tailwind CSS.
1. Beta Evaluation Rationale & Field-Testing Focus
Note
Why is this release marked v1.0.0-beta.1?
Although Charites achieves 100% test passage across its internal suite (including the canonical 1-SSOT Tri-Corpus, E2E CLI tests, and 14,000+ continuous Go 1.26 fuzzing mutations), this release is deliberately designated as Beta for the following reasons:
- Empirical Real-World Project Validation: Over 50% of the advanced rule combinations, nested component structures, and bespoke Astro/React architectural patterns have not yet been stress-tested on diverse, production-scale monorepos outside this repository.
- False Positive & Precision Tuning: Static analysis on modern frontend codebases can encounter unusual template string patterns, complex HOC wrappers, or proprietary UI wrappers. The primary objective of
v1.0.0-beta.1is to measure real-world false positive (FP) and false negative (FN) rates directly in external repositories. - Deferred Expansion Scopes: Certain expansion domains have been intentionally deferred-such as the
seo.*domain (SPEC-EXP-12-SEO)-to prevent superficial redundancy against established linters (e.g. HTMLHint/axe) and keep the core compiler laser-focused on design systems, accessibility, and Core Web Vitals.
We encourage developers and teams to test v1.0.0-beta.1 on their active Astro and React projects and report false-positives or edge cases via the built-in MCP tool charites_report_issue or directly on GitHub.
2. Highlighted Capabilities & Core Architecture
Ultra-Fast Zero-CGO Static Analysis Compiler
- Native Go 1.26 Architecture: Sub-millisecond per-file AST traversal without Node.js runtime or CGO overhead.
- Unified Intermediate Representation (Leaf IR): Streams
.astroand.tsx/.jsxfiles into a single normalized AST representation. - SSOT Multi-Format Design Token Engine: Auto-discovers
global.css,index.css,@theme, andtokens.json(W3C DTCG format). Constructs a directed token graph with cycle detection (ErrCycleDetected) and recursion budget limits. - The Banana Test: Implements evidence-based token verification. Custom or untokenized utilities pass cleanly without false positives if no corresponding semantic token is defined in the token graph.
90 Canonical Rules across 8 Quality Domains
-
Theme & Design Tokens (
theme.*- 32 Rules): Enforces design token consistency, eliminates hardcoded slash opacity modifiers (bg-primary/10$\rightarrow$ bg-primary-light), prevents dark mode elevation collapse, and safeguards CSS Cascade Layer integrity. -
Accessibility (
a11y.*- 16 Rules): Enforces WCAG 2.2 AA standards, calculates mathematical relative color contrast ratios without headless browsers, validates form control bindings, eliminates modal keyboard traps, and prevents iOS Safari auto-zoom hazards. -
Responsive Ergonomics (
responsive.*- 17 Rules): Enforces Apple HIG / WCAG touch target dimensions ($\ge 44 \times 44\text{px}$ ), modern container queries (@container), dynamic viewport units (dvh/svh), responsive table overflow wrapping, and mobile virtual keyboard clearance. - **Core Web Vitals & Runtime Performance (
lcp.*,cls.*,inp.*,performance.*- 25 Rules):-
LCP: Prioritizes hero assets (
fetchpriority="high"), preloads delayed-discovery hero images, and prevents render-blocking head scripts. - CLS: Requires explicit dimensions and aspect ratios on media, reserves layout space for dynamic content, and eliminates layout-triggering animations.
- INP: Detects render-blocking scripts, unyielded long tasks, cascading React Context domain coupling, and un-deferred Astro islands.
-
LCP: Prioritizes hero assets (
Model Context Protocol (MCP 2026-07-28 Pure Stateless Standard)
Charites embeds a native, pure stateless MCP server for IDEs and AI coding agents (Claude Desktop, Cursor, Antigravity):
charites_scan: Audits workspace components and provides structured diagnostics with online wiki links and remediation hints.charites_explain_rule: Returns complete 8-Pillars architectural documentation, risk taxonomy, non-compliant examples, and remediation advice.charites_list_rules: Discovers all available rules and metadata.charites_report_issue: Cryptographic Two-Phase Human-in-the-Loop (HITL) reporting tool that generates SHA-256 signed drafts (Phase 1) and submits verified issues via GitHub CLI or prefilled browser URLs upon explicit user confirmation (Phase 2).
Multi-Format Reporters & CLI Tooling
- Terminal Inline ANSI: Clean, colorized diagnostic reports with source code snippets, column pointers, and actionable remediation tips.
- Streaming JSON (
--format=json): Machine-readable diagnostic envelope includingdoc_urland rule metadata. - Markdown Audit Reports (
--format=markdown/-o report.md): Executive summary scorecards, category violation breakdowns, and direct links to online wiki documentation. - Self-Management: In-place binary self-update (
charites update) and clean uninstaller (charites uninstall).
1-SSOT Tri-Corpus Testing Harness
Every rule is rigorously validated against a 17-pattern matrix in tests/correctness/<rule_id>/:
- Positive (P1-P5): Obvious, indirect, helper-wrapped, nested, and aliased violations.
- Negative (N1-N5): Valid design tokens, explicit ignore directives, third-party libraries, semantic HTML, and untokenized custom values (Banana Test).
- Adversarial (A1-A7): Template literals, ternary expressions, spread properties, dynamic object classes, variable shadowing, and cyclic tokens.
- Continuous Fuzzing: Over 14,000 synthetic CSS and AST mutations tested with zero crashes or memory leaks.
3. Installation & Getting Started
Via Go Toolchain (Recommended for Go Developers)
go install github.com/will2469/charites/cmd/charites@v1.0.0-beta.1Linux & macOS (Automated Script)
curl -fsSL https://raw.githubusercontent.com/will2469/charites/main/scripts/install.sh | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/will2469/charites/main/scripts/install.ps1 | iexBasic Usage
# Scan current workspace with default inline ANSI reporter
charites scan .
# Generate comprehensive Markdown audit report
charites scan -f markdown -o audit-report.md .
# Run MCP server for AI agent integration
charites mcp4. Full Changelog
All notable commits and features leading up to this release are documented in CHANGELOG.md.
What's Changed
- build(deps): bump softprops/action-gh-release from 3.0.2 to 3.0.3 by @dependabot[bot] in #1
New Contributors
- @dependabot[bot] made their first contribution in #1
Full Changelog: https://github.com/will2469/charites/commits/v1.0.0-beta.1