Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
Plugin System Integration: Content rendering plugins now integrate with Conversation widget
Blocks with
content_typemetadata are routed to matching pluginsBuilt-in
MarkdownPluginrenders Markdown content with formattingFallback to plain text when no plugin matches or rendering fails
Plugin priority ordering (higher priority plugins checked first)
Role labels preserved on plugin-rendered content
MarkdownPlugin: Built-in plugin for rendering Markdown content
Supports
text/markdown,markdown, andmarkdown/*content typesRenders headers, bold, italic, lists, code blocks, and links
High priority (10) for default handling
App Plugin Methods: New methods for plugin management
register_plugin(plugin)- Register a content pluginunregister_plugin(plugin)- Unregister a pluginget_plugins()- Get list of registered pluginsget_plugin_for_content(content_type, content)- Find best matching plugin
Conversation Plugin Support: New
pluginsparameter in__init__Accepts list of ContentPlugin instances
Routes content to plugins based on
content_typemetadataGraceful fallback on plugin failure
Block Navigation: Navigate between conversation blocks with keyboard
Alt+Up/Down to select previous/next block
Escape to clear selection
Cyan highlighting for selected blocks
Auto-scroll centers selected block in viewport
Configurable wrap behavior and visual bell
Transparent loading of pruned blocks during navigation
BlockInfofrozen dataclass for immutable block informationblock_id: Unique identifier with session UUID prefixrole: Message role (user, assistant, system, tool)content: Text contentmetadata: Custom application data (immutable)timestamp: UTC-aware creation timestampsequence: 0-indexed position in conversationrelative_timestamp: Human-readable time property
Conversation.session_idproperty for session trackingConversation.get_block(block_id)method for O(1) block lookup by IDConversation.get_block_at_index(index)method for O(1) block lookup by positionConversation.append()now accepts optionalmetadataparameterConversation.__init__now accepts optionalsession_uuidparameterConversationnavigation properties:selected_block: Reactive property for selected block IDselected_block_index: 0-indexed position of selected blockselected_block_info: BlockInfo for selected blockwrap_navigation: Configurable wrap at boundariesnavigation_bell: Configurable visual bell at boundaries
Changed
Block ID format changed from
block-{counter}to{session_uuid}-{sequence}Conversation.clear()no longer resets the sequence counterSequence counter continues incrementing across clear operations
Selected blocks now display in cyan without background highlighting
[0.1.0] - 2026-04-11
Added
Initial package structure with pyproject.toml
Makefile with development workflow commands
Basic tests (package import and version)
Project Setup
py.typed marker file for PEP 561 compliance
GitHub Actions CI workflow
Test matrix: Python 3.10, 3.11, 3.12
OS: macOS, Linux, Windows
Typecheck with mypy –strict
Lint with ruff
Foundation
Exception hierarchy with
CliticError,PluginError,ConfigurationError,RenderErrorPlugin base classes:
ContentPluginABC for content renderersModeProviderABC for input mode providersCompletionProviderABC for completion sourcesRenderableandHighlighterprotocols
Completiondataclass for completion suggestionsAppclass extending Textual’s AppPlugin management (
register_plugin,unregister_plugin)Input handling (
@app.on_submitdecorator)Theme support
Base TCSS stylesheet with color palette
Widgets
InputBarwidget for multiline text inputExtends Textual’s TextArea
Enter to submit, Shift+Enter for newline
Placeholder text support
Multiple themes (monokai, github_light, etc.)
Disabled state handling
BINDINGS for proper key handling
Showcase
Interactive TUI showcase application
Light theme with blue accents
Message display with proper contrast
Auto-focus on input bar
Documentation
CLAUDE.md for Claude Code guidance
Showcase application demonstrating implemented features
Sphinx documentation setup for readthedocs.org
API reference for widgets (InputBar)
Changed
Dropped Python 3.9 support (requires Python 3.10+)
Updated README.md Quick Start example