announcements 2026-03-22

Hi, Further development of the https://github.com/rururu/ClojureMiniIDE project based on the https://protege.stanford.edu/download/protege/3.5/installanywhere/Web_Installers/ ontology editor. Home: https://github.com/rururu/ClojureProtegeIDE Specila Features: 1. Representing knowledge as ontologies. Using an ontology editor Protege 3.5 to represent a subject area (frame data model) in object-orientet form. 2. Program. In Clojure, there's no concept of a "program"; there's only the concept of a "namespace". These aren't quite the same thing. A given task typically requires multiple namespaces. ClojureMiniIDE defines a program as an ordered sequence of namespaces. The order is determined by the order in which namespaces must be loaded, as this is essential for program operation. A special button is available for automatically loading a program. 3. Separate windows for functions and other program elements. This allows you to simultaneously edit multiple functions on the screen, from different namespaces, and only those needed at the moment. The automatic loading button simultaneously composes ("builds") various namespaces from all open and possibly modified elements, saves them, and loads them in the desired order. Enjoy! Sincerely, Ru

🎉 4

Initial release of https://github.com/mpenet/flux - Clojure wrapper for Netflix concurrency-limits — adaptive concurrency control based on TCP congestion algorithms.

🎉 8

re-frame-query — Declarative data fetching and caching for re-frame. 0.1.0 is now available on Clojars. If you've used TanStack Query or RTK Query in React land and wished re-frame had something similar — this is it.

(require '[re-frame.query :as rfq])

;; Register once
(rfq/reg-query :todos/list
  {:query-fn      (fn [{:keys [user-id]}]
                    {:method :get :url (str "/api/users/" user-id "/todos")})
   :stale-time-ms 30000
   :tags          (fn [{:keys [user-id]}] [[:todos :user user-id]])})

;; Subscribe = fetch + cache + refetch + GC. That's it.
(let [{:keys [status data]} @(rf/subscribe [::rfq/query :todos/list {:user-id 42}])]
  (case status
    :loading [:div "Loading..."]
    :success [:ul (for [todo data] ^{:key (:id todo)} [:li (:title todo)])]))
What's in the box: - Subscribe-driven — subscribing triggers fetch, caching, and cleanup automatically (like useQuery) - Tag-based invalidation — mutations invalidate tags, matching queries refetch - Per-query GC — inactive queries are evicted after cache-time-ms via per-query timers - Polling — per-query or per-subscriber intervals, lowest wins - Infinite queries — cursor-based pagination with sequential re-fetch on invalidation - Mutation lifecycle hooks — on-start / on-success / on-failure for optimistic updates - Transport-agnostic — works with any re-frame effect (HTTP, WebSocket, GraphQL, etc.) - All state in app-db — inspectable, serializable, time-travel friendly A note on style: the ::rfq/query subscription is causal (it dispatches events on subscribe/dispose), which isn't fully idiomatic re-frame. It's a deliberate convenience trade-off. If you prefer the classic re-frame approach where views are never causal, the library exposes all the building blocks — dispatch ::rfq/ensure-query + ::rfq/mark-active on route enter, ::rfq/mark-inactive on leave, and use passive subscriptions like ::rfq/query-data in your views.
com.shipclojure/re-frame-query {:mvn/version "0.1.0"}
Two example apps included (Reagent + UIx) with 8 demo tabs each, MSW mocks, and Playwright e2e tests. GitHub: https://github.com/shipclojure/re-frame-query

🎉 18

https://github.com/enragedginger/pants_backend_clojure v0.2.0 - A Clojure backend for the https://www.pantsbuild.org/ build system. What's new: • Linting is much faster • Third-party dependency inference is much better now • Auto-inference of dependency on sibling resources targets • Documentation updates to make onboarding easier • Other miscellaneous enhancements Special thanks to @him for chipping in on this! I've had a lot of success with the Pants build tool over the years with large repos and created this plugin to provide those same benefits to Clojure projects (both big and small). See the full rationale https://github.com/enragedginger/pants_backend_clojure?tab=readme-ov-file#a-handcrafted-word-from-the-author. Check it out and let me know what you think!

🎉 9

https://github.com/brettatoms/ring-hot-reload - 0.1.5 • Initial release • Morph markup change into the dom on code changes • nREPL integration to reload on eval (saving changes not necessary)

🎉 4

https://github.com/brettatoms/zodiac-assets - 0.5.40 Zodiac Assets is an extension for https://github.com/brettatoms/zodiac-assets that uses Vite to add static asset management to Zodiac Changes in this version: • Integrate with ring-hot-reload for hot reload support • Integrate with vite dev server for hot reloading of in css/js