Skip to content

Releases: darkryh/dispatch

v1.0.0-beta03

v1.0.0-beta03 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jul 19:54
63ac996

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

v1.0.0-beta02 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Jul 23:44
35410b1

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

v1.0.0-beta01 Pre-release
Pre-release

Choose a tag to compare

@darkryh darkryh released this 01 Jul 16:29

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 terminalColumn, 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 the hibernation { } block.
  • Typed navigation — a serializable back stack with lifecycle-aware, view-model-scoped entries.
  • Architecture batteries includedViewModel and 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.