Releases: charmbracelet/bubbletea
v1.1.0
Letโs Focus
Lose focus much? This release contains support for focus-blur window events.
Usage
All you need to do is to add the program option to your application:
p := tea.NewProgram(model{}, tea.WithReportFocus())
if _, err := p.Run(); err != nil {
fmt.Fprintln(os.Stderr, "Oof:", err)
os.Exit(1)
}
Then later in your Update
function, you can listen for focus-blur messages:
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) {
case tea.FocusMsg:
// Focused!
case tea.BlurMsg:
// Not focused :(
}
return m, nil
}
For details, see WithReportFocus.
Tmux
If you're using tmux
, make sure you enable the focus-events
option in your config.
set-option -g focus-events on
Happy focusing (whatever that means)!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v1.0.1
This release that fixes the way carriage returns are handled with using the WithoutRenderer ProgramOption
and improves the way it works overall by not altering the terminal the way we normally do when starting a Program
. For details see #1120.
- c69bd97: fix: we don't initialize the terminal when using a nilRenderer (#1120) (@aymanbagabas)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v1.0.0
At last: v1.0.0
This is an honorary release denoting that Bubble Tea is now stable. Thank you, open source community, for all your love, support, and great taste in beverage over the past four years.
Stay tuned for v2: we have some great things coming.
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.27.1
This is a lilโ workaround for a hang that can occur when starting a program using Lip Gloss. For details see #1107.
Changelog
Bug fixes
- d6458e0: fix: force query the terminal bg before running any programs (@aymanbagabas)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.27.0
Suspending, environment hacking, and more
Hi! This release has three nice little features and some bug fixes. Let's take a look:
Suspending and resuming
At last, now you can programmatically suspend and resume programs with the tea.Suspend
command and handle resumes with the tea.ResumeMsg
message:
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) {
// Suspend with ctrl+z!
case tea.KeyMsg:
switch msg.String() {
case "ctrl+z":
m.suspended = true
return m, tea.Suspend
}
// Handle resumes
case tea.ResumeMsg:
m.suspended = false
return m, nil
}
// ...
}
There's also a tea.SuspendMsg
that flows through Update
on suspension.
Special thanks to @knz for prototyping the original implementation of this.
Setting the environment
When Bubble Tea is behind Wish you may have needed to pass environment variables from the remote session to the Program
. Now you can with the all new tea.WithEnvironment:
var sess ssh.Session // ssh.Session is a type from the github.com/charmbracelet/ssh package
pty, _, _ := sess.Pty()
environ := append(sess.Environ(), "TERM="+pty.Term)
p := tea.NewProgram(model, tea.WithEnvironment(environ)
Requesting the window dimensions
All the Bubble Tea pros know that you get a tea.WindowSizeMsg
when the Program
starts and when the window resizes. Now you can just query it on demand too with the tea.WindowSize
command.
Changelog
New!
- 7d70838: feat: add a cmd to request window size (#988) (@aymanbagabas)
- ea13ffb: feat: allow to suspend bubbletea programs (#1054) (@caarlos0)
- cae9acd: feat: set the program environment variables (#1063) (@aymanbagabas)
Fixed
- 7c1bfc0: query window-size in a goroutine (#1059) (@aymanbagabas)
- 4497aa9: reset cursor position on renderer exit (#1058) (@aymanbagabas)
- d6a19f0: wrap
ErrProgramKilled
error (@aymanbagabas) - 4a9620e: fix bugs in package-manager example (@AkshayKalose)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.26.6
Changelog
Bug fixes
- 60a57ea: fix: nil deref on release terminal (@aymanbagabas)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.26.5
Fix special keys input handling on Windows using the latest Windows Console Input driver.
Changelog
New Features
- 42a7dd8: feat(ci): use goreleaser for releases (#1023) (@aymanbagabas)
Bug fixes
Other work
- 2d65ed6: chore(examples): removed use of deprecated Copy (@arianizadi)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.26.4
Fix panics! Using program.SetWindowTitle
and others may panic if they were called before the program starts.
Also note that program.SetWindowTitle
is now deprecated. To set the window title use tea.SetWindowTitle
command.
What's Changed
- chore(deps): bump github.com/charmbracelet/x/ansi from 0.1.1 to 0.1.2 by @dependabot in #1026
- chore(deps): bump github.com/charmbracelet/lipgloss from 0.10.0 to 0.11.0 in /examples by @dependabot in #1025
- fix: program renderer commands by @aymanbagabas in #1030
Full Changelog: v0.26.3...v0.26.4
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.26.3
This is a patch release that prevents tea.WindowSizeMsg
s from being fired during altscreen changes on Windows. This was due to the fact that Windows emits a window-size-event
on altscreen changes even if the size handโt changed. Now, we cache the window-size and compare before sending the message to the Model
.
What's Changed
- Prevent multiple window-size-events from firing on Windows by @aymanbagabas in #1021
- refactor: use x/term and x/ansi for renderer sequences by @aymanbagabas in #962
Full Changelog: v0.26.2...v0.26.3
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.26.2
This fixes a small regression that was introduced in v0.26.0 related to the first line on the first render not being displayed correctly. Thank you @mistakenelf for pointing this out in #1000!
What's Changed
- fix: stop and drain timers by @caarlos0 in #993
- chore(lint): minor lint-related improvements by @meowgorithm in #1007
- fix: renderer: reset the cursor on the first line by @aymanbagabas in #1008
- chore(deps): bump golang.org/x/sys from 0.19.0 to 0.20.0 by @dependabot in #1003
- chore(deps): bump golangci/golangci-lint-action from 5 to 6 by @dependabot in #1005
- chore(deps): bump golang.org/x/term from 0.19.0 to 0.20.0 by @dependabot in #1002
Full Changelog: v0.26.1...v0.26.2
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.