announcements 2026-01-26

https://github.com/xlfe/radiale Radiale is a home automation system combining Clojure for orchestration and Python for device integrations, connected via Babashka pods. - Sharing because I've been doing some "renovation" on the project. Feedback welcomed! I've been using it for a few years now to run the IoT devices for my home (automation).

๐Ÿ  10
๐Ÿค– 2
๐ŸŽ‰ 4

I vibed a https://codeberg.org/timokramer/charm.clj that's supposed to bring the niceties of https://github.com/charmbracelet/bubbletea to clojure. It works for my simple examples and it runs as native-image, maybe it is of use for someone, I am planning to build something more sophisticated with it. If someone finds problems with it please let me know. It's just a proof of concept for me so far.

๐ŸŽ‰ 27

@timok the clojure CLI now added support for codeberg domains, so you can publish it as org.codeberg.timokramer/charm.clj

๐Ÿ˜ 1

I wonder if I should add jline to bb so people can make TUIs with it (and potentially run libs like this)

you can already do TUI stuff but mostly via shelling out to gum (or via bblgum lib) or a pod

๐Ÿ’ฏ 1

the main thing withholding me from adding jline is that they are now at version 3.. how fast do these versions come out and how much churn will this add to bb

yeah, I thought about this as well since jline seems the only needed dep to make a tui on jvm. there is already a jline4 alpha release. would be cool of course to have it in babashka.

wait, one example of a pure bb TUI is this one: https://github.com/yannvanhalewyn/prstack/ for inspiration

๐Ÿ‘ 1

oh wait, it also seems to be using gum now :)

let me try to make a PoC for bb with jline3 where you can run this lib... but hearing about jline4 already makes me worried

can't find any traces of jline4 though

but it's under the jline3 repo

yeah, it makes no sense that they always switch to a different repo, don't know why is that

any more info on this?

nah, i don't think it will happen soon

can you explain why you are using this version?

org.jline/jline-terminal-jni {:mvn/version "3.26.1"}

what's the "-jni" thing about?

jni is the prefered terminal interface

ok... and you tested it with graalvm native-image right?

any additional config needed?

yeah, in examples you can find the setup i used for it

$ clojure -M:babashka/dev -cp src counter.clj
Jan 27, 2026 12:07:42 PM org.jline.utils.Log logr
WARNING: Unable to create a system terminal, creating a dumb terminal (enable debug logging for more information)
Counter App

โ•ญโ”€โ”€โ”€โ•ฎ
โ”‚ 0 โ”‚
โ•ฐโ”€โ”€โ”€โ•ฏ
how do I enable debug logging? ;)

๐Ÿ‘€ 1

This is awesome! I have always been upset with the state of TUI in clojure. I have so many use-cases for this. Really nice work

๐Ÿ™ 1

In a private converdation, @timok and I figured out how to make jline work with bb :)

$ bb -cp ../../src:src -m examples.todos
Todo List
2 pending, 1 done

> [x] Learn charm.clj
  [ ] Build a TUI app
  [ ] Have fun!

j/k up/down โ€ข a add todo โ€ข x toggle done โ€ข d delete โ€ข ? help โ€ข โ€ฆ
All examples in the docs/examples directory work. I pushed it to the jline branch in bb

๐Ÿ‘ 1
๐Ÿคฏ 3
๐Ÿš€ 1

borkdude man ... you are a scholar and a gentle-mensch ๐Ÿ–– ๐Ÿ˜„

5

I was searching for something like that for some time! Looking forward to use in https://eca.dev/ in the future, would be nice to add some screenshots of what's possible

๐Ÿ™ 1
Dustin Getz (Hyperfiddle) 2026-01-26T13:09:10.537939Z

Any screenshots of functionality that you've implemented?

FYI io.github.yourname/charm.clj

yeah, not published yet...but it won't be io.github i guess

โค๏ธ 1

Hey @timok this is exactly what I and @adityaathalye were looking for the past week. Keep me in loop for any help needed for testing and ui.

or packaging

