Releases: mellen9999/cmdchamp
Releases · mellen9999/cmdchamp
v1.2.7
v1.2.6
- disown: drop
disown -hfrom detach question (-h keeps job in table) - airodump-ng:
--channelnot-C(-C takes MHz, not channel numbers) - find -exec:
\;terminator now survives normalization intact - normalize every semicolon in a glued token (a;b;c), not just the first
- enforce #require on the text-match path
- reset sandbox between placement questions
- monotone-guard placement level on retake
- cap sandbox writes at 64MB so dd can't fill the disk
- portable disk-space check (df -kP)
- caveat reverse-shell (pentest) and iptables flush (opens all ports)
v1.2.5
- fix: `cmdchamp test` now exits non-zero on failure (was always 0 — masked broken tests)
- fix: profile/score integrity — survive unset/relative HOME and unwritable data dir; reset can't destroy its own backup
- fix: vi operator keys can no longer freeze the boss/challenge timer
- fix: bracketed paste — multi-line pastes flatten to one line, no early submit
- fix: cap sandbox processes against fork bombs
- fix: Home/End/Del no longer leak bytes as vi commands
- fix: ss "all connections" no longer listening-only; awk skips csv header; drop searchsploit -m footgun
- feat: confirm before reset wipes progress (scriptable when piped)
- ci: shellcheck + full test suites on push
v1.2.4
- trim dead tool
hcitool(removed from modern bluez —bluetoothctlis the taught answer) - trim
xargs-with-no-command as a newline→space hack (footgun;tr/pasteremain)
v1.2.3
- fix: relabel the bogus "GNU rename" prompt to name the two real tools (perl-rename / util-linux rename)
v1.2.2
- fix: piped answer variants (jq/awk/uniq/openssl/runc/capsh) were silently rejected in text-match mode — switched those answers to the § delimiter
- add selftest invariant that fails on any |-delimited question containing a shell pipe
v1.2.1
manpage cleanup: strip flags not taught anywhere
- audit every flag/keyword in each MANPAGE entry; remove those never used in level questions or scenarios
- trim flags from 47 commands (touch, less, find, wc, tar, ps, ssh, diff, docker, apt, dnf, hostname, etc.)
- drop
pacmanentry entirely — command never appears in any answer - delete 6 dead duplicate entries (hydra, airmon-ng, airodump-ng, aireplay-ng, aircrack-ng, openssl had earlier defs overridden by later)
v1.2.0
- fix ~100 prompts missing info needed to solve (all 30 levels audited)
- sandbox: bwrap --tmpfs syntax fixed — /tmp now actually mounts as tmpfs
- engine: concurrent instance scores merged by timestamp (no data loss)
- engine: unseen questions start at tier 0 (1 correct answer → learning, not mastered)
- engine: profile migration covers all old versions gracefully
- engine: placement test quit no longer saves partial low placement
- engine: boss round threshold clamps when pool < BOSS_TOTAL (was unwinnable)
- fix: _fnorm now keeps -d/-f/-F/-t pairs together through sort (cut -d: -f1 ≡ cut -f1 -d:)
- fix: regex with | inside |-delimited DSL question caused broken regex match
- fix: fire mode no longer claims '+2 points' (was flavor-only, never scored)
- fix: scenario snap save/restore TOCTOU window closed
- 3 new scenarios: Git Rescue (L23), Batch Refactor (L21), Forensic Sweep (L22)
- 19 new manpages: dig, host, column, printf, date, strace, timeout, inotifywait, openssl, whois, ssh-copy-id, aircrack-ng, airmon-ng, airodump-ng, aireplay-ng, hydra, bpftrace, auditctl, gdb + 8 more
- manpage upgrades: ssh (-p PORT), tar (-C fix + -j/-J), du (--max-depth), ps (-ef), nc (-u), grep (-R), nmap (root flags), iptables (-D/-I), cryptsetup (open/close), less (key bindings)
- 18 new selftests: merge-on-flush, canonical_cmd alias, bwrap /tmp, blocklist additions
- 9 content bugs: output check tightening, sort -k boundary fix, fd --changed-within unit fix
- docs: cmdchamp help expanded with env vars, requirements, data files, tips
v1.1.5
- fix: document cp -i/-n and shred -v/-f flags so prompts asking for those behaviors are solvable from the manpage
- docs: drop trend-bound wording in readme
v1.1.4
- fix: remove sandbox command output display after correct answers
- fix: probe bwrap at startup, fall back to text-match if blocked
- fix: route migration warning to stderr, detect 2>file as destructive
- perf: drop redundant subshell, defer score sort, cap session promotes