- Remove tinytorch-validate-cli-docs hook from pre-commit
- TinyTorch has its own dedicated CLI validation system
- Keep only formatting checks in pre-commit hooks
The whitespace cleanup in 853eb03ee removed trailing blank lines from
_titlepage.tex and before-body.tex. This caused \end{titlepage} to be
placed on the same line as a %%% comment, making LaTeX treat it as
part of the comment and skip it entirely.
This resulted in: LaTeX Error: \begin{titlepage} on input line 380
ended by \end{document}
Also excludes titlepage .tex files from end-of-file-fixer hook since
they require trailing blank lines for proper template concatenation.
Updates the codespell pre-commit hook configuration to correctly skip JavaScript files. This prevents false positives and ensures accurate spell checking.
Fix remaining instances where emoji was before the name
(🔥 TinyTorch → Tiny🔥Torch) for consistent branding.
Also add "curren" to codespell ignore list (contributor name).
- Add sphinxsetup configuration with distinct colors for each admonition type
(tip=green, warning=orange, note=blue, caution=red, etc.)
- Convert {admonition} with :class: attribute to native {tip}, {warning},
{seealso} directives for proper Sphinx type detection in LaTeX output
- Remove unsupported emojis from site markdown files for LaTeX compatibility
- Update codespell ignore list for font names (Heros) and PDF options (FitH)
- Update 20 ABOUT.md files and 16 site/*.md files
- Live publish now merges dev into main before building
- Removed auto-trigger on push to main (manual only)
- All build jobs depend on sync completing first
- Ensures public site always reflects tested dev state
- Updated README with improved badges and formatting
- Add clear section headers for Book, TinyTorch, and Repo-wide hooks
- Prefix all hook names with domain tags (e.g., [Book], [Repo])
- Fix SVG prevention hook to only apply to book/ directory
- Fix codespell and list-formatting hooks to scope to book/ only
- Add placeholder section for future TinyTorch hooks with examples
- Move JSON and YAML validation to Repo-wide section
This reorganization prepares for the merged monorepo structure where
book and tinytorch have different validation requirements.
- Update format_tables.py to use workspace-relative path (quarto/contents/)
- Update validate_part_keys.py script to use book/quarto paths
- Scripts in book/tools/ that calculate workspace_root need paths relative to book/
- Other scripts need full book/quarto/contents/ paths
* Restructure: Move book content to book/ subdirectory
- Move quarto/ → book/quarto/
- Move cli/ → book/cli/
- Move docker/ → book/docker/
- Move socratiQ/ → book/socratiQ/
- Move tools/ → book/tools/
- Move scripts/ → book/scripts/
- Move config/ → book/config/
- Move docs/ → book/docs/
- Move binder → book/binder
Git history fully preserved for all moved files.
Part of repository restructuring to support MLSysBook + TinyTorch.
Pre-commit hooks bypassed for this commit as paths need updating.
* Update pre-commit hooks for book/ subdirectory
- Update all quarto/ paths to book/quarto/
- Update all tools/ paths to book/tools/
- Update config/linting to book/config/linting
- Update project structure checks
Pre-commit hooks will now work with new directory structure.
* Update .gitignore for book/ subdirectory structure
- Update quarto/ paths to book/quarto/
- Update assets/ paths to book/quarto/assets/
- Maintain all existing ignore patterns
* Update GitHub workflows for book/ subdirectory
- Update all quarto/ paths to book/quarto/
- Update cli/ paths to book/cli/
- Update tools/ paths to book/tools/
- Update docker/ paths to book/docker/
- Update config/ paths to book/config/
- Maintain all workflow functionality
* Update CLI config to support book/ subdirectory
- Check for book/quarto/ path first
- Fall back to quarto/ for backward compatibility
- Maintain full CLI functionality
* Create new root and book READMEs for dual structure
- Add comprehensive root README explaining both projects
- Create book-specific README with quick start guide
- Document repository structure and navigation
- Prepare for TinyTorch integration
Replaced external check-json hook with custom validator using Python's
built-in json module (json.load). Created validate_json.py wrapper to
handle multiple files.
Benefits:
- No external dependencies
- Uses Python's standard library json parser
- Same validation logic as the build system
- Fast and reliable (0.16s for all JSON files)
Add new pre-commit hook to validate that all @key citations in .qmd
files have corresponding entries in their .bib files. This catches
missing bibliography entries before they cause Quarto build failures.
Features:
- Validates citations against bibliography files
- Filters out cross-reference labels (fig-, tbl-, sec-, etc.)
- Provides clear error messages with missing citation keys
- Only checks files being committed (not entire codebase)
- Runs in quiet mode to reduce noise
New script: tools/scripts/content/validate_citations.py
Updated: .pre-commit-config.yaml with validate-citations hook
- Validates table alignment (text=left, numbers=right)
- Checks header and first column bolding
- Ensures proper spacing and structure
- Runs on all .qmd files in quarto/contents/
- Exits with code 1 if formatting issues found
Script fixes:
- Fix year header detection to handle both '## 2025' and '## 2025 Updates' formats
- Fix labs organization to work with AI-generated summaries
- Add AI artifact cleanup to remove 'Let me know...' phrases
- Improve lab grouping logic for AI mode
Changelog updates:
- Generate comprehensive changelog with AI summaries for all changes since Aug 6
- 61 files updated: 6 frontmatter, 29 chapters, 26 labs
- Clean, professional AI-generated descriptions without artifacts
- Created check_forbidden_footnotes.py to detect problematic footnote placements
- Checks for footnotes in: table cells, figure/table captions, div blocks (callouts)
- Added to pre-commit config as 'check-forbidden-footnotes' hook
- Fixed false positive detection by requiring table rows to start with |
- Moved XOR footnote in dl_primer.qmd outside callout block
- All 62 .qmd files now pass validation
- Prevents Quarto build failures from footnotes in unsupported locations
Enhances clarity and accuracy of explanations throughout the chapters, focusing on definitions, relationships, and system-level trade-offs. It improves flow and highlights scaling-related bottlenecks.
- Create comprehensive footnote_cleanup.py with all footnote operations:
* REORGANIZE: Move footnote definitions after their references
* VALIDATE: Check for undefined references and unused definitions
* CATALOG: Generate comprehensive footnote reports
* CLEAN: Automatically fix validation issues
* REMOVE: Remove all footnotes from files
- Add standard -f/-d options following MLSysBook patterns
- Integrate footnote validation into precommit hooks
- Clean up footnote issues across codebase:
* Remove undefined reference: fn-mlperf
* Remove unused definitions: fn-training-challenges, fn-adversarial-examples, fn-value-alignment, fn-sdc-scale
- Replace old separate scripts with unified tool
- Fix footnote spacing: proper line breaks before definitions, no extra breaks after
- Add missing _quarto.yml symlink for project structure validation
Addresses footnote management and cleanup automation
- Move script to tools/scripts/content/ to match project structure
- Add colored output with emoji indicators for better readability
- Add -f/--file and -d/--directory options for flexible input
- Add --clean flag to automatically remove unused footnote definitions
- Add --dry-run to preview cleanup without making changes
- Add --quiet mode for CI/CD pipelines
- Add --strict mode to fail on any issues
- Match style of other validation scripts in the project
- Update pre-commit hook to use new location and options
The script now provides clear visual feedback and can both validate
and fix footnote issues automatically when needed.
- Create scripts/validate_footnotes.py to check footnote consistency
- Validates all footnote references have definitions
- Validates all footnote definitions are actually used
- Detects duplicate footnote definitions
- Add to pre-commit hooks for automatic validation
- Currently reports 28 issues to be fixed in future PRs
- Create convert_svg_to_png.py helper tool for manual SVG conversion
- Tool finds QMD references and assists with conversion process
- User controls all changes - nothing happens automatically
- Update pre-commit hook to mention the helper tool
- Remove automatic documentation file as requested
- Add pre-commit hook to prevent SVG files from being committed
- Provide clear instructions for converting SVG to PNG format
- Remove original SVG files that were converted to PNG
- Ensures format compatibility across all output formats
Introduces a new pre-commit hook that removes control characters from SVG files.
This ensures that SVG files are clean and don't contain potentially malicious or problematic characters.
Refactors the pre-commit configuration file for improved readability and maintainability.
Removes unnecessary `ci` configuration, standardizes language specification for scripts,
and removes redundant `additional_dependencies`.
Updates the `validate-external-images` pre-commit hook to use the `python` language and explicitly declares the `requests` library as a dependency.
This ensures that the script can correctly validate external images by making HTTP requests.
- Fix YAML syntax error in publish-live.yml (shell script in wrong location)
- Separate workflow call from shell script monitoring
- Add specific GitHub workflow validation to pre-commit hooks
- Ensure all workflow YAML files are validated before commit
- Fix structural issue where shell script was inside 'with:' section
The publish-live.yml workflow now properly:
- Calls quarto-build-container.yml with correct parameters
- Has separate step for monitoring build completion
- Passes YAML validation with yamllint
Pre-commit now validates:
- All YAML files (general validation)
- GitHub workflow files specifically (targeted validation)
- Ensures workflow syntax is correct before commit
Consolidates quality checks by replacing the dedicated
structure check workflow with a pre-commit workflow.
This change improves code quality and consistency by
automating checks for style, formatting, and project
structure using pre-commit hooks. It removes the separate
structure check workflow and incorporates its functionality
into the new pre-commit setup.
Adds a pre-commit hook to check for duplicate labels in the book, ensuring consistency across figures, tables, and listings.
Corrects and updates figure references in the text for clarity and accuracy.
Removes redundant or outdated content to maintain focus and relevance.
- Set AI mode as default for release notes
- Make description optional with good default
- Make dev commit optional (uses latest if empty)
- Change default release type to patch for frequent textbook updates
- Add pre-commit hook to detect workflow file changes early
- Add pre-push hook as additional safety net
- Add workflow check to prevent permission issues
- Improve user experience with fewer required fields
- Remove check-build-artifacts hook that was causing failures
- Keep auto-cleanup-artifacts hook which handles cleanup properly
- Fixes the issue where .quarto cache was detected as build artifact
- Pre-commit now runs cleanly without false positives
- Remove custom Python script (validate_yaml.py)
- Use direct yamllint in pre-commit for simplicity
- Update .yamllint config to disable style checks
- Focus only on critical syntax errors
- Better performance and standard approach
- Maintain same validation coverage for all YAML files
- Rename validate_workflows.py to validate_yaml.py for clarity
- Validate ALL YAML files in the project, not just workflows
- Check GitHub Actions, Quarto configs, extensions, and other YAML files
- Remove duplicate file validation with improved filtering
- Found and validated 23 YAML files across the project
- Update pre-commit hook to use renamed script
- Maintain cross-platform compatibility and lenient rules
- Add yamllint to requirements.txt for cross-platform compatibility
- Create validate_workflows.py script with auto-installation
- Add .yamllint config optimized for GitHub Actions and Quarto
- Integrate validation into pre-commit hooks
- Fix heredoc syntax errors in publish-live workflow
- Validate both GitHub Actions workflows and Quarto YAML files
- Focus on critical syntax errors, ignore style warnings
- Support macOS, Linux, and Windows platforms
The markdownlint pre-commit hook is temporarily disabled.
This change allows for more flexibility during development and avoids
strict linting rules that may hinder initial prototyping.
- Add validate_image_references.py to check all image references exist on disk
- Fix download_external_images.py to update markdown even when images already exist
- Add two pre-commit hooks: external image validation and missing image detection
- Download external images and update references to local paths
- Add documentation for pre-commit external image validation workflow
- Ensure build reliability by preventing external dependencies and missing images