Changelog
All notable releases of Termina.
# Termina 0.10.2
- Unrecognized CSI tilde sequences now flush correctly (#232)
- Fix for [5~ (PgUp), [6~ (PgDn) and other bracketed CSI sequences being silently swallowed by the escape sequence parser. These were causing the parser to stay stuck in InBracketSequence mode, blocking all subsequent input. Sequences now flush as raw KeyPressed events for application handling.
- Legacy CSI tilde key decoding — Maps legacy CSI tilde key sequences to semantic ConsoleKey events while preserving unknown tilde raw flush behavior.
- TextInputNode placeholder background color fixed (#233)
# Termina 0.10.1
- RebuildBuffer correctly inserts a newline before block segments after Clear() ([#224](https://github.com/Aaronontheweb/termina/pull/224))
- Pre-fix, after Clear() reset HasContentOnCurrentLine, the first re-added block segment skipped its leading newline during rebuild, causing block content to collide with prior content on the same line.
- Moves the block-newline check inline, evaluated *after* prior elements are re-appended so the buffer state reflects the in-progress reconstruction.
- Animation callbacks now hold _contentLock ([#225](https://github.com/Aaronontheweb/termina/pull/225))
# Termina 0.10.0
- ReactivePage.InvalidateLayout() for runtime layout rebuilds ([#220](https://github.com/Aaronontheweb/termina/pull/220))
- New protected void InvalidateLayout() method on ReactivePage<TViewModel> that discards the cached layout tree and rebuilds via BuildLayout()
- Solves the problem of layout values "baked in" at first navigation time (e.g. SizeConstraint.Auto records) being permanently frozen — consumers can now trigger a full rebuild when external state changes (terminal resize, etc.)
- Preserves user subscriptions, key bindings, and focus when the target node survives the rebuild
# Termina 0.9.0
- SelectionListNode pre-selection via WithHighlightedIndex() ([#213](https://github.com/Aaronontheweb/termina/pull/213))
- New fluent method WithHighlightedIndex(int index) allows callers to pre-select a highlighted item in SelectionListNode by index at construction time
- Useful for dialogs that should open with a sensible default already highlighted
- SelectionListNode full-height mode via WithFillHeight() ([#210](https://github.com/Aaronontheweb/termina/pull/210))
# Termina 0.8.0
- CopyableTextNode with terminal clipboard support ([#179](https://github.com/Aaronontheweb/termina/pull/179))
- New CopyableTextNode component for selectable, copyable text with keyboard-driven selection
- Configurable copy key bindings via CopyKeyBinding
- Terminal clipboard integration using OSC 52 escape sequences with automatic tmux transport fallback
# Termina 0.7.2
- TextAreaNode multi-line text input ([#161](https://github.com/Aaronontheweb/Termina/issues/161), [#163](https://github.com/Aaronontheweb/Termina/pull/163))
- New TextAreaNode component for multi-line text input with line-by-line editing
- Extracted common base class TextInputBaseNode shared with single-line TextInputNode
- Alt+Enter for universal newline insertion (works on all terminals, unlike Ctrl+Enter)
# Termina 0.7.1
- DynamicLayoutNode is now invalidation-driven ([#155](https://github.com/Aaronontheweb/Termina/issues/155))
- Factory no longer runs on every Measure/Render cycle — runs once, then only on Invalidate()
- Fixes silent state destruction (highlights, typed text, focus) when factory creates new instances
- Invalidate() now eagerly evaluates the factory for immediate child swap
# Termina 0.7.0
- Migrate from System.Reactive to R3 ([#140](https://github.com/Aaronontheweb/Termina/pull/140))
- Replaced System.Reactive (Rx.NET) with [R3](https://github.com/Cysharp/R3) throughout the framework
- IObservable<T> → Observable<T> in all public APIs
- OfType<T>() → OfType<TSrc, TDest>() (R3 requires both type parameters)
# Termina 0.6.1
- Built-in input history for TextInputNode ([#144](https://github.com/Aaronontheweb/Termina/pull/144))
- New WithHistory(maxEntries) fluent API for enabling input history
- New AddHistory(text) method for programmatically adding history entries
- Up/Down arrow keys navigate through previous input submissions
# Termina 0.6.0
- Scrollbar for StreamingTextNode ([#138](https://github.com/Aaronontheweb/Termina/pull/138))
- Visual scrollbar renders on the right edge of StreamingTextNode when content exceeds the viewport
- ScrollbarOptions record for customizing track/thumb characters and colors, with AutoHide support
- WithScrollbar() fluent method on StreamingTextNode for opt-in configuration