Memory figures now divide by powers of ten everywhere (1 KB = 10^3 B,
1 MB = 10^6 B, 1 GB = 10^9 B), matching the book's prose convention.
Removes MiB/GiB labels and 1024-based divisors from src modules, tito
system info, milestones, tests, book chapters, guide pages, and the
regenerated code listings. Binary units remain only where a module
explicitly teaches the SI-vs-IEC distinction.
Release-hardening and transformer-era release of TinyTorch, audited as one
tree. This commit brings tinytorch/ and the TinyTorch CI workflows to the
state of the audit/tinytorch-release branch, where the individual changes
are recorded commit by commit.
- Milestones: transformer-era parts (TinyGPT, sequence routing, TinyCopilot,
conversational Q&A), Milestone 06 "MLPerf to Generative Serving (2018)",
Milestone 07 kernels; per-part recording; NumPy-referenced losses and
causality, attention-content and position probes; try-it prompts after a
pass.
- Framework: dropout eval mode, target gradients, float32 stays float32,
layer validation, LoRA adapters.
- tito: loopback login callback with a state nonce, consented progress sync,
TLS-verified update check, Ctrl-C after a pass keeps the pass.
- Grading: graded tests compare values against NumPy references; tests that
could not fail now check something.
- CI: the publish preflight runs its tests and ships the commit it tested;
workflow inputs pass through env; third-party actions pinned.
- Guide and book: read line by line against the code; every demo is a real
recording.
See tinytorch/CHANGELOG.md, section 0.2.0.
Update carousel navigation chevrons to float comfortably inside the terminal area with frosted glass styling and generous spacing.
Enlarge the zoom lightbox close button for improved touch accessibility.
Streamline showcase section heading to Interactive Terminal Showcase.
Standardize milestone execution in Tape 04 to tito milestone run 05-code and re-record demo assets.
Align learning path stage count with the five curriculum tiers.
Remove deprecated showcase gifs and fix tape installer pipeline. Add Terminalizer-style window frame with traffic lights, title bar, borders, padding, and subtle shadow baked directly into all five terminal recordings.
- Add encoding='utf-8' to module file reads in test_module_integration, test_training_edge_cases, and test_backward_boundaries
- Add encoding='utf-8' to CLI test fixtures (test_completion_certification, test_progressive_integration_selection, test_community_flow, test_live_submission, test_user_journey)
- Add encoding='utf-8' and errors='replace' to SIMD compiler subprocess and book tools
- Add encoding='utf-8' to Jupyter PID file read/write in workflow.py
The Milestone 01 figure did not match what `tito milestone run
perceptron` prints (a six-point "Synthetic Data & Decision Boundary"
step that no longer exists), and nothing in the repo could regenerate
it. guide/tools/capture-terminal.py runs a command with color forced
on and renders its exact output with Rich's SVG exporter, headed by the
command; --lines keeps unedited ranges and marks what was left out.
The new figure is an excerpt of a real run in a scratch checkout where
Modules 01-03 were completed with `tito module complete`. The run is
unseeded; the caption says so and that a run occasionally guesses right
by luck. The PNG is replaced by the SVG.
Found while driving the site with Playwright to check the TITO CLI page.
ml-timeline.js appended #ml-timeline-popup to document.body on every page
load, whether or not the page had a timeline. Its closed state is
`display: flex; opacity: 0` with no pointer-events rule, so it sat as a
full-viewport, z-index 1000, hit-testable box over the content:
elementFromPoint at the middle of the page returned the overlay rather
than the article. Every click on 52 of the 62 pages went into it,
including the home page. The script set display:none only when *closing*
a popup, so a page became usable after opening and dismissing one.
Fixed in two layers, because either alone would have prevented it:
- style.scss gives the closed overlay pointer-events: none, restored to
auto on .active. Invisible now means non-interactive.
- ml-timeline.js returns early when a page has no .ml-timeline-content,
so the overlay is built only on the one page with a timeline.
Verified the feature still works on index.html: six cards, click opens
the popup, Escape closes it, page is clickable afterwards.
Also reworks "Commands by User Role". Three code blocks in a 3-up card
grid left each command roughly 220px, which wrapped
`tito nbgrader generate 01 --tier student` between the flag and its
value. A panel-tabset gives each role the full column width; every line
in all three tabs now fits without wrapping, verified by measuring
rendered height against line count.
And `tito module complete 03 --verbose` in troubleshooting.qmd exits 2,
because --verbose is global and belongs before the subcommand.
guide/tools/check-documented-commands.py now walks tito's real argparse
tree and checks every `tito ...` invocation in the .qmd sources for
unknown subcommands, unknown flags, and invalid values for flags that
declare choices. It re-execs under the project venv when the calling
interpreter lacks tito's dependencies, and turns a skip into a failure
under CI so the gate cannot quietly stop running. Wired into pre-commit.