Skip to content
CertForged

What's new

Release log for CertForged — newest at the top. If something we shipped here is still broken on your end, hit contact or post in the Discord #bug-reports channel.

Two-host lab — real ssh, NFS, autofs between server1 and server2

The simulator now models two machines, not one. A new /lab route gives you server1 + server2 side-by-side, and the ssh-key-auth, network-storage, and autofs topics each ship multi-host mastery tasks that span both. ssh-copy-id from server1 actually writes the key to server2’s authorized_keys; mount -t nfs server2:/exports/data validates against server2’s real export table. The validator only passes when the whole flow works end-to-end — the way the exam will test it.

Added (5)

  • +/lab route — two terminals side-by-side at desktop widths, tab switcher on mobile. Each host has its own command history, hostname (server1.lab.local, server2.lab.local), and fully isolated state.
  • +Multi-host mastery (8 new tasks) — ssh-key-auth (3), network-storage (3), autofs (2). Each card renders two terminals and the validator checks state on BOTH server1 AND server2, so half-done flows fail closed.
  • +Multi-host worked examples — new "server1 → server2" replay examples in the Examples tab for ssh-key-auth, NFS, and autofs. Click Replay and watch each step run on the right host, badged by hostname.
  • +Real peer-aware engine commands — ssh, scp, ssh-copy-id, exportfs, showmount, mount.nfs now route through the peer registry. ssh user@server2 checks server2’s authorized_keys; mount -t nfs server2:/path validates server2’s /etc/exports. Single-host tasks unaffected — every command falls back to prior behavior when no peer is registered.
  • +Network Storage (NFS) topic shipped — storage/network-storage was a placeholder; it now has full Concept, Deep Dive, Examples, Practice (4 quiz items), and Mastery (3 multi-host tasks) sections.

nmtui — full TUI for NetworkManager

nmtui is now live as a real TUI, not a hint blurb. Edit a connection, activate / deactivate, and set the system hostname — all through the familiar boxed menu, keyboard-driven. Same engine state nmcli writes to, so you can switch between the two without drift.

Added (6)

  • +nmtui main menu — full-screen TUI with Edit a connection / Activate a connection / Set system hostname / Quit. Arrow keys or j/k move; Enter activates; Esc/q quit.
  • +Edit a connection — list view + form view for Ethernet profiles. Edit name, IPv4 method (auto/manual/disabled), address, gateway, DNS (space-separated), autoconnect. OK saves through the same nmcli connection modify engine path. Cancel discards.
  • +Activate a connection — list connections, * next to active ones, Enter toggles up/down. Equivalent to nmcli connection up / nmcli connection down.
  • +Set system hostname — single text-input form. OK writes through engine.network.hostname (same path as hostnamectl set-hostname).
  • +man nmtui — full keymap + scope documentation. whatis nmtui / whereis nmtui resolve too.
  • +Ctrl+C in any sub-view returns to the main menu rather than killing the session. Matches real nmtui.

vi/vim, parted, big bug-bash + 25 man pages

Several days of bug reports compounded into one deploy. Most of these came directly from emails and Discord messages — thank you for sending them. If something I shipped here is still broken on your end, hit reply or post in #bug-reports.

