Packages
Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.
Current section
Files
Jump to
Current section
Files
docs/releases/v1.2.0_release_notes.md
# Raxol v1.2.0 Release Notes
**Release Date:** 2025-09-10
**Version:** v1.2.0
**Focus:** Complete Test Suite Resolution, Technical Debt Cleanup, and Development Standards
## Overview
Version 1.2.0 represents a major stabilization release focusing on complete test suite resolution, technical debt cleanup, and establishing comprehensive development standards. This release achieves 100% resolution of identified major test failures and implements systematic codebase organization improvements.
## Sprint 25-26 Major Achievements (September 2025)
### Complete Test Suite Resolution
- **InputBuffer Module**: Complete implementation resolving 39 test failures
- Fixed module naming conflicts and compilation issues
- Implemented proper overflow handling for truncate, wrap, and error modes
- All buffer manipulation functions now fully functional
- **All Major Test Issues Resolved**: 13/13 Sprint 25 failures fixed
- ColorSystem accessibility integration
- Mouse input integration (click/selection modes)
- UI rendering pipeline parameter validation
- Interlacing mode CSI handler mappings
### Technical Debt & Codebase Cleanup
- **Repository Organization**: Comprehensive cleanup and maintenance
- Removed crash dump files (6.8MB storage freed)
- Archived Sprint 23 refactoring scripts to organized structure
- Created proper archival system for historical benchmark data
- **Development Standards**: Established comprehensive guidelines
- Created `docs/development/NAMING_CONVENTIONS.md` with complete module standards
- Documented Sprint 22-23 refactoring patterns (`<domain>_<function>.ex`)
- Applied consistent code formatting across entire codebase
## Critical API Fixes
### GenServer Delegation Corrections
Fixed critical parameter passing issues in two core modules that use GenServer delegation patterns:
**FocusManager API Fixes**
- Fixed all 16 public API functions in `Raxol.Core.FocusManager`
- Corrected delegation calls to `FocusServer` to properly pass server parameter
- Resolves `GenServer.whereis/1` errors where component IDs were being interpreted as server names
**KeyboardShortcuts API Fixes**
- Fixed all 14 public API functions in `Raxol.Core.KeyboardShortcuts`
- Corrected delegation calls to `ShortcutsServer` to properly pass server parameter
- Enables proper keyboard shortcut registration and handling in production environments
**Impact:** These fixes restore intended functionality for focus management and keyboard shortcuts, resolving production issues where these systems were not working correctly.
## Code Organization & Quality Tools
### Duplicate Filename Prevention System
Implemented comprehensive tooling to prevent and detect duplicate filenames that cause navigation issues:
**Three-Tool Approach:**
1. **Standalone Script** (`scripts/quality/check_duplicate_filenames.exs`)
- Quick project scanning with severity classification
- Contextual rename suggestions
- CI/CD integration support
2. **Mix Task** (`lib/mix/tasks/raxol.check.duplicates.ex`)
- Integrated workflow with configurable options
- Strict mode for build enforcement
- Flexible exclusion patterns
3. **Credo Integration** (`lib/raxol/credo/duplicate_filename_check.ex`)
- Part of existing linting workflow
- IDE integration through Credo
- Configurable severity levels
**Problematic Patterns Detected:**
- `manager.ex`, `handler.ex`, `server.ex`, `supervisor.ex`
- `renderer.ex`, `processor.ex`, `validator.ex`, `buffer.ex`
- `parser.ex`, `state.ex`, `types.ex`, `config.ex`
- `client.ex`, `worker.ex`
**Usage:**
```bash
# Basic check
mix raxol.check.duplicates
# With rename suggestions
mix raxol.check.duplicates --suggest-fixes
# Strict mode (fails on duplicates)
mix raxol.check.duplicates --strict
```
## Test Suite Improvements
### Theme Resolution Fixes
- Fixed test expectation mismatches in `theme_resolver_cached_test.exs`
- Corrected performance test comparisons (1000 cached vs 1000 uncached operations)
- Resolved unused variable warnings
### Module Reference Updates
- Updated `Events.Manager` references to `Events.EventManager`
- Fixed terminal name detection in color system tests
- Improved test reliability across different environments
### Real Implementation Testing
- Enhanced support for testing with real implementations instead of mocks
- Better configuration override patterns for test environments
- Improved reliability of UX refinement tests
## Performance & Reliability
### Error Handling Improvements
- Enhanced GenServer error recovery
- Better parameter validation in API delegation
- Improved error messages for debugging
### Memory & Performance
- Maintained parser performance at 3.3μs/op
- Memory usage kept under 2.8MB per session
- Enhanced caching strategies for theme resolution
## Documentation Enhancements
### API Reference Updates
- Complete documentation of GenServer API fixes
- Detailed migration guides for affected functions
- Architecture pattern explanations
### Development Guides
- Comprehensive duplicate filename prevention guide
- Code organization best practices
- Integration patterns for linting tools
### Configuration Examples
- Credo configuration for duplicate filename checking
- Mix task usage patterns
- CI/CD integration examples
## Breaking Changes
**None** - All changes in this release are backward compatible. The GenServer API fixes restore intended behavior without changing public interfaces.
## Migration Guide
### For Application Developers
No action required. The GenServer API fixes resolve bugs and restore intended functionality.
### For Test Writers
Tests using real implementations instead of mocks will now work correctly:
```elixir
test "real implementation test" do
Application.put_env(:raxol, :focus_manager_impl, Raxol.Core.FocusManager)
Application.put_env(:raxol, :keyboard_shortcuts_impl, Raxol.Core.KeyboardShortcuts)
# These now work correctly
FocusManager.register_focusable("my_component", 1)
KeyboardShortcuts.register_shortcut("Ctrl+S", :save, &my_callback/0)
end
```
### For Development Teams
Integrate duplicate filename checking into your workflow:
```bash
# Add to pre-commit hook
mix raxol.check.duplicates --strict
# Add to CI pipeline
mix raxol.check.duplicates --strict
```
## Implementation Status
### Completed Features
- [OK] GenServer API delegation fixes
- [OK] Duplicate filename prevention system
- [OK] Credo integration for code quality
- [OK] Comprehensive documentation
- [OK] Test suite stabilization
### Future Enhancements
- Auto-fixing tool for duplicate filename resolution
- IDE plugins for real-time duplicate detection
- Metrics tracking for code organization improvements
- ML-based naming recommendations
## Technical Details
### Architecture Improvements
- Standardized GenServer delegation patterns
- Enhanced error handling in core services
- Improved supervisor restart strategies
### Quality Metrics
- Test coverage maintained at 98.7%
- Zero duplicate critical filename patterns in core modules
- All Sprint 23+ test failures resolved
### Performance Benchmarks
- Parser operations: 3.3μs/op (maintained)
- Memory per session: <2.8MB (maintained)
- Theme resolution caching: 10x performance improvement
## Verification
Test the fixes with:
```bash
# Test GenServer APIs
iex> FocusManager.register_focusable("test_component", 1)
:ok
iex> KeyboardShortcuts.register_shortcut("Ctrl+T", :test, fn -> IO.puts("Test!") end)
:ok
# Test duplicate filename checking
mix raxol.check.duplicates --suggest-fixes
# Run full test suite
SKIP_TERMBOX2_TESTS=true MIX_ENV=test mix test --exclude slow --exclude integration --exclude docker
```
## Contributors
This release includes contributions to:
- Core API stabilization
- Development tooling enhancements
- Documentation improvements
- Test suite reliability
## Next Steps
Version v1.3.0 will focus on:
- Enhanced terminal emulation features
- Performance optimizations
- Extended UI framework capabilities
- Advanced accessibility features
For detailed technical information, see:
- `/docs/api_changes/genserver_api_fixes.md`
- `/docs/development/duplicate_filename_prevention.md`