kubestronaut-sim/CHANGELOG.md
vumas3r a87668c183 docs: add CHANGELOG.md covering every release so far
Add a changelog from the first release (2026.10.12.1) up to
2026.10.15.3, newest first, with Added/Changed/Removed/Fixed sections
and the commit behind each entry. List dark mode under 2026.10.15.3,
since it shipped without a version bump.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JZPd3GGWyxTgAkL6a4gAJz
2026-10-15 17:42:21 -06:00

104 lines
5.8 KiB
Markdown

# Changelog
Notable changes to kubestronaut-sim, newest first. A version is the `VERSION` string in `ksim`
(year.month.day.n); `./ksim help` and the top bar of the web page show the one you are running.
Every entry names the commit it came in.
## 2026.10.15.3 — 2026-10-15
### Added
- **Browser UI in the style of [CK-X](https://github.com/sailor-sh/CK-X)** (`bab85d1`), itself
modelled on the Linux Foundation exam UI. Written from scratch, with nothing loaded from the
network.
- **Landing page.** The track switch sits in the top bar. **Start exam** opens a dialog to pick
the session: the next step on the path, an objective, a domain, the next domain, the whole bank,
tasks of your choice, a simulator set or a full exam, with or without hard mode. The full exam
warns while a domain has not been drilled yet. Below the dialog button come the path, a card per
domain, and every objective with its notes and skip links. While a session is prepared, an
overlay shows the clusters' progress and log; it comes back if the page is reloaded meanwhile.
- **Exam screen.** A dark top bar holds the clock and three menus: *Exam Interface* (fullscreen,
panel sizes, reconnect the desktop), *Exam Controls* (submit, pause, restart the clock,
terminate the session) and *Exam Information* (exam instructions, Kubernetes docs, history).
The light question panel has `< Question N of M >`, with flags and grades marked. Each task is
headed *Solve this question on instance: `ssh host`*, and ends with **Flag for review**,
**Satisfied with answer →** and, in drills, **Check this task**. The remote desktop sits beside
it, with reconnect and fullscreen buttons and a divider you can drag.
- **Results page.** Points, pass or fail, bars per domain, every task's checks and reference
solution, *View answers*, *Drill what I missed*, *Review tasks* and *History*.
- A session started in the browser opens a "Ready to begin" dialog, and its **Start** puts the
full time on the clock.
- **Terminate session** and **Delete the hosts** (`bab85d1`), backed by `POST /api/terminate`. An
open session ends ungraded and nothing is recorded, as with `./ksim abort`; a finished session
only loses its hosts. Either way, only that session's hosts are deleted. The session payload now
says whether a session was aborted.
- **Dark mode** (`db2575b`): ◐ Auto (your system's setting, the default), ☀ Light or ☾ Dark. The
switch is in the landing page's top bar, the *Exam Interface* menu and on the results page. The
browser keeps the choice and applies it before the page draws. This came without a version bump.
### Changed
- The landing page, exam screen and results page replace the lobby overlay, the number rail with
its task pane, and the old results overlay. The browser remembers hard mode and the width of the
question panel.
## 2026.10.15.2 — 2026-10-15
### Added
- **`./ksim restart` and a Restart clock button** (`c244bd9`). The session's full time goes back on
the clock and starts running; the hosts, the work on them, results, flags and notes stay. Like
pause, it is recorded nowhere: the attempt's time used counts from the restart. A submitted
session refuses it. The button is backed by `POST /api/restart`.
## 2026.10.15.1 — 2026-10-15
### Removed
- **Study mode** (`c266eeb`): there are no more untimed sessions with the reference solutions open
from the start, and `./ksim study` is gone. Every session runs against the clock.
### Changed
- The path is objective drills against the clock, then a mock, then the fixed simulator sets. An
objective is done when every task passed on its latest timed attempt; the "studied" stage and its
`~` mark are gone. `./ksim next` always drills, and the lobby's "Study mode" became "Drill an
objective".
- `study-<track>.json` keeps your focus, the domains you marked known and when each objective was
done. Results of old study sessions stay in it, read by nothing.
### Added
Work from 2026-10-13, first committed here:
- **`./ksim skip` / `unskip`**, and the lobby's "I know this — skip it" links. They mark a domain or
an objective as known, so the path, the drill with no argument and `drill all` leave it out. A
mock still draws from every domain.
- **`DOMAIN:N`** picks N tasks of a domain spread over its objectives: `./ksim drill OBS:3`, or
`./ksim next OBS:3` to add them to the next step.
- A command with neither `--track` nor `KSIM_TRACK` is for the track whose session is under way.
`./ksim show` says where a task's host resolves.
### Fixed
- CKAD Q60: its check now says which file holds which run's output.
## 2026.10.12.1 — 2026-10-13
The first release (`f3d0e53`), grown out of `cka-sim`.
- **One host per task.** Each task gets a kind (kubeadm) cluster in rootless podman, with real etcd,
a static-pod control plane and a systemd kubelet. You reach it with `ssh <host>` from a remote
desktop in the browser (XFCE, a terminal, Firefox limited to the documentation the exam allows).
- **CKS hosts** carry kube-bench, trivy, kubesec, kube-linter, bom, cosign, istioctl, gVisor and
Kubernetes from apt packages. The Falco and AppArmor tasks run on QEMU/KVM Ubuntu VMs.
- **A pull-through image cache** (`ksim-registry`) keeps sessions under Docker Hub's pull limit.
- **Task banks:** CKA 131, CKAD 105 and CKS 110 tasks, with at least 17 pool tasks in every domain.
Each track comes with its curriculum, study notes, reference solutions and scripted solutions.
- Drills, full mocks with hard mode, the fixed simulator sets (CKA C and D, CKAD A), a curriculum
path with study mode, attempt history and weak spots.
- `./ksim coverage` and `./ksim audit`. All 346 tasks pass the audit: each seeds cleanly, scores
nothing untouched and reaches full marks with its scripted solution.
The repository's initial commit (`3d7605c`) holds the licence and a stub README.