kollabor-tui
kollabor-tui is the terminal UI package for Kollabor.
It owns rendering primitives, terminal state, input parsing, design-system components, widgets, status layout, modals, fullscreen sessions, message display, tool display, and alternate-view support. TUI code in the app should use these components rather than writing directly to terminal renderer internals.
Current Role
- Provide the design system used by messages, status widgets, modals, and tools.
- Track terminal size and layout state through shared helpers.
- Coordinate message display and alternate-buffer/fullscreen transitions.
- Parse keyboard input and route it through modal/status/input controllers.
- Render tool calls, thinking blocks, profile modals, command menus, and widgets.
- Provide reusable widgets for plugin/config UI surfaces.
Architecture
| Module/Directory | Responsibility |
|---|---|
design_system/ |
themes, colors, icons, gradients, boxes, inline widgets |
terminal_state.py |
terminal dimensions and global state helpers |
terminal_renderer.py |
main terminal active-area renderer |
message_coordinator.py |
message flow and alternate-buffer coordination |
message_display_service.py |
message display policy and suppression logic |
message_renderer.py / tool_display.py |
message/tool formatting |
render_loop.py / render_layout.py |
render triggers and screen regions |
input/ / input_handler.py |
input loop, key handling, command mode, paste |
status/ |
status layout, widgets, navigation, inline editors |
modals/ |
modal state, overlays, actions, renderers |
fullscreen/ |
fullscreen plugin/session manager and renderer |
altview/ |
alternate-view stack/session/display queue |
widgets/ |
text, dropdown, checkbox, tree, slider, file browser widgets |
display_tap.py / buffer_manager.py |
display capture and buffering |
Usage
from kollabor_tui import T, get_terminal_size, solid_fg
width, height = get_terminal_size()
line = solid_fg("hello".ljust(width), T().primary)
For application rendering, prefer MessageDisplayCoordinator, fullscreen
manager/session APIs, and terminal-state helpers. Avoid direct manipulation of
TerminalRenderer render-state internals.
Known Gaps
- Rendering behavior is sensitive to terminal lifecycle, alternate buffers, and resize events; risky changes need read-only lifecycle tracing before patches.
- Some display policy lives across
message_display_service.py,message_coordinator.py, andtool_display.py; regression tests should cover classification/display paths together. - The package exposes many public imports from
__init__.py; a smaller stable facade would make downstream usage clearer. - Visual behavior often needs real terminal or screenshot-style verification in addition to unit tests.
Roadmap
Phase 1: Rendering stability
- Document the steady-state draw, modal/fullscreen transition, and resize recovery contracts.
- Add focused regression tests for tool display classification and suppression.
- Keep terminal size access centralized through
terminal_state.py.
Phase 2: Public API cleanup
- Split stable public APIs from compatibility exports.
- Add examples for widgets, status widgets, fullscreen plugins, and altviews.
- Make design-system usage patterns consistent across all TUI surfaces.
Phase 3: Verification tooling
- Add repeatable terminal/screenshot verification for fullscreen and complex render paths.
- Improve diagnostics for render loop hibernation, buffering, and active-area state.
- Document plugin UI extension points with real examples.
Development
Targeted validation examples:
python -m py_compile packages/kollabor-tui/src/kollabor_tui/*.py
python -m pytest tests/unit/mcp/test_mcp_status_plugin.py -q
Dependencies
kollabor-events
License
MIT
Metadata
Release files for kollabor-tui 0.11.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kollabor_tui-0.11.1.tar.gz | 369.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kollabor_tui-0.11.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 805.5 kB
Release files / kollabor_tui-0.11.1.tar.gz
| Download URL | kollabor_tui-0.11.1.tar.gz |
|---|---|
| Size | 369.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c8e5ee5bf2d7a53b9a4610a376ad0979431f01395c1e8627f9a08d158b9c15c9
|
|
BLAKE2b-256 checksum How to use checksums |
48f52ec880358ddc54975f2ef0f5a91afe0b62b4a6c9034fcfc35a5f1f053f60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / kollabor_tui-0.11.1-py3-none-any.whl
| Download URL | kollabor_tui-0.11.1-py3-none-any.whl |
|---|---|
| Size | 435.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b574e7d2e36d060a3f6da72de5d6a48be5db2e066e9e6927d6523bb0e851a810
|
|
BLAKE2b-256 checksum How to use checksums |
31fb4546757b7470a73f77473250b68c7c54a46b25f76c7aeccacfe2886ca15d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|