{;; Two source roots, and the split is the point. `common` is compiled by both ;; jolt and ClojureDart, so nothing in it may mention either — see ;; common/frq/io.cljc. `src` is the jolt half: glimmer, jolt.ffi, and the two ;; desktop backends. The Flutter half is flutter/src and is not on this ;; classpath at all; it has a deps.edn of its own, and it — not jolt — is ;; what builds the APK now. :paths ["common" "src"] ;; glimmer owns the reactive half (ratom, components, reconciler); which ;; backend paints it is the entry point's business and is not named here. ;; glimmer-cosmic lives inside jolt-native beside the libjoltcosmic.so it ;; binds, so it comes over with -Sdeps from whatever built that object rather ;; than from a git sha that could drift from it — the same reason glimmer-tui ;; is handed over rather than declared. There is no jvui and no vidya here ;; any more: both were experiments, and both are gone. ;; ;; Our fork of glimmer, until the reconciler fixes in it land upstream. A ;; component unmounted between a cell firing and the queued render running ;; used to render anyway, into widgets the backend had already freed and ;; handed out again — which took the message list apart in a busy channel. ;; And replacing a native node with one of another tag left every watcher ;; under it subscribed, so swapping the phone layout for the split one and ;; back shredded the chat: one component's props painted onto another's ;; widget. :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer" :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"}} ;; What the window loads is libjoltcosmic and what the terminal loads is ;; libjolttui; each recipe hands its own over, so neither is named here. ;; ;; Calls used to be the one thing this client could not do in jolt. The media ;; half is `frq.av.plane` now — MoQ over QUIC from libmoq_ffi, Opus from ;; libopus, H.264 from openh264 through a shim, and the devices from V4L2 ;; and ALSA. Signaling was always IRC and still lives in src/frq/av.clj. ;; ;; just run :jolt/native [;; The transport half of a call: MoQ over QUIC, the one ;; piece with no C implementation anywhere. Fetched from ;; moq-ffi's release rather than built — building it means a ;; 1062-crate workspace. ;; ;; The codecs are NOT in it. moq-ffi's `audio` and `video` ;; features are off in every Linux artifact upstream ships, ;; so Opus and H.264 come from their own C libraries below, ;; which is the whole point of doing this over FFI rather ;; than over a Rust facade. ;; ;; No :darwin: :systems is x86_64-linux and aarch64-linux, so ;; a .dylib named here would name a file nothing fetches. {:name "moq_ffi" :linux ["libmoq_ffi.so"]} ;; The codecs, as C libraries rather than as somebody's ;; bindings to them. Opus first; openh264 beside it when the ;; video half lands. ;; ;; The SONAME, not the bare .so: a `libopus.so` is the -dev ;; symlink and is not what a runtime closure carries. The ;; loader looks these up by name in one directory, which the ;; flake's `nativeAll` is. {:name "opus" :linux ["libopus.so.0"] :darwin ["libopus.0.dylib"]} ;; H.264, one step removed. openh264's C API is a vtable — ;; `ISVCEncoder` is `const ISVCEncoderVtbl*` — and jolt.ffi ;; can only call a literal C symbol, never a function ;; pointer. c/frq_h264.c walks the vtable and exports flat ;; symbols; this is that. libopenh264 itself comes along as ;; its DT_NEEDED and is never named here. {:name "frqh264" :linux ["libfrqh264.so"] :darwin ["libfrqh264.dylib"]} ;; Audio devices. No :darwin — CoreAudio is the other side of ;; that door and is not this library. ;; ;; V4L2 is deliberately absent from this list: the camera is ;; ioctls against libc and the kernel, so there is nothing to ;; load. See frq.capture.v4l2. {:name "asound" :linux ["libasound.so.2"]}] ;; No :frq alias: `frq.app` is the screens and has no -main any more. There ;; is one entry point per backend and each needs its backend handed over, so ;; the recipes are the way in — `just cosmic` for the window, `just tui` for ;; the terminal. :aliases {;; The same screens in a terminal. glimmer-tui is one backend for ;; the reconciler and glimmer-cosmic is the other — the same tree ;; ABI with cells under it instead of libcosmic — so `frq.tui` ;; requires it after `frq.app` and renders the hiccup that is ;; already written. ;; ;; A path rather than a sha: `just tui` builds jolt-native out of ;; the flake and hands both Jolt halves over with -Sdeps, so this is ;; for a checkout beside the tree and nothing else reads it. The ;; window has no alias of its own for the same reason — see ;; `just cosmic`. ;; ;; just tui :tui {:extra-deps {nandi/glimmer-tui {:local/root "../jolt-native/glimmer-backends/glimmer-tui"}} :main-opts ["-m" "frq.tui"]}} :tasks {tui "jolt -M:tui"}}