# Scrin 0.1.83 Release Notes
Made by KnottDynamics.
This release adds Scrin-level support for interactive terminal widgets: stable hit regions, hover and mouse event mapping, selectable text spans, scroll-aware hit testing, metadata-rich rendered regions, and partial redraw invalidation for hover/selection updates.
## Interaction Layer
- Added `scrin::interaction` with `WidgetId`, `SelectionId`, `SelectionGroup`, `HitRegion`, `WidgetRole`, `WidgetMetadata`, `SelectableSpan`, `SelectionModel`, `HoverTracker`, `UiEvent`, and `UiEventMapper`.
- Hit regions include role, label, tooltip, action, cursor hint, z-index, row, column, selection group, description, shortcut, state, and value metadata.
- Selectable spans support source ranges, screen areas, logical ranges, groups, and copy transforms including code-only copy.
- Hover tracking emits enter/leave/move events and returns dirty rects for affected regions only.
- Pointer events map to widget-local UI events for move, mouse down, drag, mouse up, click, and selection changes.
## Terminal And Frame APIs
- Added frame registration helpers for hit regions, metadata regions, selectable spans, and scroll regions.
- Added `Frame::mark_dirty(...)` and `PresentStrategy::MarkedDirty` for partial redraws driven by hover/selection changes.
- Added terminal lookup helpers for hit testing, scroll-aware hit testing, selectable span lookup, dirty region inspection, and normalized pointer-event handling.
## Widget Metadata
- `CodeBlock` can now be selectable, have a stable region ID, render an optional language header, expose per-line hit regions, and copy only code contents without header/chrome.
- `RetainedMarkdownOutput` and `MarkdownOutput` can register transcript rows, code-line rows, selectable spans, and code-only copy groups.
- `ScrollableText`, `List`, and `Tabs` now have metadata-aware render methods for stable row/tab IDs and scroll-aware hit mapping.
## New Widgets
- `TranscriptViewport`: retained Markdown transcript viewport with scroll bounds, bottom-relative behavior, status labels, selectable metadata, and shared row measurement for bounds/render.
- `PaneMouseRouter`: named pane hit testing with wheel allow-lists and non-scrollable prompt/input regions.
- `CachedEffectPane`: size/config-aware Aisling effect pane with requested frame rendering, muted palettes, overlay labels, and hit metadata.
- `StatusDeck`: compact toggle/runtime/key/validation dashboard with row metadata and right-pane visibility state.
- `TodoList`: checklist rows with stable IDs, hover/selection state, click actions, markers, and selectable row text.
- `PaneCockpit`: responsive named-pane shell that switches between columns and stacked layout, with focus colors, borders, padding, and optional subtle background motion.
- `KanbanBoard`: compact lane/card board with counts, badges, empty hints, intake labels, overflow rows, and stable card hit regions.
## Docs And Packaging
- Updated README and crate docs for interaction metadata, partial dirty redraw, and new KnottCode-focused widgets.
- Updated crates.io keywords for mouse and selection discovery.
- Included this `newest_release.MD` file in the crate package.