Fork me on GitHub

@thheller Welcome. Wilker actually wrote most of Inspect…I was just trying to speed it up a bit when the data gets large 🙂 Or did you mean optimization?


just interesting to see. what I'm building is somewhat closer to REBL and datafy/nav since one thing I don't want is actually printing and transferring the entire object (eg. repl result) so I'm building a "protocol" that allows inspecting objects remotely and incrementally. hope to finish that soon. building the UI is the next step and using fulcro-inspect and/or re-frame-10x as the inspiration for possible "data viewers"

👍 4
Abhinav Sharma09:10:50

This sounds nice, is this going to be a complement to shadow-cljs in any way or meant to be standalone?


well the first version is going to be coupled to shadow-cljs ... just as a proof of concept basically


but I want most of the stuff generic enough so that it might be useful for other tools too

Abhinav Sharma09:10:06

Cool, looking forward to giving it a go 🙂


I have been working on something like this for over 2 years now and thrown many versions away


so don't get your hopes up too much 😉

😅 4

turns out getting the remote stuff right is really hard since suddenly everything is async 😛

Abhinav Sharma09:10:29

I see, no worries. I do think, these little long term projects have a way of spawning many ideas anyhow

Abhinav Sharma09:10:58

Btw, are you working on it on github?


no, just a local branch

👍 4

will share once I get all the basics done

Abhinav Sharma09:10:01

Mm hmm, got it 🙂


curious to know how I can handle a route that has query parameters "places?r=1" in fulcro. the route system specifically the route segment in the defsc-route-target does not seem to recognize them ( but not sure ) so if I have a route segment like


:route-segment   (fn [] ["places"])


how would i let that route-segment take params like "places?r=1"


@dansudol you parse the URI…a route segment like ["places" :r] is the intended usage…you just have to make sure your URI parsing code knows to find/put it there.


got it @tony.kay i try that thanks


what is the proper way to add a fulcro remote dynamically? is it enough to just swap it into the runtime-atom?


@thheller the times I needed something like that, I made the remote itself to be dynamic, not sure if its possible to add during runtime, and if you do, tools like Fulcro Inspect will probably not get it


hmm yeah adding it dynamically kinda works but the websocket isn't speaking EQL and fulcro complains about my remote action


(defmutation select-runtime [{:keys [runtime-id] :as params}]
  (action [env]
    (js/console.log "select-runtime" params))
  (tool-ws [env]
    {:op :request-tap-history :runtime-id runtime-id}))


my intent was to use defmutation and let the tool-ws (the remote) transform it to the websocket message that should be sent


but fulcro doesn't like the return value


guess I'll just send the message out as part of the action itself


> ERROR [com.fulcrologic.fulcro.algorithms.tx-processing:424] - Remote dispatch for :tool-ws returned an invalid value. {:op :request-tap-history, :runtime-id 79}


@thheller In F3 you should be able to just add it. In terms of your remote return value: that has to be a boolean, an env (with optionally updated AST) or an AST


Transforming that needs to be done by the remote itself


The internals for using mutations are all EQL (otherwise things like merge cannot possibly work)


So, your custom remote would receive a send node that has the AST in it, and you’d then transform that to your desired network comm


hmm yeah I settled on a hacky approach of just doing it outside fulcro for now


will dig into the internals of what remotes actually do later 🙂


Hey all, I got approved for GitHub’s Sponsor beta program, where they do matching funds! If anyone is currently contributing on Patreon or would like to get 2-for-1 mileage out of their contribution dollars in helping me continue to develop Fulcro please head over to and sign up.

👍 12
❤️ 20
fulcro 28
parrot 4

I can add more tiers if you are interested in contributing but none of those levels match what you’re comfortable with.


sweet. I was accepted too. 🙂

👍 12
❤️ 16

I’ll move my donations for shadow-cljs over then

👍 8
parens 8
😂 4

your support is appreciated but really not necessary, your fulcro work already does so much for me. I want to sponsor you back but that seems kinda redundant and we'd probably just exchange github fees 😛


can't remember if we talked about that before 😛


Heh. We didn’t really, but I use/recommend shadow-cljs through my consulting work all the time, so I look at it as a tool I use professionally. I also know that none of my clients do much in the way of donations, so think of it as “pass-through” 🙂

Abhinav Sharma03:10:44

Congratulations to you both! 🎉

Björn Ebbinghaus12:10:09

@thheller If you support each other through Github and your contribution is matched by Github you will both gain more funds... Except when the fees are ≥50% of your support + githubs match.


@U4VT24ZM3 yes we could but in my book that comes dangerously close to abuse/fraud. I'd much rather not abuse the system and github matching isn't gonna last forever anyways

Björn Ebbinghaus12:10:58

Of course. I think there will be regulations in place, as this loophole is rather obvious.


quick question: is anyone here using REBL? the cognitect REPL UI thing? if so: do you use tap> at all?


when I use REBL (usually for #datomic ), i use tap> because I dont use any special repl/nrepl/middlware stuff


it’s pretty useful, especially if you do develop (defn spytap [x] (tap> x) x)


then you can just litter this in your code during development as better logging