| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago | 1 | {:paths ["src"] |
| 2 | |
| 3 | ;; glimmer owns the reactive half (ratom, components, reconciler); |
| 4 | ;; glimmer-vidya paints it as Vidya/egui through libvidya's retained-tree ABI. |
| Show the list and the conversation at once on a wide window 10a1bd0 nandi 19d ago | 5 | ;; 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 | 6 | ;; component unmounted between a cell firing and the queued render running |
| 7 | ;; used to render anyway, into widgets the backend had already freed and |
| 8 | ;; 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 | 9 | ;; And replacing a native node with one of another tag left every watcher |
| 10 | ;; under it subscribed, so swapping the phone layout for the split one and |
| 11 | ;; back shredded the chat: one component's props painted onto another's |
| 12 | ;; widget. |
| Keep a row's actions from wandering when its line gets an id 5b5e90e nandi 19d ago | 13 | :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer" |
| Show the list and the conversation at once on a wide window 10a1bd0 nandi 19d ago | 14 | :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"} |
| Take glimmer-vidya from gitlab, so a stranger can build this 5c40e75 nandi 19d ago | 15 | nandi/glimmer-vidya {:git/url "https://gitlab.com/nandithebull/jolt-native" |
| Retire the release-bumping script 4f38d68 nandi 11d ago | 16 | :git/sha "d970307ccf1fe67e2e971f2837d2282d8ba79a62" |
| 17 | :deps/root "glimmer-backends/glimmer-vidya"}} |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago | 18 | |
| Take both native libraries from one place a66d1c1 nandi 19d ago | 19 | ;; Both objects come from gitlab.com/nandithebull/jolt-native, one crate each, |
| 20 | ;; out of one target directory: |
| 21 | ;; |
| 22 | ;; libvidya the retained-tree ABI glimmer-vidya binds, on egui |
| 23 | ;; libjoltmoq the AV media plane — MoQ over QUIC, Opus, H.264, capture |
| 24 | ;; |
| 25 | ;; Calls are the one thing this client cannot do in jolt. Signaling is IRC and |
| Rename the source files from .jolt to .clj 3c3a947 nandi 11d ago | 26 | ;; lives in src/frq/av.clj; the media half is three thousand lines of codec |
| Take both native libraries from one place a66d1c1 nandi 19d ago | 27 | ;; and transport that would only be written badly a second time here. |
| 28 | ;; |
| Build the desktop libraries rather than fetching a release of them 0b81161 nandi 15d ago | 29 | ;; just run |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago | 30 | :jolt/native [{:name "vidya" |
| 31 | :darwin ["libvidya.dylib"] |
| Calls f31ad3d nandi 19d ago | 32 | :linux ["libvidya.so"]} |
| 33 | {:name "joltmoq" |
| 34 | :darwin ["libjoltmoq.dylib"] |
| Bind libmoq_ffi from the object's own metadata, not from its header 9f081a1 nandi 9d ago | 35 | :linux ["libjoltmoq.so"]} |
| Fetch libmoq_ffi again, and keep the codecs out of Rust f518938 nandi 9d ago | 36 | ;; moq-ffi's own object, fetched from its release. Not a |
| 37 | ;; second media plane: it is the TRANSPORT alone — MoQ over |
| 38 | ;; QUIC, the one piece of a call with no C implementation |
| 39 | ;; anywhere — and it is here so `frq.moq.*` has something to |
| 40 | ;; load while the port off libjoltmoq happens. Both are |
| 41 | ;; declared for now, and the day frq.av stops calling |
| 42 | ;; joltmoq_* is the day that entry goes. |
| Bind libmoq_ffi from the object's own metadata, not from its header 9f081a1 nandi 9d ago | 43 | ;; |
| Fetch libmoq_ffi again, and keep the codecs out of Rust f518938 nandi 9d ago | 44 | ;; The codecs are NOT in it: moq-ffi's audio and video |
| 45 | ;; features are off in every Linux artifact upstream |
| 46 | ;; publishes, and turning them on means compiling a |
| 47 | ;; 1062-crate workspace. Opus and H.264 come from their own C |
| 48 | ;; libraries instead, which is the whole point of doing this |
| 49 | ;; over FFI rather than over a Rust facade. |
| 50 | ;; |
| 51 | ;; No :darwin: :systems is x86_64-linux and aarch64-linux, so |
| 52 | ;; 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 9d ago | 53 | {:name "moq_ffi" |
| 54 | :linux ["libmoq_ffi.so"]}] |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago | 55 | |
| Paint the same screens into a terminal ab83b42 nandi 17d ago | 56 | :aliases {:frq {:main-opts ["-m" "frq.app"]} |
| A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago | 57 | |
| Paint the same screens into a terminal ab83b42 nandi 17d ago | 58 | ;; The same screens in a terminal. glimmer-tui is the other backend |
| 59 | ;; for the same reconciler — libjolttui's tree ABI is libvidya's |
| 60 | ;; with cells under it — so `frq.tui` requires it after `frq.app` |
| 61 | ;; and renders the hiccup that is already written. |
| 62 | ;; |
| Merge origin/main, and let one jolt-native answer for both backends 1e8b590 nandi 16d ago | 63 | ;; A path rather than a sha, like glimmer-vidya's would be if this |
| 64 | ;; alias were the way in: `just tui` builds jolt-native out of the |
| 65 | ;; flake and hands both Jolt halves over with -Sdeps, so this is for |
| 66 | ;; a checkout beside the tree and nothing else reads it. |
| Paint the same screens into a terminal ab83b42 nandi 17d ago | 67 | ;; |
| 68 | ;; just tui |
| 69 | :tui {:extra-deps {nandi/glimmer-tui |
| Retire the release-bumping script 4f38d68 nandi 11d ago | 70 | {:local/root "../jolt-native/glimmer-backends/glimmer-tui"}} |
| Paint the same screens into a terminal ab83b42 nandi 17d ago | 71 | :main-opts ["-m" "frq.tui"]}} |
| 72 | |
| 73 | :tasks {frq "jolt -M:frq" |
| 74 | tui "jolt -M:tui"}} |