Releases: darkryh/dispatch
Release list
v1.0.0-beta03
What's Changed
- Fix theme string helpers, Koin route validation, VersionComparator precedence; correct docs for beta03 by @darkryh in #5
Full Changelog: v1.0.0-beta02...v1.0.0-beta03
v1.0.0-beta02
What's Changed
- Fix Column/Row spacedBy under-measuring by the inter-child gap total by @darkryh in #3
- release: dispatch Pages redeploy explicitly and tolerate missing signing key ID by @darkryh in #4
New Contributors
Full Changelog: v1.0.0-beta01...v1.0.0-beta02
v1.0.0-beta01
Dispatch is a declarative terminal-UI framework for Kotlin. If you know Compose, you already know Dispatch: @Composable functions, state-driven recomposition, layout containers, a modifier chain, navigation, and view models — rendered to a real terminal, flicker-free.
This is the first public release, and it's a beta. The API is close to 1.0 but may still shift between betas before the stable release — pin the exact version and expect the occasional breaking change.
Highlights
- The Compose programming model, in a terminal —
Column,Row,Box, lazy lists,remember, state and recomposition,CompositionLocals, and a familiar modifier system. - A full widget set — text, buttons, inputs, selectable and multi-select lists, tables, grids, trees, panels, surfaces, dividers, progress bars, spinners, checklists, diffs, and a command palette.
- Flicker-free rendering — content is painted print-once / append-only; only what changes is repainted, and every frame is buffered and flushed atomically.
- Idle hibernation — after a span with no input, the app drops its paint cadence to
idleFps(default 1) and releases rebuildable caches, then wakes instantly on the next key — without pausing your background work, view models, or scrollback. On by default and fully configurable via thehibernation { }block. - Typed navigation — a serializable back stack with lifecycle-aware, view-model-scoped entries.
- Architecture batteries included —
ViewModeland MVI base classes, a lifecycle registry, saved-state handles, and optional Koin dependency injection. - Optional modules — in-app self-update (Homebrew, Scoop, APT, GitHub releases) and filesystem watching.
Requirements
- JDK 21 or newer.
- Kotlin with the Compose compiler plugin — Dispatch composables are compiled by the same plugin used for Compose.
Getting started
The fastest way to start is the browser-based Dispatch Initializr, which scaffolds a complete, ready-to-run app with no backend and no manual Gradle setup: https://darkryh.github.io/dispatch/
Or add it to an existing Gradle project from Maven Central:
plugins {
kotlin("jvm") version "2.4.0"
id("org.jetbrains.kotlin.plugin.compose") version "2.4.0"
}
dependencies {
implementation("io.github.darkryh.dispatch:dispatch-core:1.0.0-beta01")
implementation("io.github.darkryh.dispatch:dispatch-widgets:1.0.0-beta01")
// add as needed: dispatch-navigation, dispatch-koin, dispatch-workspace, …
}All modules share the io.github.darkryh.dispatch group and this version.
Documentation
Getting started, how-to guides, full reference, and the render-model explanation live in docs/. The README has the complete module list.