calva

pez 2025-11-24T22:32:34.355169Z

Dear Calva friends. multiple concurrent repl sessions are coming to Calva. https://github.com/BetterThanTomorrow/calva/issues/76#issuecomment-3572976402 It is a huge change to how repl sessions are managed in Calva. And I now need help to find the bugs before we can merge and release. 🙏 . The most pressing testing we need is to avoid breaking any current functionality. So it is pretty easy to help me to test: https://app.circleci.com/pipelines/github/BetterThanTomorrow/calva?branch=75-multiple-repl-sessions (from build-test -> Artifacts), install and use Calva as usual and let me know if something breaks for you. • Here’s the PR: https://github.com/BetterThanTomorrow/calva/pull/2968 • Circle-CI stream where the VSIX artifact can be downloaded: https://app.circleci.com/pipelines/github/BetterThanTomorrow/calva?branch=75-multiple-repl-sessions • Docs updates: ◦ https://deploy-preview-2968--calva-docs.netlify.app/repl-ui/#managing-multiple-connectionshttps://deploy-preview-2968--calva-docs.netlify.app/connect/#multiple-repl-connectionshttps://deploy-preview-2968--calva-docs.netlify.app/connect-sequences/#settings-for-adding-custom-sequences Thanks in advance! ❤️

👍 1
1
pez 2025-12-14T23:53:58.161549Z

In lack of any response, I’ve been hardening this myself. 😃 I’m at where I think it is good to go, and reasonably sure it will let any existing configs continue to work as before. Though, it is a major rewrite of the whole session management and a lot of the connection goings-on, and also Jack-in, so it is not a zero-risk release… Since a changelog listing may not communicate very well what the feature is about, I have recorded a video. Hoping it will make sense and that I can use it when announcing the release. Please let me know what you think. 🙏 ❤️

👍 1
pez 2025-12-06T09:50:40.005139Z

I am now closer to getting this to release. It is one of the largest changes to Calva in a long time, at least when it comes to touching existing functionality. And I am trying to make these big changes keeping Calva functioning almost exactly as before when used with only one REPL connection (with up to two REPL sessions). I would appreciate help in ensuring Calva will not break people’s workflow when this is released. 🙏 Please consider installing this build! ❤️ The main thing I want tested is that things work as before when used for whatever you are using Calva for. But, by all means, if you want to test jacking in to some more project in your monorepo, hooking up a Babshka, Joyride and/or Scittle repl along side your project repls, Be my guest! Here’s the changelog so far: • https://github.com/BetterThanTomorrow/calva/issues/76 • Updates to https://calva.io/connect-sequences/: ▪︎ Custom REPL session names via replSessionNames: primary (defaults to clj) and secondary (defaults to cljs). ▪︎ Route files to sessions with replSessionFilePatterns using primary/`secondary` keys. Patterns like *.clj are automatically scoped to the sequence’s project root. ▪︎ Pattern tier properties always-claim/`is-fallback-for` control routing priority. The always-claim tier takes precedence in file routing. ◦ Rename afterCLJReplJackInCodeafterPrimaryReplConnectedCode (the old name still works). ◦ Automatic session name conflict resolution: connecting multiple REPLs with the same session names (e.g., two deps.edn projects) now “just works”—Calva appends a fruit suffix (e.g., clj:apple, cljs:apple) to avoid conflicts, preserving names on reconnection. ◦ Connecting an additional sequence no longer disconnects earlier ones unless they reuse the same replSessionNames (treated as a re-connect). ◦ Jacking in to another connect sequence no longer closes the previous REPL; each jack-in keeps its own pseudo terminal unless the sessions share replSessionNames, in which case it becomes a restart. ◦ Allows Session pinning—lock all evaluations to a specific session and override pattern-based routing. ◦ New command: Calva: Repl Sessions, listing sessions, enabling pinning, toggling auto-route, and selecting the CLJC evaluation session (also available from the status bar session indicator). ◦ Adds a REPL Sessions status bar menu for pinning sessions, toggling auto-route, and setting .cljc overrides. ◦ Adds API function repl.listSessions() ◦ Updates default connect sequences for Joyride, Babashka, nbb, and Basilisp, to use custom replSessionNames, and configured default routings with replSessionFilePatterns. ◦ Removed deprecated calva.useLegacyReplWindowPath setting. The REPL window is now always located at .calva/repl.calva-repl. • Adds a new connect sequence: Clojure projectless, for jack-in and connect without a deps.edn, etcetera needed. • Improve error messages around CLJS build configuration • Adds https://github.com/babashka/scittle connect sequence • Adds defaultPort to connect sequence settings. • The calva.copyJackInCommandToClipboard command now accepts a connect sequence argument. I’m currently cleaning up code, and building up some energy to improve documentation and record a video or two.