| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 1 | {;; Two source roots, and the split is the point. `common` is compiled by both |
| 2 | ;; jolt and ClojureDart, so nothing in it may mention either — see |
| 3 | ;; common/frq/io.cljc. `src` is the jolt half: glimmer, jolt.ffi, and the two |
| 4 | ;; desktop backends. The Flutter half is flutter/src and is not on this |
| 5 | ;; classpath at all; it has a deps.edn of its own, and it — not jolt — is |
| 6 | ;; what builds the APK now. |
| 7 | :paths ["common" "src"] |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 19d ago | 8 | |
| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 9 | ;; glimmer owns the reactive half (ratom, components, reconciler); which |
| 10 | ;; backend paints it is the entry point's business and is not named here. |
| 11 | ;; glimmer-cosmic lives inside jolt-native beside the libjoltcosmic.so it |
| 12 | ;; binds, so it comes over with -Sdeps from whatever built that object rather |
| 13 | ;; than from a git sha that could drift from it — the same reason glimmer-tui |
| 14 | ;; is handed over rather than declared. There is no jvui and no vidya here |
| 15 | ;; any more: both were experiments, and both are gone. |
| Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 8d ago | 16 | ;; |
| Show the list and the conversation at once on a wide window 10a1bd0 nandi 19d ago | 17 | ;; Our fork of glimmer, until the reconciler fixes in it land upstream. A |
| Keep a row's actions from wandering when its line gets an id 5b5e90e nandi 19d ago | 18 | ;; component unmounted between a cell firing and the queued render running |
| 19 | ;; used to render anyway, into widgets the backend had already freed and |
| 20 | ;; handed out again — which took the message list apart in a busy channel. |
| Show the list and the conversation at once on a wide window 10a1bd0 nandi 19d ago | 21 | ;; And replacing a native node with one of another tag left every watcher |
| 22 | ;; under it subscribed, so swapping the phone layout for the split one and |
| 23 | ;; back shredded the chat: one component's props painted onto another's |
| 24 | ;; widget. |
| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 25 | :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer" |
| 26 | :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"}} |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 19d ago | 27 | |
| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 28 | ;; What the window loads is libjoltcosmic and what the terminal loads is |
| 29 | ;; libjolttui; each recipe hands its own over, so neither is named here. |
| Take both native libraries from one place a66d1c1 nandi 19d ago | 30 | ;; |
| Switch frq.av onto the jolt media plane, and stop shipping libjoltmoq b33f288 nandi 8d ago | 31 | ;; Calls used to be the one thing this client could not do in jolt. The media |
| 32 | ;; half is `frq.av.plane` now — MoQ over QUIC from libmoq_ffi, Opus from |
| 33 | ;; libopus, H.264 from openh264 through a shim, and the devices from V4L2 |
| 34 | ;; and ALSA. Signaling was always IRC and still lives in src/frq/av.clj. |
| Take both native libraries from one place a66d1c1 nandi 19d ago | 35 | ;; |
| Name the libcosmic recipe for its backend: `just cosmic run` 5ba9382 nandi 6d ago | 36 | ;; just cosmic run |
| Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 8d ago | 37 | :jolt/native [;; The transport half of a call: MoQ over QUIC, the one |
| Switch frq.av onto the jolt media plane, and stop shipping libjoltmoq b33f288 nandi 8d ago | 38 | ;; piece with no C implementation anywhere. Fetched from |
| 39 | ;; moq-ffi's release rather than built — building it means a |
| 40 | ;; 1062-crate workspace. |
| Bind libmoq_ffi from the object's own metadata, not from its header 9f081a1 nandi 8d ago | 41 | ;; |
| Switch frq.av onto the jolt media plane, and stop shipping libjoltmoq b33f288 nandi 8d ago | 42 | ;; The codecs are NOT in it. moq-ffi's `audio` and `video` |
| 43 | ;; features are off in every Linux artifact upstream ships, |
| 44 | ;; so Opus and H.264 come from their own C libraries below, |
| 45 | ;; which is the whole point of doing this over FFI rather |
| 46 | ;; than over a Rust facade. |
| Fetch libmoq_ffi again, and keep the codecs out of Rust f518938 nandi 8d ago | 47 | ;; |
| 48 | ;; No :darwin: :systems is x86_64-linux and aarch64-linux, so |
| 49 | ;; a .dylib named here would name a file nothing fetches. |
| Bind libmoq_ffi from the object's own metadata, not from its header 9f081a1 nandi 8d ago | 50 | {:name "moq_ffi" |
| Bind the C libraries a call actually needs 87e5be9 nandi 8d ago | 51 | :linux ["libmoq_ffi.so"]} |
| 52 | |
| 53 | ;; The codecs, as C libraries rather than as somebody's |
| 54 | ;; bindings to them. Opus first; openh264 beside it when the |
| 55 | ;; video half lands. |
| 56 | ;; |
| 57 | ;; The SONAME, not the bare .so: a `libopus.so` is the -dev |
| 58 | ;; symlink and is not what a runtime closure carries. The |
| 59 | ;; loader looks these up by name in one directory, which the |
| 60 | ;; flake's `nativeAll` is. |
| 61 | {:name "opus" |
| 62 | :linux ["libopus.so.0"] |
| 63 | :darwin ["libopus.0.dylib"]} |
| 64 | |
| 65 | ;; H.264, one step removed. openh264's C API is a vtable — |
| 66 | ;; `ISVCEncoder` is `const ISVCEncoderVtbl*` — and jolt.ffi |
| 67 | ;; can only call a literal C symbol, never a function |
| 68 | ;; pointer. c/frq_h264.c walks the vtable and exports flat |
| 69 | ;; symbols; this is that. libopenh264 itself comes along as |
| 70 | ;; its DT_NEEDED and is never named here. |
| 71 | {:name "frqh264" |
| 72 | :linux ["libfrqh264.so"] |
| 73 | :darwin ["libfrqh264.dylib"]} |
| 74 | |
| 75 | ;; Audio devices. No :darwin — CoreAudio is the other side of |
| 76 | ;; that door and is not this library. |
| 77 | ;; |
| 78 | ;; V4L2 is deliberately absent from this list: the camera is |
| 79 | ;; ioctls against libc and the kernel, so there is nothing to |
| 80 | ;; load. See frq.capture.v4l2. |
| 81 | {:name "asound" |
| 82 | :linux ["libasound.so.2"]}] |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 19d ago | 83 | |
| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 84 | ;; No :frq alias: `frq.app` is the screens and has no -main any more. There |
| 85 | ;; is one entry point per backend and each needs its backend handed over, so |
| 86 | ;; the recipes are the way in — `just cosmic` for the window, `just tui` for |
| 87 | ;; the terminal. |
| 88 | :aliases {;; The same screens in a terminal. glimmer-tui is one backend for |
| 89 | ;; the reconciler and glimmer-cosmic is the other — the same tree |
| 90 | ;; ABI with cells under it instead of libcosmic — so `frq.tui` |
| 91 | ;; requires it after `frq.app` and renders the hiccup that is |
| 92 | ;; already written. |
| Paint the same screens into a terminal ab83b42 nandi 16d ago | 93 | ;; |
| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 94 | ;; A path rather than a sha: `just tui` builds jolt-native out of |
| 95 | ;; the flake and hands both Jolt halves over with -Sdeps, so this is |
| 96 | ;; for a checkout beside the tree and nothing else reads it. The |
| 97 | ;; window has no alias of its own for the same reason — see |
| 98 | ;; `just cosmic`. |
| Paint the same screens into a terminal ab83b42 nandi 16d ago | 99 | ;; |
| 100 | ;; just tui |
| 101 | :tui {:extra-deps {nandi/glimmer-tui |
| Retire the release-bumping script 4f38d68 nandi 10d ago | 102 | {:local/root "../jolt-native/glimmer-backends/glimmer-tui"}} |
| Paint the same screens into a terminal ab83b42 nandi 16d ago | 103 | :main-opts ["-m" "frq.tui"]}} |
| 104 | |
| Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago | 105 | :tasks {tui "jolt -M:tui"}} |