nandi/frqpublic Fork 0
57a93bbc4ec783ac1772cfadcc4c573d3f30971c
Commits
Clone
git clone https://git.rickub.com/nandi/frq.git
git clone ssh://git@rickub.com/nandi/frq.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

deps.edn · 100 lines · 5.2 KBClojure Blame HistoryRaw
A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago1{:paths ["src"]
2
3 ;; glimmer owns the reactive half (ratom, components, reconciler);
Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 9d ago4 ;; glimmer-jvui paints it as jvui, which is dvui's shape written in jolt on
5 ;; SDL3 — no shared object of its own, and no Rust anywhere under the UI.
6 ;; That is the whole reason for the switch off glimmer-vidya: libvidya meant
7 ;; jolt-native's Cargo workspace, and a Cargo workspace meant a build.
8 ;;
Show the list and the conversation at once on a wide window 10a1bd0 nandi 19d ago9 ;; 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 20d ago10 ;; component unmounted between a cell firing and the queued render running
11 ;; used to render anyway, into widgets the backend had already freed and
12 ;; 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 ago13 ;; And replacing a native node with one of another tag left every watcher
14 ;; under it subscribed, so swapping the phone layout for the split one and
15 ;; back shredded the chat: one component's props painted onto another's
16 ;; widget.
Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 9d ago17 :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer"
18 :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"}
19 nandi/glimmer-jvui {:git/url "https://gitlab.com/nandithebull/jolt-native"
Take the jvui that fills the window and has glyphs for the icons 57a93bb nandi 9d ago20 :git/sha "7d907d008b66abc03da83dc36411cf13f3085a35"
Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 9d ago21 :deps/root "glimmer-backends/glimmer-jvui"}}
A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago22
Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 9d ago23 ;; What the UI loads is SDL, and jvui declares it itself — SDL3, SDL3_ttf
24 ;; and SDL3_image, all :optional, so the layout tests run on a machine with
25 ;; none of them. Nothing of jolt-native's Cargo workspace is loaded by the
26 ;; window any more; `just tui` still takes libjolttui, which is the one
27 ;; object left and only for the terminal.
Take both native libraries from one place a66d1c1 nandi 19d ago28 ;;
Switch frq.av onto the jolt media plane, and stop shipping libjoltmoq b33f288 nandi 9d ago29 ;; Calls used to be the one thing this client could not do in jolt. The media
30 ;; half is `frq.av.plane` now — MoQ over QUIC from libmoq_ffi, Opus from
31 ;; libopus, H.264 from openh264 through a shim, and the devices from V4L2
32 ;; and ALSA. Signaling was always IRC and still lives in src/frq/av.clj.
Take both native libraries from one place a66d1c1 nandi 19d ago33 ;;
Build the desktop libraries rather than fetching a release of them 0b81161 nandi 15d ago34 ;; just run
Paint frq with jvui, and take the last Rust out of the window 77963dc nandi 9d ago35 :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 9d ago36 ;; piece with no C implementation anywhere. Fetched from
37 ;; moq-ffi's release rather than built — building it means a
38 ;; 1062-crate workspace.
Bind libmoq_ffi from the object's own metadata, not from its header 9f081a1 nandi 9d ago39 ;;
Switch frq.av onto the jolt media plane, and stop shipping libjoltmoq b33f288 nandi 9d ago40 ;; The codecs are NOT in it. moq-ffi's `audio` and `video`
41 ;; features are off in every Linux artifact upstream ships,
42 ;; so Opus and H.264 come from their own C libraries below,
43 ;; which is the whole point of doing this over FFI rather
44 ;; than over a Rust facade.
Fetch libmoq_ffi again, and keep the codecs out of Rust f518938 nandi 9d ago45 ;;
46 ;; No :darwin: :systems is x86_64-linux and aarch64-linux, so
47 ;; 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 ago48 {:name "moq_ffi"
Bind the C libraries a call actually needs 87e5be9 nandi 9d ago49 :linux ["libmoq_ffi.so"]}
50
51 ;; The codecs, as C libraries rather than as somebody's
52 ;; bindings to them. Opus first; openh264 beside it when the
53 ;; video half lands.
54 ;;
55 ;; The SONAME, not the bare .so: a `libopus.so` is the -dev
56 ;; symlink and is not what a runtime closure carries. The
57 ;; loader looks these up by name in one directory, which the
58 ;; flake's `nativeAll` is.
59 {:name "opus"
60 :linux ["libopus.so.0"]
61 :darwin ["libopus.0.dylib"]}
62
63 ;; H.264, one step removed. openh264's C API is a vtable —
64 ;; `ISVCEncoder` is `const ISVCEncoderVtbl*` — and jolt.ffi
65 ;; can only call a literal C symbol, never a function
66 ;; pointer. c/frq_h264.c walks the vtable and exports flat
67 ;; symbols; this is that. libopenh264 itself comes along as
68 ;; its DT_NEEDED and is never named here.
69 {:name "frqh264"
70 :linux ["libfrqh264.so"]
71 :darwin ["libfrqh264.dylib"]}
72
73 ;; Audio devices. No :darwin — CoreAudio is the other side of
74 ;; that door and is not this library.
75 ;;
76 ;; V4L2 is deliberately absent from this list: the camera is
77 ;; ioctls against libc and the kernel, so there is nothing to
78 ;; load. See frq.capture.v4l2.
79 {:name "asound"
80 :linux ["libasound.so.2"]}]
A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago81
Paint the same screens into a terminal ab83b42 nandi 17d ago82 :aliases {:frq {:main-opts ["-m" "frq.app"]}
A freeq client in jolt, as glimmer components on Vidya 4719d6f nandi 20d ago83
Paint the same screens into a terminal ab83b42 nandi 17d ago84 ;; The same screens in a terminal. glimmer-tui is the other backend
85 ;; for the same reconciler — libjolttui's tree ABI is libvidya's
86 ;; with cells under it — so `frq.tui` requires it after `frq.app`
87 ;; and renders the hiccup that is already written.
88 ;;
Merge origin/main, and let one jolt-native answer for both backends 1e8b590 nandi 16d ago89 ;; A path rather than a sha, like glimmer-vidya's would be if this
90 ;; alias were the way in: `just tui` builds jolt-native out of the
91 ;; flake and hands both Jolt halves over with -Sdeps, so this is for
92 ;; a checkout beside the tree and nothing else reads it.
Paint the same screens into a terminal ab83b42 nandi 17d ago93 ;;
94 ;; just tui
95 :tui {:extra-deps {nandi/glimmer-tui
Retire the release-bumping script 4f38d68 nandi 11d ago96 {:local/root "../jolt-native/glimmer-backends/glimmer-tui"}}
Paint the same screens into a terminal ab83b42 nandi 17d ago97 :main-opts ["-m" "frq.tui"]}}
98
99 :tasks {frq "jolt -M:frq"
100 tui "jolt -M:tui"}}