Removed 14 dead/unused command files that were not registered:
- book.py, check.py, checkpoint.py, clean_workspace.py
- demo.py, help.py, leaderboard.py, milestones.py (duplicate)
- module_reset.py, module_workflow.py (duplicates)
- protect.py, report.py, version.py, view.py
Simplified olympics.py to "Coming Soon" feature with ASCII branding:
- Reduced from 885 lines to 107 lines
- Added inspiring Olympics logo and messaging for future competitions
- Registered in main.py as student-facing command
The module/ package directory structure is the source of truth:
- module/workflow.py (active, has auth/submission handling)
- module/reset.py (active)
- module/test.py (active)
All deleted commands either:
1. Had functionality superseded by other commands
2. Were duplicate implementations
3. Were never registered in main.py
4. Were incomplete/abandoned features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
MLPerf Milestone 06 now has two parts:
- 01_optimization_olympics.py: Profiling + Quantization + Pruning on MLP
- 02_generation_speedup.py: KV Caching for 10× faster Transformer
Milestone system changes:
- Support 'scripts' array for multi-part milestones
- Run all parts sequentially with progress tracking
- Show all parts in milestone info and banner
- Success message lists all completed parts
Removed placeholder scripts:
- 01_baseline_profile.py (redundant)
- 02_compression.py (merged into 01)
- 03_generation_opts.py (replaced by 02)
MLPerf changes:
- Show quantization and pruning individually (not combined)
- Added 'Challenge: Combine Both' as future competition
- Clearer output showing each technique's impact
Progress sync:
- Added _offer_progress_sync() to milestone completion
- Uses centralized SubmissionHandler (same as module completion)
- Prompts user to sync achievement after milestone success
- Single endpoint for all progress updates
- Enhanced attention proof to use A-Z letters instead of numbers
- Shows MCYWUH → HUWYCM instead of [1,2,3] → [3,2,1]
- More intuitive and fun for students
- Removed quickdemo, generation, dialogue scripts (too slow/gibberish)
- Phase 1: Inline unit tests (quick sanity checks)
- Phase 2: Module pytest with --tinytorch educational output
- Phase 3: Integration tests for modules 01-N
Added --unit-only and --no-integration flags for flexibility.
Students can now run comprehensive tests with clear feedback
about what each phase is checking and why it matters.
New command shows all 21 modules with descriptions:
- tito module list - Shows numbered table of all modules
- Educational descriptions explain what each module covers
- Links to start and status commands for next steps
- Add --verbose flag to show commands as they execute
- Capture stdout/stderr for each check
- Save debug log to .tito/logs/preflight_TIMESTAMP.log
- Show failure details with command and output on failures
- Log file location shown when checks fail
- Clean navigation bar: brand left, links right
- Icon+text buttons: MLSysBook, Subscribe, Star, Community
- Responsive: icons only on mobile
- Removed old WIP banner complexity
- Remove standalone verify command (redundant with system health)
- Add community map registration prompt at end of setup
- Setup now includes: venv, packages, profile, validation, community prompt
- Simplifies student journey: one command to get started
Package exports:
- Fix tinytorch/__init__.py to export all required components for milestones
- Add Dense as alias for Linear for compatibility
- Add loss functions (MSELoss, CrossEntropyLoss, BinaryCrossEntropyLoss)
- Export spatial operations, data loaders, and transformer components
Test infrastructure:
- Create tests/conftest.py to handle path setup
- Create tests/test_utils.py with shared test utilities
- Rename test_progressive_integration.py files to include module number
- Fix syntax errors in test files (spaces in class names)
- Remove stale test file referencing non-existent modules
Documentation:
- Update README.md with correct milestone file names
- Fix milestone requirements to match actual module dependencies
Export system:
- Run tito export --all to regenerate package from source modules
- Ensure all 20 modules are properly exported
Changes:
- Move profile.json from nested community/ to flat ~/.tinytorch/profile.json
- Add file update notifications when .tinytorch files are created/updated
- Print "📝 Updated: ~/.tinytorch/filename" for better visibility
- Update benchmark.py to use new flat structure
- Update auth.py to print when credentials are saved
Benefits:
- Simpler, flatter directory structure (no unnecessary nesting)
- Users see exactly which files are being modified during setup
- Consistent location for all user data (~/.tinytorch/)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When user declined venv recreation, setup was still printing
"Setting up virtual environment..." before checking if it existed,
making it appear that recreation was proceeding anyway.
Changes:
- Check for existing venv before printing any messages
- Show "✅ Using existing virtual environment" when user declines
- Show "🐍 Recreating..." only when actually recreating
- Show "🐍 Setting up..." only for new venv creation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace plain argparse help with custom Rich-formatted output:
- Intercept --help flag before argparse processes it
- Show ASCII logo at top (consistent with tito alone)
- Display commands in beautiful Rich table with colors
- Reuse _generate_welcome_text() for consistency
- Add formatted global options section
Benefits:
- Consistent Rich formatting across tito and tito --help
- Professional table layout for commands (green names, dim descriptions)
- Color-coded sections (cyan headers, yellow options, green commands)
- Same visual experience whether you run tito or tito --help
- All command info dynamically pulled from self.commands dict
Before: Plain black-and-white argparse output
After: Colorful, formatted Rich output with ASCII logo and tables
Replace static hardcoded help text with dynamic generation from command registry:
- Create welcome_sections dict as single source of truth for examples
- Add _generate_welcome_text() for interactive mode (tito)
- Add _generate_epilog() for help mode (tito --help)
- Both screens now pull from same data structure
Benefits:
- No more forgetting to update help when commands change
- Student/Developer command lists auto-generated from self.commands dict
- Quick Start examples defined once, used in both places
- Ensures consistency between tito and tito --help outputs
Changes:
- tito/main.py: Replace 40+ lines of static text with 70 lines of dynamic generation
- Commands automatically categorized from student_commands/developer_commands lists
- Rich formatting maintained for interactive mode, stripped for plain --help
Standardize color usage to match TinyTorch CLI style guide:
- Replace [blue] with [cyan] for all action/info messages (10 instances)
- Replace [bold blue] with [bold cyan] for headers (1 instance)
- Replace "bold blue" with "bold cyan" for table headers (3 instances)
- Replace "bright_blue" with "bright_cyan" for panel borders (1 instance)
Files updated:
- tito/main.py: Welcome screen community commands now use [cyan]
- tito/commands/login.py: URL display now uses [cyan]
- tito/commands/protect.py: All 7 blue instances → cyan
- tito/commands/milestone.py: Table headers → bold cyan
- tito/commands/test.py: Table headers → bold cyan
- tito/commands/grade.py: Border style → bright_cyan
Result: Holistic CLI consistency with [cyan] for actions, [green] for success,
[yellow] for warnings, [red] for errors across all 15+ commands.
- Move login/logout from standalone commands to tito community subcommands
- Reduce community.py from 860 to 264 lines by removing placeholder profile code
- Delegate login/logout to existing LoginCommand/LogoutCommand (no auth code changes)
- Maintain leaderboard, compete, and submit functionality
- Apply consistent Rich formatting: ✅ emoji, [cyan] for actions, [green] for success
- Update main.py help text to show new command structure
Commands:
tito community login - OAuth login via browser
tito community logout - Clear credentials
tito community leaderboard - Open leaderboard
tito community compete - Open competitions
tito community submit - Validate/submit benchmarks
All auth/submission code unchanged. Style consistent with TinyTorch CLI conventions.
Implement tito community submit command for Module 20 capstone submissions with schema validation, metrics display, and error handling. Shows baseline and optimized model metrics with improvement calculations. Includes Coming soon message for future leaderboard integration.
Added live progress bar to `tito module test --all` command:
- Shows spinner, progress bar, and task progress (X/20)
- Updates description with current module being tested
- Provides better visual feedback during long test runs
- Maintains all existing rich output (logo, panels, tables)
Uses rich.progress with SpinnerColumn, TextColumn, BarColumn,
and TaskProgressColumn for comprehensive progress visualization.
This completes the rich CLI enhancement pass for bulk commands.
New Commands:
- tito module test [NUMBER] - Test single module
- tito module test --all - Test all 20 modules sequentially
- tito module complete --all - Complete all modules (test + export)
- tito module reset --all - Reset all modules (already existed)
Features:
- Detailed test results with pass/fail status
- --verbose flag for full test output
- --stop-on-fail to halt on first failure
- Summary table showing all module test results
- 5-minute timeout per module test
- Proper error reporting and exit codes
This enables:
- Quick validation of all modules after global changes
- Bulk export workflow for package releases
- Easy testing during development
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Demo improvements:
- Add hidden setup phase to demo tapes for clean state
- New benchmark and logo demo tapes
- Improved build-test-ship, milestone, and share-journey demos
- All demos now use Hide/Show for cleaner presentation
CLI fix:
- Add default=None to module reset command argument
- Prevents argparse error when no module specified
Cleanup:
- Remove outdated tinytorch/core/activations.py binary
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed broken multiline comment that had closing parenthesis on wrong line.
The syntax error was preventing tito from running.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Typography refinements:
- Add extra space between TORCH letters for better readability
- Improve breathing room in R, C, and H letter forms
- Adjust flame positioning to match wider letter spacing
- Align tagline with updated TORCH width
The wider spacing gives each letter more presence and makes
the logo feel less cramped on narrow terminal windows.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Typography refinements:
- Move flames 1 space closer to T and H for better visual cohesion
- Make tagline bold to match flame glow intensity
- Use TAGLINE_COLOR constant for consistency
These micro-adjustments make the logo feel crafted rather than
assembled, with each element belonging to a unified whole.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added fourth section with essential help commands:
- tito system doctor (check environment health)
- tito --help (see all commands)
Completes welcome screen simplification with 4 focused groups
showing 10 total commands for new users.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added proper spacing (8 spaces) to align the tagline
'🔥 Don't just import it. Build it.' directly under the TORCH letters.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Separate required vs optional dependencies in health checks:
Required (from requirements.txt):
- NumPy, Rich, PyYAML, Pytest, Jupytext
Optional (nice to have):
- JupyterLab, Matplotlib
Now health check shows:
- Required deps as ✅ OK or ❌ Missing
- Optional deps as ✅ Installed or ○ Not installed (dim, not alarming)
This prevents students from thinking they have issues when
optional tools like JupyterLab aren't installed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Dramatically simplified the welcome screen to show only essential info:
- Quick Start (3 commands)
- Track Progress (2 commands)
- Community (1 command)
Removed redundant commands:
- leaderboard -> merged into community
- olympics -> merged into community
These backend-dependent features are consolidated into a single
community command that will handle all social features when the
backend is ready.
Changes:
- Simplified welcome screen (10 lines vs 40+ lines)
- Moved leaderboard.py and olympics.py to _archived/
- Updated all tests (45 passing)
- Cleaner --help output
- Updated archived README
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Students can run demos directly with Python, and developers can
run jupyter-book directly. The CLI wrappers don't add value.
Changes:
- Move demo.py and book.py to _archived/
- Remove from main.py command registry
- Remove from __init__.py imports
- Update test expectations (47 tests passing)
- Update archived README with removal rationale
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>