272 Commits

Author SHA1 Message Date
jettythek
f5c63b5a13 added-windows-support 2025-12-07 17:25:40 -08:00
jettythek
3e779340ec updated for wsl windows login features 2025-12-07 11:29:45 -08:00
kai
cf3cfd02ed updating profile flow 2025-12-06 18:20:49 -05:00
Vijay Janapa Reddi
7f45d93613 Fix all test bugs and add notebook execution support to tito
Test Fixes (External pytest tests - all passing):
- Module 03: Reverted .weights for test helper classes
- Module 08: Fixed DataLoader data format (tuple → list(zip()))
- Module 10: Use CharTokenizer instead of abstract Tokenizer
- Module 15: Fixed KVCache constructor args and seq_len
- Module 19: Fixed Benchmark constructor args

Tito CLI Improvements:
- Added module name resolver: "15" → "15_quantization"
- Added .ipynb file support in _get_dev_file_path()
- Added notebook-to-Python conversion using jupytext
- Inline tests now execute notebooks correctly

Results:
- External tests: 36/36 passing (100%)
- Tito inline tests: 15/20 passing (75%)
- Remaining failures are module code bugs, not test framework issues
2025-12-05 18:29:12 -08:00
kai
75b2a7b6e1 updated community website at /community 2025-12-05 13:03:17 -05:00
kai
9384b469aa updated setup to log directly into the community 2025-12-04 22:29:47 -05:00
Vijay Janapa Reddi
be90efb175 Fix spacing alignment in olympics command 2025-12-04 11:20:38 -08:00
Vijay Janapa Reddi
73176e9d4c Add spacing before Olympic rings logo 2025-12-04 11:19:48 -08:00
Vijay Janapa Reddi
5c108043a5 Rename to TinyTorch Olympics for consistent branding 2025-12-04 11:18:47 -08:00
Vijay Janapa Reddi
6590194aea Add smooth Olympic rings ASCII art to tito olympics command
- Replace blocky braille rings with smooth interlocking design
- Add Olympic colors: blue, white, red (top); yellow, green (bottom)
- Display logo inside panel with 'NEURAL NETWORKS OLYMPICS' title
- Remove o.py scratch file after integration
2025-12-04 11:06:06 -08:00
Vijay Janapa Reddi
d8e8df81af Fix broken imports after CLI cleanup: system and module commands
Fixed broken imports in system and module commands after removing dead command files:

1. System Command (system/system.py):
   - Removed imports: check, version, clean_workspace, report, protect
   - Kept: info, health, jupyter
   - Added 'doctor' as alias for comprehensive health check
   - Simplified to 4 subcommands: info, health, doctor, jupyter

2. Module Workflow Command (module/workflow.py):
   - Removed imports: view, test
   - Replaced ViewCommand._open_jupyter() with direct Jupyter Lab launch
   - Kept all module workflow functionality intact

All 15 registered commands now load and execute successfully:
 Student: module, milestones, community, benchmark, olympics
 Developer: dev, system, src, package, nbgrader
 Shortcuts: export, test, grade, logo
 Essential: setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 08:19:26 -08:00