yeah, will be investigating some testing with probably charmbracelet/vhs @hmisraji07 very happy for collaboration.

Let's connect this weekend

๐Ÿ‘ 1

https://github.com/squint-cljs/squint: Light-weight ClojureScript dialect v0.10.185 (2026-01-26) - 0.9.169 โ€ข Add squint.math, also available as clojure.math namespace (a direct port of the original) โ€ข Fix emitting negative zero value (`-0.0`) โ€ข pr-str, prn etc now print EDN (with the idea that you can paste it back into your program) โ€ข new #js/Map reader that reads a JavaScript Map from a Clojure map (maps are printed like this with pr-str too) More updates in ๐Ÿงต

๐Ÿ”ฅ 4
โค๏ธ 3
6
๐ŸŽ‰ 16

Continued: โ€ข Fix https://github.com/squint-cljs/squint/issues/792: prn js/undefined as nil โ€ข Fix https://github.com/squint-cljs/squint/issues/793: fix yield* IIFE (needs wrapping in parens) โ€ข https://github.com/squint-cljs/squint/pull/779: Added compare-and-swap!, swap-vals! and reset-vals! (https://github.com/tonsky) โ€ข https://github.com/squint-cljs/squint/pull/788: Fixed compilation of dotimes with _ binding (https://github.com/tonsky) โ€ข https://github.com/squint-cljs/squint/pull/790: Fixed shuffle not working on lazy sequences (https://github.com/tonsky) โ€ข Multiple :require-macros with :refer now accumulate instead of overwriting (https://github.com/willcohen) โ€ข Allow macro namespaces to load "node:fs", etc. to read config files for conditional compilation โ€ข Don't emit IIFE for top-level let so you can write let over defn to capture values. โ€ข Fix js-yield and js-yield* in expression position โ€ข Implement some? as macro โ€ข Fix https://github.com/squint-cljs/squint/issues/758: volatile!, vswap!, vreset! โ€ข pr-str, prn etc now print EDN (with the idea that you can paste it back into your program) โ€ข new #js/Map reader that reads a JavaScript Map from a Clojure map (maps are printed like this with pr-str too) โ€ข Support passing keyword to mapv โ€ข https://github.com/squint-cljs/squint/issues/759: doseq can't be used in expression context โ€ข Fix https://github.com/squint-cljs/squint/issues/753: optimize output of dotimes โ€ข alength as macro โ€ข Inline identical? calls โ€ข Clean up emissiong of paren wrapping โ€ข Add nat-int?, neg-int?, pos-int? (https://github.com/eNotchy) โ€ข Add rand โ€ข Fix rendering of null and undefined in #html โ€ข https://github.com/squint-cljs/squint/issues/747: #html escape fix โ€ข Optimize nested assoc calls, e.g. produced with -> โ€ข Avoid object spread when object isn't shared (`auto-transient`) โ€ข Optimize str even more โ€ข Remove debug output from compilation โ€ข Optimize =, and, and not= even more โ€ข not= on undefined and false should return true โ€ข Optimize code produced for assoc, assoc! and get when object argument can be inferred or is type hinted with ^object โ€ข Optimize str using macro that compiles into template strings + ?? '' for null/undefined โ€ข Fix https://github.com/squint-cljs/squint/issues/732: take-last should return nil or empty seq for negative numbers โ€ข https://github.com/squint-cljs/squint/issues/725: keys and vals should work on js/Map โ€ข Make map-indexed and keep-indexed lazy

goddamn that's a lot of fixes

Alex Miller (Clojure team) 2026-01-26T23:21:02.653639Z

Clojure CLI 1.12.4.1597 is now available โ€ข TDEPS-273 Add http://codeberg.org to git deps auto url support (use [org|page].codeberg.USER/PROJECT as your lib, git url then inferred) โ€ข TDEPS-269 Embed and check tar checksums in Linux and Posix installers โ€ข TDEPS-274 Add additional options to curl in linux and posix installer for retry and timeout

๐Ÿ‘ 5
6
๐ŸŽ‰ 30