Skip to content

Releases

tsudev-cwico-v26.11.10.2

Choose a tag to compare

@github-actions github-actions released this 10 Nov 03:20
d9846f0

Bản sửa lỗi quan trọng. Ở bản 26.8.19, bấm Quét hệ thống trên máy
thật làm cả cửa sổ trắng trơn. Bản này sửa lỗi đó, thêm phân trang cho danh
sách hàng trăm mục, và không thay đổi việc phần mềm được hay không được gỡ.

A critical fix. In 26.8.19, pressing Scan on a real machine blanked
the whole window. This release fixes it, pages long lists, and changes
nothing about what the tool will or will not remove.

The first build of the day, tsudev-cwico-v26.11.10, stopped in the release
pipeline before producing anything (see the last Fixed item below) and was
never published. Its tag remains; this is the same change set.

Added

  • A standalone command-line build, tsudev-cwico_<version>_x64-cli.exe, is
    attached to each release - no Rust toolchain needed. See
    cwico.tsudev.com/dong-lenh.

  • Product site cwico.tsudev.com: downloads with
    SHA-256, and a searchable catalogue of every safety rule and tweak.

  • The installers carry the tsudev mark: NSIS header and sidebar, MSI banner
    and welcome dialog, generated by tools/gen_installer_images.py from the
    official mark. The standards gate now fails a build that is missing an
    icon or installer image, or whose tauri.conf.json points at one that does
    not exist.

  • Every record list - the scan results, the tweak catalogue, the items in the
    removal plan - pages at 10 / 20 / 50 / 100 / 200 rows (default 10, picker
    bottom-left, remembered per list). A real scan returns hundreds of items.

  • Search in the software list ignores Vietnamese diacritics: dich vu finds
    Dịch vụ.

Changed

  • Safety database 1.0.2: the 17 rules that had no display name (Skype,
    Microsoft Edge, Photos, Cortana, Copilot and others) now carry one in both
    languages, so the app groups them under a readable name. No rule changed
    class or what it matches.
  • Colours come from the tsudev design tokens. Muted text was 3.6:1 on white,
    below WCAG AA; interactive edges now use the 3:1 border-control; safety
    badges and status colours use the status tokens. An automated WCAG 2.2 AA
    check of the scan screen went from 783 contrast failures to 2 (light) and
    951 to 0 (dark).

Fixed

  • The window went blank after the first scan of a real machine. Empty
    extra and executables were left out of the JSON the engine sends the UI,
    which types them as required; one item without them unmounted the whole
    interface. The same gap in RunReport.warnings would have blanked the run
    panel after every clean removal. Both are now always sent, and
    tests/ipc_contract.rs pins the contract. Found by running 26.8.1901 on
    Windows 11 Pro 25H2 - the first live run of this tool.
  • A render error now shows a bilingual error screen with the details and a
    Reload button instead of an empty window.
  • Dates read HH:mm DD/MM/YYYY / DD/MM/YYYY in both languages, as the
    tsudev design system requires, instead of 9 thg 11, 2026 and ISO dates;
    the About panel's Release and Architecture labels are translated.
  • Window title, installer copyright and long description no longer contain
    escaped em-dashes; copyright reads Copyright (c) 2026 tsudev.
  • The release build passed -Version to the winget manifest generator, which
    takes -Tag; every release run would have failed at that step.
  • The release build read CHANGELOG.md as cp1252 on the Windows runner and
    died on Vietnamese text; the job now runs Python in UTF-8 mode.

tsudev-cwico-v26.8.19

Choose a tag to compare

Read this before installing. This build compiles, passes 136 tests and
packages cleanly on a Windows CI runner, but it has never been run on a live
Windows machine. Every Win32 and WinRT call is exercised only by unit tests
of its pure logic — no code path has yet touched a real registry, service
control manager or task scheduler.

Start with the commands that change nothing:

