devclean-cli 0.5.0

Audit and safely remove rebuildable development artifacts
Documentation
<!doctype html>
<html lang="vi">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Completion — DevCleaner Settings Redesign</title>
    <link rel="stylesheet" href="/assets/report.css">
    <link rel="stylesheet" href="../../.claude/skills/html-report/assets/report.css">
</head>

<body>
    <header>
        <div class="head-inner">
            <span class="eyebrow">Feature completion · macOS Settings UI/UX</span>
            <h1>DevCleaner — <em>Settings theo đúng tác vụ</em></h1>
            <p class="subtitle">Form dài duy nhất đã được thay bằng bốn khu vực native macOS: General, Scan,
                Intelligence và Safety. Mỗi khu vực chỉ giữ control, dữ liệu và hành động thuộc đúng ngữ cảnh.</p>
            <div class="meta">
                <span>📅 2026-07-12 12:02 +07</span>
                <span>📦 <code>/Applications/DevCleaner.app</code></span>
                <span>🧪 29/29 Swift tests</span>
                <span><span class="badge ok">Runtime pass</span></span>
            </div>
        </div>
    </header>

    <main>
        <section class="panel ok">
            <h2>Kết quả</h2>
            <p class="lead"><b>Settings không còn bắt người dùng cuộn qua mọi chức năng để tìm một tùy chọn.</b>
                Toolbar native có icon và nhãn chữ, cửa sổ giữ kích thước ổn định 620 × 688 pt và từng tab có vùng cuộn
                độc lập khi nội dung thực sự dài.</p>
            <div class="cards">
                <div class="card ok"><span class="num">4</span><span class="label">Tab theo tác vụ</span></div>
                <div class="card ok"><span class="num">620</span><span class="label">Chiều rộng pt</span></div>
                <div class="card ok"><span class="num">29/29</span><span class="label">Swift tests</span></div>
                <div class="card ok"><span class="num">60</span><span class="label">Safety holds nguyên vẹn</span></div>
            </div>
            <div class="callout ok">
                <span><strong>HIG direction:</strong> dùng control và toolbar native, icon SF Symbols kèm nhãn chữ,
                    nền solid, hierarchy theo tác vụ và đặt toàn bộ hành động xoá/khôi phục trong Safety.</span>
            </div>
        </section>

        <section class="panel">
            <h2>Mục lục</h2>
            <div class="toc">
                <a href="#information-architecture">1 — Kiến trúc thông tin</a>
                <a href="#ux-details">2 — Chi tiết UI/UX</a>
                <a href="#runtime">3 — Runtime proof</a>
                <a href="#verification">4 — Verification gates</a>
                <a href="#boundary">5 — Phạm vi phát hành</a>
            </div>
        </section>

        <section id="information-architecture" class="panel info">
            <h2><span class="num">1</span>Kiến trúc thông tin</h2>
            <table class="zebra">
                <thead>
                    <tr><th>Tab</th><th>Nội dung</th><th>Lý do</th></tr>
                </thead>
                <tbody>
                    <tr><td><b>General</b></td><td>Launch at Login và scan locations.</td><td>Cấu hình app và phạm vi làm việc nền tảng.</td></tr>
                    <tr><td><b>Scan</b></td><td>Age/size eligibility và category toggles.</td><td>Các rule quyết định artifact nào được đưa vào scan.</td></tr>
                    <tr><td><b>Intelligence</b></td><td>Observation & Approvals, Apple On-Device, DeepSeek và Keychain.</td><td>Gom toàn bộ cơ chế giải thích/học cục bộ vào một ngữ cảnh.</td></tr>
                    <tr><td><b>Safety</b></td><td>Retention, held artifacts, diagnostics và guardrails.</td><td>Restore/Delete/Purge không lẫn với cấu hình scan hoặc AI.</td></tr>
                </tbody>
            </table>
        </section>

        <section id="ux-details" class="panel">
            <h2><span class="num">2</span>Chi tiết UI/UX</h2>
            <ol class="steps">
                <li>Top-level <code>TabView</code> dùng toolbar chuẩn của Settings scene trên macOS.</li>
                <li>Mỗi tab có SF Symbol và text label; không dựa vào icon-only navigation.</li>
                <li>General tăng vùng nhập roots để chỉnh nhiều đường dẫn mà không phải kéo trong ô quá nhỏ.</li>
                <li>Safety tách Retention khỏi Held artifacts để ý nghĩa “giữ bao lâu” không trộn với “xử lý ngay”.</li>
                <li>Credential chỉ xuất hiện trong Intelligence và vẫn dùng <code>SecureField</code> + macOS Keychain.</li>
                <li>Bốn vùng nội dung có accessibility identifier riêng; toolbar và control xuất hiện đầy đủ trong AX tree.</li>
            </ol>
            <div class="callout warn">
                <span><strong>Không thay đổi business logic:</strong> binding UserDefaults, provider routing,
                    confirmation dialog, restore/delete/purge và Launch at Login vẫn dùng đúng implementation cũ.</span>
            </div>
        </section>

        <section id="runtime" class="panel ok">
            <h2><span class="num">3</span>Runtime proof</h2>
            <table class="kv">
                <tr><th>Installed bundle</th><td><code>/Applications/DevCleaner.app</code> đã được thay bằng release build mới và relaunch.</td></tr>
                <tr><th>General</th><td>Launch at Login, status copy và scan locations hiện đúng; AX tree pass.</td></tr>
                <tr><th>Scan</th><td>Older than, Minimum size và bốn category toggles hiện đúng; AX tree pass.</td></tr>
                <tr><th>Intelligence</th><td>Observation, provider picker, Keychain state và availability message hiện đúng.</td></tr>
                <tr><th>Safety</th><td>Retention và 5/60 held artifacts hiện đúng; không bấm Restore/Delete/Purge.</td></tr>
                <tr><th>Credential</th><td>Đã lưu lại bằng installed app mới; UI báo provider ready. Không ghi secret vào source/report.</td></tr>
                <tr><th>Disk data</th><td>60 safety holds vẫn nguyên vẹn; không chạy cleanup hoặc purge.</td></tr>
            </table>
        </section>

        <section id="verification" class="panel ok">
            <h2><span class="num">4</span>Verification gates</h2>
            <table class="zebra">
                <thead>
                    <tr><th>Gate</th><th>Kết quả</th><th>Evidence</th></tr>
                </thead>
                <tbody>
                    <tr><td>Swift format lint</td><td><span class="badge ok">Pass</span></td><td>Sources và Tests.</td></tr>
                    <tr><td>Swift tests</td><td><span class="badge ok">29/29</span></td><td>Không regression provider, Keychain, safety hold và focus coordinator.</td></tr>
                    <tr><td>Release build</td><td><span class="badge ok">Pass</span></td><td>Swift app + bundled Rust helper.</td></tr>
                    <tr><td>Deep/strict codesign</td><td><span class="badge ok">Pass</span></td><td>Installed bundle thỏa Designated Requirement.</td></tr>
                    <tr><td>Runtime tabs</td><td><span class="badge ok">4/4</span></td><td>General, Scan, Intelligence và Safety được click và đọc qua AX.</td></tr>
                    <tr><td>Visual inspection</td><td><span class="badge ok">Pass</span></td><td>Safety và Intelligence được chụp ở 620 × 688 px, dark mode render đúng.</td></tr>
                    <tr><td>Diff hygiene</td><td><span class="badge ok">Pass</span></td><td><code>git diff --check</code>.</td></tr>
                </tbody>
            </table>
        </section>

        <section id="boundary" class="panel warn">
            <h2><span class="num">5</span>Phạm vi phát hành</h2>
            <p>Feature đã được cài và xác minh trên máy này, nhưng toàn bộ thay đổi vẫn là local. Chưa commit, push,
                tag, notarize hoặc phát hành artifact/Homebrew Cask mới.</p>
            <div class="callout warn">
                <span><strong>Credential hygiene:</strong> API key từng được dán trực tiếp trong chat; nên rotate ở DeepSeek
                    và cập nhật lại trong Intelligence trước khi dùng lâu dài.</span>
            </div>
        </section>
    </main>

    <footer>
        <div class="foot-inner">
            <span class="foot-brand"><span class="dot"></span>DevCleaner Settings</span>
            <span>Generated 2026-07-12 12:02 +07</span>
            <span>·</span>
            <span><code>local installed build</code></span>
            <span>·</span>
            <span>No commit · no push · no cleanup executed</span>
        </div>
    </footer>
</body>

</html>