wtf-bro
v0.1.0
Published
Undo global buat vibecoder yang panik pas AI agent merusak codebase. Safety-first git rollback.
Maintainers
Readme
wtf-bro (What The Fix) 🛟
Tombol "Undo" global buat vibecoder yang panik saat AI agent (Claude Code, OpenCode, dll) merusak codebase. CLI rollback berbasis Git yang safety-first — bukan sekadar git reset --hard manual.
Package name: wtf-bro · Bin command: wtf
Kenapa beda dari git reset --hard biasa?
Sebelum aksi destructive, wtf otomatis backup state lu:
git tag wtf-bro-backup-<ts>→ snapshot commit posisi sekarang, biar reset ke commit lama tetap recoverable.git stash push -u→ amankan untracked files yang bakal kehapusgit clean -fd.
Jadi kalau salah pencet atau AI-nya ngaco, lu ga kehilangan data permanen.
Install
# Jalur utama (cocok buat skenario panik — ga perlu install dulu)
npx wtf-bro
# Atau install global biar command instan
npm i -g wtf-broCara pakai
wtf # TUI interaktif: pilih level rollback (1 / 3 / nuklir)
wtf save [label] # tandain posisi aman SEKARANG (panic button)
wtf undo # balik ke save point terakhir, atau ke HEAD kalau ga ada
wtf undo <commit> # balik ke commit tertentu (hash / branch / tag)
wtf --reset 1 # rollback 1 commit (non-interaktif, tetap auto-backup)
wtf --reset 3 # rollback 3 commit
wtf --reset nuclear # reset + clean semua untracked
wtf clean-backups # hapus tag+stash backup lama (save point aman)
wtf log # riwayat rollback + cara restoreDi TUI lu pilih:
- Rollback 1 commit — undo kerusakan terakhir
- Rollback 3 commits — lebih dalam
- Nuklir (reset + clean) — reset ke HEAD + hapus semua untracked. Butuh konfirmasi ketik ulang nama branch (bukan cuma Y/n), karena ireversibel via Git biasa.
Save point = posisi aman buat dongo
wtf save bikin tag wtf-bro-save-<label>-<ts> di commit lu sekarang. Kalau working tree lagi kotor, WIP lu di-stash dulu biar ga ilang. Pas AI ngaco, tinggal wtf undo → balik persis ke posisi itu (termasuk hapus file sampah yang AI bikin).
wtf undo (tanpa arg) cerdas:
- Kalau ada save point → balik ke situ.
- Kalau ga ada → balikin working tree ke HEAD (bersihin mess AI).
🎮 Tutorial — skenario hidup sehari-hari
Skenario 1: Sebelum biarin AI ngubah-ngubah (paling aman)
Bikin titik aman DULU, baru suruh AI kerja:
wtf save before-ai # tandain posisi aman sekarang
# ... suruh AI ngoding ...
# ... AI ngaco? ...
wtf undo # balik persis ke posisi amanSkenario 2: AI udah merusak, ga sempet save dulu
Kalau AI udah bikin kacau dan cuma ada perubahan yang belum di-commit:
wtf undo # ga ada save point -> balikin ke HEAD, bersihin mess AIIni batalin semua perubahan file + hapus file baru yang AI bikin, terus balik ke commit terakhir yang bener.
Skenario 3: Mau loncat ke kondisi lama
wtf undo <commit-hash> # balik ke commit tertentu (bisa pake hash/branch/tag)
# atau
wtf --reset 1 # mundur 1 commit
wtf --reset 3 # mundur 3 commit
wtf --reset nuclear # reset ke HEAD + hapus semua file untracked (hati-hati)Skenario 4: Salah pencet / rollback kebanyakan — RESTORE dari backup
Tenang. Semua aksi destructive di-backup otomatis (tag + stash). Gimana balikin:
# 1. Liat tag & stash backup yang terakhir dibikin
git tag | grep wtf-bro-backup
git stash list | grep wtf-bro-backup
# 2. Balik ke kondisi sebelum rollback (posisi commit-nya)
git reset --hard wtf-bro-backup-<ts>
# 3. Kalau ada file untracked yang ikut kehapus, pulihin dari stash
git stash apply wtf-bro-backup-<ts> # atau: git stash popwtf log juga nampilin tag backup tiap aksi, biar gampang dicari.
Kapan pakai apa (cheat sheet)
| Situasi | Command |
|---|---|
| Mau amanin posisi sebelum AI kerja | wtf save [label] |
| AI ngaco, mau balik ke posisi aman | wtf undo |
| Mau batalin semua perubahan yang belum di-commit | wtf undo |
| Mau mundur beberapa commit | wtf --reset N |
| Mau reset total + hapus file sampah | wtf --reset nuclear |
| Mau balik ke commit tertentu | wtf undo <hash> |
| Lupa abis ngapain, mau liat riwayat | wtf log |
| Salah pencet, mau balikin kondisi | git reset --hard wtf-bro-backup-<ts> |
| Backup tag/stash numpuk, mau bersihin | wtf clean-backups |
⚠️ Batas kemampuan (jujur)
- Butuh commit atau
wtf savebuat full undo. File baru yang belum PERNAH di-commit ga bisa dibalik — Git ga punya referensi ke dia. Solusinya:wtf save(atau commit) SEBELUM biarin AI ngubah-ubah, biar ada titik aman. wtf undoke HEAD cuma membatalkan perubahan yang belum di-commit. Buat loncat ke commit lampau, pakaiwtf undo <commit>atauwtf --reset N.- Semua aksi destructive di-backup otomatis (tag + stash). Pesan restore selalu ditampilin — data lu ga ilang permanen.
Fitur
- ✅ Auto-backup (tag + stash) sebelum tiap rollback
- ✅ Save point (
wtf save) + smart undo (wtf undo) — tombol aman buat dongo - ✅
wtf clean-backups— bersihin tag/stash backup lama (save point aman) - ✅ Audit log lokal di
~/.wtf/history.json - ✅ Konfirmasi ekstra buat reset nuklir (ketik ulang nama branch)
- ✅ Deteksi commit limit (repo baru ga bisa rollback 3)
- ✅ Deteksi detached HEAD (dicegah biar ga ngerusak)
- ✅ Deteksi package manager dari lockfile (npm/pnpm/yarn/bun)
- ✅ Cross-platform (MacOS, Linux, Windows)
⚠️ Known conflict bin command wtf
Bin command wtf bisa bentrok dengan:
wtf-cli(package npm lain, mati sejak 2019) yang juga ekspos binwtf.- Utility jadul
wtfdi beberapa distro Linux/Mac (dari paket BSD games, viaapt/brew).
Ini bukan blocker — npm i -g wtf-bro yang diinstall paling akhir bakal menang di node_modules/.bin. Tapi kalau nemu command wtf ngelakuin hal aneh, cek dulu apakah ada yang nge-override.
Development
npm install
npm run build # bundle ke dist/
npm test # jalanin unit/E2E test (node:test + tsx)
npm run typecheckTech Stack
Node.js + TypeScript + tsup (bundle) + @clack/prompts (TUI) + cross-spawn (safe shell exec) + picocolors (styling).
License
MIT © harikahono
