-
Notifications
You must be signed in to change notification settings - Fork 160
Roadmap
This page shows where TermUI is, what is in progress, and what comes next. Use it to find work that fits your skill level.
TermUI ships a working core today:
- Layout engine with flexbox and constraint rules
- Differential renderer. Only changed cells redraw.
- JSX runtime and React-style hooks
- 13 packages, 600+ tests passing
- Theming, animations, routing, hot-reload dev server
- 40+ widgets and a headless test harness
| Wave | Focus | Status |
|---|---|---|
| Wave 1 | Core widgets | Merging now |
| Waves 2 to 4 | Capabilities, adapters, prompts, registry, templates | All assigned |
| Wave 5 | Coverage and polish | Open and claimable |
| Wave 6 | New widgets | Open and claimable |
| Wave 7 | Hooks and core depth | Open and claimable |
| Wave 8 | Subsystem depth | Open and claimable |
| Waves 9 to 10 | DX and differentiators | Planned |
Waves 5 to 8 are open right now with 55 unassigned issues across all skill levels. Browse open good first issues or the project board. Comment "I would like to work on this" to claim one. You hold at most 2 open issues at a time.
Beginner-friendly. No feature code. Available first. Best place to start.
-
Tests for untested code:
dev-serverandtestingpackages have zero tests.uihas 9 untested components (Form, NumberInput, PasswordInput, and more).widgetshas 12 untested (Grid, Sidebar, BigText, and more). - Examples that do not exist yet: forms-and-validation, multi-screen-router, ai-streaming, auth-flow, cli-wrapper-live.
-
Docs: a "Choosing your API" guide (imperative vs JSX vs quick), a
DEVELOPMENT.md, and expanded READMEs for dev-server, motion, router.
Beginner to intermediate. Each widget is one clean PR.
- DatePicker, TimePicker, ColorPicker
- Slider and RangeInput
- Autocomplete and SearchableSelect
- TreeTable (tree plus columns)
- MultilineTextInput
- SegmentedControl, Carousel, ContextMenu
Intermediate. React-parity hooks and core primitives.
- useReducer, useLayoutEffect, useId, useImperativeHandle
- Suspense and lazy() for async components
- Portal for overlay rendering
- Clipboard read and paste events
- Wide-character and emoji fallback in the renderer
Intermediate to advanced. Pick a package and deepen it.
- Store: middleware, persist plugin, computed selectors, immutable helpers
- Motion: keyframes, custom easing, chained sequences, 2D vectors
- Router: lazy routes, guards, nested routes, query strings, param validation
- TSS: nesting, mixins, color functions, pseudo-class states, imports
- Data: WebSocket provider, REST client hook, caching, time-series history
Intermediate to advanced. Close the DX gap with Textual and Ink.
- Error overlay in the dev server
- Theme hot reload without full restart
- Devtools inspector UI (live widget tree plus hook state)
- Snapshot testing in the test harness
- Accessibility test queries
- VS Code snippets package
- Scaffold improvements: example test, editor config, CI template
Advanced. Mentor-led epics. Each starts as an RFC, then splits into sub-issues.
- Command palette v2: fuzzy action runner with app commands
- Web serving: stream the same app to a browser
- Plugin architecture: third-party widgets, themes, commands, panels
- Full styling system: selector-driven cascading styles with live reload
- Demo recording tool: scriptable terminal recordings to GIF, SVG, MP4
- Interactive playground and widget gallery
- Open the project board.
- Filter by
level:beginner,level:intermediate, orlevel:advanced. - Read the issue. Comment "I would like to work on this".
- Wait for assignment, then open your PR within 7 days.
Found a gap not on this roadmap? Open a new issue. New ideas are welcome.
Shape the big features before code starts: