releases

cfleming 2026-03-24T15:29:33.598779Z

Cursive 2026.1-eap4 is out. It's a bugfix release, fixing one UI deadlock and a bunch of standard style formatting issues. https://cursive-ide.com/blog/cursive-2026.1-eap4.html

1
🎉 3
scottbale 2026-03-24T20:58:56.455159Z

[ANN] Nubank's aws-api 0.8.812 https://groups.google.com/g/clojure/c/0_2yBeJjNJA • Add support for AWS_EC2_METADATA_SERVICE_ENDPOINT environment variable (by @dancmeyers) https://github.com/cognitect-labs/aws-api/issues/293 • Remove data.xml dependency https://github.com/cognitect-labs/aws-api/issues/252 - Prevents cryptic error when using the non-alpha release of data.xml README: https://github.com/cognitect-labs/aws-api/ API: https://cognitect-labs.github.io/aws-api/ Changelog: https://github.com/cognitect-labs/aws-api/blob/master/CHANGES.md Upgrade Notes: https://github.com/cognitect-labs/aws-api/blob/master/UPGRADE.md Latest Releases of api, endpoints, and all services: https://github.com/cognitect-labs/aws-api/blob/master/latest-releases.edn

🎉 4
2026-03-24T22:57:17.594139Z

new release {com.github.danlentz/clj-figlet "0.1.4"] i hope folks check it out. I think we’re in a good place here, unless anyone has any other ideas or suggestions.

Rendering engine rewritten to match the C figlet exactly. 45 bundled fonts. Output verified against the reference binary with 17,000+ randomized assertions per test run.

  What's new:
  - write-font for serializing fonts back to .flf — full round-trip support
  - validate-font / valid-font? backed by clojure.spec
  - all-fonts discovers bundled fonts from the classpath
  - 35 new contributed fonts (45 total)
https://github.com/danlentz/clj-figlet

🔥 2
🎉 4
2026-03-26T23:45:27.237689Z

A new spec would definitely be a good way to go deeper into rabbit hole. There is some ansi sgr utility code which may or may not be useful https://github.com/paintparty/bling/blob/main/src/bling/ansi.cljc and you can use bling.core/?sgr for visual debugging of sgr-wrapped strings. It would be cool to have a function or cli that slurps in dir with a config.edn (font metadata) and a bunch of individual files like a.txt b.txt etc., then generates the flf file. Maybe something like this already exists, but I haven’t come across it. yeah I would talk to the UN

2026-03-26T23:49:33.760779Z

my philosphy for color figlet font is that it should not be polluted with any mention of ansi. there are 16 terminal colors they can be represended by characters B , b, W, w, etc

2026-03-26T23:53:49.842249Z

i dunno. i’m way further with making it work than I am with defining the spec. here’s where i’m at https://github.com/danlentz/clj-figlet/blob/015-color/doc/papers/figfont3-proposal.md

2026-04-21T04:08:14.500089Z

> thank you for joining in on this i am kind of excited to have a fun right brained project for one For sure - just added a couple issues to the repo, to get the ball rolling > maybe we can make the format dsl somehow useful for bling Yes, was looking at this … I’m gonna experiment with it. > the whole world needs bling Soon will be releasing a smaller, more focused, lower level lib that Bling itself will use for SGR styling, so maybe that could be leveraged by clj-format > how did you get to be both a designer and clojure programmer? No idea! :) Feel free to DM me

🙌 1
dan.lentz 2026-04-18T23:14:19.641749Z

thank you for joining in on this i am kind of excited to have a fun right brained project for one

dan.lentz 2026-04-18T23:14:22.273259Z

once

dan.lentz 2026-04-18T23:22:26.287369Z

maybe we can make the format dsl somehow useful for bling

dan.lentz 2026-04-18T23:26:48.902179Z

the whole world needs bling

dan.lentz 2026-04-18T23:28:56.942579Z

how did you get to be both a designer and clojure programmer?

dan.lentz 2026-04-18T23:31:35.433239Z

(which you clearly are, despite your potestations)

2026-03-25T14:16:54.674209Z

there are so many good fonts out there to play with

2026-03-25T22:40:07.288569Z

what do you think about extending the figfont spec with ansi color? i know i said i was done, but now im not sure.

2026-03-25T22:46:50.431689Z

i’m so far in a rabbit hole

2026-03-25T23:29:26.226669Z

I'm not sure what governing body would allow me to release a fig-font v3 spec. I'm assuming it's the United Nations

2026-04-16T13:24:44.413189Z

That's a really good idea. Yes, I’m coming at this knowing little to nothing about type design lol. And y the ghost and dance fonts are hysterical. I really want a v3 flowerpower where the letters are green and the flowers are like pink and yellow or something.

2026-04-16T16:28:55.261889Z

You can get part of the way to full flowerpower with tricks on the rendering side, with the current fig standard - did a POC in bling.banner the other day https://github.com/paintparty/bling/blob/6fc7f768fc363e0a252745075e8c7cbc8b65bcb1/src/bling/banner.cljc#L758

