diff --git a/Directory.Build.props b/Directory.Build.props
index 72f234e..7d1683f 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -10,49 +10,45 @@
enable
true
true
- 0.3.0
- **New Features**:
-- **Inline animated text segments with tracked segment support** ([#71](https://github.com/Aaronontheweb/Termina/pull/71))
- - Opt-in tracked segments for `StreamingTextNode` enabling inline animations (spinners, timers, etc.)
- - Caller-provided `SegmentId` system (like HTML div IDs) for tracking and manipulating segments
- - New interfaces: `ITextSegment`, `IAnimatedTextSegment`, `ICompositeTextSegment`
- - `SpinnerSegment` component with 6 animation styles: Dots, Line, Arrow, Bounce, Box, Circle
- - `StaticTextSegment` for trackable static text
- - Methods: `AppendTracked(id, segment)`, `Replace(id, segment, keepTracked)`, `Remove(id)`
- - Interface-based message protocol with `IChatMessage` for clean chat operations
- - Enables any inline animated element (timers, progress bars, blinks, highlighters) with minimal overhead
+ 0.4.0
+ **Breaking Changes**:
+- **VerticalLayout and HorizontalLayout now default to Auto() sizing** ([#97](https://github.com/Aaronontheweb/Termina/pull/97))
+ - Previously, these layouts defaulted to Fill(), which caused nested layouts to compete with siblings for space
+ - New Auto() default means nested layouts size to their content by default
+ - Fill() is now only needed for children that should claim remaining space within a container
+ - Root layouts always fill terminal bounds regardless of constraints
+ - StackLayout retains Fill() as its default since overlays should fill
+ - Fixes [#95](https://github.com/Aaronontheweb/Termina/issues/95)
-**Bug Fixes**:
-- **Fix modal text input not accepting keystrokes** ([#70](https://github.com/Aaronontheweb/Termina/issues/70), [#74](https://github.com/Aaronontheweb/Termina/pull/74))
- - Critical fix where `TextInputNode` in modal dialogs would be immediately disposed after being focused
- - Fixed `ReactiveLayoutNode` lifecycle to call `OnDeactivate()` instead of `Dispose()` when switching children
- - Fixed modal focus propagation - `ModalNode` now forwards `OnFocused()` and `OnBlurred()` to content
- - Fixed `ReactiveLayoutNode` to call `OnActivate()` on new children when they are dynamically swapped in
- - Fixed render loop invalidation to properly propagate through container hierarchy
- - Users can now properly type in modal dialogs without `ObjectDisposedException`
+**New Features**:
+- **Rich content support for SelectionListNode** ([#96](https://github.com/Aaronontheweb/Termina/pull/96))
+ - New `SelectionItemContent` class for multi-line, styled selection items
+ - Support for `ITextSegment` (static and animated) in selection item content
+ - "Other" option with inline text input for custom user responses
+ - Multi-line items with per-line styling and animated segments (spinners, etc.)
+ - Proper coordinate translation via sub-context rendering
-- **Fix NavigationBehavior.PreserveState layout disposal issue** ([#67](https://github.com/Aaronontheweb/Termina/issues/67), [#69](https://github.com/Aaronontheweb/Termina/pull/69))
- - Implemented Active/Inactive State Pattern for layout nodes to prevent `ObjectDisposedException` when navigating
- - Added `IActivatableNode` interface defining `OnActivate`/`OnDeactivate` lifecycle methods
- - Layout nodes now pause/resume instead of dispose/recreate on navigation with PreserveState behavior
- - `ReactivePage` now builds layout once and preserves it across navigations
- - `TextInputNode`, `SpinnerNode`, `ReactiveLayoutNode`, `ConditionalNode`, `SelectionListNode`, `ModalNode`, and `ContainerNode` all properly implement lifecycle propagation
- - `TerminaApplication` now properly disposes cached pages via `IDisposable` implementation
- - Fixes race conditions and ensures proper resource cleanup
+- **Platform-native console abstraction for event-driven input** ([#90](https://github.com/Aaronontheweb/Termina/pull/90))
+ - Replaced polling-based input with platform-native event-driven input on Windows
+ - Windows console enables VT100/ANSI support via `ENABLE_VIRTUAL_TERMINAL_PROCESSING`
+ - Event-driven input via `ReadConsoleInputW` eliminates polling latency
+ - Window resize events via `WINDOW_BUFFER_SIZE_EVENT`
+ - ~1000x rendering performance improvement on Windows (22-60ms → 0.02-0.08ms per frame)
+ - Cached console dimensions to avoid repeated P/Invoke calls
+ - Fallback console for non-Windows platforms with 1ms polling delay
+ - Closes [#78](https://github.com/Aaronontheweb/Termina/issues/78), [#79](https://github.com/Aaronontheweb/Termina/issues/79), [#81](https://github.com/Aaronontheweb/Termina/issues/81)
-**Improvements**:
-- **Add TERMINA002 analyzer and refactor MVVM architecture** ([#68](https://github.com/Aaronontheweb/Termina/pull/68))
- - New Roslyn analyzer (TERMINA002) detects layout nodes incorrectly stored as fields/properties in ViewModels
- - Refactored MVVM pattern: ViewModel owns Input (public) for business logic, Page owns Focus for interactive control
- - ViewModels now handle keyboard input directly in `OnActivated()`
- - Pages can access `ViewModel.Input` when routing to interactive layout nodes
- - Updated documentation to reflect clearer separation of concerns
- - Reduces ceremony while maintaining clean MVVM architecture
-
-- **Documentation improvements** ([#66](https://github.com/Aaronontheweb/Termina/pull/66))
- - Added quick install section to docs homepage with NuGet badges and installation commands
- - Improved documentation discoverability for new users
- - Fixed docs deployment workflow trigger
+- **Formalized diagnostic tracing system** ([#84](https://github.com/Aaronontheweb/Termina/pull/84))
+ - Lightweight, zero-cost-when-disabled tracing system for debugging TUI applications
+ - Custom abstraction over Microsoft.Extensions.Logging (no direct dependency required)
+ - Deferred string formatting via `TraceEvent` struct with template and args
+ - Lock-free file output using Channel with single reader pattern
+ - Category-based filtering (Focus, Layout, Input, Page, Render, etc.)
+ - Level-based filtering (Trace, Debug, Info, Warning, Error)
+ - Optional MEL integration via `LoggerTraceListener` adapter
+ - DI extension methods for easy configuration
+ - Trace logs written to %TEMP%/termina-logs/ with timestamped filenames
+ - Addresses [#72](https://github.com/Aaronontheweb/Termina/issues/72)
---
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 9bff36f..ca3aaee 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,3 +1,46 @@
+#### 0.4.0 December 17th 2025 ####
+
+**Breaking Changes**:
+- **VerticalLayout and HorizontalLayout now default to Auto() sizing** ([#97](https://github.com/Aaronontheweb/Termina/pull/97))
+ - Previously, these layouts defaulted to Fill(), which caused nested layouts to compete with siblings for space
+ - New Auto() default means nested layouts size to their content by default
+ - Fill() is now only needed for children that should claim remaining space within a container
+ - Root layouts always fill terminal bounds regardless of constraints
+ - StackLayout retains Fill() as its default since overlays should fill
+ - Fixes [#95](https://github.com/Aaronontheweb/Termina/issues/95)
+
+**New Features**:
+- **Rich content support for SelectionListNode** ([#96](https://github.com/Aaronontheweb/Termina/pull/96))
+ - New `SelectionItemContent` class for multi-line, styled selection items
+ - Support for `ITextSegment` (static and animated) in selection item content
+ - "Other" option with inline text input for custom user responses
+ - Multi-line items with per-line styling and animated segments (spinners, etc.)
+ - Proper coordinate translation via sub-context rendering
+
+- **Platform-native console abstraction for event-driven input** ([#90](https://github.com/Aaronontheweb/Termina/pull/90))
+ - Replaced polling-based input with platform-native event-driven input on Windows
+ - Windows console enables VT100/ANSI support via `ENABLE_VIRTUAL_TERMINAL_PROCESSING`
+ - Event-driven input via `ReadConsoleInputW` eliminates polling latency
+ - Window resize events via `WINDOW_BUFFER_SIZE_EVENT`
+ - ~1000x rendering performance improvement on Windows (22-60ms → 0.02-0.08ms per frame)
+ - Cached console dimensions to avoid repeated P/Invoke calls
+ - Fallback console for non-Windows platforms with 1ms polling delay
+ - Closes [#78](https://github.com/Aaronontheweb/Termina/issues/78), [#79](https://github.com/Aaronontheweb/Termina/issues/79), [#81](https://github.com/Aaronontheweb/Termina/issues/81)
+
+- **Formalized diagnostic tracing system** ([#84](https://github.com/Aaronontheweb/Termina/pull/84))
+ - Lightweight, zero-cost-when-disabled tracing system for debugging TUI applications
+ - Custom abstraction over Microsoft.Extensions.Logging (no direct dependency required)
+ - Deferred string formatting via `TraceEvent` struct with template and args
+ - Lock-free file output using Channel with single reader pattern
+ - Category-based filtering (Focus, Layout, Input, Page, Render, etc.)
+ - Level-based filtering (Trace, Debug, Info, Warning, Error)
+ - Optional MEL integration via `LoggerTraceListener` adapter
+ - DI extension methods for easy configuration
+ - Trace logs written to %TEMP%/termina-logs/ with timestamped filenames
+ - Addresses [#72](https://github.com/Aaronontheweb/Termina/issues/72)
+
+---
+
#### 0.3.0 December 17th 2025 ####
**New Features**: