;; Two builds and no more: ;; ;; app the tool. Output goes straight into the Django staticfiles tree, so ;; `python manage.py runserver` and `shadow-cljs watch app` are the whole ;; dev loop with nothing copying files between them. ;; test :node-test, because everything below `ui/` and `fx/` is pure and has ;; no business needing a browser to be asserted about. The canvas-facing ;; parts get asserted through domain/raster's byte buffer instead, which ;; is what the JS selftest already did. {:source-paths ["src" "test"] :dependencies [[reagent "1.2.0"] [re-frame "1.4.3"] ;; The document's wire format. JSON would do for the shape of tier ;; 1 but not for its VALUES: channel keys are a map by FRAME ;; NUMBER and every id is a keyword, and JSON has neither, so a ;; save would quietly turn `{0 v}` into `{"0" v}` and `:mouth` ;; into "mouth". Transit is JSON on the wire, so Django stores a ;; leaf in a JSONField and the admin can still read it. [com.cognitect/transit-cljs "0.8.280"]] ;; THERE IS NO :dev-http, since step 9. Django serves the page — one template, ;; out of `clips/templates/` — and shadow-cljs only builds into the staticfiles ;; tree, which is what `:output-dir` below already did. So the dev loop is two ;; processes that do not talk to each other: ;; ;; mise exec -- python manage.py runserver 8778 (from the repo root) ;; cd frontend && mise exec -- npx shadow-cljs watch app ;; ;; What went away with the key was a set of problems rather than a feature. The ;; two roots it needed — `public` for the host page and `..` for the repo root, IN ;; THAT ORDER, because the root has the old tool's index.html and serving that one ;; instead would look like the port having regressed to a suspiciously complete ;; tool — were a way of reaching frames/, audio.wav and manifest.json off the ;; filesystem. Those are tier 3, and tier 3 is now the backend's, by hash. ;; ;; 8778 is still deliberately not 8777, which is still the old JS tool's under ;; `python3 serve.py`. The two are meant to run side by side. :builds {:app {:target :browser :output-dir "../static/arthur/js" :asset-path "/static/arthur/js" :modules {:main {:init-fn arthur.core/init}}} :test {:target :node-test :output-to "out/node-tests.js" :ns-regexp "-test$"}}}