(println (bling.banner/banner
          {:text          "Flower    Power"
           :font          "flowerpower"
           :color         :green
           :atomic-filter {#{"(" ")" "_"} {:color :yellow}
                           "o"            {:color :magenta}}}))

2026-04-16T16:30:07.606129Z

Fits really well when things are geometric and deterministic:

(println (bling.banner/banner
          (let [text "OHIO"]
            {:text          text
             :font          "Doh"
             :atomic-filter {(->> text (map str) (into #{})) {:color :gray}
                             ":"                             {:color :red}}})))

2026-04-16T16:31:36.588349Z

(println (bling.banner/banner
          {:text          "HELLO"
           :font          isometric-1
           :atomic-filter {#{"\\" "/" "_"} {:color :red}
                           ":" {:color :green}}}))

2026-04-16T16:33:23.072629Z

you can specify replacements for individual chars ftw:

(println (bling.banner/banner
          {:text          "HELLO"
           :font          isometric-1
           :atomic-filter {#{"\\" "/" "_"} {:color :red}
                           ":"             {:color       :blue 
                                            :replacement "*"}}}))

2026-04-16T16:40:11.984479Z

Maybe this kind of logic would make sense in the v3 spec as a “post-processing” concept that figdrivers could implement, totally separate from the shape / pallette row stuff BTW, made a couple tweaks to the v3 flf3 pseudocode example above for clarity … defines a default global color and then two distinct dynamic color slots, one for the ghost-figures and one for the ghost eyes hahaha

2026-04-17T00:08:44.551499Z

Ok. This is so fun. Figfont3 must move forward.

2026-04-17T00:09:18.720429Z

I can give you edit access to the repo if you want

2026-03-25T05:18:10.727929Z

Nice work on the fonts.md!

1
2026-04-15T18:36:52.562569Z

> https://github.com/danlentz/clj-figlet/blob/015-color/doc/papers/figfont3-proposal.md Finally got a chance to look at this yesterday. Great read, interesting set of problems. > i’m way further with making it work than I am with defining the spec. Curious, does it work in latest clj-figlet , or maybe on the 015-color branch?

2026-04-15T20:26:29.681529Z

It's out there on 015

2026-04-15T20:26:49.057959Z

experimentally

2026-04-15T20:29:11.117159Z

I integrated figlet (and tables, nested tables, nested figlet tables) to the DSL here and using it is now a pleasure https://clojurians.slack.com/archives/C015AL9QYH1/p1776273044314079

2026-04-15T20:29:47.747899Z

Added macros / pre-expansion to the language

2026-04-15T22:39:26.095809Z

Yes I saw that - very impressive! Definitely will be using clj-format in near future

🎉 1
2026-04-15T23:01:26.221969Z

I kind of love it I'm mad when I'm at a project where I don't have it now

2026-04-15T23:03:39.622159Z

Also, FWIW, LLMs seem to be able to generate very nice, well factored, semantic DSL and do 1000% better output formatting than I've ever done by hand

💯 1
2026-04-15T23:28:23.159969Z

Hahaha yes I know - I just had the LLM make me a clojure namespace last night that formats and colorizes css strings (fully themeable) for output in a terminal (debugging purposes). It took a little back and forth to work out the kinks but way faster than trying to figure out how to use an existing lib in another lang and way way faster than writing something by hand

😎 1
dan.lentz 2026-04-15T23:30:00.499749Z

haha thats awesome. sl do you think i should merge this?

dan.lentz 2026-04-15T23:31:15.665029Z

LLMs are super good at woeking with this DSL i'm never had prettier output its kind of a joy to have

2026-04-15T23:32:38.541719Z

You mean merge the v3 spec branch?

dan.lentz 2026-04-15T23:32:51.059089Z

feel free to open PR's it sounds like you've been going down this road longer than i have

dan.lentz 2026-04-15T23:33:22.868169Z

or y, whats your thoughts on v3. minimally invasive enough?

2026-04-15T23:38:56.739629Z

> it sounds like you’ve been going down this road longer than i have haha no way, just did that toy impl of figlet in Bling, which was fun, but like I didn’t even know there was a Figlet spec. I just wanted something that would work in cljc, so I wrote a dirty script to auto port a few fonts that I liked into a makeshift format so they could be loaded from a namespace, like this https://github.com/paintparty/bling/blob/main/src/bling/fonts/ansi_shadow.cljc

2026-04-15T23:51:44.709999Z

My thoughts on v3 … keeping in mind that they are just cursory and I really haven’t gone that deep on the technical side wrt Figlet … would just be some loose feedback from a illustrated type designer / illustrated type design implementation perspective. I think a v3 like what you are describing would be useful for font designs with multiple, distinct, intertwined figurative elements, like this one (`Ghost.flf`):

.-. .-')                            ,---.
\  ( OO )                           |   |
 ;-----.\  .-'),-----.  .-'),-----. |   |
 | .-.  | ( OO'  .-.  '( OO'  .-.  '|   |
 | '-' /_)/   |  | |  |/   |  | |  ||   |
 | .-. `. \_) |  |\|  |\_) |  |\|  ||  .'
 | |  \  |  \ |  | |  |  \ |  | |  |`--'
 | '--'  /   `'  '-'  '   `'  '-'  '.--.
 `------'      `-----'      `-----' '--'
 
But why bake specific color information in? Couldn’t it be more powerful/flexible to use a set of generic, single-char placeholders? Each one could map to descriptive property name (maybe in the header?) that could be leveraged by the figdriver. This way the font designer could provide a default color which could be overridden by the user via the placeholder. Something like:
(figlet/render "Ghost"
                "Boo!"
                {:ghost-figures {:color :green :font-weight :bold}
                 :style         {:color :red}})
The figdriver could also look for an optional :style map to globally style all other sub-chars in the output. Also, would it be possible to do something like the #C construct below, in order to eliminate the need for programmatic detection of color rows (and also the edge case you describe of shape rows that consist only of pallette characters, like Doh.flf)? So each FigChar either has a plane with stylable subchars or not. Some pseudocode, this example would allow the end user to color the ghosts and glyphs independently:
flf3a$ 9 8 15 0 20 0 16255 0 red x="ghost-figures" gray y="ghost-eyes" green


   ____   #
 .' __ \  #
/ .'  \ | #
| | (_/ | #
\ `.__.'\ #
 `.___ .' #
          ##
   ('-.     #C
   xxxx
  ( OO ).-. #
  x yy xxxx
  / . --. / #
  x x   x x
  | \-.  \  #
  x x
.-'-'  |  | #
xxxxx
 \| |_.'  | #
 x
  |  .-.  | #

  |  | |  | #

  `--' `--' ##
            ##

;; For reference, the FigCharacter with color rows above looks like this:
   ('-.     #
  ( OO ).-. #
  / . --. / #
  | \-.  \  #
.-'-'  |  | #
 \| |_.'  | #
  |  .-.  | #
  |  | |  | #
  `--' `--' ##

dan.lentz 2026-04-15T23:53:14.173959Z

these are really good questions let me think and get back to you

dan.lentz 2026-04-15T23:53:58.754739Z

hitting mcdonalds and heding home

2026-04-15T23:55:48.729739Z

thanks! no rush enjoy your happy meal

dan.lentz 2026-04-16T00:01:20.111249Z

yum 🍔

2026-04-17T21:40:56.977019Z

The later ones are kind of impressive. Flower power is still kind of weak? At least, not being a designer, it's not what I'd imagine. I know only POC

2026-04-17T21:44:53.383299Z

I can spend a little bit of time playing with this a little bit next week I’ve unwound some of my other TODOs. I can add you as a contributor or, if you can structure and summarize any ideas in a GitHub issue that could help me work on it. You definitely have way more of a grip on what a colorized font spec should look like than I do

2026-04-17T21:46:06.131319Z

This could even be a fun “10 minute” conj talk

dan.lentz 2026-04-17T21:49:12.731339Z

the isometric-1 layers are impressive

dan.lentz 2026-04-17T21:50:08.412779Z

they look hard to do though. for the layman

dan.lentz 2026-04-17T21:54:38.287849Z

its kind of an interesting, fun, unusual project

dan.lentz 2026-04-17T21:57:48.306269Z

i have the {:figlet} directive as an optional / force loaded dep in clj-format. I think thats in a lot of cases the way to interface with clj-figlet

2026-04-18T01:10:32.334939Z

I can give you edit access to the repo if you wantThat would be great, no rush though I can just start with a couple issues: • One addressing ideas around the v3 spec • Another wrt to adding fonts … have some qs about it that other ppl might potentially have as well > The later ones are kind of impressive. Flower power is still kind of weak? At least, not being a designer, it’s not what I’d imagine. I know only POC Yeah the flower power example was just to demonstrate that you would actually need something like the v3 spec to do it properly… like it looks a little broken but if you could specify the color perfectly and maybe make the individual subchars of the figchars alternating colors, and also be able to selective bold subchars, it would get closer to what I imagine you had in mind from your desc > the isometric-1 layers are impressive > they look hard to do though. for the layman Yeah those are easy to achieve, technically, with the existing v2 spec and a capable post-processor (like the one in bling.banner, which seems like it would be easy to codify into a v3 figdriver + reference implementation). It could be hard to manually pass the filtering as cli args at the terminal, but I can’t imagine it would be that difficult for most programmers to figure that sort of thing if they are using it from their language of choice.

(println (bling.banner/banner
          {:text          "HELLO"
           :font          isometric-1
           :atomic-filter {#{"\\" "/" "_"} {:color :red}
                           ":"             {:color       :blue 
                                            :replacement "*"}}}))
could just be something like this, for example, in JS:
banner(
  "Hello",
  "isometric-1",
  {
    atomicFilter: [
      {
        target: ["\\", "/", "_"],
        style: { color: "red" }
      },
      {
        target: [":"],
        style: { color: "blue" },
        replacement: "*"
      }
    ]
  }
);
I think a true layman would just use one of the existing classic lo-fi figlet banner generator sites on the web and twiddle whatever options they are given

2026-04-18T01:12:46.295189Z

> i have the {:figlet} directive as an optional / force loaded dep in clj-format. I think thats in a lot of cases the way to interface with clj-figlet Yeah that makes sense.