announcements

2025-09-17T14:49:07.954039Z

https://github.com/NoahTheDuke/lazytest/releases/tag/v1.9.1: standalone BDD test framework v1.9.1 • Support lazytest/describe=foo-bar in clojure markdown blocks for doctests. The string will be used as the defdescribe's var name instead of a gensym based on the current header. • Support doctests in babashka. • BREAKING: Internally change expect to throw a clojure.lang.ExceptionInfo with :type :lazytest/expectation-failed. lazytest.ExpectationFailed will be kept in the jar forever, but it won't work as a target for catch anymore if you're using it. This is to make it easier to use Lazytest in cljc files and to support porting lazytest to other dialects in the future. If you're currently catching lazytest.ExpectationFailed, may I recommend using https://tangled.sh/@noahbogart.com/sinker or https://github.com/exoscale/ex to ease catching such exceptions. • Make --watch work with doctests that set aliases (generally through (require foo :as bar)). • Bump clj-reload to 1.0.0 to support --watch in babashka.

1
1
❤️ 9
pez 2025-09-17T20:30:56.002619Z

calva Calva https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.527 just out. • https://github.com/BetterThanTomorrow/calva/issues/2923 It’s long overdue! Now, in #shadow-cljs projects, you can see witch runtime you are connected to, see what runtimes your build has, and select which one #calva should be connected to. Good if you’re, say, the app is running in some different browsers, computers and phones at the same time, and you’re testing things in the app from one of those instances. You’ve always been able to do these things using the shadow-cljs API, but now there’s a button in the VS Code status bar and a nice menu allowing you to quickly and conveniently switch runtime to talk to. See https://calva.io/shadow-cljs/#runtime-selection

6
🚀 15
pez 2025-09-17T20:36:45.428279Z

The statusbar indicator is a bit unreliable, because the shadow-cljs repl API doesn’t notify the client of disconnects. So reloading the browser of the connected runtime may end you up with you connected to some other runtime, and Calva won’t know. I may look into what it would take to use the websocket for this, unless @thheller thinks it would be a good idea to start sending notification messages to the nrepl client.

pez 2025-09-17T20:40:29.566629Z

Are you still developing your app 10s and 100s of runtimes, @hoppy? Then this feature have been sorely missing for you until now. Please let me know how you fare if you try it!

hoppy 2025-09-17T21:35:06.693919Z

@pez, will give it a whirl next time I'm in that situation, which will likely be soon

hoppy 2025-09-17T23:25:57.180679Z

@pez, so it looks like it is happy to switch, which is very cool. The thing that seems missing is some decent way to identify which of this is which. Runtime #5, not really helpful. These are all node applications (cljs) that are simply launched with different parameters and kind of make a "cluster". Perhaps shadow just doesn't know how to address them aside from #5.

hoppy 2025-09-17T23:26:25.644589Z

pez 2025-09-18T04:36:44.705419Z

There aren’t any more identifiers afaict. With browsers there’s a user agent, which helps a bit more.

thheller 2025-09-18T06:35:31.638679Z

@pez see https://github.com/thheller/shadow-cljs/issues/1139 and https://github.com/thheller/shadow-cljs/issues/990. all the things you could possibly want are already available. re-open #990 if you are interested. I could help you through it with some examples.

👀 1
pez 2025-09-18T07:42:27.205029Z

Thanks, @thheller. It does seem like what I need for the notifications is there. I’ll experiment a bit with it. For the descriptions, I found that the api returns a bit different things for node, so I can provide at least something like Node v22.18.0. But it will probably not help with distinguishing runtimes for @hoppy’s case. Is there something that could be done for this? I can open a thread in #shadow-cljs about it…

pez 2025-09-18T09:24:32.932919Z

calva Calva https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.528 out, adding the desc from the runtime to the node runtimes list. That’s what I think I can do for now, @hoppy.

thheller 2025-09-18T09:55:52.879549Z

https://github.com/thheller/shadow-cljs/blob/d12811cfb7884d86dcecb3a16cf61c9e89bb8b05/src/main/shadow/cljs/devtools/client/node.cljs#L48-L50 that is where this desc field is coming from. happy to add whatever makes sense

👀 1
❤️ 2
hoppy 2025-09-18T11:49:25.280239Z

process.pid and process.argv.join(' ') would be probably ideal and about the best that I would hope for

pez 2025-09-18T14:09:52.298859Z

Sweet. And then for browsers we could also get a desc maybe? With e.g. location.href or self.origin depending on where the runtime lives.

thheller 2025-09-18T15:52:52.791639Z

feel free to open an issue about this, just so I don't forget. can't quite get to it now.

👍 1
hoppy 2025-09-19T02:24:31.078399Z

I may mess with it and give you a PR, I've been meaning to build your stuff anyhow

pez 2025-09-22T07:45:30.245269Z

Now Calva stays up to date about if the currently connected runtime’s shadow-cljs connection status. • https://clojurians.slack.com/archives/CBE668G4R/p1758526915791379 • Docs: https://calva.io/shadow-cljs/#shadow-cljs-runtimes