🚀 Phoenix TUI v0.1.0-beta.3 Released - ExecProcess + Performance Tracking #4
kolkov
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
We're excited to announce Phoenix TUI Framework v0.1.0-beta.3! This release brings powerful new capabilities for running interactive commands, a convenient umbrella module, and comprehensive performance tracking.
🎯 Highlights
1. ExecProcess API - Run Interactive Commands ⭐
The biggest feature in this release! Execute external interactive programs (vim, ssh, tmux, claude, etc.) directly from your TUI application with proper terminal mode management.
Example - Running vim:
What it handles for you:
Use cases:
New convenience package that re-exports all Phoenix libraries:
Before:
After:
Benefits:
Comprehensive benchmarking infrastructure with automated tracking:
Performance metrics (v0.1.0-beta.3):
Automated workflow:
Run benchmarks
bash benchmarks/scripts/run_benchmarks.sh
Compare with baseline (detect regressions)
bash benchmarks/scripts/compare.sh
Set new baseline after release
bash benchmarks/scripts/set_baseline.sh
Results saved in benchmarks/results/ with version history for tracking performance over time.
🐛 Critical Fixes
Race Condition Fix - InputReader Lifecycle 🔥
Problem: ExecProcess could deadlock due to goroutine lifecycle race condition.
Solution: Generation counter pattern to prevent old goroutines from interfering:
type Program[T any] struct {
inputReaderGeneration uint64 // Generation counter
// ... other fields
}
func (p *Program[T]) stopInputReader() {
p.mu.Lock()
p.inputReaderGeneration++ // Invalidate old goroutine
p.mu.Unlock()
}
Impact:
Thanks to: GoSh team for discovering and validating the fix in production! 🙏
Terminal Mode Management 🔧
Fixed stdin not working in external commands:
TextArea Keybindings ⌨️
📊 Statistics
Code changes:
Test coverage:
Performance improvements vs beta.2:
📦 Installation
Umbrella module (recommended):
go get github.com/phoenix-tui/phoenix@v0.1.0-beta.3
Individual modules:
go get github.com/phoenix-tui/phoenix/tea@v0.1.0-beta.3
go get github.com/phoenix-tui/phoenix/style@v0.1.0-beta.3
go get github.com/phoenix-tui/phoenix/components@v0.1.0-beta.3
... other modules
🔗 Links
🎯 What's Next?
Upcoming in future releases:
🙏 Acknowledgments
Special thanks to:
🐛 Found a Bug?
Please report issues at: https://github.com/phoenix-tui/phoenix/issues
💬 Questions or Feedback?
Join the discussion! We'd love to hear:
Happy coding! 🔥
Phoenix TUI Framework - Next-generation Terminal UI framework for GoPerformance: 37,818 FPS | Coverage: 90%+ | Architecture: DDD + Clean Architecture
Beta Was this translation helpful? Give feedback.
All reactions