Fixed (11)

  • vi/vim works in every sandbox now — not just the main terminal. Practice exam mode, worked-example sandboxes, and mastery terminal tasks all have the same editor.
  • fdisk and gdisk now show their REPL prompt (Command (m for help):) inside Learn + Exam mode. Before this, the bash prompt was showing while you were inside the REPL — confusing and easy to miss that you were in a modal.
  • Practice question answers no longer disappear when you tab over to the deep dive and back. Your mid-session work persists across tab switches inside a topic.
  • Terminal task state (mastery + exam) now survives navigating away and back. If you were mid-task on swap or LVM, your edits and package installs don't get wiped when you click into another tab.
  • Clicking the CertForged logo while signed in keeps you in the app (takes you to your dashboard, not the marketing page).
  • dnf clean all and dnf makecache work. Were "command not found" before — they exit success now with the canonical dnf output.
  • help typed at the prompt prints sandbox orientation instead of "command not found".
  • wget exists in the package catalog. dnf install wget now works — this was breaking m-pkg-07 and m-pkg-09 silently.
  • Brace expansion (mv /home/{old,new}.txt) confirmed working — was reported as broken; turned out to already be implemented but unverified for the exact reporter case. Test added.
  • Firewall rich rules (firewall-cmd --add-rich-rule=...) now work — fw-ex-3 worked example was failing because the engine had no rich-rule handler.
  • vi <directory> now rejects cleanly instead of silently consuming your edits (the old behavior was: open empty buffer, type stuff, press :wq, and the engine quietly didn't write because target was a dir).

Added (7)

  • +vi/vim full editor. Alt-screen, modes (NORMAL/INSERT/COMMAND), the locked MVP keymap: i/a/o/O/Esc, h/j/k/l + arrows, 0/$/gg/G, x/r/dd/yy/p/u, :w/:q/:wq/:q!. Not a heredoc-fallback or a hint blurb — a real editor that opens like vi on a RHEL box.
  • +parted interactive REPL. parted /dev/sdb drops into the (parted) prompt — mklabel / mkpart / print / rm / quit. Script mode (parted -s DEVICE COMMAND) still works.
  • +help builtin command. Sandbox-aware orientation: lists common builtins, points at man <cmd> for everything else.
  • +"Review sooner" button on practice questions. After you submit, you can pull the item back into the review queue for tomorrow without resetting your attempt count or streak. Sarah Neese asked for this — thank you.
  • +25 new man pages: parted, rpm, chown, find, grep, sed, ssh, sshd_config, crontab, journalctl, ip, lsblk, blkid, mkfs, restorecon, chcon, setsebool, getsebool, hostnamectl, timedatectl, chronyc, df, du, ps, kill, tar. whatis and whereis resolve them all. (Total man-page coverage went from 8 pages to 33 today.)
  • +Two new vi-required mastery tasks: m-boot-07 (add a kernel param to /etc/default/grub) and m-sel-07 (set SELINUX=permissive in /etc/selinux/config).
  • +Customer bug tracker (internal). Every reported issue from email/Discord now goes in docs/customer-bug-tracker.md and doesn't get closed until the fix ships AND the reporter is notified. This is the discipline that's preventing the half-shipped-fix pattern.

Sprint drop — +94 mastery tasks + fdisk REPL

Worked-example replays, +94 new mastery tasks across all 36 topics, real fdisk modal session with prompt switching.

Fixed (5)

  • Three networking topics had broken MDX (Abdullah Mojumder, Discord 5/14) — Practice + Mastery tabs were crashing on click. Fixed.
  • Mastery setup-prop drop on some topics — tasks needed a re-render to seed their state. Fixed.
  • Review Queue UI copy was unclear (Daisy, Discord 5/16). Rewrote the intro to name the "Review →" button and explain spaced repetition without the SM-2 jargon.
  • Finalize-attempt button now navigates / shows a visible result (was saving server-side but the page never updated).
  • Several validators were graded "missing" for valid commands (sgidTeamwork, aclAliceRW, file750, daveAgingPolicy, bobInWheel) — rooted in the +94 task sprint shipping with the validator wiring.

Added (3)

  • ++94 mastery tasks across all 36 RHCSA topics. Every topic now has at least 6 tasks. 216 mastery tasks total.
  • +Real fdisk REPL. n / p / 1 / +1G / w walked as a modal session, not a hint blurb.
  • +init=/bin/bash recovery recipe added to the boot-recovery topic (Abdullah Mojumder, Discord 5/17) — covers rw remount, SELinux (enforcing=0 + /.autorelabel), and the exec /sbin/init hand-off.

Persistence bug fix — sign-out no longer wipes your progress

A serious sync bug was masking practice attempts. Signing out within 5 seconds of completing a practice task wiped local data before the pending push fired — on next sign-in, an older server snapshot restored. If you've been hitting "the mastery gate won't open" with ProtonMail / privacy-mode browsing, this is what was happening.

Fixed (1)

  • Sync layer now flushes any pending writes before the local DB is cleared on sign-out. Going forward, practice attempts persist reliably across sign-out / sign-in cycles.
CertForged is built solo — every bug here was a real report. Thank you for sending them.