Vijay Janapa Reddi
1e452850f4 Clean up TITO CLI: remove dead commands and consolidate duplicates
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>
2025-12-04 08:19:14 -08:00
Vijay Janapa Reddi
4aeb3c9c69 Merge main into dev, resolving conflicts with dev's version 2025-12-03 07:26:43 -08:00
Vijay Janapa Reddi
b02a24c40e Fix milestone CLI prompts for non-interactive mode
Skip Enter to begin and Continue prompts when not in interactive
terminal. This allows milestones to run in CI/automated contexts.
2025-12-03 04:39:13 -08:00
Vijay Janapa Reddi
456459ec7e Add KV caching demo and support multi-part milestones
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)
2025-12-03 00:00:40 -08:00
Vijay Janapa Reddi
9eabcbab89 Improve MLPerf milestone and add centralized progress sync
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
2025-12-02 23:40:57 -08:00
Vijay Janapa Reddi
7f6dd19c10 Improve milestone 05 (Transformer) with letters for better visualization
- 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)
2025-12-02 23:33:58 -08:00
Vijay Janapa Reddi
4aa444517b Extend integration test mapping to cover all 20 modules
Added explicit comments explaining which tests apply to each tier:
- Foundation (01-07): Core integration tests
- Architecture (08-13): CNN and NLP pipeline tests
- Performance (14-19): Module-specific tests only
- Capstone (20): Comprehensive validation
2025-12-02 23:07:04 -08:00
Vijay Janapa Reddi
47635d1550 Add three-phase testing to tito module test
- 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.
2025-12-02 23:06:17 -08:00
Vijay Janapa Reddi
73a229faa3 Add tito module list command for students to see all modules
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
2025-12-02 22:50:43 -08:00
Vijay Janapa Reddi
23d4aa310e Fix division by zero in milestone status when no milestones exist 2025-12-02 22:09:51 -08:00
Vijay Janapa Reddi
3a885601f9 Clean up repository
- Remove stale feature branches (kept debugging branch with unmerged work)
- Move test_spatial_core.py to correct directory (tests/09_spatial)
- Remove .tito user state from tracking (config.json, progress.json)
- Delete archived CLI commands (tito/commands/_archived/)
- Move standalone integration tests to tests/integration/
- Remove outdated audit/report markdown files
- Remove old template and deprecated test files
- Simplify .gitignore for .tito/ directory
2025-12-02 22:03:16 -05:00
Vijay Janapa Reddi
ca9922224a Add verbose mode and debug logging to preflight command
- 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
2025-12-02 21:51:42 -05:00
Vijay Janapa Reddi
af0beb9408 Simplify top bar to match MLSysBook style
- Clean navigation bar: brand left, links right
- Icon+text buttons: MLSysBook, Subscribe, Star, Community
- Responsive: icons only on mobile
- Removed old WIP banner complexity
2025-12-02 21:24:22 -05:00
Vijay Janapa Reddi
2c5ef2e3cf Fix tagline consistency: Don't import it. Build it.
- Remove 'just' from all instances of the tagline
- Update banner to lead with tagline
- Consistent branding across docs, CLI, and demos
2025-12-02 21:17:41 -05:00
Vijay Janapa Reddi
d9b6366c50 Simplify community URLs - remove /community/ prefix 2025-12-02 19:23:58 -05:00
Vijay Janapa Reddi
e315e5648c Remove VerifyCommand from exports 2025-12-02 19:23:15 -05:00
Vijay Janapa Reddi
11615a2288 Integrate verification and community registration into setup command
- 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
2025-12-02 18:42:51 -05:00
Vijay Janapa Reddi
bd7fcb2177 Release preparation: fix package exports, tests, and documentation
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
2025-12-02 14:19:56 -05:00
Vijay Janapa Reddi
d186e5ba17 Simplify .tinytorch structure and add file update notifications
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>
2025-12-01 12:13:46 -05:00
Vijay Janapa Reddi
aae2ac16bf Fix setup command venv recreation logic
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>
2025-12-01 12:11:19 -05:00
Vijay Janapa Reddi
244ac44a3e Add Rich-formatted help output for tito --help
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
2025-12-01 08:23:29 -05:00
Vijay Janapa Reddi
3a297fdf64 Make CLI help text dynamically generated from single source of truth
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
2025-12-01 08:13:00 -05:00
Vijay Janapa Reddi
033fa148ff Apply consistent Rich formatting across all CLI commands
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.
2025-12-01 07:57:05 -05:00
Vijay Janapa Reddi
7d3e302672 Refactor community command: consolidate login/logout under community namespace
- 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.
2025-12-01 07:53:43 -05:00
kai
c682ec2ee3 updates to submission to server database and login flow 2025-11-30 21:01:57 -05:00
Vijay Janapa Reddi
ecf9d527c0 Improve CLI command output formatting and messaging 2025-11-29 19:16:55 -05:00
Vijay Janapa Reddi
deea02f3b6 Add submission command to tito community CLI
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.
2025-11-29 18:45:02 -05:00
Vijay Janapa Reddi
c89cedd080 Enhance module test CLI with rich progress bars
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.
2025-11-29 14:45:09 -05:00
Vijay Janapa Reddi
5ce54ce228 Add bulk testing and export commands for modules
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>
2025-11-29 13:59:48 -05:00
Vijay Janapa Reddi
c776519284 Update demo tapes and fix reset command
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>
2025-11-29 13:28:19 -05:00
Vijay Janapa Reddi
5686ca198b Fix syntax error in console.py comment
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>
2025-11-29 12:47:36 -05:00
Vijay Janapa Reddi
499f8aa066 Improve ASCII logo letter spacing and breathing room
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>
2025-11-29 12:18:59 -05:00
Vijay Janapa Reddi
495ff1cea9 Refine ASCII logo cohesion and visual balance
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>
2025-11-29 12:11:32 -05:00
Vijay Janapa Reddi
88f8753b0d Add Help & Docs section to welcome screen
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>
2025-11-29 12:09:25 -05:00
Vijay Janapa Reddi
22908bd4d6 Align tagline text under TORCH in ASCII logo
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>
2025-11-29 11:59:39 -05:00
Vijay Janapa Reddi
f81ab97100 Update dependency checks to match requirements.txt
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>
2025-11-29 11:46:15 -05:00
Vijay Janapa Reddi
53cd2a90f0 Add leaderboard and compete subcommands to community
New browser-opening subcommands:
- tito community leaderboard → Opens https://tinytorch.ai/community/leaderboard
- tito community compete → Opens https://tinytorch.ai/community/compete

These provide easy access to community features that will be
implemented on the website later. Clean integration with the
GitHub-first join flow.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 11:44:18 -05:00
Vijay Janapa Reddi
58fe9363f0 Simplify CLI welcome screen and remove redundant community commands
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>
2025-11-29 11:41:51 -05:00
Vijay Janapa Reddi
63e6b282be Remove demo and book commands from CLI
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>
2025-11-29 11:19:30 -05:00