tmprl: Klien Temporal untuk Papan Ketik
Klien terminal untuk Temporal, membidik kesetaraan dengan web UI-nya. Umur empat hari: lapisan gRPC-nya ada, TUI-nya belum. Ini yang jujur diklaim pada tahap itu.
TUI-nya belum ada. Itu tempatnya di baris pertama, bukan di catatan kaki, karena repositori yang dinamai klien terminal tapi belum bisa menggambar antarmuka terminal akan menghabiskan sore hari seseorang.
Yang ada adalah lapisan akses gRPC — menyambung, mengurus profil, dan empat RPC yang akan jadi pijakan antarmukanya — plus dokumen rancangan untuk sisanya. Kalau kamu butuh TUI Temporal yang jalan hari ini, galaxy-io/tempo ditulis dengan Go dan tview dan sudah mengerjakannya. Itu juga tertulis di README proyek ini, di bagian atas, dengan alasan yang sama.
Bagian yang nyata
connected profile=default namespace=default
namespaces (2):
- default
- temporal-system
total workflows in `default`: 1
workflows (1 shown):
Running Demo demo-1
history of demo-1 (2 events):
1 WorkflowExecutionStarted
2 WorkflowTaskScheduled
Empat RPC di balik pembungkus tipis — ListNamespaces, CountWorkflowExecutions, ListWorkflowExecutions, GetWorkflowExecutionHistory — dengan rangkaian uji integrasi yang memaku kontraknya ke server sungguhan. Kamu bisa membaca datanya. Kamu belum bisa menelusurinya.
Tidak punya konfigurasi sambungan sendiri
tmprl membaca profil yang sama dengan yang dibaca CLI temporal: berkas ~/.config/temporalio/temporal.toml yang sama, variabel lingkungan TEMPORAL_* yang sama, dan urutan yang sama — flag, lalu lingkungan, lalu berkas.
Itu seluruh keputusan rancangannya, dan pantas dinyatakan sebagai satu keputusan. Alat baru yang mengarang format sambungannya sendiri meminta tiap orang menjelaskan klasternya untuk kedua kali, di tempat kedua, yang kemudian menyimpang dari yang pertama. Kalau CLI-nya bisa menjangkau klastermu, ini juga bisa.
Uji yang melewati, dan CI yang menolak melewati
Uji integrasinya dilewati kalau tidak ada server yang bisa dijangkau, jadi cargo test tetap hijau di mesin yang belum pernah menjalankan Temporal. Itu bawaan yang benar bagi orang yang baru mengklon repo-nya untuk melihat-lihat.
Itu bawaan yang salah untuk CI, karena di keluarannya “dilewati” dan “lolos” terlihat sama. TMPRL_REQUIRE_SERVER=1 mengubah pelewatan itu jadi kegagalan keras, dan CI memasangnya — jadi lapisan sambungan yang rusak tidak bisa menumpang lewat sebagai build hijau.
protoc, dan galat yang terbaca seperti hal lain
temporalio-protos mengompilasi protobuf Temporal dari sumbernya saat build, jadi protoc wajib ada. Tanpa itu build gagal di dalam sebuah build script dengan Could not find protoc.
Pesan itu gampang disalahbaca sebagai masalah jaringan, karena ia muncul di tengah build dependensi yang panjang dan tampak seperti pengambilan yang gagal. Bukan. Itu berkas biner lokal yang tidak ada, dan README-nya mengatakan begitu tepat di kalimat sesudah galatnya — tempat orang yang sedang menatap galat itu memang berada.
Info debug dimatikan di profil dev karena alasan yang bersaudara: pohon dependensinya 228 crate, proto hasil generasi mendominasinya, dan dengan info debug menyala target/ membengkak sampai beberapa gigabita. cargo build --profile dbg ada untuk saat debugger memang dibutuhkan.
Yang ingin dicapainya
Klien modal yang dikemudikan papan ketik, mencakup apa yang dicakup web UI — workflow, riwayat, jadwal, operasi batch, task queue, worker, nexus endpoint — plus hal-hal yang tidak bisa dilakukan peramban: mengikuti workflow yang sedang berjalan seperti tail -f, menyalurkan payload lewat jq, menyalin ke papan klip sistem, dan membandingkan dua run berdampingan.
Pembagian crate-nya sudah digambar untuk itu, dan baru yang pertama yang ada:
crates/tmprl-client semua IO jaringan — gRPC, TLS, profil ← satu-satunya yang ada
crates/tmprl-core logika domain — riwayat, kueri, keymap (rencana)
crates/tmprl-ui pohon jendela — split, tab, fokus (rencana)
crates/tmprl-tui rendering ratatui dan masukan (rencana)
Gunanya pembagian itu: logika yang berat — menyusun ulang riwayat, mengompilasi kueri visibility, membandingkan run — jatuh ke lapisan yang untuk diuji tidak butuh terminal maupun server.
docs/ARCHITECTURE.md dan docs/INTERFACE.md menjelaskan kode itu, dan keduanya menyatakan bagian per bagian mana yang belum ditulis. Dokumen rancangan yang terbaca seolah bendanya sudah ada lebih buruk daripada tidak ada dokumen sama sekali, karena ia satu-satunya benda yang dipercaya pembaca untuk memberi tahu posisinya.
Apakah ia layak ada
tempo sudah jalan. Yang ini berbeda niatnya — kesetaraan penuh dengan web UI termasuk operasi batch, nexus, worker deployment, reset dan codec server, serta model editor modal alih-alih menu.
Apakah perbedaan itu sepadan dengan implementasi kedua adalah pertanyaan yang wajar, dan jawabannya belum ada. Peta jalannya M0b sampai M7; satu dari delapan tonggak selesai.