cwico info                    # what it detects about your machine
cwico scan                    # the inventory, classified
cwico plan --safe-only        # what removal would do — a dry run

The desktop app's Dry run button does the same thing. Only --apply,
or the Remove button after the plan dialog, changes anything — and even then
a System Restore Point is taken first, or the run is cancelled.

The installer is unsigned, so Windows SmartScreen will warn on first run.

First release. The project was previously a single 640-line PowerShell script
(legacy/Optimize_Win11_For_Dev.ps1) that applied twelve fixed groups of
changes with no inspection, no selection and no way back.

Added — scanning

  • Registry uninstall keys across HKLM, HKCU and both the 64-bit and
    WOW6432Node views, reading DisplayName, DisplayVersion, Publisher,
    UninstallString, QuietUninstallString, InstallLocation,
    EstimatedSize and InstallDate.
  • UWP/MSIX packages via the WinRT PackageManager, including framework and
    system-signature flags.
  • Provisioned packages — the ones that reinstall themselves for every new user
    account, which is why removed bloatware "comes back".
  • Windows services via EnumServicesStatusExW / QueryServiceConfigW.
  • Scheduled tasks via the ITaskService COM interfaces.
  • Autostart entries: Run and RunOnce in both hives and views, plus the
    per-user and all-users Startup folders, with detection of entries pointing
    at programs that no longer exist.

Added — safety

  • Safety database (data/safety-db.json): 58 rules classifying software
    as Safe (29), Caution (11) or Critical (18), each with a bilingual
    explanation. Unmatched items are Unknown, never Safe.
  • Hard block on Critical items. RemovalPlan::build refuses to plan them;
    no flag, confirmation or CLI switch overrides it, and the engine re-asserts
    the invariant before executing.
  • Per-item confirmation for Caution and Unknown items. Bulk selection
    cannot supply it.
  • Deletion guard (cwico_core::guard): validates every filesystem path
    and registry key immediately before deletion. Rejects drive roots, system
    directories, parents of protected directories, user profile roots and
    personal folders, shared containers, every registry hive root, the service
    control database, and any path with an unexpanded %VARIABLE%, a ..
    traversal or a wildcard.
  • Process deny-list: shared hosts (svchost.exe), boot-critical
    processes and Defender are never terminated.

Added — rollback

  • System Restore Point via SRSetRestorePointW before the first destructive
    step. If it cannot be created the run is cancelled rather than proceeding
    unprotected, and Windows' 24-hour throttle is detected rather than mistaken
    for success.
  • .reg export of every registry key a run will touch, in both views, plus a
    generated restore-registry.cmd that re-imports them without this tool.
  • JSON transaction log per run.

Added — removal

Four-step flow: terminate the software's processes, run the vendor's own
uninstaller silently, remove and deprovision the package, then sweep residue.
A failed step stops that item without stopping the run, and deep clean never
follows a failed uninstall.

Added — interfaces

  • Desktop application (Tauri v2, React 19, TypeScript, Tailwind 4) in
    Vietnamese and English, with light and dark themes.
  • Headless CLI (cwico) with JSON output for auditing and scripting.
    Everything is a dry run until --apply.
  • System tweaks catalogue (data/tweaks.json): 36 individually selectable
    changes ported from the legacy script, each with a safety class and — where
    possible — a revert path.

Packaging

  • MSI and NSIS installers via the Tauri bundler.
  • MSIX manifest and Microsoft Store submission notes.
  • winget manifests in English and Vietnamese.
  • GitHub Actions for CI (engine tests on Linux, Windows type-checking from
    Linux, front-end build, Windows build) and releases.

Notes

Behaviour deliberately not carried over from the legacy script:
$ErrorActionPreference = "SilentlyContinue" swallowing every failure;
unconditional removal of Edge, Media Player and Cortana; silently disabling
Windows Search, SysMain and the Program Compatibility Assistant; deleting the
TEMP directory rather than its contents; and restarting Explorer without
asking. See legacy/README.md.