Updated all demo tapes (02, 03, 04) to:
- Use consistent prompt: "@profvjreddi 🔥 › "
- Add "source activate.sh" at beginning to ensure tito is available
- This makes demos work when starting from a fresh terminal
Regenerated GIFs:
- Demo 02 (Build, Test, Ship): 3.2M (was 699K - now includes activation)
- Demo 03 (Milestone Unlocked): 273K (was 143K - now includes activation)
- Demo 04 (Share Journey): TBD
All demos now show the proper branded prompt throughout.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove hardcoded command list in welcome screen
- Dynamically build help from self.commands registry
- Categorize commands: Essential, Student Workflow, Community, Developer, Shortcuts
- Ensures welcome screen always shows only registered commands
- No more stale command references
Benefits:
- Single source of truth (commands registry)
- Adding/removing commands automatically updates welcome
- Clear categorization for different user roles
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove module from started_modules when marking complete
- Add validation to prevent completing modules out of order
- Show all modules in status (removed smart collapsing)
- Fix data integrity: modules must be completed sequentially
Prevents invalid states where module N is complete but N-1 is not.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed old GIF files from root directory. The new GIFs are now properly
located in docs/_static/demos/ directory.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Reorganize TinyTorch CLI from flat structure to hierarchical organization
with subfolders for complex commands with subcommands.
Changes:
- Create subfolders: module/, system/, package/
- Move module commands: module_workflow.py → module/workflow.py
- Move module_reset.py → module/reset.py
- Move system commands: system.py → system/system.py
- Move system subcommands: info.py, health.py, jupyter.py → system/
- Move package commands: package.py → package/package.py
- Move package helpers: reset.py, nbdev.py → package/
- Archive deprecated files: clean.py, help.py, notebooks.py, status.py
- Update all imports in moved files and main.py
- Add __init__.py exports for each subfolder
- Create comprehensive CLI test suite (52 tests)
- test_cli_registry.py: Validate command registration
- test_cli_execution.py: Smoke tests for all commands
- test_cli_help_consistency.py: Help text validation
- Update tests to match new structure
Benefits:
- Clear ownership: Easy to see which helpers belong to which commands
- Better organization: Related files grouped together
- Scales cleanly: Adding subcommands is straightforward
- Zero user impact: All commands work exactly the same
All 52 tests passing ✅🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update tagline across all commands to 'Don't just import it. Build it.'
- Rename milestone command to milestones for better consistency
- Remove duplicate milestones.py file
- Add auto-install of tito CLI in activate.sh
- Add command metadata structure to BaseCommand
- Clean up command registration with single source of truth
Clean /tmp/TinyTorch before EACH GIF generation, not just once at the start.
VHS executes real commands and captures actual output, so if /tmp/TinyTorch exists from a previous GIF, the git clone will fail with 'already exists' error.
Now each GIF gets a clean environment:
🧹 Cleaning /tmp/TinyTorch for this GIF...
This ensures GIF 01 shows successful clone on every generation.
Fixed GIFs 02, 03, and 04 to activate the environment before running tito commands.
Without activation, tito commands fail with 'command not found' error.
Each GIF now starts with:
Type "source activate.sh"
Sleep 300ms
Enter
Sleep 1s
This ensures tito is available in PATH before any tito commands execute.
GIF 01 already had activation as part of the setup workflow demo.
Test script now measures actual execution time for every command using Python's time.time(), outputting recommendations to /tmp/tinytorch_timing.txt.
Measured timings:
- git clone: 3s (varies by network, using safe 3s)
- setup-environment.sh: 9s (measured 8.6s)
- tito system health: 0.5s (show for 3s for readability)
- tito module status: 0.2s (show for 3s)
- tito logo: 0.1s (show for 6s)
Updated 01-zero-to-ready.tape with measured delays to ensure:
- GIF shows actual command completion
- No typing ahead before previous command finishes
- Realistic demo of student experience
This fixes the issue where VHS would type commands faster than they execute.
Students should see the clean first-time workflow, not our test infrastructure.
Changes:
- VHS tape: Shows 'cd /tmp' then 'git clone' (no rm -rf)
- generate.sh: Cleans /tmp/TinyTorch BEFORE running VHS
- test_demo_workflow.sh: Already cleaned before testing
- README: Documents the separation of concerns
This presents the ideal student experience while maintaining reproducibility:
- Students: See clean setup flow (cd → clone → setup)
- Scripts: Handle cleanup behind the scenes
- Tests: Validate fresh environment every time
GIF size: 494KB → 467KB (optimized further)
Document the improved demo testing and generation workflow:
- Explains test_demo_workflow.sh purpose and usage
- Describes cleanup strategy to prevent 'directory exists' errors
- Provides troubleshooting guide for common issues
- Documents best practices for updating demo commands
- Maps file locations and workflow architecture
This ensures future demo updates maintain quality and accuracy.
- Create comprehensive test script for demo workflow validation
- Clean /tmp/TinyTorch before cloning to avoid conflicts
- Test full workflow: clone, setup, tito commands
- Update VHS tapes with proper cleanup steps
- Fix command names (tito status -> tito module status)
- Regenerate all 4 demo GIFs with corrected commands
- Log all test output for validation
Removed orphaned/duplicate files not referenced in table of contents:
- INSTRUCTOR_GUIDE.md (duplicate of instructor-guide.md)
- STUDENT_QUICKSTART.md (duplicate of quickstart-guide.md)
- TEAM_ONBOARDING.md (moved to usage-paths/)
- checkpoint-system.md (not in TOC, minimal refs)
- learning-progress.md (not in TOC, minimal refs)
- learning-journey-visual.md (not in TOC, self-ref only)
- cifar10-training-guide.md (no references)
- cover.md (not in TOC)
- PRIVACY_DATA_RETENTION.md (internal doc)
- INSTRUCTOR.md (root level, moved to docs/)
- Various old scripts (activate-tinytorch, cleanup scripts, etc.)
Website rebuilt successfully with 46 warnings (same as before).
All critical content preserved (student-workflow, quickstart-guide, etc.)
- Delete tito/commands/doctor.py (replaced by health/check commands)
- Update export.py: system doctor → system health
- Update help.py: system doctor → system health (4 occurrences)
- Update module_workflow.py: system doctor → system health
- Update setup.py: system doctor → system health
- Update src.py: system doctor → system health
Completes migration from 'tito system doctor' to new command structure.
- Add quiet=False parameter to enable_autograd()
- Suppress print statements when quiet=True
- Check TINYTORCH_QUIET env var on module import
- Allows CLI tools to import tinytorch silently
- Students still see helpful messages in notebooks
- health: Show only ✅/❌ status (no version numbers)
- info: Remove dependency table (use 'system version' instead)
- Clear separation: health=status, info=resources, version=versions
Enhanced the tito logo command with a personal message from Professor Vijay
Janapa Reddi explaining how TinyTorch grew from the TinyML movement at Harvard.
The message emphasizes the importance of engineering ML systems from first
principles and includes the memorable Lego/Star Wars analogy.
Key changes:
- Added personal signature with Harvard CS 249R affiliation
- Included TinyML movement origin story in conversational, italic style
- Emphasized "engineer" as the core philosophy
- Added Lego blocks analogy for building from scratch
- Updated catchphrase: "The future of ML is tiny and bright—don't just 'import torch', build it."
- Updated tagline: "Start tiny. Go deep. Build big."
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed banner to display 'Tiny🔥TORCH' with capital T to match
the official brand style.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
## Symlink Updates (modules/ → src/)
- Update all 20 site/modules/*_ABOUT.md symlinks to point to src/
- Update all 20 src/*/ABOUT.md internal references
## Infrastructure Changes
- Remove bin/ directory scripts (moved to scripts/ in previous commit)
- Update .envrc: Reference new scripts/ directory structure
- Update pyproject.toml: Reflect src/ as primary source location
- Update docs/development/MODULE_ABOUT_TEMPLATE.md: src/ paths
- Update site/requirements.txt: Documentation dependencies
## Restructuring Complete
The repository now has clean separation:
- `src/`: Developer source code (graded notebooks with solutions)
- `modules/`: Student workspace (generated from src/)
- `scripts/`: Build and utility scripts
- `site/`: Documentation and Jupyter Book website
This enables the intended workflow:
1. Developers work in src/
2. Students receive generated notebooks in modules/
3. Both can coexist without conflicts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added comprehensive role-based documentation:
- 👥 Three user personas: Student, Instructor, Developer
- Visual 3-column layout with workflows for each role
- New Developer Commands section with tito src commands
- Separate workflow sections for Students vs Developers
- Clear directory structure explanation
Benefits:
- Users immediately see relevant commands for their role
- Reduces confusion about src/ vs modules/
- Makes tito src commands discoverable
- Professional UX with visual separation
Fixes:
- module complete: Update paths to use src/ for source files
- module complete: Fix export call to use new SourceCommand API
- milestone run: Remove nonexistent progress_tracker dependency
- milestone run: Use progress.json directly for prerequisite checking
Both commands now work correctly with new directory structure
Documents:
- COMMAND_HIERARCHY.md: Complete command structure and workflows
- TEST_RESULTS.md: Detailed test findings and bug list
Shows what works, what's broken, and what needs implementation